synapse-react-client 4.0.45 → 4.0.46

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 (319) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +1 -0
  3. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
  4. package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
  5. package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
  6. package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
  7. package/dist/aridhia-queries/index.d.ts +1 -0
  8. package/dist/aridhia-queries/index.d.ts.map +1 -1
  9. package/dist/aridhia-queries/index.js +11 -10
  10. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
  11. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
  12. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
  13. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
  14. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
  16. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  17. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  27. package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
  28. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  29. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
  30. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  31. package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
  32. package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
  33. package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
  34. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
  35. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
  36. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
  37. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  38. package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
  39. package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
  40. package/dist/components/Authentication/LastLoginInfo.js +1 -1
  41. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  42. package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
  43. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  44. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
  45. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  46. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
  47. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  48. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
  49. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  50. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
  51. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
  52. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  53. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
  54. package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
  55. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  56. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  57. package/dist/components/ComponentCollapse.js +2 -1
  58. package/dist/components/ComponentCollapse.js.map +1 -1
  59. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  60. package/dist/components/DataGrid/SynapseGrid.js +231 -219
  61. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  62. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  63. package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
  64. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  65. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  66. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
  67. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  68. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
  69. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  70. package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
  71. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
  72. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  73. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
  74. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  75. package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
  76. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  77. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +5 -5
  78. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  79. package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
  80. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  81. package/dist/components/DataGrid/utils/columnFactory.js +1 -1
  82. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  83. package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
  84. package/dist/components/DataGrid/utils/splitPatch.js +22 -13
  85. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  86. package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
  87. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  88. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
  89. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +2 -1
  90. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  91. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
  92. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
  93. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  94. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
  95. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  96. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  97. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  98. package/dist/components/EntityFinder/EntityFinder.js +4 -4
  99. package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
  100. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  101. package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
  102. package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
  103. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  104. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +1 -1
  105. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  106. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  107. package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
  108. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  109. package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
  110. package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
  111. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  112. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
  113. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
  114. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  115. package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
  116. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  117. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
  118. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  119. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
  120. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
  121. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
  122. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  123. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
  124. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  125. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
  126. package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
  127. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
  128. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
  129. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
  130. package/dist/components/FormTemplateEditor/FormStructurePanel.js +1 -1
  131. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
  132. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
  133. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
  134. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
  135. package/dist/components/FormTemplateEditor/StepCard.js +15 -10
  136. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
  137. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
  138. package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
  139. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
  140. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
  141. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
  142. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
  143. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +45 -45
  144. package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
  145. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  146. package/dist/components/GenericCard/TableRowGenericCard.js +1 -1
  147. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  148. package/dist/components/HelpPopover/HelpPopover.js +1 -1
  149. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  150. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  151. package/dist/components/IconSvg/IconSvg.js +154 -47
  152. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  153. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
  154. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
  155. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  156. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  157. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
  158. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  159. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
  160. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
  161. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
  162. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
  163. package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
  164. package/dist/components/Markdown/MarkdownCollapse.js +3 -1
  165. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  166. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
  167. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  168. package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
  169. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  170. package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
  171. package/dist/components/PortalList/PortalCard.js +6 -5
  172. package/dist/components/PortalList/PortalCard.js.map +1 -1
  173. package/dist/components/PortalList/PortalList.js +4 -4
  174. package/dist/components/PortalList/PortalList.js.map +1 -1
  175. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
  176. package/dist/components/QueryBuilder/FilterConditionRow.js +4 -4
  177. package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
  178. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  179. package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
  180. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  181. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +1 -1
  182. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  183. package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
  184. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  185. package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
  186. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  187. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
  188. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  189. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  190. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  191. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  192. package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
  193. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  194. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
  195. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
  196. package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
  197. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  198. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
  199. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  200. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
  201. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
  202. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  203. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
  204. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  205. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
  206. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  207. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
  208. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
  209. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  210. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
  211. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  212. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
  213. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  214. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
  215. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
  216. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  217. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
  218. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  219. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +140 -140
  220. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  221. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  222. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  223. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  224. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  225. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  226. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  227. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +9 -9
  228. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  229. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
  230. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
  231. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  232. package/dist/components/TanStackTable/ColumnHeader.js +1 -1
  233. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  234. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
  235. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  236. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
  237. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
  238. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  239. package/dist/components/Webhook/WebhookDashboard.js +1 -1
  240. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  241. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  242. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  243. package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
  244. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  245. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
  246. package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
  247. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
  248. package/dist/components/dataaccess/FormTemplateTable.js +6 -6
  249. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
  250. package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
  251. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  252. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
  253. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  254. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  255. package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
  256. package/dist/components/download_list/DownloadDetails.js +12 -10
  257. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  258. package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
  259. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  260. package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
  261. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  262. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  263. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  264. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  265. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  266. package/dist/components/error/ErrorChip.d.ts.map +1 -1
  267. package/dist/components/error/ErrorChip.js +2 -1
  268. package/dist/components/error/ErrorChip.js.map +1 -1
  269. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
  270. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
  271. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  272. package/dist/components/widgets/facet-nav/FacetNavPanel.js +1 -1
  273. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  274. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  275. package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
  276. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  277. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
  278. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  279. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
  280. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  281. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
  282. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  283. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
  284. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  285. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
  286. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
  287. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
  288. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
  289. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
  290. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
  291. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
  292. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
  293. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
  294. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  295. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +8 -0
  296. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  297. package/dist/mocks/msw/handlers/aridhiaHandlers.js +52 -41
  298. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  299. package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
  300. package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
  301. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  302. package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
  303. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  304. package/dist/mocks/msw/server.d.ts.map +1 -1
  305. package/dist/mocks/msw/server.js +4 -2
  306. package/dist/mocks/msw/server.js.map +1 -1
  307. package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
  308. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  309. package/dist/theme/DefaultTheme.d.ts.map +1 -1
  310. package/dist/theme/DefaultTheme.js +4 -1
  311. package/dist/theme/DefaultTheme.js.map +1 -1
  312. package/dist/tsconfig.build.tsbuildinfo +1 -1
  313. package/dist/utils/APIConstants.d.ts.map +1 -1
  314. package/dist/utils/APIConstants.js.map +1 -1
  315. package/dist/utils/AppUtils/AppUtils.js +1 -1
  316. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  317. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  318. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  319. package/package.json +7 -6
@@ -1,49 +1,50 @@
1
- import { ENTITY as e, ENTITY_BUNDLE_V2 as t, ENTITY_HEADERS as n, ENTITY_ID as r, ENTITY_ID_VERSION as i, ENTITY_ID_VERSIONS as a, ENTITY_JSON as o, ENTITY_SCHEMA_BINDING as s } from "../../../utils/APIConstants.js";
2
- import { normalizeSynPrefix as c } from "../../../utils/functions/EntityTypeUtils.js";
1
+ import { ENTITY as e, ENTITY_BUNDLE_V2 as t, ENTITY_HEADERS as n, ENTITY_ID as r, ENTITY_ID_VERSION as i, ENTITY_ID_VERSIONS as a, ENTITY_JSON as o, ENTITY_SCHEMA_BINDING as s, ENTITY_SCHEMA_VALIDATION as c } from "../../../utils/APIConstants.js";
2
+ import { normalizeSynPrefix as l } from "../../../utils/functions/EntityTypeUtils.js";
3
3
  import "../../entity/mockEntity.js";
4
- import { mockSchemaBinding as l } from "../../mockSchema.js";
5
- import u, { mockProjectsEntityData as d } from "../../entity/index.js";
6
- import { mockSynapseStorageUploadDestination as f, mockUploadDestinations as p } from "../../mock_upload_destination.js";
7
- import { uniqueId as m } from "lodash-es";
8
- import { HttpResponse as h, http as g } from "msw";
4
+ import { mockSchemaBinding as u, mockSchemaValidationResults as d } from "../../mockSchema.js";
5
+ import f, { mockProjectsEntityData as p } from "../../entity/index.js";
6
+ import { mockOpenRestrictionInformation as m } from "../../mock_has_access_data.js";
7
+ import { mockSynapseStorageUploadDestination as h, mockUploadDestinations as g } from "../../mock_upload_destination.js";
8
+ import { uniqueId as _ } from "lodash-es";
9
+ import { HttpResponse as v, http as y } from "msw";
9
10
  //#region src/mocks/msw/handlers/entityHandlers.ts
10
- function _(e) {
11
- let t = e.map(c);
12
- return u.filter((e) => t.includes(c(e.id)));
11
+ function b(e) {
12
+ let t = e.map(l);
13
+ return f.filter((e) => t.includes(l(e.id)));
13
14
  }
14
- function v(e) {
15
- let t = _([e]);
15
+ function x(e) {
16
+ let t = b([e]);
16
17
  if (t.length != 0) return t[0];
17
18
  }
18
- function y(e, n) {
19
- return g.post(`${e}${t(":entityId")}`, ({ params: e }) => {
19
+ function S(e, n) {
20
+ return y.post(`${e}${t(":entityId")}`, ({ params: e }) => {
20
21
  let t = 404, r = {
21
22
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
22
23
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
23
24
  };
24
25
  if (n) r = n, t = 200;
25
26
  else {
26
- let n = v(e.entityId);
27
+ let n = x(e.entityId);
27
28
  n?.bundle && (r = n.bundle, t = 200);
28
29
  }
29
- return h.json(r, { status: t });
30
+ return v.json(r, { status: t });
30
31
  });
31
32
  }
32
- function b(e, t) {
33
- return g.get(`${e}${o(":entityId")}`, () => {
33
+ function C(e, t) {
34
+ return y.get(`${e}${o(":entityId")}`, () => {
34
35
  let e = t;
35
- return h.json(e, { status: 200 });
36
+ return v.json(e, { status: 200 });
36
37
  });
37
38
  }
38
- function x(e, n) {
39
- return g.post(`${e}${t(":entityId", ":versionNumber")}`, ({ params: e }) => {
39
+ function w(e, n) {
40
+ return y.post(`${e}${t(":entityId", ":versionNumber")}`, ({ params: e }) => {
40
41
  let t = e.entityId, r = parseInt(e.versionNumber), i = 404, a = {
41
42
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
42
43
  reason: `Mock Service worker could not find a mock entity bundle with ID ${t}`
43
44
  };
44
45
  if (n) a = n, i = 200;
45
46
  else {
46
- let e = v(t);
47
+ let e = x(t);
47
48
  if (e) {
48
49
  let t = e.bundle;
49
50
  a = e.versions?.[r] ? {
@@ -52,127 +53,129 @@ function x(e, n) {
52
53
  } : t, i = 200;
53
54
  }
54
55
  }
55
- return h.json(a, { status: i });
56
+ return v.json(a, { status: i });
56
57
  });
57
58
  }
58
- var S = (t) => [
59
- g.post(`${t}${e}`, async ({ request: t }) => {
59
+ var T = (t) => [
60
+ y.post(`${t}${e}`, async ({ request: t }) => {
60
61
  let n = 200, r = await t.json(), i = {
61
62
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
62
63
  reason: "..."
63
64
  };
64
65
  return r ? r.name === "A $@*#$% terribly named Project" ? (i.reason = "Invalid project name", n = 403) : i = {
65
- id: m("syn"),
66
+ id: _("syn"),
66
67
  ...r
67
68
  } : (n = 400, i = {
68
69
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
69
70
  reason: `Mock service worker received the following malformed body for PUT ${e} : ${JSON.stringify(r)}`
70
- }), h.json(i, { status: n });
71
+ }), v.json(i, { status: n });
71
72
  }),
72
- g.get(`${t}${r(":entityId")}`, ({ params: e }) => {
73
+ y.get(`${t}${r(":entityId")}`, ({ params: e }) => {
73
74
  let t = 404, n = {
74
75
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
75
76
  reason: `Mock Service worker could not find a mock entity with ID ${e.entityId}`
76
- }, r = v(e.entityId);
77
- return r && (n = r.entity, t = 200), h.json(n, { status: t });
77
+ }, r = x(e.entityId);
78
+ return r && (n = r.entity, t = 200), v.json(n, { status: t });
78
79
  }),
79
- g.get(`${t}${a(":entityId")}`, ({ params: e }) => {
80
+ y.get(`${t}${a(":entityId")}`, ({ params: e }) => {
80
81
  let t = 404, n = {
81
82
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
82
83
  reason: `Mock Service worker could not find mock entity versions for ID ${e.entityId}`
83
- }, r = v(e.entityId);
84
- return r?.versionInfo && (n = { results: r.versionInfo }, t = 200), h.json(n, { status: t });
84
+ }, r = x(e.entityId);
85
+ return r?.versionInfo && (n = { results: r.versionInfo }, t = 200), v.json(n, { status: t });
85
86
  }),
86
- g.get(`${t}${i(":entityId", ":versionNumber")}`, ({ params: e }) => {
87
+ y.get(`${t}${i(":entityId", ":versionNumber")}`, ({ params: e }) => {
87
88
  let t = 404, n = e.entityId, r = e.versionNumber.toString(), i = parseInt(r), a = {
88
89
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
89
90
  reason: `Mock Service worker could not find a mock versioned entity with ID ${n}.${r}`
90
- }, o = v(e.entityId);
91
- return o?.versions?.[i] && (a = o.versions[i], t = 200), h.json(a, { status: t });
91
+ }, o = x(e.entityId);
92
+ return o?.versions?.[i] && (a = o.versions[i], t = 200), v.json(a, { status: t });
92
93
  }),
93
- y(t),
94
- x(t),
95
- g.get(`${t}${s(":entityId")}`, () => h.json(l, { status: 200 })),
96
- g.get(`${t}${o(":entityId")}`, ({ params: e }) => {
94
+ S(t),
95
+ w(t),
96
+ y.get(`${t}${s(":entityId")}`, () => v.json(u, { status: 200 })),
97
+ y.get(`${t}${c(":entityId")}`, () => v.json(d, { status: 200 })),
98
+ y.post(`${t}/repo/v1/restrictionInformation`, () => v.json(m, { status: 200 })),
99
+ y.get(`${t}${o(":entityId")}`, ({ params: e }) => {
97
100
  let t = 404, n = {
98
101
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
99
102
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
100
- }, r = v(e.entityId);
101
- return r?.json && (n = r.json, t = 200), h.json(n, { status: t });
103
+ }, r = x(e.entityId);
104
+ return r?.json && (n = r.json, t = 200), v.json(n, { status: t });
102
105
  }),
103
- g.post(`${t}${n}`, async ({ params: e, request: t }) => {
106
+ y.post(`${t}${n}`, async ({ params: e, request: t }) => {
104
107
  let n = 404, r = {
105
108
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
106
109
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
107
110
  }, i = (await t.json()).references.map((e) => {
108
- let t = v(e.targetId)?.entityHeader;
111
+ let t = x(e.targetId)?.entityHeader;
109
112
  if (t) return {
110
113
  ...t,
111
114
  id: e.targetId
112
115
  };
113
116
  }).filter((e) => !!e);
114
- return i && (r = { results: i }, n = 200), h.json(r, { status: n });
117
+ return i && (r = { results: i }, n = 200), v.json(r, { status: n });
115
118
  }),
116
- g.get(`${t}${r(":entityId")}/path`, ({ params: e }) => {
119
+ y.get(`${t}${r(":entityId")}/path`, ({ params: e }) => {
117
120
  let t = 404, n = {
118
121
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
119
122
  reason: `Mock Service worker could not find a mock entity path using ID ${e.entityId}`
120
- }, r = v(e.entityId);
121
- return r?.path && (n = r.path, t = 200), h.json(n, { status: t });
123
+ }, r = x(e.entityId);
124
+ return r?.path && (n = r.path, t = 200), v.json(n, { status: t });
122
125
  }),
123
- g.get(`${t}/file/v1/entity/:id/uploadDestination`, () => {
124
- let e = f;
125
- return h.json(e, { status: 200 });
126
+ y.get(`${t}/file/v1/entity/:id/uploadDestination`, () => {
127
+ let e = h;
128
+ return v.json(e, { status: 200 });
126
129
  }),
127
- g.get(`${t}/file/v1/entity/:id/uploadDestination/:storageLocationId`, ({ params: e }) => {
130
+ y.get(`${t}/file/v1/entity/:id/uploadDestination/:storageLocationId`, ({ params: e }) => {
128
131
  let t = 404, n = {
129
132
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
130
133
  reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${e.storageLocationId}`
131
- }, r = p.find((t) => Number(e.storageLocationId) === t.storageLocationId);
132
- return r && (n = r, t = 200), h.json(n, { status: t });
134
+ }, r = g.find((t) => Number(e.storageLocationId) === t.storageLocationId);
135
+ return r && (n = r, t = 200), v.json(n, { status: t });
133
136
  }),
134
- g.get(`${t}/repo/v1/projects`, () => {
135
- let e = { results: d.map((e) => ({
137
+ y.get(`${t}/repo/v1/projects`, () => {
138
+ let e = { results: p.map((e) => ({
136
139
  name: e.name,
137
140
  id: e.id,
138
141
  lastActivity: "2024-01-04T21:11:59.000Z",
139
142
  modifiedBy: parseInt(e.entity.modifiedBy),
140
143
  modifiedOn: e.entity.modifiedOn
141
144
  })) };
142
- return h.json(e, { status: 200 });
145
+ return v.json(e, { status: 200 });
143
146
  }),
144
- g.post(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
145
- let n = v(e.entityId), r, i;
147
+ y.post(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
148
+ let n = x(e.entityId), r, i;
146
149
  return n ? n.bundle?.accessControlList ? (r = 403, i = {
147
150
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
148
151
  reason: "Resource already has an ACL."
149
152
  }) : (i = await t.json(), r = 201) : (r = 404, i = {
150
153
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
151
154
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
152
- }), h.json(i, { status: r });
155
+ }), v.json(i, { status: r });
153
156
  }),
154
- g.put(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
155
- let n = v(e.entityId), r, i;
157
+ y.put(`${t}${r(":entityId")}/acl`, async ({ params: e, request: t }) => {
158
+ let n = x(e.entityId), r, i;
156
159
  return n ? n?.bundle?.accessControlList ? (i = await t.json(), r = 200) : (i = {
157
160
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
158
161
  reason: "Cannot update ACL for a resource which inherits its permissions."
159
162
  }, r = 403) : (r = 404, i = {
160
163
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
161
164
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
162
- }), h.json(i, { status: r });
165
+ }), v.json(i, { status: r });
163
166
  }),
164
- g.delete(`${t}${r(":entityId")}/acl`, ({ params: e }) => {
165
- let t = v(e.entityId), n, r;
167
+ y.delete(`${t}${r(":entityId")}/acl`, ({ params: e }) => {
168
+ let t = x(e.entityId), n, r;
166
169
  return t ? t?.bundle?.accessControlList ? (r = "", n = 200) : (r = {
167
170
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
168
171
  reason: "Cannot delete ACL for a resource which inherits its permissions."
169
172
  }, n = 403) : (n = 404, r = {
170
173
  concreteType: "org.sagebionetworks.repo.model.ErrorResponse",
171
174
  reason: `Mock Service worker could not find a mock entity bundle with ID ${e.entityId}`
172
- }), h.json(r, { status: n });
175
+ }), v.json(r, { status: n });
173
176
  })
174
177
  ];
175
178
  //#endregion
176
- export { y as getEntityBundleHandler, S as getEntityHandlers, b as getEntityJsonHandler, x as getVersionedEntityBundleHandler };
179
+ export { S as getEntityBundleHandler, T as getEntityHandlers, C as getEntityJsonHandler, w as getVersionedEntityBundleHandler };
177
180
 
178
181
  //# sourceMappingURL=entityHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/entityHandlers.ts"],"sourcesContent":["import {\n ENTITY,\n ENTITY_BUNDLE_V2,\n ENTITY_HEADERS,\n ENTITY_ID,\n ENTITY_ID_VERSION,\n ENTITY_ID_VERSIONS,\n ENTITY_JSON,\n ENTITY_SCHEMA_BINDING,\n} from '@/utils/APIConstants'\nimport { normalizeSynPrefix } from '@/utils/functions/EntityTypeUtils'\nimport {\n ErrorResponse,\n UploadDestination,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityJson,\n EntityPath,\n PaginatedResults,\n ProjectHeaderList,\n Reference,\n VersionableEntity,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport mockEntities, { mockProjectsEntityData } from '../../entity'\nimport { MOCK_INVALID_PROJECT_NAME } from '../../entity/mockEntity'\nimport { MockEntityData } from '../../entity/MockEntityData'\nimport {\n mockSynapseStorageUploadDestination,\n mockUploadDestinations,\n} from '../../mock_upload_destination'\nimport { mockSchemaBinding } from '../../mockSchema'\nimport { SynapseApiResponse } from '../handlers'\n\nfunction getMatchingMockEntities(entityIds: string[]): MockEntityData[] {\n const normalizedPassedIds = entityIds.map(normalizeSynPrefix)\n return mockEntities.filter(entity =>\n normalizedPassedIds.includes(normalizeSynPrefix(entity.id)),\n )\n}\nfunction getMatchingMockEntity(entityId: string): MockEntityData | undefined {\n const matches = getMatchingMockEntities([entityId])\n if (matches.length == 0) {\n return undefined\n }\n return matches[0]\n}\n\nexport function getEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.bundle) {\n response = entityData.bundle\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getEntityJsonHandler(\n backendOrigin: string,\n entityJson?: Partial<EntityJson>,\n) {\n return http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n () => {\n const response = entityJson\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getVersionedEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId', ':versionNumber')}`,\n ({ params }) => {\n const entityId = params.entityId as string\n const versionNumber = parseInt(params.versionNumber as string)\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(entityId)\n if (entityData) {\n const bundle = entityData.bundle\n if (entityData.versions?.[versionNumber]) {\n response = {\n ...bundle,\n entity: entityData.versions[versionNumber],\n } as EntityBundle\n } else {\n response = bundle as EntityBundle\n }\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport const getEntityHandlers = (backendOrigin: string) => [\n /**\n * Create a new entity\n */\n http.post<never, Entity>(`${backendOrigin}${ENTITY}`, async ({ request }) => {\n let status = 200\n const requestBody = await request.json()\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: '...',\n }\n if (!requestBody) {\n status = 400\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock service worker received the following malformed body for PUT ${ENTITY} : ${JSON.stringify(\n requestBody,\n )}`,\n }\n } else {\n if (requestBody.name === MOCK_INVALID_PROJECT_NAME) {\n ;(response as ErrorResponse).reason = 'Invalid project name'\n status = 403\n } else {\n response = { id: uniqueId('syn'), ...requestBody }\n }\n }\n\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get entity by ID\n */\n http.get(`${backendOrigin}${ENTITY_ID(':entityId')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity with ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData) {\n response = entityData.entity\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n http.get(\n `${backendOrigin}${ENTITY_ID_VERSIONS(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<VersionInfo>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find mock entity versions for ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.versionInfo) {\n response = { results: entityData.versionInfo }\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get<{ entityId: string; versionNumber: string }>(\n `${backendOrigin}${ENTITY_ID_VERSION(':entityId', ':versionNumber')}`,\n ({ params }) => {\n let status = 404\n const entityId = params.entityId\n const versionNumber = params.versionNumber.toString()\n const requestedVersionNumber = parseInt(versionNumber)\n\n let response: SynapseApiResponse<VersionableEntity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock versioned entity with ID ${entityId}.${versionNumber}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId)\n if (entityData?.versions?.[requestedVersionNumber]) {\n response = entityData.versions[\n requestedVersionNumber\n ] as VersionableEntity\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n getEntityBundleHandler(backendOrigin),\n getVersionedEntityBundleHandler(backendOrigin),\n\n http.get(`${backendOrigin}${ENTITY_SCHEMA_BINDING(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaBinding, { status: 200 })\n }),\n http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityJson> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.json) {\n response = entityData.json\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.post<{ entityId: string }, { references: Reference[] }>(\n `${backendOrigin}${ENTITY_HEADERS}`,\n\n async ({ params, request }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<EntityHeader>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n\n const referenceList = await request.json()\n const entityData: EntityHeader[] = referenceList.references\n .map(ref => {\n const entityHeader = getMatchingMockEntity(ref.targetId)?.entityHeader\n if (entityHeader) {\n return {\n ...entityHeader,\n // ID should match what is passed in (i.e. may or may not have syn prefix)\n id: ref.targetId,\n }\n }\n return undefined\n })\n .filter((header): header is EntityHeader => !!header)\n\n if (entityData) {\n response = { results: entityData }\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(\n `${backendOrigin}${ENTITY_ID(':entityId')}/path`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityPath> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity path using ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n if (entityData?.path) {\n response = entityData.path\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/file/v1/entity/:id/uploadDestination`, () => {\n const response: UploadDestination = mockSynapseStorageUploadDestination\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.get(\n `${backendOrigin}/file/v1/entity/:id/uploadDestination/:storageLocationId`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UploadDestination> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${params.storageLocationId}`,\n }\n const uploadDestination = mockUploadDestinations.find(\n e => Number(params.storageLocationId) === e.storageLocationId,\n )\n\n if (uploadDestination) {\n response = uploadDestination\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/repo/v1/projects`, () => {\n const response: ProjectHeaderList = {\n results: mockProjectsEntityData.map(p => ({\n name: p.name,\n id: p.id,\n lastActivity: '2024-01-04T21:11:59.000Z',\n modifiedBy: parseInt(p.entity.modifiedBy!),\n modifiedOn: p.entity.modifiedOn!,\n })),\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.post<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (entityData.bundle?.accessControlList) {\n status = 403\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'Resource already has an ACL.',\n }\n } else {\n response = await request.json()\n status = 201\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.put<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot update ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = await request.json()\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.delete(`${backendOrigin}${ENTITY_ID(':entityId')}/acl`, ({ params }) => {\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n let status: number\n let response: SynapseApiResponse<''>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot delete ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = ''\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n }),\n]\n"],"mappings":"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"}
1
+ {"version":3,"file":"entityHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/entityHandlers.ts"],"sourcesContent":["import {\n ENTITY,\n ENTITY_BUNDLE_V2,\n ENTITY_HEADERS,\n ENTITY_ID,\n ENTITY_ID_VERSION,\n ENTITY_ID_VERSIONS,\n ENTITY_JSON,\n ENTITY_SCHEMA_BINDING,\n ENTITY_SCHEMA_VALIDATION,\n} from '@/utils/APIConstants'\nimport { normalizeSynPrefix } from '@/utils/functions/EntityTypeUtils'\nimport {\n ErrorResponse,\n UploadDestination,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AccessControlList,\n Entity,\n EntityBundle,\n EntityHeader,\n EntityJson,\n EntityPath,\n PaginatedResults,\n ProjectHeaderList,\n Reference,\n VersionableEntity,\n VersionInfo,\n} from '@sage-bionetworks/synapse-types'\nimport { uniqueId } from 'lodash-es'\nimport { http, HttpResponse } from 'msw'\nimport mockEntities, { mockProjectsEntityData } from '../../entity'\nimport { MOCK_INVALID_PROJECT_NAME } from '../../entity/mockEntity'\nimport { MockEntityData } from '../../entity/MockEntityData'\nimport {\n mockSynapseStorageUploadDestination,\n mockUploadDestinations,\n} from '../../mock_upload_destination'\nimport { mockOpenRestrictionInformation } from '../../mock_has_access_data'\nimport {\n mockSchemaBinding,\n mockSchemaValidationResults,\n} from '../../mockSchema'\nimport { SynapseApiResponse } from '../handlers'\n\nfunction getMatchingMockEntities(entityIds: string[]): MockEntityData[] {\n const normalizedPassedIds = entityIds.map(normalizeSynPrefix)\n return mockEntities.filter(entity =>\n normalizedPassedIds.includes(normalizeSynPrefix(entity.id)),\n )\n}\nfunction getMatchingMockEntity(entityId: string): MockEntityData | undefined {\n const matches = getMatchingMockEntities([entityId])\n if (matches.length == 0) {\n return undefined\n }\n return matches[0]\n}\n\nexport function getEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.bundle) {\n response = entityData.bundle\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport function getEntityJsonHandler(\n backendOrigin: string,\n entityJson?: Partial<EntityJson>,\n) {\n return http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n () => {\n const response = entityJson\n return HttpResponse.json(response, { status: 200 })\n },\n )\n}\n\nexport function getVersionedEntityBundleHandler(\n backendOrigin: string,\n bundle?: Partial<EntityBundle>,\n) {\n return http.post(\n `${backendOrigin}${ENTITY_BUNDLE_V2(':entityId', ':versionNumber')}`,\n ({ params }) => {\n const entityId = params.entityId as string\n const versionNumber = parseInt(params.versionNumber as string)\n let status = 404\n let response: SynapseApiResponse<EntityBundle> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${entityId}`,\n }\n if (bundle) {\n response = bundle as EntityBundle\n status = 200\n } else {\n const entityData = getMatchingMockEntity(entityId)\n if (entityData) {\n const bundle = entityData.bundle\n if (entityData.versions?.[versionNumber]) {\n response = {\n ...bundle,\n entity: entityData.versions[versionNumber],\n } as EntityBundle\n } else {\n response = bundle as EntityBundle\n }\n status = 200\n }\n }\n return HttpResponse.json(response, { status })\n },\n )\n}\n\nexport const getEntityHandlers = (backendOrigin: string) => [\n /**\n * Create a new entity\n */\n http.post<never, Entity>(`${backendOrigin}${ENTITY}`, async ({ request }) => {\n let status = 200\n const requestBody = await request.json()\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: '...',\n }\n if (!requestBody) {\n status = 400\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock service worker received the following malformed body for PUT ${ENTITY} : ${JSON.stringify(\n requestBody,\n )}`,\n }\n } else {\n if (requestBody.name === MOCK_INVALID_PROJECT_NAME) {\n ;(response as ErrorResponse).reason = 'Invalid project name'\n status = 403\n } else {\n response = { id: uniqueId('syn'), ...requestBody }\n }\n }\n\n return HttpResponse.json(response, { status })\n }),\n\n /**\n * Get entity by ID\n */\n http.get(`${backendOrigin}${ENTITY_ID(':entityId')}`, ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<Entity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity with ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData) {\n response = entityData.entity\n status = 200\n }\n return HttpResponse.json(response, { status })\n }),\n\n http.get(\n `${backendOrigin}${ENTITY_ID_VERSIONS(':entityId')}`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<VersionInfo>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find mock entity versions for ID ${params.entityId}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.versionInfo) {\n response = { results: entityData.versionInfo }\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get<{ entityId: string; versionNumber: string }>(\n `${backendOrigin}${ENTITY_ID_VERSION(':entityId', ':versionNumber')}`,\n ({ params }) => {\n let status = 404\n const entityId = params.entityId\n const versionNumber = params.versionNumber.toString()\n const requestedVersionNumber = parseInt(versionNumber)\n\n let response: SynapseApiResponse<VersionableEntity> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock versioned entity with ID ${entityId}.${versionNumber}`,\n }\n\n const entityData = getMatchingMockEntity(params.entityId)\n if (entityData?.versions?.[requestedVersionNumber]) {\n response = entityData.versions[\n requestedVersionNumber\n ] as VersionableEntity\n status = 200\n }\n return HttpResponse.json(response, { status })\n },\n ),\n\n getEntityBundleHandler(backendOrigin),\n getVersionedEntityBundleHandler(backendOrigin),\n\n http.get(`${backendOrigin}${ENTITY_SCHEMA_BINDING(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaBinding, { status: 200 })\n }),\n http.get(`${backendOrigin}${ENTITY_SCHEMA_VALIDATION(':entityId')}`, () => {\n return HttpResponse.json(mockSchemaValidationResults, { status: 200 })\n }),\n http.post(`${backendOrigin}/repo/v1/restrictionInformation`, () => {\n return HttpResponse.json(mockOpenRestrictionInformation, { status: 200 })\n }),\n http.get(\n `${backendOrigin}${ENTITY_JSON(':entityId')}`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityJson> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n if (entityData?.json) {\n response = entityData.json\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.post<{ entityId: string }, { references: Reference[] }>(\n `${backendOrigin}${ENTITY_HEADERS}`,\n\n async ({ params, request }) => {\n let status = 404\n let response: SynapseApiResponse<PaginatedResults<EntityHeader>> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n\n const referenceList = await request.json()\n const entityData: EntityHeader[] = referenceList.references\n .map(ref => {\n const entityHeader = getMatchingMockEntity(ref.targetId)?.entityHeader\n if (entityHeader) {\n return {\n ...entityHeader,\n // ID should match what is passed in (i.e. may or may not have syn prefix)\n id: ref.targetId,\n }\n }\n return undefined\n })\n .filter((header): header is EntityHeader => !!header)\n\n if (entityData) {\n response = { results: entityData }\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(\n `${backendOrigin}${ENTITY_ID(':entityId')}/path`,\n\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<EntityPath> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity path using ID ${params.entityId}`,\n }\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n if (entityData?.path) {\n response = entityData.path\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/file/v1/entity/:id/uploadDestination`, () => {\n const response: UploadDestination = mockSynapseStorageUploadDestination\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.get(\n `${backendOrigin}/file/v1/entity/:id/uploadDestination/:storageLocationId`,\n ({ params }) => {\n let status = 404\n let response: SynapseApiResponse<UploadDestination> = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find an uploadDestination using storageLocationId ${params.storageLocationId}`,\n }\n const uploadDestination = mockUploadDestinations.find(\n e => Number(params.storageLocationId) === e.storageLocationId,\n )\n\n if (uploadDestination) {\n response = uploadDestination\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.get(`${backendOrigin}/repo/v1/projects`, () => {\n const response: ProjectHeaderList = {\n results: mockProjectsEntityData.map(p => ({\n name: p.name,\n id: p.id,\n lastActivity: '2024-01-04T21:11:59.000Z',\n modifiedBy: parseInt(p.entity.modifiedBy!),\n modifiedOn: p.entity.modifiedOn!,\n })),\n }\n return HttpResponse.json(response, { status: 200 })\n }),\n\n http.post<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (entityData.bundle?.accessControlList) {\n status = 403\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: 'Resource already has an ACL.',\n }\n } else {\n response = await request.json()\n status = 201\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.put<{ entityId: string }, AccessControlList>(\n `${backendOrigin}${ENTITY_ID(':entityId')}/acl`,\n async ({ params, request }) => {\n const entityData = getMatchingMockEntity(params.entityId)\n\n let status: number\n let response: SynapseApiResponse<AccessControlList>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot update ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = await request.json()\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n },\n ),\n\n http.delete(`${backendOrigin}${ENTITY_ID(':entityId')}/acl`, ({ params }) => {\n const entityData = getMatchingMockEntity(params.entityId as string)\n\n let status: number\n let response: SynapseApiResponse<''>\n\n if (!entityData) {\n status = 404\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason: `Mock Service worker could not find a mock entity bundle with ID ${params.entityId}`,\n }\n } else if (!entityData?.bundle?.accessControlList) {\n response = {\n concreteType: 'org.sagebionetworks.repo.model.ErrorResponse',\n reason:\n 'Cannot delete ACL for a resource which inherits its permissions.',\n }\n status = 403\n } else {\n response = ''\n status = 200\n }\n\n return HttpResponse.json(response, { status })\n }),\n]\n"],"mappings":"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"}
@@ -29,7 +29,7 @@ function a(a) {
29
29
  }
30
30
  }, { status: 200 })) : e.text("Job not found", { status: 404 });
31
31
  }),
32
- t.post(`${a}/repo/v1/grid/:sessionId/replica`, async ({ request: t }) => {
32
+ t.post(`${a}/repo/v1/grid/session/:sessionId/replica`, async ({ request: t }) => {
33
33
  let { gridSessionId: r } = await t.json();
34
34
  if (!Array.from(i.values()).find((e) => e.sessionId === r)) return e.text("Grid session not found", { status: 404 });
35
35
  let a = {
@@ -44,7 +44,7 @@ function a(a) {
44
44
  };
45
45
  return e.json(a, { status: 201 });
46
46
  }),
47
- t.get(`${a}/repo/v1/grid/:sessionId/presignedUrl`, ({ params: t }) => {
47
+ t.post(`${a}/repo/v1/grid/session/:sessionId/presigned/url`, ({ params: t }) => {
48
48
  let { sessionId: n } = t;
49
49
  if (!Array.from(i.values()).find((e) => e.sessionId === n)) return e.text("Grid session not found", { status: 404 });
50
50
  let r = `https://mock-s3-bucket/${n}/data.csv?presigned=true`;
@@ -1 +1 @@
1
- {"version":3,"file":"gridHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/gridHandlers.ts"],"sourcesContent":["import { CreateReplicaRequest } from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\n\nfunction getRandomInt() {\n return crypto.getRandomValues(new Uint32Array(1))[0]\n}\n\n// Generate unique session IDs for grid sessions\nconst generateSessionId = () => {\n const randomId: number = getRandomInt()\n return `grid-session-${randomId * 100000}`\n}\n\ninterface GridJob {\n status: string\n startTime: number\n sessionId: string\n}\n\n// In-memory storage to track async jobs\nconst pendingJobs = new Map<string, GridJob>()\n\nexport function getGridHandlers(backendOrigin: string) {\n return [\n // Handler for starting a grid session\n http.post(\n `${backendOrigin}/repo/v1/grid/session/async/start`,\n async ({ request }) => {\n // Generate a unique job token\n const jobToken = `job-${Date.now()}-${Math.random()\n .toString(36)\n .substring(2, 9)}`\n const requestBody = await request.json()\n\n // Store job details for later reference\n pendingJobs.set(jobToken, {\n status: 'PROCESSING',\n startTime: Date.now(),\n sessionId: generateSessionId(),\n })\n\n return HttpResponse.json(requestBody, { status: 201 })\n },\n ),\n\n // Handler for retrieving async job results\n http.get<{ token: string }>(\n `${backendOrigin}/repo/v1/grid/session/async/get/:token`,\n ({ params }) => {\n // Retrieve job data\n const jobData = pendingJobs.get(params.token)\n\n if (!jobData) {\n return HttpResponse.text('Job not found', { status: 404 })\n }\n\n // Job is complete, return result\n jobData.status = 'COMPLETE'\n return HttpResponse.json(\n {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridSession',\n gridSession: {\n sessionId: jobData.sessionId,\n startedBy: 'mockUser',\n startedOn: new Date().toISOString(),\n etag: `etag-${Date.now()}`,\n modifiedOn: new Date().toISOString(),\n lastReplicaIdClient: 1,\n lastReplicaIdService: 1,\n },\n },\n { status: 200 },\n )\n },\n ),\n\n // Handler for GridSessionReplica\n http.post<{ sessionId: string }, CreateReplicaRequest>(\n `${backendOrigin}/repo/v1/grid/:sessionId/replica`,\n async ({ request }) => {\n const { gridSessionId } = await request.json()\n\n // Check if the session ID exists in pending jobs\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === gridSessionId,\n )\n\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n\n // Create a replica for the session\n const replicaId = getRandomInt() % 1000\n const replicaResponse = {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridReplica',\n replica: {\n gridSessionId,\n replicaId,\n createdBy: 'mockUser',\n isAgentReplica: false,\n createdOn: new Date().toISOString(),\n },\n }\n return HttpResponse.json(replicaResponse, { status: 201 })\n },\n ),\n\n // Handler for Grid presigned URL\n http.get<{ sessionId: string }>(\n `${backendOrigin}/repo/v1/grid/:sessionId/presignedUrl`,\n ({ params }) => {\n const { sessionId } = params\n\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === sessionId,\n )\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n // Generate a mock presigned URL\n const presignedUrl = `https://mock-s3-bucket/${sessionId}/data.csv?presigned=true`\n return HttpResponse.json({ presignedUrl }, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;AAGA,SAAS,IAAe;CACtB,OAAO,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE;AACpD;AAGA,IAAM,UAEG,gBADkB,EACF,IAAW,OAU9B,oBAAc,IAAI,IAAqB;AAE7C,SAAgB,EAAgB,GAAuB;CACrD,OAAO;EAEL,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GAErB,IAAM,IAAW,OAAO,KAAK,IAAI,EAAE,GAAG,KAAK,OAAO,EAC/C,SAAS,EAAE,EACX,UAAU,GAAG,CAAC,KACX,IAAc,MAAM,EAAQ,KAAK;GASvC,OANA,EAAY,IAAI,GAAU;IACxB,QAAQ;IACR,WAAW,KAAK,IAAI;IACpB,WAAW,EAAkB;GAC/B,CAAC,GAEM,EAAa,KAAK,GAAa,EAAE,QAAQ,IAAI,CAAC;EACvD,CACF;EAGA,EAAK,IACH,GAAG,EAAc,0CAChB,EAAE,gBAAa;GAEd,IAAM,IAAU,EAAY,IAAI,EAAO,KAAK;GAQ5C,OANK,KAKL,EAAQ,SAAS,YACV,EAAa,KAClB;IACE,cAAc;IACd,aAAa;KACX,WAAW,EAAQ;KACnB,WAAW;KACX,4BAAW,IAAI,KAAK,GAAE,YAAY;KAClC,MAAM,QAAQ,KAAK,IAAI;KACvB,6BAAY,IAAI,KAAK,GAAE,YAAY;KACnC,qBAAqB;KACrB,sBAAsB;IACxB;GACF,GACA,EAAE,QAAQ,IAAI,CAChB,KAnBS,EAAa,KAAK,iBAAiB,EAAE,QAAQ,IAAI,CAAC;EAoB7D,CACF;EAGA,EAAK,KACH,GAAG,EAAc,mCACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,EAAE,qBAAkB,MAAM,EAAQ,KAAK;GAO7C,IAAI,CAJY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAGtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAKpE,IAAM,IAAkB;IACtB,cAAc;IACd,SAAS;KACP;KACA,WALc,EAAa,IAAI;KAM/B,WAAW;KACX,gBAAgB;KAChB,4BAAW,IAAI,KAAK,GAAE,YAAY;IACpC;GACF;GACA,OAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,IAAI,CAAC;EAC3D,CACF;EAGA,EAAK,IACH,GAAG,EAAc,yCAChB,EAAE,gBAAa;GACd,IAAM,EAAE,iBAAc;GAKtB,IAAI,CAHY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAEtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAGpE,IAAM,IAAe,0BAA0B,EAAU;GACzD,OAAO,EAAa,KAAK,EAAE,gBAAa,GAAG,EAAE,QAAQ,IAAI,CAAC;EAC5D,CACF;CACF;AACF"}
1
+ {"version":3,"file":"gridHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/gridHandlers.ts"],"sourcesContent":["import { CreateReplicaRequest } from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\n\nfunction getRandomInt() {\n return crypto.getRandomValues(new Uint32Array(1))[0]\n}\n\n// Generate unique session IDs for grid sessions\nconst generateSessionId = () => {\n const randomId: number = getRandomInt()\n return `grid-session-${randomId * 100000}`\n}\n\ninterface GridJob {\n status: string\n startTime: number\n sessionId: string\n}\n\n// In-memory storage to track async jobs\nconst pendingJobs = new Map<string, GridJob>()\n\nexport function getGridHandlers(backendOrigin: string) {\n return [\n // Handler for starting a grid session\n http.post(\n `${backendOrigin}/repo/v1/grid/session/async/start`,\n async ({ request }) => {\n // Generate a unique job token\n const jobToken = `job-${Date.now()}-${Math.random()\n .toString(36)\n .substring(2, 9)}`\n const requestBody = await request.json()\n\n // Store job details for later reference\n pendingJobs.set(jobToken, {\n status: 'PROCESSING',\n startTime: Date.now(),\n sessionId: generateSessionId(),\n })\n\n return HttpResponse.json(requestBody, { status: 201 })\n },\n ),\n\n // Handler for retrieving async job results\n http.get<{ token: string }>(\n `${backendOrigin}/repo/v1/grid/session/async/get/:token`,\n ({ params }) => {\n // Retrieve job data\n const jobData = pendingJobs.get(params.token)\n\n if (!jobData) {\n return HttpResponse.text('Job not found', { status: 404 })\n }\n\n // Job is complete, return result\n jobData.status = 'COMPLETE'\n return HttpResponse.json(\n {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridSession',\n gridSession: {\n sessionId: jobData.sessionId,\n startedBy: 'mockUser',\n startedOn: new Date().toISOString(),\n etag: `etag-${Date.now()}`,\n modifiedOn: new Date().toISOString(),\n lastReplicaIdClient: 1,\n lastReplicaIdService: 1,\n },\n },\n { status: 200 },\n )\n },\n ),\n\n // Handler for GridSessionReplica\n http.post<{ sessionId: string }, CreateReplicaRequest>(\n `${backendOrigin}/repo/v1/grid/session/:sessionId/replica`,\n async ({ request }) => {\n const { gridSessionId } = await request.json()\n\n // Check if the session ID exists in pending jobs\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === gridSessionId,\n )\n\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n\n // Create a replica for the session\n const replicaId = getRandomInt() % 1000\n const replicaResponse = {\n concreteType: 'org.sagebionetworks.repo.model.grid.GridReplica',\n replica: {\n gridSessionId,\n replicaId,\n createdBy: 'mockUser',\n isAgentReplica: false,\n createdOn: new Date().toISOString(),\n },\n }\n return HttpResponse.json(replicaResponse, { status: 201 })\n },\n ),\n\n // Handler for Grid presigned URL\n http.post<{ sessionId: string }>(\n `${backendOrigin}/repo/v1/grid/session/:sessionId/presigned/url`,\n ({ params }) => {\n const { sessionId } = params\n\n const jobData = Array.from(pendingJobs.values()).find(\n job => job.sessionId === sessionId,\n )\n if (!jobData) {\n return HttpResponse.text('Grid session not found', { status: 404 })\n }\n // Generate a mock presigned URL\n const presignedUrl = `https://mock-s3-bucket/${sessionId}/data.csv?presigned=true`\n return HttpResponse.json({ presignedUrl }, { status: 200 })\n },\n ),\n ]\n}\n"],"mappings":";;AAGA,SAAS,IAAe;CACtB,OAAO,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE;AACpD;AAGA,IAAM,UAEG,gBADkB,EACF,IAAW,OAU9B,oBAAc,IAAI,IAAqB;AAE7C,SAAgB,EAAgB,GAAuB;CACrD,OAAO;EAEL,EAAK,KACH,GAAG,EAAc,oCACjB,OAAO,EAAE,iBAAc;GAErB,IAAM,IAAW,OAAO,KAAK,IAAI,EAAE,GAAG,KAAK,OAAO,EAC/C,SAAS,EAAE,EACX,UAAU,GAAG,CAAC,KACX,IAAc,MAAM,EAAQ,KAAK;GASvC,OANA,EAAY,IAAI,GAAU;IACxB,QAAQ;IACR,WAAW,KAAK,IAAI;IACpB,WAAW,EAAkB;GAC/B,CAAC,GAEM,EAAa,KAAK,GAAa,EAAE,QAAQ,IAAI,CAAC;EACvD,CACF;EAGA,EAAK,IACH,GAAG,EAAc,0CAChB,EAAE,gBAAa;GAEd,IAAM,IAAU,EAAY,IAAI,EAAO,KAAK;GAQ5C,OANK,KAKL,EAAQ,SAAS,YACV,EAAa,KAClB;IACE,cAAc;IACd,aAAa;KACX,WAAW,EAAQ;KACnB,WAAW;KACX,4BAAW,IAAI,KAAK,GAAE,YAAY;KAClC,MAAM,QAAQ,KAAK,IAAI;KACvB,6BAAY,IAAI,KAAK,GAAE,YAAY;KACnC,qBAAqB;KACrB,sBAAsB;IACxB;GACF,GACA,EAAE,QAAQ,IAAI,CAChB,KAnBS,EAAa,KAAK,iBAAiB,EAAE,QAAQ,IAAI,CAAC;EAoB7D,CACF;EAGA,EAAK,KACH,GAAG,EAAc,2CACjB,OAAO,EAAE,iBAAc;GACrB,IAAM,EAAE,qBAAkB,MAAM,EAAQ,KAAK;GAO7C,IAAI,CAJY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAGtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAKpE,IAAM,IAAkB;IACtB,cAAc;IACd,SAAS;KACP;KACA,WALc,EAAa,IAAI;KAM/B,WAAW;KACX,gBAAgB;KAChB,4BAAW,IAAI,KAAK,GAAE,YAAY;IACpC;GACF;GACA,OAAO,EAAa,KAAK,GAAiB,EAAE,QAAQ,IAAI,CAAC;EAC3D,CACF;EAGA,EAAK,KACH,GAAG,EAAc,kDAChB,EAAE,gBAAa;GACd,IAAM,EAAE,iBAAc;GAKtB,IAAI,CAHY,MAAM,KAAK,EAAY,OAAO,CAAC,EAAE,MAC/C,MAAO,EAAI,cAAc,CAEtB,GACH,OAAO,EAAa,KAAK,0BAA0B,EAAE,QAAQ,IAAI,CAAC;GAGpE,IAAM,IAAe,0BAA0B,EAAU;GACzD,OAAO,EAAa,KAAK,EAAE,gBAAa,GAAG,EAAE,QAAQ,IAAI,CAAC;EAC5D,CACF;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mocks/msw/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAI1B,QAAA,MAAM,MAAM,gCAA2B,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mocks/msw/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAK1B,QAAA,MAAM,MAAM,gCAA2B,CAAA;AAWvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
@@ -1,9 +1,11 @@
1
1
  import { handlers as e } from "./handlers.js";
2
2
  import { http as t } from "msw";
3
3
  import { setupServer as n } from "msw/node";
4
+ import { afterAll as r, afterEach as i, beforeAll as a } from "vitest";
4
5
  //#region src/mocks/msw/server.ts
5
- var r = n(...e);
6
+ var o = n(...e);
7
+ a(() => o.listen({ onUnhandledRequest: "error" })), i(() => o.resetHandlers()), r(() => o.close());
6
8
  //#endregion
7
- export { t as http, r as server };
9
+ export { t as http, o as server };
8
10
 
9
11
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../../../src/mocks/msw/server.ts"],"sourcesContent":["import { http } from 'msw'\nimport { setupServer } from 'msw/node'\nimport { handlers } from './handlers'\n\nconst server = setupServer(...handlers)\n\nexport { server, http }\n"],"mappings":";;;;AAIA,IAAM,IAAS,EAAY,GAAG,CAAQ"}
1
+ {"version":3,"file":"server.js","names":[],"sources":["../../../src/mocks/msw/server.ts"],"sourcesContent":["import { http } from 'msw'\nimport { setupServer } from 'msw/node'\nimport { afterAll, afterEach, beforeAll } from 'vitest'\nimport { handlers } from './handlers'\n\nconst server = setupServer(...handlers)\n\n// Importing this module from a test file starts the server for that file. Test files that never import it\n// pay nothing, because the server (and every handler fixture) is only loaded when it is needed.\n//\n// Requests with no matching handler fail the test instead of silently reaching the network.\n// `resetHandlers` (not `restoreHandlers`) drops `server.use` overrides, so they cannot leak between tests.\nbeforeAll(() => server.listen({ onUnhandledRequest: 'error' }))\nafterEach(() => server.resetHandlers())\nafterAll(() => server.close())\n\nexport { server, http }\n"],"mappings":";;;;;AAKA,IAAM,IAAS,EAAY,GAAG,CAAQ;AAOtC,QAAgB,EAAO,OAAO,EAAE,oBAAoB,QAAQ,CAAC,CAAC,GAC9D,QAAgB,EAAO,cAAc,CAAC,GACtC,QAAe,EAAO,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAmDF"}
1
+ {"version":3,"file":"useGetUserChallenges.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,SAAS,EACT,sCAAsC,EACtC,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CACjE,mGAUF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAG,YAAY,CAAC,sCAAsC,CAAC,EAE5D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAkDF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects =\n await SynapseClient.getEntityHeadersByIds(challengeProjectIds)\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0)\n return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CAEtD,OAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,CAAM;EACrD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,EAAE;CACvE,CAAC;AACH;AAEA,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CACtD,OAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,CAAM;EACrD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,EACF;GAEA,IAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,SACzB,GACM,IACJ,MAAM,EAAc,sBAAsB,CAAmB;IAW/D,OAAO;KARH,SAAS,MAAM,KAAK,EAAW,UAAU,GAAW,OAC3C;MACL;MACA,eAAe,EAAkB,QAAQ;KAC3C,EACD;KACD,sBAAsB,EAAW;IAE9B;GACT;GACA,OAAO;IACL,SAAS,CAAC;IACV,sBAAsB,EAAW;GACnC;EACF;EACA,mBAAmB,GAAU,MAAU;GACrC,IAAI,EAAS,QAAQ,SAAS,GAC5B,OAAO,EAAM,SAAS;EAE1B;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"useGetUserChallenges.js","names":[],"sources":["../../../src/synapse-queries/user/useGetUserChallenges.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Challenge,\n ChallengeWithProjectHeaderPagedResults,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\nexport function useGetUserChallenges(\n userId: string,\n limit?: number,\n options?: Partial<\n UseQueryOptions<PaginatedResults<Challenge>, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: () =>\n SynapseClient.getUserChallenges(accessToken, userId, 0, limit ?? 10),\n })\n}\n\nexport function useGetUserChallengesInfinite<\n TData = InfiniteData<ChallengeWithProjectHeaderPagedResults>,\n>(\n userId: string,\n options?: Partial<\n UseInfiniteQueryOptions<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n ChallengeWithProjectHeaderPagedResults,\n SynapseClientError,\n TData,\n QueryKey,\n number | undefined\n >({\n ...options,\n initialPageParam: undefined,\n queryKey: keyFactory.getUserChallengesQueryKey(userId),\n queryFn: async context => {\n const challenges = await SynapseClient.getUserChallenges(\n accessToken,\n userId,\n context.pageParam, // pass the context.pageParam for the new offset\n 10, // limit\n )\n // also look up the challenge project names (if there are challenges)\n if (challenges.results.length > 0) {\n const challengeProjectIds = Array.from(\n challenges.results,\n challenge => challenge.projectId,\n )\n const challengeProjects =\n await SynapseClient.getEntityHeadersByIds(challengeProjectIds)\n const challengeWithProjectHeaderPagedResults: ChallengeWithProjectHeaderPagedResults =\n {\n results: Array.from(challenges.results, (challenge, index) => {\n return {\n challenge,\n projectHeader: challengeProjects.results[index],\n }\n }),\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n return challengeWithProjectHeaderPagedResults\n }\n return {\n results: [],\n totalNumberOfResults: challenges.totalNumberOfResults,\n }\n },\n getNextPageParam: (lastPage, pages) => {\n if (lastPage.results.length > 0) return pages.length * 10 //set the new offset to (page * limit)\n else return undefined\n },\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,EACd,GACA,GACA,GAGA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CAEtD,OAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,0BAA0B,CAAM;EACrD,eACE,EAAc,kBAAkB,GAAa,GAAQ,GAAG,KAAS,EAAE;CACvE,CAAC;AACH;AAEA,SAAgB,EAGd,GACA,GASA;CACA,IAAM,EAAE,gBAAa,kBAAe,EAAkB;CACtD,OAAO,EAML;EACA,GAAG;EACH,kBAAkB,KAAA;EAClB,UAAU,EAAW,0BAA0B,CAAM;EACrD,SAAS,OAAM,MAAW;GACxB,IAAM,IAAa,MAAM,EAAc,kBACrC,GACA,GACA,EAAQ,WACR,EACF;GAEA,IAAI,EAAW,QAAQ,SAAS,GAAG;IACjC,IAAM,IAAsB,MAAM,KAChC,EAAW,UACX,MAAa,EAAU,SACzB,GACM,IACJ,MAAM,EAAc,sBAAsB,CAAmB;IAW/D,OAAO;KARH,SAAS,MAAM,KAAK,EAAW,UAAU,GAAW,OAC3C;MACL;MACA,eAAe,EAAkB,QAAQ;KAC3C,EACD;KACD,sBAAsB,EAAW;IAE9B;GACT;GACA,OAAO;IACL,SAAS,CAAC;IACV,sBAAsB,EAAW;GACnC;EACF;EACA,mBAAmB,GAAU,MAAU;GACrC,IAAI,EAAS,QAAQ,SAAS,GAAG,OAAO,EAAM,SAAS;EAEzD;CACF,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultTheme.d.ts","sourceRoot":"","sources":["../../src/theme/DefaultTheme.tsx"],"names":[],"mappings":"AASA,OAAO,EAKL,YAAY,EACb,MAAM,eAAe,CAAA;AAUtB,eAAO,MAAM,sBAAsB,EAAE,YA2cpC,CAAA;AAED,eAAe,sBAAsB,CAAA"}
1
+ {"version":3,"file":"DefaultTheme.d.ts","sourceRoot":"","sources":["../../src/theme/DefaultTheme.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKL,YAAY,EACb,MAAM,eAAe,CAAA;AAUtB,eAAO,MAAM,sBAAsB,EAAE,YA2cpC,CAAA;AAED,eAAe,sBAAsB,CAAA"}
@@ -6,7 +6,10 @@ import i from "./typography/Link.js";
6
6
  import { typographyOptions as a } from "./typography/Typography.js";
7
7
  import { Fade as o, alpha as s, inputBaseClasses as c, lighten as l } from "@mui/material";
8
8
  import { jsx as u } from "react/jsx-runtime";
9
- import { CheckCircleTwoTone as d, ErrorTwoTone as f, HighlightOffTwoTone as p, InfoTwoTone as m } from "@mui/icons-material";
9
+ import d from "@mui/icons-material/CheckCircleTwoTone";
10
+ import f from "@mui/icons-material/ErrorTwoTone";
11
+ import p from "@mui/icons-material/HighlightOffTwoTone";
12
+ import m from "@mui/icons-material/InfoTwoTone";
10
13
  //#region src/theme/DefaultTheme.tsx
11
14
  var h = "2px", g = o, _ = {
12
15
  typography: a,
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultTheme.js","names":[],"sources":["../../src/theme/DefaultTheme.tsx"],"sourcesContent":["import Checked from '@/assets/icons/Checkbox/Checked'\nimport Indeterminate from '@/assets/icons/Checkbox/Indeterminate'\nimport Unchecked from '@/assets/icons/Checkbox/Unchecked'\nimport {\n CheckCircleTwoTone,\n ErrorTwoTone,\n HighlightOffTwoTone,\n InfoTwoTone,\n} from '@mui/icons-material'\nimport {\n alpha,\n Fade,\n inputBaseClasses,\n lighten,\n ThemeOptions,\n} from '@mui/material'\nimport { palette } from './palette/Palettes'\nimport linkTheme from './typography/Link'\nimport { typographyOptions } from './typography/Typography'\n\nconst DIALOG_INNER_PADDING = '2px'\n\n// The default TransitionComponent, Grow, causes click event interception issues, especially in SWC's gwtbootstrap modals.\nconst TRANSITION_COMPONENT_OVERRIDE = Fade\n\nexport const defaultMuiThemeOptions: ThemeOptions = {\n typography: typographyOptions,\n palette: palette,\n components: {\n MuiAlert: {\n defaultProps: {\n square: true,\n iconMapping: {\n error: <HighlightOffTwoTone />,\n info: <InfoTwoTone />,\n success: <CheckCircleTwoTone />,\n warning: <ErrorTwoTone />,\n },\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n alignItems: 'center',\n fontSize: '14px',\n borderLeft: `10px solid ${\n // The default severity is 'success'.\n theme.palette[ownerState.severity || 'success']['main']\n }`,\n color: theme.palette.text.primary,\n }),\n icon: ({ theme }) => ({\n marginRight: theme.spacing(3),\n }),\n action: ({ ownerState, theme }) => ({\n paddingRight: theme.spacing(2),\n ...(ownerState.onClose &&\n !ownerState.action && { color: theme.palette.grey[700] }),\n }),\n standardSuccess: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.success.light, 0.8),\n }),\n standardError: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.error.light, 0.8),\n }),\n standardWarning: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.warning.light, 0.8),\n }),\n standardInfo: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.info.light, 0.8),\n }),\n },\n },\n MuiAlertTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 700,\n }),\n },\n },\n MuiLink: linkTheme,\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiButton: {\n styleOverrides: {\n root: ({ ownerState }) => {\n let padding = '6px 12px'\n if (ownerState.size === 'small') {\n padding = '6px 8px'\n } else if (ownerState.size === 'large') {\n padding = '8px 16px'\n }\n return {\n fontWeight: 900,\n padding: padding,\n borderRadius: '3px',\n textTransform: 'var(--synapse-button-text-transform)' as any,\n '&:hover': {\n transition: '0.2s',\n },\n }\n },\n contained: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].contrastText,\n },\n }),\n outlined: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].dark,\n },\n }),\n text: ({ theme, ownerState }) => ({\n '&:hover': {\n textDecoration: 'underline',\n textUnderlineOffset: '4px',\n textDecorationColor:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n textDecorationThickness: '2px',\n },\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n },\n }),\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n border: '1px solid rgba(0, 0, 0, 0.05)',\n boxShadow:\n '0px 16px 16px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.05), 0px 1px 1px rgba(0, 0, 0, 0.05)',\n },\n },\n defaultProps: {\n square: true,\n },\n },\n MuiFormControlLabel: {\n styleOverrides: {\n root: ({ theme }) => ({\n // Remove negative margin\n marginLeft: '0px',\n // When rendering a checkbox/radio, add margin between the control and the label\n '& .MuiCheckbox-root, & .MuiRadio-root': {\n marginRight: theme.spacing(1),\n },\n }),\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n icon: <Unchecked />,\n checkedIcon: <Checked />,\n indeterminateIcon: <Indeterminate />,\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const outlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n borderRadius: '0px',\n '&:not(.Mui-checked):not(.MuiCheckbox-indeterminate)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n boxShadow: `0px 0px 2px 2px ${outlineColor}`,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked, &.Mui-focusVisible.MuiCheckbox-indeterminate, &:hover.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n stroke: outlineColor,\n },\n 'svg > path': {\n transform: 'scale(0.95)',\n transformOrigin: 'center',\n },\n },\n '&:hover:active.Mui-checked, &:hover:active.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n fill: focusColor,\n },\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const unselectedOutlineColor = theme.palette.grey[400]\n const selectedOutlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n ':hover, &.Mui-focusVisible': {\n outline: `2px solid`,\n outlineOffset: '-1px',\n },\n '&:not(.Mui-checked)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n outlineColor: unselectedOutlineColor,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n outlineColor: selectedOutlineColor,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked': {\n outlineColor: selectedOutlineColor,\n color: focusColor,\n },\n '&:hover:active.Mui-checked': {\n outlineColor: selectedOutlineColor,\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n root: ({ theme }) => ({\n '.MuiDialog-container > .MuiPaper-root': {\n borderRadius: '0px',\n padding: theme.spacing(5.5),\n alignSelf: 'flex-start',\n },\n }),\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: '24px',\n fontWeight: 700,\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingBottom: theme.spacing(3),\n }),\n },\n },\n MuiDialogContent: {\n defaultProps: {\n dividers: true,\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n color: theme.palette.text.secondary,\n paddingTop: ownerState.dividers ? theme.spacing(3) : 0,\n paddingBottom: ownerState.dividers ? theme.spacing(3) : 0,\n // Hack - set add a small padding and offset with a negative margin so box-shadow effects on full width elements (like input fields) are shown\n paddingLeft: DIALOG_INNER_PADDING,\n paddingRight: DIALOG_INNER_PADDING,\n marginLeft: `-${DIALOG_INNER_PADDING}`,\n marginRight: `-${DIALOG_INNER_PADDING}`,\n // Add a filter on the `dividers` borders so that the borders are transparent on the edges based on the DIALOG_INNER_PADDING length\n borderImage: ownerState.dividers\n ? `linear-gradient(to right, transparent 0px, transparent ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} calc(100% - ${DIALOG_INNER_PADDING}), transparent calc(100% - ${DIALOG_INNER_PADDING})) 1`\n : undefined,\n }),\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: ({ theme }) => ({\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingTop: theme.spacing(3),\n '& .MuiButton-root': {\n height: '36px',\n padding: '0px 16px',\n },\n }),\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginLeft: '0',\n '&.Mui-error': {\n color: theme.palette.error.main,\n },\n }),\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: ({ theme, ownerState }) => {\n const hasOutline = ownerState.error || ownerState.focused\n let outline = 'none'\n if (hasOutline) {\n if (ownerState.error) {\n outline = `1px solid ${theme.palette.error.main}`\n } else if (ownerState.color) {\n outline = `1px solid ${theme.palette[ownerState.color].main}`\n }\n }\n let backgroundColor = theme.palette.grey[200]\n if (ownerState.error) {\n backgroundColor = alpha(theme.palette.error.main, 0.1)\n }\n const formHelperTextColor =\n ownerState.color === 'warning'\n ? theme.palette[ownerState.color].main\n : undefined\n return {\n borderRadius: '3px',\n fontSize: '14px',\n position: 'relative',\n backgroundColor: backgroundColor,\n outline: outline,\n '&+.MuiFormHelperText-root': {\n color: formHelperTextColor,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.grey[100],\n },\n '&.Mui-focused': {\n boxShadow: `${alpha(\n theme.palette.primary.main,\n 0.25,\n )} 0 0 0 0.1rem`,\n },\n '& fieldset': {\n border: 'none',\n },\n }\n },\n input: ({ theme }) => ({\n padding: '14px 12px',\n }),\n multiline: {\n padding: '0px',\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n fontWeight: 700,\n mb: '4px',\n fontSize: '14px',\n transform: 'none',\n '.MuiInputLabel-asterisk': {\n color: theme.palette.secondary.main,\n },\n }),\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: ({ theme, ownerState }) => ({\n [`& .${inputBaseClasses.root}`]: {\n marginTop: ownerState.label && theme.spacing(3),\n },\n }),\n },\n },\n MuiMenu: {\n defaultProps: {\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n height: '38px',\n paddingLeft: '12px',\n paddingRight: '12px',\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n fontWeight: 900,\n textTransform: 'capitalize',\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n textTransform: 'var(--synapse-button-text-transform)' as any,\n },\n },\n },\n MuiTooltip: {\n defaultProps: {\n arrow: true,\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n styleOverrides: {\n arrow: ({ theme }) => ({\n color: theme.palette.common.black,\n }),\n tooltip: ({ theme }) => ({\n fontSize: '14px',\n borderRadius: '2px',\n backgroundColor: theme.palette.common.black,\n '& .MuiLink-root': {\n color: '#fff',\n },\n }),\n },\n },\n MuiTypography: {\n defaultProps: {\n variantMapping: {\n headline1: 'h1',\n headline2: 'h2',\n headline3: 'h3',\n body1: 'p',\n body1Italic: 'p',\n body2: 'p',\n breadcrumb1: 'span',\n breadcrumb2: 'span',\n smallText1: 'p',\n smallText2: 'p',\n smallLink: 'span',\n label: 'span',\n buttonLink: 'span',\n hintText: 'p',\n sectionTitle: 'p',\n subsectionHeader: 'p',\n dataFieldKey: 'p',\n },\n },\n },\n },\n styledBackground:\n \"url('https://s3.amazonaws.com/static.synapse.org/images/SynapseLoginPageBackground.svg')\",\n}\n\nexport default defaultMuiThemeOptions\n"],"mappings":"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"}
1
+ {"version":3,"file":"DefaultTheme.js","names":[],"sources":["../../src/theme/DefaultTheme.tsx"],"sourcesContent":["import Checked from '@/assets/icons/Checkbox/Checked'\nimport Indeterminate from '@/assets/icons/Checkbox/Indeterminate'\nimport Unchecked from '@/assets/icons/Checkbox/Unchecked'\nimport CheckCircleTwoTone from '@mui/icons-material/CheckCircleTwoTone'\nimport ErrorTwoTone from '@mui/icons-material/ErrorTwoTone'\nimport HighlightOffTwoTone from '@mui/icons-material/HighlightOffTwoTone'\nimport InfoTwoTone from '@mui/icons-material/InfoTwoTone'\nimport {\n alpha,\n Fade,\n inputBaseClasses,\n lighten,\n ThemeOptions,\n} from '@mui/material'\nimport { palette } from './palette/Palettes'\nimport linkTheme from './typography/Link'\nimport { typographyOptions } from './typography/Typography'\n\nconst DIALOG_INNER_PADDING = '2px'\n\n// The default TransitionComponent, Grow, causes click event interception issues, especially in SWC's gwtbootstrap modals.\nconst TRANSITION_COMPONENT_OVERRIDE = Fade\n\nexport const defaultMuiThemeOptions: ThemeOptions = {\n typography: typographyOptions,\n palette: palette,\n components: {\n MuiAlert: {\n defaultProps: {\n square: true,\n iconMapping: {\n error: <HighlightOffTwoTone />,\n info: <InfoTwoTone />,\n success: <CheckCircleTwoTone />,\n warning: <ErrorTwoTone />,\n },\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n alignItems: 'center',\n fontSize: '14px',\n borderLeft: `10px solid ${\n // The default severity is 'success'.\n theme.palette[ownerState.severity || 'success']['main']\n }`,\n color: theme.palette.text.primary,\n }),\n icon: ({ theme }) => ({\n marginRight: theme.spacing(3),\n }),\n action: ({ ownerState, theme }) => ({\n paddingRight: theme.spacing(2),\n ...(ownerState.onClose &&\n !ownerState.action && { color: theme.palette.grey[700] }),\n }),\n standardSuccess: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.success.light, 0.8),\n }),\n standardError: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.error.light, 0.8),\n }),\n standardWarning: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.warning.light, 0.8),\n }),\n standardInfo: ({ theme }) => ({\n backgroundColor: lighten(theme.palette.info.light, 0.8),\n }),\n },\n },\n MuiAlertTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 700,\n }),\n },\n },\n MuiLink: linkTheme,\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiButton: {\n styleOverrides: {\n root: ({ ownerState }) => {\n let padding = '6px 12px'\n if (ownerState.size === 'small') {\n padding = '6px 8px'\n } else if (ownerState.size === 'large') {\n padding = '8px 16px'\n }\n return {\n fontWeight: 900,\n padding: padding,\n borderRadius: '3px',\n textTransform: 'var(--synapse-button-text-transform)' as any,\n '&:hover': {\n transition: '0.2s',\n },\n }\n },\n contained: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].contrastText,\n },\n }),\n outlined: ({ theme, ownerState }) => ({\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary'].dark,\n },\n }),\n text: ({ theme, ownerState }) => ({\n '&:hover': {\n textDecoration: 'underline',\n textUnderlineOffset: '4px',\n textDecorationColor:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n textDecorationThickness: '2px',\n },\n '&:hover, &:visited': {\n // Overrides a base style in Bootstrap 3 and in SWC\n color:\n ownerState.color === 'inherit'\n ? ownerState.color\n : theme.palette[ownerState.color || 'primary']['main'],\n },\n }),\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n border: '1px solid rgba(0, 0, 0, 0.05)',\n boxShadow:\n '0px 16px 16px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.05), 0px 1px 1px rgba(0, 0, 0, 0.05)',\n },\n },\n defaultProps: {\n square: true,\n },\n },\n MuiFormControlLabel: {\n styleOverrides: {\n root: ({ theme }) => ({\n // Remove negative margin\n marginLeft: '0px',\n // When rendering a checkbox/radio, add margin between the control and the label\n '& .MuiCheckbox-root, & .MuiRadio-root': {\n marginRight: theme.spacing(1),\n },\n }),\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n icon: <Unchecked />,\n checkedIcon: <Checked />,\n indeterminateIcon: <Indeterminate />,\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const outlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n borderRadius: '0px',\n '&:not(.Mui-checked):not(.MuiCheckbox-indeterminate)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n boxShadow: `0px 0px 2px 2px ${outlineColor}`,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked, &.Mui-focusVisible.MuiCheckbox-indeterminate, &:hover.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n stroke: outlineColor,\n },\n 'svg > path': {\n transform: 'scale(0.95)',\n transformOrigin: 'center',\n },\n },\n '&:hover:active.Mui-checked, &:hover:active.MuiCheckbox-indeterminate':\n {\n 'svg > rect': {\n fill: focusColor,\n },\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n size: 'small',\n },\n styleOverrides: {\n root: ({ theme, ownerState: { color = 'primary' } }) => {\n const paletteColor =\n color === 'default' ? theme.palette.primary : theme.palette[color]\n const unselectedOutlineColor = theme.palette.grey[400]\n const selectedOutlineColor =\n 100 in paletteColor ? paletteColor[100] : paletteColor.light\n const focusColor =\n 600 in paletteColor ? paletteColor[600] : paletteColor.dark\n\n return {\n padding: '0px',\n ':hover, &.Mui-focusVisible': {\n outline: `2px solid`,\n outlineOffset: '-1px',\n },\n '&:not(.Mui-checked)': {\n color: theme.palette.grey[600],\n '&:not(.Mui-disabled):hover': {\n outlineColor: unselectedOutlineColor,\n },\n '&.Mui-focusVisible': {\n color: paletteColor.main,\n outlineColor: selectedOutlineColor,\n },\n },\n '&:hover.Mui-checked, &.Mui-focusVisible.Mui-checked': {\n outlineColor: selectedOutlineColor,\n color: focusColor,\n },\n '&:hover:active.Mui-checked': {\n outlineColor: selectedOutlineColor,\n },\n '&.Mui-disabled': {\n color: theme.palette.grey[400],\n },\n }\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n root: ({ theme }) => ({\n '.MuiDialog-container > .MuiPaper-root': {\n borderRadius: '0px',\n padding: theme.spacing(5.5),\n alignSelf: 'flex-start',\n },\n }),\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: ({ theme }) => ({\n fontSize: '24px',\n fontWeight: 700,\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingBottom: theme.spacing(3),\n }),\n },\n },\n MuiDialogContent: {\n defaultProps: {\n dividers: true,\n },\n styleOverrides: {\n root: ({ ownerState, theme }) => ({\n color: theme.palette.text.secondary,\n paddingTop: ownerState.dividers ? theme.spacing(3) : 0,\n paddingBottom: ownerState.dividers ? theme.spacing(3) : 0,\n // Hack - set add a small padding and offset with a negative margin so box-shadow effects on full width elements (like input fields) are shown\n paddingLeft: DIALOG_INNER_PADDING,\n paddingRight: DIALOG_INNER_PADDING,\n marginLeft: `-${DIALOG_INNER_PADDING}`,\n marginRight: `-${DIALOG_INNER_PADDING}`,\n // Add a filter on the `dividers` borders so that the borders are transparent on the edges based on the DIALOG_INNER_PADDING length\n borderImage: ownerState.dividers\n ? `linear-gradient(to right, transparent 0px, transparent ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} ${DIALOG_INNER_PADDING}, ${theme.palette.grey[400]} calc(100% - ${DIALOG_INNER_PADDING}), transparent calc(100% - ${DIALOG_INNER_PADDING})) 1`\n : undefined,\n }),\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: ({ theme }) => ({\n paddingLeft: '0px',\n paddingRight: '0px',\n paddingTop: theme.spacing(3),\n '& .MuiButton-root': {\n height: '36px',\n padding: '0px 16px',\n },\n }),\n },\n },\n MuiFormHelperText: {\n styleOverrides: {\n root: ({ theme }) => ({\n marginLeft: '0',\n '&.Mui-error': {\n color: theme.palette.error.main,\n },\n }),\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: ({ theme, ownerState }) => {\n const hasOutline = ownerState.error || ownerState.focused\n let outline = 'none'\n if (hasOutline) {\n if (ownerState.error) {\n outline = `1px solid ${theme.palette.error.main}`\n } else if (ownerState.color) {\n outline = `1px solid ${theme.palette[ownerState.color].main}`\n }\n }\n let backgroundColor = theme.palette.grey[200]\n if (ownerState.error) {\n backgroundColor = alpha(theme.palette.error.main, 0.1)\n }\n const formHelperTextColor =\n ownerState.color === 'warning'\n ? theme.palette[ownerState.color].main\n : undefined\n return {\n borderRadius: '3px',\n fontSize: '14px',\n position: 'relative',\n backgroundColor: backgroundColor,\n outline: outline,\n '&+.MuiFormHelperText-root': {\n color: formHelperTextColor,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.grey[100],\n },\n '&.Mui-focused': {\n boxShadow: `${alpha(\n theme.palette.primary.main,\n 0.25,\n )} 0 0 0 0.1rem`,\n },\n '& fieldset': {\n border: 'none',\n },\n }\n },\n input: ({ theme }) => ({\n padding: '14px 12px',\n }),\n multiline: {\n padding: '0px',\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n root: ({ theme }) => ({\n fontWeight: 700,\n mb: '4px',\n fontSize: '14px',\n transform: 'none',\n '.MuiInputLabel-asterisk': {\n color: theme.palette.secondary.main,\n },\n }),\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: ({ theme, ownerState }) => ({\n [`& .${inputBaseClasses.root}`]: {\n marginTop: ownerState.label && theme.spacing(3),\n },\n }),\n },\n },\n MuiMenu: {\n defaultProps: {\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n height: '38px',\n paddingLeft: '12px',\n paddingRight: '12px',\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n fontWeight: 900,\n textTransform: 'capitalize',\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n textTransform: 'var(--synapse-button-text-transform)' as any,\n },\n },\n },\n MuiTooltip: {\n defaultProps: {\n arrow: true,\n slots: {\n transition: TRANSITION_COMPONENT_OVERRIDE,\n },\n },\n styleOverrides: {\n arrow: ({ theme }) => ({\n color: theme.palette.common.black,\n }),\n tooltip: ({ theme }) => ({\n fontSize: '14px',\n borderRadius: '2px',\n backgroundColor: theme.palette.common.black,\n '& .MuiLink-root': {\n color: '#fff',\n },\n }),\n },\n },\n MuiTypography: {\n defaultProps: {\n variantMapping: {\n headline1: 'h1',\n headline2: 'h2',\n headline3: 'h3',\n body1: 'p',\n body1Italic: 'p',\n body2: 'p',\n breadcrumb1: 'span',\n breadcrumb2: 'span',\n smallText1: 'p',\n smallText2: 'p',\n smallLink: 'span',\n label: 'span',\n buttonLink: 'span',\n hintText: 'p',\n sectionTitle: 'p',\n subsectionHeader: 'p',\n dataFieldKey: 'p',\n },\n },\n },\n },\n styledBackground:\n \"url('https://s3.amazonaws.com/static.synapse.org/images/SynapseLoginPageBackground.svg')\",\n}\n\nexport default defaultMuiThemeOptions\n"],"mappings":"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"}