synapse-react-client 4.0.45 → 4.0.47

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 (842) 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/aridhia-queries/useSubmitAridhiaDar.js +2 -2
  15. package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
  16. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
  17. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
  18. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  19. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  29. package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
  30. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  31. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
  32. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  33. package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
  34. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  35. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
  36. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  37. package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
  38. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  39. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  40. package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
  41. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  42. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
  43. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
  44. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
  45. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
  46. package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
  47. package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
  48. package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
  49. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
  50. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
  51. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
  52. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  53. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
  54. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  55. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
  56. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  57. package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
  58. package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
  59. package/dist/components/Authentication/LastLoginInfo.js +3 -3
  60. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  61. package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
  62. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  63. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  64. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  65. package/dist/components/Authentication/TOTPForm.js +3 -3
  66. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  67. package/dist/components/Authentication/index.d.ts +6 -6
  68. package/dist/components/Authentication/index.d.ts.map +1 -1
  69. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
  70. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  71. package/dist/components/CardContainer/CardContainer.js +7 -7
  72. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  73. package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
  74. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  75. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
  76. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  77. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
  78. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  79. package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
  80. package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
  81. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  82. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
  83. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  84. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
  85. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  86. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
  87. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
  88. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  89. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
  90. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  91. package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
  92. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  93. package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
  94. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  95. package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
  96. package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
  97. package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
  98. package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
  99. package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
  100. package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
  101. package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
  102. package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
  103. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
  104. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
  105. package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
  106. package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
  107. package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
  108. package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
  109. package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
  110. package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
  111. package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
  112. package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
  113. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  114. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  115. package/dist/components/ComponentCollapse.js +2 -1
  116. package/dist/components/ComponentCollapse.js.map +1 -1
  117. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  118. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  119. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  120. package/dist/components/DataGrid/SynapseGrid.js +231 -219
  121. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  122. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  123. package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
  124. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  125. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
  126. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  127. package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
  128. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  129. package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
  130. package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
  131. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
  132. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
  133. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
  134. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
  135. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  136. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
  137. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  138. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
  139. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  140. package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
  141. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
  142. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  143. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
  144. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  145. package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
  146. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  147. package/dist/components/DataGrid/components/contextMenu.js +3 -3
  148. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  149. package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
  150. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +14 -12
  151. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  152. package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
  153. package/dist/components/DataGrid/hooks/useStack.js +2 -2
  154. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  155. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  156. package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
  157. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  158. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  159. package/dist/components/DataGrid/utils/columnFactory.js +47 -42
  160. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  161. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
  162. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  163. package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
  164. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  165. package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
  166. package/dist/components/DataGrid/utils/splitPatch.js +22 -13
  167. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  168. package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
  169. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  170. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
  171. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +3 -2
  172. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  173. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
  174. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
  175. package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
  176. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  177. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  178. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
  179. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  180. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  181. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  182. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
  183. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  184. package/dist/components/EntityFinder/EntityFinder.js +4 -4
  185. package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
  186. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  187. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  188. package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
  189. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  190. package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
  191. package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
  192. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  193. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
  194. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  195. package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
  196. package/dist/components/EntityHeaderTable/Filter.js +1 -1
  197. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  198. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  199. package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
  200. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  201. package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
  202. package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
  203. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  204. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  205. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
  206. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
  207. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  208. package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
  209. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  210. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
  211. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  212. package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
  213. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
  214. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  215. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
  216. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
  217. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
  218. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  219. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
  220. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  221. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
  222. package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
  223. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
  224. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
  225. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
  226. package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
  227. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
  228. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
  229. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
  230. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
  231. package/dist/components/FormTemplateEditor/StepCard.js +15 -10
  232. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
  233. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
  234. package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
  235. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
  236. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
  237. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
  238. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
  239. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
  240. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  241. package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
  242. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  243. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +46 -46
  244. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
  245. package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
  246. package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
  247. package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
  248. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  249. package/dist/components/GenericCard/TableRowGenericCard.js +38 -38
  250. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  251. package/dist/components/GoalsV3/GoalsV3.js +1 -1
  252. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  253. package/dist/components/HelpPopover/HelpPopover.js +1 -1
  254. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  255. package/dist/components/HexGrid/HexGrid.d.ts +3 -1
  256. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  257. package/dist/components/HexGrid/HexGrid.js +14 -13
  258. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  259. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  260. package/dist/components/IconSvg/IconSvg.js +154 -47
  261. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  262. package/dist/components/IconSvg/index.d.ts +1 -1
  263. package/dist/components/IconSvg/index.d.ts.map +1 -1
  264. package/dist/components/IconSvg/index.js.map +1 -1
  265. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
  266. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
  267. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  268. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
  269. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
  270. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  271. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  272. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
  273. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  274. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
  275. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
  276. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
  277. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
  278. package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
  279. package/dist/components/Markdown/MarkdownCollapse.js +3 -1
  280. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  281. package/dist/components/Markdown/MarkdownEditor.js +1 -1
  282. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  283. package/dist/components/Markdown/widget/index.d.ts +1 -1
  284. package/dist/components/Markdown/widget/index.d.ts.map +1 -1
  285. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
  286. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  287. package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
  288. package/dist/components/ModalDownload/ModalDownload.js +2 -1
  289. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  290. package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
  291. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  292. package/dist/components/Plot/BarPlot.js +1 -1
  293. package/dist/components/Plot/BarPlot.js.map +1 -1
  294. package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
  295. package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
  296. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  297. package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
  298. package/dist/components/PortalList/PortalCard.js +6 -5
  299. package/dist/components/PortalList/PortalCard.js.map +1 -1
  300. package/dist/components/PortalList/PortalList.js +4 -4
  301. package/dist/components/PortalList/PortalList.js.map +1 -1
  302. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
  303. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  304. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
  305. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
  306. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  307. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  308. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
  309. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  310. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  311. package/dist/components/QueryBuilder/FilterConditionRow.js +31 -30
  312. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  313. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  314. package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
  315. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  316. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
  317. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  318. package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
  319. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  320. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
  321. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
  322. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
  323. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
  324. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  325. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  326. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
  327. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
  328. package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
  329. package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
  330. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
  331. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  332. package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
  333. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  334. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
  335. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  336. package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
  337. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  338. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
  339. package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
  340. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
  341. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
  342. package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
  343. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
  344. package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
  345. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  346. package/dist/components/QuerySortSelector.js +5 -5
  347. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
  348. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  349. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
  350. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
  351. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
  352. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
  353. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
  354. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
  355. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
  356. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  357. package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
  358. package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
  359. package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
  360. package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
  361. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
  362. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
  363. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
  364. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
  365. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
  366. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
  367. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
  368. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  369. package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
  370. package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
  371. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  372. package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
  373. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  374. package/dist/components/QueryWrapperErrorBoundary.js +26 -21
  375. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  376. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
  377. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
  378. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  379. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
  380. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  381. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
  382. package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
  383. package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
  384. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  385. package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
  386. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  387. package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
  388. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
  389. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
  390. package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
  391. package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
  392. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
  393. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
  394. package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
  395. package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
  396. package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
  397. package/dist/components/RowDataTable/RowDataTable.js +25 -8
  398. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  399. package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
  400. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  401. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
  402. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
  403. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  404. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
  405. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  406. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
  407. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  408. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
  409. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  410. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
  411. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  412. package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
  413. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  414. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
  415. package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
  416. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  417. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
  418. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  419. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  420. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  421. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  422. package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
  423. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  424. package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
  425. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  426. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
  427. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
  428. package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
  429. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  430. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  431. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  432. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
  433. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  434. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
  435. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
  436. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  437. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
  438. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  439. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
  440. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  441. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
  442. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
  443. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  444. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
  445. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  446. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
  447. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  448. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
  449. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
  450. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  451. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
  452. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  453. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
  454. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
  455. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  456. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
  457. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
  458. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  459. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
  460. package/dist/components/SynapseTable/SqlEditor.js +7 -7
  461. package/dist/components/SynapseTable/SynapseTable.js +8 -8
  462. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  463. package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
  464. package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
  465. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  466. package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
  467. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  468. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  469. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
  470. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  471. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
  472. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  473. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
  474. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +6 -6
  475. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  476. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
  477. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
  478. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  479. package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
  480. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
  481. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
  482. package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
  483. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  484. package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
  485. package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
  486. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  487. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +2 -2
  488. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  489. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  490. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  491. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
  492. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  493. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  494. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
  495. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  496. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +59 -59
  497. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  498. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
  499. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
  500. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  501. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
  502. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  503. package/dist/components/TanStackTable/ColumnHeader.js +1 -1
  504. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  505. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
  506. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  507. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  508. package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
  509. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  510. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
  511. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  512. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
  513. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
  514. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  515. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  516. package/dist/components/TotalQueryResults.js +14 -14
  517. package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
  518. package/dist/components/Webhook/WebhookDashboard.js +3 -3
  519. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  520. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  521. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  522. package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
  523. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  524. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
  525. package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
  526. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
  527. package/dist/components/dataaccess/FormTemplateTable.js +6 -6
  528. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
  529. package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
  530. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  531. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
  532. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  533. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  534. package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
  535. package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
  536. package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
  537. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  538. package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
  539. package/dist/components/download_list/DownloadDetails.js +12 -10
  540. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  541. package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
  542. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  543. package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
  544. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  545. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  546. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  547. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  548. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  549. package/dist/components/error/ErrorBanner.d.ts.map +1 -1
  550. package/dist/components/error/ErrorBanner.js +49 -46
  551. package/dist/components/error/ErrorBanner.js.map +1 -1
  552. package/dist/components/error/ErrorChip.d.ts.map +1 -1
  553. package/dist/components/error/ErrorChip.js +2 -1
  554. package/dist/components/error/ErrorChip.js.map +1 -1
  555. package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
  556. package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
  557. package/dist/components/row_renderers/Dataset.js +6 -6
  558. package/dist/components/row_renderers/Dataset.js.map +1 -1
  559. package/dist/components/row_renderers/Funder.js +1 -1
  560. package/dist/components/row_renderers/Funder.js.map +1 -1
  561. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
  562. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
  563. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  564. package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
  565. package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
  566. package/dist/components/widgets/ElementWithTooltip.js +22 -14
  567. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  568. package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
  569. package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
  570. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  571. package/dist/components/widgets/SynapseImage.js +1 -1
  572. package/dist/components/widgets/SynapseImage.js.map +1 -1
  573. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
  574. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  575. package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
  576. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  577. package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
  578. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
  579. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  580. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
  581. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  582. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
  583. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
  584. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  585. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
  586. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  587. package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
  588. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  589. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
  590. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
  591. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  592. package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
  593. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  594. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
  595. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
  596. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
  597. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
  598. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  599. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
  600. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
  601. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
  602. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  603. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
  604. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
  605. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
  606. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  607. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
  608. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
  609. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  610. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
  611. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
  612. package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
  613. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  614. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
  615. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
  616. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  617. package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
  618. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  619. package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
  620. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  621. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
  622. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  623. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
  624. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  625. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
  626. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  627. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
  628. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  629. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
  630. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
  631. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
  632. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
  633. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
  634. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
  635. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
  636. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
  637. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
  638. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  639. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
  640. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
  641. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
  642. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
  643. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
  644. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
  645. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
  646. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
  647. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
  648. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
  649. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
  650. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
  651. package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
  652. package/dist/mocks/mockAnnotationColumns.js +1 -1
  653. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  654. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +17 -0
  655. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  656. package/dist/mocks/msw/handlers/aridhiaHandlers.js +62 -42
  657. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  658. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
  659. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  660. package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
  661. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  662. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
  663. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
  664. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
  665. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
  666. package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
  667. package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
  668. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  669. package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
  670. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  671. package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
  672. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  673. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  674. package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
  675. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  676. package/dist/mocks/msw/server.d.ts.map +1 -1
  677. package/dist/mocks/msw/server.js +4 -2
  678. package/dist/mocks/msw/server.js.map +1 -1
  679. package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
  680. package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
  681. package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
  682. package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
  683. package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
  684. package/dist/stories/ColorPaletteInspector.js +2 -2
  685. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  686. package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
  687. package/dist/style/main.css +1 -1
  688. package/dist/synapse-queries/auth/useOIDC.js +2 -2
  689. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  690. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
  691. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
  692. package/dist/synapse-queries/challenge/useChallenge.js +2 -2
  693. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  694. package/dist/synapse-queries/chat/useChat.js +8 -8
  695. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  696. package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
  697. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  698. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
  699. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  700. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
  701. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  702. package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
  703. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  704. package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
  705. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  706. package/dist/synapse-queries/download/index.js +2 -2
  707. package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
  708. package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
  709. package/dist/synapse-queries/download/useDownloadList.js +14 -13
  710. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  711. package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
  712. package/dist/synapse-queries/entity/useEntity.js +20 -20
  713. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  714. package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
  715. package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
  716. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  717. package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
  718. package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
  719. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  720. package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
  721. package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
  722. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  723. package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
  724. package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
  725. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  726. package/dist/synapse-queries/forum/useReply.js +6 -6
  727. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  728. package/dist/synapse-queries/forum/useThread.js +14 -14
  729. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  730. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  731. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  732. package/dist/synapse-queries/grid/useGridSession.js +4 -4
  733. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  734. package/dist/synapse-queries/index.js +177 -176
  735. package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
  736. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  737. package/dist/synapse-queries/portal/usePortal.js +7 -7
  738. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  739. package/dist/synapse-queries/subscription/useSubscription.js +4 -4
  740. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  741. package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
  742. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  743. package/dist/synapse-queries/team/useTeam.js +2 -2
  744. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  745. package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
  746. package/dist/synapse-queries/team/useTeamList.js +3 -3
  747. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  748. package/dist/synapse-queries/team/useTeamMembers.js +8 -8
  749. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  750. package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
  751. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  752. package/dist/synapse-queries/trash/useTrashCan.js +4 -4
  753. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  754. package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
  755. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  756. package/dist/synapse-queries/user/useFavorites.js +4 -4
  757. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  758. package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
  759. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  760. package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
  761. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  762. package/dist/synapse-queries/wiki/useWiki.js +10 -10
  763. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  764. package/dist/theme/DefaultTheme.d.ts.map +1 -1
  765. package/dist/theme/DefaultTheme.js +4 -1
  766. package/dist/theme/DefaultTheme.js.map +1 -1
  767. package/dist/tsconfig.build.tsbuildinfo +1 -1
  768. package/dist/utils/APIConstants.d.ts.map +1 -1
  769. package/dist/utils/APIConstants.js.map +1 -1
  770. package/dist/utils/AppUtils/AppUtils.js +1 -1
  771. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  772. package/dist/utils/ContentTypeUtils.js +4 -4
  773. package/dist/utils/ContentTypeUtils.js.map +1 -1
  774. package/dist/utils/PermissionLevelToAccessType.js +1 -1
  775. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  776. package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
  777. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  778. package/dist/utils/context/DocumentMetadataContext.js +1 -1
  779. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  780. package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
  781. package/dist/utils/functions/AccessControlListUtils.js +3 -3
  782. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  783. package/dist/utils/functions/ArrayUtils.js +2 -2
  784. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  785. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  786. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  787. package/dist/utils/functions/FileHandleUtils.js +1 -1
  788. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  789. package/dist/utils/functions/RegularExpressions.js +1 -1
  790. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  791. package/dist/utils/functions/StringUtils.d.ts.map +1 -1
  792. package/dist/utils/functions/StringUtils.js +1 -2
  793. package/dist/utils/functions/StringUtils.js.map +1 -1
  794. package/dist/utils/functions/deepLinkingUtils.js +2 -2
  795. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  796. package/dist/utils/functions/enumerationFacet.d.ts +26 -0
  797. package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
  798. package/dist/utils/functions/enumerationFacet.js +27 -0
  799. package/dist/utils/functions/enumerationFacet.js.map +1 -0
  800. package/dist/utils/functions/facetCountUtils.d.ts +12 -0
  801. package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
  802. package/dist/utils/functions/facetCountUtils.js +9 -0
  803. package/dist/utils/functions/facetCountUtils.js.map +1 -0
  804. package/dist/utils/functions/getEndpoint.js.map +1 -1
  805. package/dist/utils/functions/getUserData.js +1 -1
  806. package/dist/utils/functions/getUserData.js.map +1 -1
  807. package/dist/utils/functions/queryUtils.d.ts +1 -1
  808. package/dist/utils/functions/queryUtils.d.ts.map +1 -1
  809. package/dist/utils/functions/queryUtils.js +26 -22
  810. package/dist/utils/functions/queryUtils.js.map +1 -1
  811. package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
  812. package/dist/utils/functions/testDownloadSpeed.js +17 -26
  813. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  814. package/dist/utils/functions/unCamelCase.js +1 -1
  815. package/dist/utils/functions/unCamelCase.js.map +1 -1
  816. package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
  817. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  818. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
  819. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  820. package/dist/utils/hooks/useLogin.d.ts.map +1 -1
  821. package/dist/utils/hooks/useLogin.js +5 -5
  822. package/dist/utils/hooks/useLogin.js.map +1 -1
  823. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  824. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
  825. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
  826. package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
  827. package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
  828. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
  829. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
  830. package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
  831. package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
  832. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
  833. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
  834. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
  835. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  836. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
  837. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
  838. package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
  839. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  840. package/dist/utils/jsonschema/submissionContext.js +2 -2
  841. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  842. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":"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"}
1
+ {"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport HelpOutlineTwoTone from '@mui/icons-material/HelpOutlineTwoTone'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":";;;;;;;;AAuBA,SAAS,EAAiB,GAA8B;CACtD,IAAM,EAAE,SAAM,2BAAwB;CAEtC,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,GACA,KACC,kBAAC,GAAD;EACE,OACE,kBAAC,GAAD;GACE,SAAQ;GACR,IAAI,EACF,IAAI,EACN;aAEA,kBAAC,GAAD,EAAiB,UAAU,EAAsB,CAAA;EACvC,CAAA;YAGd,kBAAC,GAAD,EACE,IAAI;GACF,IAAI;GACJ,OAAO;GACP,UAAU;EACZ,EACD,CAAA;CACW,CAAA,CAEhB,EAAA,CAAA;AAEN;AAMA,SAAS,EACP,GACA;CACA,IAAM,EAAE,mBAAgB;CACxB,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAY,SAAQ;YAAQ;CAAwC,CAAA,GACpE,kBAAC,GAAD;EAAM,OAAO;YACV,EAAY,KAAI,MACf,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,MAAM,EAAW;GACjB,qBAAqB,EAAW;EACjC,CAAA,EACO,GALK,EAAW,EAKhB,CACX;CACG,CAAA,CACN,EAAA,CAAA;AAEN;AAOA,SAAS,EACP,GACA;CACA,IAAM,EAAE,gBAAa,oBAAiB,GAChC,CAAC,GAAU,KAAe,EAAkB,EAAK,GACjD,IAA4B,IAAe,IAAI;CAGrD,OACE,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,EACN;YANmB,EAAY,UAAU,IASvC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,SAAQ;GACR,IAAI,EAAE,IAAI,EAAE;GACZ,eAAe,EAAY,CAAC,CAAQ;aAEnC,GAAG,IAAW,SAAS,OAAO;EACzB,CAAA,GACR,kBAAC,GAAD;GAAU,IAAI;aACZ,kBAAC,GAAD,EAAoC,GAAI,EAAQ,CAAA;EACxC,CAAA,CACV,EAAA,CAAA,IAEF,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD,EAAoC,GAAI,EAAQ,CAAA,EAChD,CAAA;CAED,CAAA;AAET;AAOA,SAAS,EACP,GACA;CACA,IAAM,EAAE,gBAAa,gCAA6B,MAAS,GACrD,CAAC,GAAO,KAAY,EAA4B,IAAI;CAE1D,OACE,kBAAC,GAAD;EAGE,eAAe;EACR;EACP,WAAW,GAAO,MAAgC;GAEhD,AADA,EAAS,CAAQ,GACjB,EAA2B,CAAQ;EACrC;EACA,SAAS;EACT,iBAAgB,MAAU,EAAO;EACjC,eAAe,GAAO,GAAQ,GAAO,MAEjC,kBAAC,GAAD;GAAU,GAAI;aACZ,kBAAC,GAAD;IACE,MAAM,EAAW,eAAe,CAAM;IACtC,qBAAqB,EAAO;GAC7B,CAAA;EACO,CAAA;EAGd,cAAa,MACX,kBAAC,GAAD;GAAW,GAAI;GAAQ,OAAM;EAA6B,CAAA;CAE7D,CAAA;AAEL;AAWA,SAAS,EACP,GACA;CACA,IAAM,EACJ,kBAAe,IACf,gCAA6B,GAC7B,mBACE,GACE,IAAe,EAAY;CAOjC,IALA,QAAgB;EACd,AAAI,MAAiB,KAAK,KACxB,EAA2B,EAAY,EAAE;CAC7C,GAAG;EAAC;EAAa;EAAc;EAAc;CAA0B,CAAC,GAEpE,MAAiB,GACnB,OAAO,kBAAC,GAAD;EAAY,SAAQ;YAAQ;CAAgC,CAAA;CAErE,IAAI,MAAiB,GAAG;EACtB,IAAM,IAAa,EAAY;EAC/B,OACE,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,YAAY;GACd;aAEA,kBAAC,GAAD;IACE,MAAM,EAAW;IACjB,qBAAqB,EAAW;GACjC,CAAA;EACE,CAAA;CAET;CAEA,OACE,kBAAC,GAAD;EAEE,WAAU;YAFZ,CAIG,KAAgB,kBAAC,GAAD,EAA0C,GAAI,EAAQ,CAAA,GACvE,kBAAC,GAAD,EAAyC,GAAI,EAAQ,CAAA,CAClD;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeSubmission.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeSubmission/ChallengeSubmission.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAGL,MAAM,EAKP,MAAM,iCAAiC,CAAA;AAMxC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,OAAO,UAAU,CAAC,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;IACjE,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,SAAS,EACT,QAAa,GACd,EAAE,wBAAwB,2CA0N1B;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"ChallengeSubmission.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeSubmission/ChallengeSubmission.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAGL,MAAM,EAKP,MAAM,iCAAiC,CAAA;AAMxC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,OAAO,UAAU,CAAC,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;IACjE,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,SAAS,EACT,QAAa,GACd,EAAE,wBAAwB,2CA6N1B;AAED,eAAe,mBAAmB,CAAA"}
@@ -20,7 +20,7 @@ function y({ entityType: y, projectId: b, pageSize: x = 10 }) {
20
20
  let n = `Challenge Submission Project-${e.projectId}-${t.id}`;
21
21
  return {
22
22
  name: n,
23
- alias: n.replace(/\s+/g, "_").replace(/-+/g, "_").toLowerCase(),
23
+ alias: n.replaceAll(/\s+/g, "_").replaceAll(/-+/g, "_").toLowerCase(),
24
24
  concreteType: v,
25
25
  description: `This Project was automatically created for Team "${t.name}" for Challenge "${e.id}"`
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeSubmission.js","names":[],"sources":["../../../src/components/ChallengeSubmission/ChallengeSubmission.tsx"],"sourcesContent":["import { createEntity } from '@/synapse-client'\nimport {\n useGetCurrentUserProfile,\n useGetEntityACL,\n useGetEntityAlias,\n useGetEntityChallenge,\n useGetEntityPermissions,\n useGetUserSubmissionTeams,\n useUpdateEntityACL,\n} from '@/synapse-queries'\nimport { useGetTeam } from '@/synapse-queries/team/useTeam'\nimport { useSynapseContext } from '@/utils'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ACCESS_TYPE,\n Challenge,\n Entity,\n Project,\n PROJECT_CONCRETE_TYPE_VALUE,\n ResourceAccess,\n Team,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport { ErrorBanner, SynapseErrorBoundary } from '../error/ErrorBanner'\nimport ChallengeSubmissionStepper from './ChallengeSubmissionStepper'\nimport SubmissionDirectoryList from './SubmissionDirectoryList'\n\nexport type EntityItem = Entity & {\n repositoryName?: string\n versionNumber?: number\n}\n\nexport type ChallengeSubmissionProps = {\n entityType: typeof EntityType.dockerrepo | typeof EntityType.file\n pageSize: number\n projectId: string\n}\n\nexport function ChallengeSubmission({\n entityType,\n projectId,\n pageSize = 10,\n}: ChallengeSubmissionProps) {\n const { isAuthenticated, accessToken } = useSynapseContext()\n\n const [loading, setLoading] = useState<boolean>(true)\n const [errorMessage, setErrorMessage] = useState<string>()\n const [submissionTeamId, setSubmissionTeamId] = useState<string>()\n const [challengeProjectId, setChallengeProjectId] = useState<string>()\n const [newProject, setNewProject] = useState<Project>()\n const [isProjectNewlyCreated, setIsProjectNewlyCreated] = useState<boolean>()\n const [projectAliasFound, setProjectAliasFound] = useState<boolean>()\n const { mutate: updateACL } = useUpdateEntityACL()\n const [canSubmit, setCanSubmit] = useState<boolean>(false)\n const [selectedEntity, setSelectedEntity] = useState<EntityItem>()\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n\n const EMPTY_ID = ''\n\n const getProject = (c: Challenge, t: Team): Project => {\n const name = `Challenge Submission Project-${c.projectId}-${t.id}`\n const alias = name.replace(/\\s+/g, '_').replace(/-+/g, '_').toLowerCase()\n return {\n name,\n alias,\n concreteType: PROJECT_CONCRETE_TYPE_VALUE,\n description: `This Project was automatically created for Team \"${t.name}\" for Challenge \"${c.id}\"`,\n }\n }\n\n // Use the existing accessToken if present to get the current user's profile / userId\n const { data: userProfile, isLoading: isProfileLoading } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n throwOnError: true,\n })\n\n // Retrieve the challenge associated with the projectId passed through props\n const { data: challenge } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated && !!projectId,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n // Determine whether or not the given user belongs to any submission teams\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id ?? EMPTY_ID,\n 2,\n )\n\n useEffect(() => {\n if (isAuthenticated && !!challenge && userSubmissionTeams) {\n const isReg = userSubmissionTeams.results.length > 0\n if (!isReg) {\n setErrorMessage(\n 'Error: Please join a Submission Team before continuing.',\n )\n return setLoading(false)\n }\n if (userSubmissionTeams.results.length > 1) {\n setErrorMessage(\n 'Error: You are a member of more than one Submission Team. You may only belong to one Submission Team per Challenge.',\n )\n return setLoading(false)\n }\n setSubmissionTeamId(userSubmissionTeams.results[0])\n }\n }, [challenge, isAuthenticated, userSubmissionTeams])\n\n const { data: submissionTeam } = useGetTeam(submissionTeamId!, {\n enabled: !!submissionTeamId,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n const { data: entityAlias } = useGetEntityAlias(\n newProject?.alias ?? EMPTY_ID,\n {\n enabled: newProject !== undefined && !!challenge && !!submissionTeam,\n throwOnError: true,\n },\n )\n useEffect(() => {\n if (entityAlias) {\n setProjectAliasFound(true)\n setChallengeProjectId(entityAlias.id)\n } else {\n setProjectAliasFound(false)\n }\n }, [entityAlias])\n\n /**\n * If the challenge project was just created, retrieve its ACL\n * and add the submission team to it\n */\n const { data: entityACL } = useGetEntityACL(challengeProjectId ?? EMPTY_ID, {\n enabled: !!challengeProjectId && isProjectNewlyCreated === true,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n useEffect(() => {\n if (entityACL && isProjectNewlyCreated === true) {\n // Give submission team admin access to challenge project\n const teamResourceAccess: ResourceAccess = {\n principalId: Number(submissionTeam!.id),\n accessType: [\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CHANGE_SETTINGS,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.MODERATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.UPDATE,\n ],\n }\n updateACL({\n ...entityACL,\n resourceAccess: [...entityACL.resourceAccess, teamResourceAccess],\n })\n setIsProjectNewlyCreated(false)\n }\n }, [entityACL])\n\n const { data: entityPermissions } = useGetEntityPermissions(\n challengeProjectId!,\n {\n enabled: !!challengeProjectId,\n refetchInterval: Infinity,\n throwOnError: true,\n },\n )\n\n useEffect(() => {\n if (entityPermissions?.canView && entityPermissions.canAddChild) {\n setCanSubmit(true)\n }\n setLoading(false)\n }, [entityPermissions])\n\n useEffect(() => {\n if (!isAuthenticated && (!!userProfile || !isProfileLoading)) {\n setLoading(false)\n setErrorMessage('Please login to continue.')\n }\n }, [isAuthenticated, userProfile, isProfileLoading])\n\n useEffect(() => {\n if (isAuthenticated && submissionTeam && challenge && !newProject) {\n const project = getProject(challenge, submissionTeam)\n setNewProject(project)\n }\n }, [isAuthenticated, submissionTeam, challenge, newProject])\n\n useEffect(() => {\n async function createChallengeProject() {\n const project: Project = getProject(challenge!, submissionTeam!)\n const challengeProject = await createEntity(project, accessToken)\n if (challengeProject?.id) {\n setChallengeProjectId(challengeProject.id)\n setIsProjectNewlyCreated(true)\n }\n }\n if (\n isAuthenticated &&\n submissionTeam &&\n challenge &&\n newProject &&\n projectAliasFound === false\n ) {\n createChallengeProject()\n }\n }, [\n isAuthenticated,\n submissionTeam,\n challenge,\n newProject,\n projectAliasFound,\n accessToken,\n ])\n\n const itemSelectedHandler = (entity: EntityItem) => {\n setSelectedEntity(entity)\n setIsShowingModal(true)\n }\n\n const onModalClose = () => {\n setIsShowingModal(false)\n }\n\n return (\n <SynapseErrorBoundary>\n {loading && (\n <span data-testid=\"SpinnerButton-spinner\" className=\"spinner\" />\n )}\n {canSubmit && (\n <>\n <SubmissionDirectoryList\n entityType={entityType}\n pageSize={pageSize}\n challengeProjectId={challengeProjectId!}\n onItemSelected={itemSelectedHandler}\n />\n {userProfile && selectedEntity && (\n <ChallengeSubmissionStepper\n projectId={projectId}\n userId={userProfile?.ownerId}\n teamId={submissionTeamId!}\n entity={selectedEntity}\n entityType={entityType}\n isShowingModal={isShowingModal}\n onClose={onModalClose}\n />\n )}\n </>\n )}\n {errorMessage && <ErrorBanner error={errorMessage}></ErrorBanner>}\n </SynapseErrorBoundary>\n )\n}\n\nexport default ChallengeSubmission\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChallengeSubmission.js","names":[],"sources":["../../../src/components/ChallengeSubmission/ChallengeSubmission.tsx"],"sourcesContent":["import { createEntity } from '@/synapse-client'\nimport {\n useGetCurrentUserProfile,\n useGetEntityACL,\n useGetEntityAlias,\n useGetEntityChallenge,\n useGetEntityPermissions,\n useGetUserSubmissionTeams,\n useUpdateEntityACL,\n} from '@/synapse-queries'\nimport { useGetTeam } from '@/synapse-queries/team/useTeam'\nimport { useSynapseContext } from '@/utils'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport {\n ACCESS_TYPE,\n Challenge,\n Entity,\n Project,\n PROJECT_CONCRETE_TYPE_VALUE,\n ResourceAccess,\n Team,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport { ErrorBanner, SynapseErrorBoundary } from '../error/ErrorBanner'\nimport ChallengeSubmissionStepper from './ChallengeSubmissionStepper'\nimport SubmissionDirectoryList from './SubmissionDirectoryList'\n\nexport type EntityItem = Entity & {\n repositoryName?: string\n versionNumber?: number\n}\n\nexport type ChallengeSubmissionProps = {\n entityType: typeof EntityType.dockerrepo | typeof EntityType.file\n pageSize: number\n projectId: string\n}\n\nexport function ChallengeSubmission({\n entityType,\n projectId,\n pageSize = 10,\n}: ChallengeSubmissionProps) {\n const { isAuthenticated, accessToken } = useSynapseContext()\n\n const [loading, setLoading] = useState<boolean>(true)\n const [errorMessage, setErrorMessage] = useState<string>()\n const [submissionTeamId, setSubmissionTeamId] = useState<string>()\n const [challengeProjectId, setChallengeProjectId] = useState<string>()\n const [newProject, setNewProject] = useState<Project>()\n const [isProjectNewlyCreated, setIsProjectNewlyCreated] = useState<boolean>()\n const [projectAliasFound, setProjectAliasFound] = useState<boolean>()\n const { mutate: updateACL } = useUpdateEntityACL()\n const [canSubmit, setCanSubmit] = useState<boolean>(false)\n const [selectedEntity, setSelectedEntity] = useState<EntityItem>()\n const [isShowingModal, setIsShowingModal] = useState<boolean>(false)\n\n const EMPTY_ID = ''\n\n const getProject = (c: Challenge, t: Team): Project => {\n const name = `Challenge Submission Project-${c.projectId}-${t.id}`\n const alias = name\n .replaceAll(/\\s+/g, '_')\n .replaceAll(/-+/g, '_')\n .toLowerCase()\n return {\n name,\n alias,\n concreteType: PROJECT_CONCRETE_TYPE_VALUE,\n description: `This Project was automatically created for Team \"${t.name}\" for Challenge \"${c.id}\"`,\n }\n }\n\n // Use the existing accessToken if present to get the current user's profile / userId\n const { data: userProfile, isLoading: isProfileLoading } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n throwOnError: true,\n })\n\n // Retrieve the challenge associated with the projectId passed through props\n const { data: challenge } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated && !!projectId,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n // Determine whether or not the given user belongs to any submission teams\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id ?? EMPTY_ID,\n 2,\n )\n\n useEffect(() => {\n if (isAuthenticated && !!challenge && userSubmissionTeams) {\n const isReg = userSubmissionTeams.results.length > 0\n if (!isReg) {\n setErrorMessage(\n 'Error: Please join a Submission Team before continuing.',\n )\n return setLoading(false)\n }\n if (userSubmissionTeams.results.length > 1) {\n setErrorMessage(\n 'Error: You are a member of more than one Submission Team. You may only belong to one Submission Team per Challenge.',\n )\n return setLoading(false)\n }\n setSubmissionTeamId(userSubmissionTeams.results[0])\n }\n }, [challenge, isAuthenticated, userSubmissionTeams])\n\n const { data: submissionTeam } = useGetTeam(submissionTeamId!, {\n enabled: !!submissionTeamId,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n const { data: entityAlias } = useGetEntityAlias(\n newProject?.alias ?? EMPTY_ID,\n {\n enabled: newProject !== undefined && !!challenge && !!submissionTeam,\n throwOnError: true,\n },\n )\n useEffect(() => {\n if (entityAlias) {\n setProjectAliasFound(true)\n setChallengeProjectId(entityAlias.id)\n } else {\n setProjectAliasFound(false)\n }\n }, [entityAlias])\n\n /**\n * If the challenge project was just created, retrieve its ACL\n * and add the submission team to it\n */\n const { data: entityACL } = useGetEntityACL(challengeProjectId ?? EMPTY_ID, {\n enabled: !!challengeProjectId && isProjectNewlyCreated === true,\n refetchInterval: Infinity,\n throwOnError: true,\n })\n\n useEffect(() => {\n if (entityACL && isProjectNewlyCreated === true) {\n // Give submission team admin access to challenge project\n const teamResourceAccess: ResourceAccess = {\n principalId: Number(submissionTeam!.id),\n accessType: [\n ACCESS_TYPE.CHANGE_PERMISSIONS,\n ACCESS_TYPE.CHANGE_SETTINGS,\n ACCESS_TYPE.CREATE,\n ACCESS_TYPE.DELETE,\n ACCESS_TYPE.DOWNLOAD,\n ACCESS_TYPE.MODERATE,\n ACCESS_TYPE.READ,\n ACCESS_TYPE.UPDATE,\n ],\n }\n updateACL({\n ...entityACL,\n resourceAccess: [...entityACL.resourceAccess, teamResourceAccess],\n })\n setIsProjectNewlyCreated(false)\n }\n }, [entityACL])\n\n const { data: entityPermissions } = useGetEntityPermissions(\n challengeProjectId!,\n {\n enabled: !!challengeProjectId,\n refetchInterval: Infinity,\n throwOnError: true,\n },\n )\n\n useEffect(() => {\n if (entityPermissions?.canView && entityPermissions.canAddChild) {\n setCanSubmit(true)\n }\n setLoading(false)\n }, [entityPermissions])\n\n useEffect(() => {\n if (!isAuthenticated && (!!userProfile || !isProfileLoading)) {\n setLoading(false)\n setErrorMessage('Please login to continue.')\n }\n }, [isAuthenticated, userProfile, isProfileLoading])\n\n useEffect(() => {\n if (isAuthenticated && submissionTeam && challenge && !newProject) {\n const project = getProject(challenge, submissionTeam)\n setNewProject(project)\n }\n }, [isAuthenticated, submissionTeam, challenge, newProject])\n\n useEffect(() => {\n async function createChallengeProject() {\n const project: Project = getProject(challenge!, submissionTeam!)\n const challengeProject = await createEntity(project, accessToken)\n if (challengeProject?.id) {\n setChallengeProjectId(challengeProject.id)\n setIsProjectNewlyCreated(true)\n }\n }\n if (\n isAuthenticated &&\n submissionTeam &&\n challenge &&\n newProject &&\n projectAliasFound === false\n ) {\n createChallengeProject()\n }\n }, [\n isAuthenticated,\n submissionTeam,\n challenge,\n newProject,\n projectAliasFound,\n accessToken,\n ])\n\n const itemSelectedHandler = (entity: EntityItem) => {\n setSelectedEntity(entity)\n setIsShowingModal(true)\n }\n\n const onModalClose = () => {\n setIsShowingModal(false)\n }\n\n return (\n <SynapseErrorBoundary>\n {loading && (\n <span data-testid=\"SpinnerButton-spinner\" className=\"spinner\" />\n )}\n {canSubmit && (\n <>\n <SubmissionDirectoryList\n entityType={entityType}\n pageSize={pageSize}\n challengeProjectId={challengeProjectId!}\n onItemSelected={itemSelectedHandler}\n />\n {userProfile && selectedEntity && (\n <ChallengeSubmissionStepper\n projectId={projectId}\n userId={userProfile?.ownerId}\n teamId={submissionTeamId!}\n entity={selectedEntity}\n entityType={entityType}\n isShowingModal={isShowingModal}\n onClose={onModalClose}\n />\n )}\n </>\n )}\n {errorMessage && <ErrorBanner error={errorMessage}></ErrorBanner>}\n </SynapseErrorBoundary>\n )\n}\n\nexport default ChallengeSubmission\n"],"mappings":";;;;;;;;;;;;;;;;;AAsCA,SAAgB,EAAoB,EAClC,eACA,cACA,cAAW,MACgB;CAC3B,IAAM,EAAE,oBAAiB,mBAAgB,EAAkB,GAErD,CAAC,GAAS,KAAc,EAAkB,EAAI,GAC9C,CAAC,GAAc,KAAmB,EAAiB,GACnD,CAAC,GAAkB,KAAuB,EAAiB,GAC3D,CAAC,GAAoB,KAAyB,EAAiB,GAC/D,CAAC,GAAY,KAAiB,EAAkB,GAChD,CAAC,GAAuB,KAA4B,EAAkB,GACtE,CAAC,GAAmB,KAAwB,EAAkB,GAC9D,EAAE,QAAQ,MAAc,GAAmB,GAC3C,CAAC,GAAW,KAAgB,EAAkB,EAAK,GACnD,CAAC,GAAgB,KAAqB,EAAqB,GAC3D,CAAC,GAAgB,KAAqB,EAAkB,EAAK,GAI7D,KAAc,GAAc,MAAqB;EACrD,IAAM,IAAO,gCAAgC,EAAE,UAAU,GAAG,EAAE;EAK9D,OAAO;GACL;GACA,OANY,EACX,WAAW,QAAQ,GAAG,EACtB,WAAW,OAAO,GAAG,EACrB,YAGD;GACA,cAAc;GACd,aAAa,oDAAoD,EAAE,KAAK,mBAAmB,EAAE,GAAG;EAClG;CACF,GAGM,EAAE,MAAM,GAAa,WAAW,MACpC,EAAyB;EACvB,SAAS;EACT,cAAc;CAChB,CAAC,GAGG,EAAE,MAAM,MAAc,GAAsB,GAAW;EAC3D,SAAS,KAAmB,CAAC,CAAC;EAC9B,iBAAiB;EACjB,cAAc;CAChB,CAAC,GAGK,EAAE,MAAM,MAAwB,EACpC,GAAW,MAAM,IACjB,CACF;CAEA,QAAgB;EACd,IAAI,KAAqB,KAAa,GAAqB;GAEzD,IAAI,EADU,EAAoB,QAAQ,SAAS,IAKjD,OAHA,EACE,yDACF,GACO,EAAW,EAAK;GAEzB,IAAI,EAAoB,QAAQ,SAAS,GAIvC,OAHA,EACE,qHACF,GACO,EAAW,EAAK;GAEzB,EAAoB,EAAoB,QAAQ,EAAE;EACpD;CACF,GAAG;EAAC;EAAW;EAAiB;CAAmB,CAAC;CAEpD,IAAM,EAAE,MAAM,MAAmB,EAAW,GAAmB;EAC7D,SAAS,CAAC,CAAC;EACX,iBAAiB;EACjB,cAAc;CAChB,CAAC,GAEK,EAAE,MAAM,MAAgB,EAC5B,GAAY,SAAS,IACrB;EACE,SAAS,MAAe,KAAA,KAAa,CAAC,CAAC,KAAa,CAAC,CAAC;EACtD,cAAc;CAChB,CACF;CACA,QAAgB;EACd,AAAI,KACF,EAAqB,EAAI,GACzB,EAAsB,EAAY,EAAE,KAEpC,EAAqB,EAAK;CAE9B,GAAG,CAAC,CAAW,CAAC;CAMhB,IAAM,EAAE,MAAM,MAAc,EAAgB,KAAsB,IAAU;EAC1E,SAAS,CAAC,CAAC,KAAsB,MAA0B;EAC3D,iBAAiB;EACjB,cAAc;CAChB,CAAC;CAED,QAAgB;EACd,IAAI,KAAa,MAA0B,IAAM;GAE/C,IAAM,IAAqC;IACzC,aAAa,OAAO,EAAgB,EAAE;IACtC,YAAY;KACV,EAAY;KACZ,EAAY;KACZ,EAAY;KACZ,EAAY;KACZ,EAAY;KACZ,EAAY;KACZ,EAAY;KACZ,EAAY;IACd;GACF;GAKA,AAJA,EAAU;IACR,GAAG;IACH,gBAAgB,CAAC,GAAG,EAAU,gBAAgB,CAAkB;GAClE,CAAC,GACD,EAAyB,EAAK;EAChC;CACF,GAAG,CAAC,CAAS,CAAC;CAEd,IAAM,EAAE,MAAM,MAAsB,EAClC,GACA;EACE,SAAS,CAAC,CAAC;EACX,iBAAiB;EACjB,cAAc;CAChB,CACF;CA2DA,OAzDA,QAAgB;EAId,AAHI,GAAmB,WAAW,EAAkB,eAClD,EAAa,EAAI,GAEnB,EAAW,EAAK;CAClB,GAAG,CAAC,CAAiB,CAAC,GAEtB,QAAgB;EACd,AAAI,CAAC,MAAsB,KAAe,CAAC,OACzC,EAAW,EAAK,GAChB,EAAgB,2BAA2B;CAE/C,GAAG;EAAC;EAAiB;EAAa;CAAgB,CAAC,GAEnD,QAAgB;EACd,AAAI,KAAmB,KAAkB,KAAa,CAAC,KAErD,EADgB,EAAW,GAAW,CACxB,CAAO;CAEzB,GAAG;EAAC;EAAiB;EAAgB;EAAW;CAAU,CAAC,GAE3D,QAAgB;EACd,eAAe,IAAyB;GAEtC,IAAM,IAAmB,MAAM,EADN,EAAW,GAAY,CACJ,GAAS,CAAW;GAChE,AAAI,GAAkB,OACpB,EAAsB,EAAiB,EAAE,GACzC,EAAyB,EAAI;EAEjC;EACA,AACE,KACA,KACA,KACA,KACA,MAAsB,MAEtB,EAAuB;CAE3B,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAYC,kBAAC,GAAD,EAAA,UAAA;EACG,KACC,kBAAC,QAAD;GAAM,eAAY;GAAwB,WAAU;EAAW,CAAA;EAEhE,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACc;GACF;GACU;GACpB,iBApBmB,MAAuB;IAElD,AADA,EAAkB,CAAM,GACxB,EAAkB,EAAI;GACxB;EAkBS,CAAA,GACA,KAAe,KACd,kBAAC,GAAD;GACa;GACX,QAAQ,GAAa;GACrB,QAAQ;GACR,QAAQ;GACI;GACI;GAChB,eAzBe;IACzB,EAAkB,EAAK;GACzB;EAwBW,CAAA,CAEH,EAAA,CAAA;EAEH,KAAgB,kBAAC,GAAD,EAAa,OAAO,EAA2B,CAAA;CAC5C,EAAA,CAAA;AAE1B"}
@@ -3,7 +3,7 @@ import { useGetEvaluation as t, useGetEvaluationRoundsInfinite as n } from "../.
3
3
  import { getCurrentOrNextOrLatestRound as r } from "../../utils/challenge/evaluation/EvaluationUtils.js";
4
4
  import { useEffect as i, useMemo as a } from "react";
5
5
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
6
- import { InfoTwoTone as l } from "@mui/icons-material";
6
+ import l from "@mui/icons-material/InfoTwoTone";
7
7
  import u from "dayjs";
8
8
  import d from "@mui/material/Tooltip";
9
9
  //#region src/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluationQueueCurrentRoundInfo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.tsx"],"sourcesContent":["import {\n useGetEvaluation,\n useGetEvaluationRoundsInfinite,\n} from '@/synapse-queries/evaluation/useEvaluation'\nimport { getCurrentOrNextOrLatestRound } from '@/utils/challenge/evaluation/EvaluationUtils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport Tooltip from '@mui/material/Tooltip'\nimport dayjs from 'dayjs'\nimport { useEffect, useMemo } from 'react'\n\ntype EvaluationQueueInfoProps = {\n evaluationId: string\n}\n\n/**\n * Displays an information tooltip about the current (or recent) round of an Evaluation Queue.\n * @param props\n * @constructor\n */\nfunction EvaluationQueueCurrentRoundInfo(props: EvaluationQueueInfoProps) {\n const { evaluationId } = props\n\n const { data: evaluation } = useGetEvaluation(evaluationId)\n\n const {\n data: infiniteData,\n hasNextPage,\n isFetchingNextPage,\n fetchNextPage,\n } = useGetEvaluationRoundsInfinite(evaluationId)\n\n useEffect(() => {\n // Fetch all pages\n if (hasNextPage && !isFetchingNextPage) {\n void fetchNextPage()\n }\n }, [fetchNextPage, hasNextPage, isFetchingNextPage])\n\n const rounds = useMemo(\n () => infiniteData?.pages.flatMap(page => page.page!) ?? [],\n [infiniteData?.pages],\n )\n\n const currentRound = getCurrentOrNextOrLatestRound(rounds)\n\n const title = (\n <>\n {evaluation?.description && <p>{evaluation?.description}</p>}\n {currentRound?.roundStart && (\n <p>\n <strong>Start:</strong> {formatDate(dayjs(currentRound?.roundStart))}\n </p>\n )}\n {currentRound?.roundEnd && (\n <p>\n <strong>End:</strong> {formatDate(dayjs(currentRound?.roundEnd))}\n </p>\n )}\n <p>\n <strong>Submission Limits:</strong>{' '}\n {currentRound?.limits\n ? `${currentRound?.limits\n .map(\n limit =>\n `${\n limit.maximumSubmissions\n } ${limit.limitType.toLowerCase()} submissions`,\n )\n .join(', ')}`\n : 'No limit'}\n </p>\n </>\n )\n\n return (\n <Tooltip title={title}>\n <InfoTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n )\n}\n\nexport default EvaluationQueueCurrentRoundInfo\n"],"mappings":";;;;;;;;;AAoBA,SAAS,EAAgC,GAAiC;CACxE,IAAM,EAAE,oBAAiB,GAEnB,EAAE,MAAM,MAAe,EAAiB,CAAY,GAEpD,EACJ,MAAM,GACN,gBACA,uBACA,qBACE,EAA+B,CAAY;CAE/C,QAAgB;EAEd,AAAI,KAAe,CAAC,KAClB,EAAmB;CAEvB,GAAG;EAAC;EAAe;EAAa;CAAkB,CAAC;CAOnD,IAAM,IAAe,EALN,QACP,GAAc,MAAM,SAAQ,MAAQ,EAAK,IAAK,KAAK,CAAC,GAC1D,CAAC,GAAc,KAAK,CAG6B,CAAM;CA+BzD,OACE,kBAAC,GAAD;EAAgB,OA7BhB,kBAAA,GAAA,EAAA,UAAA;GACG,GAAY,eAAe,kBAAC,KAAD,EAAA,UAAI,GAAY,YAAe,CAAA;GAC1D,GAAc,cACb,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,SAAc,CAAA;IAAC;IAAE,EAAW,EAAM,GAAc,UAAU,CAAC;GAClE,EAAA,CAAA;GAEJ,GAAc,YACb,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,OAAY,CAAA;IAAC;IAAE,EAAW,EAAM,GAAc,QAAQ,CAAC;GAC9D,EAAA,CAAA;GAEL,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,qBAA0B,CAAA;IAAE;IACnC,GAAc,SACX,GAAG,GAAc,OACd,KACC,MACE,GACE,EAAM,mBACP,GAAG,EAAM,UAAU,YAAY,EAAE,aACtC,EACC,KAAK,IAAI,MACZ;GACH,EAAA,CAAA;EACH,EAAA,CAIc;YACd,kBAAC,GAAD,EAAa,IAAI,EAAE,OAAO,WAAW,EAAI,CAAA;CAClC,CAAA;AAEb"}
1
+ {"version":3,"file":"EvaluationQueueCurrentRoundInfo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.tsx"],"sourcesContent":["import {\n useGetEvaluation,\n useGetEvaluationRoundsInfinite,\n} from '@/synapse-queries/evaluation/useEvaluation'\nimport { getCurrentOrNextOrLatestRound } from '@/utils/challenge/evaluation/EvaluationUtils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport InfoTwoTone from '@mui/icons-material/InfoTwoTone'\nimport Tooltip from '@mui/material/Tooltip'\nimport dayjs from 'dayjs'\nimport { useEffect, useMemo } from 'react'\n\ntype EvaluationQueueInfoProps = {\n evaluationId: string\n}\n\n/**\n * Displays an information tooltip about the current (or recent) round of an Evaluation Queue.\n * @param props\n * @constructor\n */\nfunction EvaluationQueueCurrentRoundInfo(props: EvaluationQueueInfoProps) {\n const { evaluationId } = props\n\n const { data: evaluation } = useGetEvaluation(evaluationId)\n\n const {\n data: infiniteData,\n hasNextPage,\n isFetchingNextPage,\n fetchNextPage,\n } = useGetEvaluationRoundsInfinite(evaluationId)\n\n useEffect(() => {\n // Fetch all pages\n if (hasNextPage && !isFetchingNextPage) {\n void fetchNextPage()\n }\n }, [fetchNextPage, hasNextPage, isFetchingNextPage])\n\n const rounds = useMemo(\n () => infiniteData?.pages.flatMap(page => page.page!) ?? [],\n [infiniteData?.pages],\n )\n\n const currentRound = getCurrentOrNextOrLatestRound(rounds)\n\n const title = (\n <>\n {evaluation?.description && <p>{evaluation?.description}</p>}\n {currentRound?.roundStart && (\n <p>\n <strong>Start:</strong> {formatDate(dayjs(currentRound?.roundStart))}\n </p>\n )}\n {currentRound?.roundEnd && (\n <p>\n <strong>End:</strong> {formatDate(dayjs(currentRound?.roundEnd))}\n </p>\n )}\n <p>\n <strong>Submission Limits:</strong>{' '}\n {currentRound?.limits\n ? `${currentRound?.limits\n .map(\n limit =>\n `${\n limit.maximumSubmissions\n } ${limit.limitType.toLowerCase()} submissions`,\n )\n .join(', ')}`\n : 'No limit'}\n </p>\n </>\n )\n\n return (\n <Tooltip title={title}>\n <InfoTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n )\n}\n\nexport default EvaluationQueueCurrentRoundInfo\n"],"mappings":";;;;;;;;;AAoBA,SAAS,EAAgC,GAAiC;CACxE,IAAM,EAAE,oBAAiB,GAEnB,EAAE,MAAM,MAAe,EAAiB,CAAY,GAEpD,EACJ,MAAM,GACN,gBACA,uBACA,qBACE,EAA+B,CAAY;CAE/C,QAAgB;EAEd,AAAI,KAAe,CAAC,KAClB,EAAmB;CAEvB,GAAG;EAAC;EAAe;EAAa;CAAkB,CAAC;CAOnD,IAAM,IAAe,EALN,QACP,GAAc,MAAM,SAAQ,MAAQ,EAAK,IAAK,KAAK,CAAC,GAC1D,CAAC,GAAc,KAAK,CAG6B,CAAM;CA+BzD,OACE,kBAAC,GAAD;EAAgB,OA7BhB,kBAAA,GAAA,EAAA,UAAA;GACG,GAAY,eAAe,kBAAC,KAAD,EAAA,UAAI,GAAY,YAAe,CAAA;GAC1D,GAAc,cACb,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,SAAc,CAAA;IAAC;IAAE,EAAW,EAAM,GAAc,UAAU,CAAC;GAClE,EAAA,CAAA;GAEJ,GAAc,YACb,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,OAAY,CAAA;IAAC;IAAE,EAAW,EAAM,GAAc,QAAQ,CAAC;GAC9D,EAAA,CAAA;GAEL,kBAAC,KAAD,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,qBAA0B,CAAA;IAAE;IACnC,GAAc,SACX,GAAG,GAAc,OACd,KACC,MACE,GACE,EAAM,mBACP,GAAG,EAAM,UAAU,YAAY,EAAE,aACtC,EACC,KAAK,IAAI,MACZ;GACH,EAAA,CAAA;EACH,EAAA,CAIc;YACd,kBAAC,GAAD,EAAa,IAAI,EAAE,OAAO,WAAW,EAAI,CAAA;CAClC,CAAA;AAEb"}
@@ -18,10 +18,10 @@ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
18
18
  import { Direction as ie, FILE_ENTITY_CONCRETE_TYPE_VALUE as y, SortBy as ae } from "@sage-bionetworks/synapse-types";
19
19
  import { EntityType as b } from "@sage-bionetworks/synapse-client";
20
20
  import { useQueryClient as x } from "@tanstack/react-query";
21
- import { NotesTwoTone as oe } from "@mui/icons-material";
22
21
  import { Link as S } from "react-router";
23
- import C from "dayjs";
24
- import { DataGrid as se } from "@mui/x-data-grid";
22
+ import oe from "dayjs";
23
+ import { DataGrid as C } from "@mui/x-data-grid";
24
+ import se from "@mui/icons-material/NotesTwoTone";
25
25
  //#region src/components/ChallengeSubmission/SubmissionDirectoryList.tsx
26
26
  function w({ pageSize: w, challengeProjectId: T, entityType: E, onItemSelected: D }) {
27
27
  let O = x(), { accessToken: k, keyFactory: A } = i(), [j, ce] = f(0), [M, N] = f(), [P, F] = f(), [I, L] = f(), [R, z] = f([]), [B, V] = f(), [H, U] = f(!1), [W, G] = f(!1), [K, q] = f(), J = w, Y = `${t(e.PORTAL_ENDPOINT)}Synapse:${T}`, { data: X, refetch: le } = o({
@@ -118,7 +118,7 @@ function w({ pageSize: w, challengeProjectId: T, entityType: E, onItemSelected:
118
118
  t.push({
119
119
  id: e.id,
120
120
  name: E === b.dockerrepo ? e.repositoryName ?? e.name : e.name,
121
- modifiedOn: c(C(e.modifiedOn), "MM/DD/YY")
121
+ modifiedOn: c(oe(e.modifiedOn), "MM/DD/YY")
122
122
  });
123
123
  }), t;
124
124
  }, he = (e) => {
@@ -227,7 +227,7 @@ function w({ pageSize: w, challengeProjectId: T, entityType: E, onItemSelected:
227
227
  my: 3,
228
228
  display: "flex"
229
229
  },
230
- children: [/* @__PURE__ */ _(oe, { sx: {
230
+ children: [/* @__PURE__ */ _(se, { sx: {
231
231
  width: "16px",
232
232
  height: "16px",
233
233
  verticalAlign: "text-bottom"
@@ -248,7 +248,7 @@ function w({ pageSize: w, challengeProjectId: T, entityType: E, onItemSelected:
248
248
  ] })]
249
249
  })]
250
250
  }),
251
- /* @__PURE__ */ _(p, { children: /* @__PURE__ */ _(se, {
251
+ /* @__PURE__ */ _(p, { children: /* @__PURE__ */ _(C, {
252
252
  loading: de,
253
253
  columns: pe,
254
254
  rows: me($),
@@ -1 +1 @@
1
- {"version":3,"file":"SubmissionDirectoryList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/SubmissionDirectoryList.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport {\n invalidateAllQueriesForEntity,\n useGetEntities,\n useGetEntityChildren,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { NotesTwoTone } from '@mui/icons-material'\nimport { Box, Button, Radio, Typography } from '@mui/material'\nimport { DataGrid, GridCellParams, GridColDef } from '@mui/x-data-grid'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Direction,\n Entity,\n EntityChildrenRequest,\n EntityHeader,\n EntityLookupRequest,\n FILE_ENTITY_CONCRETE_TYPE_VALUE,\n FileEntity,\n FileUploadComplete,\n SortBy,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useQueryClient } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Link } from 'react-router'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport FileUpload from '../FileUpload'\nimport IconSvg from '../IconSvg'\nimport { EntityItem } from './ChallengeSubmission'\n\ntype SubmissionDirectoryRow = {\n id: string\n name: string\n modifiedOn: string\n}\n\ntype SubmissionDirectoryListProps = {\n pageSize: number\n challengeProjectId: string\n entityType: typeof EntityType.dockerrepo | typeof EntityType.file\n onItemSelected: (selected: EntityItem) => void\n}\n\ntype FileUploadAttempt = FileUploadComplete & {\n entityId?: string\n}\n\nfunction SubmissionDirectoryList({\n pageSize,\n challengeProjectId,\n entityType,\n onItemSelected,\n}: SubmissionDirectoryListProps) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n const [page, setPage] = useState<number>(0)\n const [selectedItem, setSelectedItem] = useState<EntityItem | undefined>()\n const [errorMessage, setErrorMessage] = useState<string>()\n const [canSubmit, setCanSubmit] = useState<boolean>()\n const [fetchedHeaders, setFetchedHeaders] = useState<EntityHeader[]>([])\n const [nextPageToken, setNextPageToken] = useState<string | undefined>()\n const [fetchNextPage, setFetchNextPage] = useState<boolean>(false)\n const [confirmOpen, setConfirmOpen] = useState<boolean>(false)\n const [uploadAttempt, setUploadAttempt] = useState<FileUploadAttempt>()\n\n const PER_PAGE = pageSize\n const HEADERS_PER_PAGE = 50\n const PROJECT_URL = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${challengeProjectId}`\n\n const request: EntityChildrenRequest = {\n parentId: challengeProjectId,\n nextPageToken: fetchNextPage ? nextPageToken : null,\n includeTypes: [entityType],\n includeTotalChildCount: true,\n sortBy: SortBy.MODIFIED_ON,\n sortDirection: Direction.DESC,\n }\n\n const { data: headerResults, refetch } = useGetEntityChildren(request, {\n enabled: !!challengeProjectId,\n throwOnError: true,\n })\n\n useEffect(() => {\n if (headerResults) {\n const newHeaders = [...fetchedHeaders]\n const headerPage = Math.floor(((page + 1) * PER_PAGE) / HEADERS_PER_PAGE)\n const start = headerPage * HEADERS_PER_PAGE\n newHeaders.splice(start, start + HEADERS_PER_PAGE, ...headerResults.page)\n setFetchedHeaders(newHeaders)\n setFetchNextPage(false)\n setNextPageToken(headerResults.nextPageToken)\n }\n // TODO: Temporary useEffect hook to remove onSuccess QueryOption for @tanstack/react-query v5\n // Refactor this component to remove this effect.\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [headerResults])\n\n function getPageHeaders() {\n const pageStart = page * PER_PAGE\n const pageHeaders = fetchedHeaders.slice(pageStart, pageStart + PER_PAGE)\n return pageHeaders\n }\n\n function reset() {\n setErrorMessage(undefined)\n setCanSubmit(undefined)\n setFetchedHeaders([])\n setNextPageToken(undefined)\n setFetchNextPage(false)\n refetch()\n }\n\n useEffect(() => {\n reset()\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [entityType, pageSize])\n\n const queries = useGetEntities(getPageHeaders())\n const entities = useMemo(\n () =>\n queries\n .filter(q => q.status === 'success')\n .map(q => q.data) as EntityItem[],\n [queries],\n )\n const areEntitiesLoading = queries.some(q => q.isLoading)\n\n const entityChangeHandler = async (value: string) => {\n setCanSubmit(false)\n const entity = entities.find(entity => entity?.id === value)\n if (entity) {\n setSelectedItem(entity)\n if (entityType === EntityType.dockerrepo) {\n let commits\n try {\n commits = await SynapseClient.getDockerTag(\n entity.id!,\n accessToken,\n 0,\n 1,\n )\n } catch (e) {\n return setErrorMessage(e.message)\n }\n if (commits.totalNumberOfResults === 0) {\n return setErrorMessage(\n 'No commits have been made to this repository. Please select a repository with at least one commit.',\n )\n }\n }\n setCanSubmit(true)\n setErrorMessage(undefined)\n }\n }\n\n const columns: GridColDef[] = [\n {\n field: 'radiobutton',\n headerName: '',\n width: 25,\n sortable: false,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: params => {\n return (\n <Radio\n value={params.id}\n checked={params.id === selectedItem?.id}\n onChange={event => {\n entityChangeHandler(event.target.value)\n }}\n />\n )\n },\n },\n {\n field: 'name',\n headerName:\n entityType === EntityType.dockerrepo\n ? 'Docker Repository'\n : 'File Name',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: (params: GridCellParams<Entity, SubmissionDirectoryRow>) => (\n <Link\n to={{\n pathname: `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${params.row.id}`,\n }}\n target=\"_blank\"\n >\n {params.row.name}\n </Link>\n ),\n },\n {\n field: 'modifiedOn',\n headerName: 'Updated On',\n width: 100,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n {\n field: 'id',\n headerName: 'ID',\n width: 200,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n ]\n\n const getRows = (entities: EntityItem[]) => {\n const newRows: SubmissionDirectoryRow[] = []\n entities.forEach(entity => {\n newRows.push({\n id: entity.id!,\n name:\n entityType === EntityType.dockerrepo\n ? (entity.repositoryName ?? entity.name)\n : entity.name,\n modifiedOn: formatDate(dayjs(entity.modifiedOn), 'MM/DD/YY'),\n })\n })\n return newRows\n }\n\n const handlePageChange = (newPageNum: number) => {\n const lastIndexNeeded = Math.min(\n headerResults?.totalChildCount ?? 0,\n (newPageNum + 1) * PER_PAGE,\n )\n if (lastIndexNeeded > fetchedHeaders.length) {\n setFetchNextPage(true)\n }\n setPage(newPageNum)\n }\n\n const itemSelectedHandler = () => {\n onItemSelected(selectedItem!)\n }\n\n function createEntity(file: FileUploadAttempt) {\n // Create Entity\n if (!file) return\n const { fileHandleId, fileName } = file\n const newFileEntity: FileEntity = {\n parentId: challengeProjectId,\n name: fileName,\n concreteType: FILE_ENTITY_CONCRETE_TYPE_VALUE,\n dataFileHandleId: fileHandleId,\n }\n SynapseClient.createEntity(newFileEntity, accessToken)\n .then(() => {\n reset()\n })\n .catch((err: SynapseClientError) => {\n setErrorMessage(err.reason)\n })\n }\n\n async function updateEntity() {\n if (!uploadAttempt) return\n const { fileHandleId, entityId } = uploadAttempt\n if (!entityId)\n return setErrorMessage('Error: missing entityId. Please try again.')\n // Get the entity\n let entity: FileEntity\n try {\n entity = await SynapseClient.getEntity(accessToken, entityId)\n } catch (err) {\n return setErrorMessage(`The entity ${entityId} could not be retrieved.`)\n }\n\n const updateRequest: FileEntity = {\n id: entity.id,\n name: entity.name,\n dataFileHandleId: fileHandleId,\n concreteType: FILE_ENTITY_CONCRETE_TYPE_VALUE,\n parentId: entity.parentId,\n etag: entity.etag,\n modifiedOn: entity.modifiedOn,\n }\n\n try {\n const updatedEntity = await SynapseClient.updateEntity(\n updateRequest,\n accessToken,\n true,\n )\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n updatedEntity.id!,\n )\n queryClient.setQueryData(\n keyFactory.getEntityQueryKey(updatedEntity.id!),\n updatedEntity,\n )\n reset()\n } catch (err) {\n setErrorMessage(err.reason)\n }\n }\n\n const handleUpload = async (response: UploadCallbackResp) => {\n if (response.success && response.resp) {\n const { fileName } = response.resp\n\n // Lookup entity\n const entityLookupRequest: EntityLookupRequest = {\n entityName: fileName,\n parentId: challengeProjectId,\n }\n try {\n const entityId = await SynapseClient.lookupChildEntity(\n entityLookupRequest,\n accessToken,\n )\n // Entity exists, prompt user to update it\n if (entityId) {\n setUploadAttempt({ ...response.resp, entityId: entityId.id })\n setConfirmOpen(true)\n }\n } catch (err) {\n // An existing entity was not found for this file, create it\n setUploadAttempt(undefined)\n createEntity(response.resp)\n }\n } else if (!response.success && response.error) {\n setErrorMessage(response.error.reason as string)\n } else {\n setErrorMessage('An unknown error occurred. Please try again.')\n }\n }\n\n return (\n <Box>\n <Box\n sx={{\n display: 'flex',\n backgroundColor: '#FBFBFC',\n padding: '10px',\n justifyContent: 'space-between',\n }}\n >\n <Typography\n variant=\"h6\"\n sx={{ fontSize: '18px', lineHeight: '20px', fontWeight: 700 }}\n >\n {entityType === EntityType.file\n ? 'Submit File'\n : 'Submit Docker Image'}\n </Typography>\n <Box sx={{ display: 'flex' }}>\n <Typography\n variant=\"body1\"\n sx={{ fontSize: '14px', color: '#71767F' }}\n >\n Your Project SynID:{' '}\n <Link to={{ pathname: PROJECT_URL }} target=\"_blank\">\n {challengeProjectId}\n </Link>\n </Typography>\n <CopyToClipboardIcon value={PROJECT_URL} sx={{ marginTop: '-4px' }} />\n </Box>\n </Box>\n <Box\n sx={{\n my: 3,\n display: 'flex',\n }}\n >\n <NotesTwoTone\n sx={{\n width: '16px',\n height: '16px',\n verticalAlign: 'text-bottom',\n }}\n />\n <Box\n sx={{\n ml: 1,\n }}\n >\n {entityType === EntityType.file && (\n <>\n Choose a prediction file from your submission directory below and\n click \"Submit Selection\" to pick an evaluation queue. If you need\n to add a new file, click \"Upload File\" first.\n </>\n )}\n {entityType === EntityType.dockerrepo && (\n <>\n Choose a Docker image from your submission directory below and\n click \"Submit Selection\" to pick an image version and evaluation\n queue. If you need to upload a new image to your project (\n <code>{challengeProjectId}</code>), see our{' '}\n <Link\n to=\"https://github.com/Sage-Bionetworks-Challenges/sample-model-templates#build-your-model\"\n target=\"_blank\"\n >\n Docker model submission guide\n </Link>{' '}\n for command-line instructions on how to build and upload.\n </>\n )}\n </Box>\n </Box>\n <Box>\n <DataGrid\n loading={areEntitiesLoading}\n columns={columns}\n rows={getRows(entities)}\n rowCount={headerResults?.totalChildCount ?? 0}\n pagination\n paginationMode=\"server\"\n paginationModel={{ page, pageSize: PER_PAGE }}\n pageSizeOptions={[PER_PAGE]}\n onPaginationModelChange={({ page }) => {\n handlePageChange(page)\n }}\n density=\"compact\"\n autoHeight\n sx={{\n fontSize: '14px',\n border: 'none',\n height: '100%',\n '& .MuiDataGrid-columnHeader': {\n backgroundColor: '#F1F3F5',\n },\n '& .Mui-odd': {\n backgroundColor: '#FBFBFC',\n },\n '.MuiDataGrid-columnHeaderTitleContainer': {\n justifyContent: 'space-between',\n },\n '.radio': {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n }}\n getRowClassName={params =>\n params.indexRelativeToCurrentPage % 2 === 0 ? 'Mui-even' : 'Mui-odd'\n }\n />\n </Box>\n {errorMessage && <ErrorBanner error={errorMessage}></ErrorBanner>}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n {entityType === EntityType.file && (\n <FileUpload\n label=\"Upload File\"\n buttonProps={{\n variant: 'outlined',\n endIcon: <IconSvg icon=\"upload\" />,\n sx: { lineHeight: 1 },\n }}\n onComplete={resp => {\n handleUpload(resp)\n }}\n />\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={itemSelectedHandler}\n disabled={!canSubmit}\n >\n Submit Selection\n </Button>\n </Box>\n <ConfirmationDialog\n open={confirmOpen}\n title=\"File exists\"\n content={\n <Typography variant=\"body1\" sx={{ fontSize: '16px' }}>\n A file named &quot;{uploadAttempt?.fileName}&quot; (\n {uploadAttempt?.entityId}) already exists in this location. Do you\n want to update the existing file and create a new version?\n </Typography>\n }\n onCancel={() => setConfirmOpen(false)}\n onConfirm={() => {\n updateEntity()\n setConfirmOpen(false)\n }}\n />\n </Box>\n )\n}\n\nexport default SubmissionDirectoryList\n"],"mappings":"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"}
1
+ {"version":3,"file":"SubmissionDirectoryList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/SubmissionDirectoryList.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport {\n invalidateAllQueriesForEntity,\n useGetEntities,\n useGetEntityChildren,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport NotesTwoTone from '@mui/icons-material/NotesTwoTone'\nimport { Box, Button, Radio, Typography } from '@mui/material'\nimport { DataGrid, GridCellParams, GridColDef } from '@mui/x-data-grid'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n Direction,\n Entity,\n EntityChildrenRequest,\n EntityHeader,\n EntityLookupRequest,\n FILE_ENTITY_CONCRETE_TYPE_VALUE,\n FileEntity,\n FileUploadComplete,\n SortBy,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useQueryClient } from '@tanstack/react-query'\nimport dayjs from 'dayjs'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Link } from 'react-router'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport FileUpload from '../FileUpload'\nimport IconSvg from '../IconSvg'\nimport { EntityItem } from './ChallengeSubmission'\n\ntype SubmissionDirectoryRow = {\n id: string\n name: string\n modifiedOn: string\n}\n\ntype SubmissionDirectoryListProps = {\n pageSize: number\n challengeProjectId: string\n entityType: typeof EntityType.dockerrepo | typeof EntityType.file\n onItemSelected: (selected: EntityItem) => void\n}\n\ntype FileUploadAttempt = FileUploadComplete & {\n entityId?: string\n}\n\nfunction SubmissionDirectoryList({\n pageSize,\n challengeProjectId,\n entityType,\n onItemSelected,\n}: SubmissionDirectoryListProps) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n const [page, setPage] = useState<number>(0)\n const [selectedItem, setSelectedItem] = useState<EntityItem | undefined>()\n const [errorMessage, setErrorMessage] = useState<string>()\n const [canSubmit, setCanSubmit] = useState<boolean>()\n const [fetchedHeaders, setFetchedHeaders] = useState<EntityHeader[]>([])\n const [nextPageToken, setNextPageToken] = useState<string | undefined>()\n const [fetchNextPage, setFetchNextPage] = useState<boolean>(false)\n const [confirmOpen, setConfirmOpen] = useState<boolean>(false)\n const [uploadAttempt, setUploadAttempt] = useState<FileUploadAttempt>()\n\n const PER_PAGE = pageSize\n const HEADERS_PER_PAGE = 50\n const PROJECT_URL = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${challengeProjectId}`\n\n const request: EntityChildrenRequest = {\n parentId: challengeProjectId,\n nextPageToken: fetchNextPage ? nextPageToken : null,\n includeTypes: [entityType],\n includeTotalChildCount: true,\n sortBy: SortBy.MODIFIED_ON,\n sortDirection: Direction.DESC,\n }\n\n const { data: headerResults, refetch } = useGetEntityChildren(request, {\n enabled: !!challengeProjectId,\n throwOnError: true,\n })\n\n useEffect(() => {\n if (headerResults) {\n const newHeaders = [...fetchedHeaders]\n const headerPage = Math.floor(((page + 1) * PER_PAGE) / HEADERS_PER_PAGE)\n const start = headerPage * HEADERS_PER_PAGE\n newHeaders.splice(start, start + HEADERS_PER_PAGE, ...headerResults.page)\n setFetchedHeaders(newHeaders)\n setFetchNextPage(false)\n setNextPageToken(headerResults.nextPageToken)\n }\n // TODO: Temporary useEffect hook to remove onSuccess QueryOption for @tanstack/react-query v5\n // Refactor this component to remove this effect.\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [headerResults])\n\n function getPageHeaders() {\n const pageStart = page * PER_PAGE\n const pageHeaders = fetchedHeaders.slice(pageStart, pageStart + PER_PAGE)\n return pageHeaders\n }\n\n function reset() {\n setErrorMessage(undefined)\n setCanSubmit(undefined)\n setFetchedHeaders([])\n setNextPageToken(undefined)\n setFetchNextPage(false)\n refetch()\n }\n\n useEffect(() => {\n reset()\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [entityType, pageSize])\n\n const queries = useGetEntities(getPageHeaders())\n const entities = useMemo(\n () =>\n queries\n .filter(q => q.status === 'success')\n .map(q => q.data) as EntityItem[],\n [queries],\n )\n const areEntitiesLoading = queries.some(q => q.isLoading)\n\n const entityChangeHandler = async (value: string) => {\n setCanSubmit(false)\n const entity = entities.find(entity => entity?.id === value)\n if (entity) {\n setSelectedItem(entity)\n if (entityType === EntityType.dockerrepo) {\n let commits\n try {\n commits = await SynapseClient.getDockerTag(\n entity.id!,\n accessToken,\n 0,\n 1,\n )\n } catch (e) {\n return setErrorMessage(e.message)\n }\n if (commits.totalNumberOfResults === 0) {\n return setErrorMessage(\n 'No commits have been made to this repository. Please select a repository with at least one commit.',\n )\n }\n }\n setCanSubmit(true)\n setErrorMessage(undefined)\n }\n }\n\n const columns: GridColDef[] = [\n {\n field: 'radiobutton',\n headerName: '',\n width: 25,\n sortable: false,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: params => {\n return (\n <Radio\n value={params.id}\n checked={params.id === selectedItem?.id}\n onChange={event => {\n entityChangeHandler(event.target.value)\n }}\n />\n )\n },\n },\n {\n field: 'name',\n headerName:\n entityType === EntityType.dockerrepo\n ? 'Docker Repository'\n : 'File Name',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: (params: GridCellParams<Entity, SubmissionDirectoryRow>) => (\n <Link\n to={{\n pathname: `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${params.row.id}`,\n }}\n target=\"_blank\"\n >\n {params.row.name}\n </Link>\n ),\n },\n {\n field: 'modifiedOn',\n headerName: 'Updated On',\n width: 100,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n {\n field: 'id',\n headerName: 'ID',\n width: 200,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n ]\n\n const getRows = (entities: EntityItem[]) => {\n const newRows: SubmissionDirectoryRow[] = []\n entities.forEach(entity => {\n newRows.push({\n id: entity.id!,\n name:\n entityType === EntityType.dockerrepo\n ? (entity.repositoryName ?? entity.name)\n : entity.name,\n modifiedOn: formatDate(dayjs(entity.modifiedOn), 'MM/DD/YY'),\n })\n })\n return newRows\n }\n\n const handlePageChange = (newPageNum: number) => {\n const lastIndexNeeded = Math.min(\n headerResults?.totalChildCount ?? 0,\n (newPageNum + 1) * PER_PAGE,\n )\n if (lastIndexNeeded > fetchedHeaders.length) {\n setFetchNextPage(true)\n }\n setPage(newPageNum)\n }\n\n const itemSelectedHandler = () => {\n onItemSelected(selectedItem!)\n }\n\n function createEntity(file: FileUploadAttempt) {\n // Create Entity\n if (!file) return\n const { fileHandleId, fileName } = file\n const newFileEntity: FileEntity = {\n parentId: challengeProjectId,\n name: fileName,\n concreteType: FILE_ENTITY_CONCRETE_TYPE_VALUE,\n dataFileHandleId: fileHandleId,\n }\n SynapseClient.createEntity(newFileEntity, accessToken)\n .then(() => {\n reset()\n })\n .catch((err: SynapseClientError) => {\n setErrorMessage(err.reason)\n })\n }\n\n async function updateEntity() {\n if (!uploadAttempt) return\n const { fileHandleId, entityId } = uploadAttempt\n if (!entityId)\n return setErrorMessage('Error: missing entityId. Please try again.')\n // Get the entity\n let entity: FileEntity\n try {\n entity = await SynapseClient.getEntity(accessToken, entityId)\n } catch (err) {\n return setErrorMessage(`The entity ${entityId} could not be retrieved.`)\n }\n\n const updateRequest: FileEntity = {\n id: entity.id,\n name: entity.name,\n dataFileHandleId: fileHandleId,\n concreteType: FILE_ENTITY_CONCRETE_TYPE_VALUE,\n parentId: entity.parentId,\n etag: entity.etag,\n modifiedOn: entity.modifiedOn,\n }\n\n try {\n const updatedEntity = await SynapseClient.updateEntity(\n updateRequest,\n accessToken,\n true,\n )\n await invalidateAllQueriesForEntity(\n queryClient,\n keyFactory,\n updatedEntity.id!,\n )\n queryClient.setQueryData(\n keyFactory.getEntityQueryKey(updatedEntity.id!),\n updatedEntity,\n )\n reset()\n } catch (err) {\n setErrorMessage(err.reason)\n }\n }\n\n const handleUpload = async (response: UploadCallbackResp) => {\n if (response.success && response.resp) {\n const { fileName } = response.resp\n\n // Lookup entity\n const entityLookupRequest: EntityLookupRequest = {\n entityName: fileName,\n parentId: challengeProjectId,\n }\n try {\n const entityId = await SynapseClient.lookupChildEntity(\n entityLookupRequest,\n accessToken,\n )\n // Entity exists, prompt user to update it\n if (entityId) {\n setUploadAttempt({ ...response.resp, entityId: entityId.id })\n setConfirmOpen(true)\n }\n } catch (err) {\n // An existing entity was not found for this file, create it\n setUploadAttempt(undefined)\n createEntity(response.resp)\n }\n } else if (!response.success && response.error) {\n setErrorMessage(response.error.reason as string)\n } else {\n setErrorMessage('An unknown error occurred. Please try again.')\n }\n }\n\n return (\n <Box>\n <Box\n sx={{\n display: 'flex',\n backgroundColor: '#FBFBFC',\n padding: '10px',\n justifyContent: 'space-between',\n }}\n >\n <Typography\n variant=\"h6\"\n sx={{ fontSize: '18px', lineHeight: '20px', fontWeight: 700 }}\n >\n {entityType === EntityType.file\n ? 'Submit File'\n : 'Submit Docker Image'}\n </Typography>\n <Box sx={{ display: 'flex' }}>\n <Typography\n variant=\"body1\"\n sx={{ fontSize: '14px', color: '#71767F' }}\n >\n Your Project SynID:{' '}\n <Link to={{ pathname: PROJECT_URL }} target=\"_blank\">\n {challengeProjectId}\n </Link>\n </Typography>\n <CopyToClipboardIcon value={PROJECT_URL} sx={{ marginTop: '-4px' }} />\n </Box>\n </Box>\n <Box\n sx={{\n my: 3,\n display: 'flex',\n }}\n >\n <NotesTwoTone\n sx={{\n width: '16px',\n height: '16px',\n verticalAlign: 'text-bottom',\n }}\n />\n <Box\n sx={{\n ml: 1,\n }}\n >\n {entityType === EntityType.file && (\n <>\n Choose a prediction file from your submission directory below and\n click \"Submit Selection\" to pick an evaluation queue. If you need\n to add a new file, click \"Upload File\" first.\n </>\n )}\n {entityType === EntityType.dockerrepo && (\n <>\n Choose a Docker image from your submission directory below and\n click \"Submit Selection\" to pick an image version and evaluation\n queue. If you need to upload a new image to your project (\n <code>{challengeProjectId}</code>), see our{' '}\n <Link\n to=\"https://github.com/Sage-Bionetworks-Challenges/sample-model-templates#build-your-model\"\n target=\"_blank\"\n >\n Docker model submission guide\n </Link>{' '}\n for command-line instructions on how to build and upload.\n </>\n )}\n </Box>\n </Box>\n <Box>\n <DataGrid\n loading={areEntitiesLoading}\n columns={columns}\n rows={getRows(entities)}\n rowCount={headerResults?.totalChildCount ?? 0}\n pagination\n paginationMode=\"server\"\n paginationModel={{ page, pageSize: PER_PAGE }}\n pageSizeOptions={[PER_PAGE]}\n onPaginationModelChange={({ page }) => {\n handlePageChange(page)\n }}\n density=\"compact\"\n autoHeight\n sx={{\n fontSize: '14px',\n border: 'none',\n height: '100%',\n '& .MuiDataGrid-columnHeader': {\n backgroundColor: '#F1F3F5',\n },\n '& .Mui-odd': {\n backgroundColor: '#FBFBFC',\n },\n '.MuiDataGrid-columnHeaderTitleContainer': {\n justifyContent: 'space-between',\n },\n '.radio': {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n }}\n getRowClassName={params =>\n params.indexRelativeToCurrentPage % 2 === 0 ? 'Mui-even' : 'Mui-odd'\n }\n />\n </Box>\n {errorMessage && <ErrorBanner error={errorMessage}></ErrorBanner>}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n {entityType === EntityType.file && (\n <FileUpload\n label=\"Upload File\"\n buttonProps={{\n variant: 'outlined',\n endIcon: <IconSvg icon=\"upload\" />,\n sx: { lineHeight: 1 },\n }}\n onComplete={resp => {\n handleUpload(resp)\n }}\n />\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={itemSelectedHandler}\n disabled={!canSubmit}\n >\n Submit Selection\n </Button>\n </Box>\n <ConfirmationDialog\n open={confirmOpen}\n title=\"File exists\"\n content={\n <Typography variant=\"body1\" sx={{ fontSize: '16px' }}>\n A file named &quot;{uploadAttempt?.fileName}&quot; (\n {uploadAttempt?.entityId}) already exists in this location. Do you\n want to update the existing file and create a new version?\n </Typography>\n }\n onCancel={() => setConfirmOpen(false)}\n onConfirm={() => {\n updateEntity()\n setConfirmOpen(false)\n }}\n />\n </Box>\n )\n}\n\nexport default SubmissionDirectoryList\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeTeamTable.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeTeamWizard/ChallengeTeamTable.tsx"],"names":[],"mappings":"AAgBA,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAOD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAkLxE"}
1
+ {"version":3,"file":"ChallengeTeamTable.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeTeamWizard/ChallengeTeamTable.tsx"],"names":[],"mappings":"AAgBA,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAOD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAgLxE"}
@@ -9,8 +9,8 @@ import { ChallengeTeamSearch as s } from "./ChallengeTeamSearch.js";
9
9
  import { useMemo as c, useState as l } from "react";
10
10
  import { Box as u, Link as d, Radio as f, Tooltip as p } from "@mui/material";
11
11
  import { jsx as m, jsxs as h } from "react/jsx-runtime";
12
- import { EmailTwoTone as g } from "@mui/icons-material";
13
- import _ from "dayjs";
12
+ import g from "dayjs";
13
+ import _ from "@mui/icons-material/EmailTwoTone";
14
14
  import { DataGrid as v } from "@mui/x-data-grid";
15
15
  //#region src/components/ChallengeTeamWizard/ChallengeTeamTable.tsx
16
16
  function y(y) {
@@ -66,7 +66,7 @@ function y(y) {
66
66
  align: "center",
67
67
  renderCell: ({ value: e }) => e ? /* @__PURE__ */ m(p, {
68
68
  title: "You have been invited to join this team",
69
- children: /* @__PURE__ */ m(g, {
69
+ children: /* @__PURE__ */ m(_, {
70
70
  fontSize: "small",
71
71
  sx: { color: "grey.700" }
72
72
  })
@@ -79,7 +79,7 @@ function y(y) {
79
79
  filterable: !1,
80
80
  hideable: !1,
81
81
  disableColumnMenu: !0,
82
- renderCell: ({ value: e }) => o(_(e), "MM/DD/YY")
82
+ renderCell: ({ value: e }) => o(g(e), "MM/DD/YY")
83
83
  },
84
84
  {
85
85
  field: "description",
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeTeamTable.js","names":[],"sources":["../../../src/components/ChallengeTeamWizard/ChallengeTeamTable.tsx"],"sourcesContent":["import {\n useGetAllOpenMembershipInvitations,\n useGetChallengeTeamList,\n useGetCurrentUserProfile,\n useGetTeamList,\n} from '@/synapse-queries'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { EmailTwoTone } from '@mui/icons-material'\nimport { Box, Link, Radio, Tooltip } from '@mui/material'\nimport { DataGrid, GridColDef } from '@mui/x-data-grid'\nimport { Team } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport { ChallengeTeamSearch } from './ChallengeTeamSearch'\n\nexport type ChallengeTeamTableProps = {\n challengeId: string\n selectedTeamId?: string\n onSelectTeam: (teamId?: string) => void\n}\n\n// Custom type for the challenge team table that combines fields from the Team and the ChallengeTeam record\ntype RowData = Team & {\n hasInvitation: boolean\n}\n\n/**\n * Table component that displays teams that\n * 1. are registered for the challenge specified by the challengeId prop\n * 2. the current user is able to join, create a request to join, or accept an invitation to join\n */\nexport default function ChallengeTeamTable(props: ChallengeTeamTableProps) {\n const { challengeId, onSelectTeam, selectedTeamId } = props\n const { data: registeredTeams, isLoading: isLoadingChallengeTeams } =\n useGetChallengeTeamList(challengeId)\n const { data: user } = useGetCurrentUserProfile()\n const { data: openInvitationsToJoinTeams } =\n useGetAllOpenMembershipInvitations(user?.ownerId!, {\n enabled: Boolean(user?.ownerId),\n })\n const [searchValue, setSearchValue] = useState('')\n const teamIdList = registeredTeams?.map(team => team.teamId) ?? []\n const { data: teamsList, isLoading: isLoadingTeamList } = useGetTeamList(\n teamIdList,\n {\n enabled: !!teamIdList.length,\n },\n )\n\n const allRows: RowData[] = useMemo(() => {\n const term = searchValue.toLowerCase()\n const teams =\n teamsList?.list.filter(\n team =>\n team.canPublicJoin ||\n // `canRequestMembership` is true by default if the property is not present\n team.canRequestMembership !== false ||\n openInvitationsToJoinTeams?.some(\n invitation => invitation.teamId === team.id,\n ),\n ) ?? []\n\n let filtered = teams\n if (term.length) {\n filtered = teams.filter(team => {\n return (\n team.name.toLowerCase().includes(term) ||\n team.description?.toLowerCase().includes(term)\n )\n })\n }\n return filtered.map(\n (team): RowData => ({\n ...team,\n hasInvitation: Boolean(\n openInvitationsToJoinTeams?.some(\n invitation => invitation.teamId === team.id,\n ),\n ),\n }),\n )\n }, [openInvitationsToJoinTeams, searchValue, teamsList?.list])\n\n const isLoading = isLoadingChallengeTeams || isLoadingTeamList\n\n const columns: GridColDef<RowData>[] = useMemo(\n () => [\n {\n field: 'radiobutton',\n headerName: '',\n width: 25,\n sortable: false,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ row }) => {\n return (\n <Radio\n value={row.id}\n checked={String(row.id) === selectedTeamId}\n onClick={() => {\n onSelectTeam(String(row.id))\n }}\n inputProps={{ 'aria-label': `Select ${row.name}` }}\n />\n )\n },\n },\n {\n field: 'name',\n headerName: 'Team Name',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ row }) => (\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}/Team:${row.id}`}\n target=\"_blank\"\n underline={'hover'}\n >\n {row.name}\n </Link>\n ),\n },\n {\n field: 'hasInvitation',\n headerName: '',\n width: 15,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n align: 'center',\n renderCell: ({ value }) =>\n value ? (\n <Tooltip title={'You have been invited to join this team'}>\n <EmailTwoTone fontSize={'small'} sx={{ color: 'grey.700' }} />\n </Tooltip>\n ) : null,\n },\n {\n field: 'created',\n headerName: 'Created On',\n width: 100,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ value }) => formatDate(dayjs(value), 'MM/DD/YY'),\n },\n {\n field: 'description',\n headerName: 'Description',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n ],\n [onSelectTeam, selectedTeamId],\n )\n\n return (\n <Box sx={{ height: 220 }}>\n {!isLoading && (\n <ChallengeTeamSearch\n value={searchValue}\n onChange={e => setSearchValue(e.target.value)}\n rowCount={allRows.length}\n />\n )}\n <DataGrid\n initialState={{\n sorting: {\n sortModel: [{ field: 'hasInvitation', sort: 'desc' }],\n },\n }}\n loading={isLoading}\n rows={allRows}\n columns={columns}\n rowCount={5}\n hideFooter\n density=\"compact\"\n rowBufferPx={500} // Buffer ensures all rows required in test are loaded.\n sx={{\n border: 'none',\n height: '100%',\n '& .MuiDataGrid-columnHeader': {\n backgroundColor: '#F1F3F5',\n },\n '& .Mui-odd': {\n backgroundColor: '#FBFBFC',\n },\n '.MuiDataGrid-columnHeaderTitleContainer': {\n justifyContent: 'space-between',\n },\n '.radio': {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n }}\n getRowClassName={params =>\n params.indexRelativeToCurrentPage % 2 === 0 ? 'Mui-even' : 'Mui-odd'\n }\n />\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChallengeTeamTable.js","names":[],"sources":["../../../src/components/ChallengeTeamWizard/ChallengeTeamTable.tsx"],"sourcesContent":["import {\n useGetAllOpenMembershipInvitations,\n useGetChallengeTeamList,\n useGetCurrentUserProfile,\n useGetTeamList,\n} from '@/synapse-queries'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport EmailTwoTone from '@mui/icons-material/EmailTwoTone'\nimport { Box, Link, Radio, Tooltip } from '@mui/material'\nimport { DataGrid, GridColDef } from '@mui/x-data-grid'\nimport { Team } from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport { ChallengeTeamSearch } from './ChallengeTeamSearch'\n\nexport type ChallengeTeamTableProps = {\n challengeId: string\n selectedTeamId?: string\n onSelectTeam: (teamId?: string) => void\n}\n\n// Custom type for the challenge team table that combines fields from the Team and the ChallengeTeam record\ntype RowData = Team & {\n hasInvitation: boolean\n}\n\n/**\n * Table component that displays teams that\n * 1. are registered for the challenge specified by the challengeId prop\n * 2. the current user is able to join, create a request to join, or accept an invitation to join\n */\nexport default function ChallengeTeamTable(props: ChallengeTeamTableProps) {\n const { challengeId, onSelectTeam, selectedTeamId } = props\n const { data: registeredTeams, isLoading: isLoadingChallengeTeams } =\n useGetChallengeTeamList(challengeId)\n const { data: user } = useGetCurrentUserProfile()\n const { data: openInvitationsToJoinTeams } =\n useGetAllOpenMembershipInvitations(user?.ownerId!, {\n enabled: Boolean(user?.ownerId),\n })\n const [searchValue, setSearchValue] = useState('')\n const teamIdList = registeredTeams?.map(team => team.teamId) ?? []\n const { data: teamsList, isLoading: isLoadingTeamList } = useGetTeamList(\n teamIdList,\n {\n enabled: !!teamIdList.length,\n },\n )\n\n const allRows: RowData[] = useMemo(() => {\n const term = searchValue.toLowerCase()\n const teams =\n teamsList?.list.filter(\n team =>\n team.canPublicJoin ||\n // `canRequestMembership` is true by default if the property is not present\n team.canRequestMembership !== false ||\n openInvitationsToJoinTeams?.some(\n invitation => invitation.teamId === team.id,\n ),\n ) ?? []\n\n let filtered = teams\n if (term.length) {\n filtered = teams.filter(team => {\n return (\n team.name.toLowerCase().includes(term) ||\n team.description?.toLowerCase().includes(term)\n )\n })\n }\n return filtered.map((team): RowData => ({\n ...team,\n hasInvitation: Boolean(\n openInvitationsToJoinTeams?.some(\n invitation => invitation.teamId === team.id,\n ),\n ),\n }))\n }, [openInvitationsToJoinTeams, searchValue, teamsList?.list])\n\n const isLoading = isLoadingChallengeTeams || isLoadingTeamList\n\n const columns: GridColDef<RowData>[] = useMemo(\n () => [\n {\n field: 'radiobutton',\n headerName: '',\n width: 25,\n sortable: false,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ row }) => {\n return (\n <Radio\n value={row.id}\n checked={String(row.id) === selectedTeamId}\n onClick={() => {\n onSelectTeam(String(row.id))\n }}\n inputProps={{ 'aria-label': `Select ${row.name}` }}\n />\n )\n },\n },\n {\n field: 'name',\n headerName: 'Team Name',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ row }) => (\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}/Team:${row.id}`}\n target=\"_blank\"\n underline={'hover'}\n >\n {row.name}\n </Link>\n ),\n },\n {\n field: 'hasInvitation',\n headerName: '',\n width: 15,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n align: 'center',\n renderCell: ({ value }) =>\n value ? (\n <Tooltip title={'You have been invited to join this team'}>\n <EmailTwoTone fontSize={'small'} sx={{ color: 'grey.700' }} />\n </Tooltip>\n ) : null,\n },\n {\n field: 'created',\n headerName: 'Created On',\n width: 100,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n renderCell: ({ value }) => formatDate(dayjs(value), 'MM/DD/YY'),\n },\n {\n field: 'description',\n headerName: 'Description',\n flex: 1,\n filterable: false,\n hideable: false,\n disableColumnMenu: true,\n },\n ],\n [onSelectTeam, selectedTeamId],\n )\n\n return (\n <Box sx={{ height: 220 }}>\n {!isLoading && (\n <ChallengeTeamSearch\n value={searchValue}\n onChange={e => setSearchValue(e.target.value)}\n rowCount={allRows.length}\n />\n )}\n <DataGrid\n initialState={{\n sorting: {\n sortModel: [{ field: 'hasInvitation', sort: 'desc' }],\n },\n }}\n loading={isLoading}\n rows={allRows}\n columns={columns}\n rowCount={5}\n hideFooter\n density=\"compact\"\n rowBufferPx={500} // Buffer ensures all rows required in test are loaded.\n sx={{\n border: 'none',\n height: '100%',\n '& .MuiDataGrid-columnHeader': {\n backgroundColor: '#F1F3F5',\n },\n '& .Mui-odd': {\n backgroundColor: '#FBFBFC',\n },\n '.MuiDataGrid-columnHeaderTitleContainer': {\n justifyContent: 'space-between',\n },\n '.radio': {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n }}\n getRowClassName={params =>\n params.indexRelativeToCurrentPage % 2 === 0 ? 'Mui-even' : 'Mui-odd'\n }\n />\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -2,10 +2,10 @@ import e from "./ChallengeTeamTable.js";
2
2
  import "react";
3
3
  import { Box as t, Button as n, Typography as r } from "@mui/material";
4
4
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
- import { Stack as o } from "@mui/system";
6
- import s from "@mui/icons-material/AddCircleTwoTone";
5
+ import o from "@mui/icons-material/AddCircleTwoTone";
6
+ import { Stack as s } from "@mui/system";
7
7
  //#region src/components/ChallengeTeamWizard/SelectChallengeTeam.tsx
8
- var c = "To participate in a challenge, you need to create a new Team or join an existing one. By default, the participant who creates a team is the \"Team Captain\" and has the ability to invite and remove members. All team members will need a Synapse account so that they can login and accept the team invitation.", l = ({ challengeId: l, onCreateTeam: u, selectedTeamId: d, onSelectTeam: f }) => /* @__PURE__ */ a(o, {
8
+ var c = "To participate in a challenge, you need to create a new Team or join an existing one. By default, the participant who creates a team is the \"Team Captain\" and has the ability to invite and remove members. All team members will need a Synapse account so that they can login and accept the team invitation.", l = ({ challengeId: l, onCreateTeam: u, selectedTeamId: d, onSelectTeam: f }) => /* @__PURE__ */ a(s, {
9
9
  spacing: 2,
10
10
  children: [
11
11
  /* @__PURE__ */ i(r, {
@@ -25,7 +25,7 @@ var c = "To participate in a challenge, you need to create a new Team or join an
25
25
  color: "primary",
26
26
  variant: "contained",
27
27
  onClick: u,
28
- startIcon: /* @__PURE__ */ i(s, {}),
28
+ startIcon: /* @__PURE__ */ i(o, {}),
29
29
  children: "Create New Team"
30
30
  }) })
31
31
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"SelectChallengeTeam.js","names":[],"sources":["../../../src/components/ChallengeTeamWizard/SelectChallengeTeam.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Button, Typography } from '@mui/material'\nimport ChallengeTeamTable from './ChallengeTeamTable'\nimport { Stack } from '@mui/system'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\n\nconst PARTICIPATION_CRITERIA =\n 'To participate in a challenge, you need to create a new Team or join an existing one. \\\n By default, the participant who creates a team is the \"Team Captain\" and has the ability to invite and remove members. \\\n All team members will need a Synapse account so that they can login and accept the team invitation.'\n\ntype SelectChallengeTeamProps = {\n challengeId: string\n onCreateTeam: () => void\n selectedTeamId?: string\n onSelectTeam: (teamId?: string) => void\n}\n\nexport const SelectChallengeTeam = ({\n challengeId,\n onCreateTeam,\n selectedTeamId,\n onSelectTeam,\n}: SelectChallengeTeamProps): React.ReactNode => {\n return (\n <Stack spacing={2}>\n <Typography variant=\"body1\" sx={{ lineHeight: '20px' }}>\n {PARTICIPATION_CRITERIA}\n </Typography>\n <Box sx={{ height: 270 }}>\n <ChallengeTeamTable\n challengeId={challengeId}\n selectedTeamId={selectedTeamId}\n onSelectTeam={onSelectTeam}\n />\n </Box>\n <Box>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onCreateTeam}\n startIcon={<AddCircleTwoToneIcon />}\n >\n Create New Team\n </Button>\n </Box>\n </Stack>\n )\n}\n"],"mappings":";;;;;;;AAMA,IAAM,IACJ,0TAWW,KAAuB,EAClC,gBACA,iBACA,mBACA,sBAGE,kBAAC,GAAD;CAAO,SAAS;WAAhB;EACE,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI,EAAE,YAAY,OAAO;aAClD;EACS,CAAA;EACZ,kBAAC,GAAD;GAAK,IAAI,EAAE,QAAQ,IAAI;aACrB,kBAAC,GAAD;IACe;IACG;IACF;GACf,CAAA;EACE,CAAA;EACL,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,OAAM;GACN,SAAQ;GACR,SAAS;GACT,WAAW,kBAAC,GAAD,CAAuB,CAAA;aACnC;EAEO,CAAA,EACL,CAAA;CACA"}
1
+ {"version":3,"file":"SelectChallengeTeam.js","names":[],"sources":["../../../src/components/ChallengeTeamWizard/SelectChallengeTeam.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Button, Typography } from '@mui/material'\nimport ChallengeTeamTable from './ChallengeTeamTable'\nimport { Stack } from '@mui/system'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\n\nconst PARTICIPATION_CRITERIA =\n 'To participate in a challenge, you need to create a new Team or join an existing one. ' +\n 'By default, the participant who creates a team is the \"Team Captain\" and has the ability to invite and remove members. ' +\n 'All team members will need a Synapse account so that they can login and accept the team invitation.'\n\ntype SelectChallengeTeamProps = {\n challengeId: string\n onCreateTeam: () => void\n selectedTeamId?: string\n onSelectTeam: (teamId?: string) => void\n}\n\nexport const SelectChallengeTeam = ({\n challengeId,\n onCreateTeam,\n selectedTeamId,\n onSelectTeam,\n}: SelectChallengeTeamProps): React.ReactNode => {\n return (\n <Stack spacing={2}>\n <Typography variant=\"body1\" sx={{ lineHeight: '20px' }}>\n {PARTICIPATION_CRITERIA}\n </Typography>\n <Box sx={{ height: 270 }}>\n <ChallengeTeamTable\n challengeId={challengeId}\n selectedTeamId={selectedTeamId}\n onSelectTeam={onSelectTeam}\n />\n </Box>\n <Box>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onCreateTeam}\n startIcon={<AddCircleTwoToneIcon />}\n >\n Create New Team\n </Button>\n </Box>\n </Stack>\n )\n}\n"],"mappings":";;;;;;;AAMA,IAAM,IACJ,sTAWW,KAAuB,EAClC,gBACA,iBACA,mBACA,sBAGE,kBAAC,GAAD;CAAO,SAAS;WAAhB;EACE,kBAAC,GAAD;GAAY,SAAQ;GAAQ,IAAI,EAAE,YAAY,OAAO;aAClD;EACS,CAAA;EACZ,kBAAC,GAAD;GAAK,IAAI,EAAE,QAAQ,IAAI;aACrB,kBAAC,GAAD;IACe;IACG;IACF;GACf,CAAA;EACE,CAAA;EACL,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,OAAM;GACN,SAAQ;GACR,SAAS;GACT,WAAW,kBAAC,GAAD,CAAuB,CAAA;aACnC;EAEO,CAAA,EACL,CAAA;CACA"}
@@ -5,8 +5,8 @@ import { createLinkAndDownload as r } from "./CitationPopoverUtils.js";
5
5
  import { useState as i } from "react";
6
6
  import { Alert as a, Box as o, Button as s, FormControl as c, MenuItem as l, Popover as u, Select as d, Stack as f, Typography as p } from "@mui/material";
7
7
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
8
- import { KeyboardArrowDown as _ } from "@mui/icons-material";
9
- import v from "@mui/icons-material/Close";
8
+ import _ from "@mui/icons-material/Close";
9
+ import v from "@mui/icons-material/KeyboardArrowDown";
10
10
  //#region src/components/CitationPopover/CitationPopoverContent.tsx
11
11
  var y = {
12
12
  width: "100%",
@@ -82,7 +82,7 @@ var y = {
82
82
  lineHeight: "normal"
83
83
  },
84
84
  children: "Cite As:"
85
- }), /* @__PURE__ */ h(v, {
85
+ }), /* @__PURE__ */ h(_, {
86
86
  sx: {
87
87
  cursor: "pointer",
88
88
  display: {
@@ -148,7 +148,7 @@ var y = {
148
148
  onChange: (e) => {
149
149
  A(e.target.value);
150
150
  },
151
- IconComponent: _,
151
+ IconComponent: v,
152
152
  children: [
153
153
  /* @__PURE__ */ h(l, {
154
154
  value: "bibtex",
@@ -1 +1 @@
1
- {"version":3,"file":"CitationPopoverContent.js","names":[],"sources":["../../../src/components/CitationPopover/CitationPopoverContent.tsx"],"sourcesContent":["import {\n Alert,\n Box,\n Button,\n FormControl,\n MenuItem,\n Popover,\n Select,\n SelectChangeEvent,\n Stack,\n SxProps,\n Typography,\n PopoverProps,\n} from '@mui/material'\nimport React from 'react'\nimport { useCitation } from './useCitation'\nimport { createLinkAndDownload } from './CitationPopoverUtils'\nimport { KeyboardArrowDown } from '@mui/icons-material'\nimport CloseIcon from '@mui/icons-material/Close'\nimport { useState } from 'react'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport { CitationProps, CitationFormat } from './CitationTypes'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\nconst selectSx: SxProps = {\n width: '100%',\n '.MuiInputBase-root': {\n minHeight: '38px',\n borderRadius: 0,\n '&:before, &:after': {\n borderBottom: 'none !important',\n },\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: 0,\n },\n '&.MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n '.MuiSelect-select': {\n display: 'flex',\n alignItems: 'center',\n },\n '.MuiInputBase-input': {\n padding: '7px 10px',\n },\n}\n\nexport type CitationPopoverProps = CitationProps &\n Pick<PopoverProps, 'anchorEl' | 'open' | 'id' | 'onClose'>\n\nexport const CitationPopoverContent = (\n props: CitationPopoverProps,\n): React.ReactNode => {\n const {\n doi,\n title,\n boilerplateText,\n defaultCitationFormat,\n onClose,\n anchorEl,\n open,\n id,\n } = props\n\n const [citationFormat, setCitationFormat] = useState<CitationFormat>(\n defaultCitationFormat || 'bibtex',\n )\n const {\n data: citation,\n isLoading,\n error,\n } = useCitation(doi || '', citationFormat, true)\n\n const handleDownload = (citation: string) => {\n if (!citation) {\n return\n }\n const extensionMap: Record<string, string> = {\n apa: 'ris',\n bibtex: 'bib',\n ieee: 'ris',\n nature: 'ris',\n science: 'ris',\n }\n const fileExtension = extensionMap[citationFormat] || 'txt'\n\n const blob = new Blob([citation], { type: 'text/plain' })\n const url = URL.createObjectURL(blob)\n\n createLinkAndDownload(title || 'citation', fileExtension, url)\n }\n\n const handleChange = (event: SelectChangeEvent<CitationFormat>) => {\n setCitationFormat(event.target.value as CitationFormat)\n }\n\n return (\n <Popover\n aria-label=\"Citation options\"\n role=\"dialog\"\n id={id}\n elevation={9}\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n slotProps={{\n paper: {\n square: true,\n sx: theme => ({\n width: '500px',\n position: 'relative',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n maxHeight: '100%',\n top: '0 !important',\n left: '0 !important',\n bottom: '0 !important',\n },\n }),\n },\n }}\n >\n <Stack\n sx={{\n gap: '20px',\n padding: '20px',\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Typography\n sx={{ fontSize: '20px', fontWeight: 700, lineHeight: 'normal' }}\n >\n Cite As:\n </Typography>\n <CloseIcon\n sx={{\n cursor: 'pointer',\n display: { xs: 'block', sm: 'none' },\n marginLeft: 'auto',\n color: '#878E95',\n }}\n onClick={() => {\n onClose?.({}, 'escapeKeyDown')\n }}\n />\n </Box>\n {error && (\n <Alert severity={'error'} sx={{ my: 2 }} icon={false}>\n {error.message}\n </Alert>\n )}\n <Typography\n variant=\"smallText1\"\n component={'div'}\n sx={{\n lineHeight: 'normal',\n maxHeight: '300px',\n overflowY: 'scroll',\n wordWrap: 'break-word',\n }}\n >\n {boilerplateText && (\n <>\n <MarkdownSynapse markdown={boilerplateText} />\n <br />\n </>\n )}\n {isLoading ? (\n <Box sx={{ fontWeight: 700 }}>\n <br />\n Loading citation...\n </Box>\n ) : (\n citation\n )}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n gap: { xs: '10px', sm: '8px' },\n width: '100%',\n maxHeight: '38px',\n }}\n >\n <Box sx={{ flex: 1 }}>\n <FormControl sx={selectSx}>\n <Select\n variant=\"standard\"\n sx={{\n svg: {\n color: '#878E95',\n width: '24px',\n height: '24px',\n right: '10px',\n },\n }}\n value={citationFormat}\n onChange={handleChange}\n IconComponent={KeyboardArrowDown}\n >\n <MenuItem value={'bibtex'}>bibtex</MenuItem>\n <MenuItem value={'apa'}>apa</MenuItem>\n <MenuItem value={'ieee'}>ieee</MenuItem>\n <MenuItem value={'nature'}>nature</MenuItem>\n <MenuItem value={'science'}>science</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Button\n onClick={() => handleDownload(citation || '')}\n variant=\"contained\"\n sx={{\n padding: '6px 16px',\n borderRadius: 0,\n }}\n >\n Download Citation\n </Button>\n <CopyToClipboardIcon\n value={citation || ''}\n sx={{\n borderRadius: 0,\n padding: '6px 16px',\n border: '1px solid',\n borderColor: 'primary.main',\n }}\n />\n </Box>\n </Stack>\n </Popover>\n )\n}\n\nexport default CitationPopoverContent\n"],"mappings":"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"}
1
+ {"version":3,"file":"CitationPopoverContent.js","names":[],"sources":["../../../src/components/CitationPopover/CitationPopoverContent.tsx"],"sourcesContent":["import {\n Alert,\n Box,\n Button,\n FormControl,\n MenuItem,\n Popover,\n Select,\n SelectChangeEvent,\n Stack,\n SxProps,\n Typography,\n PopoverProps,\n} from '@mui/material'\nimport React from 'react'\nimport { useCitation } from './useCitation'\nimport { createLinkAndDownload } from './CitationPopoverUtils'\nimport KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown'\nimport CloseIcon from '@mui/icons-material/Close'\nimport { useState } from 'react'\nimport CopyToClipboardIcon from '../CopyToClipboardIcon'\nimport { CitationProps, CitationFormat } from './CitationTypes'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\nconst selectSx: SxProps = {\n width: '100%',\n '.MuiInputBase-root': {\n minHeight: '38px',\n borderRadius: 0,\n '&:before, &:after': {\n borderBottom: 'none !important',\n },\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: 0,\n },\n '&.MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n '.MuiSelect-select': {\n display: 'flex',\n alignItems: 'center',\n },\n '.MuiInputBase-input': {\n padding: '7px 10px',\n },\n}\n\nexport type CitationPopoverProps = CitationProps &\n Pick<PopoverProps, 'anchorEl' | 'open' | 'id' | 'onClose'>\n\nexport const CitationPopoverContent = (\n props: CitationPopoverProps,\n): React.ReactNode => {\n const {\n doi,\n title,\n boilerplateText,\n defaultCitationFormat,\n onClose,\n anchorEl,\n open,\n id,\n } = props\n\n const [citationFormat, setCitationFormat] = useState<CitationFormat>(\n defaultCitationFormat || 'bibtex',\n )\n const {\n data: citation,\n isLoading,\n error,\n } = useCitation(doi || '', citationFormat, true)\n\n const handleDownload = (citation: string) => {\n if (!citation) {\n return\n }\n const extensionMap: Record<string, string> = {\n apa: 'ris',\n bibtex: 'bib',\n ieee: 'ris',\n nature: 'ris',\n science: 'ris',\n }\n const fileExtension = extensionMap[citationFormat] || 'txt'\n\n const blob = new Blob([citation], { type: 'text/plain' })\n const url = URL.createObjectURL(blob)\n\n createLinkAndDownload(title || 'citation', fileExtension, url)\n }\n\n const handleChange = (event: SelectChangeEvent<CitationFormat>) => {\n setCitationFormat(event.target.value as CitationFormat)\n }\n\n return (\n <Popover\n aria-label=\"Citation options\"\n role=\"dialog\"\n id={id}\n elevation={9}\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n slotProps={{\n paper: {\n square: true,\n sx: theme => ({\n width: '500px',\n position: 'relative',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n maxHeight: '100%',\n top: '0 !important',\n left: '0 !important',\n bottom: '0 !important',\n },\n }),\n },\n }}\n >\n <Stack\n sx={{\n gap: '20px',\n padding: '20px',\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Typography\n sx={{ fontSize: '20px', fontWeight: 700, lineHeight: 'normal' }}\n >\n Cite As:\n </Typography>\n <CloseIcon\n sx={{\n cursor: 'pointer',\n display: { xs: 'block', sm: 'none' },\n marginLeft: 'auto',\n color: '#878E95',\n }}\n onClick={() => {\n onClose?.({}, 'escapeKeyDown')\n }}\n />\n </Box>\n {error && (\n <Alert severity={'error'} sx={{ my: 2 }} icon={false}>\n {error.message}\n </Alert>\n )}\n <Typography\n variant=\"smallText1\"\n component={'div'}\n sx={{\n lineHeight: 'normal',\n maxHeight: '300px',\n overflowY: 'scroll',\n wordWrap: 'break-word',\n }}\n >\n {boilerplateText && (\n <>\n <MarkdownSynapse markdown={boilerplateText} />\n <br />\n </>\n )}\n {isLoading ? (\n <Box sx={{ fontWeight: 700 }}>\n <br />\n Loading citation...\n </Box>\n ) : (\n citation\n )}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n gap: { xs: '10px', sm: '8px' },\n width: '100%',\n maxHeight: '38px',\n }}\n >\n <Box sx={{ flex: 1 }}>\n <FormControl sx={selectSx}>\n <Select\n variant=\"standard\"\n sx={{\n svg: {\n color: '#878E95',\n width: '24px',\n height: '24px',\n right: '10px',\n },\n }}\n value={citationFormat}\n onChange={handleChange}\n IconComponent={KeyboardArrowDown}\n >\n <MenuItem value={'bibtex'}>bibtex</MenuItem>\n <MenuItem value={'apa'}>apa</MenuItem>\n <MenuItem value={'ieee'}>ieee</MenuItem>\n <MenuItem value={'nature'}>nature</MenuItem>\n <MenuItem value={'science'}>science</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Button\n onClick={() => handleDownload(citation || '')}\n variant=\"contained\"\n sx={{\n padding: '6px 16px',\n borderRadius: 0,\n }}\n >\n Download Citation\n </Button>\n <CopyToClipboardIcon\n value={citation || ''}\n sx={{\n borderRadius: 0,\n padding: '6px 16px',\n border: '1px solid',\n borderColor: 'primary.main',\n }}\n />\n </Box>\n </Stack>\n </Popover>\n )\n}\n\nexport default CitationPopoverContent\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  //#region src/components/CitationPopover/CitationPopoverUtils.ts
2
2
  var e = (e, t, n) => {
3
- let r = `${e.replace(/\s+/g, "_")}`, i = document.createElement("a");
4
- i.href = n, i.setAttribute("download", `${r}.${t}`), document.body.appendChild(i), i.click(), document.body.removeChild(i);
3
+ let r = `${e.replaceAll(/\s+/g, "_")}`, i = document.createElement("a");
4
+ i.href = n, i.setAttribute("download", `${r}.${t}`), document.body.appendChild(i), i.click(), i.remove();
5
5
  };
6
6
  //#endregion
7
7
  export { e as createLinkAndDownload };
@@ -1 +1 @@
1
- {"version":3,"file":"CitationPopoverUtils.js","names":[],"sources":["../../../src/components/CitationPopover/CitationPopoverUtils.ts"],"sourcesContent":["export const createLinkAndDownload = (\n title: string,\n fileExtension: string,\n url: string,\n) => {\n const citationTitle = `${title.replace(/\\s+/g, '_')}`\n const link = document.createElement('a')\n link.href = url\n link.setAttribute('download', `${citationTitle}.${fileExtension}`)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n}\n"],"mappings":";AAAA,IAAa,KACX,GACA,GACA,MACG;CACH,IAAM,IAAgB,GAAG,EAAM,QAAQ,QAAQ,GAAG,KAC5C,IAAO,SAAS,cAAc,GAAG;CAKvC,AAJA,EAAK,OAAO,GACZ,EAAK,aAAa,YAAY,GAAG,EAAc,GAAG,GAAe,GACjE,SAAS,KAAK,YAAY,CAAI,GAC9B,EAAK,MAAM,GACX,SAAS,KAAK,YAAY,CAAI;AAChC"}
1
+ {"version":3,"file":"CitationPopoverUtils.js","names":[],"sources":["../../../src/components/CitationPopover/CitationPopoverUtils.ts"],"sourcesContent":["export const createLinkAndDownload = (\n title: string,\n fileExtension: string,\n url: string,\n) => {\n const citationTitle = `${title.replaceAll(/\\s+/g, '_')}`\n const link = document.createElement('a')\n link.href = url\n link.setAttribute('download', `${citationTitle}.${fileExtension}`)\n document.body.appendChild(link)\n link.click()\n link.remove()\n}\n"],"mappings":";AAAA,IAAa,KACX,GACA,GACA,MACG;CACH,IAAM,IAAgB,GAAG,EAAM,WAAW,QAAQ,GAAG,KAC/C,IAAO,SAAS,cAAc,GAAG;CAKvC,AAJA,EAAK,OAAO,GACZ,EAAK,aAAa,YAAY,GAAG,EAAc,GAAG,GAAe,GACjE,SAAS,KAAK,YAAY,CAAI,GAC9B,EAAK,MAAM,GACX,EAAK,OAAO;AACd"}
@@ -0,0 +1 @@
1
+ ._root_11y3o_1{flex-direction:column;gap:16px;display:flex}._notices_11y3o_7{flex-direction:column;gap:8px;display:flex}._count_11y3o_13{font-weight:700}._state_11y3o_17{text-align:center;padding:32px 0}
@@ -0,0 +1,35 @@
1
+ import { AggregateDataConfiguration } from '@sage-bionetworks/synapse-client';
2
+ import { ReactNode } from 'react';
3
+ /**
4
+ * The Cohort Builder only requests the count and facet statistics: it never shows participant rows, and the server
5
+ * rejects participant row requests from callers with aggregate-only access.
6
+ */
7
+ export declare const COHORT_BUILDER_PART_MASK: number;
8
+ export declare const DEFAULT_COHORT_BUILDER_AUDIT_NOTICE = "Queries you run in the Cohort Builder are logged to protect participant privacy.";
9
+ export declare const COHORT_BUILDER_ZERO_COUNT_TEXT = "No data for the selected cohort";
10
+ export declare const COHORT_BUILDER_PREVIEW_NOTICE = "Previewing the results that users with aggregate-only access see.";
11
+ export type CohortBuilderProps = {
12
+ /** The participant VirtualTable: one row per participant. */
13
+ participantsTableId: string;
14
+ /**
15
+ * The Files/Datasets VirtualTable. When set, the files and datasets of the cohort are listed below its plots, using
16
+ * the cohort as a request-scoped cohort.
17
+ */
18
+ filesTableId?: string;
19
+ /** Faceted columns to plot, in order. Defaults to every faceted column. */
20
+ facetsToPlot?: string[];
21
+ /** Mapping from column name to the name shown for the column. */
22
+ columnAliases?: Record<string, string>;
23
+ /** The singular noun for one row of the participant table. Defaults to "participant". */
24
+ unitDescription?: string;
25
+ /** Lets a data manager preview the results that users with aggregate-only access see. */
26
+ aggregateDataPreview?: AggregateDataConfiguration;
27
+ /** Notice that queries are logged. Defaults to {@link DEFAULT_COHORT_BUILDER_AUDIT_NOTICE}. */
28
+ auditNotice?: ReactNode;
29
+ };
30
+ /**
31
+ * Builds a cohort of participants with the Query Builder and shows the cohort's participant count and facet plots,
32
+ * and optionally its files and datasets. Participant rows are never requested. Signed-out users are asked to sign in.
33
+ */
34
+ export declare function CohortBuilder(props: CohortBuilderProps): import("react/jsx-runtime").JSX.Element;
35
+ //# sourceMappingURL=CohortBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CohortBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/CohortBuilder/CohortBuilder.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAG7E,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAA;AAc9D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAIX,CAAA;AAE1B,eAAO,MAAM,mCAAmC,qFACoC,CAAA;AAEpF,eAAO,MAAM,8BAA8B,oCAAoC,CAAA;AAE/E,eAAO,MAAM,6BAA6B,sEAC2B,CAAA;AAErE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yFAAyF;IACzF,oBAAoB,CAAC,EAAE,0BAA0B,CAAA;IACjD,+FAA+F;IAC/F,WAAW,CAAC,EAAE,SAAS,CAAA;CACxB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAgEtD"}