@ynput/ayon-frontend-shared 0.2.16 → 0.2.18

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 (459) hide show
  1. package/dist/DetailsPanel.cjs.js +15 -13
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +15 -13
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/ProjectTreeTable.cjs.js +38 -34
  6. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  7. package/dist/ProjectTreeTable.es.js +20 -16
  8. package/dist/ProjectTreeTable.es.js.map +1 -1
  9. package/dist/api.cjs.js +7 -0
  10. package/dist/api.cjs.js.map +1 -1
  11. package/dist/api.es.js +7 -0
  12. package/dist/api.es.js.map +1 -1
  13. package/dist/components.cjs.js +9 -4
  14. package/dist/components.cjs.js.map +1 -1
  15. package/dist/components.es.js +10 -5
  16. package/dist/components.es.js.map +1 -1
  17. package/dist/index.cjs.js +12 -10
  18. package/dist/index.cjs.js.map +1 -1
  19. package/dist/index.es.js +12 -10
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js +1 -2
  22. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.cjs.js.map +1 -1
  23. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js +1 -2
  24. package/dist/node_modules/graphql-request/build/legacy/helpers/analyzeDocument.es.js.map +1 -1
  25. package/dist/shared/src/api/generated/graphql.cjs.js +26 -23
  26. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  27. package/dist/shared/src/api/generated/graphql.es.js +26 -23
  28. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  29. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +4 -1
  30. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +4 -1
  32. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  33. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +13 -1
  34. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  35. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +13 -1
  36. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +2 -0
  38. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entities/updateEntity.es.js +2 -0
  40. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +2 -0
  42. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/overview/updateOverview.es.js +2 -0
  44. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  45. package/dist/shared/src/api/queries/products/createProduct.cjs.js +54 -0
  46. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -0
  47. package/dist/shared/src/api/queries/products/createProduct.es.js +54 -0
  48. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -0
  49. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  50. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  52. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  53. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +80 -0
  54. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -0
  55. package/dist/shared/src/api/queries/versions/updateVersions.es.js +80 -0
  56. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -0
  57. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +2 -0
  58. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  59. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +2 -0
  60. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  61. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +2 -0
  62. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  63. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +2 -0
  64. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  65. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  66. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  67. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
  68. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  69. package/dist/shared/src/components/EntityPanelUploader/Dropzone.cjs.js +13 -0
  70. package/dist/shared/src/components/EntityPanelUploader/Dropzone.cjs.js.map +1 -0
  71. package/dist/shared/src/components/EntityPanelUploader/Dropzone.es.js +14 -0
  72. package/dist/shared/src/components/EntityPanelUploader/Dropzone.es.js.map +1 -0
  73. package/dist/shared/src/components/{EntityThumbnailUploader/EntityThumbnailUploader.cjs.js → EntityPanelUploader/EntityPanelUploader.cjs.js} +378 -120
  74. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -0
  75. package/dist/shared/src/components/{EntityThumbnailUploader/EntityThumbnailUploader.es.js → EntityPanelUploader/EntityPanelUploader.es.js} +378 -120
  76. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -0
  77. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js +95 -0
  78. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js.map +1 -0
  79. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.es.js +95 -0
  80. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.styled.es.js.map +1 -0
  81. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +76 -0
  82. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -0
  83. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +77 -0
  84. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -0
  85. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  86. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  87. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +1 -1
  88. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  89. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +2 -0
  90. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -1
  91. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +2 -0
  92. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -1
  93. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +5 -1
  94. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  95. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +5 -1
  96. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  97. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +23 -86
  98. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +23 -86
  100. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  101. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +2 -0
  102. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +2 -0
  104. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -1
  105. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +2 -0
  106. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  107. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +2 -0
  108. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  109. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +12 -10
  110. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  111. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +12 -10
  112. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  113. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +35 -109
  114. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  115. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +35 -109
  116. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  117. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +12 -10
  118. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +12 -10
  120. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +212 -0
  122. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -0
  123. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +212 -0
  124. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -0
  125. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +2 -0
  126. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  127. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +2 -0
  128. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  129. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +28 -7
  130. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  131. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +28 -7
  132. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  133. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +12 -10
  134. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  135. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +12 -10
  136. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  137. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js +85 -0
  138. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js.map +1 -0
  139. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js +85 -0
  140. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js.map +1 -0
  141. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +401 -0
  142. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -0
  143. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +401 -0
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -0
  145. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +308 -0
  146. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -0
  147. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +308 -0
  148. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -0
  149. package/dist/shared/src/components/Watchers/Watchers.cjs.js +2 -0
  150. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  151. package/dist/shared/src/components/Watchers/Watchers.es.js +2 -0
  152. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  153. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +12 -10
  154. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  155. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +12 -10
  156. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  157. package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
  158. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  159. package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
  160. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  161. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js +1 -1
  162. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js.map +1 -1
  163. package/dist/shared/src/containers/Actions/Actions.styled.es.js +1 -1
  164. package/dist/shared/src/containers/Actions/Actions.styled.es.js.map +1 -1
  165. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +12 -10
  166. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  167. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +12 -10
  168. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +18 -14
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +18 -14
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +12 -10
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +12 -10
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +12 -10
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +12 -10
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +15 -11
  182. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  183. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +15 -11
  184. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  185. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +1 -1
  186. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  187. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  189. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +2 -0
  190. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -0
  192. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  193. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +2 -0
  194. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -0
  196. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  197. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js +2 -2
  198. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js +2 -2
  200. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js.map +1 -1
  201. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +1 -1
  202. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +1 -1
  204. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  205. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +2 -0
  206. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +2 -0
  208. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +2 -0
  210. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +2 -0
  212. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +20 -11
  214. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +20 -11
  216. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +11 -10
  222. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +11 -10
  224. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +3 -3
  226. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +3 -3
  228. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +1 -174
  230. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +2 -175
  232. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +212 -0
  234. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -0
  235. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +212 -0
  236. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -0
  237. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +2 -0
  238. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +2 -0
  240. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -185
  242. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +2 -186
  244. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +197 -0
  246. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -0
  247. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +197 -0
  248. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -0
  249. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js +1 -79
  250. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js +2 -80
  252. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +84 -0
  254. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -0
  255. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +84 -0
  256. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -0
  257. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -277
  258. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +2 -278
  260. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +282 -0
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -0
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +282 -0
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -0
  265. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +2 -0
  266. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +2 -0
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +3 -2
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +3 -2
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +2 -0
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +2 -0
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useEntitiesMap.es.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +2 -0
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +2 -0
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +1 -0
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +1 -0
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +8 -175
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +8 -175
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +2 -0
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +2 -0
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.cjs.js → hooks/useProjectTableModules.cjs.js} +28 -48
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -0
  297. package/dist/shared/src/containers/ProjectTreeTable/{context/ProjectTableModulesContext.es.js → hooks/useProjectTableModules.es.js} +28 -48
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -0
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +4 -3
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -3
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +8 -5
  304. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +7 -4
  306. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +3 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +3 -2
  310. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -1
  319. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +13 -11
  320. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  321. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  322. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  323. package/dist/shared/src/context/AddonProjectContext.cjs.js +2 -0
  324. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  325. package/dist/shared/src/context/AddonProjectContext.es.js +2 -0
  326. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  327. package/dist/shared/src/context/DetailsPanelContext.cjs.js +2 -0
  328. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  329. package/dist/shared/src/context/DetailsPanelContext.es.js +2 -0
  330. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  331. package/dist/shared/src/context/PowerpackContext.cjs.js +2 -0
  332. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  333. package/dist/shared/src/context/PowerpackContext.es.js +2 -0
  334. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  335. package/dist/shared/src/context/RemoteModulesContext.cjs.js +2 -0
  336. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  337. package/dist/shared/src/context/RemoteModulesContext.es.js +3 -1
  338. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  339. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +15 -4
  340. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  341. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +15 -4
  342. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  343. package/dist/shared/src/context/pip/PiPWrapper.cjs.js +1 -1
  344. package/dist/shared/src/context/pip/PiPWrapper.cjs.js.map +1 -1
  345. package/dist/shared/src/context/pip/PiPWrapper.es.js +1 -1
  346. package/dist/shared/src/context/pip/PiPWrapper.es.js.map +1 -1
  347. package/dist/shared/src/hooks/useActionTriggers.cjs.js +2 -0
  348. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  349. package/dist/shared/src/hooks/useActionTriggers.es.js +2 -0
  350. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  351. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +2 -0
  352. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  353. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -0
  354. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  355. package/dist/shared/src/hooks/useLoadModule.cjs.js +3 -3
  356. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  357. package/dist/shared/src/hooks/useLoadModule.es.js +3 -3
  358. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  359. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +2 -0
  360. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  361. package/dist/shared/src/hooks/useScopedStatuses.es.js +2 -0
  362. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  363. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +2 -0
  364. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  365. package/dist/shared/src/hooks/useUserProjectConfig.es.js +2 -0
  366. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  367. package/dist/shared/src/util/productTypes.cjs.js +1 -0
  368. package/dist/shared/src/util/productTypes.cjs.js.map +1 -1
  369. package/dist/shared/src/util/productTypes.es.js +1 -0
  370. package/dist/shared/src/util/productTypes.es.js.map +1 -1
  371. package/dist/shared/src/utils/extractVersionFromFilename.cjs.js +32 -0
  372. package/dist/shared/src/utils/extractVersionFromFilename.cjs.js.map +1 -0
  373. package/dist/shared/src/utils/extractVersionFromFilename.es.js +32 -0
  374. package/dist/shared/src/utils/extractVersionFromFilename.es.js.map +1 -0
  375. package/dist/shared/src/utils/versionUploadHelpers.cjs.js +121 -0
  376. package/dist/shared/src/utils/versionUploadHelpers.cjs.js.map +1 -0
  377. package/dist/shared/src/utils/versionUploadHelpers.es.js +121 -0
  378. package/dist/shared/src/utils/versionUploadHelpers.es.js.map +1 -0
  379. package/dist/types/api/generated/graphql.d.ts +47 -36
  380. package/dist/types/api/queries/activities/getActivities.d.ts +4 -4
  381. package/dist/types/api/queries/activities/updateActivities.d.ts +8 -8
  382. package/dist/types/api/queries/entities/getEntity.d.ts +4 -4
  383. package/dist/types/api/queries/entities/getEntityPanel.d.ts +4 -4
  384. package/dist/types/api/queries/entities/updateEntity.d.ts +4 -4
  385. package/dist/types/api/queries/entityLists/getLists.d.ts +4 -4
  386. package/dist/types/api/queries/index.d.ts +2 -0
  387. package/dist/types/api/queries/overview/getOverview.d.ts +4 -4
  388. package/dist/types/api/queries/products/createProduct.d.ts +161 -0
  389. package/dist/types/api/queries/products/index.d.ts +1 -0
  390. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +4 -4
  391. package/dist/types/api/queries/users/getUsers.d.ts +4 -4
  392. package/dist/types/api/queries/versions/index.d.ts +1 -0
  393. package/dist/types/api/queries/versions/updateVersions.d.ts +685 -0
  394. package/dist/types/components/EntityPanelUploader/Dropzone.d.ts +11 -0
  395. package/dist/types/components/{EntityThumbnailUploader/EntityThumbnailUploader.d.ts → EntityPanelUploader/EntityPanelUploader.d.ts} +3 -3
  396. package/dist/types/components/EntityPanelUploader/EntityPanelUploader.styled.d.ts +8 -0
  397. package/dist/types/components/EntityPanelUploader/EntityPanelUploaderDialog.d.ts +10 -0
  398. package/dist/types/components/EntityPanelUploader/index.d.ts +1 -0
  399. package/dist/types/components/ProjectTableSettings/ColumnItem.d.ts +1 -0
  400. package/dist/types/components/ProjectTableSettings/SortableColumnItem.d.ts +1 -0
  401. package/dist/types/components/ReviewablesList/index.d.ts +1 -0
  402. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +19 -0
  403. package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +1 -0
  404. package/dist/types/components/VersionUploader/components/UploadVersionDialog.d.ts +5 -0
  405. package/dist/types/components/VersionUploader/components/UploadVersionForm.d.ts +18 -0
  406. package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +54 -0
  407. package/dist/types/components/VersionUploader/index.d.ts +2 -0
  408. package/dist/types/components/index.d.ts +2 -2
  409. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +2 -1
  410. package/dist/types/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.d.ts +3 -1
  411. package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +9 -2
  412. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +16 -16
  413. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsProvider.d.ts +9 -0
  414. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +6 -61
  415. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +60 -0
  416. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +3 -8
  417. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsProvider.d.ts +6 -0
  418. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +2 -4
  419. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsProvider.d.ts +4 -0
  420. package/dist/types/containers/ProjectTreeTable/context/index.d.ts +4 -2
  421. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  422. package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +1 -2
  423. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +2 -1
  424. package/dist/types/containers/ProjectTreeTable/hooks/useEntitiesMap.d.ts +1 -1
  425. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -3
  426. package/dist/types/containers/ProjectTreeTable/hooks/useGetGroupedFields.d.ts +1 -1
  427. package/dist/types/containers/ProjectTreeTable/{context/ProjectTableModulesContext.d.ts → hooks/useProjectTableModules.d.ts} +5 -12
  428. package/dist/types/containers/ProjectTreeTable/index.d.ts +1 -10
  429. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +3 -3
  430. package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +2 -1
  431. package/dist/types/context/ThumbnailUploaderContext.d.ts +3 -2
  432. package/dist/types/utils/versionUploadHelpers.d.ts +63 -0
  433. package/package.json +1 -1
  434. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +0 -1
  435. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +0 -1
  436. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.cjs.js +0 -12
  437. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.cjs.js.map +0 -1
  438. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.es.js +0 -12
  439. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.es.js.map +0 -1
  440. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.cjs.js +0 -112
  441. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.cjs.js.map +0 -1
  442. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.es.js +0 -112
  443. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.es.js.map +0 -1
  444. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.cjs.js +0 -104
  445. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.cjs.js.map +0 -1
  446. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.es.js +0 -104
  447. package/dist/shared/src/components/ThumbnailUploader/ThumbnailUploader.styled.es.js.map +0 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +0 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +0 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js +0 -33
  451. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js.map +0 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js +0 -33
  453. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableSelectionContext.es.js.map +0 -1
  454. package/dist/types/components/EntityThumbnailUploader/EntityThumbnailUploader.styled.d.ts +0 -1
  455. package/dist/types/components/EntityThumbnailUploader/index.d.ts +0 -1
  456. package/dist/types/components/ThumbnailUploader/ThumbnailUploader.d.ts +0 -17
  457. package/dist/types/components/ThumbnailUploader/ThumbnailUploader.styled.d.ts +0 -4
  458. package/dist/types/components/ThumbnailUploader/index.d.ts +0 -1
  459. package/dist/types/containers/ProjectTreeTable/context/ProjectTableSelectionContext.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailUploaderContext.cjs.js","sources":["../../../../src/context/ThumbnailUploaderContext.tsx"],"sourcesContent":["import { createContext, useState } from 'react'\n\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\n\nexport const ThumbnailUploadContext = createContext<{\n onContextMenu?: Function\n resetFileUploadState?: Function\n inputRef?: HTMLInputElement\n}>({})\n\nexport type ThumbnailUploadProviderProps = {\n handleThumbnailUpload: (thumbnails: any[]) => {}\n entities: any\n inputRef: any\n children?: JSX.Element | JSX.Element[]\n}\n\nexport const ThumbnailUploadProvider = ({\n children = [],\n inputRef,\n}: ThumbnailUploadProviderProps) => {\n const [_, setFileUploadInProgress] = useState(false)\n const [ctxMenuShow] = useCreateContextMenu()\n const resetFileUploadState = () => setFileUploadInProgress(false)\n\n const ctxMenuItems = () => [\n {\n label: 'Upload new thumbnail',\n icon: 'add_photo_alternate',\n command: () => {\n if (inputRef) {\n inputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n ]\n\n const onContextMenu = (event: MouseEvent) => {\n // @ts-expect-error - I just can't do this right now\n ctxMenuShow(event, ctxMenuItems())\n }\n\n return (\n <ThumbnailUploadContext.Provider value={{ onContextMenu, resetFileUploadState }}>\n {children}\n </ThumbnailUploadContext.Provider>\n )\n}\n\nexport const useThumbnailUploadContext = () => {\n const context = ThumbnailUploadContext\n if (!context) {\n throw new Error('useThumbnailUploadContext must be used within a ThumbnailUploadProvider')\n }\n return context\n}\n"],"names":["createContext","useState","useCreateContextMenu","jsx"],"mappings":";;;;;;;;;AAIa,MAAA,yBAAyBA,MAInC,cAAA,CAAE,CAAA;AASE,MAAM,0BAA0B,CAAC;AAAA,EACtC,WAAW,CAAC;AAAA,EACZ;AACF,MAAoC;AAClC,QAAM,CAAC,GAAG,uBAAuB,IAAIC,MAAAA,SAAS,KAAK;AAC7C,QAAA,CAAC,WAAW,IAAIC,0CAAqB;AACrC,QAAA,uBAAuB,MAAM,wBAAwB,KAAK;AAEhE,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,UAAU;AACZ,mBAAS,QAAS,MAAM;AAAA,QAAA;AAE1B,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IACrC;AAAA,EAEJ;AAEM,QAAA,gBAAgB,CAAC,UAAsB;AAE/B,gBAAA,OAAO,cAAc;AAAA,EACnC;AAGE,SAAAC,2BAAA,kBAAA,IAAC,uBAAuB,UAAvB,EAAgC,OAAO,EAAE,eAAe,wBACtD,UACH;AAEJ;AAEO,MAAM,4BAA4B,MAAM;AAC7C,QAAM,UAAU;AAChB,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,yEAAyE;AAAA,EAAA;AAEpF,SAAA;AACT;;;;"}
1
+ {"version":3,"file":"ThumbnailUploaderContext.cjs.js","sources":["../../../../src/context/ThumbnailUploaderContext.tsx"],"sourcesContent":["import { createContext, useState } from 'react'\n\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\n\nexport const ThumbnailUploadContext = createContext<{\n onContextMenu?: Function\n resetFileUploadState?: Function\n inputRef?: HTMLInputElement\n}>({})\n\nexport type ThumbnailUploadProviderProps = {\n handleThumbnailUpload: (thumbnails: any[]) => {}\n entities: any\n thumbnailInputRef: any\n versionsInputRef?: any\n children?: JSX.Element | JSX.Element[]\n}\n\nexport const ThumbnailUploadProvider = ({\n children = [],\n thumbnailInputRef,\n versionsInputRef,\n}: ThumbnailUploadProviderProps) => {\n const [_, setFileUploadInProgress] = useState(false)\n const [ctxMenuShow] = useCreateContextMenu()\n const resetFileUploadState = () => setFileUploadInProgress(false)\n\n const ctxMenuItems = () => [\n {\n label: 'Upload thumbnail',\n icon: 'add_photo_alternate',\n command: () => {\n if (thumbnailInputRef) {\n thumbnailInputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n {\n label: 'Upload version',\n icon: 'layers',\n command: () => {\n if (versionsInputRef) {\n versionsInputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n ]\n\n const onContextMenu = (event: MouseEvent) => {\n // @ts-expect-error - I just can't do this right now\n ctxMenuShow(event, ctxMenuItems())\n }\n\n return (\n <ThumbnailUploadContext.Provider value={{ onContextMenu, resetFileUploadState }}>\n {children}\n </ThumbnailUploadContext.Provider>\n )\n}\n\nexport const useThumbnailUploadContext = () => {\n const context = ThumbnailUploadContext\n if (!context) {\n throw new Error('useThumbnailUploadContext must be used within a ThumbnailUploadProvider')\n }\n return context\n}\n"],"names":["createContext","useState","useCreateContextMenu","jsx"],"mappings":";;;;;;;;;AAIa,MAAA,yBAAyBA,MAInC,cAAA,CAAE,CAAA;AAUE,MAAM,0BAA0B,CAAC;AAAA,EACtC,WAAW,CAAC;AAAA,EACZ;AAAA,EACA;AACF,MAAoC;AAClC,QAAM,CAAC,GAAG,uBAAuB,IAAIC,MAAAA,SAAS,KAAK;AAC7C,QAAA,CAAC,WAAW,IAAIC,0CAAqB;AACrC,QAAA,uBAAuB,MAAM,wBAAwB,KAAK;AAEhE,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,mBAAmB;AACrB,4BAAkB,QAAS,MAAM;AAAA,QAAA;AAEnC,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IAEvC;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,kBAAkB;AACpB,2BAAiB,QAAS,MAAM;AAAA,QAAA;AAElC,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IACrC;AAAA,EAEJ;AAEM,QAAA,gBAAgB,CAAC,UAAsB;AAE/B,gBAAA,OAAO,cAAc;AAAA,EACnC;AAGE,SAAAC,2BAAA,kBAAA,IAAC,uBAAuB,UAAvB,EAAgC,OAAO,EAAE,eAAe,wBACtD,UACH;AAEJ;AAEO,MAAM,4BAA4B,MAAM;AAC7C,QAAM,UAAU;AAChB,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,yEAAyE;AAAA,EAAA;AAEpF,SAAA;AACT;;;;"}
@@ -8,18 +8,29 @@ import { useCreateContextMenu } from "../containers/ContextMenu/useCreateContext
8
8
  const ThumbnailUploadContext = createContext({});
9
9
  const ThumbnailUploadProvider = ({
10
10
  children = [],
11
- inputRef
11
+ thumbnailInputRef,
12
+ versionsInputRef
12
13
  }) => {
13
14
  const [_, setFileUploadInProgress] = useState(false);
14
15
  const [ctxMenuShow] = useCreateContextMenu();
15
16
  const resetFileUploadState = () => setFileUploadInProgress(false);
16
17
  const ctxMenuItems = () => [
17
18
  {
18
- label: "Upload new thumbnail",
19
+ label: "Upload thumbnail",
19
20
  icon: "add_photo_alternate",
20
21
  command: () => {
21
- if (inputRef) {
22
- inputRef.current.click();
22
+ if (thumbnailInputRef) {
23
+ thumbnailInputRef.current.click();
24
+ }
25
+ return setFileUploadInProgress(true);
26
+ }
27
+ },
28
+ {
29
+ label: "Upload version",
30
+ icon: "layers",
31
+ command: () => {
32
+ if (versionsInputRef) {
33
+ versionsInputRef.current.click();
23
34
  }
24
35
  return setFileUploadInProgress(true);
25
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailUploaderContext.es.js","sources":["../../../../src/context/ThumbnailUploaderContext.tsx"],"sourcesContent":["import { createContext, useState } from 'react'\n\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\n\nexport const ThumbnailUploadContext = createContext<{\n onContextMenu?: Function\n resetFileUploadState?: Function\n inputRef?: HTMLInputElement\n}>({})\n\nexport type ThumbnailUploadProviderProps = {\n handleThumbnailUpload: (thumbnails: any[]) => {}\n entities: any\n inputRef: any\n children?: JSX.Element | JSX.Element[]\n}\n\nexport const ThumbnailUploadProvider = ({\n children = [],\n inputRef,\n}: ThumbnailUploadProviderProps) => {\n const [_, setFileUploadInProgress] = useState(false)\n const [ctxMenuShow] = useCreateContextMenu()\n const resetFileUploadState = () => setFileUploadInProgress(false)\n\n const ctxMenuItems = () => [\n {\n label: 'Upload new thumbnail',\n icon: 'add_photo_alternate',\n command: () => {\n if (inputRef) {\n inputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n ]\n\n const onContextMenu = (event: MouseEvent) => {\n // @ts-expect-error - I just can't do this right now\n ctxMenuShow(event, ctxMenuItems())\n }\n\n return (\n <ThumbnailUploadContext.Provider value={{ onContextMenu, resetFileUploadState }}>\n {children}\n </ThumbnailUploadContext.Provider>\n )\n}\n\nexport const useThumbnailUploadContext = () => {\n const context = ThumbnailUploadContext\n if (!context) {\n throw new Error('useThumbnailUploadContext must be used within a ThumbnailUploadProvider')\n }\n return context\n}\n"],"names":["jsx"],"mappings":";;;;;;;AAIa,MAAA,yBAAyB,cAInC,CAAE,CAAA;AASE,MAAM,0BAA0B,CAAC;AAAA,EACtC,WAAW,CAAC;AAAA,EACZ;AACF,MAAoC;AAClC,QAAM,CAAC,GAAG,uBAAuB,IAAI,SAAS,KAAK;AAC7C,QAAA,CAAC,WAAW,IAAI,qBAAqB;AACrC,QAAA,uBAAuB,MAAM,wBAAwB,KAAK;AAEhE,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,UAAU;AACZ,mBAAS,QAAS,MAAM;AAAA,QAAA;AAE1B,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IACrC;AAAA,EAEJ;AAEM,QAAA,gBAAgB,CAAC,UAAsB;AAE/B,gBAAA,OAAO,cAAc;AAAA,EACnC;AAGE,SAAAA,kCAAA,IAAC,uBAAuB,UAAvB,EAAgC,OAAO,EAAE,eAAe,wBACtD,UACH;AAEJ;AAEO,MAAM,4BAA4B,MAAM;AAC7C,QAAM,UAAU;AAChB,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,yEAAyE;AAAA,EAAA;AAEpF,SAAA;AACT;"}
1
+ {"version":3,"file":"ThumbnailUploaderContext.es.js","sources":["../../../../src/context/ThumbnailUploaderContext.tsx"],"sourcesContent":["import { createContext, useState } from 'react'\n\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\n\nexport const ThumbnailUploadContext = createContext<{\n onContextMenu?: Function\n resetFileUploadState?: Function\n inputRef?: HTMLInputElement\n}>({})\n\nexport type ThumbnailUploadProviderProps = {\n handleThumbnailUpload: (thumbnails: any[]) => {}\n entities: any\n thumbnailInputRef: any\n versionsInputRef?: any\n children?: JSX.Element | JSX.Element[]\n}\n\nexport const ThumbnailUploadProvider = ({\n children = [],\n thumbnailInputRef,\n versionsInputRef,\n}: ThumbnailUploadProviderProps) => {\n const [_, setFileUploadInProgress] = useState(false)\n const [ctxMenuShow] = useCreateContextMenu()\n const resetFileUploadState = () => setFileUploadInProgress(false)\n\n const ctxMenuItems = () => [\n {\n label: 'Upload thumbnail',\n icon: 'add_photo_alternate',\n command: () => {\n if (thumbnailInputRef) {\n thumbnailInputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n {\n label: 'Upload version',\n icon: 'layers',\n command: () => {\n if (versionsInputRef) {\n versionsInputRef.current!.click()\n }\n return setFileUploadInProgress(true)\n },\n },\n ]\n\n const onContextMenu = (event: MouseEvent) => {\n // @ts-expect-error - I just can't do this right now\n ctxMenuShow(event, ctxMenuItems())\n }\n\n return (\n <ThumbnailUploadContext.Provider value={{ onContextMenu, resetFileUploadState }}>\n {children}\n </ThumbnailUploadContext.Provider>\n )\n}\n\nexport const useThumbnailUploadContext = () => {\n const context = ThumbnailUploadContext\n if (!context) {\n throw new Error('useThumbnailUploadContext must be used within a ThumbnailUploadProvider')\n }\n return context\n}\n"],"names":["jsx"],"mappings":";;;;;;;AAIa,MAAA,yBAAyB,cAInC,CAAE,CAAA;AAUE,MAAM,0BAA0B,CAAC;AAAA,EACtC,WAAW,CAAC;AAAA,EACZ;AAAA,EACA;AACF,MAAoC;AAClC,QAAM,CAAC,GAAG,uBAAuB,IAAI,SAAS,KAAK;AAC7C,QAAA,CAAC,WAAW,IAAI,qBAAqB;AACrC,QAAA,uBAAuB,MAAM,wBAAwB,KAAK;AAEhE,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,mBAAmB;AACrB,4BAAkB,QAAS,MAAM;AAAA,QAAA;AAEnC,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IAEvC;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AACb,YAAI,kBAAkB;AACpB,2BAAiB,QAAS,MAAM;AAAA,QAAA;AAElC,eAAO,wBAAwB,IAAI;AAAA,MAAA;AAAA,IACrC;AAAA,EAEJ;AAEM,QAAA,gBAAgB,CAAC,UAAsB;AAE/B,gBAAA,OAAO,cAAc;AAAA,EACnC;AAGE,SAAAA,kCAAA,IAAC,uBAAuB,UAAvB,EAAgC,OAAO,EAAE,eAAe,wBACtD,UACH;AAEJ;AAEO,MAAM,4BAA4B,MAAM;AAC7C,QAAM,UAAU;AAChB,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,yEAAyE;AAAA,EAAA;AAEpF,SAAA;AACT;"}
@@ -30,7 +30,7 @@ const StyledClose = styled(ayonReactComponents.Button)`
30
30
  font-size: 15px;
31
31
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;
32
32
  }
33
- background-color: unset;
33
+ background-color: unset !important;
34
34
  opacity: 0;
35
35
  border-radius: 100%;
36
36
  transition: opacity 400ms, background-color 400ms;
@@ -1 +1 @@
1
- {"version":3,"file":"PiPWrapper.cjs.js","sources":["../../../../../src/context/pip/PiPWrapper.tsx"],"sourcesContent":["import React, { FC } from 'react'\nimport { usePiPWindow } from './PiPProvider'\nimport PiPWindow from './PiPWindow'\nimport { Dialog } from 'primereact/dialog'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport interface PiPWrapperProps {\n children: React.ReactNode\n}\n\nconst StyledDialog = styled(Dialog)`\n width: 25vw;\n height: 70vh;\n border: solid 1px var(--md-sys-color-outline-variant);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 0 1px 1px #000, 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024,\n 0 9px 46px 8px #0000001f;\n &:hover {\n .close {\n opacity: 1;\n }\n }\n`\n\nconst StyledClose = styled(Button)`\n width: 26px;\n height: 26px;\n margin-left: auto;\n\n .icon {\n font-size: 15px;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;\n }\n background-color: unset;\n opacity: 0;\n border-radius: 100%;\n transition: opacity 400ms, background-color 400ms;\n &:hover {\n background-color: #3d3e40;\n }\n`\n\nexport const PiPWrapper: FC<PiPWrapperProps> = ({ children }) => {\n const { pipWindow, pipId, isSupported, closePipWindow } = usePiPWindow()\n\n // attach pipId to id of children\n const pipChildren =\n pipId && React.isValidElement<{ id?: string }>(children)\n ? React.cloneElement(children, { id: pipId })\n : children\n\n // open using fallback dialog\n if (!isSupported && pipId) {\n return (\n <StyledDialog\n header={<StyledClose icon=\"close\" className=\"close\" onClick={closePipWindow} />}\n headerStyle={{\n padding: 4,\n backgroundColor: '#202124',\n border: 'none',\n height: 33,\n }}\n contentStyle={{ overflow: 'hidden', height: 'revert-layer', padding: 8, border: 'none' }}\n maskStyle={{ pointerEvents: 'none', userSelect: 'none', backgroundColor: 'unset' }}\n visible={true}\n closeOnEscape={false}\n pt={{\n closeButton: {\n style: { display: 'none' },\n },\n footer: {\n style: { padding: 0, border: 'none' },\n },\n }}\n onHide={closePipWindow}\n position=\"right\"\n >\n {pipChildren}\n </StyledDialog>\n )\n }\n\n return (\n pipWindow && (\n <PiPWindow pipWindow={pipWindow}>\n <div className=\"pipRoot\">{pipChildren}</div>\n </PiPWindow>\n )\n )\n}\n"],"names":["Dialog","Button","usePiPWindow","jsx"],"mappings":";;;;;;;;;AAWA,MAAM,eAAe,OAAOA,iBAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAelC,MAAM,cAAc,OAAOC,0BAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,MAAM,aAAkC,CAAC,EAAE,eAAe;AAC/D,QAAM,EAAE,WAAW,OAAO,aAAa,eAAA,IAAmBC,YAAAA,aAAa;AAGvE,QAAM,cACJ,SAAS,MAAM,eAAgC,QAAQ,IACnD,MAAM,aAAa,UAAU,EAAE,IAAI,MAAA,CAAO,IAC1C;AAGF,MAAA,CAAC,eAAe,OAAO;AAEvB,WAAAC,2BAAA,kBAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,yDAAS,aAAY,EAAA,MAAK,SAAQ,WAAU,SAAQ,SAAS,gBAAgB;AAAA,QAC7E,aAAa;AAAA,UACX,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,cAAc,EAAE,UAAU,UAAU,QAAQ,gBAAgB,SAAS,GAAG,QAAQ,OAAO;AAAA,QACvF,WAAW,EAAE,eAAe,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ;AAAA,QACjF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,IAAI;AAAA,UACF,aAAa;AAAA,YACX,OAAO,EAAE,SAAS,OAAO;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,YACN,OAAO,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,UAAA;AAAA,QAExC;AAAA,QACA,QAAQ;AAAA,QACR,UAAS;AAAA,QAER,UAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAKF,SAAA,8DACG,WAAU,EAAA,WACT,2DAAC,OAAI,EAAA,WAAU,WAAW,UAAA,YAAA,CAAY,EACxC,CAAA;AAGN;;"}
1
+ {"version":3,"file":"PiPWrapper.cjs.js","sources":["../../../../../src/context/pip/PiPWrapper.tsx"],"sourcesContent":["import React, { FC } from 'react'\nimport { usePiPWindow } from './PiPProvider'\nimport PiPWindow from './PiPWindow'\nimport { Dialog } from 'primereact/dialog'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport interface PiPWrapperProps {\n children: React.ReactNode\n}\n\nconst StyledDialog = styled(Dialog)`\n width: 25vw;\n height: 70vh;\n border: solid 1px var(--md-sys-color-outline-variant);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 0 1px 1px #000, 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024,\n 0 9px 46px 8px #0000001f;\n &:hover {\n .close {\n opacity: 1;\n }\n }\n`\n\nconst StyledClose = styled(Button)`\n width: 26px;\n height: 26px;\n margin-left: auto;\n\n .icon {\n font-size: 15px;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;\n }\n background-color: unset !important;\n opacity: 0;\n border-radius: 100%;\n transition: opacity 400ms, background-color 400ms;\n &:hover {\n background-color: #3d3e40;\n }\n`\n\nexport const PiPWrapper: FC<PiPWrapperProps> = ({ children }) => {\n const { pipWindow, pipId, isSupported, closePipWindow } = usePiPWindow()\n\n // attach pipId to id of children\n const pipChildren =\n pipId && React.isValidElement<{ id?: string }>(children)\n ? React.cloneElement(children, { id: pipId })\n : children\n\n // open using fallback dialog\n if (!isSupported && pipId) {\n return (\n <StyledDialog\n header={<StyledClose icon=\"close\" className=\"close\" onClick={closePipWindow} />}\n headerStyle={{\n padding: 4,\n backgroundColor: '#202124',\n border: 'none',\n height: 33,\n }}\n contentStyle={{ overflow: 'hidden', height: 'revert-layer', padding: 8, border: 'none' }}\n maskStyle={{ pointerEvents: 'none', userSelect: 'none', backgroundColor: 'unset' }}\n visible={true}\n closeOnEscape={false}\n pt={{\n closeButton: {\n style: { display: 'none' },\n },\n footer: {\n style: { padding: 0, border: 'none' },\n },\n }}\n onHide={closePipWindow}\n position=\"right\"\n >\n {pipChildren}\n </StyledDialog>\n )\n }\n\n return (\n pipWindow && (\n <PiPWindow pipWindow={pipWindow}>\n <div className=\"pipRoot\">{pipChildren}</div>\n </PiPWindow>\n )\n )\n}\n"],"names":["Dialog","Button","usePiPWindow","jsx"],"mappings":";;;;;;;;;AAWA,MAAM,eAAe,OAAOA,iBAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAelC,MAAM,cAAc,OAAOC,0BAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,MAAM,aAAkC,CAAC,EAAE,eAAe;AAC/D,QAAM,EAAE,WAAW,OAAO,aAAa,eAAA,IAAmBC,YAAAA,aAAa;AAGvE,QAAM,cACJ,SAAS,MAAM,eAAgC,QAAQ,IACnD,MAAM,aAAa,UAAU,EAAE,IAAI,MAAA,CAAO,IAC1C;AAGF,MAAA,CAAC,eAAe,OAAO;AAEvB,WAAAC,2BAAA,kBAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,yDAAS,aAAY,EAAA,MAAK,SAAQ,WAAU,SAAQ,SAAS,gBAAgB;AAAA,QAC7E,aAAa;AAAA,UACX,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,cAAc,EAAE,UAAU,UAAU,QAAQ,gBAAgB,SAAS,GAAG,QAAQ,OAAO;AAAA,QACvF,WAAW,EAAE,eAAe,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ;AAAA,QACjF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,IAAI;AAAA,UACF,aAAa;AAAA,YACX,OAAO,EAAE,SAAS,OAAO;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,YACN,OAAO,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,UAAA;AAAA,QAExC;AAAA,QACA,QAAQ;AAAA,QACR,UAAS;AAAA,QAER,UAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAKF,SAAA,8DACG,WAAU,EAAA,WACT,2DAAC,OAAI,EAAA,WAAU,WAAW,UAAA,YAAA,CAAY,EACxC,CAAA;AAGN;;"}
@@ -28,7 +28,7 @@ const StyledClose = styled(Button)`
28
28
  font-size: 15px;
29
29
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;
30
30
  }
31
- background-color: unset;
31
+ background-color: unset !important;
32
32
  opacity: 0;
33
33
  border-radius: 100%;
34
34
  transition: opacity 400ms, background-color 400ms;
@@ -1 +1 @@
1
- {"version":3,"file":"PiPWrapper.es.js","sources":["../../../../../src/context/pip/PiPWrapper.tsx"],"sourcesContent":["import React, { FC } from 'react'\nimport { usePiPWindow } from './PiPProvider'\nimport PiPWindow from './PiPWindow'\nimport { Dialog } from 'primereact/dialog'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport interface PiPWrapperProps {\n children: React.ReactNode\n}\n\nconst StyledDialog = styled(Dialog)`\n width: 25vw;\n height: 70vh;\n border: solid 1px var(--md-sys-color-outline-variant);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 0 1px 1px #000, 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024,\n 0 9px 46px 8px #0000001f;\n &:hover {\n .close {\n opacity: 1;\n }\n }\n`\n\nconst StyledClose = styled(Button)`\n width: 26px;\n height: 26px;\n margin-left: auto;\n\n .icon {\n font-size: 15px;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;\n }\n background-color: unset;\n opacity: 0;\n border-radius: 100%;\n transition: opacity 400ms, background-color 400ms;\n &:hover {\n background-color: #3d3e40;\n }\n`\n\nexport const PiPWrapper: FC<PiPWrapperProps> = ({ children }) => {\n const { pipWindow, pipId, isSupported, closePipWindow } = usePiPWindow()\n\n // attach pipId to id of children\n const pipChildren =\n pipId && React.isValidElement<{ id?: string }>(children)\n ? React.cloneElement(children, { id: pipId })\n : children\n\n // open using fallback dialog\n if (!isSupported && pipId) {\n return (\n <StyledDialog\n header={<StyledClose icon=\"close\" className=\"close\" onClick={closePipWindow} />}\n headerStyle={{\n padding: 4,\n backgroundColor: '#202124',\n border: 'none',\n height: 33,\n }}\n contentStyle={{ overflow: 'hidden', height: 'revert-layer', padding: 8, border: 'none' }}\n maskStyle={{ pointerEvents: 'none', userSelect: 'none', backgroundColor: 'unset' }}\n visible={true}\n closeOnEscape={false}\n pt={{\n closeButton: {\n style: { display: 'none' },\n },\n footer: {\n style: { padding: 0, border: 'none' },\n },\n }}\n onHide={closePipWindow}\n position=\"right\"\n >\n {pipChildren}\n </StyledDialog>\n )\n }\n\n return (\n pipWindow && (\n <PiPWindow pipWindow={pipWindow}>\n <div className=\"pipRoot\">{pipChildren}</div>\n </PiPWindow>\n )\n )\n}\n"],"names":["React","jsx"],"mappings":";;;;;;;AAWA,MAAM,eAAe,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAelC,MAAM,cAAc,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,MAAM,aAAkC,CAAC,EAAE,eAAe;AAC/D,QAAM,EAAE,WAAW,OAAO,aAAa,eAAA,IAAmB,aAAa;AAGvE,QAAM,cACJ,SAASA,eAAM,eAAgC,QAAQ,IACnDA,eAAM,aAAa,UAAU,EAAE,IAAI,MAAA,CAAO,IAC1C;AAGF,MAAA,CAAC,eAAe,OAAO;AAEvB,WAAAC,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,8CAAS,aAAY,EAAA,MAAK,SAAQ,WAAU,SAAQ,SAAS,gBAAgB;AAAA,QAC7E,aAAa;AAAA,UACX,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,cAAc,EAAE,UAAU,UAAU,QAAQ,gBAAgB,SAAS,GAAG,QAAQ,OAAO;AAAA,QACvF,WAAW,EAAE,eAAe,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ;AAAA,QACjF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,IAAI;AAAA,UACF,aAAa;AAAA,YACX,OAAO,EAAE,SAAS,OAAO;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,YACN,OAAO,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,UAAA;AAAA,QAExC;AAAA,QACA,QAAQ;AAAA,QACR,UAAS;AAAA,QAER,UAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAKF,SAAA,mDACG,WAAU,EAAA,WACT,gDAAC,OAAI,EAAA,WAAU,WAAW,UAAA,YAAA,CAAY,EACxC,CAAA;AAGN;"}
1
+ {"version":3,"file":"PiPWrapper.es.js","sources":["../../../../../src/context/pip/PiPWrapper.tsx"],"sourcesContent":["import React, { FC } from 'react'\nimport { usePiPWindow } from './PiPProvider'\nimport PiPWindow from './PiPWindow'\nimport { Dialog } from 'primereact/dialog'\nimport { Button } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport interface PiPWrapperProps {\n children: React.ReactNode\n}\n\nconst StyledDialog = styled(Dialog)`\n width: 25vw;\n height: 70vh;\n border: solid 1px var(--md-sys-color-outline-variant);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 0 1px 1px #000, 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024,\n 0 9px 46px 8px #0000001f;\n &:hover {\n .close {\n opacity: 1;\n }\n }\n`\n\nconst StyledClose = styled(Button)`\n width: 26px;\n height: 26px;\n margin-left: auto;\n\n .icon {\n font-size: 15px;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 200, 'opsz' 20;\n }\n background-color: unset !important;\n opacity: 0;\n border-radius: 100%;\n transition: opacity 400ms, background-color 400ms;\n &:hover {\n background-color: #3d3e40;\n }\n`\n\nexport const PiPWrapper: FC<PiPWrapperProps> = ({ children }) => {\n const { pipWindow, pipId, isSupported, closePipWindow } = usePiPWindow()\n\n // attach pipId to id of children\n const pipChildren =\n pipId && React.isValidElement<{ id?: string }>(children)\n ? React.cloneElement(children, { id: pipId })\n : children\n\n // open using fallback dialog\n if (!isSupported && pipId) {\n return (\n <StyledDialog\n header={<StyledClose icon=\"close\" className=\"close\" onClick={closePipWindow} />}\n headerStyle={{\n padding: 4,\n backgroundColor: '#202124',\n border: 'none',\n height: 33,\n }}\n contentStyle={{ overflow: 'hidden', height: 'revert-layer', padding: 8, border: 'none' }}\n maskStyle={{ pointerEvents: 'none', userSelect: 'none', backgroundColor: 'unset' }}\n visible={true}\n closeOnEscape={false}\n pt={{\n closeButton: {\n style: { display: 'none' },\n },\n footer: {\n style: { padding: 0, border: 'none' },\n },\n }}\n onHide={closePipWindow}\n position=\"right\"\n >\n {pipChildren}\n </StyledDialog>\n )\n }\n\n return (\n pipWindow && (\n <PiPWindow pipWindow={pipWindow}>\n <div className=\"pipRoot\">{pipChildren}</div>\n </PiPWindow>\n )\n )\n}\n"],"names":["React","jsx"],"mappings":";;;;;;;AAWA,MAAM,eAAe,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAelC,MAAM,cAAc,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,MAAM,aAAkC,CAAC,EAAE,eAAe;AAC/D,QAAM,EAAE,WAAW,OAAO,aAAa,eAAA,IAAmB,aAAa;AAGvE,QAAM,cACJ,SAASA,eAAM,eAAgC,QAAQ,IACnDA,eAAM,aAAa,UAAU,EAAE,IAAI,MAAA,CAAO,IAC1C;AAGF,MAAA,CAAC,eAAe,OAAO;AAEvB,WAAAC,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,8CAAS,aAAY,EAAA,MAAK,SAAQ,WAAU,SAAQ,SAAS,gBAAgB;AAAA,QAC7E,aAAa;AAAA,UACX,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,cAAc,EAAE,UAAU,UAAU,QAAQ,gBAAgB,SAAS,GAAG,QAAQ,OAAO;AAAA,QACvF,WAAW,EAAE,eAAe,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ;AAAA,QACjF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,IAAI;AAAA,UACF,aAAa;AAAA,YACX,OAAO,EAAE,SAAS,OAAO;AAAA,UAC3B;AAAA,UACA,QAAQ;AAAA,YACN,OAAO,EAAE,SAAS,GAAG,QAAQ,OAAO;AAAA,UAAA;AAAA,QAExC;AAAA,QACA,QAAQ;AAAA,QACR,UAAS;AAAA,QAER,UAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAKF,SAAA,mDACG,WAAU,EAAA,WACT,gDAAC,OAAI,EAAA,WAAU,WAAW,UAAA,YAAA,CAAY,EACxC,CAAA;AAGN;"}
@@ -69,6 +69,8 @@ require("../api/queries/users/updateUsers.cjs.js");
69
69
  require("../api/queries/watchers/getWatchers.cjs.js");
70
70
  require("../api/queries/permissions/getPermissions.cjs.js");
71
71
  require("../api/queries/grouping/getGrouping.cjs.js");
72
+ require("../api/queries/versions/updateVersions.cjs.js");
73
+ require("../api/queries/products/createProduct.cjs.js");
72
74
  const useActionTriggers = ({
73
75
  searchParams,
74
76
  onSetSearchParams,
@@ -1 +1 @@
1
- {"version":3,"file":"useActionTriggers.cjs.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n console.error('Failed to copy text to clipboard:', err)\n })\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}\n"],"names":["useDispatch","api"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,WAAWA,WAAAA,YAAY;AACvB,QAAA,sBAAsB,CAAC,YAAoB,YAAwC;AACvF,QAAI,CAAC,QAAS;AAEd,QAAI,eAAe,YAAY;AAC7B,UAAI,mCAAS,KAAK;AAChB;AAAA,UACE,QAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,MAAA;AAAA,IACF,WACS,eAAe,SAAS;AAE3B,YAAA,UAAU,OAAO,OAAO,QAAQ,KAAoB,EAAE,MAAM,CAAC,UAAU;AAC3E,eAAO,OAAO,UAAU;AAAA,MAAA,CACzB;AAED,UAAI,CAAC,SAAS;AACN,cAAA,IAAI,MAAM,wBAAwB;AAAA,MAAA,OACnC;AAEM,mBAAA,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAoB,GAAG;AAC1D,uBAAA,IAAI,KAAK,KAAK;AAAA,QAAA;AAE7B,0BAAkB,YAAY;AAAA,MAAA;AAAA,IAChC,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AAEL,mBAAW,QAAQ,GAAG;AAAA,MAAA;AAAA,IACxB,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AACC,cAAA,UAAS,mCAAS,YAAW;AACnC,eAAO,KAAK,QAAQ,KAAK,SAAS,WAAW,OAAO;AAAA,MAAA;AAAA,IACtD;AAOF,QAAI,oBAAoB,SAAS;AAE3B,UAAA,OAAO,QAAQ,mBAAmB,UAAU;AACxC,cAAA,IAAI,MAAM,iCAAiC;AAAA,MAAA,OAC5C;AAEC,cAAA,cAAc,IAAI,IAAI,QAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,gBAAQ,IAAI,WAAW;AAEjB,cAAA,OAAO,SAAS,cAAc,GAAG;AACvC,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,MAAM;AAGX,aAAK,WAAW;AAEP,iBAAA,KAAK,YAAY,IAAI;AAC9B,aAAK,MAAM;AACF,iBAAA,KAAK,YAAY,IAAI;AAAA,MAAA;AAAA,IAChC;AAGF,QAAI,qBAAqB,SAAS;AAE5B,UAAA,OAAO,QAAQ,oBAAoB,UAAU;AACzC,cAAA,IAAI,MAAM,kCAAkC;AAAA,MAAA,OAC7C;AAEL,kBAAU,UAAU,UAAU,QAAQ,eAAe,EAAE,MAAM,CAAC,QAAQ;AAC5D,kBAAA,MAAM,qCAAqC,GAAG;AAAA,QAAA,CACvD;AAAA,MAAA;AAAA,IACH;AAGF,QAAI,kBAAkB,SAAS;AAC7B,UAAI,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAClC,cAAA,IAAI,MAAM,+BAA+B;AAAA,MAAA;AAG7C,UAAA,QAAQ,aAAa,QAAQ;AAC/B,iBAASC,OAAI,IAAA,KAAK,eAAe,QAAQ,YAAY,CAAC;AAAA,MAAA;AAAA,IACxD;AAAA,EAGJ;AAEA,SAAO,EAAE,oBAAoB;AAC/B;;"}
1
+ {"version":3,"file":"useActionTriggers.cjs.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n console.error('Failed to copy text to clipboard:', err)\n })\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}\n"],"names":["useDispatch","api"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,WAAWA,WAAAA,YAAY;AACvB,QAAA,sBAAsB,CAAC,YAAoB,YAAwC;AACvF,QAAI,CAAC,QAAS;AAEd,QAAI,eAAe,YAAY;AAC7B,UAAI,mCAAS,KAAK;AAChB;AAAA,UACE,QAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,MAAA;AAAA,IACF,WACS,eAAe,SAAS;AAE3B,YAAA,UAAU,OAAO,OAAO,QAAQ,KAAoB,EAAE,MAAM,CAAC,UAAU;AAC3E,eAAO,OAAO,UAAU;AAAA,MAAA,CACzB;AAED,UAAI,CAAC,SAAS;AACN,cAAA,IAAI,MAAM,wBAAwB;AAAA,MAAA,OACnC;AAEM,mBAAA,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAoB,GAAG;AAC1D,uBAAA,IAAI,KAAK,KAAK;AAAA,QAAA;AAE7B,0BAAkB,YAAY;AAAA,MAAA;AAAA,IAChC,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AAEL,mBAAW,QAAQ,GAAG;AAAA,MAAA;AAAA,IACxB,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AACC,cAAA,UAAS,mCAAS,YAAW;AACnC,eAAO,KAAK,QAAQ,KAAK,SAAS,WAAW,OAAO;AAAA,MAAA;AAAA,IACtD;AAOF,QAAI,oBAAoB,SAAS;AAE3B,UAAA,OAAO,QAAQ,mBAAmB,UAAU;AACxC,cAAA,IAAI,MAAM,iCAAiC;AAAA,MAAA,OAC5C;AAEC,cAAA,cAAc,IAAI,IAAI,QAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,gBAAQ,IAAI,WAAW;AAEjB,cAAA,OAAO,SAAS,cAAc,GAAG;AACvC,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,MAAM;AAGX,aAAK,WAAW;AAEP,iBAAA,KAAK,YAAY,IAAI;AAC9B,aAAK,MAAM;AACF,iBAAA,KAAK,YAAY,IAAI;AAAA,MAAA;AAAA,IAChC;AAGF,QAAI,qBAAqB,SAAS;AAE5B,UAAA,OAAO,QAAQ,oBAAoB,UAAU;AACzC,cAAA,IAAI,MAAM,kCAAkC;AAAA,MAAA,OAC7C;AAEL,kBAAU,UAAU,UAAU,QAAQ,eAAe,EAAE,MAAM,CAAC,QAAQ;AAC5D,kBAAA,MAAM,qCAAqC,GAAG;AAAA,QAAA,CACvD;AAAA,MAAA;AAAA,IACH;AAGF,QAAI,kBAAkB,SAAS;AAC7B,UAAI,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAClC,cAAA,IAAI,MAAM,+BAA+B;AAAA,MAAA;AAG7C,UAAA,QAAQ,aAAa,QAAQ;AAC/B,iBAASC,OAAI,IAAA,KAAK,eAAe,QAAQ,YAAY,CAAC;AAAA,MAAA;AAAA,IACxD;AAAA,EAGJ;AAEA,SAAO,EAAE,oBAAoB;AAC/B;;"}
@@ -67,6 +67,8 @@ import "../api/queries/users/updateUsers.es.js";
67
67
  import "../api/queries/watchers/getWatchers.es.js";
68
68
  import "../api/queries/permissions/getPermissions.es.js";
69
69
  import "../api/queries/grouping/getGrouping.es.js";
70
+ import "../api/queries/versions/updateVersions.es.js";
71
+ import "../api/queries/products/createProduct.es.js";
70
72
  const useActionTriggers = ({
71
73
  searchParams,
72
74
  onSetSearchParams,
@@ -1 +1 @@
1
- {"version":3,"file":"useActionTriggers.es.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n console.error('Failed to copy text to clipboard:', err)\n })\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,WAAW,YAAY;AACvB,QAAA,sBAAsB,CAAC,YAAoB,YAAwC;AACvF,QAAI,CAAC,QAAS;AAEd,QAAI,eAAe,YAAY;AAC7B,UAAI,mCAAS,KAAK;AAChB;AAAA,UACE,QAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,MAAA;AAAA,IACF,WACS,eAAe,SAAS;AAE3B,YAAA,UAAU,OAAO,OAAO,QAAQ,KAAoB,EAAE,MAAM,CAAC,UAAU;AAC3E,eAAO,OAAO,UAAU;AAAA,MAAA,CACzB;AAED,UAAI,CAAC,SAAS;AACN,cAAA,IAAI,MAAM,wBAAwB;AAAA,MAAA,OACnC;AAEM,mBAAA,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAoB,GAAG;AAC1D,uBAAA,IAAI,KAAK,KAAK;AAAA,QAAA;AAE7B,0BAAkB,YAAY;AAAA,MAAA;AAAA,IAChC,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AAEL,mBAAW,QAAQ,GAAG;AAAA,MAAA;AAAA,IACxB,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AACC,cAAA,UAAS,mCAAS,YAAW;AACnC,eAAO,KAAK,QAAQ,KAAK,SAAS,WAAW,OAAO;AAAA,MAAA;AAAA,IACtD;AAOF,QAAI,oBAAoB,SAAS;AAE3B,UAAA,OAAO,QAAQ,mBAAmB,UAAU;AACxC,cAAA,IAAI,MAAM,iCAAiC;AAAA,MAAA,OAC5C;AAEC,cAAA,cAAc,IAAI,IAAI,QAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,gBAAQ,IAAI,WAAW;AAEjB,cAAA,OAAO,SAAS,cAAc,GAAG;AACvC,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,MAAM;AAGX,aAAK,WAAW;AAEP,iBAAA,KAAK,YAAY,IAAI;AAC9B,aAAK,MAAM;AACF,iBAAA,KAAK,YAAY,IAAI;AAAA,MAAA;AAAA,IAChC;AAGF,QAAI,qBAAqB,SAAS;AAE5B,UAAA,OAAO,QAAQ,oBAAoB,UAAU;AACzC,cAAA,IAAI,MAAM,kCAAkC;AAAA,MAAA,OAC7C;AAEL,kBAAU,UAAU,UAAU,QAAQ,eAAe,EAAE,MAAM,CAAC,QAAQ;AAC5D,kBAAA,MAAM,qCAAqC,GAAG;AAAA,QAAA,CACvD;AAAA,MAAA;AAAA,IACH;AAGF,QAAI,kBAAkB,SAAS;AAC7B,UAAI,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAClC,cAAA,IAAI,MAAM,+BAA+B;AAAA,MAAA;AAG7C,UAAA,QAAQ,aAAa,QAAQ;AAC/B,iBAAS,IAAI,KAAK,eAAe,QAAQ,YAAY,CAAC;AAAA,MAAA;AAAA,IACxD;AAAA,EAGJ;AAEA,SAAO,EAAE,oBAAoB;AAC/B;"}
1
+ {"version":3,"file":"useActionTriggers.es.js","sources":["../../../../src/hooks/useActionTriggers.ts"],"sourcesContent":["import { useDispatch } from 'react-redux'\nimport customProtocolCheck from 'custom-protocol-check'\nimport { api } from '@shared/api'\n\n\nexport type ActionTriggersProps = {\n searchParams: URLSearchParams\n onSetSearchParams: (params: URLSearchParams) => void\n onNavigate: (uri: string) => void\n}\n\ninterface QueryParams {\n [key: string]: string\n}\n\ninterface ActionPayload {\n query?: QueryParams // adds query params to the URL\n uri?: string // navigates to a different page\n new_tab?: boolean // opens a new tab\n extra_download?: string // triggers a file download from a URL\n extra_clipboard?: string // copies string content to clipboard\n extra_reload?: string[] // list of tags to invalidate\n [key: string]: any\n}\n\nexport const useActionTriggers = ({\n searchParams,\n onSetSearchParams,\n onNavigate,\n}: ActionTriggersProps) => {\n const dispatch = useDispatch()\n const handleActionPayload = (actionType: string, payload: ActionPayload | null): void => {\n if (!payload) return\n\n if (actionType === 'launcher') {\n if (payload?.uri) {\n customProtocolCheck(\n payload.uri,\n () => {},\n () => {},\n 2000,\n )\n }\n } else if (actionType === 'query') {\n // Validate it is an object of key:value pairs with value being string\n const isValid = Object.values(payload.query as QueryParams).every((value) => {\n return typeof value === 'string'\n })\n\n if (!isValid) {\n throw new Error('Invalid payload: query')\n } else {\n // Add query params to URL\n for (const [key, value] of Object.entries(payload.query as QueryParams)) {\n searchParams.set(key, value)\n }\n onSetSearchParams(searchParams)\n }\n } else if (actionType === 'navigate') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: navigate')\n } else {\n // Navigate to the specified page\n onNavigate(payload.uri)\n }\n } else if (actionType === 'redirect') {\n // Validate it is a string\n if (typeof payload.uri !== 'string') {\n throw new Error('Invalid payload: redirect')\n } else {\n const newTab = payload?.new_tab || false\n window.open(payload.uri, newTab ? '_blank' : '_self')\n }\n }\n\n //\n // Sub-actions\n //\n\n if ('extra_download' in payload) {\n // Validate it is a string\n if (typeof payload.extra_download !== 'string') {\n throw new Error('Invalid payload: extra_download')\n } else {\n // Trigger file download from the URL\n const downloadUrl = new URL(payload.extra_download, window.location.origin).href\n console.log(downloadUrl)\n // Create a hidden anchor element\n const link = document.createElement('a')\n link.href = downloadUrl\n link.target = '_blank'\n link.rel = 'noopener noreferrer'\n // Set download attribute if it's a direct file download\n // If it's an API endpoint that handles the download, this is still good\n link.download = ''\n // Append to document, click and then remove\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n }\n\n if ('extra_clipboard' in payload) {\n // Validate it is a string\n if (typeof payload.extra_clipboard !== 'string') {\n throw new Error('Invalid payload: extra_clipboard')\n } else {\n // Copy content to clipboard\n navigator.clipboard.writeText(payload.extra_clipboard).catch((err) => {\n console.error('Failed to copy text to clipboard:', err)\n })\n }\n }\n\n if ('extra_reload' in payload) {\n if (!Array.isArray(payload.extra_reload)) {\n throw new Error('Invalid payload: extra_reload')\n }\n\n if (payload.extra_reload.length) {\n dispatch(api.util.invalidateTags(payload.extra_reload))\n }\n }\n\n }\n\n return { handleActionPayload }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,WAAW,YAAY;AACvB,QAAA,sBAAsB,CAAC,YAAoB,YAAwC;AACvF,QAAI,CAAC,QAAS;AAEd,QAAI,eAAe,YAAY;AAC7B,UAAI,mCAAS,KAAK;AAChB;AAAA,UACE,QAAQ;AAAA,UACR,MAAM;AAAA,UAAC;AAAA,UACP,MAAM;AAAA,UAAC;AAAA,UACP;AAAA,QACF;AAAA,MAAA;AAAA,IACF,WACS,eAAe,SAAS;AAE3B,YAAA,UAAU,OAAO,OAAO,QAAQ,KAAoB,EAAE,MAAM,CAAC,UAAU;AAC3E,eAAO,OAAO,UAAU;AAAA,MAAA,CACzB;AAED,UAAI,CAAC,SAAS;AACN,cAAA,IAAI,MAAM,wBAAwB;AAAA,MAAA,OACnC;AAEM,mBAAA,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAoB,GAAG;AAC1D,uBAAA,IAAI,KAAK,KAAK;AAAA,QAAA;AAE7B,0BAAkB,YAAY;AAAA,MAAA;AAAA,IAChC,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AAEL,mBAAW,QAAQ,GAAG;AAAA,MAAA;AAAA,IACxB,WACS,eAAe,YAAY;AAEhC,UAAA,OAAO,QAAQ,QAAQ,UAAU;AAC7B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAAA,OACtC;AACC,cAAA,UAAS,mCAAS,YAAW;AACnC,eAAO,KAAK,QAAQ,KAAK,SAAS,WAAW,OAAO;AAAA,MAAA;AAAA,IACtD;AAOF,QAAI,oBAAoB,SAAS;AAE3B,UAAA,OAAO,QAAQ,mBAAmB,UAAU;AACxC,cAAA,IAAI,MAAM,iCAAiC;AAAA,MAAA,OAC5C;AAEC,cAAA,cAAc,IAAI,IAAI,QAAQ,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAC5E,gBAAQ,IAAI,WAAW;AAEjB,cAAA,OAAO,SAAS,cAAc,GAAG;AACvC,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,MAAM;AAGX,aAAK,WAAW;AAEP,iBAAA,KAAK,YAAY,IAAI;AAC9B,aAAK,MAAM;AACF,iBAAA,KAAK,YAAY,IAAI;AAAA,MAAA;AAAA,IAChC;AAGF,QAAI,qBAAqB,SAAS;AAE5B,UAAA,OAAO,QAAQ,oBAAoB,UAAU;AACzC,cAAA,IAAI,MAAM,kCAAkC;AAAA,MAAA,OAC7C;AAEL,kBAAU,UAAU,UAAU,QAAQ,eAAe,EAAE,MAAM,CAAC,QAAQ;AAC5D,kBAAA,MAAM,qCAAqC,GAAG;AAAA,QAAA,CACvD;AAAA,MAAA;AAAA,IACH;AAGF,QAAI,kBAAkB,SAAS;AAC7B,UAAI,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAClC,cAAA,IAAI,MAAM,+BAA+B;AAAA,MAAA;AAG7C,UAAA,QAAQ,aAAa,QAAQ;AAC/B,iBAAS,IAAI,KAAK,eAAe,QAAQ,YAAY,CAAC;AAAA,MAAA;AAAA,IACxD;AAAA,EAGJ;AAEA,SAAO,EAAE,oBAAoB;AAC/B;"}
@@ -68,6 +68,8 @@ require("../api/queries/users/updateUsers.cjs.js");
68
68
  require("../api/queries/watchers/getWatchers.cjs.js");
69
69
  require("../api/queries/permissions/getPermissions.cjs.js");
70
70
  require("../api/queries/grouping/getGrouping.cjs.js");
71
+ require("../api/queries/versions/updateVersions.cjs.js");
72
+ require("../api/queries/products/createProduct.cjs.js");
71
73
  require("../context/RemoteModulesContext.cjs.js");
72
74
  const DetailsPanelContext = require("../context/DetailsPanelContext.cjs.js");
73
75
  require("../context/ThumbnailUploaderContext.cjs.js");
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityUpdate.cjs.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useUpdateEntitiesMutation","useDetailsPanelContext","updateEntity","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,kBAAkB,CAAC,EAAE,UAAU,iBAAwC;AAC5E,QAAA,CAAC,cAAc,IAAIA,uCAA0B;AAC7C,QAAA,EAAE,eAAe,IAAIC,2CAAuB;AAQ5C,QAAAC,iBAAe,OAAO,OAAe,UAA8B;AACnE,QAAA,UAAU,QAAQ,UAAU,QAAW;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAM,aAAa,SAAS,IAAI,CAAC,YAAY;AAAA,QAC3C,IAAI,OAAO;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAAC,KAAK,GAAG;AAAA,QACX;AAAA,QACA,kBAAkB,OAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAU,OAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAM,eAAe,EAAE,YAAY,YAAY;AAC9B,uDAAA,EAAE,YAAY;aACxB,OAAO;AACRC,oBAAAA,MAAA,MAAM,kBAAkB,UAAU,EAAE;AAAA,IAAA;AAAA,EAE9C;AAEA,SAAO,EAAED,cAAAA,eAAa;AACxB;;"}
1
+ {"version":3,"file":"useEntityUpdate.cjs.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":["useUpdateEntitiesMutation","useDetailsPanelContext","updateEntity","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,kBAAkB,CAAC,EAAE,UAAU,iBAAwC;AAC5E,QAAA,CAAC,cAAc,IAAIA,uCAA0B;AAC7C,QAAA,EAAE,eAAe,IAAIC,2CAAuB;AAQ5C,QAAAC,iBAAe,OAAO,OAAe,UAA8B;AACnE,QAAA,UAAU,QAAQ,UAAU,QAAW;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAM,aAAa,SAAS,IAAI,CAAC,YAAY;AAAA,QAC3C,IAAI,OAAO;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAAC,KAAK,GAAG;AAAA,QACX;AAAA,QACA,kBAAkB,OAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAU,OAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAM,eAAe,EAAE,YAAY,YAAY;AAC9B,uDAAA,EAAE,YAAY;aACxB,OAAO;AACRC,oBAAAA,MAAA,MAAM,kBAAkB,UAAU,EAAE;AAAA,IAAA;AAAA,EAE9C;AAEA,SAAO,EAAED,cAAAA,eAAa;AACxB;;"}
@@ -66,6 +66,8 @@ import "../api/queries/users/updateUsers.es.js";
66
66
  import "../api/queries/watchers/getWatchers.es.js";
67
67
  import "../api/queries/permissions/getPermissions.es.js";
68
68
  import "../api/queries/grouping/getGrouping.es.js";
69
+ import "../api/queries/versions/updateVersions.es.js";
70
+ import "../api/queries/products/createProduct.es.js";
69
71
  import "../context/RemoteModulesContext.es.js";
70
72
  import { useDetailsPanelContext } from "../context/DetailsPanelContext.es.js";
71
73
  import "../context/ThumbnailUploaderContext.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityUpdate.es.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,kBAAkB,CAAC,EAAE,UAAU,iBAAwC;AAC5E,QAAA,CAAC,cAAc,IAAI,0BAA0B;AAC7C,QAAA,EAAE,eAAe,IAAI,uBAAuB;AAQ5C,QAAA,eAAe,OAAO,OAAe,UAA8B;AACnE,QAAA,UAAU,QAAQ,UAAU,QAAW;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAM,aAAa,SAAS,IAAI,CAAC,YAAY;AAAA,QAC3C,IAAI,OAAO;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAAC,KAAK,GAAG;AAAA,QACX;AAAA,QACA,kBAAkB,OAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAU,OAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAM,eAAe,EAAE,YAAY,YAAY;AAC9B,uDAAA,EAAE,YAAY;aACxB,OAAO;AACR,YAAA,MAAM,kBAAkB,UAAU,EAAE;AAAA,IAAA;AAAA,EAE9C;AAEA,SAAO,EAAE,aAAa;AACxB;"}
1
+ {"version":3,"file":"useEntityUpdate.es.js","sources":["../../../../src/hooks/useEntityUpdate.ts"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useUpdateEntitiesMutation } from '@shared/api'\nimport { useContext } from 'react'\nimport { useDetailsPanelContext } from '@shared/context'\n\ninterface Entity {\n id: string\n projectName: string\n users: string[]\n folderId?: string\n productId?: string\n}\n\nexport interface UseEntityUpdateParams {\n entities: Entity[]\n entityType: string\n}\n\n/**\n * Hook for updating entities with proper error handling and version-specific logic\n */\nexport const useEntityUpdate = ({ entities, entityType }: UseEntityUpdateParams) => {\n const [updateEntities] = useUpdateEntitiesMutation()\n const { onUpdateEntity } = useDetailsPanelContext()\n\n /**\n * Updates entities with the specified field and value\n * @param field The field to update\n * @param value The new value for the field\n * @returns Promise that resolves when the update is complete\n */\n const updateEntity = async (field: string, value: any): Promise<void> => {\n if (value === null || value === undefined) {\n console.error('value is null or undefined')\n return\n }\n\n try {\n // Build entities operations array\n const operations = entities.map((entity) => ({\n id: entity.id,\n projectName: entity.projectName,\n data: {\n [field]: value,\n },\n currentAssignees: entity.users,\n meta: {\n folderId: entity.folderId,\n },\n }))\n\n await updateEntities({ operations, entityType })\n onUpdateEntity?.({ operations, entityType })\n } catch (error) {\n toast.error(`Error updating ${entityType}`)\n }\n }\n\n return { updateEntity }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAM,kBAAkB,CAAC,EAAE,UAAU,iBAAwC;AAC5E,QAAA,CAAC,cAAc,IAAI,0BAA0B;AAC7C,QAAA,EAAE,eAAe,IAAI,uBAAuB;AAQ5C,QAAA,eAAe,OAAO,OAAe,UAA8B;AACnE,QAAA,UAAU,QAAQ,UAAU,QAAW;AACzC,cAAQ,MAAM,4BAA4B;AAC1C;AAAA,IAAA;AAGE,QAAA;AAEF,YAAM,aAAa,SAAS,IAAI,CAAC,YAAY;AAAA,QAC3C,IAAI,OAAO;AAAA,QACX,aAAa,OAAO;AAAA,QACpB,MAAM;AAAA,UACJ,CAAC,KAAK,GAAG;AAAA,QACX;AAAA,QACA,kBAAkB,OAAO;AAAA,QACzB,MAAM;AAAA,UACJ,UAAU,OAAO;AAAA,QAAA;AAAA,MACnB,EACA;AAEF,YAAM,eAAe,EAAE,YAAY,YAAY;AAC9B,uDAAA,EAAE,YAAY;aACxB,OAAO;AACR,YAAA,MAAM,kBAAkB,UAAU,EAAE;AAAA,IAAA;AAAA,EAE9C;AAEA,SAAO,EAAE,aAAa;AACxB;"}
@@ -49,7 +49,7 @@ const useLoadModule = ({
49
49
  setIsLoading(false);
50
50
  return console.log("module not found", { addon, remote, module: module2 });
51
51
  }
52
- if (isLoaded) {
52
+ if (isLoaded === module2) {
53
53
  setIsLoading(false);
54
54
  return;
55
55
  }
@@ -57,7 +57,7 @@ const useLoadModule = ({
57
57
  from: "runtime"
58
58
  }).then((remote2) => {
59
59
  console.log("loaded remote", module2);
60
- setIsLoaded(true);
60
+ setIsLoaded(module2);
61
61
  setIsLoading(false);
62
62
  if (remote2) loadedRemote.current = remote2.default;
63
63
  }).catch((e) => {
@@ -68,7 +68,7 @@ const useLoadModule = ({
68
68
  return [
69
69
  loadedRemote.current,
70
70
  {
71
- isLoaded,
71
+ isLoaded: isLoaded === module2,
72
72
  isLoading,
73
73
  outdated: isOutdated ? {
74
74
  current: ((_a = modules.find((m) => m.addonName === addon)) == null ? void 0 : _a.addonVersion) || "unknown",
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadModule.cjs.js","sources":["../../../../src/hooks/useLoadModule.ts"],"sourcesContent":["import { useRemoteModules } from '@shared/context/RemoteModulesContext'\nimport { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\n\ninterface Props<T> {\n addon: string\n remote: string\n module: string\n fallback: T\n debug?: boolean\n minVersion?: string // minimum version required for this module\n skip?: boolean // skip loading if module is provided externally\n}\n\nexport const useLoadModule = <T>({\n addon,\n remote,\n module,\n fallback,\n minVersion,\n skip = false,\n}: Props<T>): [\n T,\n { isLoaded: boolean; isLoading: boolean; outdated?: { current: string; required: string } },\n] => {\n const { remotesInitialized, modules } = useRemoteModules()\n const [isLoading, setIsLoading] = useState(true)\n const [isLoaded, setIsLoaded] = useState(false)\n const [isOutdated, setIsOutdated] = useState(false)\n const loadedRemote = useRef<T>(fallback)\n\n useEffect(() => {\n // skip loading if module is provided externally\n if (skip) {\n setIsLoading(false)\n setIsLoaded(true)\n return\n }\n\n // wait for remotes to be initialized\n if (!remotesInitialized || !addon || !remote || !module) return\n\n // check if remote and module exist\n const initializedRemote = modules.find((m) => m.addonName === addon)\n\n if (!initializedRemote) {\n console.log('remote not found', { addon, remote, module })\n setIsLoading(false)\n return\n }\n\n // check remote meets minimum version requirement\n if (\n minVersion &&\n !semver.gte(initializedRemote.addonVersion, minVersion) &&\n minVersion + '-dev' !== initializedRemote.addonVersion\n ) {\n console.log('remote version does not meet minimum requirement', {\n addon,\n remote,\n module,\n current: initializedRemote.addonVersion,\n required: minVersion,\n })\n\n setIsOutdated(true)\n setIsLoading(false)\n\n // use fallback if version requirement not met\n return\n }\n\n setIsOutdated(false)\n\n const initializedModule = initializedRemote.modules[remote]\n\n if (!initializedModule) {\n setIsLoading(false)\n return console.log('module not found', { addon, remote, module })\n }\n\n // check if module is already loaded\n if (isLoaded) {\n setIsLoading(false)\n return\n }\n loadRemote<{ default: T }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n .then((remote) => {\n console.log('loaded remote', module)\n setIsLoaded(true)\n setIsLoading(false)\n if (remote) loadedRemote.current = remote.default\n })\n .catch((e) => {\n setIsLoading(false)\n console.error('error loading remote', remote, module, e)\n })\n }, [isLoaded, remotesInitialized, modules, addon, remote, module, minVersion, skip])\n\n return [\n loadedRemote.current,\n {\n isLoaded,\n isLoading,\n outdated: isOutdated\n ? {\n current: modules.find((m) => m.addonName === addon)?.addonVersion || 'unknown',\n required: minVersion || 'unknown',\n }\n : undefined,\n },\n ]\n}\n"],"names":["module","useRemoteModules","useState","useRef","useEffect","loadRemote","remote"],"mappings":";;;;;;AAeO,MAAM,gBAAgB,CAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,QAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAGK;;AACH,QAAM,EAAE,oBAAoB,QAAQ,IAAIC,sCAAiB;AACzD,QAAM,CAAC,WAAW,YAAY,IAAIC,MAAAA,SAAS,IAAI;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAC5C,QAAA,eAAeC,aAAU,QAAQ;AAEvCC,QAAAA,UAAU,MAAM;AAEd,QAAI,MAAM;AACR,mBAAa,KAAK;AAClB,kBAAY,IAAI;AAChB;AAAA,IAAA;AAIF,QAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAACJ,QAAQ;AAGzD,UAAM,oBAAoB,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK;AAEnE,QAAI,CAAC,mBAAmB;AACtB,cAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAAA,SAAQ;AACzD,mBAAa,KAAK;AAClB;AAAA,IAAA;AAKA,QAAA,cACA,CAAC,OAAO,IAAI,kBAAkB,cAAc,UAAU,KACtD,aAAa,WAAW,kBAAkB,cAC1C;AACA,cAAQ,IAAI,oDAAoD;AAAA,QAC9D;AAAA,QACA;AAAA,QACA,QAAAA;AAAA,QACA,SAAS,kBAAkB;AAAA,QAC3B,UAAU;AAAA,MAAA,CACX;AAED,oBAAc,IAAI;AAClB,mBAAa,KAAK;AAGlB;AAAA,IAAA;AAGF,kBAAc,KAAK;AAEb,UAAA,oBAAoB,kBAAkB,QAAQ,MAAM;AAE1D,QAAI,CAAC,mBAAmB;AACtB,mBAAa,KAAK;AAClB,aAAO,QAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAAA,SAAQ;AAAA,IAAA;AAIlE,QAAI,UAAU;AACZ,mBAAa,KAAK;AAClB;AAAA,IAAA;AAEFK,YAAAA,eAAAA,WAA2B,GAAG,MAAM,IAAIL,OAAM,IAAI;AAAA,MAChD,MAAM;AAAA,IAAA,CACP,EACE,KAAK,CAACM,YAAW;AACR,cAAA,IAAI,iBAAiBN,OAAM;AACnC,kBAAY,IAAI;AAChB,mBAAa,KAAK;AACdM,UAAAA,QAAqB,cAAA,UAAUA,QAAO;AAAA,IAAA,CAC3C,EACA,MAAM,CAAC,MAAM;AACZ,mBAAa,KAAK;AAClB,cAAQ,MAAM,wBAAwB,QAAQN,SAAQ,CAAC;AAAA,IAAA,CACxD;AAAA,EAAA,GACF,CAAC,UAAU,oBAAoB,SAAS,OAAO,QAAQA,SAAQ,YAAY,IAAI,CAAC;AAE5E,SAAA;AAAA,IACL,aAAa;AAAA,IACb;AAAA,MACE;AAAA,MACA;AAAA,MACA,UAAU,aACN;AAAA,QACE,WAAS,aAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK,MAAzC,mBAA4C,iBAAgB;AAAA,QACrE,UAAU,cAAc;AAAA,MAAA,IAE1B;AAAA,IAAA;AAAA,EAER;AACF;;"}
1
+ {"version":3,"file":"useLoadModule.cjs.js","sources":["../../../../src/hooks/useLoadModule.ts"],"sourcesContent":["import { useRemoteModules } from '@shared/context/RemoteModulesContext'\nimport { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\n\ninterface Props<T> {\n addon: string\n remote: string\n module: string\n fallback: T\n debug?: boolean\n minVersion?: string // minimum version required for this module\n skip?: boolean // skip loading if module is provided externally\n}\n\nexport const useLoadModule = <T>({\n addon,\n remote,\n module,\n fallback,\n minVersion,\n skip = false,\n}: Props<T>): [\n T,\n { isLoaded: boolean; isLoading: boolean; outdated?: { current: string; required: string } },\n] => {\n const { remotesInitialized, modules } = useRemoteModules()\n const [isLoading, setIsLoading] = useState(true)\n const [isLoaded, setIsLoaded] = useState<string | boolean>(false)\n const [isOutdated, setIsOutdated] = useState(false)\n const loadedRemote = useRef<T>(fallback)\n\n useEffect(() => {\n // skip loading if module is provided externally\n if (skip) {\n setIsLoading(false)\n setIsLoaded(true)\n return\n }\n\n // wait for remotes to be initialized\n if (!remotesInitialized || !addon || !remote || !module) return\n\n // check if remote and module exist\n const initializedRemote = modules.find((m) => m.addonName === addon)\n\n if (!initializedRemote) {\n console.log('remote not found', { addon, remote, module })\n setIsLoading(false)\n return\n }\n\n // check remote meets minimum version requirement\n if (\n minVersion &&\n !semver.gte(initializedRemote.addonVersion, minVersion) &&\n minVersion + '-dev' !== initializedRemote.addonVersion\n ) {\n console.log('remote version does not meet minimum requirement', {\n addon,\n remote,\n module,\n current: initializedRemote.addonVersion,\n required: minVersion,\n })\n\n setIsOutdated(true)\n setIsLoading(false)\n\n // use fallback if version requirement not met\n return\n }\n\n setIsOutdated(false)\n\n const initializedModule = initializedRemote.modules[remote]\n\n if (!initializedModule) {\n setIsLoading(false)\n return console.log('module not found', { addon, remote, module })\n }\n\n // check if module is already loaded\n if (isLoaded === module) {\n setIsLoading(false)\n return\n }\n loadRemote<{ default: T }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n .then((remote) => {\n console.log('loaded remote', module)\n setIsLoaded(module)\n setIsLoading(false)\n if (remote) loadedRemote.current = remote.default\n })\n .catch((e) => {\n setIsLoading(false)\n console.error('error loading remote', remote, module, e)\n })\n }, [isLoaded, remotesInitialized, modules, addon, remote, module, minVersion, skip])\n\n return [\n loadedRemote.current,\n {\n isLoaded: isLoaded === module,\n isLoading,\n outdated: isOutdated\n ? {\n current: modules.find((m) => m.addonName === addon)?.addonVersion || 'unknown',\n required: minVersion || 'unknown',\n }\n : undefined,\n },\n ]\n}\n"],"names":["module","useRemoteModules","useState","useRef","useEffect","loadRemote","remote"],"mappings":";;;;;;AAeO,MAAM,gBAAgB,CAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,QAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAGK;;AACH,QAAM,EAAE,oBAAoB,QAAQ,IAAIC,sCAAiB;AACzD,QAAM,CAAC,WAAW,YAAY,IAAIC,MAAAA,SAAS,IAAI;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAA2B,KAAK;AAChE,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAC5C,QAAA,eAAeC,aAAU,QAAQ;AAEvCC,QAAAA,UAAU,MAAM;AAEd,QAAI,MAAM;AACR,mBAAa,KAAK;AAClB,kBAAY,IAAI;AAChB;AAAA,IAAA;AAIF,QAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAACJ,QAAQ;AAGzD,UAAM,oBAAoB,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK;AAEnE,QAAI,CAAC,mBAAmB;AACtB,cAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAAA,SAAQ;AACzD,mBAAa,KAAK;AAClB;AAAA,IAAA;AAKA,QAAA,cACA,CAAC,OAAO,IAAI,kBAAkB,cAAc,UAAU,KACtD,aAAa,WAAW,kBAAkB,cAC1C;AACA,cAAQ,IAAI,oDAAoD;AAAA,QAC9D;AAAA,QACA;AAAA,QACA,QAAAA;AAAA,QACA,SAAS,kBAAkB;AAAA,QAC3B,UAAU;AAAA,MAAA,CACX;AAED,oBAAc,IAAI;AAClB,mBAAa,KAAK;AAGlB;AAAA,IAAA;AAGF,kBAAc,KAAK;AAEb,UAAA,oBAAoB,kBAAkB,QAAQ,MAAM;AAE1D,QAAI,CAAC,mBAAmB;AACtB,mBAAa,KAAK;AAClB,aAAO,QAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAAA,SAAQ;AAAA,IAAA;AAIlE,QAAI,aAAaA,SAAQ;AACvB,mBAAa,KAAK;AAClB;AAAA,IAAA;AAEFK,YAAAA,eAAAA,WAA2B,GAAG,MAAM,IAAIL,OAAM,IAAI;AAAA,MAChD,MAAM;AAAA,IAAA,CACP,EACE,KAAK,CAACM,YAAW;AACR,cAAA,IAAI,iBAAiBN,OAAM;AACnC,kBAAYA,OAAM;AAClB,mBAAa,KAAK;AACdM,UAAAA,QAAqB,cAAA,UAAUA,QAAO;AAAA,IAAA,CAC3C,EACA,MAAM,CAAC,MAAM;AACZ,mBAAa,KAAK;AAClB,cAAQ,MAAM,wBAAwB,QAAQN,SAAQ,CAAC;AAAA,IAAA,CACxD;AAAA,EAAA,GACF,CAAC,UAAU,oBAAoB,SAAS,OAAO,QAAQA,SAAQ,YAAY,IAAI,CAAC;AAE5E,SAAA;AAAA,IACL,aAAa;AAAA,IACb;AAAA,MACE,UAAU,aAAaA;AAAA,MACvB;AAAA,MACA,UAAU,aACN;AAAA,QACE,WAAS,aAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK,MAAzC,mBAA4C,iBAAgB;AAAA,QACrE,UAAU,cAAc;AAAA,MAAA,IAE1B;AAAA,IAAA;AAAA,EAER;AACF;;"}
@@ -47,7 +47,7 @@ const useLoadModule = ({
47
47
  setIsLoading(false);
48
48
  return console.log("module not found", { addon, remote, module });
49
49
  }
50
- if (isLoaded) {
50
+ if (isLoaded === module) {
51
51
  setIsLoading(false);
52
52
  return;
53
53
  }
@@ -55,7 +55,7 @@ const useLoadModule = ({
55
55
  from: "runtime"
56
56
  }).then((remote2) => {
57
57
  console.log("loaded remote", module);
58
- setIsLoaded(true);
58
+ setIsLoaded(module);
59
59
  setIsLoading(false);
60
60
  if (remote2) loadedRemote.current = remote2.default;
61
61
  }).catch((e) => {
@@ -66,7 +66,7 @@ const useLoadModule = ({
66
66
  return [
67
67
  loadedRemote.current,
68
68
  {
69
- isLoaded,
69
+ isLoaded: isLoaded === module,
70
70
  isLoading,
71
71
  outdated: isOutdated ? {
72
72
  current: ((_a = modules.find((m) => m.addonName === addon)) == null ? void 0 : _a.addonVersion) || "unknown",
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadModule.es.js","sources":["../../../../src/hooks/useLoadModule.ts"],"sourcesContent":["import { useRemoteModules } from '@shared/context/RemoteModulesContext'\nimport { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\n\ninterface Props<T> {\n addon: string\n remote: string\n module: string\n fallback: T\n debug?: boolean\n minVersion?: string // minimum version required for this module\n skip?: boolean // skip loading if module is provided externally\n}\n\nexport const useLoadModule = <T>({\n addon,\n remote,\n module,\n fallback,\n minVersion,\n skip = false,\n}: Props<T>): [\n T,\n { isLoaded: boolean; isLoading: boolean; outdated?: { current: string; required: string } },\n] => {\n const { remotesInitialized, modules } = useRemoteModules()\n const [isLoading, setIsLoading] = useState(true)\n const [isLoaded, setIsLoaded] = useState(false)\n const [isOutdated, setIsOutdated] = useState(false)\n const loadedRemote = useRef<T>(fallback)\n\n useEffect(() => {\n // skip loading if module is provided externally\n if (skip) {\n setIsLoading(false)\n setIsLoaded(true)\n return\n }\n\n // wait for remotes to be initialized\n if (!remotesInitialized || !addon || !remote || !module) return\n\n // check if remote and module exist\n const initializedRemote = modules.find((m) => m.addonName === addon)\n\n if (!initializedRemote) {\n console.log('remote not found', { addon, remote, module })\n setIsLoading(false)\n return\n }\n\n // check remote meets minimum version requirement\n if (\n minVersion &&\n !semver.gte(initializedRemote.addonVersion, minVersion) &&\n minVersion + '-dev' !== initializedRemote.addonVersion\n ) {\n console.log('remote version does not meet minimum requirement', {\n addon,\n remote,\n module,\n current: initializedRemote.addonVersion,\n required: minVersion,\n })\n\n setIsOutdated(true)\n setIsLoading(false)\n\n // use fallback if version requirement not met\n return\n }\n\n setIsOutdated(false)\n\n const initializedModule = initializedRemote.modules[remote]\n\n if (!initializedModule) {\n setIsLoading(false)\n return console.log('module not found', { addon, remote, module })\n }\n\n // check if module is already loaded\n if (isLoaded) {\n setIsLoading(false)\n return\n }\n loadRemote<{ default: T }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n .then((remote) => {\n console.log('loaded remote', module)\n setIsLoaded(true)\n setIsLoading(false)\n if (remote) loadedRemote.current = remote.default\n })\n .catch((e) => {\n setIsLoading(false)\n console.error('error loading remote', remote, module, e)\n })\n }, [isLoaded, remotesInitialized, modules, addon, remote, module, minVersion, skip])\n\n return [\n loadedRemote.current,\n {\n isLoaded,\n isLoading,\n outdated: isOutdated\n ? {\n current: modules.find((m) => m.addonName === addon)?.addonVersion || 'unknown',\n required: minVersion || 'unknown',\n }\n : undefined,\n },\n ]\n}\n"],"names":["loadRemote","remote"],"mappings":";;;;AAeO,MAAM,gBAAgB,CAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAGK;;AACH,QAAM,EAAE,oBAAoB,QAAQ,IAAI,iBAAiB;AACzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAC5C,QAAA,eAAe,OAAU,QAAQ;AAEvC,YAAU,MAAM;AAEd,QAAI,MAAM;AACR,mBAAa,KAAK;AAClB,kBAAY,IAAI;AAChB;AAAA,IAAA;AAIF,QAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAQ;AAGzD,UAAM,oBAAoB,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK;AAEnE,QAAI,CAAC,mBAAmB;AACtB,cAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAQ;AACzD,mBAAa,KAAK;AAClB;AAAA,IAAA;AAKA,QAAA,cACA,CAAC,OAAO,IAAI,kBAAkB,cAAc,UAAU,KACtD,aAAa,WAAW,kBAAkB,cAC1C;AACA,cAAQ,IAAI,oDAAoD;AAAA,QAC9D;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,kBAAkB;AAAA,QAC3B,UAAU;AAAA,MAAA,CACX;AAED,oBAAc,IAAI;AAClB,mBAAa,KAAK;AAGlB;AAAA,IAAA;AAGF,kBAAc,KAAK;AAEb,UAAA,oBAAoB,kBAAkB,QAAQ,MAAM;AAE1D,QAAI,CAAC,mBAAmB;AACtB,mBAAa,KAAK;AAClB,aAAO,QAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAQ;AAAA,IAAA;AAIlE,QAAI,UAAU;AACZ,mBAAa,KAAK;AAClB;AAAA,IAAA;AAEFA,mBAAAA,WAA2B,GAAG,MAAM,IAAI,MAAM,IAAI;AAAA,MAChD,MAAM;AAAA,IAAA,CACP,EACE,KAAK,CAACC,YAAW;AACR,cAAA,IAAI,iBAAiB,MAAM;AACnC,kBAAY,IAAI;AAChB,mBAAa,KAAK;AACdA,UAAAA,QAAqB,cAAA,UAAUA,QAAO;AAAA,IAAA,CAC3C,EACA,MAAM,CAAC,MAAM;AACZ,mBAAa,KAAK;AAClB,cAAQ,MAAM,wBAAwB,QAAQ,QAAQ,CAAC;AAAA,IAAA,CACxD;AAAA,EAAA,GACF,CAAC,UAAU,oBAAoB,SAAS,OAAO,QAAQ,QAAQ,YAAY,IAAI,CAAC;AAE5E,SAAA;AAAA,IACL,aAAa;AAAA,IACb;AAAA,MACE;AAAA,MACA;AAAA,MACA,UAAU,aACN;AAAA,QACE,WAAS,aAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK,MAAzC,mBAA4C,iBAAgB;AAAA,QACrE,UAAU,cAAc;AAAA,MAAA,IAE1B;AAAA,IAAA;AAAA,EAER;AACF;"}
1
+ {"version":3,"file":"useLoadModule.es.js","sources":["../../../../src/hooks/useLoadModule.ts"],"sourcesContent":["import { useRemoteModules } from '@shared/context/RemoteModulesContext'\nimport { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\n\ninterface Props<T> {\n addon: string\n remote: string\n module: string\n fallback: T\n debug?: boolean\n minVersion?: string // minimum version required for this module\n skip?: boolean // skip loading if module is provided externally\n}\n\nexport const useLoadModule = <T>({\n addon,\n remote,\n module,\n fallback,\n minVersion,\n skip = false,\n}: Props<T>): [\n T,\n { isLoaded: boolean; isLoading: boolean; outdated?: { current: string; required: string } },\n] => {\n const { remotesInitialized, modules } = useRemoteModules()\n const [isLoading, setIsLoading] = useState(true)\n const [isLoaded, setIsLoaded] = useState<string | boolean>(false)\n const [isOutdated, setIsOutdated] = useState(false)\n const loadedRemote = useRef<T>(fallback)\n\n useEffect(() => {\n // skip loading if module is provided externally\n if (skip) {\n setIsLoading(false)\n setIsLoaded(true)\n return\n }\n\n // wait for remotes to be initialized\n if (!remotesInitialized || !addon || !remote || !module) return\n\n // check if remote and module exist\n const initializedRemote = modules.find((m) => m.addonName === addon)\n\n if (!initializedRemote) {\n console.log('remote not found', { addon, remote, module })\n setIsLoading(false)\n return\n }\n\n // check remote meets minimum version requirement\n if (\n minVersion &&\n !semver.gte(initializedRemote.addonVersion, minVersion) &&\n minVersion + '-dev' !== initializedRemote.addonVersion\n ) {\n console.log('remote version does not meet minimum requirement', {\n addon,\n remote,\n module,\n current: initializedRemote.addonVersion,\n required: minVersion,\n })\n\n setIsOutdated(true)\n setIsLoading(false)\n\n // use fallback if version requirement not met\n return\n }\n\n setIsOutdated(false)\n\n const initializedModule = initializedRemote.modules[remote]\n\n if (!initializedModule) {\n setIsLoading(false)\n return console.log('module not found', { addon, remote, module })\n }\n\n // check if module is already loaded\n if (isLoaded === module) {\n setIsLoading(false)\n return\n }\n loadRemote<{ default: T }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n .then((remote) => {\n console.log('loaded remote', module)\n setIsLoaded(module)\n setIsLoading(false)\n if (remote) loadedRemote.current = remote.default\n })\n .catch((e) => {\n setIsLoading(false)\n console.error('error loading remote', remote, module, e)\n })\n }, [isLoaded, remotesInitialized, modules, addon, remote, module, minVersion, skip])\n\n return [\n loadedRemote.current,\n {\n isLoaded: isLoaded === module,\n isLoading,\n outdated: isOutdated\n ? {\n current: modules.find((m) => m.addonName === addon)?.addonVersion || 'unknown',\n required: minVersion || 'unknown',\n }\n : undefined,\n },\n ]\n}\n"],"names":["loadRemote","remote"],"mappings":";;;;AAeO,MAAM,gBAAgB,CAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAGK;;AACH,QAAM,EAAE,oBAAoB,QAAQ,IAAI,iBAAiB;AACzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAA2B,KAAK;AAChE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAC5C,QAAA,eAAe,OAAU,QAAQ;AAEvC,YAAU,MAAM;AAEd,QAAI,MAAM;AACR,mBAAa,KAAK;AAClB,kBAAY,IAAI;AAChB;AAAA,IAAA;AAIF,QAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAQ;AAGzD,UAAM,oBAAoB,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK;AAEnE,QAAI,CAAC,mBAAmB;AACtB,cAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAQ;AACzD,mBAAa,KAAK;AAClB;AAAA,IAAA;AAKA,QAAA,cACA,CAAC,OAAO,IAAI,kBAAkB,cAAc,UAAU,KACtD,aAAa,WAAW,kBAAkB,cAC1C;AACA,cAAQ,IAAI,oDAAoD;AAAA,QAC9D;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,kBAAkB;AAAA,QAC3B,UAAU;AAAA,MAAA,CACX;AAED,oBAAc,IAAI;AAClB,mBAAa,KAAK;AAGlB;AAAA,IAAA;AAGF,kBAAc,KAAK;AAEb,UAAA,oBAAoB,kBAAkB,QAAQ,MAAM;AAE1D,QAAI,CAAC,mBAAmB;AACtB,mBAAa,KAAK;AAClB,aAAO,QAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAQ;AAAA,IAAA;AAIlE,QAAI,aAAa,QAAQ;AACvB,mBAAa,KAAK;AAClB;AAAA,IAAA;AAEFA,mBAAAA,WAA2B,GAAG,MAAM,IAAI,MAAM,IAAI;AAAA,MAChD,MAAM;AAAA,IAAA,CACP,EACE,KAAK,CAACC,YAAW;AACR,cAAA,IAAI,iBAAiB,MAAM;AACnC,kBAAY,MAAM;AAClB,mBAAa,KAAK;AACdA,UAAAA,QAAqB,cAAA,UAAUA,QAAO;AAAA,IAAA,CAC3C,EACA,MAAM,CAAC,MAAM;AACZ,mBAAa,KAAK;AAClB,cAAQ,MAAM,wBAAwB,QAAQ,QAAQ,CAAC;AAAA,IAAA,CACxD;AAAA,EAAA,GACF,CAAC,UAAU,oBAAoB,SAAS,OAAO,QAAQ,QAAQ,YAAY,IAAI,CAAC;AAE5E,SAAA;AAAA,IACL,aAAa;AAAA,IACb;AAAA,MACE,UAAU,aAAa;AAAA,MACvB;AAAA,MACA,UAAU,aACN;AAAA,QACE,WAAS,aAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK,MAAzC,mBAA4C,iBAAgB;AAAA,QACrE,UAAU,cAAc;AAAA,MAAA,IAE1B;AAAA,IAAA;AAAA,EAER;AACF;"}
@@ -67,6 +67,8 @@ require("../api/queries/users/updateUsers.cjs.js");
67
67
  require("../api/queries/watchers/getWatchers.cjs.js");
68
68
  require("../api/queries/permissions/getPermissions.cjs.js");
69
69
  require("../api/queries/grouping/getGrouping.cjs.js");
70
+ require("../api/queries/versions/updateVersions.cjs.js");
71
+ require("../api/queries/products/createProduct.cjs.js");
70
72
  const lodash = require("lodash");
71
73
  const useScopedStatuses = (projects, entityTypes) => {
72
74
  const response = getUserDashboard.useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] });
@@ -1 +1 @@
1
- {"version":3,"file":"useScopedStatuses.cjs.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":["useGetProjectsInfoQuery","intersectionBy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAWA,iBAAAA,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAAC,OAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;;;"}
1
+ {"version":3,"file":"useScopedStatuses.cjs.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":["useGetProjectsInfoQuery","intersectionBy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAWA,iBAAAA,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAAC,OAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;;;"}
@@ -65,6 +65,8 @@ import "../api/queries/users/updateUsers.es.js";
65
65
  import "../api/queries/watchers/getWatchers.es.js";
66
66
  import "../api/queries/permissions/getPermissions.es.js";
67
67
  import "../api/queries/grouping/getGrouping.es.js";
68
+ import "../api/queries/versions/updateVersions.es.js";
69
+ import "../api/queries/products/createProduct.es.js";
68
70
  import { intersectionBy } from "lodash";
69
71
  const useScopedStatuses = (projects, entityTypes) => {
70
72
  const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] });
@@ -1 +1 @@
1
- {"version":3,"file":"useScopedStatuses.es.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAW,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;"}
1
+ {"version":3,"file":"useScopedStatuses.es.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAW,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;"}
@@ -67,6 +67,8 @@ const updateUsers = require("../api/queries/users/updateUsers.cjs.js");
67
67
  require("../api/queries/watchers/getWatchers.cjs.js");
68
68
  require("../api/queries/permissions/getPermissions.cjs.js");
69
69
  require("../api/queries/grouping/getGrouping.cjs.js");
70
+ require("../api/queries/versions/updateVersions.cjs.js");
71
+ require("../api/queries/products/createProduct.cjs.js");
70
72
  const reactToastify = require("react-toastify");
71
73
  const useUserProjectConfig = ({ selectors = [], init }) => {
72
74
  const { data: user, isSuccess } = getUsers.useGetCurrentUserQuery();
@@ -1 +1 @@
1
- {"version":3,"file":"useUserProjectConfig.cjs.js","sources":["../../../../src/hooks/useUserProjectConfig.ts"],"sourcesContent":["import { useGetCurrentUserQuery, useSetFrontendPreferencesMutation } from '@shared/api'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n selectors?: (string | undefined | null)[]\n init?: any\n}\n\ntype Result = [\n Record<string, any>,\n (config: Record<string, any>) => Promise<void>,\n { isSuccess: boolean },\n]\n\nexport const useUserProjectConfig = ({ selectors = [], init }: Props): Result => {\n // GET CURRENT USER\n const { data: user, isSuccess } = useGetCurrentUserQuery()\n // extract out columns config for project\n const { data: { frontendPreferences: preferences = {} } = {} } = user || {}\n\n const configPath = selectors\n .filter((selector) => selector !== undefined && selector !== null)\n .map((selector) => selector.replace(/\\s/g, ''))\n // Start with the root preferences\n let userConfig = preferences\n for (const selector of configPath) {\n userConfig = userConfig?.[selector]\n }\n\n userConfig = userConfig || init || {}\n\n const [updateUserPreferences] = useSetFrontendPreferencesMutation()\n\n // update the user preferences when the columns config changes\n const updateProjectConfig = async (config: Record<string, any>) => {\n try {\n if (!user?.name) throw { data: { detail: 'User not found' } }\n\n // Set the updated config at the correct nested path using only selectors\n let updatedPreferences = { ...preferences }\n\n // Helper function to set nested value\n const setNestedValue = (obj: any, path: string[], value: any): any => {\n if (path.length === 0) return { ...obj, ...value }\n\n const [first, ...rest] = path\n const nestedObj = obj?.[first] || {}\n\n return {\n ...obj,\n [first]: setNestedValue(nestedObj, rest, value),\n }\n }\n\n // Use the helper to set the value at the correct path\n updatedPreferences = setNestedValue(updatedPreferences, configPath, config)\n\n await updateUserPreferences({\n userName: user.name,\n patchData: updatedPreferences,\n // @ts-expect-error - disableInvalidations is not in the api\n disableInvalidations: true,\n }).unwrap()\n } catch (error: any) {\n console.error(error)\n toast.error(error.data?.detail)\n }\n }\n\n return [userConfig, updateProjectConfig, { isSuccess: isSuccess }]\n}\n"],"names":["useGetCurrentUserQuery","useSetFrontendPreferencesMutation","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,uBAAuB,CAAC,EAAE,YAAY,CAAC,GAAG,WAA0B;AAE/E,QAAM,EAAE,MAAM,MAAM,UAAA,IAAcA,SAAAA,uBAAuB;AAEzD,QAAM,EAAE,MAAM,EAAE,qBAAqB,cAAc,CAAA,MAAO,CAAA,MAAO,QAAQ,CAAC;AAE1E,QAAM,aAAa,UAChB,OAAO,CAAC,aAAa,aAAa,UAAa,aAAa,IAAI,EAChE,IAAI,CAAC,aAAa,SAAS,QAAQ,OAAO,EAAE,CAAC;AAEhD,MAAI,aAAa;AACjB,aAAW,YAAY,YAAY;AACjC,iBAAa,yCAAa;AAAA,EAAQ;AAGvB,eAAA,cAAc,QAAQ,CAAC;AAE9B,QAAA,CAAC,qBAAqB,IAAIC,8CAAkC;AAG5D,QAAA,sBAAsB,OAAO,WAAgC;;AAC7D,QAAA;AACE,UAAA,EAAC,6BAAM,MAAM,OAAM,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AAGxD,UAAA,qBAAqB,EAAE,GAAG,YAAY;AAG1C,YAAM,iBAAiB,CAAC,KAAU,MAAgB,UAAoB;AAChE,YAAA,KAAK,WAAW,EAAG,QAAO,EAAE,GAAG,KAAK,GAAG,MAAM;AAEjD,cAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,cAAM,aAAY,2BAAM,WAAU,CAAC;AAE5B,eAAA;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,GAAG,eAAe,WAAW,MAAM,KAAK;AAAA,QAChD;AAAA,MACF;AAGqB,2BAAA,eAAe,oBAAoB,YAAY,MAAM;AAE1E,YAAM,sBAAsB;AAAA,QAC1B,UAAU,KAAK;AAAA,QACf,WAAW;AAAA;AAAA,QAEX,sBAAsB;AAAA,MACvB,CAAA,EAAE,OAAO;AAAA,aACH,OAAY;AACnB,cAAQ,MAAM,KAAK;AACbC,oBAAAA,MAAA,OAAM,WAAM,SAAN,mBAAY,MAAM;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,CAAC,YAAY,qBAAqB,EAAE,WAAsB;AACnE;;"}
1
+ {"version":3,"file":"useUserProjectConfig.cjs.js","sources":["../../../../src/hooks/useUserProjectConfig.ts"],"sourcesContent":["import { useGetCurrentUserQuery, useSetFrontendPreferencesMutation } from '@shared/api'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n selectors?: (string | undefined | null)[]\n init?: any\n}\n\ntype Result = [\n Record<string, any>,\n (config: Record<string, any>) => Promise<void>,\n { isSuccess: boolean },\n]\n\nexport const useUserProjectConfig = ({ selectors = [], init }: Props): Result => {\n // GET CURRENT USER\n const { data: user, isSuccess } = useGetCurrentUserQuery()\n // extract out columns config for project\n const { data: { frontendPreferences: preferences = {} } = {} } = user || {}\n\n const configPath = selectors\n .filter((selector) => selector !== undefined && selector !== null)\n .map((selector) => selector.replace(/\\s/g, ''))\n // Start with the root preferences\n let userConfig = preferences\n for (const selector of configPath) {\n userConfig = userConfig?.[selector]\n }\n\n userConfig = userConfig || init || {}\n\n const [updateUserPreferences] = useSetFrontendPreferencesMutation()\n\n // update the user preferences when the columns config changes\n const updateProjectConfig = async (config: Record<string, any>) => {\n try {\n if (!user?.name) throw { data: { detail: 'User not found' } }\n\n // Set the updated config at the correct nested path using only selectors\n let updatedPreferences = { ...preferences }\n\n // Helper function to set nested value\n const setNestedValue = (obj: any, path: string[], value: any): any => {\n if (path.length === 0) return { ...obj, ...value }\n\n const [first, ...rest] = path\n const nestedObj = obj?.[first] || {}\n\n return {\n ...obj,\n [first]: setNestedValue(nestedObj, rest, value),\n }\n }\n\n // Use the helper to set the value at the correct path\n updatedPreferences = setNestedValue(updatedPreferences, configPath, config)\n\n await updateUserPreferences({\n userName: user.name,\n patchData: updatedPreferences,\n // @ts-expect-error - disableInvalidations is not in the api\n disableInvalidations: true,\n }).unwrap()\n } catch (error: any) {\n console.error(error)\n toast.error(error.data?.detail)\n }\n }\n\n return [userConfig, updateProjectConfig, { isSuccess: isSuccess }]\n}\n"],"names":["useGetCurrentUserQuery","useSetFrontendPreferencesMutation","toast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,uBAAuB,CAAC,EAAE,YAAY,CAAC,GAAG,WAA0B;AAE/E,QAAM,EAAE,MAAM,MAAM,UAAA,IAAcA,SAAAA,uBAAuB;AAEzD,QAAM,EAAE,MAAM,EAAE,qBAAqB,cAAc,CAAA,MAAO,CAAA,MAAO,QAAQ,CAAC;AAE1E,QAAM,aAAa,UAChB,OAAO,CAAC,aAAa,aAAa,UAAa,aAAa,IAAI,EAChE,IAAI,CAAC,aAAa,SAAS,QAAQ,OAAO,EAAE,CAAC;AAEhD,MAAI,aAAa;AACjB,aAAW,YAAY,YAAY;AACjC,iBAAa,yCAAa;AAAA,EAAQ;AAGvB,eAAA,cAAc,QAAQ,CAAC;AAE9B,QAAA,CAAC,qBAAqB,IAAIC,8CAAkC;AAG5D,QAAA,sBAAsB,OAAO,WAAgC;;AAC7D,QAAA;AACE,UAAA,EAAC,6BAAM,MAAM,OAAM,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AAGxD,UAAA,qBAAqB,EAAE,GAAG,YAAY;AAG1C,YAAM,iBAAiB,CAAC,KAAU,MAAgB,UAAoB;AAChE,YAAA,KAAK,WAAW,EAAG,QAAO,EAAE,GAAG,KAAK,GAAG,MAAM;AAEjD,cAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,cAAM,aAAY,2BAAM,WAAU,CAAC;AAE5B,eAAA;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,GAAG,eAAe,WAAW,MAAM,KAAK;AAAA,QAChD;AAAA,MACF;AAGqB,2BAAA,eAAe,oBAAoB,YAAY,MAAM;AAE1E,YAAM,sBAAsB;AAAA,QAC1B,UAAU,KAAK;AAAA,QACf,WAAW;AAAA;AAAA,QAEX,sBAAsB;AAAA,MACvB,CAAA,EAAE,OAAO;AAAA,aACH,OAAY;AACnB,cAAQ,MAAM,KAAK;AACbC,oBAAAA,MAAA,OAAM,WAAM,SAAN,mBAAY,MAAM;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,CAAC,YAAY,qBAAqB,EAAE,WAAsB;AACnE;;"}
@@ -65,6 +65,8 @@ import { useSetFrontendPreferencesMutation } from "../api/queries/users/updateUs
65
65
  import "../api/queries/watchers/getWatchers.es.js";
66
66
  import "../api/queries/permissions/getPermissions.es.js";
67
67
  import "../api/queries/grouping/getGrouping.es.js";
68
+ import "../api/queries/versions/updateVersions.es.js";
69
+ import "../api/queries/products/createProduct.es.js";
68
70
  import { toast } from "react-toastify";
69
71
  const useUserProjectConfig = ({ selectors = [], init }) => {
70
72
  const { data: user, isSuccess } = useGetCurrentUserQuery();
@@ -1 +1 @@
1
- {"version":3,"file":"useUserProjectConfig.es.js","sources":["../../../../src/hooks/useUserProjectConfig.ts"],"sourcesContent":["import { useGetCurrentUserQuery, useSetFrontendPreferencesMutation } from '@shared/api'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n selectors?: (string | undefined | null)[]\n init?: any\n}\n\ntype Result = [\n Record<string, any>,\n (config: Record<string, any>) => Promise<void>,\n { isSuccess: boolean },\n]\n\nexport const useUserProjectConfig = ({ selectors = [], init }: Props): Result => {\n // GET CURRENT USER\n const { data: user, isSuccess } = useGetCurrentUserQuery()\n // extract out columns config for project\n const { data: { frontendPreferences: preferences = {} } = {} } = user || {}\n\n const configPath = selectors\n .filter((selector) => selector !== undefined && selector !== null)\n .map((selector) => selector.replace(/\\s/g, ''))\n // Start with the root preferences\n let userConfig = preferences\n for (const selector of configPath) {\n userConfig = userConfig?.[selector]\n }\n\n userConfig = userConfig || init || {}\n\n const [updateUserPreferences] = useSetFrontendPreferencesMutation()\n\n // update the user preferences when the columns config changes\n const updateProjectConfig = async (config: Record<string, any>) => {\n try {\n if (!user?.name) throw { data: { detail: 'User not found' } }\n\n // Set the updated config at the correct nested path using only selectors\n let updatedPreferences = { ...preferences }\n\n // Helper function to set nested value\n const setNestedValue = (obj: any, path: string[], value: any): any => {\n if (path.length === 0) return { ...obj, ...value }\n\n const [first, ...rest] = path\n const nestedObj = obj?.[first] || {}\n\n return {\n ...obj,\n [first]: setNestedValue(nestedObj, rest, value),\n }\n }\n\n // Use the helper to set the value at the correct path\n updatedPreferences = setNestedValue(updatedPreferences, configPath, config)\n\n await updateUserPreferences({\n userName: user.name,\n patchData: updatedPreferences,\n // @ts-expect-error - disableInvalidations is not in the api\n disableInvalidations: true,\n }).unwrap()\n } catch (error: any) {\n console.error(error)\n toast.error(error.data?.detail)\n }\n }\n\n return [userConfig, updateProjectConfig, { isSuccess: isSuccess }]\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,uBAAuB,CAAC,EAAE,YAAY,CAAC,GAAG,WAA0B;AAE/E,QAAM,EAAE,MAAM,MAAM,UAAA,IAAc,uBAAuB;AAEzD,QAAM,EAAE,MAAM,EAAE,qBAAqB,cAAc,CAAA,MAAO,CAAA,MAAO,QAAQ,CAAC;AAE1E,QAAM,aAAa,UAChB,OAAO,CAAC,aAAa,aAAa,UAAa,aAAa,IAAI,EAChE,IAAI,CAAC,aAAa,SAAS,QAAQ,OAAO,EAAE,CAAC;AAEhD,MAAI,aAAa;AACjB,aAAW,YAAY,YAAY;AACjC,iBAAa,yCAAa;AAAA,EAAQ;AAGvB,eAAA,cAAc,QAAQ,CAAC;AAE9B,QAAA,CAAC,qBAAqB,IAAI,kCAAkC;AAG5D,QAAA,sBAAsB,OAAO,WAAgC;;AAC7D,QAAA;AACE,UAAA,EAAC,6BAAM,MAAM,OAAM,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AAGxD,UAAA,qBAAqB,EAAE,GAAG,YAAY;AAG1C,YAAM,iBAAiB,CAAC,KAAU,MAAgB,UAAoB;AAChE,YAAA,KAAK,WAAW,EAAG,QAAO,EAAE,GAAG,KAAK,GAAG,MAAM;AAEjD,cAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,cAAM,aAAY,2BAAM,WAAU,CAAC;AAE5B,eAAA;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,GAAG,eAAe,WAAW,MAAM,KAAK;AAAA,QAChD;AAAA,MACF;AAGqB,2BAAA,eAAe,oBAAoB,YAAY,MAAM;AAE1E,YAAM,sBAAsB;AAAA,QAC1B,UAAU,KAAK;AAAA,QACf,WAAW;AAAA;AAAA,QAEX,sBAAsB;AAAA,MACvB,CAAA,EAAE,OAAO;AAAA,aACH,OAAY;AACnB,cAAQ,MAAM,KAAK;AACb,YAAA,OAAM,WAAM,SAAN,mBAAY,MAAM;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,CAAC,YAAY,qBAAqB,EAAE,WAAsB;AACnE;"}
1
+ {"version":3,"file":"useUserProjectConfig.es.js","sources":["../../../../src/hooks/useUserProjectConfig.ts"],"sourcesContent":["import { useGetCurrentUserQuery, useSetFrontendPreferencesMutation } from '@shared/api'\nimport { toast } from 'react-toastify'\n\ntype Props = {\n selectors?: (string | undefined | null)[]\n init?: any\n}\n\ntype Result = [\n Record<string, any>,\n (config: Record<string, any>) => Promise<void>,\n { isSuccess: boolean },\n]\n\nexport const useUserProjectConfig = ({ selectors = [], init }: Props): Result => {\n // GET CURRENT USER\n const { data: user, isSuccess } = useGetCurrentUserQuery()\n // extract out columns config for project\n const { data: { frontendPreferences: preferences = {} } = {} } = user || {}\n\n const configPath = selectors\n .filter((selector) => selector !== undefined && selector !== null)\n .map((selector) => selector.replace(/\\s/g, ''))\n // Start with the root preferences\n let userConfig = preferences\n for (const selector of configPath) {\n userConfig = userConfig?.[selector]\n }\n\n userConfig = userConfig || init || {}\n\n const [updateUserPreferences] = useSetFrontendPreferencesMutation()\n\n // update the user preferences when the columns config changes\n const updateProjectConfig = async (config: Record<string, any>) => {\n try {\n if (!user?.name) throw { data: { detail: 'User not found' } }\n\n // Set the updated config at the correct nested path using only selectors\n let updatedPreferences = { ...preferences }\n\n // Helper function to set nested value\n const setNestedValue = (obj: any, path: string[], value: any): any => {\n if (path.length === 0) return { ...obj, ...value }\n\n const [first, ...rest] = path\n const nestedObj = obj?.[first] || {}\n\n return {\n ...obj,\n [first]: setNestedValue(nestedObj, rest, value),\n }\n }\n\n // Use the helper to set the value at the correct path\n updatedPreferences = setNestedValue(updatedPreferences, configPath, config)\n\n await updateUserPreferences({\n userName: user.name,\n patchData: updatedPreferences,\n // @ts-expect-error - disableInvalidations is not in the api\n disableInvalidations: true,\n }).unwrap()\n } catch (error: any) {\n console.error(error)\n toast.error(error.data?.detail)\n }\n }\n\n return [userConfig, updateProjectConfig, { isSuccess: isSuccess }]\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,uBAAuB,CAAC,EAAE,YAAY,CAAC,GAAG,WAA0B;AAE/E,QAAM,EAAE,MAAM,MAAM,UAAA,IAAc,uBAAuB;AAEzD,QAAM,EAAE,MAAM,EAAE,qBAAqB,cAAc,CAAA,MAAO,CAAA,MAAO,QAAQ,CAAC;AAE1E,QAAM,aAAa,UAChB,OAAO,CAAC,aAAa,aAAa,UAAa,aAAa,IAAI,EAChE,IAAI,CAAC,aAAa,SAAS,QAAQ,OAAO,EAAE,CAAC;AAEhD,MAAI,aAAa;AACjB,aAAW,YAAY,YAAY;AACjC,iBAAa,yCAAa;AAAA,EAAQ;AAGvB,eAAA,cAAc,QAAQ,CAAC;AAE9B,QAAA,CAAC,qBAAqB,IAAI,kCAAkC;AAG5D,QAAA,sBAAsB,OAAO,WAAgC;;AAC7D,QAAA;AACE,UAAA,EAAC,6BAAM,MAAM,OAAM,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AAGxD,UAAA,qBAAqB,EAAE,GAAG,YAAY;AAG1C,YAAM,iBAAiB,CAAC,KAAU,MAAgB,UAAoB;AAChE,YAAA,KAAK,WAAW,EAAG,QAAO,EAAE,GAAG,KAAK,GAAG,MAAM;AAEjD,cAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,cAAM,aAAY,2BAAM,WAAU,CAAC;AAE5B,eAAA;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,GAAG,eAAe,WAAW,MAAM,KAAK;AAAA,QAChD;AAAA,MACF;AAGqB,2BAAA,eAAe,oBAAoB,YAAY,MAAM;AAE1E,YAAM,sBAAsB;AAAA,QAC1B,UAAU,KAAK;AAAA,QACf,WAAW;AAAA;AAAA,QAEX,sBAAsB;AAAA,MACvB,CAAA,EAAE,OAAO;AAAA,aACH,OAAY;AACnB,cAAQ,MAAM,KAAK;AACb,YAAA,OAAM,WAAM,SAAN,mBAAY,MAAM;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,CAAC,YAAY,qBAAqB,EAAE,WAAsB;AACnE;"}
@@ -2,6 +2,7 @@
2
2
  const productTypes = {
3
3
  image: { name: "image", icon: "imagesmode" },
4
4
  render: { name: "render", icon: "photo_library" },
5
+ review: { name: "review", icon: "photo_library" },
5
6
  plate: { name: "plate", icon: "camera_roll" },
6
7
  camera: { name: "camera", icon: "videocam" },
7
8
  model: { name: "model", icon: "language" },
@@ -1 +1 @@
1
- {"version":3,"file":"productTypes.cjs.js","sources":["../../../../src/util/productTypes.ts"],"sourcesContent":["type ProductTypes = {\n [key: string]: { name: string; icon: string }\n}\n\nconst productTypes: ProductTypes = {\n image: { name: 'image', icon: 'imagesmode' },\n render: { name: 'render', icon: 'photo_library' },\n plate: { name: 'plate', icon: 'camera_roll' },\n camera: { name: 'camera', icon: 'videocam' },\n model: { name: 'model', icon: 'language' },\n texture: { name: 'texture', icon: 'texture' },\n look: { name: 'look', icon: 'ev_shadow' },\n rig: { name: 'rig', icon: 'accessibility' },\n animation: { name: 'animation', icon: 'directions_run' },\n cache: { name: 'cache', icon: 'animation' },\n layout: { name: 'layout', icon: 'nature_people' },\n setdress: { name: 'setdress', icon: 'forest' },\n groom: { name: 'groom', icon: 'content_cut' },\n matchmove: { name: 'matchmove', icon: 'switch_video' },\n vdbcache: { name: 'vdbcache', icon: 'local_fire_department' },\n lightrig: { name: 'lightrig', icon: 'wb_incandescent' },\n lut: { name: 'lut', icon: 'opacity' },\n workfile: { name: 'workfile', icon: 'home_repair_service' },\n}\n\nexport default productTypes\n"],"names":[],"mappings":";AAIA,MAAM,eAA6B;AAAA,EACjC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAa;AAAA,EAC3C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,QAAQ,EAAE,MAAM,UAAU,MAAM,WAAW;AAAA,EAC3C,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,EACzC,SAAS,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,EACxC,KAAK,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EAC1C,WAAW,EAAE,MAAM,aAAa,MAAM,iBAAiB;AAAA,EACvD,OAAO,EAAE,MAAM,SAAS,MAAM,YAAY;AAAA,EAC1C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,UAAU,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,EAC7C,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,WAAW,EAAE,MAAM,aAAa,MAAM,eAAe;AAAA,EACrD,UAAU,EAAE,MAAM,YAAY,MAAM,wBAAwB;AAAA,EAC5D,UAAU,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EACtD,KAAK,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EACpC,UAAU,EAAE,MAAM,YAAY,MAAM,sBAAsB;AAC5D;;"}
1
+ {"version":3,"file":"productTypes.cjs.js","sources":["../../../../src/util/productTypes.ts"],"sourcesContent":["type ProductTypes = {\n [key: string]: { name: string; icon: string }\n}\n\nconst productTypes: ProductTypes = {\n image: { name: 'image', icon: 'imagesmode' },\n render: { name: 'render', icon: 'photo_library' },\n review: { name: 'review', icon: 'photo_library' },\n plate: { name: 'plate', icon: 'camera_roll' },\n camera: { name: 'camera', icon: 'videocam' },\n model: { name: 'model', icon: 'language' },\n texture: { name: 'texture', icon: 'texture' },\n look: { name: 'look', icon: 'ev_shadow' },\n rig: { name: 'rig', icon: 'accessibility' },\n animation: { name: 'animation', icon: 'directions_run' },\n cache: { name: 'cache', icon: 'animation' },\n layout: { name: 'layout', icon: 'nature_people' },\n setdress: { name: 'setdress', icon: 'forest' },\n groom: { name: 'groom', icon: 'content_cut' },\n matchmove: { name: 'matchmove', icon: 'switch_video' },\n vdbcache: { name: 'vdbcache', icon: 'local_fire_department' },\n lightrig: { name: 'lightrig', icon: 'wb_incandescent' },\n lut: { name: 'lut', icon: 'opacity' },\n workfile: { name: 'workfile', icon: 'home_repair_service' },\n}\n\nexport default productTypes\n"],"names":[],"mappings":";AAIA,MAAM,eAA6B;AAAA,EACjC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAa;AAAA,EAC3C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,QAAQ,EAAE,MAAM,UAAU,MAAM,WAAW;AAAA,EAC3C,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,EACzC,SAAS,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,EACxC,KAAK,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EAC1C,WAAW,EAAE,MAAM,aAAa,MAAM,iBAAiB;AAAA,EACvD,OAAO,EAAE,MAAM,SAAS,MAAM,YAAY;AAAA,EAC1C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,UAAU,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,EAC7C,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,WAAW,EAAE,MAAM,aAAa,MAAM,eAAe;AAAA,EACrD,UAAU,EAAE,MAAM,YAAY,MAAM,wBAAwB;AAAA,EAC5D,UAAU,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EACtD,KAAK,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EACpC,UAAU,EAAE,MAAM,YAAY,MAAM,sBAAsB;AAC5D;;"}
@@ -1,6 +1,7 @@
1
1
  const productTypes = {
2
2
  image: { name: "image", icon: "imagesmode" },
3
3
  render: { name: "render", icon: "photo_library" },
4
+ review: { name: "review", icon: "photo_library" },
4
5
  plate: { name: "plate", icon: "camera_roll" },
5
6
  camera: { name: "camera", icon: "videocam" },
6
7
  model: { name: "model", icon: "language" },
@@ -1 +1 @@
1
- {"version":3,"file":"productTypes.es.js","sources":["../../../../src/util/productTypes.ts"],"sourcesContent":["type ProductTypes = {\n [key: string]: { name: string; icon: string }\n}\n\nconst productTypes: ProductTypes = {\n image: { name: 'image', icon: 'imagesmode' },\n render: { name: 'render', icon: 'photo_library' },\n plate: { name: 'plate', icon: 'camera_roll' },\n camera: { name: 'camera', icon: 'videocam' },\n model: { name: 'model', icon: 'language' },\n texture: { name: 'texture', icon: 'texture' },\n look: { name: 'look', icon: 'ev_shadow' },\n rig: { name: 'rig', icon: 'accessibility' },\n animation: { name: 'animation', icon: 'directions_run' },\n cache: { name: 'cache', icon: 'animation' },\n layout: { name: 'layout', icon: 'nature_people' },\n setdress: { name: 'setdress', icon: 'forest' },\n groom: { name: 'groom', icon: 'content_cut' },\n matchmove: { name: 'matchmove', icon: 'switch_video' },\n vdbcache: { name: 'vdbcache', icon: 'local_fire_department' },\n lightrig: { name: 'lightrig', icon: 'wb_incandescent' },\n lut: { name: 'lut', icon: 'opacity' },\n workfile: { name: 'workfile', icon: 'home_repair_service' },\n}\n\nexport default productTypes\n"],"names":[],"mappings":"AAIA,MAAM,eAA6B;AAAA,EACjC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAa;AAAA,EAC3C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,QAAQ,EAAE,MAAM,UAAU,MAAM,WAAW;AAAA,EAC3C,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,EACzC,SAAS,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,EACxC,KAAK,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EAC1C,WAAW,EAAE,MAAM,aAAa,MAAM,iBAAiB;AAAA,EACvD,OAAO,EAAE,MAAM,SAAS,MAAM,YAAY;AAAA,EAC1C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,UAAU,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,EAC7C,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,WAAW,EAAE,MAAM,aAAa,MAAM,eAAe;AAAA,EACrD,UAAU,EAAE,MAAM,YAAY,MAAM,wBAAwB;AAAA,EAC5D,UAAU,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EACtD,KAAK,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EACpC,UAAU,EAAE,MAAM,YAAY,MAAM,sBAAsB;AAC5D;"}
1
+ {"version":3,"file":"productTypes.es.js","sources":["../../../../src/util/productTypes.ts"],"sourcesContent":["type ProductTypes = {\n [key: string]: { name: string; icon: string }\n}\n\nconst productTypes: ProductTypes = {\n image: { name: 'image', icon: 'imagesmode' },\n render: { name: 'render', icon: 'photo_library' },\n review: { name: 'review', icon: 'photo_library' },\n plate: { name: 'plate', icon: 'camera_roll' },\n camera: { name: 'camera', icon: 'videocam' },\n model: { name: 'model', icon: 'language' },\n texture: { name: 'texture', icon: 'texture' },\n look: { name: 'look', icon: 'ev_shadow' },\n rig: { name: 'rig', icon: 'accessibility' },\n animation: { name: 'animation', icon: 'directions_run' },\n cache: { name: 'cache', icon: 'animation' },\n layout: { name: 'layout', icon: 'nature_people' },\n setdress: { name: 'setdress', icon: 'forest' },\n groom: { name: 'groom', icon: 'content_cut' },\n matchmove: { name: 'matchmove', icon: 'switch_video' },\n vdbcache: { name: 'vdbcache', icon: 'local_fire_department' },\n lightrig: { name: 'lightrig', icon: 'wb_incandescent' },\n lut: { name: 'lut', icon: 'opacity' },\n workfile: { name: 'workfile', icon: 'home_repair_service' },\n}\n\nexport default productTypes\n"],"names":[],"mappings":"AAIA,MAAM,eAA6B;AAAA,EACjC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAa;AAAA,EAC3C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,QAAQ,EAAE,MAAM,UAAU,MAAM,WAAW;AAAA,EAC3C,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,EACzC,SAAS,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,EACxC,KAAK,EAAE,MAAM,OAAO,MAAM,gBAAgB;AAAA,EAC1C,WAAW,EAAE,MAAM,aAAa,MAAM,iBAAiB;AAAA,EACvD,OAAO,EAAE,MAAM,SAAS,MAAM,YAAY;AAAA,EAC1C,QAAQ,EAAE,MAAM,UAAU,MAAM,gBAAgB;AAAA,EAChD,UAAU,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,EAC7C,OAAO,EAAE,MAAM,SAAS,MAAM,cAAc;AAAA,EAC5C,WAAW,EAAE,MAAM,aAAa,MAAM,eAAe;AAAA,EACrD,UAAU,EAAE,MAAM,YAAY,MAAM,wBAAwB;AAAA,EAC5D,UAAU,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,EACtD,KAAK,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,EACpC,UAAU,EAAE,MAAM,YAAY,MAAM,sBAAsB;AAC5D;"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function extractVersionFromFilename(filename) {
4
+ const nameWithoutExt = filename.replace(/\.[^/.]+$/, "");
5
+ const patterns = [
6
+ // Pattern: file_v001, file_v1, file_v01 (with 'v' prefix)
7
+ /.*[_\-\s]v(\d+)(?:[_\-\s].*|$)/i,
8
+ // Pattern: file_001, file_01, file_1 (at end of filename)
9
+ /.*[_\-\s](\d+)$/,
10
+ // Pattern: file_001_name, file_1_description (version in middle)
11
+ /.*[_\-\s](\d{2,})(?:[_\-\s].*)/,
12
+ // Pattern: 001_file, 1_file (at start of filename)
13
+ /^(\d+)[_\-\s]/,
14
+ // Pattern: fileV1, fileV001 (no separator)
15
+ /.*v(\d+)$/i,
16
+ // Pattern: file1, file001 (number at end, no separator)
17
+ /.*?(\d{2,})$/
18
+ ];
19
+ for (const pattern of patterns) {
20
+ const match = nameWithoutExt.match(pattern);
21
+ if (match) {
22
+ const versionStr = match[1];
23
+ const version = parseInt(versionStr, 10);
24
+ if (!isNaN(version) && version > 0) {
25
+ return version;
26
+ }
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ exports.extractVersionFromFilename = extractVersionFromFilename;
32
+ //# sourceMappingURL=extractVersionFromFilename.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractVersionFromFilename.cjs.js","sources":["../../../../src/utils/extractVersionFromFilename.ts"],"sourcesContent":["/**\n * Extracts version number from filename using common versioning patterns\n * Supports patterns like: file_001, file_v1, file_v001_name, file_name_1, etc.\n */\nexport function extractVersionFromFilename(filename: string): number | null {\n // Remove file extension for cleaner parsing\n const nameWithoutExt = filename.replace(/\\.[^/.]+$/, '')\n\n // Define version patterns in order of specificity\n const patterns = [\n // Pattern: file_v001, file_v1, file_v01 (with 'v' prefix)\n /.*[_\\-\\s]v(\\d+)(?:[_\\-\\s].*|$)/i,\n\n // Pattern: file_001, file_01, file_1 (at end of filename)\n /.*[_\\-\\s](\\d+)$/,\n\n // Pattern: file_001_name, file_1_description (version in middle)\n /.*[_\\-\\s](\\d{2,})(?:[_\\-\\s].*)/,\n\n // Pattern: 001_file, 1_file (at start of filename)\n /^(\\d+)[_\\-\\s]/,\n\n // Pattern: fileV1, fileV001 (no separator)\n /.*v(\\d+)$/i,\n\n // Pattern: file1, file001 (number at end, no separator)\n /.*?(\\d{2,})$/,\n ]\n\n for (const pattern of patterns) {\n const match = nameWithoutExt.match(pattern)\n if (match) {\n const versionStr = match[1]\n const version = parseInt(versionStr, 10)\n\n // Only return valid versions (positive numbers)\n if (!isNaN(version) && version > 0) {\n return version\n }\n }\n }\n\n return null\n}\n"],"names":[],"mappings":";;AAIO,SAAS,2BAA2B,UAAiC;AAE1E,QAAM,iBAAiB,SAAS,QAAQ,aAAa,EAAE;AAGvD,QAAM,WAAW;AAAA;AAAA,IAEf;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA,EACF;AAEA,aAAW,WAAW,UAAU;AACxB,UAAA,QAAQ,eAAe,MAAM,OAAO;AAC1C,QAAI,OAAO;AACH,YAAA,aAAa,MAAM,CAAC;AACpB,YAAA,UAAU,SAAS,YAAY,EAAE;AAGvC,UAAI,CAAC,MAAM,OAAO,KAAK,UAAU,GAAG;AAC3B,eAAA;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAGK,SAAA;AACT;;"}