synapse-react-client 4.0.18 → 4.0.20
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.d.ts +3 -1
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +3 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
- package/dist/assets/GoogleIcon.js.map +1 -1
- package/dist/assets/GoogleIcon24.js.map +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
- package/dist/assets/homepage/aacr.js.map +1 -1
- package/dist/assets/homepage/cri.js.map +1 -1
- package/dist/assets/homepage/ctf.js.map +1 -1
- package/dist/assets/homepage/egress.js.map +1 -1
- package/dist/assets/homepage/facebook.js.map +1 -1
- package/dist/assets/homepage/fisma.js.map +1 -1
- package/dist/assets/homepage/gff.js.map +1 -1
- package/dist/assets/homepage/github.js.map +1 -1
- package/dist/assets/homepage/gray.js.map +1 -1
- package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
- package/dist/assets/homepage/instagram.js.map +1 -1
- package/dist/assets/homepage/linkedin.js.map +1 -1
- package/dist/assets/homepage/ml-commons.js.map +1 -1
- package/dist/assets/homepage/nih-aging.js.map +1 -1
- package/dist/assets/homepage/nih-heart.js.map +1 -1
- package/dist/assets/homepage/nih-nci.js.map +1 -1
- package/dist/assets/homepage/nih-nimh.js.map +1 -1
- package/dist/assets/homepage/ntap.js.map +1 -1
- package/dist/assets/homepage/plan-item.js.map +1 -1
- package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
- package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
- package/dist/assets/homepage/python.js.map +1 -1
- package/dist/assets/homepage/r.js.map +1 -1
- package/dist/assets/homepage/research-credit-feature.js.map +1 -1
- package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
- package/dist/assets/homepage/sloan.js.map +1 -1
- package/dist/assets/homepage/twitter.js.map +1 -1
- package/dist/assets/homepage/users.js.map +1 -1
- package/dist/assets/homepage/youtube.js.map +1 -1
- package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
- package/dist/assets/icons/AccessPending.js.map +1 -1
- package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
- package/dist/assets/icons/AddAd.js.map +1 -1
- package/dist/assets/icons/AddToList.js.map +1 -1
- package/dist/assets/icons/Alert.js.map +1 -1
- package/dist/assets/icons/Arrow.js.map +1 -1
- package/dist/assets/icons/AwardScroll.js.map +1 -1
- package/dist/assets/icons/Baseline.js.map +1 -1
- package/dist/assets/icons/Cavatica.js.map +1 -1
- package/dist/assets/icons/CertifiedUser.js.map +1 -1
- package/dist/assets/icons/Challenge.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
- package/dist/assets/icons/ClappingHands.js.map +1 -1
- package/dist/assets/icons/CloudWarning.js.map +1 -1
- package/dist/assets/icons/CommunicateFindings.js.map +1 -1
- package/dist/assets/icons/CreateVersion.js.map +1 -1
- package/dist/assets/icons/DNA_Two.js.map +1 -1
- package/dist/assets/icons/Data2.js.map +1 -1
- package/dist/assets/icons/DoubleQuotes.js.map +1 -1
- package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
- package/dist/assets/icons/FileWithShield.js.map +1 -1
- package/dist/assets/icons/FileWithShield2.js.map +1 -1
- package/dist/assets/icons/FrontHand.js.map +1 -1
- package/dist/assets/icons/HandWithMoney.js.map +1 -1
- package/dist/assets/icons/IconCopy.js.map +1 -1
- package/dist/assets/icons/IconMinus.js.map +1 -1
- package/dist/assets/icons/IconPlus.js.map +1 -1
- package/dist/assets/icons/Java.js.map +1 -1
- package/dist/assets/icons/MintDoi.js.map +1 -1
- package/dist/assets/icons/MultiFile.js.map +1 -1
- package/dist/assets/icons/MultiFile2.js.map +1 -1
- package/dist/assets/icons/NoData.js.map +1 -1
- package/dist/assets/icons/NoSearchResults.js.map +1 -1
- package/dist/assets/icons/ORCIDIcon.js.map +1 -1
- package/dist/assets/icons/OpenBook.js.map +1 -1
- package/dist/assets/icons/Podium.js.map +1 -1
- package/dist/assets/icons/Python.js.map +1 -1
- package/dist/assets/icons/QueryStructuredData.js.map +1 -1
- package/dist/assets/icons/RLogo.js.map +1 -1
- package/dist/assets/icons/RecordProvenance.js.map +1 -1
- package/dist/assets/icons/RosetteRibbon.js.map +1 -1
- package/dist/assets/icons/SageFullLogo.js.map +1 -1
- package/dist/assets/icons/SearchImage.js.map +1 -1
- package/dist/assets/icons/ShareYourResearch.js.map +1 -1
- package/dist/assets/icons/Sort.js.map +1 -1
- package/dist/assets/icons/StarTrophy.js.map +1 -1
- package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
- package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
- package/dist/assets/icons/SynapseLogoName.js.map +1 -1
- package/dist/assets/icons/TasksIcon.js.map +1 -1
- package/dist/assets/icons/Terminal.js.map +1 -1
- package/dist/assets/icons/ThreeStars.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
- package/dist/assets/icons/ValidatedProfile.js.map +1 -1
- package/dist/assets/icons/account-certified.js.map +1 -1
- package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
- package/dist/assets/icons/account-validated.js.map +1 -1
- package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
- package/dist/assets/icons/chart2.js.map +1 -1
- package/dist/assets/icons/columns.js.map +1 -1
- package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
- package/dist/assets/icons/computationalTool.js.map +1 -1
- package/dist/assets/icons/dataReuse.js.map +1 -1
- package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
- package/dist/assets/icons/emailWithNotification.js.map +1 -1
- package/dist/assets/icons/error_page/maintenance.js.map +1 -1
- package/dist/assets/icons/error_page/no-access.js.map +1 -1
- package/dist/assets/icons/error_page/unavailable.js.map +1 -1
- package/dist/assets/icons/file.js.map +1 -1
- package/dist/assets/icons/inSilicoModel.js.map +1 -1
- package/dist/assets/icons/institution.js.map +1 -1
- package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
- package/dist/assets/icons/modelSystem.js.map +1 -1
- package/dist/assets/icons/mouse.js.map +1 -1
- package/dist/assets/icons/organizations.js.map +1 -1
- package/dist/assets/icons/person.js.map +1 -1
- package/dist/assets/icons/spatialProfiling.js.map +1 -1
- package/dist/assets/icons/standardDataModel.js.map +1 -1
- package/dist/assets/icons/study-active.js.map +1 -1
- package/dist/assets/icons/study-complete.js.map +1 -1
- package/dist/assets/icons/subscribe_plus.js.map +1 -1
- package/dist/assets/icons/synapse-logo.js.map +1 -1
- package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
- package/dist/assets/icons/translational.js.map +1 -1
- package/dist/assets/icons/tree_horizontal.js.map +1 -1
- package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
- package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
- package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
- package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
- package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
- package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
- package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
- package/dist/assets/illustrations/docker_illustration.js.map +1 -1
- package/dist/assets/illustrations/donation_illustration.js.map +1 -1
- package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
- package/dist/assets/illustrations/files_illustration.js.map +1 -1
- package/dist/assets/illustrations/following_illustration.js.map +1 -1
- package/dist/assets/illustrations/index.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/projects_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/tables_illustration.js.map +1 -1
- package/dist/assets/illustrations/teams_illustration.js.map +1 -1
- package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
- package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
- package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
- package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
- package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
- package/dist/assets/logos/other/pluto-logo.js.map +1 -1
- package/dist/assets/logos/other/terra-logo.js.map +1 -1
- package/dist/assets/mui_components/AccessManagement.js.map +1 -1
- package/dist/assets/mui_components/AccountCertified.js.map +1 -1
- package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
- package/dist/assets/mui_components/AccountValidated.js.map +1 -1
- package/dist/assets/mui_components/ActionKey.js.map +1 -1
- package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
- package/dist/assets/mui_components/Chromatin.js.map +1 -1
- package/dist/assets/mui_components/Clinical.js.map +1 -1
- package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
- package/dist/assets/mui_components/Data.js.map +1 -1
- package/dist/assets/mui_components/DataLocked.js.map +1 -1
- package/dist/assets/mui_components/DataReuse.js.map +1 -1
- package/dist/assets/mui_components/Dataset.js.map +1 -1
- package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
- package/dist/assets/mui_components/Docker.js.map +1 -1
- package/dist/assets/mui_components/GeneExpression.js.map +1 -1
- package/dist/assets/mui_components/GeneVariants.js.map +1 -1
- package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
- package/dist/assets/mui_components/Imaging.js.map +1 -1
- package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
- package/dist/assets/mui_components/Kinomics.js.map +1 -1
- package/dist/assets/mui_components/LineGraph.js.map +1 -1
- package/dist/assets/mui_components/ModelSystem.js.map +1 -1
- package/dist/assets/mui_components/Other.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
- package/dist/assets/mui_components/Proteomics.js.map +1 -1
- package/dist/assets/mui_components/Rat.js.map +1 -1
- package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
- package/dist/assets/sustainability/dialPosition1.js.map +1 -1
- package/dist/assets/sustainability/dialPosition2.js.map +1 -1
- package/dist/assets/sustainability/dialPosition3.js.map +1 -1
- package/dist/assets/sustainability/dialPosition4.js.map +1 -1
- package/dist/assets/themed_icons/Active.js.map +1 -1
- package/dist/assets/themed_icons/Chart.js.map +1 -1
- package/dist/assets/themed_icons/Close.js.map +1 -1
- package/dist/assets/themed_icons/Collapse.js.map +1 -1
- package/dist/assets/themed_icons/Columns.js.map +1 -1
- package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
- package/dist/assets/themed_icons/Database.js.map +1 -1
- package/dist/assets/themed_icons/Download.js.map +1 -1
- package/dist/assets/themed_icons/Expand.js.map +1 -1
- package/dist/assets/themed_icons/Explore.js.map +1 -1
- package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
- package/dist/assets/themed_icons/Filter.js.map +1 -1
- package/dist/assets/themed_icons/Program.js.map +1 -1
- package/dist/assets/themed_icons/Project.js.map +1 -1
- package/dist/assets/themed_icons/Publication.js.map +1 -1
- package/dist/assets/themed_icons/Search.js.map +1 -1
- package/dist/assets/themed_icons/Settings.js.map +1 -1
- package/dist/assets/themed_icons/SortDown.js.map +1 -1
- package/dist/assets/themed_icons/SortUp.js.map +1 -1
- package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
- package/dist/assets/themed_icons/Study.js.map +1 -1
- package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
- package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
- package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
- package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
- package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
- package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
- package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
- package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
- package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
- package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
- package/dist/components/Authentication/LoginForm.js.map +1 -1
- package/dist/components/Authentication/LoginMethod.js.map +1 -1
- package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
- package/dist/components/Authentication/Logout.js.map +1 -1
- package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
- package/dist/components/Authentication/PasswordField.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
- package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CitationPopover/useCitation.js.map +1 -1
- package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
- package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
- package/dist/components/CopyToClipboardIcon.js.map +1 -1
- package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
- package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
- package/dist/components/CrispChat/CrispChat.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.js +116 -0
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/StartGridSession.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +219 -211
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
- package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
- package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
- package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
- package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
- package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DatasetJsonLdScript.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
- package/dist/components/DialogBase.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
- package/dist/components/DirectDownloadButton.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
- package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
- package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
- package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
- package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +134 -136
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
- package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
- package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
- package/dist/components/EntityForm/EntityForm.js.map +1 -1
- package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
- package/dist/components/EntityIcon.js.map +1 -1
- package/dist/components/EntityLink.js.map +1 -1
- package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
- package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
- package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
- package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
- package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
- package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
- package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
- package/dist/components/Evaluation/input_models/models.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
- package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
- package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
- package/dist/components/FilePreview/EntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
- package/dist/components/FilePreview/PdfPreview.js.map +1 -1
- package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
- package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/Forum/DiscussionReply.js.map +1 -1
- package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
- package/dist/components/Forum/DiscussionThread.js.map +1 -1
- package/dist/components/Forum/ForumPage.js.map +1 -1
- package/dist/components/Forum/ForumTable.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/Forum/SubscribersModal.js.map +1 -1
- package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
- package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
- package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
- package/dist/components/GenericCard/Linkify.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
- package/dist/components/Goals/Goals.Desktop.js.map +1 -1
- package/dist/components/Goals/Goals.Mobile.js.map +1 -1
- package/dist/components/Goals/Goals.js +25 -27
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.js +14 -16
- package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js +14 -16
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
- package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
- package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js +10 -10
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
- package/dist/components/HasAccess/useHasAccess.js.map +1 -1
- package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IDUReport/IDUReport.js.map +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconList.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/IconSvgButton.js.map +1 -1
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
- package/dist/components/ImageFromSynapseTable.js.map +1 -1
- package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/JsonLdScript.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
- package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
- package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
- 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 +75 -106
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +38 -37
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
- package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/MuiContainer.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
- package/dist/components/PageProgress/PageProgress.js.map +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/DotPlot.js.map +1 -1
- package/dist/components/Plot/Plot.d.ts +12 -1
- package/dist/components/Plot/Plot.d.ts.map +1 -1
- package/dist/components/Plot/Plot.js +5 -1
- package/dist/components/Plot/Plot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/Plot/index.d.ts +3 -1
- package/dist/components/Plot/index.d.ts.map +1 -1
- package/dist/components/Plot/index.js +2 -1
- package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
- package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Desktop.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
- package/dist/components/QueryContext/QueryContext.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QuerySortSelector.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
- package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
- package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
- package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
- package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
- package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
- package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
- package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
- package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js.map +1 -1
- package/dist/components/Resources/Resources.Mobile.js.map +1 -1
- package/dist/components/Resources/Resources.js +8 -11
- package/dist/components/Resources/Resources.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/ShowMore/ShowMore.js.map +1 -1
- package/dist/components/SignInButton.js.map +1 -1
- package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
- package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
- package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
- package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
- package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
- package/dist/components/SmartLink/SmartButton.js.map +1 -1
- package/dist/components/SmartLink/SmartLink.js.map +1 -1
- package/dist/components/SmartLink/useSmartLink.js.map +1 -1
- package/dist/components/SourceAppImage.js.map +1 -1
- package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
- package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
- package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/Topic.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
- package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
- package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
- package/dist/components/SynapseForm/DataDebug.js.map +1 -1
- package/dist/components/SynapseForm/Header.js.map +1 -1
- package/dist/components/SynapseForm/NavButtons.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseForm/types.js.map +1 -1
- package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
- package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
- package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
- package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
- package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
- package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
- package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js.map +1 -1
- package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
- package/dist/components/SynapseTable/TablePagination.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
- package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/SynapseTable/useTableSort.js.map +1 -1
- package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +12 -12
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +32 -32
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TeamBadge.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TemplateComponent.js.map +1 -1
- package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
- package/dist/components/TextToComponentCollapse.js.map +1 -1
- package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
- package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
- package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
- package/dist/components/TotalQueryResults.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCard/UserBadge.js.map +1 -1
- package/dist/components/UserCard/UserCard.js.map +1 -1
- package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
- package/dist/components/UserCard/UserCardLarge.js.map +1 -1
- package/dist/components/UserCard/UserCardMedium.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
- package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
- package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
- package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/doi/DoiFormSchemas.js.map +1 -1
- package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/download_list/index.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js.map +1 -1
- package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/error/ErrorPage.js +24 -24
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/error/RouteErrorBoundary.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
- package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
- package/dist/components/favorites/FavoriteButton.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
- package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
- package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
- package/dist/components/home_page/ExpandableContent.js.map +1 -1
- package/dist/components/index.js +48 -47
- package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
- package/dist/components/layout/SWCHeader.js.map +1 -1
- package/dist/components/layout/SWCPageLayout.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/HoverPopover.js.map +1 -1
- package/dist/components/styled/InlineBadge.js.map +1 -1
- package/dist/components/styled/InputSizedButton.js.map +1 -1
- package/dist/components/styled/LargeButton.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/styled/LightTooltip.js.map +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/styled/StyledTableContainer.js.map +1 -1
- package/dist/components/styled/WideButton.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +113 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
- package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
- package/dist/components/trash/TrashCanList.js.map +1 -1
- package/dist/components/utils/Blocker.js.map +1 -1
- package/dist/components/utils/ConditionalWrapper.js.map +1 -1
- package/dist/components/utils/VisibilityObserver.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/EntityColumnImage.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/components/widgets/ImageFileHandle.js.map +1 -1
- package/dist/components/widgets/LoginAwareButton.js.map +1 -1
- package/dist/components/widgets/Range.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/SynapseVideo.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +11 -3
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- package/dist/index.js +54 -53
- package/dist/index.js.map +1 -1
- package/dist/mocks/MockAccessApprovals.js.map +1 -1
- package/dist/mocks/MockSynapseContext.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
- package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
- package/dist/mocks/challenge/mockChallenge.js.map +1 -1
- package/dist/mocks/chat/mockChat.js.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
- package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
- package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
- package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
- package/dist/mocks/discussion/mock_discussion.js.map +1 -1
- package/dist/mocks/doi/MockDoi.js.map +1 -1
- package/dist/mocks/entity/index.js.map +1 -1
- package/dist/mocks/entity/mockDataset.js.map +1 -1
- package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
- package/dist/mocks/entity/mockEntity.js.map +1 -1
- package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
- package/dist/mocks/entity/mockFileEntity.js.map +1 -1
- package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
- package/dist/mocks/entity/mockFileView.js.map +1 -1
- package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
- package/dist/mocks/entity/mockProject.js.map +1 -1
- package/dist/mocks/entity/mockProjectView.js.map +1 -1
- package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
- package/dist/mocks/entity/mockRootEntity.js.map +1 -1
- package/dist/mocks/entity/mockTableEntity.js.map +1 -1
- package/dist/mocks/faker/fakerUtils.js.map +1 -1
- package/dist/mocks/faker/generateDiscussion.js.map +1 -1
- package/dist/mocks/faker/generateEvaluation.js.map +1 -1
- package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
- package/dist/mocks/faker/generateSubscription.js.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/mockCertificationQuiz.js.map +1 -1
- package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
- package/dist/mocks/mockFileViewQuery.js.map +1 -1
- package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
- package/dist/mocks/mockQueryResponseData.js.map +1 -1
- package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
- package/dist/mocks/mockSchema.js.map +1 -1
- package/dist/mocks/mockSearchQueryData.js.map +1 -1
- package/dist/mocks/mockShortIo.js.map +1 -1
- package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
- package/dist/mocks/mockSubscription.js.map +1 -1
- package/dist/mocks/mockWiki.js.map +1 -1
- package/dist/mocks/mockWikiPageKey.js.map +1 -1
- package/dist/mocks/mock_drug_tool_data.js.map +1 -1
- package/dist/mocks/mock_file_handle.js.map +1 -1
- package/dist/mocks/mock_file_statistics.js.map +1 -1
- package/dist/mocks/mock_has_access_data.js.map +1 -1
- package/dist/mocks/mock_upload_destination.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
- package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/mocks/msw/server.d.ts +1 -1
- package/dist/mocks/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js.map +1 -1
- package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
- package/dist/mocks/oauth/MockClient.js.map +1 -1
- package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
- package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
- package/dist/mocks/provenance/mockActivity.js.map +1 -1
- package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
- package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
- package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
- package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
- package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mock_query_data.js.map +1 -1
- package/dist/mocks/query/syn16787123.js.map +1 -1
- package/dist/mocks/query/syn17328596.js.map +1 -1
- package/dist/mocks/query/syn51735464.js.map +1 -1
- package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
- package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
- package/dist/mocks/team/mockTeam.js.map +1 -1
- package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
- package/dist/mocks/user/mock_user_profile.js.map +1 -1
- package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
- package/dist/ror-client/index.js.map +1 -1
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/stories/ToastDemo.js.map +1 -1
- package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
- package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
- package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
- package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
- package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
- package/dist/synapse-client/HttpClient.js.map +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +61 -69
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
- package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
- package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
- package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
- package/dist/synapse-queries/forum/useForum.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/github/useGithub.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/message/useMessage.js.map +1 -1
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
- package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
- package/dist/synapse-queries/ror/index.js.map +1 -1
- package/dist/synapse-queries/search/useSearch.js.map +1 -1
- package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
- package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
- package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
- package/dist/synapse-queries/user/useProjects.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
- package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
- package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
- package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
- package/dist/testutils/LocationTracker.js.map +1 -1
- package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/TestingLibraryUtils.js +18 -16
- package/dist/testutils/TestingLibraryUtils.js.map +1 -1
- package/dist/testutils/muiDatePickerMock.js.map +1 -1
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/mergeTheme.js.map +1 -1
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/theme/spreadSx.js.map +1 -1
- package/dist/theme/typography/Link.js.map +1 -1
- package/dist/theme/typography/Typography.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +11 -11
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/OrientationBannerConstants.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
- package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/AridhiaContext.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/DateFormatter.js.map +1 -1
- package/dist/utils/functions/DateTimeUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
- package/dist/utils/functions/IsExternalLink.js.map +1 -1
- package/dist/utils/functions/ObjectUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
- package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
- package/dist/utils/functions/colorPalette.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
- package/dist/utils/functions/generateCsrfToken.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js +3 -3
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
- package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
- package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js +24 -23
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js +2 -4
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useShowDesktop.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
- package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/searchDefaults.js.map +1 -1
- package/dist/utils/slots/SlotUtils.js.map +1 -1
- package/dist/utils/types/IsType.js.map +1 -1
- package/package.json +67 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MissingQueryResultsWarning.js","names":[],"sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport { WarningSharp } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n component={'div'}\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"mappings":";;;;;;;;;;AAQA,IAAM,IACJ,2IAGI,IACJ;AAWF,SAAS,EAA2B,EAClC,aACkC;CAGlC,IAAM,IAA6B,KAAU,EAA0B,
|
|
1
|
+
{"version":3,"file":"MissingQueryResultsWarning.js","names":[],"sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport { WarningSharp } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n component={'div'}\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"mappings":";;;;;;;;;;AAQA,IAAM,IACJ,2IAGI,IACJ;AAWF,SAAS,EAA2B,EAClC,aACkC;CAGlC,IAAM,IAA6B,KAAU,EAA0B,CAAM,GAevE,EAAE,MAAM,MAAgB,EAC5B;EAbA,cAAc;EACd,OAAO,EACL,KAAK,iBAAiB,EAAO,KAC3B,CAAC,EAAO,mBAAmB,EAAO,gBAC9B,IAAI,EAAO,kBACX,KAER;EACA,UAAU,EAAO;EACjB,UAAU;CAIV,GACA,EACE,SAAS,EACX,CACF;CACA,IAAI,KAA8B,KAAe,GAAQ;EACvD,IAAM,IAAsB,EAAY,aAAc,YAChD,IAAe,EAAO,OAAO,UAAU;EAE7C,IAAI,KAAuB,GAIzB,OAAO,kBAAA,GAAA,CAAI,CAAA;EAGb,IAAM,IAAa,IAAe,GAE9B,IAAc;EAQlB,OANA,AAGE,IAHE,EAAO,kBACK,IAEA,GAId,kBAAC,GAAD;GACE,WAAW;GACX,WAAU;GACV,OAAO,EACL,YAAY,GACd;GACA,SAAQ;GACR,OAAM;aAPR;IASE,kBAAC,GAAD;KACE,WAAU;KACV,OAAO,EAAE,UAAU,OAAO;IAC3B,CAAA;IACA,EAAW,eAAe,IAAI;IAC/B,kBAAC,GAAD;KACE,WAAU;KACV,cAAc;KACd,WAAU;IACE,CAAA;GACJ;;CAEhB,OACE,OAAO,kBAAA,GAAA,CAAI,CAAA;AAEf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalDownload.FormSchema.js","names":[],"sources":["../../../src/components/ModalDownload/ModalDownload.FormSchema.ts"],"sourcesContent":["import { UiSchema } from '@rjsf/utils'\nimport { JSONSchema7 } from 'json-schema'\n\nexport const writeHeaderOption = 'First line is the columns names.'\nexport const includeRowIdAndRowVersionOption =\n 'Include row metadata (Row Id and Row Version).'\nexport const csvOption = 'Comma Separated Values (CSV)'\nexport const tsvOption = 'Tab Separated Values (TSV)'\n\n// Step 1\nconst stepOneFormSchema: JSONSchema7 = {\n type: 'object',\n properties: {\n 'File Type': {\n type: 'string',\n oneOf: [\n {\n const: csvOption,\n title: csvOption,\n },\n {\n const: tsvOption,\n title: tsvOption,\n },\n ],\n },\n Contents: {\n type: 'array',\n title: 'Contents',\n items: {\n type: 'string',\n enum: [writeHeaderOption, includeRowIdAndRowVersionOption],\n },\n uniqueItems: true,\n },\n },\n}\n\nconst stepOneFormUISchema: UiSchema = {\n 'File Type': {\n 'ui:widget': 'radio',\n },\n Contents: {\n 'ui:widget': 'checkboxes',\n },\n}\n\n// Step 2\nconst stepTwoFormSchema: JSONSchema7 = {\n description:\n 'File is ready for download. Select the download button to download the file.',\n type: 'object',\n}\n\nconst stepTwoFormUISchema: UiSchema = {}\n\nexport const formSchemaArray = [stepOneFormSchema, stepTwoFormSchema]\nexport const formSchemaUIArray = [stepOneFormUISchema, stepTwoFormUISchema]\n"],"mappings":";AAGA,IAAa,IAAoB,oCACpB,IACX,kDACW,IAAY,gCACZ,IAAY,8BAGnB,IAAiC;CACrC,MAAM;CACN,YAAY;EACV,aAAa;GACX,MAAM;GACN,OAAO,CACL;IACE,OAAO;IACP,OAAO;
|
|
1
|
+
{"version":3,"file":"ModalDownload.FormSchema.js","names":[],"sources":["../../../src/components/ModalDownload/ModalDownload.FormSchema.ts"],"sourcesContent":["import { UiSchema } from '@rjsf/utils'\nimport { JSONSchema7 } from 'json-schema'\n\nexport const writeHeaderOption = 'First line is the columns names.'\nexport const includeRowIdAndRowVersionOption =\n 'Include row metadata (Row Id and Row Version).'\nexport const csvOption = 'Comma Separated Values (CSV)'\nexport const tsvOption = 'Tab Separated Values (TSV)'\n\n// Step 1\nconst stepOneFormSchema: JSONSchema7 = {\n type: 'object',\n properties: {\n 'File Type': {\n type: 'string',\n oneOf: [\n {\n const: csvOption,\n title: csvOption,\n },\n {\n const: tsvOption,\n title: tsvOption,\n },\n ],\n },\n Contents: {\n type: 'array',\n title: 'Contents',\n items: {\n type: 'string',\n enum: [writeHeaderOption, includeRowIdAndRowVersionOption],\n },\n uniqueItems: true,\n },\n },\n}\n\nconst stepOneFormUISchema: UiSchema = {\n 'File Type': {\n 'ui:widget': 'radio',\n },\n Contents: {\n 'ui:widget': 'checkboxes',\n },\n}\n\n// Step 2\nconst stepTwoFormSchema: JSONSchema7 = {\n description:\n 'File is ready for download. Select the download button to download the file.',\n type: 'object',\n}\n\nconst stepTwoFormUISchema: UiSchema = {}\n\nexport const formSchemaArray = [stepOneFormSchema, stepTwoFormSchema]\nexport const formSchemaUIArray = [stepOneFormUISchema, stepTwoFormUISchema]\n"],"mappings":";AAGA,IAAa,IAAoB,oCACpB,IACX,kDACW,IAAY,gCACZ,IAAY,8BAGnB,IAAiC;CACrC,MAAM;CACN,YAAY;EACV,aAAa;GACX,MAAM;GACN,OAAO,CACL;IACE,OAAO;IACP,OAAO;GACT,GACA;IACE,OAAO;IACP,OAAO;GACT,CACF;EACF;EACA,UAAU;GACR,MAAM;GACN,OAAO;GACP,OAAO;IACL,MAAM;IACN,MAAM,CAAC,GAAmB,CAA+B;GAC3D;GACA,aAAa;EACf;CACF;AACF,GAEM,IAAgC;CACpC,aAAa,EACX,aAAa,QACf;CACA,UAAU,EACR,aAAa,aACf;AACF,GAGM,IAAiC;CACrC,aACE;CACF,MAAM;AACR,GAEM,IAAgC,CAAC,GAE1B,IAAkB,CAAC,GAAmB,CAAiB,GACvD,IAAoB,CAAC,GAAqB,CAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalDownload.js","names":[],"sources":["../../../src/components/ModalDownload/ModalDownload.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseContext } from '@/utils/context/SynapseContext'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Button } from '@mui/material'\nimport Form, { IChangeEvent } from '@rjsf/core'\nimport validator from '@rjsf/validator-ajv8'\nimport {\n DownloadFromTableRequest,\n DownloadFromTableResult,\n QueryBundleRequest,\n SortItem,\n} from '@sage-bionetworks/synapse-types'\nimport { Component, ContextType, CSSProperties, Fragment } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport SynapseFormCheckboxesWidget from '../SynapseForm/SynapseFormCheckboxesWidget'\nimport SynapseFormCheckboxWidget from '../SynapseForm/SynapseFormCheckboxWidget'\nimport SynapseFormRadioWidget from '../SynapseForm/SynapseFormRadioWidget'\nimport {\n csvOption,\n formSchemaArray,\n formSchemaUIArray,\n includeRowIdAndRowVersionOption,\n writeHeaderOption,\n} from './ModalDownload.FormSchema'\n\ntype ModalDownloadState = {\n isLoading: boolean\n step: number\n data?: DownloadFromTableResult\n formData: Record<string, unknown>\n}\n\nexport type ModalDownloadProps = {\n onClose: (...args: any[]) => void\n includeEntityEtag?: boolean\n queryBundleRequest?: QueryBundleRequest // either the query bundle request needs to be provided, or getLastQueryRequest\n getLastQueryRequest?: () => QueryBundleRequest\n offset?: number\n limit?: number\n sort?: SortItem[]\n}\n\nexport class ModalDownload extends Component<\n ModalDownloadProps,\n ModalDownloadState\n> {\n static contextType = SynapseContext\n declare context: NonNullable<ContextType<typeof SynapseContext>>\n\n constructor(props: ModalDownloadProps) {\n super(props)\n this.state = {\n isLoading: false,\n step: 0,\n formData: {\n 'File Type': csvOption,\n Contents: [writeHeaderOption, includeRowIdAndRowVersionOption],\n },\n }\n }\n\n handleSubmit = (event: IChangeEvent) => {\n if (this.state.step === 0) {\n this.handleDownloadSetup(event)\n } else {\n this.onDownload()\n }\n }\n\n handleDownloadSetup = (event: IChangeEvent) => {\n this.setState({\n isLoading: true,\n })\n const { formData } = event\n const fileType = formData['File Type']\n const contents = formData.Contents as string[]\n const { queryBundleRequest, getLastQueryRequest } = this.props\n const separator = fileType === csvOption ? ',' : '\\t'\n const writeHeader = contents.includes(writeHeaderOption)\n const includeRowIdAndRowVersion = contents.includes(\n includeRowIdAndRowVersionOption,\n )\n const queryRequest = queryBundleRequest ?? getLastQueryRequest!()\n const sql = queryRequest.query.sql\n const downloadFromTableRequest: DownloadFromTableRequest = {\n sql,\n entityId: parseEntityIdFromSqlStatement(sql),\n selectedFacets: queryRequest.query.selectedFacets,\n concreteType:\n 'org.sagebionetworks.repo.model.table.DownloadFromTableRequest',\n writeHeader,\n includeRowIdAndRowVersion,\n csvTableDescriptor: { separator },\n additionalFilters: queryRequest.query.additionalFilters,\n }\n SynapseClient.createTableCsvForDownload(\n downloadFromTableRequest,\n this.context.accessToken,\n )\n .then(data => {\n this.setState({\n isLoading: false,\n step: 1,\n data,\n })\n })\n .catch(err => {\n console.log('Error getDownloadFromTableRequest: ', err)\n })\n }\n\n onDownload = () => {\n const { data } = this.state\n // data will always be defined if calling this function\n SynapseClient.getFileHandleByIdURL(\n data!.resultsFileHandleId,\n this.context.accessToken,\n ).then(url => {\n window.location.href = url\n this.props.onClose()\n })\n }\n\n handleChange = (event: IChangeEvent) => {\n const { formData } = event\n this.setState({\n formData,\n })\n }\n\n render() {\n const spinnerStyle: CSSProperties = {\n height: 50,\n width: 50,\n backgroundSize: 50,\n }\n return (\n <DialogBase\n open={true}\n onCancel={this.props.onClose}\n title=\"Download query results\"\n content={\n <>\n <Form\n validator={validator}\n id=\"modal-download-form\"\n schema={formSchemaArray[this.state.step]}\n uiSchema={formSchemaUIArray[this.state.step]}\n onChange={this.handleChange}\n formData={this.state.formData}\n onSubmit={this.handleSubmit}\n widgets={{\n CheckboxWidget: SynapseFormCheckboxWidget,\n CheckboxesWidget: SynapseFormCheckboxesWidget,\n RadioWidget: SynapseFormRadioWidget,\n }}\n >\n {this.state.isLoading && (\n <div className=\"SRC-centerAndJustifyContent\">\n <div className=\"SRC-center-text\">\n <p> Creating the File </p>\n <div style={spinnerStyle} className=\"spinner\" />\n <p> Loading... </p>\n </div>\n </div>\n )}\n <Fragment />\n </Form>\n </>\n }\n actions={\n <>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={this.props.onClose}\n >\n Cancel\n </Button>\n <Button\n form=\"modal-download-form\"\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n >\n {this.state.step === 0 ? 'Next' : 'Download'}\n </Button>\n </>\n }\n />\n )\n }\n}\n\nexport default ModalDownload\n"],"mappings":";;;;;;;;;;;;;;AA0CA,IAAa,IAAb,cAAmC,EAGjC;CACA,OAAO,cAAc;CAGrB,YAAY,GAA2B;
|
|
1
|
+
{"version":3,"file":"ModalDownload.js","names":[],"sources":["../../../src/components/ModalDownload/ModalDownload.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseContext } from '@/utils/context/SynapseContext'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Button } from '@mui/material'\nimport Form, { IChangeEvent } from '@rjsf/core'\nimport validator from '@rjsf/validator-ajv8'\nimport {\n DownloadFromTableRequest,\n DownloadFromTableResult,\n QueryBundleRequest,\n SortItem,\n} from '@sage-bionetworks/synapse-types'\nimport { Component, ContextType, CSSProperties, Fragment } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport SynapseFormCheckboxesWidget from '../SynapseForm/SynapseFormCheckboxesWidget'\nimport SynapseFormCheckboxWidget from '../SynapseForm/SynapseFormCheckboxWidget'\nimport SynapseFormRadioWidget from '../SynapseForm/SynapseFormRadioWidget'\nimport {\n csvOption,\n formSchemaArray,\n formSchemaUIArray,\n includeRowIdAndRowVersionOption,\n writeHeaderOption,\n} from './ModalDownload.FormSchema'\n\ntype ModalDownloadState = {\n isLoading: boolean\n step: number\n data?: DownloadFromTableResult\n formData: Record<string, unknown>\n}\n\nexport type ModalDownloadProps = {\n onClose: (...args: any[]) => void\n includeEntityEtag?: boolean\n queryBundleRequest?: QueryBundleRequest // either the query bundle request needs to be provided, or getLastQueryRequest\n getLastQueryRequest?: () => QueryBundleRequest\n offset?: number\n limit?: number\n sort?: SortItem[]\n}\n\nexport class ModalDownload extends Component<\n ModalDownloadProps,\n ModalDownloadState\n> {\n static contextType = SynapseContext\n declare context: NonNullable<ContextType<typeof SynapseContext>>\n\n constructor(props: ModalDownloadProps) {\n super(props)\n this.state = {\n isLoading: false,\n step: 0,\n formData: {\n 'File Type': csvOption,\n Contents: [writeHeaderOption, includeRowIdAndRowVersionOption],\n },\n }\n }\n\n handleSubmit = (event: IChangeEvent) => {\n if (this.state.step === 0) {\n this.handleDownloadSetup(event)\n } else {\n this.onDownload()\n }\n }\n\n handleDownloadSetup = (event: IChangeEvent) => {\n this.setState({\n isLoading: true,\n })\n const { formData } = event\n const fileType = formData['File Type']\n const contents = formData.Contents as string[]\n const { queryBundleRequest, getLastQueryRequest } = this.props\n const separator = fileType === csvOption ? ',' : '\\t'\n const writeHeader = contents.includes(writeHeaderOption)\n const includeRowIdAndRowVersion = contents.includes(\n includeRowIdAndRowVersionOption,\n )\n const queryRequest = queryBundleRequest ?? getLastQueryRequest!()\n const sql = queryRequest.query.sql\n const downloadFromTableRequest: DownloadFromTableRequest = {\n sql,\n entityId: parseEntityIdFromSqlStatement(sql),\n selectedFacets: queryRequest.query.selectedFacets,\n concreteType:\n 'org.sagebionetworks.repo.model.table.DownloadFromTableRequest',\n writeHeader,\n includeRowIdAndRowVersion,\n csvTableDescriptor: { separator },\n additionalFilters: queryRequest.query.additionalFilters,\n }\n SynapseClient.createTableCsvForDownload(\n downloadFromTableRequest,\n this.context.accessToken,\n )\n .then(data => {\n this.setState({\n isLoading: false,\n step: 1,\n data,\n })\n })\n .catch(err => {\n console.log('Error getDownloadFromTableRequest: ', err)\n })\n }\n\n onDownload = () => {\n const { data } = this.state\n // data will always be defined if calling this function\n SynapseClient.getFileHandleByIdURL(\n data!.resultsFileHandleId,\n this.context.accessToken,\n ).then(url => {\n window.location.href = url\n this.props.onClose()\n })\n }\n\n handleChange = (event: IChangeEvent) => {\n const { formData } = event\n this.setState({\n formData,\n })\n }\n\n render() {\n const spinnerStyle: CSSProperties = {\n height: 50,\n width: 50,\n backgroundSize: 50,\n }\n return (\n <DialogBase\n open={true}\n onCancel={this.props.onClose}\n title=\"Download query results\"\n content={\n <>\n <Form\n validator={validator}\n id=\"modal-download-form\"\n schema={formSchemaArray[this.state.step]}\n uiSchema={formSchemaUIArray[this.state.step]}\n onChange={this.handleChange}\n formData={this.state.formData}\n onSubmit={this.handleSubmit}\n widgets={{\n CheckboxWidget: SynapseFormCheckboxWidget,\n CheckboxesWidget: SynapseFormCheckboxesWidget,\n RadioWidget: SynapseFormRadioWidget,\n }}\n >\n {this.state.isLoading && (\n <div className=\"SRC-centerAndJustifyContent\">\n <div className=\"SRC-center-text\">\n <p> Creating the File </p>\n <div style={spinnerStyle} className=\"spinner\" />\n <p> Loading... </p>\n </div>\n </div>\n )}\n <Fragment />\n </Form>\n </>\n }\n actions={\n <>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={this.props.onClose}\n >\n Cancel\n </Button>\n <Button\n form=\"modal-download-form\"\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n >\n {this.state.step === 0 ? 'Next' : 'Download'}\n </Button>\n </>\n }\n />\n )\n }\n}\n\nexport default ModalDownload\n"],"mappings":";;;;;;;;;;;;;;AA0CA,IAAa,IAAb,cAAmC,EAGjC;CACA,OAAO,cAAc;CAGrB,YAAY,GAA2B;EAErC,AADA,MAAM,CAAK,GACX,KAAK,QAAQ;GACX,WAAW;GACX,MAAM;GACN,UAAU;IACR,aAAa;IACb,UAAU,CAAC,GAAmB,CAA+B;GAC/D;EACF;CACF;CAEA,gBAAgB,MAAwB;EACtC,AAAI,KAAK,MAAM,SAAS,IACtB,KAAK,oBAAoB,CAAK,IAE9B,KAAK,WAAW;CAEpB;CAEA,uBAAuB,MAAwB;EAC7C,KAAK,SAAS,EACZ,WAAW,GACb,CAAC;EACD,IAAM,EAAE,gBAAa,GACf,IAAW,EAAS,cACpB,IAAW,EAAS,UACpB,EAAE,uBAAoB,2BAAwB,KAAK,OACnD,IAAY,MAAA,iCAAyB,MAAM,KAC3C,IAAc,EAAS,SAAS,CAAiB,GACjD,IAA4B,EAAS,SACzC,CACF,GACM,IAAe,KAAsB,EAAqB,GAC1D,IAAM,EAAa,MAAM,KACzB,IAAqD;GACzD;GACA,UAAU,EAA8B,CAAG;GAC3C,gBAAgB,EAAa,MAAM;GACnC,cACE;GACF;GACA;GACA,oBAAoB,EAAE,aAAU;GAChC,mBAAmB,EAAa,MAAM;EACxC;EACA,EAAc,0BACZ,GACA,KAAK,QAAQ,WACf,EACG,MAAK,MAAQ;GACZ,KAAK,SAAS;IACZ,WAAW;IACX,MAAM;IACN;GACF,CAAC;EACH,CAAC,EACA,OAAM,MAAO;GACZ,QAAQ,IAAI,uCAAuC,CAAG;EACxD,CAAC;CACL;CAEA,mBAAmB;EACjB,IAAM,EAAE,YAAS,KAAK;EAEtB,EAAc,qBACZ,EAAM,qBACN,KAAK,QAAQ,WACf,EAAE,MAAK,MAAO;GAEZ,AADA,OAAO,SAAS,OAAO,GACvB,KAAK,MAAM,QAAQ;EACrB,CAAC;CACH;CAEA,gBAAgB,MAAwB;EACtC,IAAM,EAAE,gBAAa;EACrB,KAAK,SAAS,EACZ,YACF,CAAC;CACH;CAEA,SAAS;EAMP,OACE,kBAAC,GAAD;GACE,MAAM;GACN,UAAU,KAAK,MAAM;GACrB,OAAM;GACN,SACE,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;IACa;IACX,IAAG;IACH,QAAQ,EAAgB,KAAK,MAAM;IACnC,UAAU,EAAkB,KAAK,MAAM;IACvC,UAAU,KAAK;IACf,UAAU,KAAK,MAAM;IACrB,UAAU,KAAK;IACf,SAAS;KACP,gBAAgB;KAChB,kBAAkB;KAClB,aAAa;IACf;cAZF,CAcG,KAAK,MAAM,aACV,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,KAAD,EAAA,UAAG,sBAAsB,CAAA;OACzB,kBAAC,OAAD;QAAK,OAAO;SA7B1B,QAAQ;SACR,OAAO;SACP,gBAAgB;QA2BU;QAAc,WAAU;OAAW,CAAA;OAC/C,kBAAC,KAAD,EAAA,UAAG,eAAe,CAAA;MACf;;IACF,CAAA,GAEP,kBAAC,GAAD,CAAW,CAAA,CACP;MACN,CAAA;GAEJ,SACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IACE,SAAQ;IACR,OAAM;IACN,SAAS,KAAK,MAAM;cACrB;GAEO,CAAA,GACR,kBAAC,GAAD;IACE,MAAK;IACL,MAAK;IACL,SAAQ;IACR,OAAM;cAEL,KAAK,MAAM,SAAS,IAAI,SAAS;GAC5B,CAAA,CACR,EAAA,CAAA;EAEL,CAAA;CAEL;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MuiContainer.js","names":[],"sources":["../../src/components/MuiContainer.tsx"],"sourcesContent":["import { StyledComponent } from '@emotion/styled'\nimport { Box, BoxProps, styled } from '@mui/material'\n\n/**\n * Drop in MUI substitute class for Bootstrap Container component\n */\nexport const MuiContainer: StyledComponent<BoxProps> = styled(Box, {\n label: 'MuiContainer',\n})(({ theme }) => ({\n paddingRight: 15,\n paddingLeft: 15,\n marginRight: 'auto',\n marginLeft: 'auto',\n\n // Full width for (xs, extra-small: 0px or larger) and (sm, small: 600px or larger)\n [theme.breakpoints.up('md')]: {\n // medium: 960px or larger\n width: 920,\n },\n [theme.breakpoints.up('lg')]: {\n // large: 1280px or larger\n width: 1170,\n },\n [theme.breakpoints.up('xl')]: {\n // extra-large: 1920px or larger\n width: 1366,\n },\n}))\n\nexport default MuiContainer\n"],"mappings":";;AAMA,IAAa,IAA0C,EAAO,GAAK,EACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"MuiContainer.js","names":[],"sources":["../../src/components/MuiContainer.tsx"],"sourcesContent":["import { StyledComponent } from '@emotion/styled'\nimport { Box, BoxProps, styled } from '@mui/material'\n\n/**\n * Drop in MUI substitute class for Bootstrap Container component\n */\nexport const MuiContainer: StyledComponent<BoxProps> = styled(Box, {\n label: 'MuiContainer',\n})(({ theme }) => ({\n paddingRight: 15,\n paddingLeft: 15,\n marginRight: 'auto',\n marginLeft: 'auto',\n\n // Full width for (xs, extra-small: 0px or larger) and (sm, small: 600px or larger)\n [theme.breakpoints.up('md')]: {\n // medium: 960px or larger\n width: 920,\n },\n [theme.breakpoints.up('lg')]: {\n // large: 1280px or larger\n width: 1170,\n },\n [theme.breakpoints.up('xl')]: {\n // extra-large: 1920px or larger\n width: 1366,\n },\n}))\n\nexport default MuiContainer\n"],"mappings":";;AAMA,IAAa,IAA0C,EAAO,GAAK,EACjE,OAAO,eACT,CAAC,GAAG,EAAE,gBAAa;CACjB,cAAc;CACd,aAAa;CACb,aAAa;CACb,YAAY;EAGX,EAAM,YAAY,GAAG,IAAI,IAAI,EAE5B,OAAO,IACT;EACC,EAAM,YAAY,GAAG,IAAI,IAAI,EAE5B,OAAO,KACT;EACC,EAAM,YAAY,GAAG,IAAI,IAAI,EAE5B,OAAO,KACT;AACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthAclEditorModal.js","names":[],"sources":["../../../src/components/OAuthClientAclEditor/OAuthAclEditorModal.tsx"],"sourcesContent":["import { noop } from 'lodash-es'\nimport { useRef } from 'react'\nimport { displayToast } from '../ToastMessage'\nimport {\n OAuthClientAclEditor,\n OAuthClientAclEditorHandle,\n} from './OAuthClientAclEditor'\nimport { DialogBase } from '../DialogBase'\nimport { Button } from '@mui/material'\n\nexport type OAuthAclEditorModalProps = {\n clientId: string\n open: boolean\n onUpdateSuccess?: () => void\n onClose: () => void\n}\n\nexport default function OAuthAclEditorModal(\n props: OAuthAclEditorModalProps,\n): React.ReactNode {\n const { clientId, open, onUpdateSuccess = noop, onClose } = props\n const ref = useRef<OAuthClientAclEditorHandle>(null)\n return (\n <>\n <DialogBase\n open={open}\n title=\"OAuth Client Sharing Settings\"\n onCancel={onClose}\n maxWidth={'md'}\n content={\n <OAuthClientAclEditor\n ref={ref}\n clientId={clientId}\n onSaveComplete={() => {\n displayToast(\n 'Permissions were successfully saved to Synapse',\n 'info',\n )\n onUpdateSuccess()\n onClose()\n }}\n />\n }\n actions={\n <>\n <Button\n variant=\"outlined\"\n onClick={() => {\n onClose()\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n ref.current?.save()\n }}\n >\n Save\n </Button>\n </>\n }\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAwB,EACtB,GACiB;CACjB,IAAM,EAAE,aAAU,SAAM,qBAAkB,GAAM,eAAY,GACtD,IAAM,EAAmC,
|
|
1
|
+
{"version":3,"file":"OAuthAclEditorModal.js","names":[],"sources":["../../../src/components/OAuthClientAclEditor/OAuthAclEditorModal.tsx"],"sourcesContent":["import { noop } from 'lodash-es'\nimport { useRef } from 'react'\nimport { displayToast } from '../ToastMessage'\nimport {\n OAuthClientAclEditor,\n OAuthClientAclEditorHandle,\n} from './OAuthClientAclEditor'\nimport { DialogBase } from '../DialogBase'\nimport { Button } from '@mui/material'\n\nexport type OAuthAclEditorModalProps = {\n clientId: string\n open: boolean\n onUpdateSuccess?: () => void\n onClose: () => void\n}\n\nexport default function OAuthAclEditorModal(\n props: OAuthAclEditorModalProps,\n): React.ReactNode {\n const { clientId, open, onUpdateSuccess = noop, onClose } = props\n const ref = useRef<OAuthClientAclEditorHandle>(null)\n return (\n <>\n <DialogBase\n open={open}\n title=\"OAuth Client Sharing Settings\"\n onCancel={onClose}\n maxWidth={'md'}\n content={\n <OAuthClientAclEditor\n ref={ref}\n clientId={clientId}\n onSaveComplete={() => {\n displayToast(\n 'Permissions were successfully saved to Synapse',\n 'info',\n )\n onUpdateSuccess()\n onClose()\n }}\n />\n }\n actions={\n <>\n <Button\n variant=\"outlined\"\n onClick={() => {\n onClose()\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n ref.current?.save()\n }}\n >\n Save\n </Button>\n </>\n }\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAwB,EACtB,GACiB;CACjB,IAAM,EAAE,aAAU,SAAM,qBAAkB,GAAM,eAAY,GACtD,IAAM,EAAmC,IAAI;CACnD,OACE,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;EACQ;EACN,OAAM;EACN,UAAU;EACV,UAAU;EACV,SACE,kBAAC,GAAD;GACO;GACK;GACV,sBAAsB;IAMpB,AALA,EACE,kDACA,MACF,GACA,EAAgB,GAChB,EAAQ;GACV;EACD,CAAA;EAEH,SACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe;IACb,EAAQ;GACV;aACD;EAEO,CAAA,GACR,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,eAAe;IACb,EAAI,SAAS,KAAK;GACpB;aACD;EAEO,CAAA,CACR,EAAA,CAAA;CAEL,CAAA,EACD,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthClientAclEditor.js","names":[],"sources":["../../../src/components/OAuthClientAclEditor/OAuthClientAclEditor.tsx"],"sourcesContent":["import {\n useGetOAuthClientACL,\n useUpdateOAuthClientACL,\n} from '@/synapse-queries'\nimport {\n getAccessTypeFromPermissionLevel,\n PermissionLevel,\n} from '@/utils/PermissionLevelToAccessType'\nimport { Alert, Stack } from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n consolidateResourceAccessList,\n convertResourceAccessSetToSRC,\n updateACLWithSRCResourceAccessList,\n} from '@/utils/functions/AccessControlListUtils'\nimport { isEqual } from 'lodash-es'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { AclEditor } from '../AclEditor/AclEditor'\nimport useUpdateAcl from '../AclEditor/useUpdateAcl'\nimport { AccessControlList } from '@sage-bionetworks/synapse-client'\n\nconst availablePermissionLevels: PermissionLevel[] = [\n 'CAN_ADMINISTER_OAUTH_CLIENT',\n]\n\nexport type OAuthClientAclEditorHandle = {\n /* Allow the parent component to trigger saving the ACL, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type OAuthClientAclEditorProps = {\n clientId: string\n onSaveComplete: (saveSuccessful: boolean) => void\n}\n\nexport const OAuthClientAclEditor = forwardRef(function OAuthClientAclEditor(\n props: OAuthClientAclEditorProps,\n ref: ForwardedRef<OAuthClientAclEditorHandle>,\n) {\n const { clientId, onSaveComplete } = props\n const [error, setError] = useState<string | null>(null)\n\n const onMutationSuccess = () => {\n setError(null)\n onSaveComplete(true)\n }\n\n const onMutationError = (error: SynapseClientError) => {\n setError(error.reason)\n onSaveComplete(false)\n }\n\n const { data: originalAcl, isLoading: isLoadingOriginalAcl } =\n useGetOAuthClientACL(clientId, {\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n const consolidatedOriginalResourceAccess = useMemo(\n () =>\n consolidateResourceAccessList(\n convertResourceAccessSetToSRC(originalAcl?.resourceAccess),\n ),\n [originalAcl],\n )\n\n const {\n resourceAccessList,\n setResourceAccessList,\n addResourceAccessItem,\n updateResourceAccessItem,\n removeResourceAccessItem,\n resetDirtyState,\n } = useUpdateAcl({\n onChange: () => setError(null),\n onError: setError,\n })\n\n // set resourceAccessList when the fetched acl changes\n useEffect(() => {\n if (originalAcl) {\n resetDirtyState()\n setResourceAccessList(consolidatedOriginalResourceAccess)\n }\n }, [\n originalAcl,\n consolidatedOriginalResourceAccess,\n resetDirtyState,\n setResourceAccessList,\n ])\n\n const { mutate: updateAcl } = useUpdateOAuthClientACL({\n onSuccess: () => onMutationSuccess(),\n onError: (error: SynapseClientError) => onMutationError(error),\n })\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n const updatedAcl: AccessControlList =\n updateACLWithSRCResourceAccessList(originalAcl, resourceAccessList)\n const aclIsUnchanged =\n (originalAcl === null && updatedAcl == null) ||\n // ignore properties that will change when the ACL is saved (etag, modifiedOn)\n (isEqual(consolidatedOriginalResourceAccess, resourceAccessList) &&\n originalAcl?.id === updatedAcl?.id)\n\n if (aclIsUnchanged) {\n // noop\n onSaveComplete(true)\n } else {\n updateAcl(updatedAcl)\n }\n },\n }\n }, [\n clientId,\n originalAcl,\n consolidatedOriginalResourceAccess,\n resourceAccessList,\n onSaveComplete,\n updateAcl,\n ])\n\n return (\n <Stack\n direction=\"column\"\n sx={{\n gap: '20px',\n }}\n >\n <AclEditor\n resourceAccessList={resourceAccessList}\n availablePermissionLevels={availablePermissionLevels}\n isLoading={isLoadingOriginalAcl}\n canEdit={true}\n emptyText={/* This should never happen */ ''}\n onAddPrincipalToAcl={id =>\n addResourceAccessItem(\n id,\n getAccessTypeFromPermissionLevel('CAN_ADMINISTER_OAUTH_CLIENT'),\n )\n }\n updateResourceAccessItem={updateResourceAccessItem}\n removeResourceAccessItem={removeResourceAccessItem}\n showAddRemovePublicButton={false}\n showNotifyCheckbox={false}\n isInherited={false}\n />\n {error && <Alert severity=\"error\">{error}</Alert>}\n </Stack>\n )\n})\n"],"mappings":";;;;;;;;;;;AA4BA,IAAM,IAA+C,CACnD,
|
|
1
|
+
{"version":3,"file":"OAuthClientAclEditor.js","names":[],"sources":["../../../src/components/OAuthClientAclEditor/OAuthClientAclEditor.tsx"],"sourcesContent":["import {\n useGetOAuthClientACL,\n useUpdateOAuthClientACL,\n} from '@/synapse-queries'\nimport {\n getAccessTypeFromPermissionLevel,\n PermissionLevel,\n} from '@/utils/PermissionLevelToAccessType'\nimport { Alert, Stack } from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n consolidateResourceAccessList,\n convertResourceAccessSetToSRC,\n updateACLWithSRCResourceAccessList,\n} from '@/utils/functions/AccessControlListUtils'\nimport { isEqual } from 'lodash-es'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { AclEditor } from '../AclEditor/AclEditor'\nimport useUpdateAcl from '../AclEditor/useUpdateAcl'\nimport { AccessControlList } from '@sage-bionetworks/synapse-client'\n\nconst availablePermissionLevels: PermissionLevel[] = [\n 'CAN_ADMINISTER_OAUTH_CLIENT',\n]\n\nexport type OAuthClientAclEditorHandle = {\n /* Allow the parent component to trigger saving the ACL, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type OAuthClientAclEditorProps = {\n clientId: string\n onSaveComplete: (saveSuccessful: boolean) => void\n}\n\nexport const OAuthClientAclEditor = forwardRef(function OAuthClientAclEditor(\n props: OAuthClientAclEditorProps,\n ref: ForwardedRef<OAuthClientAclEditorHandle>,\n) {\n const { clientId, onSaveComplete } = props\n const [error, setError] = useState<string | null>(null)\n\n const onMutationSuccess = () => {\n setError(null)\n onSaveComplete(true)\n }\n\n const onMutationError = (error: SynapseClientError) => {\n setError(error.reason)\n onSaveComplete(false)\n }\n\n const { data: originalAcl, isLoading: isLoadingOriginalAcl } =\n useGetOAuthClientACL(clientId, {\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n const consolidatedOriginalResourceAccess = useMemo(\n () =>\n consolidateResourceAccessList(\n convertResourceAccessSetToSRC(originalAcl?.resourceAccess),\n ),\n [originalAcl],\n )\n\n const {\n resourceAccessList,\n setResourceAccessList,\n addResourceAccessItem,\n updateResourceAccessItem,\n removeResourceAccessItem,\n resetDirtyState,\n } = useUpdateAcl({\n onChange: () => setError(null),\n onError: setError,\n })\n\n // set resourceAccessList when the fetched acl changes\n useEffect(() => {\n if (originalAcl) {\n resetDirtyState()\n setResourceAccessList(consolidatedOriginalResourceAccess)\n }\n }, [\n originalAcl,\n consolidatedOriginalResourceAccess,\n resetDirtyState,\n setResourceAccessList,\n ])\n\n const { mutate: updateAcl } = useUpdateOAuthClientACL({\n onSuccess: () => onMutationSuccess(),\n onError: (error: SynapseClientError) => onMutationError(error),\n })\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n const updatedAcl: AccessControlList =\n updateACLWithSRCResourceAccessList(originalAcl, resourceAccessList)\n const aclIsUnchanged =\n (originalAcl === null && updatedAcl == null) ||\n // ignore properties that will change when the ACL is saved (etag, modifiedOn)\n (isEqual(consolidatedOriginalResourceAccess, resourceAccessList) &&\n originalAcl?.id === updatedAcl?.id)\n\n if (aclIsUnchanged) {\n // noop\n onSaveComplete(true)\n } else {\n updateAcl(updatedAcl)\n }\n },\n }\n }, [\n clientId,\n originalAcl,\n consolidatedOriginalResourceAccess,\n resourceAccessList,\n onSaveComplete,\n updateAcl,\n ])\n\n return (\n <Stack\n direction=\"column\"\n sx={{\n gap: '20px',\n }}\n >\n <AclEditor\n resourceAccessList={resourceAccessList}\n availablePermissionLevels={availablePermissionLevels}\n isLoading={isLoadingOriginalAcl}\n canEdit={true}\n emptyText={/* This should never happen */ ''}\n onAddPrincipalToAcl={id =>\n addResourceAccessItem(\n id,\n getAccessTypeFromPermissionLevel('CAN_ADMINISTER_OAUTH_CLIENT'),\n )\n }\n updateResourceAccessItem={updateResourceAccessItem}\n removeResourceAccessItem={removeResourceAccessItem}\n showAddRemovePublicButton={false}\n showNotifyCheckbox={false}\n isInherited={false}\n />\n {error && <Alert severity=\"error\">{error}</Alert>}\n </Stack>\n )\n})\n"],"mappings":";;;;;;;;;;;AA4BA,IAAM,IAA+C,CACnD,6BACF,GAYa,IAAuB,EAAW,SAC7C,GACA,GACA;CACA,IAAM,EAAE,aAAU,sBAAmB,GAC/B,CAAC,GAAO,KAAY,EAAwB,IAAI,GAEhD,UAA0B;EAE9B,AADA,EAAS,IAAI,GACb,EAAe,EAAI;CACrB,GAEM,KAAmB,MAA8B;EAErD,AADA,EAAS,EAAM,MAAM,GACrB,EAAe,EAAK;CACtB,GAEM,EAAE,MAAM,GAAa,WAAW,MACpC,EAAqB,GAAU,EAE7B,WAAW,SACb,CAAC,GAEG,IAAqC,QAEvC,EACE,EAA8B,GAAa,cAAc,CAC3D,GACF,CAAC,CAAW,CACd,GAEM,EACJ,uBACA,0BACA,0BACA,6BACA,6BACA,uBACE,EAAa;EACf,gBAAgB,EAAS,IAAI;EAC7B,SAAS;CACX,CAAC;CAGD,QAAgB;EACd,AAAI,MACF,EAAgB,GAChB,EAAsB,CAAkC;CAE5D,GAAG;EACD;EACA;EACA;EACA;CACF,CAAC;CAED,IAAM,EAAE,QAAQ,MAAc,EAAwB;EACpD,iBAAiB,EAAkB;EACnC,UAAU,MAA8B,EAAgB,CAAK;CAC/D,CAAC;CA8BD,OA5BA,EAAoB,UACX,EACL,OAAO;EACL,IAAM,IACJ,EAAmC,GAAa,CAAkB;EAOpE,AALG,MAAgB,QAAQ,KAAc,QAEtC,EAAQ,GAAoC,CAAkB,KAC7D,GAAa,OAAO,GAAY,KAIlC,EAAe,EAAI,IAEnB,EAAU,CAAU;CAExB,EACF,IACC;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAGC,kBAAC,GAAD;EACE,WAAU;EACV,IAAI,EACF,KAAK,OACP;YAJF,CAME,kBAAC,GAAD;GACsB;GACO;GAC3B,WAAW;GACX,SAAS;GACT,WAA0C;GAC1C,sBAAqB,MACnB,EACE,GACA,EAAiC,6BAA6B,CAChE;GAEwB;GACA;GAC1B,2BAA2B;GAC3B,oBAAoB;GACpB,aAAa;EACd,CAAA,GACA,KAAS,kBAAC,GAAD;GAAO,UAAS;aAAS;EAAa,CAAA,CAC3C;;AAEX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateOAuthClient.js","names":[],"sources":["../../../src/components/OAuthClientManagement/CreateOAuthClient.tsx"],"sourcesContent":["import {\n useCreateOAuthClient,\n useDeleteOAuthClient,\n useUpdateOAuthClient,\n} from '@/synapse-queries'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { useDebouncedEffect } from '@/utils/hooks'\nimport DeleteTwoToneIcon from '@mui/icons-material/DeleteTwoTone'\nimport {\n Alert,\n Box,\n Button,\n GridLegacy as Grid,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport { OIDCSigningAlgorithm } from '@sage-bionetworks/synapse-client/generated/models/OIDCSigningAlgorithm'\nimport { ChangeEvent, useEffect, useMemo, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { WarningDialog } from '../SynapseForm/WarningDialog'\nimport { displayToast } from '../ToastMessage/ToastMessage'\n\nexport const defaultUserInfoSignedResponseAlgorithm = 'JSON'\nexport const warningHeader = 'Are you absolutely sure?'\nexport const warningBody =\n 'Editing this detail will render your client invalid and will require you to resubmit verification. This action cannot be undone.'\nconst INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\nconst GRID_NARROW = 12\nconst GRID_WIDE = 6\nconst GRID_ROW_SPACING = 1\nconst GRID_COL_SPACING = 2\n\nexport type CreateOAuthModalProps = {\n isShowingModal: boolean\n isEdit: boolean\n onClose: () => void\n setIsShowingConfirmModal: (a: boolean) => void\n isShowingConfirmModal: boolean\n client?: OAuthClient\n setIsShowingModal: (a: boolean) => void\n}\n\nexport function CreateOAuthModal({\n isShowingModal = false,\n isEdit,\n onClose,\n client,\n setIsShowingConfirmModal,\n isShowingConfirmModal,\n setIsShowingModal,\n}: CreateOAuthModalProps) {\n const { synapseClient } = useSynapseContext()\n const [clientName, setClientName] = useState('')\n const [redirectUris, setRedirectUris] = useState([{ uri: '' }])\n const [policyUri, setPolicyUri] = useState<string>('')\n const [clientUri, setClientUri] = useState<string>('')\n const [sectorUri, setSectorUri] = useState<string>('')\n const [tosUri, setTosUri] = useState<string>('')\n const [userinfoSignedResponseAlg, setUserinfoSignedResponseAlg] = useState<\n 'JSON' | OIDCSigningAlgorithm\n >(defaultUserInfoSignedResponseAlgorithm)\n const [warnTrigger, setWarnTrigger] = useState(false)\n const [isDelete, setIsDelete] = useState<boolean>(false)\n const [updatedClient, setUpdatedClient] = useState<OAuthClient>()\n const [error, setError] = useState<SynapseClientError>()\n\n // Return the OAuth Client definition based on the current client-side UI state\n const oAuthClient: OAuthClient = useMemo(() => {\n return {\n client_id: client?.client_id,\n client_name: clientName,\n redirect_uris: redirectUris?.map(str => str.uri) ?? [''],\n policy_uri: policyUri,\n client_uri: clientUri,\n sector_identifier_uri: sectorUri,\n userinfo_signed_response_alg:\n userinfoSignedResponseAlg === defaultUserInfoSignedResponseAlgorithm\n ? undefined\n : userinfoSignedResponseAlg,\n tos_uri: tosUri,\n etag: client?.etag,\n }\n }, [\n client?.client_id,\n client?.etag,\n clientName,\n clientUri,\n policyUri,\n redirectUris,\n sectorUri,\n userinfoSignedResponseAlg,\n tosUri,\n ])\n\n useEffect(() => {\n setClientName(client?.client_name ?? '')\n setRedirectUris(\n client?.redirect_uris?.map((str: string) => ({ uri: str })) ?? [\n { uri: '' },\n ],\n )\n setPolicyUri(client?.policy_uri ?? '')\n setClientUri(client?.client_uri ?? '')\n setSectorUri(client?.sector_identifier_uri ?? '')\n setUserinfoSignedResponseAlg(\n client?.userinfo_signed_response_alg ??\n defaultUserInfoSignedResponseAlgorithm,\n )\n setTosUri(client?.tos_uri ?? '')\n }, [isShowingModal, client])\n\n useDebouncedEffect(\n () => {\n if (oAuthClient.client_id) {\n // SWC-6365: use the pre-check service to determine if we need to show a warning on edit\n synapseClient.openIDConnectServicesClient\n .putAuthV1Oauth2ClientIdVerificationPrecheck({\n id: oAuthClient.client_id,\n oAuthClient: oAuthClient,\n })\n .then(precheckResult => {\n setWarnTrigger(precheckResult.reverificationRequired!)\n })\n }\n },\n [oAuthClient, synapseClient.openIDConnectServicesClient],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n const hide = () => {\n setClientName('')\n setRedirectUris([{ uri: '' }])\n setPolicyUri('')\n setClientUri('')\n setSectorUri('')\n setUserinfoSignedResponseAlg(defaultUserInfoSignedResponseAlgorithm)\n setTosUri('')\n onClose()\n }\n\n const hideConfirmModal = () => {\n setIsShowingConfirmModal(false)\n setIsDelete(false)\n }\n\n const { mutate: createClient } = useCreateOAuthClient({\n onSuccess: () => {\n displayToast('Successfully created', 'success')\n setError(undefined)\n hide()\n },\n onError: err => {\n setError(err)\n },\n })\n\n const { mutate: updateClient, isPending: updateIsPending } =\n useUpdateOAuthClient({\n onSuccess: () => {\n displayToast('Successfully saved', 'success')\n setError(undefined)\n hide()\n },\n onError: err => {\n setError(err)\n setIsShowingModal(true)\n },\n })\n\n const { mutate: deleteClient } = useDeleteOAuthClient({\n onSuccess: () => {\n displayToast('Successfully deleted', 'success')\n hide()\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const onCreateClient = () => {\n try {\n setUpdatedClient(oAuthClient)\n if (warnTrigger === true) {\n setIsShowingConfirmModal(true)\n } else {\n if (isEdit) {\n updateClient(oAuthClient)\n } else {\n createClient(oAuthClient)\n }\n }\n } catch (err) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const handleRedirectUriAdd = () => {\n if (redirectUris) {\n setRedirectUris([...redirectUris, { uri: '' }])\n }\n }\n\n const handleRedirectUriRemove = (index: number) => {\n if (redirectUris) {\n const list = [...redirectUris]\n list.splice(index, 1)\n setRedirectUris(list)\n }\n }\n\n const handleUriChange = (\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n index: number,\n ) => {\n if (redirectUris) {\n const { name, value } = e.target\n const list = [...redirectUris]\n list[index][name as 'uri'] = value\n setRedirectUris(list)\n }\n }\n\n const dangerLabelSx = {\n color: isEdit ? 'error.main' : undefined,\n '&.Mui-focused': {\n color: isEdit ? 'error.main' : undefined,\n },\n }\n\n const sectorIdentifierURIInput = (\n <TextField\n onChange={e => setSectorUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={sectorUri}\n id=\"sectorURI\"\n label=\"Sector Identifier URI\"\n margin=\"normal\"\n fullWidth\n slotProps={{\n inputLabel: { sx: dangerLabelSx },\n }}\n />\n )\n\n const redirectURIInputs = (\n <>\n {redirectUris?.map((singleUri, idx) => (\n <div key={idx}>\n <TextField\n required={idx === 0}\n label={idx === 0 && 'Redirect URI(s)'}\n name=\"uri\"\n fullWidth\n id={`redirect-uri-${idx}`}\n onChange={e => handleUriChange(e, idx)}\n value={singleUri.uri}\n placeholder=\"https://\"\n type=\"text\"\n margin={idx === 0 ? 'normal' : 'dense'}\n slotProps={{\n input: {\n endAdornment: redirectUris.length > 1 && (\n <InputAdornment position=\"end\">\n <IconButton onClick={() => handleRedirectUriRemove(idx)}>\n <DeleteTwoToneIcon sx={{ color: 'error.main' }} />\n </IconButton>\n </InputAdornment>\n ),\n },\n\n inputLabel: { sx: dangerLabelSx },\n }}\n />\n {redirectUris.length - 1 === idx && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleRedirectUriAdd}\n disabled={singleUri.uri.length === 0}\n sx={{ my: '10px' }}\n >\n Add URI\n </Button>\n )}\n </div>\n ))}\n </>\n )\n\n const content = (\n <>\n {updateIsPending && (\n <div className={'SRC-center-text'}>\n <SynapseSpinner size={40} />\n </div>\n )}\n {!updateIsPending && (\n <>\n <Typography\n variant=\"body1\"\n sx={{\n mb: '10px',\n }}\n >\n To protect you and your users, your consent screen and application\n will need to be verified by Sage Bionetworks. Before your consent\n screen and application are verified by Sage Bionetworks, you can\n still test your application with limitations.\n </Typography>\n\n {isEdit && (\n <Typography sx={{ mt: '16px' }} variant=\"label\">\n Client ID: {client?.client_id}\n </Typography>\n )}\n <Grid\n container\n rowSpacing={GRID_ROW_SPACING}\n columnSpacing={GRID_COL_SPACING}\n >\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Client Name\"\n required\n onChange={e => setClientName(e.target.value)}\n placeholder=\"Client Name\"\n type=\"text\"\n value={clientName}\n id=\"clientName\"\n margin=\"normal\"\n fullWidth\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Client Homepage\"\n onChange={e => setClientUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={clientUri}\n id=\"clientUri\"\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n {!isEdit && (\n <>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {redirectURIInputs}\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {sectorIdentifierURIInput}\n </Grid>\n </>\n )}\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Link to Privacy Policy\"\n onChange={e => setPolicyUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={policyUri}\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Links to Terms of Service\"\n onChange={e => setTosUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={tosUri}\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"User Info Signed Response Algorithm\"\n value={userinfoSignedResponseAlg}\n onChange={e =>\n setUserinfoSignedResponseAlg(\n e.target.value as OIDCSigningAlgorithm,\n )\n }\n select\n fullWidth\n margin=\"normal\"\n >\n <MenuItem value={defaultUserInfoSignedResponseAlgorithm}>\n JSON\n </MenuItem>\n <MenuItem value={OIDCSigningAlgorithm.RS256}>JWT</MenuItem>\n </TextField>\n </Grid>\n </Grid>\n {isEdit && (\n <Box\n sx={{\n mt: '10px',\n padding: 1,\n backgroundColor: 'rgb(178, 36, 42, 0.03)',\n }}\n >\n <Typography sx={{ my: 1 }} color=\"error\" variant=\"headline3\">\n DANGER ZONE\n </Typography>\n <Typography variant=\"smallText1\">\n Editing the following information will render your client\n invalid and will require you to create it again and resubmit\n verification if needed.\n </Typography>\n <Grid\n container\n rowSpacing={GRID_ROW_SPACING}\n columnSpacing={GRID_COL_SPACING}\n >\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {redirectURIInputs}\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {sectorIdentifierURIInput}\n </Grid>\n </Grid>\n\n <Button\n onClick={() => {\n setIsDelete(true)\n setIsShowingConfirmModal(true)\n }}\n color=\"error\"\n variant=\"text\"\n startIcon={<DeleteTwoToneIcon />}\n sx={{ padding: 0, mb: 1 }}\n >\n DELETE CLIENT\n </Button>\n </Box>\n )}\n </>\n )}\n {error && <Alert severity=\"error\">{error?.reason}</Alert>}\n </>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal && !isShowingConfirmModal}\n onCancel={() => {\n hide()\n setError(undefined)\n }}\n maxWidth=\"md\"\n title={isEdit ? 'Client Details' : 'Create New OAuth Client'}\n content={content}\n onConfirm={onCreateClient}\n confirmButtonProps={{ children: 'Save' }}\n />\n <WarningDialog\n open={isShowingConfirmModal}\n title={warningHeader}\n content={warningBody}\n onCancel={hideConfirmModal}\n onConfirm={() => {\n if (isDelete) {\n deleteClient(client?.client_id!)\n } else {\n updateClient(updatedClient!)\n }\n hideConfirmModal()\n }}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n </>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateOAuthClient.js","names":[],"sources":["../../../src/components/OAuthClientManagement/CreateOAuthClient.tsx"],"sourcesContent":["import {\n useCreateOAuthClient,\n useDeleteOAuthClient,\n useUpdateOAuthClient,\n} from '@/synapse-queries'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { useDebouncedEffect } from '@/utils/hooks'\nimport DeleteTwoToneIcon from '@mui/icons-material/DeleteTwoTone'\nimport {\n Alert,\n Box,\n Button,\n GridLegacy as Grid,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport { OIDCSigningAlgorithm } from '@sage-bionetworks/synapse-client/generated/models/OIDCSigningAlgorithm'\nimport { ChangeEvent, useEffect, useMemo, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport { WarningDialog } from '../SynapseForm/WarningDialog'\nimport { displayToast } from '../ToastMessage/ToastMessage'\n\nexport const defaultUserInfoSignedResponseAlgorithm = 'JSON'\nexport const warningHeader = 'Are you absolutely sure?'\nexport const warningBody =\n 'Editing this detail will render your client invalid and will require you to resubmit verification. This action cannot be undone.'\nconst INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\nconst GRID_NARROW = 12\nconst GRID_WIDE = 6\nconst GRID_ROW_SPACING = 1\nconst GRID_COL_SPACING = 2\n\nexport type CreateOAuthModalProps = {\n isShowingModal: boolean\n isEdit: boolean\n onClose: () => void\n setIsShowingConfirmModal: (a: boolean) => void\n isShowingConfirmModal: boolean\n client?: OAuthClient\n setIsShowingModal: (a: boolean) => void\n}\n\nexport function CreateOAuthModal({\n isShowingModal = false,\n isEdit,\n onClose,\n client,\n setIsShowingConfirmModal,\n isShowingConfirmModal,\n setIsShowingModal,\n}: CreateOAuthModalProps) {\n const { synapseClient } = useSynapseContext()\n const [clientName, setClientName] = useState('')\n const [redirectUris, setRedirectUris] = useState([{ uri: '' }])\n const [policyUri, setPolicyUri] = useState<string>('')\n const [clientUri, setClientUri] = useState<string>('')\n const [sectorUri, setSectorUri] = useState<string>('')\n const [tosUri, setTosUri] = useState<string>('')\n const [userinfoSignedResponseAlg, setUserinfoSignedResponseAlg] = useState<\n 'JSON' | OIDCSigningAlgorithm\n >(defaultUserInfoSignedResponseAlgorithm)\n const [warnTrigger, setWarnTrigger] = useState(false)\n const [isDelete, setIsDelete] = useState<boolean>(false)\n const [updatedClient, setUpdatedClient] = useState<OAuthClient>()\n const [error, setError] = useState<SynapseClientError>()\n\n // Return the OAuth Client definition based on the current client-side UI state\n const oAuthClient: OAuthClient = useMemo(() => {\n return {\n client_id: client?.client_id,\n client_name: clientName,\n redirect_uris: redirectUris?.map(str => str.uri) ?? [''],\n policy_uri: policyUri,\n client_uri: clientUri,\n sector_identifier_uri: sectorUri,\n userinfo_signed_response_alg:\n userinfoSignedResponseAlg === defaultUserInfoSignedResponseAlgorithm\n ? undefined\n : userinfoSignedResponseAlg,\n tos_uri: tosUri,\n etag: client?.etag,\n }\n }, [\n client?.client_id,\n client?.etag,\n clientName,\n clientUri,\n policyUri,\n redirectUris,\n sectorUri,\n userinfoSignedResponseAlg,\n tosUri,\n ])\n\n useEffect(() => {\n setClientName(client?.client_name ?? '')\n setRedirectUris(\n client?.redirect_uris?.map((str: string) => ({ uri: str })) ?? [\n { uri: '' },\n ],\n )\n setPolicyUri(client?.policy_uri ?? '')\n setClientUri(client?.client_uri ?? '')\n setSectorUri(client?.sector_identifier_uri ?? '')\n setUserinfoSignedResponseAlg(\n client?.userinfo_signed_response_alg ??\n defaultUserInfoSignedResponseAlgorithm,\n )\n setTosUri(client?.tos_uri ?? '')\n }, [isShowingModal, client])\n\n useDebouncedEffect(\n () => {\n if (oAuthClient.client_id) {\n // SWC-6365: use the pre-check service to determine if we need to show a warning on edit\n synapseClient.openIDConnectServicesClient\n .putAuthV1Oauth2ClientIdVerificationPrecheck({\n id: oAuthClient.client_id,\n oAuthClient: oAuthClient,\n })\n .then(precheckResult => {\n setWarnTrigger(precheckResult.reverificationRequired!)\n })\n }\n },\n [oAuthClient, synapseClient.openIDConnectServicesClient],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n const hide = () => {\n setClientName('')\n setRedirectUris([{ uri: '' }])\n setPolicyUri('')\n setClientUri('')\n setSectorUri('')\n setUserinfoSignedResponseAlg(defaultUserInfoSignedResponseAlgorithm)\n setTosUri('')\n onClose()\n }\n\n const hideConfirmModal = () => {\n setIsShowingConfirmModal(false)\n setIsDelete(false)\n }\n\n const { mutate: createClient } = useCreateOAuthClient({\n onSuccess: () => {\n displayToast('Successfully created', 'success')\n setError(undefined)\n hide()\n },\n onError: err => {\n setError(err)\n },\n })\n\n const { mutate: updateClient, isPending: updateIsPending } =\n useUpdateOAuthClient({\n onSuccess: () => {\n displayToast('Successfully saved', 'success')\n setError(undefined)\n hide()\n },\n onError: err => {\n setError(err)\n setIsShowingModal(true)\n },\n })\n\n const { mutate: deleteClient } = useDeleteOAuthClient({\n onSuccess: () => {\n displayToast('Successfully deleted', 'success')\n hide()\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const onCreateClient = () => {\n try {\n setUpdatedClient(oAuthClient)\n if (warnTrigger === true) {\n setIsShowingConfirmModal(true)\n } else {\n if (isEdit) {\n updateClient(oAuthClient)\n } else {\n createClient(oAuthClient)\n }\n }\n } catch (err) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const handleRedirectUriAdd = () => {\n if (redirectUris) {\n setRedirectUris([...redirectUris, { uri: '' }])\n }\n }\n\n const handleRedirectUriRemove = (index: number) => {\n if (redirectUris) {\n const list = [...redirectUris]\n list.splice(index, 1)\n setRedirectUris(list)\n }\n }\n\n const handleUriChange = (\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n index: number,\n ) => {\n if (redirectUris) {\n const { name, value } = e.target\n const list = [...redirectUris]\n list[index][name as 'uri'] = value\n setRedirectUris(list)\n }\n }\n\n const dangerLabelSx = {\n color: isEdit ? 'error.main' : undefined,\n '&.Mui-focused': {\n color: isEdit ? 'error.main' : undefined,\n },\n }\n\n const sectorIdentifierURIInput = (\n <TextField\n onChange={e => setSectorUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={sectorUri}\n id=\"sectorURI\"\n label=\"Sector Identifier URI\"\n margin=\"normal\"\n fullWidth\n slotProps={{\n inputLabel: { sx: dangerLabelSx },\n }}\n />\n )\n\n const redirectURIInputs = (\n <>\n {redirectUris?.map((singleUri, idx) => (\n <div key={idx}>\n <TextField\n required={idx === 0}\n label={idx === 0 && 'Redirect URI(s)'}\n name=\"uri\"\n fullWidth\n id={`redirect-uri-${idx}`}\n onChange={e => handleUriChange(e, idx)}\n value={singleUri.uri}\n placeholder=\"https://\"\n type=\"text\"\n margin={idx === 0 ? 'normal' : 'dense'}\n slotProps={{\n input: {\n endAdornment: redirectUris.length > 1 && (\n <InputAdornment position=\"end\">\n <IconButton onClick={() => handleRedirectUriRemove(idx)}>\n <DeleteTwoToneIcon sx={{ color: 'error.main' }} />\n </IconButton>\n </InputAdornment>\n ),\n },\n\n inputLabel: { sx: dangerLabelSx },\n }}\n />\n {redirectUris.length - 1 === idx && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleRedirectUriAdd}\n disabled={singleUri.uri.length === 0}\n sx={{ my: '10px' }}\n >\n Add URI\n </Button>\n )}\n </div>\n ))}\n </>\n )\n\n const content = (\n <>\n {updateIsPending && (\n <div className={'SRC-center-text'}>\n <SynapseSpinner size={40} />\n </div>\n )}\n {!updateIsPending && (\n <>\n <Typography\n variant=\"body1\"\n sx={{\n mb: '10px',\n }}\n >\n To protect you and your users, your consent screen and application\n will need to be verified by Sage Bionetworks. Before your consent\n screen and application are verified by Sage Bionetworks, you can\n still test your application with limitations.\n </Typography>\n\n {isEdit && (\n <Typography sx={{ mt: '16px' }} variant=\"label\">\n Client ID: {client?.client_id}\n </Typography>\n )}\n <Grid\n container\n rowSpacing={GRID_ROW_SPACING}\n columnSpacing={GRID_COL_SPACING}\n >\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Client Name\"\n required\n onChange={e => setClientName(e.target.value)}\n placeholder=\"Client Name\"\n type=\"text\"\n value={clientName}\n id=\"clientName\"\n margin=\"normal\"\n fullWidth\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Client Homepage\"\n onChange={e => setClientUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={clientUri}\n id=\"clientUri\"\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n {!isEdit && (\n <>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {redirectURIInputs}\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {sectorIdentifierURIInput}\n </Grid>\n </>\n )}\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Link to Privacy Policy\"\n onChange={e => setPolicyUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={policyUri}\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"Links to Terms of Service\"\n onChange={e => setTosUri(e.target.value)}\n placeholder=\"https://\"\n type=\"text\"\n value={tosUri}\n fullWidth\n margin=\"normal\"\n />\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n <TextField\n label=\"User Info Signed Response Algorithm\"\n value={userinfoSignedResponseAlg}\n onChange={e =>\n setUserinfoSignedResponseAlg(\n e.target.value as OIDCSigningAlgorithm,\n )\n }\n select\n fullWidth\n margin=\"normal\"\n >\n <MenuItem value={defaultUserInfoSignedResponseAlgorithm}>\n JSON\n </MenuItem>\n <MenuItem value={OIDCSigningAlgorithm.RS256}>JWT</MenuItem>\n </TextField>\n </Grid>\n </Grid>\n {isEdit && (\n <Box\n sx={{\n mt: '10px',\n padding: 1,\n backgroundColor: 'rgb(178, 36, 42, 0.03)',\n }}\n >\n <Typography sx={{ my: 1 }} color=\"error\" variant=\"headline3\">\n DANGER ZONE\n </Typography>\n <Typography variant=\"smallText1\">\n Editing the following information will render your client\n invalid and will require you to create it again and resubmit\n verification if needed.\n </Typography>\n <Grid\n container\n rowSpacing={GRID_ROW_SPACING}\n columnSpacing={GRID_COL_SPACING}\n >\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {redirectURIInputs}\n </Grid>\n <Grid item md={GRID_WIDE} xs={GRID_NARROW}>\n {sectorIdentifierURIInput}\n </Grid>\n </Grid>\n\n <Button\n onClick={() => {\n setIsDelete(true)\n setIsShowingConfirmModal(true)\n }}\n color=\"error\"\n variant=\"text\"\n startIcon={<DeleteTwoToneIcon />}\n sx={{ padding: 0, mb: 1 }}\n >\n DELETE CLIENT\n </Button>\n </Box>\n )}\n </>\n )}\n {error && <Alert severity=\"error\">{error?.reason}</Alert>}\n </>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal && !isShowingConfirmModal}\n onCancel={() => {\n hide()\n setError(undefined)\n }}\n maxWidth=\"md\"\n title={isEdit ? 'Client Details' : 'Create New OAuth Client'}\n content={content}\n onConfirm={onCreateClient}\n confirmButtonProps={{ children: 'Save' }}\n />\n <WarningDialog\n open={isShowingConfirmModal}\n title={warningHeader}\n content={warningBody}\n onCancel={hideConfirmModal}\n onConfirm={() => {\n if (isDelete) {\n deleteClient(client?.client_id!)\n } else {\n updateClient(updatedClient!)\n }\n hideConfirmModal()\n }}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthManagement.js","names":[],"sources":["../../../src/components/OAuthClientManagement/OAuthManagement.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport SynapseClient from '@/synapse-client'\nimport { useGetOAuthClientInfinite } from '@/synapse-queries'\nimport { MoreVert } from '@mui/icons-material'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, Link, IconButton, Menu, MenuItem } from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport {\n createColumnHelper,\n getCoreRowModel,\n Row,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport CopyToClipboardInput from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { DialogBase } from '../DialogBase'\nimport WarningDialog from '../SynapseForm/WarningDialog'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { displayToast } from '../ToastMessage'\nimport { CreateOAuthModal } from './CreateOAuthClient'\nimport OAuthAclEditorModal from '../OAuthClientAclEditor/OAuthAclEditorModal'\n\nconst columnHelper = createColumnHelper<OAuthClient>()\nfunction getColumns(columnOptions: {\n setIsShowingVerification: (value: boolean) => void\n setSelectedClient: (value: OAuthClient) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const {\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n } = columnOptions\n return [\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Modified'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('client_id', {\n header: props => <ColumnHeader {...props} title={'ID'} />,\n }),\n columnHelper.accessor('client_name', {\n header: props => <ColumnHeader {...props} title={'Client'} />,\n }),\n columnHelper.accessor('verified', {\n header: props => <ColumnHeader {...props} title={'Verified'} />,\n cell: ({ getValue }) =>\n getValue() ? (\n 'Yes'\n ) : (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setIsShowingVerification(true)}\n >\n Submit Verification\n </Button>\n ),\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n cell: ({ row }) => (\n <ActionsMenuCell\n row={row}\n setSelectedClient={setSelectedClient}\n setIsEdit={setIsEdit}\n setIsShowingCreateClientModal={setIsShowingCreateClientModal}\n setIsShowingSecretWarning={setIsShowingSecretWarning}\n setIsShowingSharingSettings={setIsShowingSharingSettings}\n />\n ),\n }),\n ]\n}\n\nfunction ActionsMenuCell({\n row,\n setSelectedClient,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSecretWarning,\n setIsShowingSharingSettings,\n}: {\n row: Row<OAuthClient>\n setSelectedClient: (value: OAuthClient) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setAnchorEl(null)\n }\n return (\n <>\n <IconButton\n aria-label=\"more\"\n aria-controls={`actions-menu-${row.id}`}\n aria-haspopup=\"true\"\n onClick={handleMenuOpen}\n size=\"small\"\n >\n <MoreVert />\n </IconButton>\n <Menu\n id={`actions-menu-${row.id}`}\n anchorEl={anchorEl}\n open={open}\n onClose={handleMenuClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsEdit(true)\n setIsShowingCreateClientModal(true)\n handleMenuClose()\n }}\n >\n Edit\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSecretWarning(true)\n handleMenuClose()\n }}\n >\n Generate Secret\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSharingSettings(true)\n handleMenuClose()\n }}\n >\n Sharing Settings\n </MenuItem>\n </Menu>\n </>\n )\n}\n\nexport function OAuthManagement() {\n const { accessToken } = useSynapseContext()\n const [isShowingSharingSettings, setIsShowingSharingSettings] =\n useState(false)\n const [isShowingCreateClientModal, setIsShowingCreateClientModal] =\n useState(false)\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [selectedClient, setSelectedClient] = useState<OAuthClient>()\n const [isShowingConfirmModal, setIsShowingConfirmModal] = useState(false)\n const [isShowingSecretWarning, setIsShowingSecretWarning] = useState(false)\n const [isShowingSecret, setIsShowingSecret] = useState(false)\n const [secret, setSecret] = useState<string>()\n const [isShowingVerification, setIsShowingVerification] = useState(false)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetOAuthClientInfinite()\n const oAuthClientList = useMemo(\n () => data?.pages.flatMap(page => page.results || []) || [],\n [data],\n )\n\n const warningHeader = 'Are you absolutely sure?'\n const warningBody =\n 'If you have an existing secret, generating a new secret will make your application invalid after generation. This action cannot be undone.'\n\n const onShowSecret = async () => {\n setIsShowingSecretWarning(false)\n try {\n const secret = await SynapseClient.createOAuthClientSecret(\n accessToken!,\n selectedClient?.client_id!,\n )\n setSelectedClient(undefined)\n setIsShowingSecret(true)\n setSecret(secret.client_secret)\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const columns = useMemo(\n () =>\n getColumns({\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n }),\n [],\n )\n\n const table: Table<OAuthClient> = useReactTable<OAuthClient>({\n data: oAuthClientList,\n columns,\n getRowId: row => row.client_id!,\n enableRowSelection: true,\n enableSorting: false,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n const isEmpty = !isLoading && table.getRowModel().rows.length === 0\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n justifyContent: 'flex-end',\n mb: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setIsShowingCreateClientModal(true)\n setIsEdit(false)\n }}\n sx={{ float: 'right' }}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Client\n </Button>\n </Box>\n <InfiniteTableLayout\n table={<StyledTanStackTable table={table} />}\n isLoading={isLoading}\n isEmpty={isEmpty}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n <CreateOAuthModal\n onClose={() => {\n setIsShowingCreateClientModal(false)\n }}\n isShowingModal={isShowingCreateClientModal}\n client={isEdit ? selectedClient : undefined}\n isEdit={isEdit}\n setIsShowingConfirmModal={setIsShowingConfirmModal}\n isShowingConfirmModal={isShowingConfirmModal}\n setIsShowingModal={setIsShowingCreateClientModal}\n />\n <DialogBase\n open={isShowingVerification}\n onCancel={() => setIsShowingVerification(false)}\n title=\"Submit Verification\"\n content={\n <>\n <p>\n In order to verify an OAuth client please submit a request to the{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://sagebionetworks.jira.com/servicedesk/customer/portal/9\"\n >\n Synapse Service Desk.\n </Link>\n </p>\n <b>Please list the following items in your request:</b>\n <ul>\n <li>Your name</li>\n <li>\n The ID of the client to be verified <br />\n </li>\n <li>A description of your application</li>\n </ul>\n {/* <p>\n Verification can take up to X weeks and we will notify you via X.\n </p> */}\n </>\n }\n />\n <OAuthAclEditorModal\n clientId={selectedClient?.client_id!}\n open={isShowingSharingSettings}\n onClose={() => setIsShowingSharingSettings(false)}\n />\n <WarningDialog\n open={isShowingSecretWarning}\n title={warningHeader}\n content={warningBody}\n onCancel={() => {\n setIsShowingSecretWarning(false)\n setSelectedClient(undefined)\n }}\n onConfirm={onShowSecret}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n {secret && (\n <DialogBase\n open={isShowingSecret}\n title=\"App Secret\"\n onCancel={() => {\n setIsShowingSecret(false)\n setSecret(undefined)\n }}\n content={\n <>\n <p>\n <b>This secret will not be able to be retrieved again.</b> If\n needed, in order to generate a new secret select Generate from\n the Client List.\n </p>\n <CopyToClipboardInput value={secret} inputWidth={'400px'} />\n </>\n }\n />\n )}\n </div>\n )\n}\n\nexport default OAuthManagement\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuthManagement.js","names":[],"sources":["../../../src/components/OAuthClientManagement/OAuthManagement.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport SynapseClient from '@/synapse-client'\nimport { useGetOAuthClientInfinite } from '@/synapse-queries'\nimport { MoreVert } from '@mui/icons-material'\nimport { useSynapseContext } from '@/utils'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, Link, IconButton, Menu, MenuItem } from '@mui/material'\nimport { OAuthClient } from '@sage-bionetworks/synapse-client/generated/models/OAuthClient'\nimport {\n createColumnHelper,\n getCoreRowModel,\n Row,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { useMemo, useState } from 'react'\nimport CopyToClipboardInput from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { DialogBase } from '../DialogBase'\nimport WarningDialog from '../SynapseForm/WarningDialog'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { displayToast } from '../ToastMessage'\nimport { CreateOAuthModal } from './CreateOAuthClient'\nimport OAuthAclEditorModal from '../OAuthClientAclEditor/OAuthAclEditorModal'\n\nconst columnHelper = createColumnHelper<OAuthClient>()\nfunction getColumns(columnOptions: {\n setIsShowingVerification: (value: boolean) => void\n setSelectedClient: (value: OAuthClient) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const {\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n } = columnOptions\n return [\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Modified'} />,\n cell: info => formatDate(dayjs(info.getValue())),\n }),\n columnHelper.accessor('client_id', {\n header: props => <ColumnHeader {...props} title={'ID'} />,\n }),\n columnHelper.accessor('client_name', {\n header: props => <ColumnHeader {...props} title={'Client'} />,\n }),\n columnHelper.accessor('verified', {\n header: props => <ColumnHeader {...props} title={'Verified'} />,\n cell: ({ getValue }) =>\n getValue() ? (\n 'Yes'\n ) : (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setIsShowingVerification(true)}\n >\n Submit Verification\n </Button>\n ),\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n cell: ({ row }) => (\n <ActionsMenuCell\n row={row}\n setSelectedClient={setSelectedClient}\n setIsEdit={setIsEdit}\n setIsShowingCreateClientModal={setIsShowingCreateClientModal}\n setIsShowingSecretWarning={setIsShowingSecretWarning}\n setIsShowingSharingSettings={setIsShowingSharingSettings}\n />\n ),\n }),\n ]\n}\n\nfunction ActionsMenuCell({\n row,\n setSelectedClient,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSecretWarning,\n setIsShowingSharingSettings,\n}: {\n row: Row<OAuthClient>\n setSelectedClient: (value: OAuthClient) => void\n setIsEdit: (value: boolean) => void\n setIsShowingCreateClientModal: (value: boolean) => void\n setIsShowingSecretWarning: (value: boolean) => void\n setIsShowingSharingSettings: (value: boolean) => void\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const open = Boolean(anchorEl)\n const handleMenuOpen = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setAnchorEl(null)\n }\n return (\n <>\n <IconButton\n aria-label=\"more\"\n aria-controls={`actions-menu-${row.id}`}\n aria-haspopup=\"true\"\n onClick={handleMenuOpen}\n size=\"small\"\n >\n <MoreVert />\n </IconButton>\n <Menu\n id={`actions-menu-${row.id}`}\n anchorEl={anchorEl}\n open={open}\n onClose={handleMenuClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsEdit(true)\n setIsShowingCreateClientModal(true)\n handleMenuClose()\n }}\n >\n Edit\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSecretWarning(true)\n handleMenuClose()\n }}\n >\n Generate Secret\n </MenuItem>\n <MenuItem\n onClick={() => {\n setSelectedClient(row.original)\n setIsShowingSharingSettings(true)\n handleMenuClose()\n }}\n >\n Sharing Settings\n </MenuItem>\n </Menu>\n </>\n )\n}\n\nexport function OAuthManagement() {\n const { accessToken } = useSynapseContext()\n const [isShowingSharingSettings, setIsShowingSharingSettings] =\n useState(false)\n const [isShowingCreateClientModal, setIsShowingCreateClientModal] =\n useState(false)\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [selectedClient, setSelectedClient] = useState<OAuthClient>()\n const [isShowingConfirmModal, setIsShowingConfirmModal] = useState(false)\n const [isShowingSecretWarning, setIsShowingSecretWarning] = useState(false)\n const [isShowingSecret, setIsShowingSecret] = useState(false)\n const [secret, setSecret] = useState<string>()\n const [isShowingVerification, setIsShowingVerification] = useState(false)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetOAuthClientInfinite()\n const oAuthClientList = useMemo(\n () => data?.pages.flatMap(page => page.results || []) || [],\n [data],\n )\n\n const warningHeader = 'Are you absolutely sure?'\n const warningBody =\n 'If you have an existing secret, generating a new secret will make your application invalid after generation. This action cannot be undone.'\n\n const onShowSecret = async () => {\n setIsShowingSecretWarning(false)\n try {\n const secret = await SynapseClient.createOAuthClientSecret(\n accessToken!,\n selectedClient?.client_id!,\n )\n setSelectedClient(undefined)\n setIsShowingSecret(true)\n setSecret(secret.client_secret)\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const columns = useMemo(\n () =>\n getColumns({\n setIsShowingVerification,\n setSelectedClient,\n setIsShowingSecretWarning,\n setIsEdit,\n setIsShowingCreateClientModal,\n setIsShowingSharingSettings,\n }),\n [],\n )\n\n const table: Table<OAuthClient> = useReactTable<OAuthClient>({\n data: oAuthClientList,\n columns,\n getRowId: row => row.client_id!,\n enableRowSelection: true,\n enableSorting: false,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n const isEmpty = !isLoading && table.getRowModel().rows.length === 0\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n width: '100%',\n justifyContent: 'flex-end',\n mb: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n setIsShowingCreateClientModal(true)\n setIsEdit(false)\n }}\n sx={{ float: 'right' }}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Client\n </Button>\n </Box>\n <InfiniteTableLayout\n table={<StyledTanStackTable table={table} />}\n isLoading={isLoading}\n isEmpty={isEmpty}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n <CreateOAuthModal\n onClose={() => {\n setIsShowingCreateClientModal(false)\n }}\n isShowingModal={isShowingCreateClientModal}\n client={isEdit ? selectedClient : undefined}\n isEdit={isEdit}\n setIsShowingConfirmModal={setIsShowingConfirmModal}\n isShowingConfirmModal={isShowingConfirmModal}\n setIsShowingModal={setIsShowingCreateClientModal}\n />\n <DialogBase\n open={isShowingVerification}\n onCancel={() => setIsShowingVerification(false)}\n title=\"Submit Verification\"\n content={\n <>\n <p>\n In order to verify an OAuth client please submit a request to the{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://sagebionetworks.jira.com/servicedesk/customer/portal/9\"\n >\n Synapse Service Desk.\n </Link>\n </p>\n <b>Please list the following items in your request:</b>\n <ul>\n <li>Your name</li>\n <li>\n The ID of the client to be verified <br />\n </li>\n <li>A description of your application</li>\n </ul>\n {/* <p>\n Verification can take up to X weeks and we will notify you via X.\n </p> */}\n </>\n }\n />\n <OAuthAclEditorModal\n clientId={selectedClient?.client_id!}\n open={isShowingSharingSettings}\n onClose={() => setIsShowingSharingSettings(false)}\n />\n <WarningDialog\n open={isShowingSecretWarning}\n title={warningHeader}\n content={warningBody}\n onCancel={() => {\n setIsShowingSecretWarning(false)\n setSelectedClient(undefined)\n }}\n onConfirm={onShowSecret}\n confirmButtonColor=\"error\"\n confirmButtonText=\"Yes, Continue\"\n />\n {secret && (\n <DialogBase\n open={isShowingSecret}\n title=\"App Secret\"\n onCancel={() => {\n setIsShowingSecret(false)\n setSecret(undefined)\n }}\n content={\n <>\n <p>\n <b>This secret will not be able to be retrieved again.</b> If\n needed, in order to generate a new secret select Generate from\n the Client List.\n </p>\n <CopyToClipboardInput value={secret} inputWidth={'400px'} />\n </>\n }\n />\n )}\n </div>\n )\n}\n\nexport default OAuthManagement\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationBanner.js","names":[],"sources":["../../../src/components/OrientationBanner/OrientationBanner.tsx"],"sourcesContent":["import Illustrations from '@/assets/illustrations'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { useCookiePreferences } from '@/utils/hooks/useCookiePreferences'\nimport { Theme } from '@mui/material'\nimport { SxProps } from '@mui/system'\nimport React, { ReactNode, useState } from 'react'\nimport FullWidthAlert, {\n AlertButtonConfig,\n FullWidthAlertProps,\n} from '../FullWidthAlert/FullWidthAlert'\nimport {\n getOrientationBannerKey,\n OrientationBannerName,\n} from '@/utils/OrientationBannerConstants'\n\nexport interface OrientationBannerProps {\n name: OrientationBannerName\n title: string\n text: ReactNode\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n sx?: FullWidthAlertProps['sx']\n}\n\nfunction OrientationBanner(props: OrientationBannerProps): React.ReactNode {\n const { name, title, text, primaryButtonConfig, secondaryButtonConfig, sx } =\n props\n const [cookiePreferences] = useCookiePreferences()\n\n const storageBannerId = getOrientationBannerKey(name)\n const [showBanner, setShowBanner] = useState(\n localStorage.getItem(storageBannerId) === null,\n )\n\n const defaultSx: SxProps<Theme> = theme => ({\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n backgroundColor: '#F9FAFB',\n border: 'none',\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.05)',\n minHeight: '152px',\n mt: 0,\n paddingLeft: 4,\n '.MuiAlert-icon': { mr: 5 },\n '.MuiAlertTitle-root': { color: theme.palette.grey[1000] },\n })\n const BannerIllustration = Illustrations[name]\n\n return (\n <FullWidthAlert\n show={showBanner}\n isGlobal={false}\n title={title}\n description={text}\n primaryButtonConfig={primaryButtonConfig}\n secondaryButtonConfig={secondaryButtonConfig}\n icon={<BannerIllustration />}\n onClose={() => {\n if (cookiePreferences.functionalAllowed) {\n localStorage.setItem(storageBannerId, 'true')\n }\n setShowBanner(false)\n }}\n sx={spreadSx(defaultSx, sx)}\n />\n )\n}\n\nexport default OrientationBanner\n"],"mappings":";;;;;;;;AAwBA,SAAS,EAAkB,GAAgD;CACzE,IAAM,EAAE,SAAM,UAAO,SAAM,wBAAqB,0BAAuB,UACrE,GACI,CAAC,KAAqB,
|
|
1
|
+
{"version":3,"file":"OrientationBanner.js","names":[],"sources":["../../../src/components/OrientationBanner/OrientationBanner.tsx"],"sourcesContent":["import Illustrations from '@/assets/illustrations'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { useCookiePreferences } from '@/utils/hooks/useCookiePreferences'\nimport { Theme } from '@mui/material'\nimport { SxProps } from '@mui/system'\nimport React, { ReactNode, useState } from 'react'\nimport FullWidthAlert, {\n AlertButtonConfig,\n FullWidthAlertProps,\n} from '../FullWidthAlert/FullWidthAlert'\nimport {\n getOrientationBannerKey,\n OrientationBannerName,\n} from '@/utils/OrientationBannerConstants'\n\nexport interface OrientationBannerProps {\n name: OrientationBannerName\n title: string\n text: ReactNode\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n sx?: FullWidthAlertProps['sx']\n}\n\nfunction OrientationBanner(props: OrientationBannerProps): React.ReactNode {\n const { name, title, text, primaryButtonConfig, secondaryButtonConfig, sx } =\n props\n const [cookiePreferences] = useCookiePreferences()\n\n const storageBannerId = getOrientationBannerKey(name)\n const [showBanner, setShowBanner] = useState(\n localStorage.getItem(storageBannerId) === null,\n )\n\n const defaultSx: SxProps<Theme> = theme => ({\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n backgroundColor: '#F9FAFB',\n border: 'none',\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.05)',\n minHeight: '152px',\n mt: 0,\n paddingLeft: 4,\n '.MuiAlert-icon': { mr: 5 },\n '.MuiAlertTitle-root': { color: theme.palette.grey[1000] },\n })\n const BannerIllustration = Illustrations[name]\n\n return (\n <FullWidthAlert\n show={showBanner}\n isGlobal={false}\n title={title}\n description={text}\n primaryButtonConfig={primaryButtonConfig}\n secondaryButtonConfig={secondaryButtonConfig}\n icon={<BannerIllustration />}\n onClose={() => {\n if (cookiePreferences.functionalAllowed) {\n localStorage.setItem(storageBannerId, 'true')\n }\n setShowBanner(false)\n }}\n sx={spreadSx(defaultSx, sx)}\n />\n )\n}\n\nexport default OrientationBanner\n"],"mappings":";;;;;;;;AAwBA,SAAS,EAAkB,GAAgD;CACzE,IAAM,EAAE,SAAM,UAAO,SAAM,wBAAqB,0BAAuB,UACrE,GACI,CAAC,KAAqB,EAAqB,GAE3C,IAAkB,EAAwB,CAAI,GAC9C,CAAC,GAAY,KAAiB,EAClC,aAAa,QAAQ,CAAe,MAAM,IAC5C,GAEM,KAA4B,OAAU;GACzC,EAAM,YAAY,KAAK,IAAI,IAAI,EAC9B,SAAS,OACX;EACA,iBAAiB;EACjB,QAAQ;EACR,WAAW;EACX,WAAW;EACX,IAAI;EACJ,aAAa;EACb,kBAAkB,EAAE,IAAI,EAAE;EAC1B,uBAAuB,EAAE,OAAO,EAAM,QAAQ,KAAK,KAAM;CAC3D,IACM,IAAqB,EAAc;CAEzC,OACE,kBAAC,GAAD;EACE,MAAM;EACN,UAAU;EACH;EACP,aAAa;EACQ;EACE;EACvB,MAAM,kBAAC,GAAD,CAAqB,CAAA;EAC3B,eAAe;GAIb,AAHI,EAAkB,qBACpB,aAAa,QAAQ,GAAiB,MAAM,GAE9C,EAAc,EAAK;EACrB;EACA,IAAI,EAAS,GAAW,CAAE;CAC3B,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageProgress.js","names":[],"sources":["../../../src/components/PageProgress/PageProgress.tsx"],"sourcesContent":["import { useEffect, useState, MouseEvent } from 'react'\nimport { Box, Button, LinearProgress } from '@mui/material'\n\nexport type PageProgressProps = {\n barColor: string\n barPercent: number\n backBtnLabel: string\n backBtnCallback?: () => void\n forwardBtnLabel: string\n forwardBtnCallback?: () => void\n forwardBtnActive: boolean\n}\n\nexport function PageProgress(props: PageProgressProps) {\n const {\n barColor,\n barPercent,\n backBtnLabel,\n forwardBtnLabel,\n forwardBtnActive,\n backBtnCallback,\n forwardBtnCallback,\n } = props\n const [progressPercent, setProgressPercent] = useState<number>(0)\n let mounted = true\n\n useEffect(() => {\n if (mounted) {\n setProgressPercent(barPercent)\n }\n return () => {\n mounted = false\n }\n }, [barPercent])\n\n const handleBackButtonClick = (e: MouseEvent) => {\n if (backBtnCallback) {\n backBtnCallback()\n }\n }\n\n const handleNextButtonClick = (e: MouseEvent) => {\n if (forwardBtnCallback && forwardBtnActive) {\n forwardBtnCallback()\n }\n }\n\n const buttonSx = {\n padding: '10px 120px',\n marginRight: '30px',\n }\n const progressSx = {\n backgroundColor: 'transparent',\n '& .MuiLinearProgress-bar': {\n backgroundColor: barColor,\n },\n height: '10px',\n }\n\n return (\n <section>\n <LinearProgress\n value={progressPercent}\n variant=\"determinate\"\n sx={progressSx}\n />\n <Box\n sx={{\n padding: '30px 0',\n textAlign: 'center',\n }}\n >\n <Button\n onClick={handleBackButtonClick}\n sx={buttonSx}\n variant=\"outlined\"\n color=\"primary\"\n >\n {backBtnLabel}\n </Button>\n <Button\n onClick={handleNextButtonClick}\n disabled={!forwardBtnActive}\n sx={buttonSx}\n variant=\"contained\"\n color=\"primary\"\n >\n {forwardBtnLabel}\n </Button>\n </Box>\n </section>\n )\n}\n\nexport default PageProgress\n"],"mappings":";;;;AAaA,SAAgB,EAAa,GAA0B;CACrD,IAAM,EACJ,aACA,eACA,iBACA,oBACA,qBACA,oBACA,0BACE,GACE,CAAC,GAAiB,KAAsB,EAAiB,
|
|
1
|
+
{"version":3,"file":"PageProgress.js","names":[],"sources":["../../../src/components/PageProgress/PageProgress.tsx"],"sourcesContent":["import { useEffect, useState, MouseEvent } from 'react'\nimport { Box, Button, LinearProgress } from '@mui/material'\n\nexport type PageProgressProps = {\n barColor: string\n barPercent: number\n backBtnLabel: string\n backBtnCallback?: () => void\n forwardBtnLabel: string\n forwardBtnCallback?: () => void\n forwardBtnActive: boolean\n}\n\nexport function PageProgress(props: PageProgressProps) {\n const {\n barColor,\n barPercent,\n backBtnLabel,\n forwardBtnLabel,\n forwardBtnActive,\n backBtnCallback,\n forwardBtnCallback,\n } = props\n const [progressPercent, setProgressPercent] = useState<number>(0)\n let mounted = true\n\n useEffect(() => {\n if (mounted) {\n setProgressPercent(barPercent)\n }\n return () => {\n mounted = false\n }\n }, [barPercent])\n\n const handleBackButtonClick = (e: MouseEvent) => {\n if (backBtnCallback) {\n backBtnCallback()\n }\n }\n\n const handleNextButtonClick = (e: MouseEvent) => {\n if (forwardBtnCallback && forwardBtnActive) {\n forwardBtnCallback()\n }\n }\n\n const buttonSx = {\n padding: '10px 120px',\n marginRight: '30px',\n }\n const progressSx = {\n backgroundColor: 'transparent',\n '& .MuiLinearProgress-bar': {\n backgroundColor: barColor,\n },\n height: '10px',\n }\n\n return (\n <section>\n <LinearProgress\n value={progressPercent}\n variant=\"determinate\"\n sx={progressSx}\n />\n <Box\n sx={{\n padding: '30px 0',\n textAlign: 'center',\n }}\n >\n <Button\n onClick={handleBackButtonClick}\n sx={buttonSx}\n variant=\"outlined\"\n color=\"primary\"\n >\n {backBtnLabel}\n </Button>\n <Button\n onClick={handleNextButtonClick}\n disabled={!forwardBtnActive}\n sx={buttonSx}\n variant=\"contained\"\n color=\"primary\"\n >\n {forwardBtnLabel}\n </Button>\n </Box>\n </section>\n )\n}\n\nexport default PageProgress\n"],"mappings":";;;;AAaA,SAAgB,EAAa,GAA0B;CACrD,IAAM,EACJ,aACA,eACA,iBACA,oBACA,qBACA,oBACA,0BACE,GACE,CAAC,GAAiB,KAAsB,EAAiB,CAAC,GAC5D,IAAU;CAEd,SACM,KACF,EAAmB,CAAU,SAElB;EACX,IAAU;CACZ,IACC,CAAC,CAAU,CAAC;CAEf,IAAM,KAAyB,MAAkB;EAC/C,AAAI,KACF,EAAgB;CAEpB,GAEM,KAAyB,MAAkB;EAC/C,AAAI,KAAsB,KACxB,EAAmB;CAEvB,GAEM,IAAW;EACf,SAAS;EACT,aAAa;CACf;CASA,OACE,kBAAC,WAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,OAAO;EACP,SAAQ;EACR,IAAI;GAZR,iBAAiB;GACjB,4BAA4B,EAC1B,iBAAiB,EACnB;GACA,QAAQ;EAQA;CACL,CAAA,GACD,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,WAAW;EACb;YAJF,CAME,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;GACJ,SAAQ;GACR,OAAM;aAEL;EACK,CAAA,GACR,kBAAC,GAAD;GACE,SAAS;GACT,UAAU,CAAC;GACX,IAAI;GACJ,SAAQ;GACR,OAAM;aAEL;EACK,CAAA,CACL;GACE,EAAA,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarPlot.js","names":[],"sources":["../../../src/components/Plot/BarPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { BarPlotColors, GraphItem, PlotStyle } from './types'\n\nexport type BarPlotProps = {\n isTop: boolean\n style?: CSSProperties\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label: string\n xMax: number\n colors?: BarPlotColors\n plotStyle?: PlotStyle\n onClick?: (event: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isTop: boolean\n maxValue: number\n isLegend?: boolean\n backgroundColor?: string\n}\n\nfunction getBarPlotDataPoints(\n data: any[],\n filter?: string,\n colors?: BarPlotColors,\n): any[] {\n if (filter) {\n data = data.filter(item => item.y === filter)\n }\n const groups = uniq(data.map(item => item['group'])).sort()\n const result: any[] = []\n const defaultColors = [`(28,118,175,1)`, `rgba(91,176,181,1)`]\n\n groups.forEach((group, i) => {\n const items = data.filter(item => item.group === group)\n result.push({\n x: items.map(item => item.x),\n y: items.map(item => item.y),\n name: group,\n orientation: 'h',\n marker: {\n color: colors ? colors[group] : defaultColors[i],\n width: 1,\n },\n text: [group],\n hovertemplate: `%{x} %{text}<extra></extra>`,\n textposition: 'none',\n type: 'bar',\n })\n })\n\n return result\n}\n\nfunction getLayout(\n layoutConfig: Partial<Plotly.Layout>,\n { isTop, maxValue, backgroundColor }: LayoutOptions,\n): Partial<Plotly.Layout> {\n const layout = cloneDeep(layoutConfig)\n layout.xaxis = {\n visible: false,\n range: [0, maxValue],\n }\n if (backgroundColor) {\n layout.plot_bgcolor = backgroundColor\n layout.paper_bgcolor = backgroundColor\n }\n if (!isTop) {\n layout.hoverlabel = {\n font: {\n size: 10,\n },\n }\n }\n layout.showlegend = false\n layout.height = isTop ? 40 : 20\n return layout\n}\n\nconst DEFAULT_BARPLOT_PLOTSTYLE: PlotStyle = { backgroundColor: 'transparent' }\nconst DEFAULT_BARPLOT_STYLE: CSSProperties = {\n width: '100%',\n height: '100%',\n}\n\nfunction BarPlot({\n plotData,\n optionsConfig,\n isTop,\n layoutConfig,\n label,\n xMax,\n colors,\n plotStyle = DEFAULT_BARPLOT_PLOTSTYLE,\n style = DEFAULT_BARPLOT_STYLE,\n onClick,\n}: BarPlotProps) {\n return (\n <Plot\n style={style}\n layout={getLayout(layoutConfig, {\n isTop,\n maxValue: xMax,\n backgroundColor: plotStyle.backgroundColor,\n })}\n config={optionsConfig}\n data={getBarPlotDataPoints(plotData, label, colors)}\n onClick={e => (onClick ? onClick(e) : noop)}\n />\n )\n}\n\nexport default BarPlot\n"],"mappings":";;;;;;AA4BA,SAAS,EACP,GACA,GACA,GACO;
|
|
1
|
+
{"version":3,"file":"BarPlot.js","names":[],"sources":["../../../src/components/Plot/BarPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { BarPlotColors, GraphItem, PlotStyle } from './types'\n\nexport type BarPlotProps = {\n isTop: boolean\n style?: CSSProperties\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label: string\n xMax: number\n colors?: BarPlotColors\n plotStyle?: PlotStyle\n onClick?: (event: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isTop: boolean\n maxValue: number\n isLegend?: boolean\n backgroundColor?: string\n}\n\nfunction getBarPlotDataPoints(\n data: any[],\n filter?: string,\n colors?: BarPlotColors,\n): any[] {\n if (filter) {\n data = data.filter(item => item.y === filter)\n }\n const groups = uniq(data.map(item => item['group'])).sort()\n const result: any[] = []\n const defaultColors = [`(28,118,175,1)`, `rgba(91,176,181,1)`]\n\n groups.forEach((group, i) => {\n const items = data.filter(item => item.group === group)\n result.push({\n x: items.map(item => item.x),\n y: items.map(item => item.y),\n name: group,\n orientation: 'h',\n marker: {\n color: colors ? colors[group] : defaultColors[i],\n width: 1,\n },\n text: [group],\n hovertemplate: `%{x} %{text}<extra></extra>`,\n textposition: 'none',\n type: 'bar',\n })\n })\n\n return result\n}\n\nfunction getLayout(\n layoutConfig: Partial<Plotly.Layout>,\n { isTop, maxValue, backgroundColor }: LayoutOptions,\n): Partial<Plotly.Layout> {\n const layout = cloneDeep(layoutConfig)\n layout.xaxis = {\n visible: false,\n range: [0, maxValue],\n }\n if (backgroundColor) {\n layout.plot_bgcolor = backgroundColor\n layout.paper_bgcolor = backgroundColor\n }\n if (!isTop) {\n layout.hoverlabel = {\n font: {\n size: 10,\n },\n }\n }\n layout.showlegend = false\n layout.height = isTop ? 40 : 20\n return layout\n}\n\nconst DEFAULT_BARPLOT_PLOTSTYLE: PlotStyle = { backgroundColor: 'transparent' }\nconst DEFAULT_BARPLOT_STYLE: CSSProperties = {\n width: '100%',\n height: '100%',\n}\n\nfunction BarPlot({\n plotData,\n optionsConfig,\n isTop,\n layoutConfig,\n label,\n xMax,\n colors,\n plotStyle = DEFAULT_BARPLOT_PLOTSTYLE,\n style = DEFAULT_BARPLOT_STYLE,\n onClick,\n}: BarPlotProps) {\n return (\n <Plot\n style={style}\n layout={getLayout(layoutConfig, {\n isTop,\n maxValue: xMax,\n backgroundColor: plotStyle.backgroundColor,\n })}\n config={optionsConfig}\n data={getBarPlotDataPoints(plotData, label, colors)}\n onClick={e => (onClick ? onClick(e) : noop)}\n />\n )\n}\n\nexport default BarPlot\n"],"mappings":";;;;;;AA4BA,SAAS,EACP,GACA,GACA,GACO;CACP,AAAI,MACF,IAAO,EAAK,QAAO,MAAQ,EAAK,MAAM,CAAM;CAE9C,IAAM,IAAS,EAAK,EAAK,KAAI,MAAQ,EAAK,KAAQ,CAAC,EAAE,KAAK,GACpD,IAAgB,CAAC,GACjB,IAAgB,CAAC,kBAAkB,oBAAoB;CAoB7D,OAlBA,EAAO,SAAS,GAAO,MAAM;EAC3B,IAAM,IAAQ,EAAK,QAAO,MAAQ,EAAK,UAAU,CAAK;EACtD,EAAO,KAAK;GACV,GAAG,EAAM,KAAI,MAAQ,EAAK,CAAC;GAC3B,GAAG,EAAM,KAAI,MAAQ,EAAK,CAAC;GAC3B,MAAM;GACN,aAAa;GACb,QAAQ;IACN,OAAO,IAAS,EAAO,KAAS,EAAc;IAC9C,OAAO;GACT;GACA,MAAM,CAAC,CAAK;GACZ,eAAe;GACf,cAAc;GACd,MAAM;EACR,CAAC;CACH,CAAC,GAEM;AACT;AAEA,SAAS,EACP,GACA,EAAE,UAAO,aAAU,sBACK;CACxB,IAAM,IAAS,EAAU,CAAY;CAkBrC,OAjBA,EAAO,QAAQ;EACb,SAAS;EACT,OAAO,CAAC,GAAG,CAAQ;CACrB,GACI,MACF,EAAO,eAAe,GACtB,EAAO,gBAAgB,IAEpB,MACH,EAAO,aAAa,EAClB,MAAM,EACJ,MAAM,GACR,EACF,IAEF,EAAO,aAAa,IACpB,EAAO,SAAS,IAAQ,KAAK,IACtB;AACT;AAEA,IAAM,IAAuC,EAAE,iBAAiB,cAAc,GACxE,IAAuC;CAC3C,OAAO;CACP,QAAQ;AACV;AAEA,SAAS,EAAQ,EACf,aACA,kBACA,UACA,iBACA,UACA,SACA,WACA,eAAY,GACZ,WAAQ,GACR,cACe;CACf,OACE,kBAAC,GAAD;EACS;EACP,QAAQ,EAAU,GAAc;GAC9B;GACA,UAAU;GACV,iBAAiB,EAAU;EAC7B,CAAC;EACD,QAAQ;EACR,MAAM,EAAqB,GAAU,GAAO,CAAM;EAClD,UAAS,MAAM,IAAU,EAAQ,CAAC,IAAI;CACvC,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DotPlot.js","names":[],"sources":["../../../src/components/Plot/DotPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport countBy from 'lodash-es/countBy'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { Dictionary, GraphItem, PlotStyle } from './types'\n\nexport type DotPlotProps = {\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label?: string\n style?: CSSProperties\n id: string\n isLegend?: boolean\n isXAxis?: boolean\n xMax?: number\n plotStyle?: PlotStyle\n markerSymbols?: Dictionary\n onClick?: (e: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isLegend: boolean\n isXAxis: boolean\n maxValue?: number\n backgroundColor?: string\n}\n\nfunction getLayout(\n dotPlotLayoutConfig: Partial<Plotly.Layout>,\n layoutOptions?: LayoutOptions,\n): Partial<Plotly.Layout> {\n const result = cloneDeep(dotPlotLayoutConfig)\n if (!layoutOptions) {\n return result\n }\n if (layoutOptions.backgroundColor) {\n result.plot_bgcolor = layoutOptions.backgroundColor\n }\n result.yaxis!.showgrid = false\n result.yaxis!.zeroline = true\n result.yaxis!.zerolinecolor = '#aeb5bc'\n result.yaxis!.showticklabels = false\n if (result.xaxis!.type === 'log') {\n result.xaxis!.tickformat = 'f'\n result.xaxis!.range = [-0.1, Math.log10(layoutOptions.maxValue!) + 0.1]\n } else {\n result.xaxis!.range = [\n (layoutOptions.maxValue! / 50) * -1,\n layoutOptions.maxValue! + 30,\n ]\n }\n result.xaxis!.visible = layoutOptions.isXAxis\n result.showlegend = layoutOptions.isLegend\n result.margin = {\n t: 0,\n b: layoutOptions.isXAxis ? 50 : 0,\n l: 0,\n r: 0,\n pad: 15,\n }\n let height = 40\n if (layoutOptions.isLegend) {\n height = 35\n result.margin.pad = 0\n result.xaxis = {\n visible: false,\n zeroline: false,\n showgrid: false,\n showline: false,\n range: [0, 1],\n }\n\n result.yaxis = {\n visible: false,\n showline: false,\n }\n }\n if (layoutOptions.isXAxis) {\n result.yaxis = {\n visible: false,\n showgrid: false,\n showline: false,\n }\n height = 50\n }\n\n result.height = height\n\n return result\n}\n\nfunction createArrayOfGroupValues(\n headers: string[],\n items: GraphItem[],\n): number[] {\n const result: number[] = new Array(headers.length)\n items.forEach(item => {\n const index = headers.indexOf(item.y)\n if (index !== -1) {\n result[index] = item.x\n }\n })\n return result\n}\n\n/**\n * Generates a sequence of n numbers centered around 0\n *\n * Examples:\n * if n is 4, the result would be [-1.5, -0.5, 0.5, 1.5]\n * if n is 5 the result would be [-2, -1, 0, 1, 2]\n * @param n\n */\nexport function generateCenteredSequence(n: number): number[] {\n const sequence: number[] = []\n const half = (n - 1) / 2\n for (let i = 0; i < n; i++) {\n sequence.push(i - half)\n }\n return sequence\n}\n\n/**\n * Returns a set of y values where\n * - if an x value is unique, the y value is 0\n * - if an x value is repeated, the y value is an offset from 0\n *\n * This has the effect of preventing overlapping points in a dot plot\n * @param xDataByGroup\n */\nexport function getYDataForDotPlotOffset(\n xDataByGroup: Record<string, number[]>,\n): Record<string, number[]> {\n const counts = countBy(xDataByGroup, val => val[0])\n\n const yDataByGroup: Record<string, number[]> = {}\n // keep track of how many times we have seen each duplicate value\n const seen: Record<number, number> = {}\n Object.keys(xDataByGroup).forEach(group => {\n const value = xDataByGroup[group][0]\n if (counts[value] === 1) {\n // The value is not duplicated by another group, so the y-value (vertical offset) is 0\n yDataByGroup[group] = [0]\n } else {\n // The value is duplicated by another group, so get an offset value that will be\n // - centered around 0\n // - unique for this item among all items with the same value\n if (seen[value] == undefined) {\n seen[value] = 0\n }\n const offsets = generateCenteredSequence(counts[value])\n const offset = offsets[seen[value]]\n\n yDataByGroup[group] = [offset]\n seen[value] = seen[value] + 1\n }\n })\n return yDataByGroup\n}\n\nfunction getPlotDataPoints(\n graphItems: GraphItem[],\n plotStyle: PlotStyle,\n ySorted?: string[],\n markerSymbols?: Dictionary,\n): Plotly.Data[] {\n const isFakeData = ySorted === undefined\n const groups = uniq(graphItems.map(item => item.group))\n const defaultSymbols = [\n 'y-down',\n 'triangle-up',\n 'cross-thin-open',\n 'triangle-up-open-dot',\n 'star-square-open',\n 'diamond-x',\n ]\n\n const xDataByGroup: Record<string, number[]> = groups.reduce(\n (prev, group) => {\n const xDataForGroup = isFakeData\n ? [-100] // fake datavalue outside of the bounds\n : createArrayOfGroupValues(\n ySorted,\n graphItems.filter(row => row.group === group),\n )\n return { ...prev, [group]: xDataForGroup }\n },\n {},\n )\n const yDataByGroup: Record<string, number[]> =\n getYDataForDotPlotOffset(xDataByGroup)\n\n const data: Plotly.Data[] = groups.map((group, i) => {\n const xData: number[] = xDataByGroup[group]\n const yData: number[] = yDataByGroup[group]\n return {\n type: 'scatter',\n x: xData,\n y: yData,\n text: [group],\n hovertemplate: `%{x} %{text}<extra></extra>`,\n mode: 'markers',\n name: group,\n marker: {\n color: plotStyle.markerFill,\n line: {\n color: plotStyle.markerLine,\n width: 1,\n },\n\n symbol: markerSymbols ? markerSymbols[group] : defaultSymbols[i],\n size: plotStyle.markerSize,\n },\n }\n })\n\n return data\n}\n\nconst DEFAULT_DOTPLOT_PLOTSTYLE: PlotStyle = {\n markerFill: '#515359',\n markerLine: '#515359',\n markerSize: 9,\n backgroundColor: 'transparent',\n}\nconst DEFAULT_DOTPLOT_STYLE: CSSProperties = {\n width: '100%',\n height: '100%',\n}\n\nfunction DotPlot({\n plotData,\n optionsConfig,\n layoutConfig,\n label,\n id,\n xMax,\n style = DEFAULT_DOTPLOT_STYLE,\n markerSymbols,\n plotStyle = DEFAULT_DOTPLOT_PLOTSTYLE,\n onClick,\n isLegend = false,\n isXAxis = false,\n}: DotPlotProps) {\n const pointsTypes = label ? [label] : undefined\n\n return (\n <Plot\n key={`dotPlot_${id}`}\n layout={getLayout(layoutConfig, {\n isLegend: isLegend,\n isXAxis: isXAxis,\n maxValue: xMax,\n backgroundColor: plotStyle.backgroundColor,\n })}\n style={style}\n data={getPlotDataPoints(plotData, plotStyle, pointsTypes, markerSymbols)}\n config={optionsConfig}\n onClick={e => (onClick ? onClick(e) : noop)}\n />\n )\n}\n\nexport default DotPlot\n"],"mappings":";;;;;;;AA+BA,SAAS,EACP,GACA,GACwB;CACxB,IAAM,IAAS,EAAU,
|
|
1
|
+
{"version":3,"file":"DotPlot.js","names":[],"sources":["../../../src/components/Plot/DotPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport countBy from 'lodash-es/countBy'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { Dictionary, GraphItem, PlotStyle } from './types'\n\nexport type DotPlotProps = {\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label?: string\n style?: CSSProperties\n id: string\n isLegend?: boolean\n isXAxis?: boolean\n xMax?: number\n plotStyle?: PlotStyle\n markerSymbols?: Dictionary\n onClick?: (e: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isLegend: boolean\n isXAxis: boolean\n maxValue?: number\n backgroundColor?: string\n}\n\nfunction getLayout(\n dotPlotLayoutConfig: Partial<Plotly.Layout>,\n layoutOptions?: LayoutOptions,\n): Partial<Plotly.Layout> {\n const result = cloneDeep(dotPlotLayoutConfig)\n if (!layoutOptions) {\n return result\n }\n if (layoutOptions.backgroundColor) {\n result.plot_bgcolor = layoutOptions.backgroundColor\n }\n result.yaxis!.showgrid = false\n result.yaxis!.zeroline = true\n result.yaxis!.zerolinecolor = '#aeb5bc'\n result.yaxis!.showticklabels = false\n if (result.xaxis!.type === 'log') {\n result.xaxis!.tickformat = 'f'\n result.xaxis!.range = [-0.1, Math.log10(layoutOptions.maxValue!) + 0.1]\n } else {\n result.xaxis!.range = [\n (layoutOptions.maxValue! / 50) * -1,\n layoutOptions.maxValue! + 30,\n ]\n }\n result.xaxis!.visible = layoutOptions.isXAxis\n result.showlegend = layoutOptions.isLegend\n result.margin = {\n t: 0,\n b: layoutOptions.isXAxis ? 50 : 0,\n l: 0,\n r: 0,\n pad: 15,\n }\n let height = 40\n if (layoutOptions.isLegend) {\n height = 35\n result.margin.pad = 0\n result.xaxis = {\n visible: false,\n zeroline: false,\n showgrid: false,\n showline: false,\n range: [0, 1],\n }\n\n result.yaxis = {\n visible: false,\n showline: false,\n }\n }\n if (layoutOptions.isXAxis) {\n result.yaxis = {\n visible: false,\n showgrid: false,\n showline: false,\n }\n height = 50\n }\n\n result.height = height\n\n return result\n}\n\nfunction createArrayOfGroupValues(\n headers: string[],\n items: GraphItem[],\n): number[] {\n const result: number[] = new Array(headers.length)\n items.forEach(item => {\n const index = headers.indexOf(item.y)\n if (index !== -1) {\n result[index] = item.x\n }\n })\n return result\n}\n\n/**\n * Generates a sequence of n numbers centered around 0\n *\n * Examples:\n * if n is 4, the result would be [-1.5, -0.5, 0.5, 1.5]\n * if n is 5 the result would be [-2, -1, 0, 1, 2]\n * @param n\n */\nexport function generateCenteredSequence(n: number): number[] {\n const sequence: number[] = []\n const half = (n - 1) / 2\n for (let i = 0; i < n; i++) {\n sequence.push(i - half)\n }\n return sequence\n}\n\n/**\n * Returns a set of y values where\n * - if an x value is unique, the y value is 0\n * - if an x value is repeated, the y value is an offset from 0\n *\n * This has the effect of preventing overlapping points in a dot plot\n * @param xDataByGroup\n */\nexport function getYDataForDotPlotOffset(\n xDataByGroup: Record<string, number[]>,\n): Record<string, number[]> {\n const counts = countBy(xDataByGroup, val => val[0])\n\n const yDataByGroup: Record<string, number[]> = {}\n // keep track of how many times we have seen each duplicate value\n const seen: Record<number, number> = {}\n Object.keys(xDataByGroup).forEach(group => {\n const value = xDataByGroup[group][0]\n if (counts[value] === 1) {\n // The value is not duplicated by another group, so the y-value (vertical offset) is 0\n yDataByGroup[group] = [0]\n } else {\n // The value is duplicated by another group, so get an offset value that will be\n // - centered around 0\n // - unique for this item among all items with the same value\n if (seen[value] == undefined) {\n seen[value] = 0\n }\n const offsets = generateCenteredSequence(counts[value])\n const offset = offsets[seen[value]]\n\n yDataByGroup[group] = [offset]\n seen[value] = seen[value] + 1\n }\n })\n return yDataByGroup\n}\n\nfunction getPlotDataPoints(\n graphItems: GraphItem[],\n plotStyle: PlotStyle,\n ySorted?: string[],\n markerSymbols?: Dictionary,\n): Plotly.Data[] {\n const isFakeData = ySorted === undefined\n const groups = uniq(graphItems.map(item => item.group))\n const defaultSymbols = [\n 'y-down',\n 'triangle-up',\n 'cross-thin-open',\n 'triangle-up-open-dot',\n 'star-square-open',\n 'diamond-x',\n ]\n\n const xDataByGroup: Record<string, number[]> = groups.reduce(\n (prev, group) => {\n const xDataForGroup = isFakeData\n ? [-100] // fake datavalue outside of the bounds\n : createArrayOfGroupValues(\n ySorted,\n graphItems.filter(row => row.group === group),\n )\n return { ...prev, [group]: xDataForGroup }\n },\n {},\n )\n const yDataByGroup: Record<string, number[]> =\n getYDataForDotPlotOffset(xDataByGroup)\n\n const data: Plotly.Data[] = groups.map((group, i) => {\n const xData: number[] = xDataByGroup[group]\n const yData: number[] = yDataByGroup[group]\n return {\n type: 'scatter',\n x: xData,\n y: yData,\n text: [group],\n hovertemplate: `%{x} %{text}<extra></extra>`,\n mode: 'markers',\n name: group,\n marker: {\n color: plotStyle.markerFill,\n line: {\n color: plotStyle.markerLine,\n width: 1,\n },\n\n symbol: markerSymbols ? markerSymbols[group] : defaultSymbols[i],\n size: plotStyle.markerSize,\n },\n }\n })\n\n return data\n}\n\nconst DEFAULT_DOTPLOT_PLOTSTYLE: PlotStyle = {\n markerFill: '#515359',\n markerLine: '#515359',\n markerSize: 9,\n backgroundColor: 'transparent',\n}\nconst DEFAULT_DOTPLOT_STYLE: CSSProperties = {\n width: '100%',\n height: '100%',\n}\n\nfunction DotPlot({\n plotData,\n optionsConfig,\n layoutConfig,\n label,\n id,\n xMax,\n style = DEFAULT_DOTPLOT_STYLE,\n markerSymbols,\n plotStyle = DEFAULT_DOTPLOT_PLOTSTYLE,\n onClick,\n isLegend = false,\n isXAxis = false,\n}: DotPlotProps) {\n const pointsTypes = label ? [label] : undefined\n\n return (\n <Plot\n key={`dotPlot_${id}`}\n layout={getLayout(layoutConfig, {\n isLegend: isLegend,\n isXAxis: isXAxis,\n maxValue: xMax,\n backgroundColor: plotStyle.backgroundColor,\n })}\n style={style}\n data={getPlotDataPoints(plotData, plotStyle, pointsTypes, markerSymbols)}\n config={optionsConfig}\n onClick={e => (onClick ? onClick(e) : noop)}\n />\n )\n}\n\nexport default DotPlot\n"],"mappings":"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"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { PlotParams } from 'react-plotly.js';
|
|
2
|
+
export declare const safeESModule: <T>(a: T | {
|
|
3
|
+
default: T;
|
|
4
|
+
}) => T;
|
|
2
5
|
/**
|
|
3
|
-
* Wrapper around react-plotly.js, lazy loads
|
|
6
|
+
* Wrapper around react-plotly.js, lazy loads plotly.js-basic-dist.
|
|
7
|
+
* Use this for standard chart types (bar, scatter, pie).
|
|
4
8
|
* @param props
|
|
5
9
|
* @constructor
|
|
6
10
|
*/
|
|
7
11
|
export declare function Plot(props: PlotParams): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
/**
|
|
13
|
+
* Wrapper around react-plotly.js, lazy loads the full plotly.js bundle.
|
|
14
|
+
* Use this for trace types not available in plotly.js-basic-dist, such as Sankey.
|
|
15
|
+
* @param props
|
|
16
|
+
* @constructor
|
|
17
|
+
*/
|
|
18
|
+
export declare function PlotFullBundle(props: PlotParams): import("react/jsx-runtime").JSX.Element;
|
|
8
19
|
export default Plot;
|
|
9
20
|
//# sourceMappingURL=Plot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plot.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/Plot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Plot.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/Plot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,eAAO,MAAM,YAAY,GAAI,CAAC,EAAG,GAAG,CAAC,GAAG;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,KAAG,CAGxD,CAAA;AASD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,UAAU,2CAMrC;AASD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,2CAM/C;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -9,7 +9,11 @@ var i = (e) => {
|
|
|
9
9
|
function o(e) {
|
|
10
10
|
return /* @__PURE__ */ r(t, { children: /* @__PURE__ */ r(a, { ...e }) });
|
|
11
11
|
}
|
|
12
|
+
var s = n(async () => ({ default: e(i(await import("plotly.js"))) }));
|
|
13
|
+
function c(e) {
|
|
14
|
+
return /* @__PURE__ */ r(t, { children: /* @__PURE__ */ r(s, { ...e }) });
|
|
15
|
+
}
|
|
12
16
|
//#endregion
|
|
13
|
-
export { o as Plot, o as default };
|
|
17
|
+
export { o as Plot, o as default, c as PlotFullBundle, i as safeESModule };
|
|
14
18
|
|
|
15
19
|
//# sourceMappingURL=Plot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plot.js","names":[],"sources":["../../../src/components/Plot/Plot.tsx"],"sourcesContent":["import { PlotParams } from 'react-plotly.js'\nimport createPlotlyComponent from './safe-react-plotly-factory'\nimport { lazy, Suspense } from 'react'\n\n// Lazy-load plotly.js since it is very large!\
|
|
1
|
+
{"version":3,"file":"Plot.js","names":[],"sources":["../../../src/components/Plot/Plot.tsx"],"sourcesContent":["import { PlotParams } from 'react-plotly.js'\nimport createPlotlyComponent from './safe-react-plotly-factory'\nimport { lazy, Suspense } from 'react'\n\n// Lazy-load plotly.js since it is very large!\nexport const safeESModule = <T,>(a: T | { default: T }): T => {\n const b = a as any\n return b.__esModule || b[Symbol.toStringTag] === 'Module' ? b.default : b\n}\n\n// Lazy-load plotly.js-basic-dist (scatter, bar, pie, scattergl traces).\nconst LazyLoadedPlot = lazy(async () => {\n const Plotly = await import('plotly.js-basic-dist')\n const plotly = safeESModule(Plotly)\n return { default: createPlotlyComponent(plotly) }\n})\n\n/**\n * Wrapper around react-plotly.js, lazy loads plotly.js-basic-dist.\n * Use this for standard chart types (bar, scatter, pie).\n * @param props\n * @constructor\n */\nexport function Plot(props: PlotParams) {\n return (\n <Suspense>\n <LazyLoadedPlot {...props} />\n </Suspense>\n )\n}\n\n// Lazy-load the full plotly.js bundle which includes all trace types (e.g. Sankey).\nconst LazyLoadedFullBundlePlot = lazy(async () => {\n const Plotly = await import('plotly.js')\n const plotly = safeESModule(Plotly)\n return { default: createPlotlyComponent(plotly) }\n})\n\n/**\n * Wrapper around react-plotly.js, lazy loads the full plotly.js bundle.\n * Use this for trace types not available in plotly.js-basic-dist, such as Sankey.\n * @param props\n * @constructor\n */\nexport function PlotFullBundle(props: PlotParams) {\n return (\n <Suspense>\n <LazyLoadedFullBundlePlot {...props} />\n </Suspense>\n )\n}\n\nexport default Plot\n"],"mappings":";;;;AAKA,IAAa,KAAoB,MAA6B;CAC5D,IAAM,IAAI;CACV,OAAO,EAAE,cAAc,EAAE,OAAO,iBAAiB,WAAW,EAAE,UAAU;AAC1E,GAGM,IAAiB,EAAK,aAGnB,EAAE,SAAS,EADH,EAAa,MADP,OAAO,uBAEY,CAAM,EAAE,EACjD;AAQD,SAAgB,EAAK,GAAmB;CACtC,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAgB,GAAI,EAAQ,CAAA,EACpB,CAAA;AAEd;AAGA,IAAM,IAA2B,EAAK,aAG7B,EAAE,SAAS,EADH,EAAa,MADP,OAAO,YAEY,CAAM,EAAE,EACjD;AAQD,SAAgB,EAAe,GAAmB;CAChD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAA0B,GAAI,EAAQ,CAAA,EAC9B,CAAA;AAEd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotPanelHeader.js","names":[],"sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"sourcesContent":["import {\n FacetColumnResultValues,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { SkeletonInlineBlock } from '../Skeleton/SkeletonInlineBlock'\nimport { EnumFacetFilter } from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilter'\nimport { IconSvgButton } from '../IconSvgButton'\n\nexport type PlotPanelHeaderProps = {\n data?: QueryResultBundle\n isLoading?: boolean\n title: string\n facetToPlot?: FacetColumnResultValues\n onHide: () => void\n setShowModal?: (show: boolean) => void\n}\n\nexport default function PlotPanelHeader(props: PlotPanelHeaderProps) {\n const { data, isLoading, title, facetToPlot, onHide, setShowModal } = props\n return (\n <div className=\"FacetNavPanel__title\">\n {!data && isLoading ? (\n <SkeletonInlineBlock width={100} />\n ) : (\n <span className=\"FacetNavPanel__title__name\">{title}</span>\n )}\n <div role=\"toolbar\" className=\"FacetNavPanel__title__tools\">\n {facetToPlot && (\n <EnumFacetFilter facet={facetToPlot} containerAs=\"Dropdown\" />\n )}\n {setShowModal && (\n <IconSvgButton\n tooltipText=\"Expand to large graph\"\n tooltipPlacement=\"bottom\"\n onClick={() => setShowModal(true)}\n size=\"small\"\n icon=\"openInFull\"\n />\n )}\n <IconSvgButton\n tooltipText=\"Hide graph under Show More\"\n tooltipPlacement=\"bottom\"\n onClick={() => onHide()}\n size=\"small\"\n icon=\"close\"\n />\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAiBA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EAAE,SAAM,cAAW,UAAO,gBAAa,WAAQ,oBAAiB;
|
|
1
|
+
{"version":3,"file":"PlotPanelHeader.js","names":[],"sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"sourcesContent":["import {\n FacetColumnResultValues,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { SkeletonInlineBlock } from '../Skeleton/SkeletonInlineBlock'\nimport { EnumFacetFilter } from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilter'\nimport { IconSvgButton } from '../IconSvgButton'\n\nexport type PlotPanelHeaderProps = {\n data?: QueryResultBundle\n isLoading?: boolean\n title: string\n facetToPlot?: FacetColumnResultValues\n onHide: () => void\n setShowModal?: (show: boolean) => void\n}\n\nexport default function PlotPanelHeader(props: PlotPanelHeaderProps) {\n const { data, isLoading, title, facetToPlot, onHide, setShowModal } = props\n return (\n <div className=\"FacetNavPanel__title\">\n {!data && isLoading ? (\n <SkeletonInlineBlock width={100} />\n ) : (\n <span className=\"FacetNavPanel__title__name\">{title}</span>\n )}\n <div role=\"toolbar\" className=\"FacetNavPanel__title__tools\">\n {facetToPlot && (\n <EnumFacetFilter facet={facetToPlot} containerAs=\"Dropdown\" />\n )}\n {setShowModal && (\n <IconSvgButton\n tooltipText=\"Expand to large graph\"\n tooltipPlacement=\"bottom\"\n onClick={() => setShowModal(true)}\n size=\"small\"\n icon=\"openInFull\"\n />\n )}\n <IconSvgButton\n tooltipText=\"Hide graph under Show More\"\n tooltipPlacement=\"bottom\"\n onClick={() => onHide()}\n size=\"small\"\n icon=\"close\"\n />\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAiBA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EAAE,SAAM,cAAW,UAAO,gBAAa,WAAQ,oBAAiB;CACtE,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,CAAC,KAAQ,IACR,kBAAC,GAAD,EAAqB,OAAO,IAAM,CAAA,IAElC,kBAAC,QAAD;GAAM,WAAU;aAA8B;EAAY,CAAA,GAE5D,kBAAC,OAAD;GAAK,MAAK;GAAU,WAAU;aAA9B;IACG,KACC,kBAAC,GAAD;KAAiB,OAAO;KAAa,aAAY;IAAY,CAAA;IAE9D,KACC,kBAAC,GAAD;KACE,aAAY;KACZ,kBAAiB;KACjB,eAAe,EAAa,EAAI;KAChC,MAAK;KACL,MAAK;IACN,CAAA;IAEH,kBAAC,GAAD;KACE,aAAY;KACZ,kBAAiB;KACjB,eAAe,EAAO;KACtB,MAAK;KACL,MAAK;IACN,CAAA;GACE;IACF;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapsePlot.js","names":[],"sources":["../../../src/components/Plot/SynapsePlot.tsx"],"sourcesContent":["import React from 'react'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Skeleton } from '@mui/material'\nimport {\n FacetColumnRequest,\n QueryBundleRequest,\n QueryFilter,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport Plotly, { AxisType, PlotType } from 'plotly.js-basic-dist'\nimport { QueryContextType } from '../QueryContext'\nimport { QueryWrapperSynapsePlotRowClickEvent } from '../QueryWrapperPlotNav/QueryWrapperSynapsePlot'\nimport Plot from './Plot'\nimport './SynapsePlot.scss'\n\nexport type SynapsePlotWidgetParams = {\n query: string //sql string\n title?: string //plot title\n xtitle?: Plotly.LayoutAxis['title'] // x-axis title\n ytitle?: Plotly.LayoutAxis['title'] // y-axis title\n type: PlotType\n xaxistype?: AxisType\n showlegend?: Plotly.Layout['showlegend'] // sets the legend visibility\n horizontal?: boolean // sets the if a bar chart should be horizontal or vertical\n barmode?: Plotly.Layout['barmode'] // Plotly barmode\n displayModeBar?: Plotly.Config['displayModeBar'] // sets the modebar visibility\n hoverinfo?: Plotly.PlotData['hoverinfo'] // sets the hover info\n}\n\n// QueryWrapperPlotNav customPlot parameters, undefined otherwise\nexport type QueryWrapperPlotNavCustomPlotParams = {\n selectedFacets: FacetColumnRequest[]\n additionalFilters: QueryFilter[]\n onCustomPlotClick?: (event: QueryWrapperSynapsePlotRowClickEvent) => void\n queryContext?: QueryContextType\n}\nexport type SynapsePlotProps = {\n synapsePlotWidgetParams: SynapsePlotWidgetParams\n customPlotParams?: QueryWrapperPlotNavCustomPlotParams\n}\n\nexport const SynapsePlot = (props: SynapsePlotProps): React.ReactNode => {\n const { query } = props.synapsePlotWidgetParams\n const { selectedFacets, additionalFilters, onCustomPlotClick, queryContext } =\n props.customPlotParams ?? {}\n const queryRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n entityId: parseEntityIdFromSqlStatement(query),\n query: {\n sql: query,\n selectedFacets,\n additionalFilters,\n },\n }\n const { data: queryData, isLoading } =\n useGetFullTableQueryResults(queryRequest)\n if (isLoading) {\n return <Skeleton width={'100%'} height={'200px'} />\n }\n if (!queryData) {\n return <></>\n }\n\n const {\n title,\n xtitle,\n ytitle,\n type,\n xaxistype,\n showlegend,\n barmode,\n horizontal,\n displayModeBar,\n hoverinfo,\n } = props.synapsePlotWidgetParams\n\n const config: Partial<Plotly.Config> = {\n displayModeBar,\n }\n const layout: Partial<Plotly.Layout> = {\n showlegend: showlegend,\n title,\n barmode: barmode,\n }\n if (xtitle) {\n layout.xaxis = {\n title: xtitle,\n }\n }\n if (xaxistype) {\n layout.xaxis = {\n ...layout.xaxis,\n type: xaxistype,\n }\n }\n if (ytitle) {\n layout.yaxis = {\n title: ytitle,\n }\n }\n // init plot_data\n const plotData: Partial<Plotly.PlotData>[] = []\n const orientation = horizontal ? 'h' : 'v'\n const headers = queryData.queryResult?.queryResults.headers ?? []\n const rows = queryData.queryResult?.queryResults.rows ?? []\n if (headers.length == 0 || rows.length == 0) {\n return <></>\n }\n for (let i = 0; i < headers.length - 1; i += 1) {\n // make an entry for each set of data points\n plotData[i] = {\n orientation,\n name: headers[i + 1].name,\n type: type,\n x: [],\n y: [],\n customdata: [],\n ...(hoverinfo !== undefined && { hoverinfo }),\n }\n }\n // grab all the data\n for (const row of rows) {\n for (let j = 1; j < row.values.length; j += 1) {\n // create pairs of data\n const rowValues = row.values\n const xArray = plotData[j - 1].x as Plotly.Datum[]\n const yArray = plotData[j - 1].y as Plotly.Datum[]\n const customdata = plotData[j - 1].customdata as Plotly.Datum[]\n\n xArray.push(horizontal ? rowValues[j] : rowValues[0])\n yArray.push(horizontal ? rowValues[0] : rowValues[j])\n customdata.push(JSON.stringify(row))\n }\n }\n let onPlotClick:\n | ((event: Readonly<Plotly.PlotMouseEvent>) => void)\n | undefined\n if (onCustomPlotClick) {\n onPlotClick = eventData => {\n const selectedRow = JSON.parse(\n eventData.points[0].customdata as string,\n ) as Row\n onCustomPlotClick({\n row: selectedRow,\n queryContext,\n })\n }\n }\n\n return (\n <Plot\n style={{ width: '100%', height: '450px' }}\n className={onPlotClick ? 'SynapsePlot--clickable' : undefined}\n layout={layout}\n data={plotData}\n config={config}\n onClick={onPlotClick}\n />\n )\n}\n\nexport default SynapsePlot\n"],"mappings":";;;;;;;;;;;AA2CA,IAAa,KAAe,MAA6C;CACvE,IAAM,EAAE,aAAU,EAAM,yBAClB,EAAE,mBAAgB,sBAAmB,sBAAmB,oBAC5D,EAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SynapsePlot.js","names":[],"sources":["../../../src/components/Plot/SynapsePlot.tsx"],"sourcesContent":["import React from 'react'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions/SqlFunctions'\nimport { Skeleton } from '@mui/material'\nimport {\n FacetColumnRequest,\n QueryBundleRequest,\n QueryFilter,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport Plotly, { AxisType, PlotType } from 'plotly.js-basic-dist'\nimport { QueryContextType } from '../QueryContext'\nimport { QueryWrapperSynapsePlotRowClickEvent } from '../QueryWrapperPlotNav/QueryWrapperSynapsePlot'\nimport Plot from './Plot'\nimport './SynapsePlot.scss'\n\nexport type SynapsePlotWidgetParams = {\n query: string //sql string\n title?: string //plot title\n xtitle?: Plotly.LayoutAxis['title'] // x-axis title\n ytitle?: Plotly.LayoutAxis['title'] // y-axis title\n type: PlotType\n xaxistype?: AxisType\n showlegend?: Plotly.Layout['showlegend'] // sets the legend visibility\n horizontal?: boolean // sets the if a bar chart should be horizontal or vertical\n barmode?: Plotly.Layout['barmode'] // Plotly barmode\n displayModeBar?: Plotly.Config['displayModeBar'] // sets the modebar visibility\n hoverinfo?: Plotly.PlotData['hoverinfo'] // sets the hover info\n}\n\n// QueryWrapperPlotNav customPlot parameters, undefined otherwise\nexport type QueryWrapperPlotNavCustomPlotParams = {\n selectedFacets: FacetColumnRequest[]\n additionalFilters: QueryFilter[]\n onCustomPlotClick?: (event: QueryWrapperSynapsePlotRowClickEvent) => void\n queryContext?: QueryContextType\n}\nexport type SynapsePlotProps = {\n synapsePlotWidgetParams: SynapsePlotWidgetParams\n customPlotParams?: QueryWrapperPlotNavCustomPlotParams\n}\n\nexport const SynapsePlot = (props: SynapsePlotProps): React.ReactNode => {\n const { query } = props.synapsePlotWidgetParams\n const { selectedFacets, additionalFilters, onCustomPlotClick, queryContext } =\n props.customPlotParams ?? {}\n const queryRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n entityId: parseEntityIdFromSqlStatement(query),\n query: {\n sql: query,\n selectedFacets,\n additionalFilters,\n },\n }\n const { data: queryData, isLoading } =\n useGetFullTableQueryResults(queryRequest)\n if (isLoading) {\n return <Skeleton width={'100%'} height={'200px'} />\n }\n if (!queryData) {\n return <></>\n }\n\n const {\n title,\n xtitle,\n ytitle,\n type,\n xaxistype,\n showlegend,\n barmode,\n horizontal,\n displayModeBar,\n hoverinfo,\n } = props.synapsePlotWidgetParams\n\n const config: Partial<Plotly.Config> = {\n displayModeBar,\n }\n const layout: Partial<Plotly.Layout> = {\n showlegend: showlegend,\n title,\n barmode: barmode,\n }\n if (xtitle) {\n layout.xaxis = {\n title: xtitle,\n }\n }\n if (xaxistype) {\n layout.xaxis = {\n ...layout.xaxis,\n type: xaxistype,\n }\n }\n if (ytitle) {\n layout.yaxis = {\n title: ytitle,\n }\n }\n // init plot_data\n const plotData: Partial<Plotly.PlotData>[] = []\n const orientation = horizontal ? 'h' : 'v'\n const headers = queryData.queryResult?.queryResults.headers ?? []\n const rows = queryData.queryResult?.queryResults.rows ?? []\n if (headers.length == 0 || rows.length == 0) {\n return <></>\n }\n for (let i = 0; i < headers.length - 1; i += 1) {\n // make an entry for each set of data points\n plotData[i] = {\n orientation,\n name: headers[i + 1].name,\n type: type,\n x: [],\n y: [],\n customdata: [],\n ...(hoverinfo !== undefined && { hoverinfo }),\n }\n }\n // grab all the data\n for (const row of rows) {\n for (let j = 1; j < row.values.length; j += 1) {\n // create pairs of data\n const rowValues = row.values\n const xArray = plotData[j - 1].x as Plotly.Datum[]\n const yArray = plotData[j - 1].y as Plotly.Datum[]\n const customdata = plotData[j - 1].customdata as Plotly.Datum[]\n\n xArray.push(horizontal ? rowValues[j] : rowValues[0])\n yArray.push(horizontal ? rowValues[0] : rowValues[j])\n customdata.push(JSON.stringify(row))\n }\n }\n let onPlotClick:\n | ((event: Readonly<Plotly.PlotMouseEvent>) => void)\n | undefined\n if (onCustomPlotClick) {\n onPlotClick = eventData => {\n const selectedRow = JSON.parse(\n eventData.points[0].customdata as string,\n ) as Row\n onCustomPlotClick({\n row: selectedRow,\n queryContext,\n })\n }\n }\n\n return (\n <Plot\n style={{ width: '100%', height: '450px' }}\n className={onPlotClick ? 'SynapsePlot--clickable' : undefined}\n layout={layout}\n data={plotData}\n config={config}\n onClick={onPlotClick}\n />\n )\n}\n\nexport default SynapsePlot\n"],"mappings":";;;;;;;;;;;AA2CA,IAAa,KAAe,MAA6C;CACvE,IAAM,EAAE,aAAU,EAAM,yBAClB,EAAE,mBAAgB,sBAAmB,sBAAmB,oBAC5D,EAAM,oBAAoB,CAAC,GAWvB,EAAE,MAAM,GAAW,iBACvB,EAA4B;EAV5B,cAAc;EACd,UAAU;EACV,UAAU,EAA8B,CAAK;EAC7C,OAAO;GACL,KAAK;GACL;GACA;EACF;CAG4B,CAAY;CAC1C,IAAI,GACF,OAAO,kBAAC,GAAD;EAAU,OAAO;EAAQ,QAAQ;CAAU,CAAA;CAEpD,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;CAGb,IAAM,EACJ,UACA,WACA,WACA,SACA,cACA,eACA,YACA,eACA,mBACA,iBACE,EAAM,yBAEJ,IAAiC,EACrC,kBACF,GACM,IAAiC;EACzB;EACZ;EACS;CACX;CAYA,AAXI,MACF,EAAO,QAAQ,EACb,OAAO,EACT,IAEE,MACF,EAAO,QAAQ;EACb,GAAG,EAAO;EACV,MAAM;CACR,IAEE,MACF,EAAO,QAAQ,EACb,OAAO,EACT;CAGF,IAAM,IAAuC,CAAC,GACxC,IAAc,IAAa,MAAM,KACjC,IAAU,EAAU,aAAa,aAAa,WAAW,CAAC,GAC1D,IAAO,EAAU,aAAa,aAAa,QAAQ,CAAC;CAC1D,IAAI,EAAQ,UAAU,KAAK,EAAK,UAAU,GACxC,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,KAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,SAAS,GAAG,KAAK,GAE3C,EAAS,KAAK;EACZ;EACA,MAAM,EAAQ,IAAI,GAAG;EACf;EACN,GAAG,CAAC;EACJ,GAAG,CAAC;EACJ,YAAY,CAAC;EACb,GAAI,MAAc,KAAA,KAAa,EAAE,aAAU;CAC7C;CAGF,KAAK,IAAM,KAAO,GAChB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAI,OAAO,QAAQ,KAAK,GAAG;EAE7C,IAAM,IAAY,EAAI,QAChB,IAAS,EAAS,IAAI,GAAG,GACzB,IAAS,EAAS,IAAI,GAAG,GACzB,IAAa,EAAS,IAAI,GAAG;EAInC,AAFA,EAAO,KAAK,IAAa,EAAU,KAAK,EAAU,EAAE,GACpD,EAAO,KAAK,IAAa,EAAU,KAAK,EAAU,EAAE,GACpD,EAAW,KAAK,KAAK,UAAU,CAAG,CAAC;CACrC;CAEF,IAAI;CAeJ,OAZI,MACF,KAAc,MAAa;EAIzB,EAAkB;GAChB,KAJkB,KAAK,MACvB,EAAU,OAAO,GAAG,UAGf;GACL;EACF,CAAC;CACH,IAIA,kBAAC,GAAD;EACE,OAAO;GAAE,OAAO;GAAQ,QAAQ;EAAQ;EACxC,WAAW,IAAc,2BAA2B,KAAA;EAC5C;EACR,MAAM;EACE;EACR,SAAS;CACV,CAAA;AAEL"}
|