synapse-react-client 4.0.2 → 4.0.4
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.
- package/dist/SWC.index.js +1 -1
- package/dist/assets/icons/AwardScroll.d.ts +5 -0
- package/dist/assets/icons/AwardScroll.d.ts.map +1 -0
- package/dist/assets/icons/AwardScroll.js +78 -0
- package/dist/assets/icons/AwardScroll.js.map +1 -0
- package/dist/assets/icons/Baseline.d.ts +5 -0
- package/dist/assets/icons/Baseline.d.ts.map +1 -0
- package/dist/assets/icons/Baseline.js +43 -0
- package/dist/assets/icons/Baseline.js.map +1 -0
- package/dist/assets/icons/Challenge.svg +13 -0
- package/dist/assets/icons/Challenge.svg.js +7 -0
- package/dist/assets/icons/Challenge.svg.js.map +1 -0
- package/dist/assets/icons/ClappingHands.d.ts +5 -0
- package/dist/assets/icons/ClappingHands.d.ts.map +1 -0
- package/dist/assets/icons/ClappingHands.js +106 -0
- package/dist/assets/icons/ClappingHands.js.map +1 -0
- package/dist/assets/icons/HandWithMoney.d.ts +5 -0
- package/dist/assets/icons/HandWithMoney.d.ts.map +1 -0
- package/dist/assets/icons/HandWithMoney.js +15 -0
- package/dist/assets/icons/HandWithMoney.js.map +1 -0
- package/dist/assets/icons/MultiFile.d.ts +5 -0
- package/dist/assets/icons/MultiFile.d.ts.map +1 -0
- package/dist/assets/icons/MultiFile.js +8 -0
- package/dist/assets/icons/MultiFile.js.map +1 -0
- package/dist/assets/icons/MultiFile.svg +4 -0
- package/dist/assets/icons/MultiFile.svg.js +7 -0
- package/dist/assets/icons/MultiFile.svg.js.map +1 -0
- package/dist/assets/icons/OpenBook.d.ts +5 -0
- package/dist/assets/icons/OpenBook.d.ts.map +1 -0
- package/dist/assets/icons/OpenBook.js +99 -0
- package/dist/assets/icons/OpenBook.js.map +1 -0
- package/dist/assets/icons/Podium.d.ts +5 -0
- package/dist/assets/icons/Podium.d.ts.map +1 -0
- package/dist/assets/icons/Podium.js +36 -0
- package/dist/assets/icons/Podium.js.map +1 -0
- package/dist/assets/icons/RosetteRibbon.d.ts +5 -0
- package/dist/assets/icons/RosetteRibbon.d.ts.map +1 -0
- package/dist/assets/icons/RosetteRibbon.js +36 -0
- package/dist/assets/icons/RosetteRibbon.js.map +1 -0
- package/dist/assets/icons/StarTrophy.d.ts +5 -0
- package/dist/assets/icons/StarTrophy.d.ts.map +1 -0
- package/dist/assets/icons/StarTrophy.js +99 -0
- package/dist/assets/icons/StarTrophy.js.map +1 -0
- package/dist/assets/icons/ThreeStars.d.ts +5 -0
- package/dist/assets/icons/ThreeStars.d.ts.map +1 -0
- package/dist/assets/icons/ThreeStars.js +71 -0
- package/dist/assets/icons/ThreeStars.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.d.ts +5 -0
- package/dist/assets/icons/UnpackagableFile.d.ts.map +1 -0
- package/dist/assets/icons/UnpackagableFile.js +8 -0
- package/dist/assets/icons/UnpackagableFile.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.svg +4 -0
- package/dist/assets/icons/UnpackagableFile.svg.js +7 -0
- package/dist/assets/icons/UnpackagableFile.svg.js.map +1 -0
- package/dist/assets/mui_components/PackagableFile.d.ts.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js +5 -4
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.svg +3 -0
- package/dist/assets/mui_components/PackagableFile.svg.js +7 -0
- package/dist/assets/mui_components/PackagableFile.svg.js.map +1 -0
- package/dist/assets/themed_icons/index.d.ts +1 -2
- package/dist/assets/themed_icons/index.d.ts.map +1 -1
- package/dist/assets/themed_icons/index.js +8 -10
- package/dist/assets/themed_icons/index.js.map +1 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +36 -35
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js +8 -8
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js +10 -10
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -2
- package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js +21 -28
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss +13 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +25 -25
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
- package/dist/components/CardContainer/CardLink.d.ts +12 -0
- package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +5 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardContainerLogic/index.d.ts +1 -1
- package/dist/components/CardContainerLogic/index.d.ts.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js +12 -9
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +33 -33
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/ComponentCollapse.d.ts +6 -10
- package/dist/components/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +31 -35
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -10
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +10 -5
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +43 -38
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +10 -5
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.d.ts.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js +23 -23
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts +6 -2
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js +10 -8
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.css +1 -0
- package/dist/components/DownloadCart/CreatePackageV2.d.ts.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js +50 -46
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.module.scss +38 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js +14 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.css +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +316 -186
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.module.scss +217 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js +48 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadDetails.js +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +33 -33
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts +4 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js +156 -236
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js +5 -5
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +10 -5
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
- package/dist/components/EntityAclEditor/OpenData.js +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +20 -20
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +4 -4
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
- package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js +35 -41
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js +95 -90
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +6 -2
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +11 -8
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FilePreview/EntityPreview.js +1 -1
- package/dist/components/Forum/DiscussionReply.js +10 -10
- package/dist/components/Forum/DiscussionThread.js +21 -21
- package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
- package/dist/components/GenericCard/CardUtils.js +36 -36
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
- package/dist/components/GenericCard/GenericCard.d.ts +5 -5
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +117 -103
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts +10 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts.map +1 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js +33 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -0
- package/dist/components/GenericCard/SynapseCardLabel.d.ts +2 -1
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +95 -85
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +10 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +248 -209
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
- package/dist/components/HasAccess/HasAccessV2.js +1 -1
- package/dist/components/HasAccess/useHasAccess.js +1 -1
- package/dist/components/HeaderCard.js +17 -13
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
- package/dist/components/Icon/Icon.js +52 -52
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +215 -171
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +7 -7
- package/dist/components/Markdown/MarkdownEditor.js +11 -11
- package/dist/components/Markdown/MarkdownGithub.js +1 -1
- package/dist/components/Markdown/MarkdownPopover.js +6 -6
- package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js +139 -135
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +139 -65
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js +18 -18
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.css +1 -0
- package/dist/components/Plot/SynapsePlot.d.ts +2 -0
- package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
- package/dist/components/Plot/SynapsePlot.js +43 -39
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.scss +8 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +137 -135
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js +7 -7
- package/dist/components/Resources/Resources.Mobile.js +6 -6
- package/dist/components/StorybookComponentWrapper.js +6 -3
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
- package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +76 -67
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +83 -58
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +16 -15
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +12 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +30 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -0
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.d.ts.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js +22 -16
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/index.d.ts +2 -0
- package/dist/components/SynapseChat/index.d.ts.map +1 -1
- package/dist/components/SynapseChat/index.js +5 -3
- package/dist/components/SynapseChat/index.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
- package/dist/components/SynapseChat/useChatState.js +10 -7
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
- package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js +18 -16
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
- package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +13 -13
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js +4 -4
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js +9 -9
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
- package/dist/components/TextToComponentCollapse.d.ts +16 -0
- package/dist/components/TextToComponentCollapse.d.ts.map +1 -0
- package/dist/components/TextToComponentCollapse.js +29 -0
- package/dist/components/TextToComponentCollapse.js.map +1 -0
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
- package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
- package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
- package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
- package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
- package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +10 -5
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.d.ts +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +22 -22
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +4 -4
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js +1 -1
- package/dist/components/entity/metadata/MetadataTable.js +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/index.js +125 -121
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/InfiniteTableLayout.js +1 -1
- package/dist/components/row_renderers/ObservationCard.js +12 -11
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.d.ts +1 -3
- package/dist/components/row_renderers/utils/CardFooter.d.ts.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js +31 -45
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/styled/HoverPopover.css +1 -0
- package/dist/components/styled/HoverPopover.d.ts +28 -0
- package/dist/components/styled/HoverPopover.d.ts.map +1 -0
- package/dist/components/styled/HoverPopover.js +103 -0
- package/dist/components/styled/HoverPopover.js.map +1 -0
- package/dist/components/styled/HoverPopover.module.scss +9 -0
- package/dist/components/styled/HoverPopover.module.scss.js +10 -0
- package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
- package/dist/components/styled/index.d.ts +2 -0
- package/dist/components/styled/index.d.ts.map +1 -1
- package/dist/components/styled/index.js +11 -9
- package/dist/components/styled/index.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +10 -5
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +10 -5
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/widgets/Range.js +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
- package/dist/features/curator/GridPage/GridPage.js +10 -5
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +10 -5
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/index.js +155 -151
- package/dist/index.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
- package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
- package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +67 -59
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/base/_core.scss +0 -1
- package/dist/style/components/_all.scss +0 -2
- package/dist/style/components/_cards.scss +22 -0
- package/dist/style/components/_download-list-v2.scss +1 -1
- package/dist/style/components/_entity-badge.scss +0 -2
- package/dist/style/components/_expandable_table_data.scss +3 -3
- package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
- package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.js +118 -118
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
- package/dist/synapse-queries/entity/index.js +6 -6
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/index.js +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
- package/dist/testutils/vitest.setup.js +10 -11
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -1
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +11 -10
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/mergeTheme.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/AppUtils.js +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js +9 -9
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/SynapseContext.d.ts.map +1 -1
- package/dist/utils/context/SynapseContext.js +1 -0
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts +4 -0
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +25 -23
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js +10 -10
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/hooks/index.js +6 -6
- package/dist/utils/hooks/useDetectSSOCode.js +3 -3
- package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js +15 -15
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
- package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/index.js +4 -4
- package/package.json +15 -16
- package/dist/_virtual/index.js +0 -6
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/index2.js +0 -5
- package/dist/_virtual/index2.js.map +0 -1
- package/dist/_virtual/index3.js +0 -5
- package/dist/_virtual/index3.js.map +0 -1
- package/dist/_virtual/index4.js +0 -5
- package/dist/_virtual/index4.js.map +0 -1
- package/dist/_virtual/index5.js +0 -5
- package/dist/_virtual/index5.js.map +0 -1
- package/dist/assets/themed_icons/Challenge.d.ts +0 -3
- package/dist/assets/themed_icons/Challenge.d.ts.map +0 -1
- package/dist/assets/themed_icons/Challenge.js +0 -25
- package/dist/assets/themed_icons/Challenge.js.map +0 -1
- package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
- package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
- package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
- package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js +0 -15
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js.map +0 -1
- package/dist/style/components/_download-cart-page.scss +0 -204
- package/dist/style/components/_user-search-box.scss +0 -30
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as C, Fragment as w, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import "../../synapse-client/SynapseClient.js";
|
|
3
3
|
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
|
|
4
4
|
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
|
|
@@ -13,7 +13,7 @@ import "../../utils/PermissionLevelToAccessType.js";
|
|
|
13
13
|
import { useCallback as l } from "react";
|
|
14
14
|
import { useSynapseContext as E } from "../../utils/context/SynapseContext.js";
|
|
15
15
|
import "use-deep-compare-effect";
|
|
16
|
-
import { Box as
|
|
16
|
+
import { Box as s, Button as T } from "@mui/material";
|
|
17
17
|
import "../../utils/hooks/useCookiePreferences.js";
|
|
18
18
|
import "../../utils/hooks/useSourceAppConfigs.js";
|
|
19
19
|
import "universal-cookie";
|
|
@@ -26,75 +26,75 @@ import "lodash-es/isEmpty";
|
|
|
26
26
|
import "lodash-es/isEqual";
|
|
27
27
|
import "lodash-es/xorWith";
|
|
28
28
|
import "react-router";
|
|
29
|
-
import { EntityType as
|
|
29
|
+
import { EntityType as m } from "@sage-bionetworks/synapse-client";
|
|
30
30
|
import "../../utils/types/IsType.js";
|
|
31
31
|
import { useAddFileBatchToDownloadList as g } from "../../synapse-queries/download/useDownloadList.js";
|
|
32
32
|
import A from "@mui/icons-material/AddCircleTwoTone";
|
|
33
33
|
import { EntityChildrenDetails as S } from "../EntityFinder/details/configurations/EntityChildrenDetails.js";
|
|
34
|
-
import { DetailsViewColumn as
|
|
34
|
+
import { DetailsViewColumn as i } from "../EntityFinder/details/view/DetailsView.js";
|
|
35
35
|
import { useEntitySelection as x } from "../EntityFinder/useEntitySelection.js";
|
|
36
36
|
import { VersionSelectionType as b } from "../EntityFinder/VersionSelectionType.js";
|
|
37
|
-
import { displayToast as
|
|
38
|
-
function
|
|
39
|
-
parentContainerId:
|
|
37
|
+
import { displayToast as p } from "../ToastMessage/ToastMessage.js";
|
|
38
|
+
function ao({
|
|
39
|
+
parentContainerId: a
|
|
40
40
|
}) {
|
|
41
|
-
const { downloadCartPageUrl: d } = E(), c = !0, { selectedEntities: o, toggleSelection: u, setInitialVersion: f } = x(c), { mutate:
|
|
41
|
+
const { downloadCartPageUrl: d } = E(), c = !0, { selectedEntities: o, toggleSelection: u, setInitialVersion: f } = x(c), { mutate: r } = g({
|
|
42
42
|
onSuccess: () => {
|
|
43
|
-
|
|
44
|
-
"File(s) were successfully added to your Download
|
|
43
|
+
p(
|
|
44
|
+
"File(s) were successfully added to your Download List.",
|
|
45
45
|
"success",
|
|
46
46
|
{
|
|
47
47
|
primaryButtonConfig: {
|
|
48
|
-
text: "View Download
|
|
48
|
+
text: "View Download List",
|
|
49
49
|
onClick: () => window.location.href = d
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
);
|
|
53
53
|
},
|
|
54
54
|
onError: (t) => {
|
|
55
|
-
|
|
56
|
-
`Unable to add the file to your Download
|
|
55
|
+
p(
|
|
56
|
+
`Unable to add the file to your Download List. ${t.reason}`,
|
|
57
57
|
"danger"
|
|
58
58
|
);
|
|
59
59
|
}
|
|
60
|
-
}),
|
|
60
|
+
}), D = l(
|
|
61
61
|
(t) => o.has(t.id),
|
|
62
62
|
[o]
|
|
63
|
-
),
|
|
63
|
+
), h = l(() => {
|
|
64
64
|
const t = Array.from(o.values()).map((n) => ({
|
|
65
65
|
fileEntityId: n.targetId,
|
|
66
66
|
versionNumber: n.targetVersionNumber
|
|
67
67
|
}));
|
|
68
|
-
|
|
69
|
-
}, [o,
|
|
68
|
+
r(t);
|
|
69
|
+
}, [o, r]), y = {
|
|
70
70
|
versionSelection: b.REQUIRED,
|
|
71
71
|
selectColumnType: "checkbox",
|
|
72
72
|
enableSelectAll: !0,
|
|
73
|
-
visibleTypes: [
|
|
73
|
+
visibleTypes: [m.file],
|
|
74
74
|
selected: o,
|
|
75
|
-
selectableTypes: [
|
|
76
|
-
isIdSelected:
|
|
75
|
+
selectableTypes: [m.file],
|
|
76
|
+
isIdSelected: D,
|
|
77
77
|
isSelectable: () => !0,
|
|
78
78
|
toggleSelection: u,
|
|
79
79
|
setInitialVersion: f,
|
|
80
80
|
hiddenColumns: [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
i.BADGES,
|
|
82
|
+
i.ADD_TO_DOWNLOAD_CART,
|
|
83
|
+
i.CREATED_ON,
|
|
84
|
+
i.VERSION,
|
|
85
|
+
i.MODIFIED_BY
|
|
86
86
|
]
|
|
87
87
|
};
|
|
88
|
-
return /* @__PURE__ */
|
|
89
|
-
/* @__PURE__ */ e(
|
|
88
|
+
return /* @__PURE__ */ C(w, { children: [
|
|
89
|
+
/* @__PURE__ */ e(s, { children: /* @__PURE__ */ e(
|
|
90
90
|
S,
|
|
91
91
|
{
|
|
92
|
-
parentContainerId:
|
|
93
|
-
...
|
|
92
|
+
parentContainerId: a,
|
|
93
|
+
...y
|
|
94
94
|
}
|
|
95
95
|
) }),
|
|
96
96
|
/* @__PURE__ */ e(
|
|
97
|
-
|
|
97
|
+
s,
|
|
98
98
|
{
|
|
99
99
|
sx: {
|
|
100
100
|
mt: 4
|
|
@@ -105,9 +105,9 @@ function po({
|
|
|
105
105
|
endIcon: /* @__PURE__ */ e(A, {}),
|
|
106
106
|
variant: "outlined",
|
|
107
107
|
sx: { alignSelf: "flex-end", height: "47px" },
|
|
108
|
-
onClick:
|
|
108
|
+
onClick: h,
|
|
109
109
|
disabled: !o.toArray().length,
|
|
110
|
-
children: "Add to Download
|
|
110
|
+
children: "Add to Download List"
|
|
111
111
|
}
|
|
112
112
|
)
|
|
113
113
|
}
|
|
@@ -115,6 +115,6 @@ function po({
|
|
|
115
115
|
] });
|
|
116
116
|
}
|
|
117
117
|
export {
|
|
118
|
-
|
|
118
|
+
ao as ChallengeDataDownload
|
|
119
119
|
};
|
|
120
120
|
//# sourceMappingURL=ChallengeDataDownload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeDataDownload.js","sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download
|
|
1
|
+
{"version":3,"file":"ChallengeDataDownload.js","sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"names":["ChallengeDataDownload","parentContainerId","downloadCartPageUrl","useSynapseContext","selectMultiple","selectedEntities","toggleSelection","setInitialVersion","useEntitySelection","addBatchToDownloadList","useAddFileBatchToDownloadList","displayToast","e","isIdSelected","useCallback","entity","onAddClick","entities","reference","sharedProps","VersionSelectionType","EntityType","DetailsViewColumn","jsxs","Fragment","jsx","Box","EntityChildrenDetails","Button","AddCircleTwoToneIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,SAASA,GAAsB;AAAA,EACpC,mBAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,qBAAAC,EAAA,IAAwBC,EAAA,GAC1BC,IAAiB,IACjB,EAAE,kBAAAC,GAAkB,iBAAAC,GAAiB,mBAAAC,EAAA,IACzCC,EAAmBJ,CAAc,GAE7B,EAAE,QAAQK,EAAA,IAA2BC,EAA8B;AAAA,IACvE,WAAW,MAAM;AACf,MAAAC;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,UACE,qBAAqB;AAAA,YACnB,MAAM;AAAA,YACN,SAAS,MAAO,OAAO,SAAS,OAAOT;AAAA,UAAA;AAAA,QACzC;AAAA,MACF;AAAA,IAEJ;AAAA,IACA,SAAS,CAAAU,MAAK;AACZ,MAAAD;AAAA,QACE,iDAAiDC,EAAE,MAAM;AAAA,QACzD;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,CACD,GAEKC,IAAeC;AAAA,IACnB,CAACC,MACQV,EAAiB,IAAIU,EAAO,EAAE;AAAA,IAEvC,CAACV,CAAgB;AAAA,EAAA,GAGbW,IAAaF,EAAY,MAAM;AACnC,UAAMG,IAAW,MAAM,KAAKZ,EAAiB,QAAQ,EAAE,IAAI,CAAAa,OAClD;AAAA,MACL,cAAcA,EAAU;AAAA,MACxB,eAAeA,EAAU;AAAA,IAAA,EAE5B;AACD,IAAAT,EAAuBQ,CAAQ;AAAA,EACjC,GAAG,CAACZ,GAAkBI,CAAsB,CAAC,GAEvCU,IAA4C;AAAA,IAChD,kBAAkBC,EAAqB;AAAA,IACvC,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,cAAc,CAACC,EAAW,IAAI;AAAA,IAC9B,UAAUhB;AAAA,IACV,iBAAiB,CAACgB,EAAW,IAAI;AAAA,IACjC,cAAAR;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,iBAAAP;AAAA,IACA,mBAAAC;AAAA,IACA,eAAe;AAAA,MACbe,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,IAAA;AAAA,EACpB;AAEF,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EACC,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,mBAAA1B;AAAA,QACC,GAAGkB;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IACA,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,IAAI;AAAA,QAAA;AAAA,QAGN,UAAA,gBAAAD;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,2BAAUC,GAAA,EAAqB;AAAA,YAC/B,SAAS;AAAA,YACT,IAAI,EAAE,WAAW,YAAY,QAAQ,OAAA;AAAA,YACrC,SAASb;AAAA,YACT,UAAU,CAACX,EAAiB,QAAA,EAAU;AAAA,YACvC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as e, jsxs as u, Fragment as r } from "react/jsx-runtime";
|
|
2
2
|
import { LightTooltip as b } from "../styled/LightTooltip.js";
|
|
3
3
|
import { HelpOutlineTwoTone as x } from "@mui/icons-material";
|
|
4
|
-
import { Typography as d, Box as c, Autocomplete as g, TextField as E, MenuItem as L, Button as S, Collapse as
|
|
4
|
+
import { Typography as d, Box as c, Autocomplete as g, TextField as E, MenuItem as L, Button as S, Collapse as w, List as A, ListItem as M } from "@mui/material";
|
|
5
5
|
import { noop as h } from "lodash-es";
|
|
6
|
-
import { useEffect as
|
|
7
|
-
import {
|
|
6
|
+
import { useEffect as T, useState as p } from "react";
|
|
7
|
+
import { Markdown as k } from "../Markdown/MarkdownSynapse.js";
|
|
8
8
|
function m(t) {
|
|
9
9
|
const { text: i, tooltipMarkdownText: n } = t;
|
|
10
10
|
return /* @__PURE__ */ u(r, { children: [
|
|
@@ -19,7 +19,7 @@ function m(t) {
|
|
|
19
19
|
sx: {
|
|
20
20
|
mb: 0
|
|
21
21
|
},
|
|
22
|
-
children: /* @__PURE__ */ e(
|
|
22
|
+
children: /* @__PURE__ */ e(k, { markdown: n })
|
|
23
23
|
}
|
|
24
24
|
),
|
|
25
25
|
children: /* @__PURE__ */ e(
|
|
@@ -40,7 +40,7 @@ function v(t) {
|
|
|
40
40
|
const { evaluations: i } = t;
|
|
41
41
|
return /* @__PURE__ */ u(r, { children: [
|
|
42
42
|
/* @__PURE__ */ e(d, { variant: "body1", children: "Available Evaluation Queues:" }),
|
|
43
|
-
/* @__PURE__ */ e(
|
|
43
|
+
/* @__PURE__ */ e(A, { dense: !0, children: i.map((n) => /* @__PURE__ */ e(M, { children: /* @__PURE__ */ e(
|
|
44
44
|
m,
|
|
45
45
|
{
|
|
46
46
|
text: n.name,
|
|
@@ -49,7 +49,7 @@ function v(t) {
|
|
|
49
49
|
) }, n.id)) })
|
|
50
50
|
] });
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function y(t) {
|
|
53
53
|
const { evaluations: i, isSelectable: n } = t, [a, l] = p(!1), o = n ? 2 : 8, s = i.length >= o;
|
|
54
54
|
return /* @__PURE__ */ e(
|
|
55
55
|
c,
|
|
@@ -67,12 +67,12 @@ function C(t) {
|
|
|
67
67
|
children: `${a ? "Hide" : "Show"} All Available Evaluation Queues`
|
|
68
68
|
}
|
|
69
69
|
),
|
|
70
|
-
/* @__PURE__ */ e(
|
|
70
|
+
/* @__PURE__ */ e(w, { in: a, children: /* @__PURE__ */ e(v, { ...t }) })
|
|
71
71
|
] }) : /* @__PURE__ */ e(r, { children: /* @__PURE__ */ e(v, { ...t }) })
|
|
72
72
|
}
|
|
73
73
|
);
|
|
74
74
|
}
|
|
75
|
-
function
|
|
75
|
+
function C(t) {
|
|
76
76
|
const { evaluations: i, onChangeSelectedEvaluation: n = h } = t, [a, l] = p(null);
|
|
77
77
|
return /* @__PURE__ */ e(
|
|
78
78
|
g,
|
|
@@ -84,7 +84,7 @@ function I(t) {
|
|
|
84
84
|
},
|
|
85
85
|
options: i,
|
|
86
86
|
getOptionLabel: (o) => o.name,
|
|
87
|
-
renderOption: (o, s,
|
|
87
|
+
renderOption: (o, s, I, f) => /* @__PURE__ */ e(L, { ...o, children: /* @__PURE__ */ e(
|
|
88
88
|
m,
|
|
89
89
|
{
|
|
90
90
|
text: f.getOptionLabel(s),
|
|
@@ -101,7 +101,7 @@ function z(t) {
|
|
|
101
101
|
onChangeSelectedEvaluation: n = h,
|
|
102
102
|
evaluations: a
|
|
103
103
|
} = t, l = a.length;
|
|
104
|
-
if (
|
|
104
|
+
if (T(() => {
|
|
105
105
|
l === 1 && i && n(a[0]);
|
|
106
106
|
}, [a, i, l, n]), l === 0)
|
|
107
107
|
return /* @__PURE__ */ e(d, { variant: "body1", children: "No evaluations found" });
|
|
@@ -129,8 +129,8 @@ function z(t) {
|
|
|
129
129
|
{
|
|
130
130
|
className: "AvailableEvaluationQueueList",
|
|
131
131
|
children: [
|
|
132
|
-
i && /* @__PURE__ */ e(
|
|
133
|
-
/* @__PURE__ */ e(
|
|
132
|
+
i && /* @__PURE__ */ e(C, { ...t }),
|
|
133
|
+
/* @__PURE__ */ e(y, { ...t })
|
|
134
134
|
]
|
|
135
135
|
}
|
|
136
136
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateChallengeTeam.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeTeamWizard/CreateChallengeTeam.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateChallengeTeam.d.ts","sourceRoot":"","sources":["../../../src/components/ChallengeTeamWizard/CreateChallengeTeam.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,CAAA;AAGD,eAAO,MAAM,uBAAuB,iIAC4F,CAAA;AAEhI,MAAM,MAAM,yBAAyB,GAAG;IAEtC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,mBAAmB,gIAmL9B,CAAA"}
|
|
@@ -4,8 +4,8 @@ import { Box as n, Typography as l, Alert as _ } from "@mui/material";
|
|
|
4
4
|
import o from "../TextField/TextField.js";
|
|
5
5
|
import F from "./useCreateAndRegisterChallengeTeam.js";
|
|
6
6
|
import { noop as T, isEmpty as S } from "lodash-es";
|
|
7
|
-
import
|
|
8
|
-
const j =
|
|
7
|
+
import V from "papaparse";
|
|
8
|
+
const { parse: j } = V, B = 3, D = "Please limit the initial number of invited members to three. You may add additional members after the team has been created.", K = P(function(C, R) {
|
|
9
9
|
const { challengeId: v, onCanSubmitChange: f = T, onFinished: g = T } = C, [a, w] = p({
|
|
10
10
|
name: "",
|
|
11
11
|
description: ""
|
|
@@ -13,14 +13,14 @@ const j = 3, B = "Please limit the initial number of invited members to three. Y
|
|
|
13
13
|
const i = { ...a, ...e };
|
|
14
14
|
w(i);
|
|
15
15
|
}, { inviteesParseResult: I, parsedInvitees: u } = N(() => {
|
|
16
|
-
const e =
|
|
16
|
+
const e = j(m, {
|
|
17
17
|
delimiter: ",",
|
|
18
18
|
transform(A) {
|
|
19
19
|
return A.trim();
|
|
20
20
|
}
|
|
21
21
|
}), i = e.data[0] || [];
|
|
22
22
|
return { inviteesParseResult: e, parsedInvitees: i };
|
|
23
|
-
}, [m]), c = u.length >
|
|
23
|
+
}, [m]), c = u.length > B, r = !!(a && a.name && a.name.length > 1 && !c);
|
|
24
24
|
O(() => {
|
|
25
25
|
f(r);
|
|
26
26
|
}, [r, f]);
|
|
@@ -147,14 +147,14 @@ const j = 3, B = "Please limit the initial number of invited members to three. Y
|
|
|
147
147
|
}
|
|
148
148
|
),
|
|
149
149
|
(c || !S(I.errors) || h) && /* @__PURE__ */ y(_, { severity: "error", children: [
|
|
150
|
-
c && /* @__PURE__ */ t(l, { variant: "body1", children:
|
|
150
|
+
c && /* @__PURE__ */ t(l, { variant: "body1", children: D }),
|
|
151
151
|
I.errors.map((e, i) => /* @__PURE__ */ t(l, { variant: "body1", children: e.message }, i)),
|
|
152
152
|
h && h.map((e) => /* @__PURE__ */ t(l, { variant: "body1", children: e.reason }, e.reason))
|
|
153
153
|
] })
|
|
154
154
|
] });
|
|
155
155
|
});
|
|
156
156
|
export {
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
K as CreateChallengeTeam,
|
|
158
|
+
D as TOO_MANY_INVITEES_ERROR
|
|
159
159
|
};
|
|
160
160
|
//# sourceMappingURL=CreateChallengeTeam.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateChallengeTeam.js","sources":["../../../src/components/ChallengeTeamWizard/CreateChallengeTeam.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { Alert, Box, Typography } from '@mui/material'\nimport TextField from '../TextField'\nimport { CreateTeamRequest, Team } from '@sage-bionetworks/synapse-types'\nimport useCreateAndRegisterChallengeTeam from './useCreateAndRegisterChallengeTeam'\nimport { isEmpty, noop } from 'lodash-es'\nimport { parse } from 'papaparse'\n\nexport type CreateChallengeTeamProps = {\n challengeId: string\n onCanSubmitChange?: (canSubmit: boolean) => void\n onFinished?: (teamId: string) => void\n}\n\nconst INVITEE_LIMIT = 3\nexport const TOO_MANY_INVITEES_ERROR =\n 'Please limit the initial number of invited members to three. You may add additional members after the team has been created.'\n\nexport type CreateChallengeTeamHandle = {\n // Allow the parent component to trigger a submit of the form, so this may be embedded in an arbitrary modal.\n submit: () => void\n}\n\nexport const CreateChallengeTeam = forwardRef(function CreateChallengeTeam(\n props: CreateChallengeTeamProps,\n ref: ForwardedRef<CreateChallengeTeamHandle>,\n) {\n const { challengeId, onCanSubmitChange = noop, onFinished = noop } = props\n const [team, setTeam] = useState<CreateTeamRequest>({\n name: '',\n description: '',\n })\n const [invitationMessage, setInvitationMessage] = useState('')\n const [rawInvitees, setRawInvitees] = useState('')\n\n const handleTeamUpdate = (update: Partial<Team>) => {\n const updatedTeam: CreateTeamRequest = { ...team, ...update }\n setTeam(updatedTeam)\n }\n\n const { inviteesParseResult, parsedInvitees } = useMemo(() => {\n const inviteesParseResult = parse<string[]>(rawInvitees, {\n delimiter: ',',\n transform(value) {\n return value.trim()\n },\n })\n const parsedInvitees: string[] = inviteesParseResult.data[0] || []\n\n return { inviteesParseResult, parsedInvitees }\n }, [rawInvitees])\n\n const numberOfInvitees = parsedInvitees.length\n const tooManyInvitees = numberOfInvitees > INVITEE_LIMIT\n\n const formDataIsValid = Boolean(\n team && team.name && team.name.length > 1 && !tooManyInvitees,\n )\n\n useEffect(() => {\n onCanSubmitChange(formDataIsValid)\n }, [formDataIsValid, onCanSubmitChange])\n\n const {\n createAndRegisterTeam,\n isPending: mutationIsPending,\n errors,\n } = useCreateAndRegisterChallengeTeam()\n\n useImperativeHandle(\n ref,\n () => {\n return {\n submit() {\n if (!formDataIsValid) {\n console.warn(\n 'Attempted to submit when form data was not valid. Nothing will happen.',\n )\n return\n }\n createAndRegisterTeam(\n team,\n challengeId,\n parsedInvitees,\n invitationMessage,\n )\n .then(([newTeam]) => {\n onFinished(newTeam.id)\n })\n .catch(() => {\n // The hook will return errors, so no need to handle them here\n })\n },\n }\n },\n [\n formDataIsValid,\n parsedInvitees,\n createAndRegisterTeam,\n team,\n challengeId,\n invitationMessage,\n onFinished,\n ],\n )\n\n return (\n <Box>\n <Typography variant=\"body1\" sx={{ lineHeight: '20px' }}>\n Create a new team for this Challenge!\n </Typography>\n <TextField\n id=\"name\"\n label=\"Team Name\"\n value={team.name}\n fullWidth\n autoFocus\n required\n onChange={event => handleTeamUpdate({ name: event.target.value })}\n disabled={mutationIsPending}\n />\n <Box\n sx={{\n display: 'flex',\n }}\n >\n <TextField\n id=\"description\"\n label={\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n }}\n >\n <Box>Team Description</Box>\n </Box>\n }\n value={team.description}\n fullWidth\n multiline\n rows={4}\n onChange={event =>\n handleTeamUpdate({ description: event.target.value })\n }\n disabled={mutationIsPending}\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n }}\n >\n <TextField\n id=\"message\"\n label={\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n }}\n >\n <Box>Recruitment Message</Box>\n </Box>\n }\n value={invitationMessage}\n fullWidth\n multiline\n rows={4}\n onChange={event => setInvitationMessage(event.target.value)}\n disabled={mutationIsPending}\n />\n </Box>\n <TextField\n id=\"invitees\"\n label=\"Emails of Additional Members to Invite (max 3)\"\n placeholder=\"Enter emails separated by comma\"\n value={rawInvitees}\n fullWidth\n onChange={event => setRawInvitees(event.target.value)}\n disabled={mutationIsPending}\n />\n {(tooManyInvitees || !isEmpty(inviteesParseResult.errors) || errors) && (\n <Alert severity=\"error\">\n {tooManyInvitees && (\n <Typography variant={'body1'}>{TOO_MANY_INVITEES_ERROR}</Typography>\n )}\n {inviteesParseResult.errors.map((error, index) => (\n <Typography key={index} variant={'body1'}>\n {error.message}\n </Typography>\n ))}\n {errors &&\n errors.map(error => (\n <Typography key={error.reason} variant={'body1'}>\n {error.reason}\n </Typography>\n ))}\n </Alert>\n )}\n </Box>\n )\n})\n"],"names":["INVITEE_LIMIT","TOO_MANY_INVITEES_ERROR","CreateChallengeTeam","forwardRef","props","ref","challengeId","onCanSubmitChange","noop","onFinished","team","setTeam","useState","invitationMessage","setInvitationMessage","rawInvitees","setRawInvitees","handleTeamUpdate","update","updatedTeam","inviteesParseResult","parsedInvitees","useMemo","parse","value","tooManyInvitees","formDataIsValid","useEffect","createAndRegisterTeam","mutationIsPending","errors","useCreateAndRegisterChallengeTeam","useImperativeHandle","newTeam","Box","jsx","Typography","TextField","event","isEmpty","jsxs","Alert","error","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateChallengeTeam.js","sources":["../../../src/components/ChallengeTeamWizard/CreateChallengeTeam.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { Alert, Box, Typography } from '@mui/material'\nimport TextField from '../TextField'\nimport { CreateTeamRequest, Team } from '@sage-bionetworks/synapse-types'\nimport useCreateAndRegisterChallengeTeam from './useCreateAndRegisterChallengeTeam'\nimport { isEmpty, noop } from 'lodash-es'\nimport papaparseLib from 'papaparse'\n// papaparse is CJS-only; pull named values from the default export.\nconst { parse } = papaparseLib\n\nexport type CreateChallengeTeamProps = {\n challengeId: string\n onCanSubmitChange?: (canSubmit: boolean) => void\n onFinished?: (teamId: string) => void\n}\n\nconst INVITEE_LIMIT = 3\nexport const TOO_MANY_INVITEES_ERROR =\n 'Please limit the initial number of invited members to three. You may add additional members after the team has been created.'\n\nexport type CreateChallengeTeamHandle = {\n // Allow the parent component to trigger a submit of the form, so this may be embedded in an arbitrary modal.\n submit: () => void\n}\n\nexport const CreateChallengeTeam = forwardRef(function CreateChallengeTeam(\n props: CreateChallengeTeamProps,\n ref: ForwardedRef<CreateChallengeTeamHandle>,\n) {\n const { challengeId, onCanSubmitChange = noop, onFinished = noop } = props\n const [team, setTeam] = useState<CreateTeamRequest>({\n name: '',\n description: '',\n })\n const [invitationMessage, setInvitationMessage] = useState('')\n const [rawInvitees, setRawInvitees] = useState('')\n\n const handleTeamUpdate = (update: Partial<Team>) => {\n const updatedTeam: CreateTeamRequest = { ...team, ...update }\n setTeam(updatedTeam)\n }\n\n const { inviteesParseResult, parsedInvitees } = useMemo(() => {\n const inviteesParseResult = parse<string[]>(rawInvitees, {\n delimiter: ',',\n transform(value) {\n return value.trim()\n },\n })\n const parsedInvitees: string[] = inviteesParseResult.data[0] || []\n\n return { inviteesParseResult, parsedInvitees }\n }, [rawInvitees])\n\n const numberOfInvitees = parsedInvitees.length\n const tooManyInvitees = numberOfInvitees > INVITEE_LIMIT\n\n const formDataIsValid = Boolean(\n team && team.name && team.name.length > 1 && !tooManyInvitees,\n )\n\n useEffect(() => {\n onCanSubmitChange(formDataIsValid)\n }, [formDataIsValid, onCanSubmitChange])\n\n const {\n createAndRegisterTeam,\n isPending: mutationIsPending,\n errors,\n } = useCreateAndRegisterChallengeTeam()\n\n useImperativeHandle(\n ref,\n () => {\n return {\n submit() {\n if (!formDataIsValid) {\n console.warn(\n 'Attempted to submit when form data was not valid. Nothing will happen.',\n )\n return\n }\n createAndRegisterTeam(\n team,\n challengeId,\n parsedInvitees,\n invitationMessage,\n )\n .then(([newTeam]) => {\n onFinished(newTeam.id)\n })\n .catch(() => {\n // The hook will return errors, so no need to handle them here\n })\n },\n }\n },\n [\n formDataIsValid,\n parsedInvitees,\n createAndRegisterTeam,\n team,\n challengeId,\n invitationMessage,\n onFinished,\n ],\n )\n\n return (\n <Box>\n <Typography variant=\"body1\" sx={{ lineHeight: '20px' }}>\n Create a new team for this Challenge!\n </Typography>\n <TextField\n id=\"name\"\n label=\"Team Name\"\n value={team.name}\n fullWidth\n autoFocus\n required\n onChange={event => handleTeamUpdate({ name: event.target.value })}\n disabled={mutationIsPending}\n />\n <Box\n sx={{\n display: 'flex',\n }}\n >\n <TextField\n id=\"description\"\n label={\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n }}\n >\n <Box>Team Description</Box>\n </Box>\n }\n value={team.description}\n fullWidth\n multiline\n rows={4}\n onChange={event =>\n handleTeamUpdate({ description: event.target.value })\n }\n disabled={mutationIsPending}\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n }}\n >\n <TextField\n id=\"message\"\n label={\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n }}\n >\n <Box>Recruitment Message</Box>\n </Box>\n }\n value={invitationMessage}\n fullWidth\n multiline\n rows={4}\n onChange={event => setInvitationMessage(event.target.value)}\n disabled={mutationIsPending}\n />\n </Box>\n <TextField\n id=\"invitees\"\n label=\"Emails of Additional Members to Invite (max 3)\"\n placeholder=\"Enter emails separated by comma\"\n value={rawInvitees}\n fullWidth\n onChange={event => setRawInvitees(event.target.value)}\n disabled={mutationIsPending}\n />\n {(tooManyInvitees || !isEmpty(inviteesParseResult.errors) || errors) && (\n <Alert severity=\"error\">\n {tooManyInvitees && (\n <Typography variant={'body1'}>{TOO_MANY_INVITEES_ERROR}</Typography>\n )}\n {inviteesParseResult.errors.map((error, index) => (\n <Typography key={index} variant={'body1'}>\n {error.message}\n </Typography>\n ))}\n {errors &&\n errors.map(error => (\n <Typography key={error.reason} variant={'body1'}>\n {error.reason}\n </Typography>\n ))}\n </Alert>\n )}\n </Box>\n )\n})\n"],"names":["parse","papaparseLib","INVITEE_LIMIT","TOO_MANY_INVITEES_ERROR","CreateChallengeTeam","forwardRef","props","ref","challengeId","onCanSubmitChange","noop","onFinished","team","setTeam","useState","invitationMessage","setInvitationMessage","rawInvitees","setRawInvitees","handleTeamUpdate","update","updatedTeam","inviteesParseResult","parsedInvitees","useMemo","value","tooManyInvitees","formDataIsValid","useEffect","createAndRegisterTeam","mutationIsPending","errors","useCreateAndRegisterChallengeTeam","useImperativeHandle","newTeam","Box","jsx","Typography","TextField","event","isEmpty","jsxs","Alert","error","index"],"mappings":"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"}
|
|
@@ -43,11 +43,14 @@ import "@mui/material/SvgIcon";
|
|
|
43
43
|
import "../../assets/icons/AccessPending.svg.js";
|
|
44
44
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
45
45
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
46
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
47
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
46
48
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
47
49
|
import "../../assets/icons/computationalTool.svg.js";
|
|
48
50
|
import "../../assets/icons/dataReuse.svg.js";
|
|
49
51
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
50
52
|
import "../../assets/icons/modelSystem.svg.js";
|
|
53
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
51
54
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
52
55
|
/* empty css */
|
|
53
56
|
import "../Authentication/AuthenticationMethodSelection.js";
|
|
@@ -58,7 +61,7 @@ import "react-hot-toast";
|
|
|
58
61
|
import "react-transition-group";
|
|
59
62
|
import "../Authentication/RecoveryCodeGrid.js";
|
|
60
63
|
const H = "Two-factor authentication is required to change your password. Your password has not yet been changed.";
|
|
61
|
-
function
|
|
64
|
+
function $o(p) {
|
|
62
65
|
const _ = W("/reset2FA"), w = Y(
|
|
63
66
|
_,
|
|
64
67
|
"twoFAResetToken"
|
|
@@ -176,6 +179,6 @@ function zo(p) {
|
|
|
176
179
|
}
|
|
177
180
|
export {
|
|
178
181
|
H as TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT,
|
|
179
|
-
|
|
182
|
+
$o as default
|
|
180
183
|
};
|
|
181
184
|
//# sourceMappingURL=useChangePasswordFormState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChangePasswordFormState.js","sources":["../../../src/components/ChangePassword/useChangePasswordFormState.tsx"],"sourcesContent":["import { useChangePassword, useResetTwoFactorAuth } from '@/synapse-queries'\nimport appendFinalQueryParamKey from '@/utils/appendFinalQueryParamKey'\nimport { useOneSageURL } from '@/utils/hooks'\nimport { Alert, Typography } from '@mui/material'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n ChangePasswordWithCurrentPassword,\n ChangePasswordWithToken as ChangePasswordWithTokenObject,\n ChangePasswordWithTwoFactorAuthToken,\n PasswordResetSignedToken,\n TwoFactorAuthOtpType,\n TwoFactorAuthResetRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport { ONE_TIME_PASSWORD_STEP, OneTimePasswordForm } from '../Authentication'\nimport {\n RECOVERY_CODE_GUIDANCE_TEXT_SHORT,\n TOTP_GUIDANCE_TEXT,\n} from '../Authentication/Constants'\n\nexport const TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT =\n 'Two-factor authentication is required to change your password. Your password has not yet been changed.'\n\nexport type UseChangePasswordFormStateOptions = {\n hideReset2FA?: boolean\n onChangePasswordSuccess?: () => void\n}\n\n/**\n * Hook that handles submitting a change password request and prompting the user for 2FA if necessary.\n * @param options\n */\nexport default function useChangePasswordFormState(\n options?: UseChangePasswordFormStateOptions,\n) {\n const defaultTwoFactorAuthResetUrl = useOneSageURL('/reset2FA')\n const twoFactorAuthResetUri = appendFinalQueryParamKey(\n defaultTwoFactorAuthResetUrl,\n 'twoFAResetToken',\n )\n\n // Store current and new password in state so that we can re-use it if 2FA is required\n const [currentPassword, setCurrentPassword] = useState<string>('')\n const [newPassword, setNewPassword] = useState<string>('')\n const [twoFactorAuthErrorResponse, setTwoFactorAuthErrorResponse] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n const [otpStep, setOtpStep] =\n useState<ONE_TIME_PASSWORD_STEP>('VERIFICATION_CODE')\n const [successfullyChangedPassword, setSuccessfullyChangedPassword] =\n useState(false)\n const {\n mutate: changePassword,\n isPending,\n error,\n } = useChangePassword({\n onSuccess: maybeTwoFactorResponse => {\n if (maybeTwoFactorResponse) {\n // We store the 2FA Error Response in state because the `changePasswordResult` may change before we are done with the 2FA code,\n // e.g. if the user enters the wrong 2FA code\n setTwoFactorAuthErrorResponse(maybeTwoFactorResponse)\n } else {\n setSuccessfullyChangedPassword(true)\n setTwoFactorAuthErrorResponse(undefined)\n if (options?.onChangePasswordSuccess) {\n options.onChangePasswordSuccess()\n }\n }\n },\n })\n\n const handleChangePasswordWithCurrentPassword = useCallback(\n (username: string, currentPassword: string, newPassword: string) => {\n setCurrentPassword(currentPassword)\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithCurrentPassword = {\n username,\n currentPassword,\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithCurrentPassword',\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithResetToken = useCallback(\n (newPassword: string, passwordChangeToken: PasswordResetSignedToken) => {\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithTokenObject = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithToken',\n passwordChangeToken: passwordChangeToken,\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithOtp = useCallback(\n (newPassword: string, code: string, otpType: TwoFactorAuthOtpType) => {\n if (twoFactorAuthErrorResponse) {\n const changeRequest: ChangePasswordWithTwoFactorAuthToken = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithTwoFactorAuthToken',\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaToken: twoFactorAuthErrorResponse.twoFaToken!,\n otpType: otpType,\n otpCode: code,\n }\n changePassword(changeRequest)\n }\n },\n [changePassword, twoFactorAuthErrorResponse],\n )\n const promptForTwoFactorAuth = Boolean(twoFactorAuthErrorResponse)\n const {\n mutate: resetTwoFactorAuth,\n isSuccess: twoFactorAuthResetIsSuccess,\n isPending: twoFactorAuthResetIsPending,\n } = useResetTwoFactorAuth()\n\n const beginTwoFactorAuthReset = useCallback(\n (twoFaResetEndpoint: string) => {\n if (twoFactorAuthErrorResponse) {\n const request: TwoFactorAuthResetRequest = {\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaResetEndpoint: twoFaResetEndpoint,\n // When attempting to reset 2FA while resetting a password, the current password must be used to request 2FA reset\n password: currentPassword,\n }\n resetTwoFactorAuth(request)\n }\n },\n [currentPassword, resetTwoFactorAuth, twoFactorAuthErrorResponse],\n )\n\n const TwoFactorAuthPrompt = useCallback(() => {\n if (!promptForTwoFactorAuth) {\n return <></>\n }\n return (\n <>\n {otpStep === 'VERIFICATION_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {TOTP_GUIDANCE_TEXT}\n </Typography>\n )}\n {otpStep === 'RECOVERY_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {RECOVERY_CODE_GUIDANCE_TEXT_SHORT}\n </Typography>\n )}\n <OneTimePasswordForm\n step={otpStep}\n onClickUseTOTP={() => {\n setOtpStep('VERIFICATION_CODE')\n }}\n onClickUseBackupCode={() => {\n setOtpStep('RECOVERY_CODE')\n }}\n loginIsPending={isPending}\n onSubmit={(code, otpType) =>\n handleChangePasswordWithOtp(newPassword, code, otpType)\n }\n hideReset2FA={options?.hideReset2FA}\n onClickPromptReset2FA={() => {\n setOtpStep('DISABLE_2FA_PROMPT')\n }}\n onClickReset2FA={() => {\n beginTwoFactorAuthReset(twoFactorAuthResetUri)\n }}\n twoFactorAuthResetIsPending={twoFactorAuthResetIsPending}\n twoFactorAuthResetIsSuccess={twoFactorAuthResetIsSuccess}\n />\n {(otpStep === 'RECOVERY_CODE' || otpStep === 'VERIFICATION_CODE') && (\n <Alert severity={'info'} sx={{ my: 2 }}>\n {TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT}\n </Alert>\n )}\n {otpStep === 'DISABLE_2FA_PROMPT' && twoFactorAuthResetIsSuccess && (\n <Alert severity={'warning'} sx={{ my: 2 }}>\n <strong>Your password has not been changed.</strong> To disable\n two-factor authentication, you may be required to enter your current\n password after clicking the link sent to your email address.\n </Alert>\n )}\n </>\n )\n }, [\n beginTwoFactorAuthReset,\n handleChangePasswordWithOtp,\n isPending,\n newPassword,\n options?.hideReset2FA,\n otpStep,\n promptForTwoFactorAuth,\n twoFactorAuthResetIsPending,\n twoFactorAuthResetIsSuccess,\n twoFactorAuthResetUri,\n ])\n\n return {\n successfullyChangedPassword,\n isPending,\n error,\n promptForTwoFactorAuth,\n TwoFactorAuthPrompt: TwoFactorAuthPrompt,\n handleChangePasswordWithCurrentPassword,\n handleChangePasswordWithResetToken,\n }\n}\n"],"names":["TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT","useChangePasswordFormState","options","defaultTwoFactorAuthResetUrl","useOneSageURL","twoFactorAuthResetUri","appendFinalQueryParamKey","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","twoFactorAuthErrorResponse","setTwoFactorAuthErrorResponse","otpStep","setOtpStep","successfullyChangedPassword","setSuccessfullyChangedPassword","changePassword","isPending","error","useChangePassword","maybeTwoFactorResponse","handleChangePasswordWithCurrentPassword","useCallback","username","handleChangePasswordWithResetToken","passwordChangeToken","handleChangePasswordWithOtp","code","otpType","changeRequest","promptForTwoFactorAuth","resetTwoFactorAuth","twoFactorAuthResetIsSuccess","twoFactorAuthResetIsPending","useResetTwoFactorAuth","beginTwoFactorAuthReset","twoFaResetEndpoint","request","TwoFactorAuthPrompt","jsxs","Fragment","jsx","Typography","TOTP_GUIDANCE_TEXT","RECOVERY_CODE_GUIDANCE_TEXT_SHORT","OneTimePasswordForm","Alert"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useChangePasswordFormState.js","sources":["../../../src/components/ChangePassword/useChangePasswordFormState.tsx"],"sourcesContent":["import { useChangePassword, useResetTwoFactorAuth } from '@/synapse-queries'\nimport appendFinalQueryParamKey from '@/utils/appendFinalQueryParamKey'\nimport { useOneSageURL } from '@/utils/hooks'\nimport { Alert, Typography } from '@mui/material'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n ChangePasswordWithCurrentPassword,\n ChangePasswordWithToken as ChangePasswordWithTokenObject,\n ChangePasswordWithTwoFactorAuthToken,\n PasswordResetSignedToken,\n TwoFactorAuthOtpType,\n TwoFactorAuthResetRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport { ONE_TIME_PASSWORD_STEP, OneTimePasswordForm } from '../Authentication'\nimport {\n RECOVERY_CODE_GUIDANCE_TEXT_SHORT,\n TOTP_GUIDANCE_TEXT,\n} from '../Authentication/Constants'\n\nexport const TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT =\n 'Two-factor authentication is required to change your password. Your password has not yet been changed.'\n\nexport type UseChangePasswordFormStateOptions = {\n hideReset2FA?: boolean\n onChangePasswordSuccess?: () => void\n}\n\n/**\n * Hook that handles submitting a change password request and prompting the user for 2FA if necessary.\n * @param options\n */\nexport default function useChangePasswordFormState(\n options?: UseChangePasswordFormStateOptions,\n) {\n const defaultTwoFactorAuthResetUrl = useOneSageURL('/reset2FA')\n const twoFactorAuthResetUri = appendFinalQueryParamKey(\n defaultTwoFactorAuthResetUrl,\n 'twoFAResetToken',\n )\n\n // Store current and new password in state so that we can re-use it if 2FA is required\n const [currentPassword, setCurrentPassword] = useState<string>('')\n const [newPassword, setNewPassword] = useState<string>('')\n const [twoFactorAuthErrorResponse, setTwoFactorAuthErrorResponse] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n const [otpStep, setOtpStep] =\n useState<ONE_TIME_PASSWORD_STEP>('VERIFICATION_CODE')\n const [successfullyChangedPassword, setSuccessfullyChangedPassword] =\n useState(false)\n const {\n mutate: changePassword,\n isPending,\n error,\n } = useChangePassword({\n onSuccess: maybeTwoFactorResponse => {\n if (maybeTwoFactorResponse) {\n // We store the 2FA Error Response in state because the `changePasswordResult` may change before we are done with the 2FA code,\n // e.g. if the user enters the wrong 2FA code\n setTwoFactorAuthErrorResponse(maybeTwoFactorResponse)\n } else {\n setSuccessfullyChangedPassword(true)\n setTwoFactorAuthErrorResponse(undefined)\n if (options?.onChangePasswordSuccess) {\n options.onChangePasswordSuccess()\n }\n }\n },\n })\n\n const handleChangePasswordWithCurrentPassword = useCallback(\n (username: string, currentPassword: string, newPassword: string) => {\n setCurrentPassword(currentPassword)\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithCurrentPassword = {\n username,\n currentPassword,\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithCurrentPassword',\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithResetToken = useCallback(\n (newPassword: string, passwordChangeToken: PasswordResetSignedToken) => {\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithTokenObject = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithToken',\n passwordChangeToken: passwordChangeToken,\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithOtp = useCallback(\n (newPassword: string, code: string, otpType: TwoFactorAuthOtpType) => {\n if (twoFactorAuthErrorResponse) {\n const changeRequest: ChangePasswordWithTwoFactorAuthToken = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithTwoFactorAuthToken',\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaToken: twoFactorAuthErrorResponse.twoFaToken!,\n otpType: otpType,\n otpCode: code,\n }\n changePassword(changeRequest)\n }\n },\n [changePassword, twoFactorAuthErrorResponse],\n )\n const promptForTwoFactorAuth = Boolean(twoFactorAuthErrorResponse)\n const {\n mutate: resetTwoFactorAuth,\n isSuccess: twoFactorAuthResetIsSuccess,\n isPending: twoFactorAuthResetIsPending,\n } = useResetTwoFactorAuth()\n\n const beginTwoFactorAuthReset = useCallback(\n (twoFaResetEndpoint: string) => {\n if (twoFactorAuthErrorResponse) {\n const request: TwoFactorAuthResetRequest = {\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaResetEndpoint: twoFaResetEndpoint,\n // When attempting to reset 2FA while resetting a password, the current password must be used to request 2FA reset\n password: currentPassword,\n }\n resetTwoFactorAuth(request)\n }\n },\n [currentPassword, resetTwoFactorAuth, twoFactorAuthErrorResponse],\n )\n\n const TwoFactorAuthPrompt = useCallback(() => {\n if (!promptForTwoFactorAuth) {\n return <></>\n }\n return (\n <>\n {otpStep === 'VERIFICATION_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {TOTP_GUIDANCE_TEXT}\n </Typography>\n )}\n {otpStep === 'RECOVERY_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {RECOVERY_CODE_GUIDANCE_TEXT_SHORT}\n </Typography>\n )}\n <OneTimePasswordForm\n step={otpStep}\n onClickUseTOTP={() => {\n setOtpStep('VERIFICATION_CODE')\n }}\n onClickUseBackupCode={() => {\n setOtpStep('RECOVERY_CODE')\n }}\n loginIsPending={isPending}\n onSubmit={(code, otpType) =>\n handleChangePasswordWithOtp(newPassword, code, otpType)\n }\n hideReset2FA={options?.hideReset2FA}\n onClickPromptReset2FA={() => {\n setOtpStep('DISABLE_2FA_PROMPT')\n }}\n onClickReset2FA={() => {\n beginTwoFactorAuthReset(twoFactorAuthResetUri)\n }}\n twoFactorAuthResetIsPending={twoFactorAuthResetIsPending}\n twoFactorAuthResetIsSuccess={twoFactorAuthResetIsSuccess}\n />\n {(otpStep === 'RECOVERY_CODE' || otpStep === 'VERIFICATION_CODE') && (\n <Alert severity={'info'} sx={{ my: 2 }}>\n {TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT}\n </Alert>\n )}\n {otpStep === 'DISABLE_2FA_PROMPT' && twoFactorAuthResetIsSuccess && (\n <Alert severity={'warning'} sx={{ my: 2 }}>\n <strong>Your password has not been changed.</strong> To disable\n two-factor authentication, you may be required to enter your current\n password after clicking the link sent to your email address.\n </Alert>\n )}\n </>\n )\n }, [\n beginTwoFactorAuthReset,\n handleChangePasswordWithOtp,\n isPending,\n newPassword,\n options?.hideReset2FA,\n otpStep,\n promptForTwoFactorAuth,\n twoFactorAuthResetIsPending,\n twoFactorAuthResetIsSuccess,\n twoFactorAuthResetUri,\n ])\n\n return {\n successfullyChangedPassword,\n isPending,\n error,\n promptForTwoFactorAuth,\n TwoFactorAuthPrompt: TwoFactorAuthPrompt,\n handleChangePasswordWithCurrentPassword,\n handleChangePasswordWithResetToken,\n }\n}\n"],"names":["TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT","useChangePasswordFormState","options","defaultTwoFactorAuthResetUrl","useOneSageURL","twoFactorAuthResetUri","appendFinalQueryParamKey","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","twoFactorAuthErrorResponse","setTwoFactorAuthErrorResponse","otpStep","setOtpStep","successfullyChangedPassword","setSuccessfullyChangedPassword","changePassword","isPending","error","useChangePassword","maybeTwoFactorResponse","handleChangePasswordWithCurrentPassword","useCallback","username","handleChangePasswordWithResetToken","passwordChangeToken","handleChangePasswordWithOtp","code","otpType","changeRequest","promptForTwoFactorAuth","resetTwoFactorAuth","twoFactorAuthResetIsSuccess","twoFactorAuthResetIsPending","useResetTwoFactorAuth","beginTwoFactorAuthReset","twoFaResetEndpoint","request","TwoFactorAuthPrompt","jsxs","Fragment","jsx","Typography","TOTP_GUIDANCE_TEXT","RECOVERY_CODE_GUIDANCE_TEXT_SHORT","OneTimePasswordForm","Alert"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CitationPopoverContent.d.ts","sourceRoot":"","sources":["../../../src/components/CitationPopover/CitationPopoverContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAYL,YAAY,EACb,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAA;AA2B/D,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAC9C,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAE5D,eAAO,MAAM,sBAAsB,GACjC,OAAO,oBAAoB,KAC1B,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"CitationPopoverContent.d.ts","sourceRoot":"","sources":["../../../src/components/CitationPopover/CitationPopoverContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAYL,YAAY,EACb,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAA;AA2B/D,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAC9C,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAE5D,eAAO,MAAM,sBAAsB,GACjC,OAAO,oBAAoB,KAC1B,KAAK,CAAC,SA4LR,CAAA;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as e, jsxs as t, Fragment as k } from "react/jsx-runtime";
|
|
2
|
-
import { Popover as O, Stack as S, Box as n, Typography as
|
|
2
|
+
import { Popover as O, Stack as S, Box as n, Typography as p, Alert as B, FormControl as D, Select as H, MenuItem as i, Button as L } from "@mui/material";
|
|
3
3
|
import { useCitation as F } from "./useCitation.js";
|
|
4
4
|
import { createLinkAndDownload as R } from "./CitationPopoverUtils.js";
|
|
5
5
|
import { KeyboardArrowDown as A } from "@mui/icons-material";
|
|
6
6
|
import E from "@mui/icons-material/Close";
|
|
7
7
|
import { useState as T } from "react";
|
|
8
8
|
import { CopyToClipboardIcon as W } from "../CopyToClipboardIcon.js";
|
|
9
|
-
import {
|
|
9
|
+
import { Markdown as j } from "../Markdown/MarkdownSynapse.js";
|
|
10
10
|
const z = {
|
|
11
11
|
width: "100%",
|
|
12
12
|
".MuiInputBase-root": {
|
|
@@ -44,8 +44,8 @@ const z = {
|
|
|
44
44
|
), {
|
|
45
45
|
data: a,
|
|
46
46
|
isLoading: v,
|
|
47
|
-
error:
|
|
48
|
-
} = F(x || "", r, !0),
|
|
47
|
+
error: d
|
|
48
|
+
} = F(x || "", r, !0), w = (o) => {
|
|
49
49
|
if (!o)
|
|
50
50
|
return;
|
|
51
51
|
const y = {
|
|
@@ -54,9 +54,9 @@ const z = {
|
|
|
54
54
|
ieee: "ris",
|
|
55
55
|
nature: "ris",
|
|
56
56
|
science: "ris"
|
|
57
|
-
}[r] || "txt",
|
|
58
|
-
R(m || "citation", y,
|
|
59
|
-
},
|
|
57
|
+
}[r] || "txt", M = new Blob([o], { type: "text/plain" }), I = URL.createObjectURL(M);
|
|
58
|
+
R(m || "citation", y, I);
|
|
59
|
+
}, C = (o) => {
|
|
60
60
|
g(o.target.value);
|
|
61
61
|
};
|
|
62
62
|
return /* @__PURE__ */ e(
|
|
@@ -103,7 +103,7 @@ const z = {
|
|
|
103
103
|
children: [
|
|
104
104
|
/* @__PURE__ */ t(n, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
105
105
|
/* @__PURE__ */ e(
|
|
106
|
-
|
|
106
|
+
p,
|
|
107
107
|
{
|
|
108
108
|
sx: { fontSize: "20px", fontWeight: 700, lineHeight: "normal" },
|
|
109
109
|
children: "Cite As:"
|
|
@@ -124,11 +124,12 @@ const z = {
|
|
|
124
124
|
}
|
|
125
125
|
)
|
|
126
126
|
] }),
|
|
127
|
-
|
|
127
|
+
d && /* @__PURE__ */ e(B, { severity: "error", sx: { my: 2 }, icon: !1, children: d.message }),
|
|
128
128
|
/* @__PURE__ */ t(
|
|
129
|
-
|
|
129
|
+
p,
|
|
130
130
|
{
|
|
131
131
|
variant: "smallText1",
|
|
132
|
+
component: "div",
|
|
132
133
|
sx: {
|
|
133
134
|
lineHeight: "normal",
|
|
134
135
|
maxHeight: "300px",
|
|
@@ -171,7 +172,7 @@ const z = {
|
|
|
171
172
|
}
|
|
172
173
|
},
|
|
173
174
|
value: r,
|
|
174
|
-
onChange:
|
|
175
|
+
onChange: C,
|
|
175
176
|
IconComponent: A,
|
|
176
177
|
children: [
|
|
177
178
|
/* @__PURE__ */ e(i, { value: "bibtex", children: "bibtex" }),
|
|
@@ -185,7 +186,7 @@ const z = {
|
|
|
185
186
|
/* @__PURE__ */ e(
|
|
186
187
|
L,
|
|
187
188
|
{
|
|
188
|
-
onClick: () =>
|
|
189
|
+
onClick: () => w(a || ""),
|
|
189
190
|
variant: "contained",
|
|
190
191
|
sx: {
|
|
191
192
|
padding: "6px 16px",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CitationPopoverContent.js","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 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"],"names":["selectSx","CitationPopoverContent","props","doi","title","boilerplateText","defaultCitationFormat","onClose","anchorEl","open","id","citationFormat","setCitationFormat","useState","citation","isLoading","error","useCitation","handleDownload","fileExtension","blob","url","createLinkAndDownload","handleChange","event","jsx","Popover","theme","jsxs","Stack","Box","Typography","CloseIcon","Alert","Fragment","MarkdownSynapse","FormControl","Select","KeyboardArrowDown","MenuItem","Button","CopyToClipboardIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CitationPopoverContent.js","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"],"names":["selectSx","CitationPopoverContent","props","doi","title","boilerplateText","defaultCitationFormat","onClose","anchorEl","open","id","citationFormat","setCitationFormat","useState","citation","isLoading","error","useCitation","handleDownload","fileExtension","blob","url","createLinkAndDownload","handleChange","event","jsx","Popover","theme","jsxs","Stack","Box","Typography","CloseIcon","Alert","Fragment","MarkdownSynapse","FormControl","Select","KeyboardArrowDown","MenuItem","Button","CopyToClipboardIcon"],"mappings":"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"}
|