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":"StatisticsPlot.js","names":[],"sources":["../../src/components/StatisticsPlot.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseContext } from '@/utils/context/SynapseContext'\nimport {\n FilesCountStatistics,\n ProjectFilesStatisticsRequest,\n ProjectFilesStatisticsResponse,\n} from '@sage-bionetworks/synapse-types'\nimport { Component, ContextType } from 'react'\nimport Plot from './Plot/Plot'\n\nconst months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n]\n\nexport type StatisticsPlotProps = {\n request: ProjectFilesStatisticsRequest\n title?: string\n xtitle?: string\n ytitle?: string\n isHorizontal?: boolean\n xaxistype?: string\n showlegend?: boolean\n}\n\ntype StatisticsPlotState = {\n isLoaded: boolean\n plotData?: ProjectFilesStatisticsResponse\n}\n\nclass StatisticsPlot extends Component<\n StatisticsPlotProps,\n StatisticsPlotState\n> {\n static contextType = SynapseContext\n declare context: NonNullable<ContextType<typeof SynapseContext>>\n constructor(props: StatisticsPlotProps) {\n super(props)\n this.state = {\n isLoaded: false,\n plotData: {} as ProjectFilesStatisticsResponse,\n }\n }\n\n public componentDidMount() {\n this.fetchPlotlyData()\n }\n /**\n * Get data for plotly\n *\n * @returns data corresponding to plotly widget\n */\n fetchPlotlyData = async () => {\n const { request } = this.props\n return SynapseClient.getProjectStatistics(request, this.context.accessToken)\n .then((data: ProjectFilesStatisticsResponse) => {\n this.setState({\n isLoaded: true,\n plotData: data,\n })\n })\n .catch((err: any) => {\n console.log('Error on call to get statistics ', err)\n })\n }\n\n getTrace = (\n traceName: string,\n stats: FilesCountStatistics[],\n orientation: string,\n markerColor: string,\n ) => {\n const x: string[] = []\n const y: number[] = []\n const trace = {\n orientation,\n x,\n y,\n name: traceName,\n type: 'bar',\n marker: { color: markerColor },\n hovertemplate:\n // see S3 Formatting options: https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md#d3_format\n `%{y:n} <br><extra>${traceName}</extra>`,\n }\n for (const statPoint of stats) {\n const statPointDate: Date = new Date(statPoint.rangeStart)\n trace.x.push(\n `${\n months[statPointDate.getUTCMonth()]\n } ${statPointDate.getUTCFullYear()}`,\n )\n trace.y.push(statPoint.filesCount)\n }\n return trace\n }\n\n showPlot = () => {\n if (!this.state.isLoaded || !this.state.plotData) {\n return\n }\n const { title, xtitle, ytitle, isHorizontal, xaxistype, showlegend } =\n this.props\n const plotData = this.state.plotData\n const layout: any = {\n showlegend,\n title,\n barmode: 'stack',\n hovermode: 'x',\n }\n const config: any = {\n displayModeBar: true,\n displaylogo: false,\n // options found here: https://github.com/plotly/plotly.js/blob/master/src/components/modebar/buttons.js\n modeBarButtonsToRemove: [\n 'sendDataToCloud',\n 'hoverCompareCartesian',\n 'select2d',\n 'lasso2d',\n 'zoom2d',\n 'resetScale2d',\n 'hoverClosestCartesian',\n 'toggleSpikelines',\n ],\n }\n if (xtitle) {\n layout.xaxis = {\n title: xtitle,\n }\n }\n if (xaxistype) {\n layout.xaxis = {\n ...layout.xaxis,\n xaxistype: xaxistype.toLowerCase(),\n }\n }\n\n if (ytitle) {\n layout.yaxis = {\n title: ytitle,\n }\n }\n // init plot_data\n const orientation: string = isHorizontal ? 'h' : 'v'\n const traces: any = []\n if (\n plotData.fileDownloads &&\n plotData.fileDownloads.months &&\n plotData.fileDownloads.months.length > 0\n ) {\n // add file downloads trace\n traces.push(\n this.getTrace(\n 'File Downloads',\n plotData.fileDownloads.months,\n orientation,\n '#7CC0C4',\n ),\n )\n }\n if (\n plotData.fileUploads &&\n plotData.fileUploads.months &&\n plotData.fileUploads.months.length > 0\n ) {\n // add file uploads trace\n traces.push(\n this.getTrace(\n 'File Uploads',\n plotData.fileUploads.months,\n orientation,\n '#D4689A',\n ),\n )\n }\n if (traces.length > 0)\n return (\n <Plot\n layout={layout}\n data={traces}\n config={config}\n className=\"SRC-fullWidth\"\n useResizeHandler={true}\n />\n )\n else return <></>\n }\n\n public render() {\n if (!this.state.isLoaded) {\n return null\n }\n return this.showPlot()\n }\n}\nexport default StatisticsPlot\n"],"mappings":";;;;;;AAUA,IAAM,IAAS;CACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;
|
|
1
|
+
{"version":3,"file":"StatisticsPlot.js","names":[],"sources":["../../src/components/StatisticsPlot.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseContext } from '@/utils/context/SynapseContext'\nimport {\n FilesCountStatistics,\n ProjectFilesStatisticsRequest,\n ProjectFilesStatisticsResponse,\n} from '@sage-bionetworks/synapse-types'\nimport { Component, ContextType } from 'react'\nimport Plot from './Plot/Plot'\n\nconst months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n]\n\nexport type StatisticsPlotProps = {\n request: ProjectFilesStatisticsRequest\n title?: string\n xtitle?: string\n ytitle?: string\n isHorizontal?: boolean\n xaxistype?: string\n showlegend?: boolean\n}\n\ntype StatisticsPlotState = {\n isLoaded: boolean\n plotData?: ProjectFilesStatisticsResponse\n}\n\nclass StatisticsPlot extends Component<\n StatisticsPlotProps,\n StatisticsPlotState\n> {\n static contextType = SynapseContext\n declare context: NonNullable<ContextType<typeof SynapseContext>>\n constructor(props: StatisticsPlotProps) {\n super(props)\n this.state = {\n isLoaded: false,\n plotData: {} as ProjectFilesStatisticsResponse,\n }\n }\n\n public componentDidMount() {\n this.fetchPlotlyData()\n }\n /**\n * Get data for plotly\n *\n * @returns data corresponding to plotly widget\n */\n fetchPlotlyData = async () => {\n const { request } = this.props\n return SynapseClient.getProjectStatistics(request, this.context.accessToken)\n .then((data: ProjectFilesStatisticsResponse) => {\n this.setState({\n isLoaded: true,\n plotData: data,\n })\n })\n .catch((err: any) => {\n console.log('Error on call to get statistics ', err)\n })\n }\n\n getTrace = (\n traceName: string,\n stats: FilesCountStatistics[],\n orientation: string,\n markerColor: string,\n ) => {\n const x: string[] = []\n const y: number[] = []\n const trace = {\n orientation,\n x,\n y,\n name: traceName,\n type: 'bar',\n marker: { color: markerColor },\n hovertemplate:\n // see S3 Formatting options: https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md#d3_format\n `%{y:n} <br><extra>${traceName}</extra>`,\n }\n for (const statPoint of stats) {\n const statPointDate: Date = new Date(statPoint.rangeStart)\n trace.x.push(\n `${\n months[statPointDate.getUTCMonth()]\n } ${statPointDate.getUTCFullYear()}`,\n )\n trace.y.push(statPoint.filesCount)\n }\n return trace\n }\n\n showPlot = () => {\n if (!this.state.isLoaded || !this.state.plotData) {\n return\n }\n const { title, xtitle, ytitle, isHorizontal, xaxistype, showlegend } =\n this.props\n const plotData = this.state.plotData\n const layout: any = {\n showlegend,\n title,\n barmode: 'stack',\n hovermode: 'x',\n }\n const config: any = {\n displayModeBar: true,\n displaylogo: false,\n // options found here: https://github.com/plotly/plotly.js/blob/master/src/components/modebar/buttons.js\n modeBarButtonsToRemove: [\n 'sendDataToCloud',\n 'hoverCompareCartesian',\n 'select2d',\n 'lasso2d',\n 'zoom2d',\n 'resetScale2d',\n 'hoverClosestCartesian',\n 'toggleSpikelines',\n ],\n }\n if (xtitle) {\n layout.xaxis = {\n title: xtitle,\n }\n }\n if (xaxistype) {\n layout.xaxis = {\n ...layout.xaxis,\n xaxistype: xaxistype.toLowerCase(),\n }\n }\n\n if (ytitle) {\n layout.yaxis = {\n title: ytitle,\n }\n }\n // init plot_data\n const orientation: string = isHorizontal ? 'h' : 'v'\n const traces: any = []\n if (\n plotData.fileDownloads &&\n plotData.fileDownloads.months &&\n plotData.fileDownloads.months.length > 0\n ) {\n // add file downloads trace\n traces.push(\n this.getTrace(\n 'File Downloads',\n plotData.fileDownloads.months,\n orientation,\n '#7CC0C4',\n ),\n )\n }\n if (\n plotData.fileUploads &&\n plotData.fileUploads.months &&\n plotData.fileUploads.months.length > 0\n ) {\n // add file uploads trace\n traces.push(\n this.getTrace(\n 'File Uploads',\n plotData.fileUploads.months,\n orientation,\n '#D4689A',\n ),\n )\n }\n if (traces.length > 0)\n return (\n <Plot\n layout={layout}\n data={traces}\n config={config}\n className=\"SRC-fullWidth\"\n useResizeHandler={true}\n />\n )\n else return <></>\n }\n\n public render() {\n if (!this.state.isLoaded) {\n return null\n }\n return this.showPlot()\n }\n}\nexport default StatisticsPlot\n"],"mappings":";;;;;;AAUA,IAAM,IAAS;CACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAiBM,IAAN,cAA6B,EAG3B;CACA,OAAO,cAAc;CAErB,YAAY,GAA4B;EAEtC,AADA,MAAM,CAAK,GACX,KAAK,QAAQ;GACX,UAAU;GACV,UAAU,CAAC;EACb;CACF;CAEA,oBAA2B;EACzB,KAAK,gBAAgB;CACvB;CAMA,kBAAkB,YAAY;EAC5B,IAAM,EAAE,eAAY,KAAK;EACzB,OAAO,EAAc,qBAAqB,GAAS,KAAK,QAAQ,WAAW,EACxE,MAAM,MAAyC;GAC9C,KAAK,SAAS;IACZ,UAAU;IACV,UAAU;GACZ,CAAC;EACH,CAAC,EACA,OAAO,MAAa;GACnB,QAAQ,IAAI,oCAAoC,CAAG;EACrD,CAAC;CACL;CAEA,YACE,GACA,GACA,GACA,MACG;EAGH,IAAM,IAAQ;GACZ;GACA,GAAA,CAAA;GACA,GAAA,CAAA;GACA,MAAM;GACN,MAAM;GACN,QAAQ,EAAE,OAAO,EAAY;GAC7B,eAEE,qBAAqB,EAAU;EACnC;EACA,KAAK,IAAM,KAAa,GAAO;GAC7B,IAAM,IAAsB,IAAI,KAAK,EAAU,UAAU;GAMzD,AALA,EAAM,EAAE,KACN,GACE,EAAO,EAAc,YAAY,GAClC,GAAG,EAAc,eAAe,GACnC,GACA,EAAM,EAAE,KAAK,EAAU,UAAU;EACnC;EACA,OAAO;CACT;CAEA,iBAAiB;EACf,IAAI,CAAC,KAAK,MAAM,YAAY,CAAC,KAAK,MAAM,UACtC;EAEF,IAAM,EAAE,UAAO,WAAQ,WAAQ,iBAAc,cAAW,kBACtD,KAAK,OACD,IAAW,KAAK,MAAM,UACtB,IAAc;GAClB;GACA;GACA,SAAS;GACT,WAAW;EACb,GACM,IAAc;GAClB,gBAAgB;GAChB,aAAa;GAEb,wBAAwB;IACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EAaA,AAZI,MACF,EAAO,QAAQ,EACb,OAAO,EACT,IAEE,MACF,EAAO,QAAQ;GACb,GAAG,EAAO;GACV,WAAW,EAAU,YAAY;EACnC,IAGE,MACF,EAAO,QAAQ,EACb,OAAO,EACT;EAGF,IAAM,IAAsB,IAAe,MAAM,KAC3C,IAAc,CAAC;EAyChB,OAvCH,EAAS,iBACT,EAAS,cAAc,UACvB,EAAS,cAAc,OAAO,SAAS,KAGvC,EAAO,KACL,KAAK,SACH,kBACA,EAAS,cAAc,QACvB,GACA,SACF,CACF,GAGA,EAAS,eACT,EAAS,YAAY,UACrB,EAAS,YAAY,OAAO,SAAS,KAGrC,EAAO,KACL,KAAK,SACH,gBACA,EAAS,YAAY,QACrB,GACA,SACF,CACF,GAEE,EAAO,SAAS,IAEhB,kBAAC,GAAD;GACU;GACR,MAAM;GACE;GACR,WAAU;GACV,kBAAkB;EACnB,CAAA,IAEO,kBAAA,GAAA,CAAI,CAAA;CAClB;CAEA,SAAgB;EAId,OAHK,KAAK,MAAM,WAGT,KAAK,SAAS,IAFZ;CAGX;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperDialog.js","names":[],"sources":["../../../src/components/StepperDialog/StepperDialog.tsx"],"sourcesContent":["import { Alert, Button, Box } from '@mui/material'\nimport { ReactNode } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\nimport { DialogContentProps } from '@mui/material'\n\nexport type Step<TStepId = string> = {\n id: TStepId\n title: string\n cancelButtonText?: string\n onConfirm?: () => void\n confirmStep?: string\n confirmEnabled?: boolean\n confirmButtonText?: string\n previousStep?: string\n nextStep?: string\n nextEnabled?: boolean\n contentProps?: DialogContentProps\n}\n\nexport type Steps = Step[]\n\nexport type StepperDialogProps = {\n errorMessage: string | undefined\n onCancel: () => void\n onConfirm: () => void\n confirming?: boolean\n onStepChange: (arg: string) => void\n open: boolean\n step: Step\n content: ReactNode\n loading: boolean\n}\n\n/**\n * A stepper dialog built using MUI components.\n */\nfunction StepperDialog({\n errorMessage,\n onCancel,\n onConfirm,\n confirming,\n onStepChange,\n open,\n step,\n content,\n loading,\n}: StepperDialogProps) {\n if (!step) return null\n\n const dialogContent = (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n }}\n >\n <>\n {loading ? <SynapseSpinner size={40} /> : content}\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n </>\n </Box>\n )\n\n return (\n <DialogBase\n actions={\n <>\n {step?.cancelButtonText && (\n <Button variant=\"outlined\" onClick={() => onCancel()}>\n {step.cancelButtonText}\n </Button>\n )}\n {step?.previousStep && (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() =>\n step.previousStep ? onStepChange(step.previousStep) : null\n }\n >\n Back\n </Button>\n )}\n {step?.nextStep && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n disabled={!step.nextEnabled}\n onClick={() =>\n step.nextStep ? onStepChange(step.nextStep) : null\n }\n >\n Next\n </Button>\n )}\n {onConfirm && step?.confirmButtonText && (\n <SpinnerButton\n variant=\"contained\"\n color=\"primary\"\n disabled={!step.confirmEnabled}\n onClick={() => {\n onConfirm()\n }}\n showSpinner={confirming === true}\n sx={{ marginLeft: '8px' }}\n >\n {step.confirmButtonText}\n </SpinnerButton>\n )}\n </>\n }\n content={dialogContent}\n onCancel={onCancel}\n open={open}\n title={step.title}\n sx={{\n h2: { paddingTop: 0, paddingBottom: '20px' },\n }}\n contentProps={step.contentProps}\n />\n )\n}\n\nexport default StepperDialog\n"],"mappings":";;;;;;AAsCA,SAAS,EAAc,EACrB,iBACA,aACA,cACA,eACA,iBACA,SACA,SACA,YACA,cACqB;
|
|
1
|
+
{"version":3,"file":"StepperDialog.js","names":[],"sources":["../../../src/components/StepperDialog/StepperDialog.tsx"],"sourcesContent":["import { Alert, Button, Box } from '@mui/material'\nimport { ReactNode } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\nimport { DialogContentProps } from '@mui/material'\n\nexport type Step<TStepId = string> = {\n id: TStepId\n title: string\n cancelButtonText?: string\n onConfirm?: () => void\n confirmStep?: string\n confirmEnabled?: boolean\n confirmButtonText?: string\n previousStep?: string\n nextStep?: string\n nextEnabled?: boolean\n contentProps?: DialogContentProps\n}\n\nexport type Steps = Step[]\n\nexport type StepperDialogProps = {\n errorMessage: string | undefined\n onCancel: () => void\n onConfirm: () => void\n confirming?: boolean\n onStepChange: (arg: string) => void\n open: boolean\n step: Step\n content: ReactNode\n loading: boolean\n}\n\n/**\n * A stepper dialog built using MUI components.\n */\nfunction StepperDialog({\n errorMessage,\n onCancel,\n onConfirm,\n confirming,\n onStepChange,\n open,\n step,\n content,\n loading,\n}: StepperDialogProps) {\n if (!step) return null\n\n const dialogContent = (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n }}\n >\n <>\n {loading ? <SynapseSpinner size={40} /> : content}\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n </>\n </Box>\n )\n\n return (\n <DialogBase\n actions={\n <>\n {step?.cancelButtonText && (\n <Button variant=\"outlined\" onClick={() => onCancel()}>\n {step.cancelButtonText}\n </Button>\n )}\n {step?.previousStep && (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() =>\n step.previousStep ? onStepChange(step.previousStep) : null\n }\n >\n Back\n </Button>\n )}\n {step?.nextStep && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n disabled={!step.nextEnabled}\n onClick={() =>\n step.nextStep ? onStepChange(step.nextStep) : null\n }\n >\n Next\n </Button>\n )}\n {onConfirm && step?.confirmButtonText && (\n <SpinnerButton\n variant=\"contained\"\n color=\"primary\"\n disabled={!step.confirmEnabled}\n onClick={() => {\n onConfirm()\n }}\n showSpinner={confirming === true}\n sx={{ marginLeft: '8px' }}\n >\n {step.confirmButtonText}\n </SpinnerButton>\n )}\n </>\n }\n content={dialogContent}\n onCancel={onCancel}\n open={open}\n title={step.title}\n sx={{\n h2: { paddingTop: 0, paddingBottom: '20px' },\n }}\n contentProps={step.contentProps}\n />\n )\n}\n\nexport default StepperDialog\n"],"mappings":";;;;;;AAsCA,SAAS,EAAc,EACrB,iBACA,aACA,cACA,eACA,iBACA,SACA,SACA,YACA,cACqB;CACrB,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IACJ,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe;GACf,KAAK;EACP;YAEA,kBAAA,GAAA,EAAA,UAAA,CACG,IAAU,kBAAC,GAAD,EAAgB,MAAM,GAAK,CAAA,IAAI,GACzC,KAAgB,kBAAC,GAAD;GAAO,UAAS;aAAS;EAAoB,CAAA,CAC9D,EAAA,CAAA;CACC,CAAA;CAGP,OACE,kBAAC,GAAD;EACE,SACE,kBAAA,GAAA,EAAA,UAAA;GACG,GAAM,oBACL,kBAAC,GAAD;IAAQ,SAAQ;IAAW,eAAe,EAAS;cAChD,EAAK;GACA,CAAA;GAET,GAAM,gBACL,kBAAC,GAAD;IACE,SAAQ;IACR,OAAM;IACN,eACE,EAAK,eAAe,EAAa,EAAK,YAAY,IAAI;cAEzD;GAEO,CAAA;GAET,GAAM,YACL,kBAAC,GAAD;IACE,SAAQ;IACR,OAAM;IACN,UAAU,CAAC,EAAK;IAChB,eACE,EAAK,WAAW,EAAa,EAAK,QAAQ,IAAI;cAEjD;GAEO,CAAA;GAET,KAAa,GAAM,qBAClB,kBAAC,GAAD;IACE,SAAQ;IACR,OAAM;IACN,UAAU,CAAC,EAAK;IAChB,eAAe;KACb,EAAU;IACZ;IACA,aAAa,MAAe;IAC5B,IAAI,EAAE,YAAY,MAAM;cAEvB,EAAK;GACO,CAAA;EAEjB,EAAA,CAAA;EAEJ,SAAS;EACC;EACJ;EACN,OAAO,EAAK;EACZ,IAAI,EACF,IAAI;GAAE,YAAY;GAAG,eAAe;EAAO,EAC7C;EACA,cAAc,EAAK;CACpB,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorybookComponentWrapper.js","names":[],"sources":["../../src/components/StorybookComponentWrapper.tsx"],"sourcesContent":["import { StandaloneLoginForm } from '@/components/Authentication/index'\nimport SynapseClient from '@/synapse-client'\nimport {\n defaultQueryClientConfig,\n SynapseContextProvider,\n SynapseContextType,\n} from '@/utils'\nimport { ApplicationSessionContextProvider } from '@/utils/AppUtils/session/ApplicationSessionContext'\nimport {\n SynapseSessionManager,\n type SessionState,\n} from '@/utils/AppUtils/session/SynapseSessionManager'\nimport { STACK_MAP, SynapseStack } from '@/utils/functions/getEndpoint'\nimport useDetectSSOCode from '@/utils/hooks/useDetectSSOCode'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport {\n ReactNode,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from 'react'\nimport { createMemoryRouter } from 'react-router'\nimport { RouterProvider } from 'react-router/dom'\nimport { SynapseToastContainer } from './ToastMessage'\n\nconst storybookQueryClient = new QueryClient(defaultQueryClientConfig)\n\n// Module-level session manager instance, stable across story switches (like the QueryClient above)\nconst sessionManager = new SynapseSessionManager({\n onSessionInvalid: () => {\n // In Storybook, just refresh the session instead of reloading the page\n sessionManager.refreshSession()\n },\n})\n\nfunction overrideEndpoint(stack: SynapseStack) {\n const endpointConfig = STACK_MAP[stack]\n ;(window as any)['SRC_OVERRIDE_ENDPOINT_CONFIG'] = endpointConfig\n}\n\n/**\n * Wraps storybook story components to ensure that all components receive required context.\n * @param props\n * @returns\n */\nexport function StorybookComponentWrapper(props: {\n children: ReactNode\n /* This will match the `globalTypes` object in preview.tsx. */\n storybookContext: {\n args: {\n isAuthenticated?: boolean\n }\n globals: {\n stack?: SynapseStack\n showReactQueryDevtools?: boolean\n }\n parameters: {\n stack?: SynapseStack\n withRouter?: boolean\n requireLogin?: boolean\n }\n }\n}) {\n const { storybookContext } = props\n\n const currentStack: SynapseStack = (storybookContext.globals.stack ||\n storybookContext.parameters.stack) as SynapseStack\n\n useEffect(() => {\n overrideEndpoint(currentStack)\n }, [currentStack])\n\n // Subscribe to the framework-agnostic SynapseSessionManager for token/auth state\n // These methods are bound in the SynapseSessionManager constructor, so they are safe to pass directly.\n const sessionState: SessionState = useSyncExternalStore(\n // eslint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.subscribe,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.getSnapshot,\n )\n\n // Track whether we've started the manager so we only start once (module-level instance persists across renders)\n const managerStartedRef = useRef(false)\n\n useEffect(() => {\n if (!managerStartedRef.current) {\n sessionManager.start()\n managerStartedRef.current = true\n }\n return () => {\n sessionManager.dispose()\n managerStartedRef.current = false\n }\n }, [])\n\n // When the stack changes, restart the session manager to pick up the new endpoint\n useEffect(() => {\n if (managerStartedRef.current) {\n sessionManager.dispose()\n sessionManager.start()\n }\n }, [currentStack])\n\n const shouldPromptForLogin =\n storybookContext.parameters.requireLogin &&\n currentStack !== 'mock' &&\n sessionState.hasInitializedSession &&\n !sessionState.isAuthenticated\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n void sessionManager.refreshSession()\n },\n onError: (err: unknown) => {\n console.error('SSO error in Storybook:', err)\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n useEffect(() => {\n async function resetCache() {\n await storybookQueryClient.cancelQueries()\n await storybookQueryClient.resetQueries()\n }\n\n void resetCache()\n }, [sessionState.token, currentStack])\n\n const effectiveToken = useMemo(() => {\n if (currentStack === 'mock') {\n return storybookContext.args.isAuthenticated ? 'fake token' : undefined\n }\n return sessionState.token\n }, [sessionState.token, currentStack, storybookContext.args.isAuthenticated])\n\n const effectiveIsAuthenticated = useMemo(() => {\n if (currentStack === 'mock') {\n return !!storybookContext.args.isAuthenticated\n }\n return sessionState.isAuthenticated\n }, [\n sessionState.isAuthenticated,\n currentStack,\n storybookContext.args.isAuthenticated,\n ])\n\n const refreshSession = useCallback(async () => {\n await sessionManager.refreshSession()\n }, [])\n\n const clearSession = useCallback(async () => {\n await sessionManager.clearSession()\n }, [])\n\n const applicationSessionContext = useMemo(\n () => ({\n token: effectiveToken,\n realmId: sessionState.realmId,\n userId: sessionState.userId,\n isAuthenticated: effectiveIsAuthenticated,\n hasInitializedSession: sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: undefined,\n termsOfServiceStatus: undefined,\n twoFactorStatus: undefined,\n }),\n [\n effectiveToken,\n effectiveIsAuthenticated,\n sessionState.realmId,\n sessionState.userId,\n sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n ],\n )\n\n const synapseContext: Partial<SynapseContextType> = useMemo(\n () => ({\n accessToken: effectiveToken,\n isAuthenticated: effectiveIsAuthenticated,\n isInExperimentalMode: SynapseClient.isInSynapseExperimentalMode(),\n utcTime: SynapseClient.getUseUtcTimeFromCookie(),\n withErrorBoundary: true,\n downloadCartPageUrl: '/?path=/story/download-downloadcartpage--demo',\n }),\n [effectiveToken, effectiveIsAuthenticated],\n )\n\n const wrappedStory = (\n <Suspense fallback={'global suspense loading...'}>\n <QueryClientProvider client={storybookQueryClient}>\n <ApplicationSessionContextProvider context={applicationSessionContext}>\n <SynapseContextProvider\n key={currentStack}\n synapseContext={synapseContext}\n >\n {storybookContext.globals.showReactQueryDevtools && (\n <ReactQueryDevtools />\n )}\n <SynapseToastContainer />\n <main>\n {shouldPromptForLogin ? (\n <StandaloneLoginForm\n sessionCallback={() => {\n void sessionManager.refreshSession()\n }}\n />\n ) : (\n props.children\n )}\n </main>\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n </QueryClientProvider>\n </Suspense>\n )\n\n if (!storybookContext.parameters.withRouter) {\n return wrappedStory\n }\n\n const router = createMemoryRouter([\n {\n path: '/',\n element: wrappedStory,\n },\n ])\n\n return <RouterProvider router={router} />\n}\n\nexport default StorybookComponentWrapper\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BA,IAAM,IAAuB,IAAI,EAAY,
|
|
1
|
+
{"version":3,"file":"StorybookComponentWrapper.js","names":[],"sources":["../../src/components/StorybookComponentWrapper.tsx"],"sourcesContent":["import { StandaloneLoginForm } from '@/components/Authentication/index'\nimport SynapseClient from '@/synapse-client'\nimport {\n defaultQueryClientConfig,\n SynapseContextProvider,\n SynapseContextType,\n} from '@/utils'\nimport { ApplicationSessionContextProvider } from '@/utils/AppUtils/session/ApplicationSessionContext'\nimport {\n SynapseSessionManager,\n type SessionState,\n} from '@/utils/AppUtils/session/SynapseSessionManager'\nimport { STACK_MAP, SynapseStack } from '@/utils/functions/getEndpoint'\nimport useDetectSSOCode from '@/utils/hooks/useDetectSSOCode'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport {\n ReactNode,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from 'react'\nimport { createMemoryRouter } from 'react-router'\nimport { RouterProvider } from 'react-router/dom'\nimport { SynapseToastContainer } from './ToastMessage'\n\nconst storybookQueryClient = new QueryClient(defaultQueryClientConfig)\n\n// Module-level session manager instance, stable across story switches (like the QueryClient above)\nconst sessionManager = new SynapseSessionManager({\n onSessionInvalid: () => {\n // In Storybook, just refresh the session instead of reloading the page\n sessionManager.refreshSession()\n },\n})\n\nfunction overrideEndpoint(stack: SynapseStack) {\n const endpointConfig = STACK_MAP[stack]\n ;(window as any)['SRC_OVERRIDE_ENDPOINT_CONFIG'] = endpointConfig\n}\n\n/**\n * Wraps storybook story components to ensure that all components receive required context.\n * @param props\n * @returns\n */\nexport function StorybookComponentWrapper(props: {\n children: ReactNode\n /* This will match the `globalTypes` object in preview.tsx. */\n storybookContext: {\n args: {\n isAuthenticated?: boolean\n }\n globals: {\n stack?: SynapseStack\n showReactQueryDevtools?: boolean\n }\n parameters: {\n stack?: SynapseStack\n withRouter?: boolean\n requireLogin?: boolean\n }\n }\n}) {\n const { storybookContext } = props\n\n const currentStack: SynapseStack = (storybookContext.globals.stack ||\n storybookContext.parameters.stack) as SynapseStack\n\n useEffect(() => {\n overrideEndpoint(currentStack)\n }, [currentStack])\n\n // Subscribe to the framework-agnostic SynapseSessionManager for token/auth state\n // These methods are bound in the SynapseSessionManager constructor, so they are safe to pass directly.\n const sessionState: SessionState = useSyncExternalStore(\n // eslint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.subscribe,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.getSnapshot,\n )\n\n // Track whether we've started the manager so we only start once (module-level instance persists across renders)\n const managerStartedRef = useRef(false)\n\n useEffect(() => {\n if (!managerStartedRef.current) {\n sessionManager.start()\n managerStartedRef.current = true\n }\n return () => {\n sessionManager.dispose()\n managerStartedRef.current = false\n }\n }, [])\n\n // When the stack changes, restart the session manager to pick up the new endpoint\n useEffect(() => {\n if (managerStartedRef.current) {\n sessionManager.dispose()\n sessionManager.start()\n }\n }, [currentStack])\n\n const shouldPromptForLogin =\n storybookContext.parameters.requireLogin &&\n currentStack !== 'mock' &&\n sessionState.hasInitializedSession &&\n !sessionState.isAuthenticated\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n void sessionManager.refreshSession()\n },\n onError: (err: unknown) => {\n console.error('SSO error in Storybook:', err)\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n useEffect(() => {\n async function resetCache() {\n await storybookQueryClient.cancelQueries()\n await storybookQueryClient.resetQueries()\n }\n\n void resetCache()\n }, [sessionState.token, currentStack])\n\n const effectiveToken = useMemo(() => {\n if (currentStack === 'mock') {\n return storybookContext.args.isAuthenticated ? 'fake token' : undefined\n }\n return sessionState.token\n }, [sessionState.token, currentStack, storybookContext.args.isAuthenticated])\n\n const effectiveIsAuthenticated = useMemo(() => {\n if (currentStack === 'mock') {\n return !!storybookContext.args.isAuthenticated\n }\n return sessionState.isAuthenticated\n }, [\n sessionState.isAuthenticated,\n currentStack,\n storybookContext.args.isAuthenticated,\n ])\n\n const refreshSession = useCallback(async () => {\n await sessionManager.refreshSession()\n }, [])\n\n const clearSession = useCallback(async () => {\n await sessionManager.clearSession()\n }, [])\n\n const applicationSessionContext = useMemo(\n () => ({\n token: effectiveToken,\n realmId: sessionState.realmId,\n userId: sessionState.userId,\n isAuthenticated: effectiveIsAuthenticated,\n hasInitializedSession: sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: undefined,\n termsOfServiceStatus: undefined,\n twoFactorStatus: undefined,\n }),\n [\n effectiveToken,\n effectiveIsAuthenticated,\n sessionState.realmId,\n sessionState.userId,\n sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n ],\n )\n\n const synapseContext: Partial<SynapseContextType> = useMemo(\n () => ({\n accessToken: effectiveToken,\n isAuthenticated: effectiveIsAuthenticated,\n isInExperimentalMode: SynapseClient.isInSynapseExperimentalMode(),\n utcTime: SynapseClient.getUseUtcTimeFromCookie(),\n withErrorBoundary: true,\n downloadCartPageUrl: '/?path=/story/download-downloadcartpage--demo',\n }),\n [effectiveToken, effectiveIsAuthenticated],\n )\n\n const wrappedStory = (\n <Suspense fallback={'global suspense loading...'}>\n <QueryClientProvider client={storybookQueryClient}>\n <ApplicationSessionContextProvider context={applicationSessionContext}>\n <SynapseContextProvider\n key={currentStack}\n synapseContext={synapseContext}\n >\n {storybookContext.globals.showReactQueryDevtools && (\n <ReactQueryDevtools />\n )}\n <SynapseToastContainer />\n <main>\n {shouldPromptForLogin ? (\n <StandaloneLoginForm\n sessionCallback={() => {\n void sessionManager.refreshSession()\n }}\n />\n ) : (\n props.children\n )}\n </main>\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n </QueryClientProvider>\n </Suspense>\n )\n\n if (!storybookContext.parameters.withRouter) {\n return wrappedStory\n }\n\n const router = createMemoryRouter([\n {\n path: '/',\n element: wrappedStory,\n },\n ])\n\n return <RouterProvider router={router} />\n}\n\nexport default StorybookComponentWrapper\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BA,IAAM,IAAuB,IAAI,EAAY,CAAwB,GAG/D,IAAiB,IAAI,EAAsB,EAC/C,wBAAwB;CAEtB,EAAe,eAAe;AAChC,EACF,CAAC;AAED,SAAS,EAAiB,GAAqB;CAC7C,IAAM,IAAiB,EAAU;CAChC,OAAgB,+BAAkC;AACrD;AAOA,SAAgB,EAA0B,GAiBvC;CACD,IAAM,EAAE,wBAAqB,GAEvB,IAA8B,EAAiB,QAAQ,SAC3D,EAAiB,WAAW;CAE9B,QAAgB;EACd,EAAiB,CAAY;CAC/B,GAAG,CAAC,CAAY,CAAC;CAIjB,IAAM,IAA6B,EAEjC,EAAe,WAEf,EAAe,WACjB,GAGM,IAAoB,EAAO,EAAK;CActC,AAZA,SACE,AAEE,EAAkB,aADlB,EAAe,MAAM,GACO,WAEjB;EAEX,AADA,EAAe,QAAQ,GACvB,EAAkB,UAAU;CAC9B,IACC,CAAC,CAAC,GAGL,QAAgB;EACd,AAAI,EAAkB,YACpB,EAAe,QAAQ,GACvB,EAAe,MAAM;CAEzB,GAAG,CAAC,CAAY,CAAC;CAEjB,IAAM,IACJ,EAAiB,WAAW,gBAC5B,MAAiB,UACjB,EAAa,yBACb,CAAC,EAAa,iBAEV,EAAE,WAAW,MAAiB,EAAiB;EACnD,wBAAwB;GACtB,EAAoB,eAAe;EACrC;EACA,UAAU,MAAiB;GACzB,QAAQ,MAAM,2BAA2B,CAAG;EAC9C;EACA,uBAAuB,CAAC,EAAa;EACrC,iBAAiB,EAAa;CAChC,CAAC;CAED,QAAgB;EACd,eAAe,IAAa;GAE1B,AADA,MAAM,EAAqB,cAAc,GACzC,MAAM,EAAqB,aAAa;EAC1C;EAEA,EAAgB;CAClB,GAAG,CAAC,EAAa,OAAO,CAAY,CAAC;CAErC,IAAM,IAAiB,QACjB,MAAiB,SACZ,EAAiB,KAAK,kBAAkB,eAAe,KAAA,IAEzD,EAAa,OACnB;EAAC,EAAa;EAAO;EAAc,EAAiB,KAAK;CAAe,CAAC,GAEtE,IAA2B,QAC3B,MAAiB,SACZ,CAAC,CAAC,EAAiB,KAAK,kBAE1B,EAAa,iBACnB;EACD,EAAa;EACb;EACA,EAAiB,KAAK;CACxB,CAAC,GAEK,IAAiB,EAAY,YAAY;EAC7C,MAAM,EAAe,eAAe;CACtC,GAAG,CAAC,CAAC,GAEC,IAAe,EAAY,YAAY;EAC3C,MAAM,EAAe,aAAa;CACpC,GAAG,CAAC,CAAC,GAwCC,IACJ,kBAAC,GAAD;EAAU,UAAU;YAClB,kBAAC,GAAD;GAAqB,QAAQ;aAC3B,kBAAC,GAAD;IAAmC,SAzCP,SACzB;KACL,OAAO;KACP,SAAS,EAAa;KACtB,QAAQ,EAAa;KACrB,iBAAiB;KACjB,uBAAuB,EAAa;KACpC;KACA;KACA;KACA,+BAA+B,KAAA;KAC/B,sBAAsB,KAAA;KACtB,iBAAiB,KAAA;IACnB,IACA;KACE;KACA;KACA,EAAa;KACb,EAAa;KACb,EAAa;KACb;KACA;KACA;IACF,CAkBgD;cAC1C,kBAAC,GAAD;KAEkB,gBAlB0B,SAC3C;MACL,aAAa;MACb,iBAAiB;MACjB,sBAAsB,EAAc,4BAA4B;MAChE,SAAS,EAAc,wBAAwB;MAC/C,mBAAmB;MACnB,qBAAqB;KACvB,IACA,CAAC,GAAgB,CAAwB,CASjB;eAFlB;MAIG,EAAiB,QAAQ,0BACxB,kBAAC,GAAD,CAAqB,CAAA;MAEvB,kBAAC,GAAD,CAAwB,CAAA;MACxB,kBAAC,QAAD,EAAA,UACG,IACC,kBAAC,GAAD,EACE,uBAAuB;OACrB,EAAoB,eAAe;MACrC,EACD,CAAA,IAED,EAAM,SAEJ,CAAA;KACgB;OAlBjB,CAkBiB;GACS,CAAA;EAChB,CAAA;CACb,CAAA;CAcZ,OAXK,EAAiB,WAAW,aAW1B,kBAAC,GAAD,EAAwB,QAPhB,EAAmB,CAChC;EACE,MAAM;EACN,SAAS;CACX,CACF,CAE+B,EAAS,CAAA,IAV/B;AAWX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmissionViewScopeEditor.js","names":[],"sources":["../../../src/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.tsx"],"sourcesContent":["import { useGetEvaluation } from '@/synapse-queries/evaluation/useEvaluation'\nimport {\n Alert,\n Box,\n IconButton,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\nimport EvaluationFinder from '../EvaluationFinder/EvaluationFinder'\nimport IconSvg from '../IconSvg'\n\ntype SubmissionViewScopeItemProps = {\n evaluationId: string\n onRemove: () => void\n}\n\nfunction SubmissionViewScopeItem(props: SubmissionViewScopeItemProps) {\n const { evaluationId, onRemove } = props\n const {\n data: evaluation,\n isLoading,\n isError,\n error,\n } = useGetEvaluation(evaluationId)\n if (isLoading) {\n return <Skeleton width={'100%'} />\n }\n if (isError) {\n return (\n <Alert severity=\"error\">\n <Typography>{error.reason}</Typography>\n <Link\n onClick={e => {\n onRemove()\n }}\n >\n Remove from scope\n </Link>\n </Alert>\n )\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Typography key={evaluation!.id} variant={'smallText1'}>\n {evaluation!.name}\n </Typography>\n <IconButton\n size={'small'}\n aria-label={`Remove ${evaluation!.name!} from scope`}\n onClick={() => {\n onRemove()\n }}\n sx={{\n '&:hover': {\n color: 'error.main',\n },\n }}\n >\n <IconSvg icon={'delete'} fontSize={'inherit'} wrap={false} />\n </IconButton>\n </Box>\n )\n}\n\nexport type SubmissionViewScopeEditorProps = {\n evaluationIds: string[]\n onChange: (evaluationIds: string[]) => void\n}\n\n/**\n * Component used to select evaluations to define a SubmissionView scope\n * @param props\n * @constructor\n */\nexport default function SubmissionViewScopeEditor(\n props: SubmissionViewScopeEditorProps,\n) {\n const { evaluationIds = [], onChange } = props\n\n return (\n <>\n <Typography\n variant={'smallText1'}\n sx={{\n mb: 1,\n fontWeight: 700,\n }}\n >\n Evaluations\n </Typography>\n <EvaluationFinder\n activeOnly={false}\n accessType={ACCESS_TYPE.READ_PRIVATE_SUBMISSION}\n selectedIds={evaluationIds}\n onChange={onChange}\n />\n <Box\n sx={{\n p: 2.5,\n mb: 2.5,\n border: '1px solid',\n borderColor: 'grey.300',\n }}\n >\n <Typography\n variant={'smallText1'}\n sx={{\n mb: 1,\n fontWeight: 700,\n }}\n >\n Selected\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n }}\n >\n {evaluationIds.map(evaluationId => (\n <SubmissionViewScopeItem\n key={evaluationId}\n evaluationId={evaluationId}\n onRemove={() => {\n onChange(evaluationIds.filter(id => id !== evaluationId))\n }}\n />\n ))}\n </Box>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;AAkBA,SAAS,EAAwB,GAAqC;CACpE,IAAM,EAAE,iBAAc,gBAAa,GAC7B,EACJ,MAAM,GACN,cACA,YACA,aACE,EAAiB,
|
|
1
|
+
{"version":3,"file":"SubmissionViewScopeEditor.js","names":[],"sources":["../../../src/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.tsx"],"sourcesContent":["import { useGetEvaluation } from '@/synapse-queries/evaluation/useEvaluation'\nimport {\n Alert,\n Box,\n IconButton,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\nimport EvaluationFinder from '../EvaluationFinder/EvaluationFinder'\nimport IconSvg from '../IconSvg'\n\ntype SubmissionViewScopeItemProps = {\n evaluationId: string\n onRemove: () => void\n}\n\nfunction SubmissionViewScopeItem(props: SubmissionViewScopeItemProps) {\n const { evaluationId, onRemove } = props\n const {\n data: evaluation,\n isLoading,\n isError,\n error,\n } = useGetEvaluation(evaluationId)\n if (isLoading) {\n return <Skeleton width={'100%'} />\n }\n if (isError) {\n return (\n <Alert severity=\"error\">\n <Typography>{error.reason}</Typography>\n <Link\n onClick={e => {\n onRemove()\n }}\n >\n Remove from scope\n </Link>\n </Alert>\n )\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Typography key={evaluation!.id} variant={'smallText1'}>\n {evaluation!.name}\n </Typography>\n <IconButton\n size={'small'}\n aria-label={`Remove ${evaluation!.name!} from scope`}\n onClick={() => {\n onRemove()\n }}\n sx={{\n '&:hover': {\n color: 'error.main',\n },\n }}\n >\n <IconSvg icon={'delete'} fontSize={'inherit'} wrap={false} />\n </IconButton>\n </Box>\n )\n}\n\nexport type SubmissionViewScopeEditorProps = {\n evaluationIds: string[]\n onChange: (evaluationIds: string[]) => void\n}\n\n/**\n * Component used to select evaluations to define a SubmissionView scope\n * @param props\n * @constructor\n */\nexport default function SubmissionViewScopeEditor(\n props: SubmissionViewScopeEditorProps,\n) {\n const { evaluationIds = [], onChange } = props\n\n return (\n <>\n <Typography\n variant={'smallText1'}\n sx={{\n mb: 1,\n fontWeight: 700,\n }}\n >\n Evaluations\n </Typography>\n <EvaluationFinder\n activeOnly={false}\n accessType={ACCESS_TYPE.READ_PRIVATE_SUBMISSION}\n selectedIds={evaluationIds}\n onChange={onChange}\n />\n <Box\n sx={{\n p: 2.5,\n mb: 2.5,\n border: '1px solid',\n borderColor: 'grey.300',\n }}\n >\n <Typography\n variant={'smallText1'}\n sx={{\n mb: 1,\n fontWeight: 700,\n }}\n >\n Selected\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n }}\n >\n {evaluationIds.map(evaluationId => (\n <SubmissionViewScopeItem\n key={evaluationId}\n evaluationId={evaluationId}\n onRemove={() => {\n onChange(evaluationIds.filter(id => id !== evaluationId))\n }}\n />\n ))}\n </Box>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;AAkBA,SAAS,EAAwB,GAAqC;CACpE,IAAM,EAAE,iBAAc,gBAAa,GAC7B,EACJ,MAAM,GACN,cACA,YACA,aACE,EAAiB,CAAY;CAkBjC,OAjBI,IACK,kBAAC,GAAD,EAAU,OAAO,OAAS,CAAA,IAE/B,IAEA,kBAAC,GAAD;EAAO,UAAS;YAAhB,CACE,kBAAC,GAAD,EAAA,UAAa,EAAM,OAAmB,CAAA,GACtC,kBAAC,GAAD;GACE,UAAS,MAAK;IACZ,EAAS;GACX;aACD;EAEK,CAAA,CACD;MAIT,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe;GACf,KAAK;GACL,YAAY;GACZ,gBAAgB;EAClB;YAPF,CASE,kBAAC,GAAD;GAAiC,SAAS;aACvC,EAAY;EACH,GAFK,EAAY,EAEjB,GACZ,kBAAC,GAAD;GACE,MAAM;GACN,cAAY,UAAU,EAAY,KAAM;GACxC,eAAe;IACb,EAAS;GACX;GACA,IAAI,EACF,WAAW,EACT,OAAO,aACT,EACF;aAEA,kBAAC,GAAD;IAAS,MAAM;IAAU,UAAU;IAAW,MAAM;GAAQ,CAAA;EAClD,CAAA,CACT;;AAET;AAYA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,mBAAgB,CAAC,GAAG,gBAAa;CAEzC,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,IAAI;IACJ,YAAY;GACd;aACD;EAEW,CAAA;EACZ,kBAAC,GAAD;GACE,YAAY;GACZ,YAAY,EAAY;GACxB,aAAa;GACH;EACX,CAAA;EACD,kBAAC,GAAD;GACE,IAAI;IACF,GAAG;IACH,IAAI;IACJ,QAAQ;IACR,aAAa;GACf;aANF,CAQE,kBAAC,GAAD;IACE,SAAS;IACT,IAAI;KACF,IAAI;KACJ,YAAY;IACd;cACD;GAEW,CAAA,GACZ,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,eAAe;KACf,KAAK;IACP;cAEC,EAAc,KAAI,MACjB,kBAAC,GAAD;KAEgB;KACd,gBAAgB;MACd,EAAS,EAAc,QAAO,MAAM,MAAO,CAAY,CAAC;KAC1D;IACD,GALM,CAKN,CACF;GACE,CAAA,CACF;;CACL,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmissionViewScopeEditorModal.js","names":[],"sources":["../../../src/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.tsx"],"sourcesContent":["import { useGetEntity, useUpdateEntity } from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport { SubmissionView } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport SubmissionViewScopeEditor from './SubmissionViewScopeEditor'\n\nexport type SubmissionViewScopeEditorModalProps = {\n open: boolean\n entityId: string\n onUpdate: () => void\n onCancel: () => void\n}\nexport default function SubmissionViewScopeEditorModal(\n props: SubmissionViewScopeEditorModalProps,\n) {\n const { open, entityId, onUpdate, onCancel } = props\n const [scopeIds, setScopeIds] = useState<string[]>([])\n const {\n data: entity,\n isLoading: isEntityLoading,\n error: entityError,\n } = useGetEntity<SubmissionView>(entityId, undefined, {\n staleTime: Infinity,\n })\n\n const {\n mutate,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateEntity<SubmissionView>({ onSuccess: onUpdate })\n\n useEffect(() => {\n if (entity) {\n setScopeIds(entity.scopeIds)\n }\n }, [entity])\n\n const isLoading = isEntityLoading || isUpdatePending\n const error = entityError || updateError\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Edit Scope\"\n content={\n <>\n <SubmissionViewScopeEditor\n evaluationIds={scopeIds}\n onChange={setScopeIds}\n />\n {error && (\n <Alert\n sx={{\n my: 1,\n }}\n severity=\"error\"\n >\n {error.reason}\n </Alert>\n )}\n </>\n }\n confirmButtonProps={{\n children: isUpdatePending ? 'Saving...' : 'Save',\n disabled: isLoading,\n startIcon: isUpdatePending ? <SynapseSpinner /> : undefined,\n }}\n onConfirm={() => {\n if (entity) {\n mutate({ ...entity, scopeIds: scopeIds })\n }\n }}\n onCancel={onCancel}\n maxWidth=\"md\"\n />\n )\n}\n"],"mappings":";;;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,aAAU,aAAU,gBAAa,GACzC,CAAC,GAAU,KAAe,EAAmB,
|
|
1
|
+
{"version":3,"file":"SubmissionViewScopeEditorModal.js","names":[],"sources":["../../../src/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.tsx"],"sourcesContent":["import { useGetEntity, useUpdateEntity } from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport { SubmissionView } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport SubmissionViewScopeEditor from './SubmissionViewScopeEditor'\n\nexport type SubmissionViewScopeEditorModalProps = {\n open: boolean\n entityId: string\n onUpdate: () => void\n onCancel: () => void\n}\nexport default function SubmissionViewScopeEditorModal(\n props: SubmissionViewScopeEditorModalProps,\n) {\n const { open, entityId, onUpdate, onCancel } = props\n const [scopeIds, setScopeIds] = useState<string[]>([])\n const {\n data: entity,\n isLoading: isEntityLoading,\n error: entityError,\n } = useGetEntity<SubmissionView>(entityId, undefined, {\n staleTime: Infinity,\n })\n\n const {\n mutate,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateEntity<SubmissionView>({ onSuccess: onUpdate })\n\n useEffect(() => {\n if (entity) {\n setScopeIds(entity.scopeIds)\n }\n }, [entity])\n\n const isLoading = isEntityLoading || isUpdatePending\n const error = entityError || updateError\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Edit Scope\"\n content={\n <>\n <SubmissionViewScopeEditor\n evaluationIds={scopeIds}\n onChange={setScopeIds}\n />\n {error && (\n <Alert\n sx={{\n my: 1,\n }}\n severity=\"error\"\n >\n {error.reason}\n </Alert>\n )}\n </>\n }\n confirmButtonProps={{\n children: isUpdatePending ? 'Saving...' : 'Save',\n disabled: isLoading,\n startIcon: isUpdatePending ? <SynapseSpinner /> : undefined,\n }}\n onConfirm={() => {\n if (entity) {\n mutate({ ...entity, scopeIds: scopeIds })\n }\n }}\n onCancel={onCancel}\n maxWidth=\"md\"\n />\n )\n}\n"],"mappings":";;;;;;;;;AAcA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,aAAU,aAAU,gBAAa,GACzC,CAAC,GAAU,KAAe,EAAmB,CAAC,CAAC,GAC/C,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAA6B,GAAU,KAAA,GAAW,EACpD,WAAW,SACb,CAAC,GAEK,EACJ,WACA,WAAW,GACX,OAAO,MACL,EAAgC,EAAE,WAAW,EAAS,CAAC;CAE3D,QAAgB;EACd,AAAI,KACF,EAAY,EAAO,QAAQ;CAE/B,GAAG,CAAC,CAAM,CAAC;CAEX,IAAM,IAAY,KAAmB,GAC/B,IAAQ,KAAe;CAE7B,OACE,kBAAC,GAAD;EACQ;EACN,OAAM;EACN,SACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,eAAe;GACf,UAAU;EACX,CAAA,GACA,KACC,kBAAC,GAAD;GACE,IAAI,EACF,IAAI,EACN;GACA,UAAS;aAER,EAAM;EACF,CAAA,CAET,EAAA,CAAA;EAEJ,oBAAoB;GAClB,UAAU,IAAkB,cAAc;GAC1C,UAAU;GACV,WAAW,IAAkB,kBAAC,GAAD,CAAiB,CAAA,IAAI,KAAA;EACpD;EACA,iBAAiB;GACf,AAAI,KACF,EAAO;IAAE,GAAG;IAAkB;GAAS,CAAC;EAE5C;EACU;EACV,UAAS;CACV,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForumTopic.js","names":[],"sources":["../../../src/components/SubscriptionPage/ForumTopic.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useGetForumMetadata } from '@/synapse-queries/forum/useForum'\nimport { useSubscription } from '@/synapse-queries/subscription/useSubscription'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport Topic from './Topic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\nexport default function ForumTopic(props: SubscriptionItemProps) {\n const { subscription } = props\n\n const { data: forum } = useGetForumMetadata(subscription.objectId)\n const { data: project } = useGetEntity(forum?.projectId, undefined, {\n enabled: !!forum,\n })\n const { isSubscribed, isLoading, toggleSubscribed } = useSubscription(\n subscription.objectId,\n SubscriptionObjectType.FORUM,\n )\n\n let href: string | undefined\n if (forum) {\n href = `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}Synapse:${\n forum.projectId\n }/discussion`\n }\n\n return (\n <Topic\n isLoading={isLoading}\n isSubscribed={isSubscribed}\n icon={'dashboard'}\n name={project?.name}\n nameHref={href}\n onToggleSubscribe={toggleSubscribed}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAwB,EAAW,GAA8B;CAC/D,IAAM,EAAE,oBAAiB,GAEnB,EAAE,MAAM,MAAU,EAAoB,EAAa,
|
|
1
|
+
{"version":3,"file":"ForumTopic.js","names":[],"sources":["../../../src/components/SubscriptionPage/ForumTopic.tsx"],"sourcesContent":["import { useGetEntity } from '@/synapse-queries'\nimport { useGetForumMetadata } from '@/synapse-queries/forum/useForum'\nimport { useSubscription } from '@/synapse-queries/subscription/useSubscription'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport Topic from './Topic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\nexport default function ForumTopic(props: SubscriptionItemProps) {\n const { subscription } = props\n\n const { data: forum } = useGetForumMetadata(subscription.objectId)\n const { data: project } = useGetEntity(forum?.projectId, undefined, {\n enabled: !!forum,\n })\n const { isSubscribed, isLoading, toggleSubscribed } = useSubscription(\n subscription.objectId,\n SubscriptionObjectType.FORUM,\n )\n\n let href: string | undefined\n if (forum) {\n href = `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}Synapse:${\n forum.projectId\n }/discussion`\n }\n\n return (\n <Topic\n isLoading={isLoading}\n isSubscribed={isSubscribed}\n icon={'dashboard'}\n name={project?.name}\n nameHref={href}\n onToggleSubscribe={toggleSubscribed}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAwB,EAAW,GAA8B;CAC/D,IAAM,EAAE,oBAAiB,GAEnB,EAAE,MAAM,MAAU,EAAoB,EAAa,QAAQ,GAC3D,EAAE,MAAM,MAAY,EAAa,GAAO,WAAW,KAAA,GAAW,EAClE,SAAS,CAAC,CAAC,EACb,CAAC,GACK,EAAE,iBAAc,cAAW,wBAAqB,EACpD,EAAa,UACb,EAAuB,KACzB,GAEI;CAOJ,OANI,MACF,IAAO,GAAG,EAAY,EAAuB,eAAe,EAAE,UAC5D,EAAM,UACP,eAID,kBAAC,GAAD;EACa;EACG;EACd,MAAM;EACN,MAAM,GAAS;EACf,UAAU;EACV,mBAAmB;CACpB,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionItem.js","names":[],"sources":["../../../src/components/SubscriptionPage/SubscriptionItem.tsx"],"sourcesContent":["import {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport ForumTopic from './ForumTopic'\nimport ThreadTopic from './ThreadTopic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\n/**\n * Simple discriminator component that maps a {@link Subscription} rendered on the {@link SubscriptionPage} to\n * a {@link Topic} component\n * @param props\n * @constructor\n */\nexport default function SubscriptionItem(props: SubscriptionItemProps) {\n const { subscription } = props\n\n switch (subscription.objectType) {\n case SubscriptionObjectType.FORUM:\n return <ForumTopic subscription={subscription} />\n case SubscriptionObjectType.THREAD:\n return <ThreadTopic subscription={subscription} />\n default:\n console.warn(\n `Subscription type ${props.subscription.objectType} not supported in UI`,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;AAiBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,oBAAiB;
|
|
1
|
+
{"version":3,"file":"SubscriptionItem.js","names":[],"sources":["../../../src/components/SubscriptionPage/SubscriptionItem.tsx"],"sourcesContent":["import {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport ForumTopic from './ForumTopic'\nimport ThreadTopic from './ThreadTopic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\n/**\n * Simple discriminator component that maps a {@link Subscription} rendered on the {@link SubscriptionPage} to\n * a {@link Topic} component\n * @param props\n * @constructor\n */\nexport default function SubscriptionItem(props: SubscriptionItemProps) {\n const { subscription } = props\n\n switch (subscription.objectType) {\n case SubscriptionObjectType.FORUM:\n return <ForumTopic subscription={subscription} />\n case SubscriptionObjectType.THREAD:\n return <ThreadTopic subscription={subscription} />\n default:\n console.warn(\n `Subscription type ${props.subscription.objectType} not supported in UI`,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;AAiBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,oBAAiB;CAEzB,QAAQ,EAAa,YAArB;EACE,KAAK,EAAuB,OAC1B,OAAO,kBAAC,GAAD,EAA0B,gBAAe,CAAA;EAClD,KAAK,EAAuB,QAC1B,OAAO,kBAAC,GAAD,EAA2B,gBAAe,CAAA;EACnD,SAIE,OAHA,QAAQ,KACN,qBAAqB,EAAM,aAAa,WAAW,qBACrD,GACO,kBAAA,GAAA,CAAI,CAAA;CACf;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionPage.js","names":[],"sources":["../../../src/components/SubscriptionPage/SubscriptionPage.tsx"],"sourcesContent":["import { useGetAllSubscriptions } from '@/synapse-queries/subscription/useSubscription'\nimport { Box, Button, Stack, Tab, Tabs } from '@mui/material'\nimport {\n SortByType as SubscriptionSortField,\n SortDirection,\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { InfiniteData } from '@tanstack/react-query'\nimport { SyntheticEvent, useId, useState } from 'react'\nimport DropdownSelect from '../DropdownSelect'\nimport SubscriptionItem from './SubscriptionItem'\n\ntype SortOption = { value: SortDirection; label: string }\n\nconst sortOptions: SortOption[] = [\n { value: 'ASC', label: 'Date Posted' },\n { value: 'DESC', label: 'Most Recent' },\n]\n\nexport default function SubscriptionPage() {\n const [objectType, setObjectType] = useState<SubscriptionObjectType>(\n SubscriptionObjectType.FORUM,\n )\n const [sortDirection, setSortDirection] = useState<SortOption>(sortOptions[0])\n\n const instanceSpecificQueryKey = useId()\n\n const currentFilter = {\n objectType: objectType,\n sortBy: SubscriptionSortField.CREATED_ON,\n sortDirection: sortDirection.value,\n }\n\n const { data, hasNextPage, isFetchingNextPage, fetchNextPage } =\n useGetAllSubscriptions<InfiniteData<Subscription>>(\n currentFilter,\n // Since the user may edit their subscriptions on this page, set staleTime to infinity to prevent re-fetching while editing\n {\n staleTime: Infinity,\n select: data => ({\n pages: data.pages.flatMap(page => page.results),\n pageParams: data.pageParams,\n }),\n },\n // Override the query key with a unique ID, because we don't want changes to invalidate this list while it's being used\n [`subscriptionPageFetch_${instanceSpecificQueryKey}`, currentFilter],\n )\n\n return (\n <>\n <Box sx={{ float: 'right' }}>\n <DropdownSelect\n variant={'outlined'}\n options={sortOptions.map(option => option.label)}\n selectedIndex={sortOptions.findIndex(\n option => option.value === sortDirection.value,\n )}\n setSelectedIndex={index => setSortDirection(sortOptions[index])}\n />\n </Box>\n\n <Tabs\n sx={{ mb: 3 }}\n value={objectType}\n onChange={(event: SyntheticEvent, newValue: SubscriptionObjectType) => {\n event.stopPropagation()\n setObjectType(newValue)\n }}\n textColor=\"secondary\"\n indicatorColor=\"secondary\"\n >\n <Tab value={SubscriptionObjectType.FORUM} label={'Project Forums'} />\n <Tab value={SubscriptionObjectType.THREAD} label={'Threads'} />\n </Tabs>\n <Stack\n sx={{\n gap: 0.5,\n }}\n >\n {data?.pages.map(subscription => (\n <SubscriptionItem\n key={subscription.subscriptionId}\n subscription={subscription}\n />\n ))}\n </Stack>\n\n {hasNextPage && (\n <Button\n variant=\"contained\"\n onClick={() => {\n fetchNextPage()\n }}\n disabled={isFetchingNextPage}\n sx={{ mt: 6 }}\n >\n {isFetchingNextPage ? 'Loading...' : 'Load More'}\n </Button>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;AAeA,IAAM,IAA4B,CAChC;CAAE,OAAO;CAAO,OAAO;
|
|
1
|
+
{"version":3,"file":"SubscriptionPage.js","names":[],"sources":["../../../src/components/SubscriptionPage/SubscriptionPage.tsx"],"sourcesContent":["import { useGetAllSubscriptions } from '@/synapse-queries/subscription/useSubscription'\nimport { Box, Button, Stack, Tab, Tabs } from '@mui/material'\nimport {\n SortByType as SubscriptionSortField,\n SortDirection,\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { InfiniteData } from '@tanstack/react-query'\nimport { SyntheticEvent, useId, useState } from 'react'\nimport DropdownSelect from '../DropdownSelect'\nimport SubscriptionItem from './SubscriptionItem'\n\ntype SortOption = { value: SortDirection; label: string }\n\nconst sortOptions: SortOption[] = [\n { value: 'ASC', label: 'Date Posted' },\n { value: 'DESC', label: 'Most Recent' },\n]\n\nexport default function SubscriptionPage() {\n const [objectType, setObjectType] = useState<SubscriptionObjectType>(\n SubscriptionObjectType.FORUM,\n )\n const [sortDirection, setSortDirection] = useState<SortOption>(sortOptions[0])\n\n const instanceSpecificQueryKey = useId()\n\n const currentFilter = {\n objectType: objectType,\n sortBy: SubscriptionSortField.CREATED_ON,\n sortDirection: sortDirection.value,\n }\n\n const { data, hasNextPage, isFetchingNextPage, fetchNextPage } =\n useGetAllSubscriptions<InfiniteData<Subscription>>(\n currentFilter,\n // Since the user may edit their subscriptions on this page, set staleTime to infinity to prevent re-fetching while editing\n {\n staleTime: Infinity,\n select: data => ({\n pages: data.pages.flatMap(page => page.results),\n pageParams: data.pageParams,\n }),\n },\n // Override the query key with a unique ID, because we don't want changes to invalidate this list while it's being used\n [`subscriptionPageFetch_${instanceSpecificQueryKey}`, currentFilter],\n )\n\n return (\n <>\n <Box sx={{ float: 'right' }}>\n <DropdownSelect\n variant={'outlined'}\n options={sortOptions.map(option => option.label)}\n selectedIndex={sortOptions.findIndex(\n option => option.value === sortDirection.value,\n )}\n setSelectedIndex={index => setSortDirection(sortOptions[index])}\n />\n </Box>\n\n <Tabs\n sx={{ mb: 3 }}\n value={objectType}\n onChange={(event: SyntheticEvent, newValue: SubscriptionObjectType) => {\n event.stopPropagation()\n setObjectType(newValue)\n }}\n textColor=\"secondary\"\n indicatorColor=\"secondary\"\n >\n <Tab value={SubscriptionObjectType.FORUM} label={'Project Forums'} />\n <Tab value={SubscriptionObjectType.THREAD} label={'Threads'} />\n </Tabs>\n <Stack\n sx={{\n gap: 0.5,\n }}\n >\n {data?.pages.map(subscription => (\n <SubscriptionItem\n key={subscription.subscriptionId}\n subscription={subscription}\n />\n ))}\n </Stack>\n\n {hasNextPage && (\n <Button\n variant=\"contained\"\n onClick={() => {\n fetchNextPage()\n }}\n disabled={isFetchingNextPage}\n sx={{ mt: 6 }}\n >\n {isFetchingNextPage ? 'Loading...' : 'Load More'}\n </Button>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;AAeA,IAAM,IAA4B,CAChC;CAAE,OAAO;CAAO,OAAO;AAAc,GACrC;CAAE,OAAO;CAAQ,OAAO;AAAc,CACxC;AAEA,SAAwB,IAAmB;CACzC,IAAM,CAAC,GAAY,KAAiB,EAClC,EAAuB,KACzB,GACM,CAAC,GAAe,KAAoB,EAAqB,EAAY,EAAE,GAEvE,IAA2B,EAAM,GAEjC,IAAgB;EACR;EACZ,QAAQ,EAAsB;EAC9B,eAAe,EAAc;CAC/B,GAEM,EAAE,SAAM,gBAAa,uBAAoB,qBAC7C,EACE,GAEA;EACE,WAAW;EACX,SAAQ,OAAS;GACf,OAAO,EAAK,MAAM,SAAQ,MAAQ,EAAK,OAAO;GAC9C,YAAY,EAAK;EACnB;CACF,GAEA,CAAC,yBAAyB,KAA4B,CAAa,CACrE;CAEF,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAK,IAAI,EAAE,OAAO,QAAQ;aACxB,kBAAC,GAAD;IACE,SAAS;IACT,SAAS,EAAY,KAAI,MAAU,EAAO,KAAK;IAC/C,eAAe,EAAY,WACzB,MAAU,EAAO,UAAU,EAAc,KAC3C;IACA,mBAAkB,MAAS,EAAiB,EAAY,EAAM;GAC/D,CAAA;EACE,CAAA;EAEL,kBAAC,GAAD;GACE,IAAI,EAAE,IAAI,EAAE;GACZ,OAAO;GACP,WAAW,GAAuB,MAAqC;IAErE,AADA,EAAM,gBAAgB,GACtB,EAAc,CAAQ;GACxB;GACA,WAAU;GACV,gBAAe;aARjB,CAUE,kBAAC,GAAD;IAAK,OAAO,EAAuB;IAAO,OAAO;GAAmB,CAAA,GACpE,kBAAC,GAAD;IAAK,OAAO,EAAuB;IAAQ,OAAO;GAAY,CAAA,CAC1D;;EACN,kBAAC,GAAD;GACE,IAAI,EACF,KAAK,GACP;aAEC,GAAM,MAAM,KAAI,MACf,kBAAC,GAAD,EAEgB,gBACf,GAFM,EAAa,cAEnB,CACF;EACI,CAAA;EAEN,KACC,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe;IACb,EAAc;GAChB;GACA,UAAU;GACV,IAAI,EAAE,IAAI,EAAE;aAEX,IAAqB,eAAe;EAC/B,CAAA;CAEV,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadTopic.js","names":[],"sources":["../../../src/components/SubscriptionPage/ThreadTopic.tsx"],"sourcesContent":["import { useGetThread } from '@/synapse-queries/forum/useThread'\nimport { useSubscription } from '@/synapse-queries/subscription/useSubscription'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport Topic from './Topic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\nexport default function SubscriptionItem(props: SubscriptionItemProps) {\n const { subscription } = props\n\n const { threadData } = useGetThread(subscription.objectId)\n const { isSubscribed, isLoading, toggleSubscribed } = useSubscription(\n subscription.objectId,\n SubscriptionObjectType.THREAD,\n )\n\n let href: string | undefined\n if (threadData) {\n href = `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}Synapse:${\n threadData.projectId\n }/discussion/threadId=${subscription.objectId}`\n }\n\n return (\n <Topic\n isLoading={isLoading}\n isSubscribed={isSubscribed}\n icon={'discussion'}\n name={threadData?.title}\n nameHref={href}\n onToggleSubscribe={toggleSubscribed}\n />\n )\n}\n"],"mappings":";;;;;;;AAgBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,oBAAiB,GAEnB,EAAE,kBAAe,EAAa,EAAa,
|
|
1
|
+
{"version":3,"file":"ThreadTopic.js","names":[],"sources":["../../../src/components/SubscriptionPage/ThreadTopic.tsx"],"sourcesContent":["import { useGetThread } from '@/synapse-queries/forum/useThread'\nimport { useSubscription } from '@/synapse-queries/subscription/useSubscription'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n Subscription,\n SubscriptionObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport Topic from './Topic'\n\nexport type SubscriptionItemProps = {\n subscription: Subscription\n}\n\nexport default function SubscriptionItem(props: SubscriptionItemProps) {\n const { subscription } = props\n\n const { threadData } = useGetThread(subscription.objectId)\n const { isSubscribed, isLoading, toggleSubscribed } = useSubscription(\n subscription.objectId,\n SubscriptionObjectType.THREAD,\n )\n\n let href: string | undefined\n if (threadData) {\n href = `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}Synapse:${\n threadData.projectId\n }/discussion/threadId=${subscription.objectId}`\n }\n\n return (\n <Topic\n isLoading={isLoading}\n isSubscribed={isSubscribed}\n icon={'discussion'}\n name={threadData?.title}\n nameHref={href}\n onToggleSubscribe={toggleSubscribed}\n />\n )\n}\n"],"mappings":";;;;;;;AAgBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,oBAAiB,GAEnB,EAAE,kBAAe,EAAa,EAAa,QAAQ,GACnD,EAAE,iBAAc,cAAW,wBAAqB,EACpD,EAAa,UACb,EAAuB,MACzB,GAEI;CAOJ,OANI,MACF,IAAO,GAAG,EAAY,EAAuB,eAAe,EAAE,UAC5D,EAAW,UACZ,uBAAuB,EAAa,aAIrC,kBAAC,GAAD;EACa;EACG;EACd,MAAM;EACN,MAAM,GAAY;EAClB,UAAU;EACV,mBAAmB;CACpB,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Topic.js","names":[],"sources":["../../../src/components/SubscriptionPage/Topic.tsx"],"sourcesContent":["import ConditionalWrapper from '@/components/utils/ConditionalWrapper'\nimport { Button, Link, Skeleton, Stack } from '@mui/material'\nimport IconSvg, { IconName } from '../IconSvg'\n\nexport type TopicProps = {\n isSubscribed: boolean\n isLoading: boolean\n icon: IconName\n name?: string\n nameHref?: string\n onToggleSubscribe: () => void\n}\n\n/**\n * Represents a single object on which a Synapse user has subscribed to notifications\n * @param props\n * @constructor\n */\nexport default function Topic(props: TopicProps) {\n const { icon, isSubscribed, isLoading, nameHref, name, onToggleSubscribe } =\n props\n\n return (\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <Button\n sx={{ width: '80px', mr: 3 }}\n onClick={onToggleSubscribe}\n variant={isSubscribed ? 'outlined' : 'contained'}\n disabled={isLoading}\n >\n {isSubscribed ? 'Unfollow' : 'Follow'}\n </Button>\n <IconSvg icon={icon} sx={{ color: 'primary.main', mr: 1.5 }} />\n <ConditionalWrapper\n condition={!name}\n wrapper={Skeleton}\n wrapperProps={{ width: 300, height: 20 }}\n >\n <Link underline={'hover'} href={nameHref} target=\"_blank\">\n {name}\n </Link>\n </ConditionalWrapper>\n </Stack>\n )\n}\n"],"mappings":";;;;;AAkBA,SAAwB,EAAM,GAAmB;CAC/C,IAAM,EAAE,SAAM,iBAAc,cAAW,aAAU,SAAM,yBACrD;
|
|
1
|
+
{"version":3,"file":"Topic.js","names":[],"sources":["../../../src/components/SubscriptionPage/Topic.tsx"],"sourcesContent":["import ConditionalWrapper from '@/components/utils/ConditionalWrapper'\nimport { Button, Link, Skeleton, Stack } from '@mui/material'\nimport IconSvg, { IconName } from '../IconSvg'\n\nexport type TopicProps = {\n isSubscribed: boolean\n isLoading: boolean\n icon: IconName\n name?: string\n nameHref?: string\n onToggleSubscribe: () => void\n}\n\n/**\n * Represents a single object on which a Synapse user has subscribed to notifications\n * @param props\n * @constructor\n */\nexport default function Topic(props: TopicProps) {\n const { icon, isSubscribed, isLoading, nameHref, name, onToggleSubscribe } =\n props\n\n return (\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <Button\n sx={{ width: '80px', mr: 3 }}\n onClick={onToggleSubscribe}\n variant={isSubscribed ? 'outlined' : 'contained'}\n disabled={isLoading}\n >\n {isSubscribed ? 'Unfollow' : 'Follow'}\n </Button>\n <IconSvg icon={icon} sx={{ color: 'primary.main', mr: 1.5 }} />\n <ConditionalWrapper\n condition={!name}\n wrapper={Skeleton}\n wrapperProps={{ width: 300, height: 20 }}\n >\n <Link underline={'hover'} href={nameHref} target=\"_blank\">\n {name}\n </Link>\n </ConditionalWrapper>\n </Stack>\n )\n}\n"],"mappings":";;;;;AAkBA,SAAwB,EAAM,GAAmB;CAC/C,IAAM,EAAE,SAAM,iBAAc,cAAW,aAAU,SAAM,yBACrD;CAEF,OACE,kBAAC,GAAD;EACE,IAAI;GACF,eAAe;GACf,YAAY;EACd;YAJF;GAME,kBAAC,GAAD;IACE,IAAI;KAAE,OAAO;KAAQ,IAAI;IAAE;IAC3B,SAAS;IACT,SAAS,IAAe,aAAa;IACrC,UAAU;cAET,IAAe,aAAa;GACvB,CAAA;GACR,kBAAC,GAAD;IAAe;IAAM,IAAI;KAAE,OAAO;KAAgB,IAAI;IAAI;GAAI,CAAA;GAC9D,kBAAC,GAAD;IACE,WAAW,CAAC;IACZ,SAAS;IACT,cAAc;KAAE,OAAO;KAAK,QAAQ;IAAG;cAEvC,kBAAC,GAAD;KAAM,WAAW;KAAS,MAAM;KAAU,QAAO;eAC9C;IACG,CAAA;GACY,CAAA;EACf;;AAEX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubsectionRowRenderer.js","names":[],"sources":["../../../src/components/SubsectionRowRenderer/SubsectionRowRenderer.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { Typography } from '@mui/material'\nimport {\n ColumnType,\n ColumnTypeEnum,\n QueryBundleRequest,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { ColumnSpecifiedLink } from '../CardContainerLogic'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SkeletonTable } from '../Skeleton/SkeletonTable'\n\nexport type FriendlyValuesMap = {\n [index: string]: string\n}\n\nexport type SubsectionRowRendererProps = {\n sql: string\n isMarkdown?: boolean\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n columnLink?: ColumnSpecifiedLink\n friendlyValuesMap?: FriendlyValuesMap\n columnNameIsSectionTitle?: boolean\n limit?: number\n additionalFiltersSessionStorageKey?: string\n}\n\nconst LIST_COLUMN_TYPES: ColumnType[] = [\n ColumnTypeEnum.BOOLEAN_LIST,\n ColumnTypeEnum.DATE_LIST,\n ColumnTypeEnum.ENTITYID_LIST,\n ColumnTypeEnum.INTEGER_LIST,\n ColumnTypeEnum.STRING_LIST,\n]\n\nfunction SubsectionRowRenderer({\n sql,\n searchParams,\n sqlOperator,\n isMarkdown = false,\n columnLink,\n friendlyValuesMap,\n columnNameIsSectionTitle = false,\n limit,\n additionalFiltersSessionStorageKey,\n}: SubsectionRowRendererProps) {\n const { accessToken } = useSynapseContext()\n const [rowSet, setRowSet] = useState<RowSet>()\n const [isLoading, setIsLoading] = useState<boolean>()\n useDeepCompareEffectNoCheck(() => {\n const fetchData = async function () {\n setIsLoading(true)\n const entityId = parseEntityIdFromSqlStatement(sql)\n const additionalFilters = getAdditionalFilters(\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n const partMask = SynapseConstants.BUNDLE_MASK_QUERY_RESULTS\n const request: QueryBundleRequest = {\n partMask,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n limit,\n additionalFilters,\n },\n }\n\n const queryResultBundle = await SynapseClient.getQueryTableResults(\n request,\n accessToken,\n )\n setIsLoading(false)\n const queryResults = queryResultBundle?.queryResult?.queryResults\n if (queryResults) {\n setRowSet(queryResults)\n } else {\n console.log('SubsectionRowRenderer: Error getting data')\n }\n }\n fetchData()\n }, [sql, accessToken, searchParams, sqlOperator])\n\n /**\n * If a \"friendly values map\" was provided, then use the friendly value if any of the raw values match.\n * Otherwise, just return the raw value.\n * @param rawValue\n * @returns\n */\n const getFriendlyValue = (rawValue: string) => {\n if (!friendlyValuesMap) {\n return rawValue\n }\n const friendlyValue = friendlyValuesMap[rawValue]\n return friendlyValue ? friendlyValue : rawValue\n }\n return (\n <div className=\"SubsectionRowRenderer\">\n {isLoading && <SkeletonTable numRows={2} numCols={1} />}\n {!isLoading &&\n rowSet &&\n rowSet.rows.length > 0 &&\n rowSet.headers.map((selectColumn, colIndex) => {\n // If a link column was provided (that contain URLs), do not create a page sub-section for that column.\n if (columnLink && selectColumn.name == columnLink.linkColumnName) {\n return <></>\n }\n return (\n <div\n key={`header-${colIndex}`}\n className=\"SubsectionRowRenderer__item\"\n role=\"table\"\n >\n <Typography\n variant={\n columnNameIsSectionTitle ? 'sectionTitle' : 'subsectionHeader'\n }\n role=\"heading\"\n style={{ paddingTop: '10px', marginBottom: '5px' }}\n >\n {selectColumn.name}\n </Typography>\n {columnNameIsSectionTitle && <hr />}\n <div role=\"rowgroup\">\n {rowSet.rows.map((row, rowIndex) => {\n const cellValue = row.values[colIndex]\n // If the cell value is undefined, then go to the next row.\n if (!cellValue) {\n return <></>\n }\n let values\n // If this cell value represents a multi-value (the select column type is a *_LIST column), then parse it and break it apart\n if (LIST_COLUMN_TYPES.includes(selectColumn.columnType)) {\n const jsonData: string[] = JSON.parse(cellValue)\n values = jsonData.map((val: string, index: number) => {\n return (\n <div\n key={`row-${rowIndex}-col-${colIndex}-multi-value`}\n className=\"SubsectionRowRenderer__item__value\"\n role=\"row\"\n >\n {isMarkdown && (\n <MarkdownSynapse markdown={getFriendlyValue(val)} />\n )}\n {!isMarkdown && <p>{getFriendlyValue(val)}</p>}\n </div>\n )\n })\n } else {\n // If this cell value represents a single value\n let renderedValue\n const friendlyCellValue = getFriendlyValue(cellValue)\n if (isMarkdown) {\n renderedValue = (\n <MarkdownSynapse markdown={friendlyCellValue} />\n )\n } else if (\n columnLink &&\n columnLink.matchColumnName == selectColumn.name\n ) {\n // If a link column was provided, then we need to create links (the url is in this other column)\n const urlColumnIndex = rowSet.headers.findIndex(\n col => col.name == columnLink.linkColumnName,\n )\n const values = row.values as string[]\n if (values.some(value => value === null)) {\n console.warn(\n 'Row has null value(s) when no nulls expected',\n )\n }\n\n if (urlColumnIndex > -1) {\n renderedValue = (\n <a\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href={values[urlColumnIndex]}\n >\n {friendlyCellValue}\n </a>\n )\n } else {\n renderedValue = <p>{friendlyCellValue}</p>\n }\n } else {\n renderedValue = <p>{friendlyCellValue}</p>\n }\n values = (\n <div\n key={`row-${rowIndex}-col-${colIndex}-single`}\n className=\"SubsectionRowRenderer__item__value\"\n role=\"row\"\n >\n {renderedValue}\n </div>\n )\n }\n return values\n })}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default SubsectionRowRenderer\n"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,IAAkC;CACtC,EAAe;CACf,EAAe;CACf,EAAe;CACf,EAAe;CACf,EAAe;CAChB;AAED,SAAS,EAAsB,EAC7B,QACA,iBACA,gBACA,gBAAa,IACb,eACA,sBACA,8BAA2B,IAC3B,UACA,yCAC6B;CAC7B,IAAM,EAAE,mBAAgB,GAAmB,EACrC,CAAC,GAAQ,KAAa,GAAkB,EACxC,CAAC,GAAW,KAAgB,GAAmB;AACrD,SAAkC;AAiChC,oBAhCoC;AAClC,KAAa,GAAK;GAQlB,IAAM,IAA8B;IAClC,UAAA;IACA,cAAc;IACd,UAVe,EAA8B,EAU7C;IACA,OAAO;KACL;KACA;KACA,mBAbsB,EACxB,GACA,GACA,EAUE;KACD;IACF,EAEK,IAAoB,MAAM,EAAc,qBAC5C,GACA,EACD;AACD,KAAa,GAAM;GACnB,IAAM,IAAe,GAAmB,aAAa;AACrD,GAAI,IACF,EAAU,EAAa,GAEvB,QAAQ,IAAI,4CAA4C;MAGjD;IACV;EAAC;EAAK;EAAa;EAAc;EAAY,CAAC;CAQjD,IAAM,KAAoB,MACnB,KAGiB,EAAkB,MAF/B;AAKX,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,KAAa,kBAAC,GAAD;GAAe,SAAS;GAAG,SAAS;GAAK,CAAA,EACtD,CAAC,KACA,KACA,EAAO,KAAK,SAAS,KACrB,EAAO,QAAQ,KAAK,GAAc,MAE5B,KAAc,EAAa,QAAQ,EAAW,iBACzC,kBAAA,GAAA,EAAK,CAAA,GAGZ,kBAAC,OAAD;GAEE,WAAU;GACV,MAAK;aAHP;IAKE,kBAAC,GAAD;KACE,SACE,IAA2B,iBAAiB;KAE9C,MAAK;KACL,OAAO;MAAE,YAAY;MAAQ,cAAc;MAAO;eAEjD,EAAa;KACH,CAAA;IACZ,KAA4B,kBAAC,MAAD,EAAM,CAAA;IACnC,kBAAC,OAAD;KAAK,MAAK;eACP,EAAO,KAAK,KAAK,GAAK,MAAa;MAClC,IAAM,IAAY,EAAI,OAAO;AAE7B,UAAI,CAAC,EACH,QAAO,kBAAA,GAAA,EAAK,CAAA;MAEd,IAAI;AAEJ,UAAI,EAAkB,SAAS,EAAa,WAAW,CAErD,KAD2B,KAAK,MAAM,EAC7B,CAAS,KAAK,GAAa,MAEhC,kBAAC,OAAD;OAEE,WAAU;OACV,MAAK;iBAHP,CAKG,KACC,kBAAC,GAAD,EAAiB,UAAU,EAAiB,EAAI,EAAI,CAAA,EAErD,CAAC,KAAc,kBAAC,KAAD,EAAA,UAAI,EAAiB,EAAI,EAAK,CAAA,CAC1C;SARC,OAAO,EAAS,OAAO,EAAS,cAQjC,CAER;WACG;OAEL,IAAI,GACE,IAAoB,EAAiB,EAAU;AACrD,WAAI,EACF,KACE,kBAAC,GAAD,EAAiB,UAAU,GAAqB,CAAA;gBAGlD,KACA,EAAW,mBAAmB,EAAa,MAC3C;QAEA,IAAM,IAAiB,EAAO,QAAQ,WACpC,MAAO,EAAI,QAAQ,EAAW,eAC/B,EACK,IAAS,EAAI;AAOnB,QANI,EAAO,MAAK,MAAS,MAAU,KAAK,IACtC,QAAQ,KACN,+CACD,EAGH,AAWE,IAXE,IAAiB,KAEjB,kBAAC,KAAD;SACE,KAAI;SACJ,QAAO;SACP,MAAM,EAAO;mBAEZ;SACC,CAAA,GAGU,kBAAC,KAAD,EAAA,UAAI,GAAsB,CAAA;aAG5C,KAAgB,kBAAC,KAAD,EAAA,UAAI,GAAsB,CAAA;AAE5C,WACE,kBAAC,OAAD;QAEE,WAAU;QACV,MAAK;kBAEJ;QACG,EALC,OAAO,EAAS,OAAO,EAAS,SAKjC;;AAGV,aAAO;OACP;KACE,CAAA;IACF;KA3FC,UAAU,IA2FX,CAER,CACA"}
|
|
1
|
+
{"version":3,"file":"SubsectionRowRenderer.js","names":[],"sources":["../../../src/components/SubsectionRowRenderer/SubsectionRowRenderer.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { Typography } from '@mui/material'\nimport {\n ColumnType,\n ColumnTypeEnum,\n QueryBundleRequest,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { ColumnSpecifiedLink } from '../CardContainerLogic'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\nimport { SkeletonTable } from '../Skeleton/SkeletonTable'\n\nexport type FriendlyValuesMap = {\n [index: string]: string\n}\n\nexport type SubsectionRowRendererProps = {\n sql: string\n isMarkdown?: boolean\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n columnLink?: ColumnSpecifiedLink\n friendlyValuesMap?: FriendlyValuesMap\n columnNameIsSectionTitle?: boolean\n limit?: number\n additionalFiltersSessionStorageKey?: string\n}\n\nconst LIST_COLUMN_TYPES: ColumnType[] = [\n ColumnTypeEnum.BOOLEAN_LIST,\n ColumnTypeEnum.DATE_LIST,\n ColumnTypeEnum.ENTITYID_LIST,\n ColumnTypeEnum.INTEGER_LIST,\n ColumnTypeEnum.STRING_LIST,\n]\n\nfunction SubsectionRowRenderer({\n sql,\n searchParams,\n sqlOperator,\n isMarkdown = false,\n columnLink,\n friendlyValuesMap,\n columnNameIsSectionTitle = false,\n limit,\n additionalFiltersSessionStorageKey,\n}: SubsectionRowRendererProps) {\n const { accessToken } = useSynapseContext()\n const [rowSet, setRowSet] = useState<RowSet>()\n const [isLoading, setIsLoading] = useState<boolean>()\n useDeepCompareEffectNoCheck(() => {\n const fetchData = async function () {\n setIsLoading(true)\n const entityId = parseEntityIdFromSqlStatement(sql)\n const additionalFilters = getAdditionalFilters(\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n const partMask = SynapseConstants.BUNDLE_MASK_QUERY_RESULTS\n const request: QueryBundleRequest = {\n partMask,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n limit,\n additionalFilters,\n },\n }\n\n const queryResultBundle = await SynapseClient.getQueryTableResults(\n request,\n accessToken,\n )\n setIsLoading(false)\n const queryResults = queryResultBundle?.queryResult?.queryResults\n if (queryResults) {\n setRowSet(queryResults)\n } else {\n console.log('SubsectionRowRenderer: Error getting data')\n }\n }\n fetchData()\n }, [sql, accessToken, searchParams, sqlOperator])\n\n /**\n * If a \"friendly values map\" was provided, then use the friendly value if any of the raw values match.\n * Otherwise, just return the raw value.\n * @param rawValue\n * @returns\n */\n const getFriendlyValue = (rawValue: string) => {\n if (!friendlyValuesMap) {\n return rawValue\n }\n const friendlyValue = friendlyValuesMap[rawValue]\n return friendlyValue ? friendlyValue : rawValue\n }\n return (\n <div className=\"SubsectionRowRenderer\">\n {isLoading && <SkeletonTable numRows={2} numCols={1} />}\n {!isLoading &&\n rowSet &&\n rowSet.rows.length > 0 &&\n rowSet.headers.map((selectColumn, colIndex) => {\n // If a link column was provided (that contain URLs), do not create a page sub-section for that column.\n if (columnLink && selectColumn.name == columnLink.linkColumnName) {\n return <></>\n }\n return (\n <div\n key={`header-${colIndex}`}\n className=\"SubsectionRowRenderer__item\"\n role=\"table\"\n >\n <Typography\n variant={\n columnNameIsSectionTitle ? 'sectionTitle' : 'subsectionHeader'\n }\n role=\"heading\"\n style={{ paddingTop: '10px', marginBottom: '5px' }}\n >\n {selectColumn.name}\n </Typography>\n {columnNameIsSectionTitle && <hr />}\n <div role=\"rowgroup\">\n {rowSet.rows.map((row, rowIndex) => {\n const cellValue = row.values[colIndex]\n // If the cell value is undefined, then go to the next row.\n if (!cellValue) {\n return <></>\n }\n let values\n // If this cell value represents a multi-value (the select column type is a *_LIST column), then parse it and break it apart\n if (LIST_COLUMN_TYPES.includes(selectColumn.columnType)) {\n const jsonData: string[] = JSON.parse(cellValue)\n values = jsonData.map((val: string, index: number) => {\n return (\n <div\n key={`row-${rowIndex}-col-${colIndex}-multi-value`}\n className=\"SubsectionRowRenderer__item__value\"\n role=\"row\"\n >\n {isMarkdown && (\n <MarkdownSynapse markdown={getFriendlyValue(val)} />\n )}\n {!isMarkdown && <p>{getFriendlyValue(val)}</p>}\n </div>\n )\n })\n } else {\n // If this cell value represents a single value\n let renderedValue\n const friendlyCellValue = getFriendlyValue(cellValue)\n if (isMarkdown) {\n renderedValue = (\n <MarkdownSynapse markdown={friendlyCellValue} />\n )\n } else if (\n columnLink &&\n columnLink.matchColumnName == selectColumn.name\n ) {\n // If a link column was provided, then we need to create links (the url is in this other column)\n const urlColumnIndex = rowSet.headers.findIndex(\n col => col.name == columnLink.linkColumnName,\n )\n const values = row.values as string[]\n if (values.some(value => value === null)) {\n console.warn(\n 'Row has null value(s) when no nulls expected',\n )\n }\n\n if (urlColumnIndex > -1) {\n renderedValue = (\n <a\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href={values[urlColumnIndex]}\n >\n {friendlyCellValue}\n </a>\n )\n } else {\n renderedValue = <p>{friendlyCellValue}</p>\n }\n } else {\n renderedValue = <p>{friendlyCellValue}</p>\n }\n values = (\n <div\n key={`row-${rowIndex}-col-${colIndex}-single`}\n className=\"SubsectionRowRenderer__item__value\"\n role=\"row\"\n >\n {renderedValue}\n </div>\n )\n }\n return values\n })}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default SubsectionRowRenderer\n"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,IAAkC;CACtC,EAAe;CACf,EAAe;CACf,EAAe;CACf,EAAe;CACf,EAAe;AACjB;AAEA,SAAS,EAAsB,EAC7B,QACA,iBACA,gBACA,gBAAa,IACb,eACA,sBACA,8BAA2B,IAC3B,UACA,yCAC6B;CAC7B,IAAM,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAQ,KAAa,EAAiB,GACvC,CAAC,GAAW,KAAgB,EAAkB;CACpD,QAAkC;EAiChC,kBAhCoC;GAClC,EAAa,EAAI;GAQjB,IAAM,IAA8B;IAClC,UAAA;IACA,cAAc;IACd,UAVe,EAA8B,CAU7C;IACA,OAAO;KACL;KACA;KACA,mBAbsB,EACxB,GACA,GACA,CAUE;IACF;GACF,GAEM,IAAoB,MAAM,EAAc,qBAC5C,GACA,CACF;GACA,EAAa,EAAK;GAClB,IAAM,IAAe,GAAmB,aAAa;GACrD,AAAI,IACF,EAAU,CAAY,IAEtB,QAAQ,IAAI,2CAA2C;EAE3D,GACU;CACZ,GAAG;EAAC;EAAK;EAAa;EAAc;CAAW,CAAC;CAQhD,IAAM,KAAoB,MACnB,KAGiB,EAAkB,MAF/B;CAKX,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,KAAa,kBAAC,GAAD;GAAe,SAAS;GAAG,SAAS;EAAI,CAAA,GACrD,CAAC,KACA,KACA,EAAO,KAAK,SAAS,KACrB,EAAO,QAAQ,KAAK,GAAc,MAE5B,KAAc,EAAa,QAAQ,EAAW,iBACzC,kBAAA,GAAA,CAAI,CAAA,IAGX,kBAAC,OAAD;GAEE,WAAU;GACV,MAAK;aAHP;IAKE,kBAAC,GAAD;KACE,SACE,IAA2B,iBAAiB;KAE9C,MAAK;KACL,OAAO;MAAE,YAAY;MAAQ,cAAc;KAAM;eAEhD,EAAa;IACJ,CAAA;IACX,KAA4B,kBAAC,MAAD,CAAK,CAAA;IAClC,kBAAC,OAAD;KAAK,MAAK;eACP,EAAO,KAAK,KAAK,GAAK,MAAa;MAClC,IAAM,IAAY,EAAI,OAAO;MAE7B,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;MAEb,IAAI;MAEJ,IAAI,EAAkB,SAAS,EAAa,UAAU,GAEpD,IAD2B,KAAK,MAAM,CAC7B,EAAS,KAAK,GAAa,MAEhC,kBAAC,OAAD;OAEE,WAAU;OACV,MAAK;iBAHP,CAKG,KACC,kBAAC,GAAD,EAAiB,UAAU,EAAiB,CAAG,EAAI,CAAA,GAEpD,CAAC,KAAc,kBAAC,KAAD,EAAA,UAAI,EAAiB,CAAG,EAAK,CAAA,CAC1C;SARE,OAAO,EAAS,OAAO,EAAS,aAQlC,CAER;WACI;OAEL,IAAI,GACE,IAAoB,EAAiB,CAAS;OACpD,IAAI,GACF,IACE,kBAAC,GAAD,EAAiB,UAAU,EAAoB,CAAA;YAE5C,IACL,KACA,EAAW,mBAAmB,EAAa,MAC3C;QAEA,IAAM,IAAiB,EAAO,QAAQ,WACpC,MAAO,EAAI,QAAQ,EAAW,cAChC,GACM,IAAS,EAAI;QAOnB,AANI,EAAO,MAAK,MAAS,MAAU,IAAI,KACrC,QAAQ,KACN,8CACF,GAGF,AAWE,IAXE,IAAiB,KAEjB,kBAAC,KAAD;SACE,KAAI;SACJ,QAAO;SACP,MAAM,EAAO;mBAEZ;QACA,CAAA,IAGW,kBAAC,KAAD,EAAA,UAAI,EAAqB,CAAA;OAE7C,OACE,IAAgB,kBAAC,KAAD,EAAA,UAAI,EAAqB,CAAA;OAE3C,IACE,kBAAC,OAAD;QAEE,WAAU;QACV,MAAK;kBAEJ;OACE,GALE,OAAO,EAAS,OAAO,EAAS,QAKlC;MAET;MACA,OAAO;KACT,CAAC;IACE,CAAA;GACF;KA3FE,UAAU,GA2FZ,CAER,CACA;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dial.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/Dial.tsx"],"sourcesContent":["import React from 'react'\nimport { ReactComponent as LightDialPosition1 } from '../../assets/sustainability/dialPosition1.svg'\nimport { ReactComponent as LightDialPosition2 } from '../../assets/sustainability/dialPosition2.svg'\nimport { ReactComponent as LightDialPosition3 } from '../../assets/sustainability/dialPosition3.svg'\nimport { ReactComponent as LightDialPosition4 } from '../../assets/sustainability/dialPosition4.svg'\nimport { ReactComponent as DarkDialPosition1 } from '../../assets/sustainability/darkDialPosition1.svg'\nimport { ReactComponent as DarkDialPosition2 } from '../../assets/sustainability/darkDialPosition2.svg'\nimport { ReactComponent as DarkDialPosition3 } from '../../assets/sustainability/darkDialPosition3.svg'\nimport { ReactComponent as DarkDialPosition4 } from '../../assets/sustainability/darkDialPosition4.svg'\nimport DialLayout, { DialLayoutProps } from './DialLayout'\n\n// Returns a SVG dial image corresponding to the score descriptor (e.g. \"foundational\", \"intermediate\", etc.)\ntype DialProps = {\n scoreDescriptor: string\n isScorecardSummary?: boolean\n}\n\nexport type ScoreDescriptor =\n | 'Foundational'\n | 'Developing'\n | 'Maturing'\n | 'Stable'\n\nconst Dial = ({\n scoreDescriptor,\n isScorecardSummary,\n}: DialProps): React.ReactNode => {\n const toolTipText: Record<ScoreDescriptor, string> = {\n Foundational:\n 'Early-stage sustainability with opportunities for contributions',\n Developing: 'Strong in key sustainability areas',\n Maturing: 'Demonstrates strong sustainable practices',\n Stable: 'Maintained with long-term resilience in mind',\n }\n\n const lightDialComponents: Record<string, DialLayoutProps> = {\n foundational: { dial: <LightDialPosition1 />, label: 'Foundational' },\n developing: { dial: <LightDialPosition2 />, label: 'Developing' },\n maturing: { dial: <LightDialPosition3 />, label: 'Maturing' },\n stable: { dial: <LightDialPosition4 />, label: 'Stable' },\n }\n\n const darkDialComponents: Record<string, DialLayoutProps> = {\n foundational: { dial: <DarkDialPosition1 />, label: 'Foundational' },\n developing: { dial: <DarkDialPosition2 />, label: 'Developing' },\n maturing: { dial: <DarkDialPosition3 />, label: 'Maturing' },\n stable: { dial: <DarkDialPosition4 />, label: 'Stable' },\n }\n\n const key = scoreDescriptor.toLowerCase()\n\n const selectedMap = isScorecardSummary\n ? darkDialComponents\n : lightDialComponents\n\n const selected = selectedMap[key]\n\n if (!selected) return <LightDialPosition1 />\n\n return (\n <DialLayout\n dial={selected.dial}\n label={selected.label}\n toolTipText={isScorecardSummary ? undefined : toolTipText[selected.label]}\n />\n )\n}\n\nexport default Dial\n"],"mappings":";;;;;;;;;;;;AAuBA,IAAM,KAAQ,EACZ,oBACA,4BACgC;CAChC,IAAM,IAA+C;EACnD,cACE;EACF,YAAY;EACZ,UAAU;EACV,QAAQ;
|
|
1
|
+
{"version":3,"file":"Dial.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/Dial.tsx"],"sourcesContent":["import React from 'react'\nimport { ReactComponent as LightDialPosition1 } from '../../assets/sustainability/dialPosition1.svg'\nimport { ReactComponent as LightDialPosition2 } from '../../assets/sustainability/dialPosition2.svg'\nimport { ReactComponent as LightDialPosition3 } from '../../assets/sustainability/dialPosition3.svg'\nimport { ReactComponent as LightDialPosition4 } from '../../assets/sustainability/dialPosition4.svg'\nimport { ReactComponent as DarkDialPosition1 } from '../../assets/sustainability/darkDialPosition1.svg'\nimport { ReactComponent as DarkDialPosition2 } from '../../assets/sustainability/darkDialPosition2.svg'\nimport { ReactComponent as DarkDialPosition3 } from '../../assets/sustainability/darkDialPosition3.svg'\nimport { ReactComponent as DarkDialPosition4 } from '../../assets/sustainability/darkDialPosition4.svg'\nimport DialLayout, { DialLayoutProps } from './DialLayout'\n\n// Returns a SVG dial image corresponding to the score descriptor (e.g. \"foundational\", \"intermediate\", etc.)\ntype DialProps = {\n scoreDescriptor: string\n isScorecardSummary?: boolean\n}\n\nexport type ScoreDescriptor =\n | 'Foundational'\n | 'Developing'\n | 'Maturing'\n | 'Stable'\n\nconst Dial = ({\n scoreDescriptor,\n isScorecardSummary,\n}: DialProps): React.ReactNode => {\n const toolTipText: Record<ScoreDescriptor, string> = {\n Foundational:\n 'Early-stage sustainability with opportunities for contributions',\n Developing: 'Strong in key sustainability areas',\n Maturing: 'Demonstrates strong sustainable practices',\n Stable: 'Maintained with long-term resilience in mind',\n }\n\n const lightDialComponents: Record<string, DialLayoutProps> = {\n foundational: { dial: <LightDialPosition1 />, label: 'Foundational' },\n developing: { dial: <LightDialPosition2 />, label: 'Developing' },\n maturing: { dial: <LightDialPosition3 />, label: 'Maturing' },\n stable: { dial: <LightDialPosition4 />, label: 'Stable' },\n }\n\n const darkDialComponents: Record<string, DialLayoutProps> = {\n foundational: { dial: <DarkDialPosition1 />, label: 'Foundational' },\n developing: { dial: <DarkDialPosition2 />, label: 'Developing' },\n maturing: { dial: <DarkDialPosition3 />, label: 'Maturing' },\n stable: { dial: <DarkDialPosition4 />, label: 'Stable' },\n }\n\n const key = scoreDescriptor.toLowerCase()\n\n const selectedMap = isScorecardSummary\n ? darkDialComponents\n : lightDialComponents\n\n const selected = selectedMap[key]\n\n if (!selected) return <LightDialPosition1 />\n\n return (\n <DialLayout\n dial={selected.dial}\n label={selected.label}\n toolTipText={isScorecardSummary ? undefined : toolTipText[selected.label]}\n />\n )\n}\n\nexport default Dial\n"],"mappings":";;;;;;;;;;;;AAuBA,IAAM,KAAQ,EACZ,oBACA,4BACgC;CAChC,IAAM,IAA+C;EACnD,cACE;EACF,YAAY;EACZ,UAAU;EACV,QAAQ;CACV,GAEM,IAAuD;EAC3D,cAAc;GAAE,MAAM,kBAAC,GAAD,CAAqB,CAAA;GAAG,OAAO;EAAe;EACpE,YAAY;GAAE,MAAM,kBAAC,GAAD,CAAqB,CAAA;GAAG,OAAO;EAAa;EAChE,UAAU;GAAE,MAAM,kBAAC,GAAD,CAAqB,CAAA;GAAG,OAAO;EAAW;EAC5D,QAAQ;GAAE,MAAM,kBAAC,GAAD,CAAqB,CAAA;GAAG,OAAO;EAAS;CAC1D,GAEM,IAAsD;EAC1D,cAAc;GAAE,MAAM,kBAAC,GAAD,CAAoB,CAAA;GAAG,OAAO;EAAe;EACnE,YAAY;GAAE,MAAM,kBAAC,GAAD,CAAoB,CAAA;GAAG,OAAO;EAAa;EAC/D,UAAU;GAAE,MAAM,kBAAC,GAAD,CAAoB,CAAA;GAAG,OAAO;EAAW;EAC3D,QAAQ;GAAE,MAAM,kBAAC,GAAD,CAAoB,CAAA;GAAG,OAAO;EAAS;CACzD,GAEM,IAAM,EAAgB,YAAY,GAMlC,KAJc,IAChB,IACA,GAEyB;CAI7B,OAFK,IAGH,kBAAC,GAAD;EACE,MAAM,EAAS;EACf,OAAO,EAAS;EAChB,aAAa,IAAqB,KAAA,IAAY,EAAY,EAAS;CACpE,CAAA,IAPmB,kBAAC,GAAD,CAAqB,CAAA;AAS7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialLayout.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/DialLayout.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport { ReactElement } from 'react'\nimport { ScoreDescriptor } from './Dial'\n\nexport type DialLayoutProps = {\n dial: ReactElement\n label: ScoreDescriptor\n toolTipText?: string\n}\n\n// Displayed on entity header of details page\nconst DialLayout = ({\n dial,\n label,\n toolTipText,\n}: DialLayoutProps): React.ReactNode => {\n return (\n <Stack sx={{ alignItems: 'center', gap: '10px' }}>\n {dial}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Typography variant=\"smallText1\" sx={{ margin: '0 !important' }}>\n {label}\n </Typography>\n {toolTipText && (\n <Tooltip title={toolTipText}>\n <InfoTwoTone sx={{ width: '18px', height: '18px' }} />\n </Tooltip>\n )}\n </Box>\n </Stack>\n )\n}\n\nexport default DialLayout\n"],"mappings":";;;;;AAaA,IAAM,KAAc,EAClB,SACA,UACA,qBAGE,kBAAC,GAAD;CAAO,IAAI;EAAE,YAAY;EAAU,KAAK;
|
|
1
|
+
{"version":3,"file":"DialLayout.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/DialLayout.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport { ReactElement } from 'react'\nimport { ScoreDescriptor } from './Dial'\n\nexport type DialLayoutProps = {\n dial: ReactElement\n label: ScoreDescriptor\n toolTipText?: string\n}\n\n// Displayed on entity header of details page\nconst DialLayout = ({\n dial,\n label,\n toolTipText,\n}: DialLayoutProps): React.ReactNode => {\n return (\n <Stack sx={{ alignItems: 'center', gap: '10px' }}>\n {dial}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <Typography variant=\"smallText1\" sx={{ margin: '0 !important' }}>\n {label}\n </Typography>\n {toolTipText && (\n <Tooltip title={toolTipText}>\n <InfoTwoTone sx={{ width: '18px', height: '18px' }} />\n </Tooltip>\n )}\n </Box>\n </Stack>\n )\n}\n\nexport default DialLayout\n"],"mappings":";;;;;AAaA,IAAM,KAAc,EAClB,SACA,UACA,qBAGE,kBAAC,GAAD;CAAO,IAAI;EAAE,YAAY;EAAU,KAAK;CAAO;WAA/C,CACG,GACD,kBAAC,GAAD;EAAK,IAAI;GAAE,SAAS;GAAQ,YAAY;GAAU,KAAK;EAAM;YAA7D,CACE,kBAAC,GAAD;GAAY,SAAQ;GAAa,IAAI,EAAE,QAAQ,eAAe;aAC3D;EACS,CAAA,GACX,KACC,kBAAC,GAAD;GAAS,OAAO;aACd,kBAAC,GAAD,EAAa,IAAI;IAAE,OAAO;IAAQ,QAAQ;GAAO,EAAI,CAAA;EAC9C,CAAA,CAER;GACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SustainabilityScorecard.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecard.tsx"],"sourcesContent":["import {\n Box,\n Link as MuiLink,\n Skeleton,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport React from 'react'\nimport CloseIcon from '@mui/icons-material/Close'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\n\nimport { SxProps, Theme } from '@mui/material'\nimport {\n getMetricValues,\n SUSTAINABILITY_ICON_COLORS,\n SustainabilityScorecardBaseProps,\n} from './SustainabilityScorecardUtils'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport { CheckIcon } from '@/assets/icons/terms/CheckIcon'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport Dial from './Dial'\nimport { Link as RouterLink, useLocation } from 'react-router'\n\nexport type MetricsConfig = {\n /** Name of the metric column in the table */\n key: string\n /** Display label for the metric */\n label: string\n /** Shown as a tooltip in SustainabilityScorecard and as summary text in SustainabilityScorecardSummary */\n text?: string\n}\n\nexport type SustainabilityScorecardProps = SustainabilityScorecardBaseProps & {\n sx?: SxProps<Theme>\n sustainabilityReportLink?: string\n}\n\ntype MetricRowProps = {\n metricValues: string[]\n metricsConfig: MetricsConfig[]\n}\n\nconst MetricRow = ({\n metricValues,\n metricsConfig,\n}: MetricRowProps): React.ReactNode => {\n return (\n <>\n {metricsConfig.map((metric, index) => (\n <Box sx={{ display: 'flex', padding: '4px 20px' }} key={metric.key}>\n <Typography\n variant=\"smallText1\"\n sx={{ alignItems: 'center', display: 'flex', gap: '8px' }}\n >\n {metric.label}\n <Tooltip title={metric.text} placement=\"top\">\n <InfoTwoTone\n sx={{\n width: '18px',\n height: '18px',\n color: 'primary.contrastText',\n }}\n />\n </Tooltip>\n </Typography>\n {metricValues[index] === 'true' ? (\n <Box\n sx={{\n backgroundColor: SUSTAINABILITY_ICON_COLORS.check,\n borderRadius: '50%',\n width: 18,\n height: 18,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n }}\n >\n <CheckIcon\n sx={{ color: 'primary.contrastText', fontSize: '11px' }}\n />\n </Box>\n ) : (\n <Box\n sx={{\n backgroundColor: SUSTAINABILITY_ICON_COLORS.close,\n borderRadius: '50%',\n width: 18,\n height: 18,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n }}\n >\n <CloseIcon\n sx={{ color: 'primary.contrastText', fontSize: '14px' }}\n />\n </Box>\n )}\n </Box>\n ))}\n </>\n )\n}\n\n/* SustainabilityScorecard component displays sustainability metrics and a dial based on the sustainability score of the entity. */\nconst SustainabilityScorecard = ({\n metricsConfig,\n scoreDescriptorColumnName,\n queryRequest,\n sx,\n sustainabilityReportLink,\n}: SustainabilityScorecardProps): React.ReactNode => {\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryRequest)\n const location = useLocation()\n const search = location.search\n\n if (isLoading) {\n return <Skeleton width={'100%'} height={'100%'} />\n }\n\n const data = queryResultBundle?.queryResult!.queryResults\n\n if (data?.rows?.length === 0) {\n return (\n <Stack sx={{ display: 'flex', padding: '20px', ...sx }}>\n <Typography sx={{ paddingBottom: '20px' }} variant=\"subsectionHeader\">\n Sustainability Index\n </Typography>\n <NoContentAvailable />\n </Stack>\n )\n }\n\n const scoreDescriptorColIndex = getFieldIndex(\n scoreDescriptorColumnName,\n queryResultBundle,\n )\n\n const scoreDescriptor = data?.rows[0].values[scoreDescriptorColIndex]\n\n const metricValues = getMetricValues(\n data?.rows[0],\n queryResultBundle,\n metricsConfig,\n )\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n padding: '20px',\n gap: '20px',\n ...sx,\n }}\n >\n <Stack sx={{ display: 'flex', gap: '20px', alignItems: 'center' }}>\n <Typography variant=\"subsectionHeader\">Sustainability Index</Typography>\n <Dial scoreDescriptor={scoreDescriptor ?? ''} />\n </Stack>\n <Stack sx={{ flex: 1, gap: '2px' }}>\n <MetricRow metricValues={metricValues} metricsConfig={metricsConfig} />\n {sustainabilityReportLink && (\n <MuiLink\n component={RouterLink}\n to={{ pathname: sustainabilityReportLink, search }}\n sx={{ padding: '4px 20px', fontSize: '14px' }}\n >\n View this tool’s sustainability and reusability report\n </MuiLink>\n )}\n </Stack>\n </Box>\n )\n}\n\nexport default SustainabilityScorecard\n"],"mappings":";;;;;;;;;;;;;AA4CA,IAAM,KAAa,EACjB,iBACA,uBAGE,kBAAA,GAAA,EAAA,UACG,EAAc,KAAK,GAAQ,MAC1B,kBAAC,GAAD;CAAK,IAAI;EAAE,SAAS;EAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"SustainabilityScorecard.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecard.tsx"],"sourcesContent":["import {\n Box,\n Link as MuiLink,\n Skeleton,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport React from 'react'\nimport CloseIcon from '@mui/icons-material/Close'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\n\nimport { SxProps, Theme } from '@mui/material'\nimport {\n getMetricValues,\n SUSTAINABILITY_ICON_COLORS,\n SustainabilityScorecardBaseProps,\n} from './SustainabilityScorecardUtils'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport { CheckIcon } from '@/assets/icons/terms/CheckIcon'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport Dial from './Dial'\nimport { Link as RouterLink, useLocation } from 'react-router'\n\nexport type MetricsConfig = {\n /** Name of the metric column in the table */\n key: string\n /** Display label for the metric */\n label: string\n /** Shown as a tooltip in SustainabilityScorecard and as summary text in SustainabilityScorecardSummary */\n text?: string\n}\n\nexport type SustainabilityScorecardProps = SustainabilityScorecardBaseProps & {\n sx?: SxProps<Theme>\n sustainabilityReportLink?: string\n}\n\ntype MetricRowProps = {\n metricValues: string[]\n metricsConfig: MetricsConfig[]\n}\n\nconst MetricRow = ({\n metricValues,\n metricsConfig,\n}: MetricRowProps): React.ReactNode => {\n return (\n <>\n {metricsConfig.map((metric, index) => (\n <Box sx={{ display: 'flex', padding: '4px 20px' }} key={metric.key}>\n <Typography\n variant=\"smallText1\"\n sx={{ alignItems: 'center', display: 'flex', gap: '8px' }}\n >\n {metric.label}\n <Tooltip title={metric.text} placement=\"top\">\n <InfoTwoTone\n sx={{\n width: '18px',\n height: '18px',\n color: 'primary.contrastText',\n }}\n />\n </Tooltip>\n </Typography>\n {metricValues[index] === 'true' ? (\n <Box\n sx={{\n backgroundColor: SUSTAINABILITY_ICON_COLORS.check,\n borderRadius: '50%',\n width: 18,\n height: 18,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n }}\n >\n <CheckIcon\n sx={{ color: 'primary.contrastText', fontSize: '11px' }}\n />\n </Box>\n ) : (\n <Box\n sx={{\n backgroundColor: SUSTAINABILITY_ICON_COLORS.close,\n borderRadius: '50%',\n width: 18,\n height: 18,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n }}\n >\n <CloseIcon\n sx={{ color: 'primary.contrastText', fontSize: '14px' }}\n />\n </Box>\n )}\n </Box>\n ))}\n </>\n )\n}\n\n/* SustainabilityScorecard component displays sustainability metrics and a dial based on the sustainability score of the entity. */\nconst SustainabilityScorecard = ({\n metricsConfig,\n scoreDescriptorColumnName,\n queryRequest,\n sx,\n sustainabilityReportLink,\n}: SustainabilityScorecardProps): React.ReactNode => {\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryRequest)\n const location = useLocation()\n const search = location.search\n\n if (isLoading) {\n return <Skeleton width={'100%'} height={'100%'} />\n }\n\n const data = queryResultBundle?.queryResult!.queryResults\n\n if (data?.rows?.length === 0) {\n return (\n <Stack sx={{ display: 'flex', padding: '20px', ...sx }}>\n <Typography sx={{ paddingBottom: '20px' }} variant=\"subsectionHeader\">\n Sustainability Index\n </Typography>\n <NoContentAvailable />\n </Stack>\n )\n }\n\n const scoreDescriptorColIndex = getFieldIndex(\n scoreDescriptorColumnName,\n queryResultBundle,\n )\n\n const scoreDescriptor = data?.rows[0].values[scoreDescriptorColIndex]\n\n const metricValues = getMetricValues(\n data?.rows[0],\n queryResultBundle,\n metricsConfig,\n )\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n padding: '20px',\n gap: '20px',\n ...sx,\n }}\n >\n <Stack sx={{ display: 'flex', gap: '20px', alignItems: 'center' }}>\n <Typography variant=\"subsectionHeader\">Sustainability Index</Typography>\n <Dial scoreDescriptor={scoreDescriptor ?? ''} />\n </Stack>\n <Stack sx={{ flex: 1, gap: '2px' }}>\n <MetricRow metricValues={metricValues} metricsConfig={metricsConfig} />\n {sustainabilityReportLink && (\n <MuiLink\n component={RouterLink}\n to={{ pathname: sustainabilityReportLink, search }}\n sx={{ padding: '4px 20px', fontSize: '14px' }}\n >\n View this tool’s sustainability and reusability report\n </MuiLink>\n )}\n </Stack>\n </Box>\n )\n}\n\nexport default SustainabilityScorecard\n"],"mappings":";;;;;;;;;;;;;AA4CA,IAAM,KAAa,EACjB,iBACA,uBAGE,kBAAA,GAAA,EAAA,UACG,EAAc,KAAK,GAAQ,MAC1B,kBAAC,GAAD;CAAK,IAAI;EAAE,SAAS;EAAQ,SAAS;CAAW;WAAhD,CACE,kBAAC,GAAD;EACE,SAAQ;EACR,IAAI;GAAE,YAAY;GAAU,SAAS;GAAQ,KAAK;EAAM;YAF1D,CAIG,EAAO,OACR,kBAAC,GAAD;GAAS,OAAO,EAAO;GAAM,WAAU;aACrC,kBAAC,GAAD,EACE,IAAI;IACF,OAAO;IACP,QAAQ;IACR,OAAO;GACT,EACD,CAAA;EACM,CAAA,CACC;KACX,EAAa,OAAW,SACvB,kBAAC,GAAD;EACE,IAAI;GACF,iBAAiB,EAA2B;GAC5C,cAAc;GACd,OAAO;GACP,QAAQ;GACR,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,YAAY;EACd;YAEA,kBAAC,GAAD,EACE,IAAI;GAAE,OAAO;GAAwB,UAAU;EAAO,EACvD,CAAA;CACE,CAAA,IAEL,kBAAC,GAAD;EACE,IAAI;GACF,iBAAiB,EAA2B;GAC5C,cAAc;GACd,OAAO;GACP,QAAQ;GACR,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,YAAY;EACd;YAEA,kBAAC,GAAD,EACE,IAAI;GAAE,OAAO;GAAwB,UAAU;EAAO,EACvD,CAAA;CACE,CAAA,CAEJ;GAnDmD,EAAO,GAmD1D,CACN,EACD,CAAA,GAKA,KAA2B,EAC/B,kBACA,8BACA,iBACA,OACA,kCACmD;CACnD,IAAM,EAAE,MAAM,GAAmB,iBAC/B,EAAwB,CAAY,GAEhC,IADW,EACF,EAAS;CAExB,IAAI,GACF,OAAO,kBAAC,GAAD;EAAU,OAAO;EAAQ,QAAQ;CAAS,CAAA;CAGnD,IAAM,IAAO,GAAmB,YAAa;CAE7C,IAAI,GAAM,MAAM,WAAW,GACzB,OACE,kBAAC,GAAD;EAAO,IAAI;GAAE,SAAS;GAAQ,SAAS;GAAQ,GAAG;EAAG;YAArD,CACE,kBAAC,GAAD;GAAY,IAAI,EAAE,eAAe,OAAO;GAAG,SAAQ;aAAmB;EAE1D,CAAA,GACZ,kBAAC,GAAD,CAAqB,CAAA,CAChB;;CAIX,IAAM,IAA0B,EAC9B,GACA,CACF,GAEM,IAAkB,GAAM,KAAK,GAAG,OAAO,IAEvC,IAAe,EACnB,GAAM,KAAK,IACX,GACA,CACF;CAEA,OACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe;IAAE,IAAI;IAAU,IAAI;GAAM;GACzC,SAAS;GACT,KAAK;GACL,GAAG;EACL;YAPF,CASE,kBAAC,GAAD;GAAO,IAAI;IAAE,SAAS;IAAQ,KAAK;IAAQ,YAAY;GAAS;aAAhE,CACE,kBAAC,GAAD;IAAY,SAAQ;cAAmB;GAAgC,CAAA,GACvE,kBAAC,GAAD,EAAM,iBAAiB,KAAmB,GAAK,CAAA,CAC1C;MACP,kBAAC,GAAD;GAAO,IAAI;IAAE,MAAM;IAAG,KAAK;GAAM;aAAjC,CACE,kBAAC,GAAD;IAAyB;IAA6B;GAAgB,CAAA,GACrE,KACC,kBAAC,GAAD;IACE,WAAW;IACX,IAAI;KAAE,UAAU;KAA0B;IAAO;IACjD,IAAI;KAAE,SAAS;KAAY,UAAU;IAAO;cAC7C;GAEQ,CAAA,CAEN;IACJ;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SustainabilityScorecardSummary.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecardSummary.tsx"],"sourcesContent":["import React from 'react'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport {\n getMetricValues,\n SUSTAINABILITY_ICON_COLORS,\n SustainabilityScorecardBaseProps,\n} from './SustainabilityScorecardUtils'\nimport { Box, Card, Skeleton, Stack, Typography, useTheme } from '@mui/material'\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle'\nimport CancelIcon from '@mui/icons-material/Cancel'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport Dial from './Dial'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\nexport type SustainabilityScorecardSummaryProps =\n SustainabilityScorecardBaseProps & {\n description: React.ReactNode\n }\n\ntype MetricSummaryRowProps = {\n label: string\n markdownText: string\n index: number\n metricValues: string[]\n}\n\nconst MetricSummaryRow = ({\n label,\n markdownText,\n metricValues,\n index,\n}: MetricSummaryRowProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n padding: '24px 32px',\n alignItems: 'center',\n }}\n >\n <Box sx={{ maxWidth: '800px' }}>\n <Typography variant=\"headline3\" sx={{ marginBottom: '12px' }}>\n {label}\n </Typography>\n <Box\n sx={{\n '.markdown p': {\n color: 'grey.700',\n },\n }}\n >\n <MarkdownSynapse markdown={markdownText} />\n </Box>\n </Box>\n {metricValues[index] === 'true' ? (\n <CheckCircleIcon\n sx={{\n marginLeft: 'auto',\n fill: SUSTAINABILITY_ICON_COLORS.check,\n width: '32px',\n height: '32px',\n }}\n />\n ) : (\n <CancelIcon\n sx={{\n marginLeft: 'auto',\n fill: SUSTAINABILITY_ICON_COLORS.close,\n width: '32px',\n height: '32px',\n }}\n />\n )}\n </Box>\n )\n}\n\nconst SustainabilityScorecardSummary = ({\n queryRequest,\n description,\n metricsConfig,\n scoreDescriptorColumnName,\n}: SustainabilityScorecardSummaryProps): React.ReactNode => {\n const theme = useTheme()\n\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryRequest)\n\n if (isLoading) {\n return <Skeleton width={'100%'} height={'90px'} />\n }\n\n const data = queryResultBundle?.queryResult!.queryResults\n\n if (!data?.rows?.length) {\n return (\n <Box sx={{ paddingTop: '60px' }}>\n <NoContentAvailable />\n </Box>\n )\n }\n\n const scoreDescriptorColIndex = getFieldIndex(\n scoreDescriptorColumnName,\n queryResultBundle,\n )\n\n const scoreDescriptor = data?.rows[0].values[scoreDescriptorColIndex]\n\n const metricValues = getMetricValues(\n data?.rows[0],\n queryResultBundle,\n metricsConfig,\n )\n\n return (\n <Stack>\n <Box\n sx={{\n display: 'flex',\n gap: '40px',\n marginBottom: '30px',\n padding: '60px 12px 4px 0px',\n }}\n >\n <Box sx={{ flex: 1 }}>\n <Typography variant=\"headline1\" sx={{ marginBottom: '10px' }}>\n Sustainability Index\n </Typography>\n {description}\n </Box>\n <Dial\n scoreDescriptor={scoreDescriptor ?? ''}\n isScorecardSummary={true}\n />\n </Box>\n <Card>\n {metricsConfig.map((metric, index) => (\n <Box\n key={metric.key}\n sx={{\n borderBottom:\n index !== metricsConfig.length - 1\n ? `1px solid ${theme.palette.grey[300]}`\n : undefined,\n }}\n >\n <MetricSummaryRow\n label={metric.label}\n markdownText={metric.text ?? ''}\n index={index}\n metricValues={metricValues}\n />\n </Box>\n ))}\n </Card>\n </Stack>\n )\n}\n\nexport default SustainabilityScorecardSummary\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAM,KAAoB,EACxB,UACA,iBACA,iBACA,eAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;
|
|
1
|
+
{"version":3,"file":"SustainabilityScorecardSummary.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecardSummary.tsx"],"sourcesContent":["import React from 'react'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport {\n getMetricValues,\n SUSTAINABILITY_ICON_COLORS,\n SustainabilityScorecardBaseProps,\n} from './SustainabilityScorecardUtils'\nimport { Box, Card, Skeleton, Stack, Typography, useTheme } from '@mui/material'\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle'\nimport CancelIcon from '@mui/icons-material/Cancel'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport Dial from './Dial'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\nexport type SustainabilityScorecardSummaryProps =\n SustainabilityScorecardBaseProps & {\n description: React.ReactNode\n }\n\ntype MetricSummaryRowProps = {\n label: string\n markdownText: string\n index: number\n metricValues: string[]\n}\n\nconst MetricSummaryRow = ({\n label,\n markdownText,\n metricValues,\n index,\n}: MetricSummaryRowProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n padding: '24px 32px',\n alignItems: 'center',\n }}\n >\n <Box sx={{ maxWidth: '800px' }}>\n <Typography variant=\"headline3\" sx={{ marginBottom: '12px' }}>\n {label}\n </Typography>\n <Box\n sx={{\n '.markdown p': {\n color: 'grey.700',\n },\n }}\n >\n <MarkdownSynapse markdown={markdownText} />\n </Box>\n </Box>\n {metricValues[index] === 'true' ? (\n <CheckCircleIcon\n sx={{\n marginLeft: 'auto',\n fill: SUSTAINABILITY_ICON_COLORS.check,\n width: '32px',\n height: '32px',\n }}\n />\n ) : (\n <CancelIcon\n sx={{\n marginLeft: 'auto',\n fill: SUSTAINABILITY_ICON_COLORS.close,\n width: '32px',\n height: '32px',\n }}\n />\n )}\n </Box>\n )\n}\n\nconst SustainabilityScorecardSummary = ({\n queryRequest,\n description,\n metricsConfig,\n scoreDescriptorColumnName,\n}: SustainabilityScorecardSummaryProps): React.ReactNode => {\n const theme = useTheme()\n\n const { data: queryResultBundle, isLoading } =\n useGetQueryResultBundle(queryRequest)\n\n if (isLoading) {\n return <Skeleton width={'100%'} height={'90px'} />\n }\n\n const data = queryResultBundle?.queryResult!.queryResults\n\n if (!data?.rows?.length) {\n return (\n <Box sx={{ paddingTop: '60px' }}>\n <NoContentAvailable />\n </Box>\n )\n }\n\n const scoreDescriptorColIndex = getFieldIndex(\n scoreDescriptorColumnName,\n queryResultBundle,\n )\n\n const scoreDescriptor = data?.rows[0].values[scoreDescriptorColIndex]\n\n const metricValues = getMetricValues(\n data?.rows[0],\n queryResultBundle,\n metricsConfig,\n )\n\n return (\n <Stack>\n <Box\n sx={{\n display: 'flex',\n gap: '40px',\n marginBottom: '30px',\n padding: '60px 12px 4px 0px',\n }}\n >\n <Box sx={{ flex: 1 }}>\n <Typography variant=\"headline1\" sx={{ marginBottom: '10px' }}>\n Sustainability Index\n </Typography>\n {description}\n </Box>\n <Dial\n scoreDescriptor={scoreDescriptor ?? ''}\n isScorecardSummary={true}\n />\n </Box>\n <Card>\n {metricsConfig.map((metric, index) => (\n <Box\n key={metric.key}\n sx={{\n borderBottom:\n index !== metricsConfig.length - 1\n ? `1px solid ${theme.palette.grey[300]}`\n : undefined,\n }}\n >\n <MetricSummaryRow\n label={metric.label}\n markdownText={metric.text ?? ''}\n index={index}\n metricValues={metricValues}\n />\n </Box>\n ))}\n </Card>\n </Stack>\n )\n}\n\nexport default SustainabilityScorecardSummary\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAM,KAAoB,EACxB,UACA,iBACA,iBACA,eAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;CACd;WALF,CAOE,kBAAC,GAAD;EAAK,IAAI,EAAE,UAAU,QAAQ;YAA7B,CACE,kBAAC,GAAD;GAAY,SAAQ;GAAY,IAAI,EAAE,cAAc,OAAO;aACxD;EACS,CAAA,GACZ,kBAAC,GAAD;GACE,IAAI,EACF,eAAe,EACb,OAAO,WACT,EACF;aAEA,kBAAC,GAAD,EAAiB,UAAU,EAAe,CAAA;EACvC,CAAA,CACF;KACJ,EAAa,OAAW,SACvB,kBAAC,GAAD,EACE,IAAI;EACF,YAAY;EACZ,MAAM,EAA2B;EACjC,OAAO;EACP,QAAQ;CACV,EACD,CAAA,IAED,kBAAC,GAAD,EACE,IAAI;EACF,YAAY;EACZ,MAAM,EAA2B;EACjC,OAAO;EACP,QAAQ;CACV,EACD,CAAA,CAEA;IAIH,KAAkC,EACtC,iBACA,gBACA,kBACA,mCAC0D;CAC1D,IAAM,IAAQ,EAAS,GAEjB,EAAE,MAAM,GAAmB,iBAC/B,EAAwB,CAAY;CAEtC,IAAI,GACF,OAAO,kBAAC,GAAD;EAAU,OAAO;EAAQ,QAAQ;CAAS,CAAA;CAGnD,IAAM,IAAO,GAAmB,YAAa;CAE7C,IAAI,CAAC,GAAM,MAAM,QACf,OACE,kBAAC,GAAD;EAAK,IAAI,EAAE,YAAY,OAAO;YAC5B,kBAAC,GAAD,CAAqB,CAAA;CAClB,CAAA;CAIT,IAAM,IAA0B,EAC9B,GACA,CACF,GAEM,IAAkB,GAAM,KAAK,GAAG,OAAO,IAEvC,IAAe,EACnB,GAAM,KAAK,IACX,GACA,CACF;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,cAAc;GACd,SAAS;EACX;YANF,CAQE,kBAAC,GAAD;GAAK,IAAI,EAAE,MAAM,EAAE;aAAnB,CACE,kBAAC,GAAD;IAAY,SAAQ;IAAY,IAAI,EAAE,cAAc,OAAO;cAAG;GAElD,CAAA,GACX,CACE;MACL,kBAAC,GAAD;GACE,iBAAiB,KAAmB;GACpC,oBAAoB;EACrB,CAAA,CACE;KACL,kBAAC,GAAD,EAAA,UACG,EAAc,KAAK,GAAQ,MAC1B,kBAAC,GAAD;EAEE,IAAI,EACF,cACE,MAAU,EAAc,SAAS,IAE7B,KAAA,IADA,aAAa,EAAM,QAAQ,KAAK,OAExC;YAEA,kBAAC,GAAD;GACE,OAAO,EAAO;GACd,cAAc,EAAO,QAAQ;GACtB;GACO;EACf,CAAA;CACE,GAdE,EAAO,GAcT,CACN,EACG,CAAA,CACD,EAAA,CAAA;AAEX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SustainabilityScorecardUtils.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecardUtils.tsx"],"sourcesContent":["import {\n QueryBundleRequest,\n QueryResultBundle,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SustainabilityScorecardProps } from './SustainabilityScorecard'\n\nexport const SUSTAINABILITY_ICON_COLORS = {\n check: '#52A31C',\n close: '#C13415',\n}\n\nexport type MetricsConfig = {\n /** Name of the metric column in the table */\n key: string\n /** Display label for the metric */\n label: string\n /** Shown as a tooltip in SustainabilityScorecard and as summary text in SustainabilityScorecardSummary */\n text?: string\n}\n\nexport type SustainabilityScorecardBaseProps = {\n queryRequest: QueryBundleRequest\n metricsConfig: MetricsConfig[]\n /** Name of the URL search parameter used to filter the data. */\n searchParamKey: string\n /** The name of the column in the table to apply the filter to. */\n filterColumn: string\n scoreDescriptorColumnName: string\n}\n\n/**\n * Maps each metric key to its value in the row\n * Returns an array of metric values in the same order as `metricsConfig`\n */\nexport const getMetricValues = (\n row: Row | undefined,\n queryResultBundle: QueryResultBundle | undefined,\n metricsConfig: MetricsConfig[],\n) => {\n if (!row) return []\n return metricsConfig.map(metric => {\n const index = getFieldIndex(metric.key, queryResultBundle)\n return row.values[index] ?? ''\n })\n}\n\nexport const getSelectedColumns = (\n metricsConfig: MetricsConfig[],\n scoreDescriptorColumnName: string,\n): string[] =>\n metricsConfig.map(metric => metric.key).concat(scoreDescriptorColumnName)\n\n/**\n * Creates an array of metric config objects from a QueryResultBundle.\n * @param bundle - The Synapse QueryResultBundle containing metric config data (key, label, summaryText, tooltipText)\n * @param textColumn - The name of the column to use for the `text` field ('summaryText' for the SustainabilityScorecardSummary component and 'tooltipText' for the SustainabilityScorecard component)\n */\nexport function getMetricConfig(\n bundle: QueryResultBundle | undefined,\n textColumn: 'summaryText' | 'tooltipText',\n): MetricsConfig[] {\n const rows = bundle?.queryResult?.queryResults?.rows\n const headers = bundle?.queryResult?.queryResults?.headers\n if (!rows || !headers) return []\n\n const keyColIndex = getFieldIndex('key', bundle)\n const labelColIndex = getFieldIndex('label', bundle)\n const textColIndex = getFieldIndex(textColumn, bundle)\n\n return rows.map(row => ({\n key: row.values[keyColIndex] ?? '',\n label: row.values[labelColIndex] ?? '',\n text: row.values[textColIndex] ?? '',\n }))\n}\n\n/**\n * Custom hook that returns the provided SustainabilityScorecardProps only if the query returns data.\n * Helps conditionally render `SustainabilityScorecard` component\n * @param props - The props containing the queryRequest, metricsConfig, searchParamKey, filterColumn, and scoreDescriptorColumnName.\n */\nexport function useSustainabilityScorecardIfHasData(\n props: SustainabilityScorecardProps,\n): SustainabilityScorecardProps | undefined {\n const { data: queryResultBundle, isLoading } = useGetQueryResultBundle(\n props.queryRequest,\n )\n\n const rows = queryResultBundle?.queryResult?.queryResults?.rows\n const hasSustainabilityData = Array.isArray(rows) && rows.length > 0\n\n if (isLoading || !hasSustainabilityData) {\n return undefined\n }\n\n return props\n}\n"],"mappings":";;;AASA,IAAa,IAA6B;CACxC,OAAO;CACP,OAAO;
|
|
1
|
+
{"version":3,"file":"SustainabilityScorecardUtils.js","names":[],"sources":["../../../src/components/SustainabilityScorecard/SustainabilityScorecardUtils.tsx"],"sourcesContent":["import {\n QueryBundleRequest,\n QueryResultBundle,\n Row,\n} from '@sage-bionetworks/synapse-types'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SustainabilityScorecardProps } from './SustainabilityScorecard'\n\nexport const SUSTAINABILITY_ICON_COLORS = {\n check: '#52A31C',\n close: '#C13415',\n}\n\nexport type MetricsConfig = {\n /** Name of the metric column in the table */\n key: string\n /** Display label for the metric */\n label: string\n /** Shown as a tooltip in SustainabilityScorecard and as summary text in SustainabilityScorecardSummary */\n text?: string\n}\n\nexport type SustainabilityScorecardBaseProps = {\n queryRequest: QueryBundleRequest\n metricsConfig: MetricsConfig[]\n /** Name of the URL search parameter used to filter the data. */\n searchParamKey: string\n /** The name of the column in the table to apply the filter to. */\n filterColumn: string\n scoreDescriptorColumnName: string\n}\n\n/**\n * Maps each metric key to its value in the row\n * Returns an array of metric values in the same order as `metricsConfig`\n */\nexport const getMetricValues = (\n row: Row | undefined,\n queryResultBundle: QueryResultBundle | undefined,\n metricsConfig: MetricsConfig[],\n) => {\n if (!row) return []\n return metricsConfig.map(metric => {\n const index = getFieldIndex(metric.key, queryResultBundle)\n return row.values[index] ?? ''\n })\n}\n\nexport const getSelectedColumns = (\n metricsConfig: MetricsConfig[],\n scoreDescriptorColumnName: string,\n): string[] =>\n metricsConfig.map(metric => metric.key).concat(scoreDescriptorColumnName)\n\n/**\n * Creates an array of metric config objects from a QueryResultBundle.\n * @param bundle - The Synapse QueryResultBundle containing metric config data (key, label, summaryText, tooltipText)\n * @param textColumn - The name of the column to use for the `text` field ('summaryText' for the SustainabilityScorecardSummary component and 'tooltipText' for the SustainabilityScorecard component)\n */\nexport function getMetricConfig(\n bundle: QueryResultBundle | undefined,\n textColumn: 'summaryText' | 'tooltipText',\n): MetricsConfig[] {\n const rows = bundle?.queryResult?.queryResults?.rows\n const headers = bundle?.queryResult?.queryResults?.headers\n if (!rows || !headers) return []\n\n const keyColIndex = getFieldIndex('key', bundle)\n const labelColIndex = getFieldIndex('label', bundle)\n const textColIndex = getFieldIndex(textColumn, bundle)\n\n return rows.map(row => ({\n key: row.values[keyColIndex] ?? '',\n label: row.values[labelColIndex] ?? '',\n text: row.values[textColIndex] ?? '',\n }))\n}\n\n/**\n * Custom hook that returns the provided SustainabilityScorecardProps only if the query returns data.\n * Helps conditionally render `SustainabilityScorecard` component\n * @param props - The props containing the queryRequest, metricsConfig, searchParamKey, filterColumn, and scoreDescriptorColumnName.\n */\nexport function useSustainabilityScorecardIfHasData(\n props: SustainabilityScorecardProps,\n): SustainabilityScorecardProps | undefined {\n const { data: queryResultBundle, isLoading } = useGetQueryResultBundle(\n props.queryRequest,\n )\n\n const rows = queryResultBundle?.queryResult?.queryResults?.rows\n const hasSustainabilityData = Array.isArray(rows) && rows.length > 0\n\n if (isLoading || !hasSustainabilityData) {\n return undefined\n }\n\n return props\n}\n"],"mappings":";;;AASA,IAAa,IAA6B;CACxC,OAAO;CACP,OAAO;AACT,GAyBa,KACX,GACA,GACA,MAEK,IACE,EAAc,KAAI,MAAU;CACjC,IAAM,IAAQ,EAAc,EAAO,KAAK,CAAiB;CACzD,OAAO,EAAI,OAAO,MAAU;AAC9B,CAAC,IAJgB,CAAC,GAOP,KACX,GACA,MAEA,EAAc,KAAI,MAAU,EAAO,GAAG,EAAE,OAAO,CAAyB;AAO1E,SAAgB,EACd,GACA,GACiB;CACjB,IAAM,IAAO,GAAQ,aAAa,cAAc,MAC1C,IAAU,GAAQ,aAAa,cAAc;CACnD,IAAI,CAAC,KAAQ,CAAC,GAAS,OAAO,CAAC;CAE/B,IAAM,IAAc,EAAc,OAAO,CAAM,GACzC,IAAgB,EAAc,SAAS,CAAM,GAC7C,IAAe,EAAc,GAAY,CAAM;CAErD,OAAO,EAAK,KAAI,OAAQ;EACtB,KAAK,EAAI,OAAO,MAAgB;EAChC,OAAO,EAAI,OAAO,MAAkB;EACpC,MAAM,EAAI,OAAO,MAAiB;CACpC,EAAE;AACJ;AAOA,SAAgB,EACd,GAC0C;CAC1C,IAAM,EAAE,MAAM,GAAmB,iBAAc,EAC7C,EAAM,YACR,GAEM,IAAO,GAAmB,aAAa,cAAc,MACrD,IAAwB,MAAM,QAAQ,CAAI,KAAK,EAAK,SAAS;CAE/D,WAAa,CAAC,IAIlB,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessLevelMenu.js","names":[],"sources":["../../../src/components/SynapseChat/AccessLevelMenu.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Typography } from '@mui/material'\nimport { AgentAccessLevel } from '@sage-bionetworks/synapse-types'\nimport DropdownSelect from '../DropdownSelect'\n\nexport type AccessLevelMenuProps = {\n initAccessLevel: AgentAccessLevel\n onChange: (newAccessLevel: AgentAccessLevel) => void\n}\n\nconst accessLevelOptions = [\n { value: AgentAccessLevel.PUBLICLY_ACCESSIBLE, label: 'Public Data Only' },\n {\n value: AgentAccessLevel.READ_YOUR_PRIVATE_DATA,\n label: 'Read Your Private Data',\n },\n {\n value: AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA,\n label: 'Read & Write Your Data',\n },\n]\n\nexport function AccessLevelMenu({\n onChange,\n initAccessLevel,\n}: AccessLevelMenuProps) {\n const initOption = accessLevelOptions.findIndex(\n v => v.value == initAccessLevel,\n )\n const options = accessLevelOptions.map(v => v.label)\n const [selectedIndex, setSelectedIndex] = useState(initOption)\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n mt: '20px',\n }}\n >\n <Typography\n variant=\"label\"\n sx={{ gridColumn: '2', mt: '10px', mr: '15px' }}\n >\n Access:\n </Typography>\n <DropdownSelect\n variant={'outlined'}\n options={options}\n selectedIndex={selectedIndex}\n setSelectedIndex={index => {\n if (selectedIndex !== index) {\n setSelectedIndex(index)\n onChange(accessLevelOptions[index].value)\n }\n }}\n />\n </Box>\n )\n}\n\nexport default AccessLevelMenu\n"],"mappings":";;;;;;AAUA,IAAM,IAAqB;CACzB;EAAE,OAAO,EAAiB;EAAqB,OAAO;
|
|
1
|
+
{"version":3,"file":"AccessLevelMenu.js","names":[],"sources":["../../../src/components/SynapseChat/AccessLevelMenu.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Box, Typography } from '@mui/material'\nimport { AgentAccessLevel } from '@sage-bionetworks/synapse-types'\nimport DropdownSelect from '../DropdownSelect'\n\nexport type AccessLevelMenuProps = {\n initAccessLevel: AgentAccessLevel\n onChange: (newAccessLevel: AgentAccessLevel) => void\n}\n\nconst accessLevelOptions = [\n { value: AgentAccessLevel.PUBLICLY_ACCESSIBLE, label: 'Public Data Only' },\n {\n value: AgentAccessLevel.READ_YOUR_PRIVATE_DATA,\n label: 'Read Your Private Data',\n },\n {\n value: AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA,\n label: 'Read & Write Your Data',\n },\n]\n\nexport function AccessLevelMenu({\n onChange,\n initAccessLevel,\n}: AccessLevelMenuProps) {\n const initOption = accessLevelOptions.findIndex(\n v => v.value == initAccessLevel,\n )\n const options = accessLevelOptions.map(v => v.label)\n const [selectedIndex, setSelectedIndex] = useState(initOption)\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n mt: '20px',\n }}\n >\n <Typography\n variant=\"label\"\n sx={{ gridColumn: '2', mt: '10px', mr: '15px' }}\n >\n Access:\n </Typography>\n <DropdownSelect\n variant={'outlined'}\n options={options}\n selectedIndex={selectedIndex}\n setSelectedIndex={index => {\n if (selectedIndex !== index) {\n setSelectedIndex(index)\n onChange(accessLevelOptions[index].value)\n }\n }}\n />\n </Box>\n )\n}\n\nexport default AccessLevelMenu\n"],"mappings":";;;;;;AAUA,IAAM,IAAqB;CACzB;EAAE,OAAO,EAAiB;EAAqB,OAAO;CAAmB;CACzE;EACE,OAAO,EAAiB;EACxB,OAAO;CACT;CACA;EACE,OAAO,EAAiB;EACxB,OAAO;CACT;AACF;AAEA,SAAgB,EAAgB,EAC9B,aACA,sBACuB;CACvB,IAAM,IAAa,EAAmB,WACpC,MAAK,EAAE,SAAS,CAClB,GACM,IAAU,EAAmB,KAAI,MAAK,EAAE,KAAK,GAC7C,CAAC,GAAe,KAAoB,EAAS,CAAU;CAC7D,OACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,gBAAgB;GAChB,IAAI;EACN;YALF,CAOE,kBAAC,GAAD;GACE,SAAQ;GACR,IAAI;IAAE,YAAY;IAAK,IAAI;IAAQ,IAAI;GAAO;aAC/C;EAEW,CAAA,GACZ,kBAAC,GAAD;GACE,SAAS;GACA;GACM;GACf,mBAAkB,MAAS;IACzB,AAAI,MAAkB,MACpB,EAAiB,CAAK,GACtB,EAAS,EAAmB,GAAO,KAAK;GAE5C;EACD,CAAA,CACE;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridAgentChat.js","names":[],"sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"sourcesContent":["import { useChatState } from '@/components/SynapseChat/useChatState'\nimport { GridAgentSessionContext } from '@sage-bionetworks/synapse-client'\nimport { AgentAccessLevel, AgentSession } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DraggableDialog from '../DraggableDialog/DraggableDialog'\nimport { SynapseChat } from './index'\n\nconst suggestedPrompts = [\n 'Help me fill this out',\n 'Help me understand this',\n 'Find missing fields',\n]\n\nexport type GridAgentChatProps = {\n gridSessionId: string\n usersReplicaId: number\n chatbotName?: string\n initialMessage?: string\n open: boolean\n onClose: () => void\n /** Optional ID to use a different agent registered in Synapse */\n agentRegistrationId?: string\n}\n\nexport function GridAgentChat({\n gridSessionId,\n usersReplicaId,\n chatbotName = 'Grid Assistant',\n initialMessage,\n open,\n onClose,\n agentRegistrationId,\n}: GridAgentChatProps) {\n // Storing state for the chat session here preserves chat history while the dialog is opened and closed.\n const [agentSession, setAgentSession] = useState<AgentSession | undefined>()\n const chatState = useChatState(agentSession)\n\n // Create session context for grid sessions\n const sessionContext: GridAgentSessionContext = {\n concreteType:\n 'org.sagebionetworks.repo.model.agent.GridAgentSessionContext',\n gridSessionId,\n usersReplicaId,\n }\n\n return (\n <DraggableDialog open={open} onClose={onClose} title={chatbotName}>\n <SynapseChat\n agentRegistrationId={agentRegistrationId}\n chatbotName={chatbotName}\n initialMessage={initialMessage}\n sessionContext={sessionContext}\n textboxPositionOffset=\"16px\"\n hideTitle={true}\n showAccessLevelMenu={false}\n defaultAgentAccessLevel={AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA}\n // lift state: allow GridAgentChat to control the agent session and interactions\n externalSession={agentSession}\n setExternalSession={setAgentSession}\n externalChatState={chatState}\n suggestedPrompts={suggestedPrompts}\n />\n </DraggableDialog>\n )\n}\n\nexport default GridAgentChat\n"],"mappings":";;;;;;;;AAOA,IAAM,IAAmB;CACvB;CACA;CACA;
|
|
1
|
+
{"version":3,"file":"GridAgentChat.js","names":[],"sources":["../../../src/components/SynapseChat/GridAgentChat.tsx"],"sourcesContent":["import { useChatState } from '@/components/SynapseChat/useChatState'\nimport { GridAgentSessionContext } from '@sage-bionetworks/synapse-client'\nimport { AgentAccessLevel, AgentSession } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DraggableDialog from '../DraggableDialog/DraggableDialog'\nimport { SynapseChat } from './index'\n\nconst suggestedPrompts = [\n 'Help me fill this out',\n 'Help me understand this',\n 'Find missing fields',\n]\n\nexport type GridAgentChatProps = {\n gridSessionId: string\n usersReplicaId: number\n chatbotName?: string\n initialMessage?: string\n open: boolean\n onClose: () => void\n /** Optional ID to use a different agent registered in Synapse */\n agentRegistrationId?: string\n}\n\nexport function GridAgentChat({\n gridSessionId,\n usersReplicaId,\n chatbotName = 'Grid Assistant',\n initialMessage,\n open,\n onClose,\n agentRegistrationId,\n}: GridAgentChatProps) {\n // Storing state for the chat session here preserves chat history while the dialog is opened and closed.\n const [agentSession, setAgentSession] = useState<AgentSession | undefined>()\n const chatState = useChatState(agentSession)\n\n // Create session context for grid sessions\n const sessionContext: GridAgentSessionContext = {\n concreteType:\n 'org.sagebionetworks.repo.model.agent.GridAgentSessionContext',\n gridSessionId,\n usersReplicaId,\n }\n\n return (\n <DraggableDialog open={open} onClose={onClose} title={chatbotName}>\n <SynapseChat\n agentRegistrationId={agentRegistrationId}\n chatbotName={chatbotName}\n initialMessage={initialMessage}\n sessionContext={sessionContext}\n textboxPositionOffset=\"16px\"\n hideTitle={true}\n showAccessLevelMenu={false}\n defaultAgentAccessLevel={AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA}\n // lift state: allow GridAgentChat to control the agent session and interactions\n externalSession={agentSession}\n setExternalSession={setAgentSession}\n externalChatState={chatState}\n suggestedPrompts={suggestedPrompts}\n />\n </DraggableDialog>\n )\n}\n\nexport default GridAgentChat\n"],"mappings":";;;;;;;;AAOA,IAAM,IAAmB;CACvB;CACA;CACA;AACF;AAaA,SAAgB,EAAc,EAC5B,kBACA,mBACA,iBAAc,kBACd,mBACA,SACA,YACA,0BACqB;CAErB,IAAM,CAAC,GAAc,KAAmB,EAAmC,GACrE,IAAY,EAAa,CAAY;CAU3C,OACE,kBAAC,GAAD;EAAuB;EAAe;EAAS,OAAO;YACpD,kBAAC,GAAD;GACuB;GACR;GACG;GACA,gBAAA;IAZpB,cACE;IACF;IACA;GASoB;GAChB,uBAAsB;GACtB,WAAW;GACX,qBAAqB;GACrB,yBAAyB,EAAiB;GAE1C,iBAAiB;GACjB,oBAAoB;GACpB,mBAAmB;GACD;EACnB,CAAA;CACc,CAAA;AAErB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseChat.js","names":[],"sources":["../../../src/components/SynapseChat/SynapseChat.tsx"],"sourcesContent":["import { ChatState, useChatState } from '@/components/SynapseChat/useChatState'\nimport {\n useCreateAgentSession,\n useUpdateAgentSession,\n} from '@/synapse-queries/chat/useChat'\nimport { useSynapseContext } from '@/utils'\nimport { ArrowUpward } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Chip,\n IconButton,\n List,\n Stack,\n TextField,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { Color } from '@mui/material/styles'\nimport { GridAgentSessionContext } from '@sage-bionetworks/synapse-client'\nimport {\n AgentAccessLevel,\n AgentSession,\n TraceEvent,\n} from '@sage-bionetworks/synapse-types'\nimport { KeyboardEventHandler, useEffect, useState } from 'react'\nimport { SkeletonParagraph } from '../Skeleton'\nimport { displayToast } from '../ToastMessage'\nimport AccessLevelMenu from './AccessLevelMenu'\nimport SynapseChatInteraction from './SynapseChatInteraction'\nimport SynapseChatMessage from './SynapseChatMessage'\n\nexport type SynapseChatProps = {\n initialMessage?: string //optional initial message\n agentRegistrationId?: string // if provided, use this agent\n chatbotName?: string // optional name of this chatbot agent\n hideTitle?: boolean\n textboxPositionOffset?: string // when embedded in a form, the textbox (form) stuck to the bottom may need to be offset due to container padding (dialog content for example!)\n /* optional session context for the agent session */\n sessionContext?: GridAgentSessionContext\n /* The current session, if state is lifted out of this component */\n externalSession?: AgentSession\n /* A callback invoked to bootstrap the current session, if state is to be lifted out of this component */\n setExternalSession?: (s: AgentSession | undefined) => void\n /* The current chat history, if state is lifted out of this component */\n externalChatState?: ChatState\n // default access level for the agent session.\n defaultAgentAccessLevel?: AgentAccessLevel\n // Whether to show the access level menu for the agent session.\n showAccessLevelMenu?: boolean\n /**\n * Optional callback invoked once when a chat response is received from the server.\n * Use this for side effects such as navigation based on the response content.\n * Called in the mutation onSuccess handler so it runs exactly once per response.\n */\n onChatResponse?: (responseText: string) => void\n /** Optional list of prompt suggestions shown as clickable pills above the text input */\n suggestedPrompts?: string[]\n}\n\nexport type ChatInteraction = {\n userMessage: string\n chatResponseText?: string\n chatErrorReason?: string\n chatResponseTrace?: TraceEventWithFriendlyMessage[]\n}\n\nexport type TraceEventWithFriendlyMessage = {\n friendlyMessage?: string\n} & TraceEvent\n\nexport function SynapseChat({\n initialMessage,\n agentRegistrationId,\n chatbotName = 'SynapseChat',\n hideTitle = false,\n textboxPositionOffset = '0px',\n sessionContext,\n externalSession,\n setExternalSession,\n externalChatState,\n showAccessLevelMenu = true,\n onChatResponse,\n suggestedPrompts,\n}: SynapseChatProps) {\n const { accessToken } = useSynapseContext()\n const [localAgentSession, setLocalAgentSession] = useState<AgentSession>()\n const agentSession = externalSession ?? localAgentSession\n const setAgentSession = setExternalSession ?? setLocalAgentSession\n\n const { mutate: createAgentSession, error: createAgentSessionError } =\n useCreateAgentSession({\n onSuccess: newAgentSession => setAgentSession(newAgentSession),\n })\n\n const { mutate: updateAgentSession } = useUpdateAgentSession({\n onSuccess: updatedAgentSession => setAgentSession(updatedAgentSession),\n onError: err =>\n displayToast(\n `Unable to update the agent session: ${err.message}`,\n 'danger',\n ),\n })\n const theme = useTheme()\n const [agentAccessLevel, setAgentAccessLevel] = useState<AgentAccessLevel>(\n sessionContext\n ? AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA\n : AgentAccessLevel.PUBLICLY_ACCESSIBLE,\n )\n\n const internalChatState = useChatState(agentSession, onChatResponse)\n const chatState = externalChatState ?? internalChatState\n const { pendingMessage, chatJobIds, sendChat } = chatState\n\n // Keep track of the text that the user is currently typing into the textfield\n const [userChatTextfieldValue, setUserChatTextfieldValue] = useState('')\n const [initialMessageProcessed, setInitialMessageProcessed] = useState(false)\n\n // Restore chat session history, if exists.\n // TODO: currently only a single page is restored. Add support for multiple pages (and detect the user scrolling up to restore the next page of results older)\n // const {\n // data: sessionHistoryInfiniteData,\n // } = //, hasNextPage: hasMoreSessionHistory, fetchNextPage: fetchNextSessionHistoryPage, isLoading: isSessionHistoryLoading } =\n // useGetAgentChatSessionHistoryInfinite(\n // {\n // sessionId: agentSession?.sessionId,\n // },\n // {\n // enabled: !!agentSession,\n // },\n // )\n\n // const sessionHistory = useMemo(\n // () =>\n // sessionHistoryInfiniteData?.pages\n // .flatMap(page => page.page)\n // /* Note: session history is ordered from most recent to least recent in each page, so reverse the order when restoring the chat interface */\n // .reverse() ?? [],\n // [sessionHistoryInfiniteData],\n // )\n\n useEffect(() => {\n // on mount, create a new agent session!\n if (createAgentSession && !agentSession) {\n createAgentSession({\n agentAccessLevel,\n agentRegistrationId,\n sessionContext,\n })\n }\n }, [\n createAgentSession,\n agentSession,\n accessToken,\n sessionContext,\n agentAccessLevel,\n agentRegistrationId,\n ])\n\n useEffect(() => {\n // on mount, resolve the initial message chat interaction (if set)\n if (agentSession && initialMessage && !initialMessageProcessed) {\n sendChat(initialMessage)\n setInitialMessageProcessed(true)\n }\n }, [agentSession, initialMessage, initialMessageProcessed, sendChat])\n\n const handleSendMessage = () => {\n if (userChatTextfieldValue.trim()) {\n sendChat(userChatTextfieldValue.trim())\n setUserChatTextfieldValue('')\n }\n }\n\n const isDisabled =\n !agentSession || !userChatTextfieldValue || !!pendingMessage\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = event => {\n if (!isDisabled && event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n handleSendMessage()\n }\n }\n\n const sendMessageButtonColor = (\n theme.palette.secondary as unknown as Color\n )[300]\n if (createAgentSessionError) {\n return (\n <Alert severity={'error'} sx={{ my: 2 }}>\n {createAgentSessionError.reason}\n </Alert>\n )\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n maxWidth: '1100px',\n mx: 'auto',\n height: '100%',\n }}\n >\n {!hideTitle && (\n <Typography\n variant=\"headline1\"\n sx={{\n p: '20px',\n borderBottom: '1px solid',\n borderColor: 'grey.300',\n position: 'sticky',\n top: '0px',\n backgroundColor: 'white',\n zIndex: 1,\n }}\n >\n {chatbotName}\n </Typography>\n )}\n {showAccessLevelMenu && (\n <AccessLevelMenu\n initAccessLevel={agentAccessLevel}\n onChange={newAccessLevel => {\n setAgentAccessLevel(newAccessLevel)\n updateAgentSession({\n agentAccessLevel: newAccessLevel,\n sessionId: agentSession!.sessionId,\n })\n }}\n />\n )}\n {!agentSession && <SkeletonParagraph numRows={10} />}\n {agentSession && (\n <Box sx={{ flexGrow: 1, overflowY: 'auto', mb: 2 }}>\n <List\n sx={{\n flex: 1,\n overflowY: 'auto',\n pt: '20px',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* {sessionHistory &&\n sessionHistory.map((interaction, index) => {\n return (\n <SynapseChatInteraction\n key={index}\n userMessage={interaction.usersRequestText}\n chatResponseText={interaction.agentResponseText}\n />\n )\n })} */}\n {chatJobIds.map(jobId => {\n return (\n <SynapseChatMessage\n key={jobId}\n chatJobId={jobId}\n onSendChat={sendChat}\n />\n )\n })}\n {pendingMessage && (\n <SynapseChatInteraction\n userMessage={pendingMessage}\n chatResponseText={''}\n chatErrorReason={''}\n scrollIntoView\n onSendChat={sendChat}\n />\n )}\n </List>\n </Box>\n )}\n <Box\n sx={{\n position: 'sticky',\n bottom: textboxPositionOffset,\n backgroundColor: 'white',\n }}\n >\n {suggestedPrompts &&\n suggestedPrompts.length > 0 &&\n chatJobIds.length === 0 &&\n !pendingMessage && (\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{ pt: '8px', flexWrap: 'wrap', gap: 1 }}\n >\n {suggestedPrompts.map(prompt => (\n <Chip\n key={prompt}\n label={prompt}\n variant=\"outlined\"\n onClick={() => setUserChatTextfieldValue(prompt)}\n disabled={!agentSession}\n sx={{ cursor: 'pointer' }}\n />\n ))}\n </Stack>\n )}\n <Box\n component=\"form\"\n sx={{\n pt: '8px',\n mt: '5px',\n pb: '10px',\n position: 'sticky',\n borderTop: '1px solid',\n borderColor: 'grey.400',\n }}\n onSubmit={handleSendMessage}\n >\n <TextField\n fullWidth\n value={userChatTextfieldValue}\n onChange={e => setUserChatTextfieldValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={`Message ${chatbotName}`}\n slotProps={{\n input: {\n sx: { borderRadius: 96.6 },\n endAdornment: (\n <IconButton\n disabled={isDisabled}\n onClick={handleSendMessage}\n sx={{\n ml: '7px',\n mr: '-8px',\n color: sendMessageButtonColor,\n borderStyle: 'solid',\n borderWidth: isDisabled ? '1px' : '2px',\n borderColor: isDisabled ? 'gray' : sendMessageButtonColor,\n }}\n >\n <ArrowUpward />\n </IconButton>\n ),\n },\n }}\n />\n <Typography\n variant=\"smallText1\"\n sx={{ pt: '8px', textAlign: 'center' }}\n >\n {chatbotName} can make mistakes.\n </Typography>\n </Box>\n </Box>\n </Box>\n )\n}\n\nexport default SynapseChat\n"],"mappings":";;;;;;;;;;;;;;;;;AAuEA,SAAgB,EAAY,EAC1B,mBACA,wBACA,iBAAc,eACd,gBAAY,IACZ,4BAAwB,OACxB,mBACA,oBACA,uBACA,sBACA,yBAAsB,IACtB,mBACA,uBACmB;CACnB,IAAM,EAAE,mBAAgB,GAAmB,EACrC,CAAC,GAAmB,KAAwB,GAAwB,EACpE,IAAe,KAAmB,GAClC,IAAkB,KAAsB,GAExC,EAAE,QAAQ,GAAoB,OAAO,MACzC,EAAsB,EACpB,YAAW,MAAmB,EAAgB,EAAgB,EAC/D,CAAC,EAEE,EAAE,QAAQ,MAAuB,EAAsB;EAC3D,YAAW,MAAuB,EAAgB,EAAoB;EACtE,UAAS,MACP,EACE,uCAAuC,EAAI,WAC3C,SACD;EACJ,CAAC,EACI,IAAQ,IAAU,EAClB,CAAC,GAAkB,KAAuB,EAC9C,IACI,EAAiB,0BACjB,EAAiB,oBACtB,EAEK,IAAoB,EAAa,GAAc,EAAe,EAE9D,EAAE,mBAAgB,eAAY,gBADlB,KAAqB,GAIjC,CAAC,GAAwB,KAA6B,EAAS,GAAG,EAClE,CAAC,GAAyB,KAA8B,EAAS,GAAM;AA2C7E,CAlBA,QAAgB;AAEd,EAAI,KAAsB,CAAC,KACzB,EAAmB;GACjB;GACA;GACA;GACD,CAAC;IAEH;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEF,QAAgB;AAEd,EAAI,KAAgB,KAAkB,CAAC,MACrC,EAAS,EAAe,EACxB,EAA2B,GAAK;IAEjC;EAAC;EAAc;EAAgB;EAAyB;EAAS,CAAC;CAErE,IAAM,UAA0B;AAC9B,EAAI,EAAuB,MAAM,KAC/B,EAAS,EAAuB,MAAM,CAAC,EACvC,EAA0B,GAAG;IAI3B,IACJ,CAAC,KAAgB,CAAC,KAA0B,CAAC,CAAC,GAE1C,MAAsD,MAAS;AACnE,EAAI,CAAC,KAAc,EAAM,QAAQ,WAAW,CAAC,EAAM,aACjD,EAAM,gBAAgB,EACtB,GAAmB;IAIjB,IACJ,EAAM,QAAQ,UACd;AASF,QARI,IAEA,kBAAC,GAAD;EAAO,UAAU;EAAS,IAAI,EAAE,IAAI,GAAG;YACpC,EAAwB;EACnB,CAAA,GAKV,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe;GACf,gBAAgB;GAChB,UAAU;GACV,IAAI;GACJ,QAAQ;GACT;YARH;GAUG,CAAC,MACA,kBAAC,GAAD;IACE,SAAQ;IACR,IAAI;KACF,GAAG;KACH,cAAc;KACd,aAAa;KACb,UAAU;KACV,KAAK;KACL,iBAAiB;KACjB,QAAQ;KACT;cAEA;IACU,CAAA;GAEd,KACC,kBAAC,GAAD;IACE,iBAAiB;IACjB,WAAU,MAAkB;AAE1B,KADA,EAAoB,EAAe,EACnC,EAAmB;MACjB,kBAAkB;MAClB,WAAW,EAAc;MAC1B,CAAC;;IAEJ,CAAA;GAEH,CAAC,KAAgB,kBAAC,GAAD,EAAmB,SAAS,IAAM,CAAA;GACnD,KACC,kBAAC,GAAD;IAAK,IAAI;KAAE,UAAU;KAAG,WAAW;KAAQ,IAAI;KAAG;cAChD,kBAAC,GAAD;KACE,IAAI;MACF,MAAM;MACN,WAAW;MACX,IAAI;MACJ,SAAS;MACT,eAAe;MAChB;eAPH,CAmBG,EAAW,KAAI,MAEZ,kBAAC,IAAD;MAEE,WAAW;MACX,YAAY;MACZ,EAHK,EAGL,CAEJ,EACD,KACC,kBAAC,GAAD;MACE,aAAa;MACb,kBAAkB;MAClB,iBAAiB;MACjB,gBAAA;MACA,YAAY;MACZ,CAAA,CAEC;;IACH,CAAA;GAER,kBAAC,GAAD;IACE,IAAI;KACF,UAAU;KACV,QAAQ;KACR,iBAAiB;KAClB;cALH,CAOG,KACC,EAAiB,SAAS,KAC1B,EAAW,WAAW,KACtB,CAAC,KACC,kBAAC,GAAD;KACE,WAAU;KACV,SAAS;KACT,IAAI;MAAE,IAAI;MAAO,UAAU;MAAQ,KAAK;MAAG;eAE1C,EAAiB,KAAI,MACpB,kBAAC,GAAD;MAEE,OAAO;MACP,SAAQ;MACR,eAAe,EAA0B,EAAO;MAChD,UAAU,CAAC;MACX,IAAI,EAAE,QAAQ,WAAW;MACzB,EANK,EAML,CACF;KACI,CAAA,EAEZ,kBAAC,GAAD;KACE,WAAU;KACV,IAAI;MACF,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,UAAU;MACV,WAAW;MACX,aAAa;MACd;KACD,UAAU;eAVZ,CAYE,kBAAC,GAAD;MACE,WAAA;MACA,OAAO;MACP,WAAU,MAAK,EAA0B,EAAE,OAAO,MAAM;MACxD,WAAW;MACX,aAAa,WAAW;MACxB,WAAW,EACT,OAAO;OACL,IAAI,EAAE,cAAc,MAAM;OAC1B,cACE,kBAAC,GAAD;QACE,UAAU;QACV,SAAS;QACT,IAAI;SACF,IAAI;SACJ,IAAI;SACJ,OAAO;SACP,aAAa;SACb,aAAa,IAAa,QAAQ;SAClC,aAAa,IAAa,SAAS;SACpC;kBAED,kBAAC,GAAD,EAAe,CAAA;QACJ,CAAA;OAEhB,EACF;MACD,CAAA,EACF,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OAAE,IAAI;OAAO,WAAW;OAAU;gBAFxC,CAIG,GAAY,sBACF;QACT;OACF;;GACF"}
|
|
1
|
+
{"version":3,"file":"SynapseChat.js","names":[],"sources":["../../../src/components/SynapseChat/SynapseChat.tsx"],"sourcesContent":["import { ChatState, useChatState } from '@/components/SynapseChat/useChatState'\nimport {\n useCreateAgentSession,\n useUpdateAgentSession,\n} from '@/synapse-queries/chat/useChat'\nimport { useSynapseContext } from '@/utils'\nimport { ArrowUpward } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Chip,\n IconButton,\n List,\n Stack,\n TextField,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { Color } from '@mui/material/styles'\nimport { GridAgentSessionContext } from '@sage-bionetworks/synapse-client'\nimport {\n AgentAccessLevel,\n AgentSession,\n TraceEvent,\n} from '@sage-bionetworks/synapse-types'\nimport { KeyboardEventHandler, useEffect, useState } from 'react'\nimport { SkeletonParagraph } from '../Skeleton'\nimport { displayToast } from '../ToastMessage'\nimport AccessLevelMenu from './AccessLevelMenu'\nimport SynapseChatInteraction from './SynapseChatInteraction'\nimport SynapseChatMessage from './SynapseChatMessage'\n\nexport type SynapseChatProps = {\n initialMessage?: string //optional initial message\n agentRegistrationId?: string // if provided, use this agent\n chatbotName?: string // optional name of this chatbot agent\n hideTitle?: boolean\n textboxPositionOffset?: string // when embedded in a form, the textbox (form) stuck to the bottom may need to be offset due to container padding (dialog content for example!)\n /* optional session context for the agent session */\n sessionContext?: GridAgentSessionContext\n /* The current session, if state is lifted out of this component */\n externalSession?: AgentSession\n /* A callback invoked to bootstrap the current session, if state is to be lifted out of this component */\n setExternalSession?: (s: AgentSession | undefined) => void\n /* The current chat history, if state is lifted out of this component */\n externalChatState?: ChatState\n // default access level for the agent session.\n defaultAgentAccessLevel?: AgentAccessLevel\n // Whether to show the access level menu for the agent session.\n showAccessLevelMenu?: boolean\n /**\n * Optional callback invoked once when a chat response is received from the server.\n * Use this for side effects such as navigation based on the response content.\n * Called in the mutation onSuccess handler so it runs exactly once per response.\n */\n onChatResponse?: (responseText: string) => void\n /** Optional list of prompt suggestions shown as clickable pills above the text input */\n suggestedPrompts?: string[]\n}\n\nexport type ChatInteraction = {\n userMessage: string\n chatResponseText?: string\n chatErrorReason?: string\n chatResponseTrace?: TraceEventWithFriendlyMessage[]\n}\n\nexport type TraceEventWithFriendlyMessage = {\n friendlyMessage?: string\n} & TraceEvent\n\nexport function SynapseChat({\n initialMessage,\n agentRegistrationId,\n chatbotName = 'SynapseChat',\n hideTitle = false,\n textboxPositionOffset = '0px',\n sessionContext,\n externalSession,\n setExternalSession,\n externalChatState,\n showAccessLevelMenu = true,\n onChatResponse,\n suggestedPrompts,\n}: SynapseChatProps) {\n const { accessToken } = useSynapseContext()\n const [localAgentSession, setLocalAgentSession] = useState<AgentSession>()\n const agentSession = externalSession ?? localAgentSession\n const setAgentSession = setExternalSession ?? setLocalAgentSession\n\n const { mutate: createAgentSession, error: createAgentSessionError } =\n useCreateAgentSession({\n onSuccess: newAgentSession => setAgentSession(newAgentSession),\n })\n\n const { mutate: updateAgentSession } = useUpdateAgentSession({\n onSuccess: updatedAgentSession => setAgentSession(updatedAgentSession),\n onError: err =>\n displayToast(\n `Unable to update the agent session: ${err.message}`,\n 'danger',\n ),\n })\n const theme = useTheme()\n const [agentAccessLevel, setAgentAccessLevel] = useState<AgentAccessLevel>(\n sessionContext\n ? AgentAccessLevel.WRITE_YOUR_PRIVATE_DATA\n : AgentAccessLevel.PUBLICLY_ACCESSIBLE,\n )\n\n const internalChatState = useChatState(agentSession, onChatResponse)\n const chatState = externalChatState ?? internalChatState\n const { pendingMessage, chatJobIds, sendChat } = chatState\n\n // Keep track of the text that the user is currently typing into the textfield\n const [userChatTextfieldValue, setUserChatTextfieldValue] = useState('')\n const [initialMessageProcessed, setInitialMessageProcessed] = useState(false)\n\n // Restore chat session history, if exists.\n // TODO: currently only a single page is restored. Add support for multiple pages (and detect the user scrolling up to restore the next page of results older)\n // const {\n // data: sessionHistoryInfiniteData,\n // } = //, hasNextPage: hasMoreSessionHistory, fetchNextPage: fetchNextSessionHistoryPage, isLoading: isSessionHistoryLoading } =\n // useGetAgentChatSessionHistoryInfinite(\n // {\n // sessionId: agentSession?.sessionId,\n // },\n // {\n // enabled: !!agentSession,\n // },\n // )\n\n // const sessionHistory = useMemo(\n // () =>\n // sessionHistoryInfiniteData?.pages\n // .flatMap(page => page.page)\n // /* Note: session history is ordered from most recent to least recent in each page, so reverse the order when restoring the chat interface */\n // .reverse() ?? [],\n // [sessionHistoryInfiniteData],\n // )\n\n useEffect(() => {\n // on mount, create a new agent session!\n if (createAgentSession && !agentSession) {\n createAgentSession({\n agentAccessLevel,\n agentRegistrationId,\n sessionContext,\n })\n }\n }, [\n createAgentSession,\n agentSession,\n accessToken,\n sessionContext,\n agentAccessLevel,\n agentRegistrationId,\n ])\n\n useEffect(() => {\n // on mount, resolve the initial message chat interaction (if set)\n if (agentSession && initialMessage && !initialMessageProcessed) {\n sendChat(initialMessage)\n setInitialMessageProcessed(true)\n }\n }, [agentSession, initialMessage, initialMessageProcessed, sendChat])\n\n const handleSendMessage = () => {\n if (userChatTextfieldValue.trim()) {\n sendChat(userChatTextfieldValue.trim())\n setUserChatTextfieldValue('')\n }\n }\n\n const isDisabled =\n !agentSession || !userChatTextfieldValue || !!pendingMessage\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = event => {\n if (!isDisabled && event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n handleSendMessage()\n }\n }\n\n const sendMessageButtonColor = (\n theme.palette.secondary as unknown as Color\n )[300]\n if (createAgentSessionError) {\n return (\n <Alert severity={'error'} sx={{ my: 2 }}>\n {createAgentSessionError.reason}\n </Alert>\n )\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n maxWidth: '1100px',\n mx: 'auto',\n height: '100%',\n }}\n >\n {!hideTitle && (\n <Typography\n variant=\"headline1\"\n sx={{\n p: '20px',\n borderBottom: '1px solid',\n borderColor: 'grey.300',\n position: 'sticky',\n top: '0px',\n backgroundColor: 'white',\n zIndex: 1,\n }}\n >\n {chatbotName}\n </Typography>\n )}\n {showAccessLevelMenu && (\n <AccessLevelMenu\n initAccessLevel={agentAccessLevel}\n onChange={newAccessLevel => {\n setAgentAccessLevel(newAccessLevel)\n updateAgentSession({\n agentAccessLevel: newAccessLevel,\n sessionId: agentSession!.sessionId,\n })\n }}\n />\n )}\n {!agentSession && <SkeletonParagraph numRows={10} />}\n {agentSession && (\n <Box sx={{ flexGrow: 1, overflowY: 'auto', mb: 2 }}>\n <List\n sx={{\n flex: 1,\n overflowY: 'auto',\n pt: '20px',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* {sessionHistory &&\n sessionHistory.map((interaction, index) => {\n return (\n <SynapseChatInteraction\n key={index}\n userMessage={interaction.usersRequestText}\n chatResponseText={interaction.agentResponseText}\n />\n )\n })} */}\n {chatJobIds.map(jobId => {\n return (\n <SynapseChatMessage\n key={jobId}\n chatJobId={jobId}\n onSendChat={sendChat}\n />\n )\n })}\n {pendingMessage && (\n <SynapseChatInteraction\n userMessage={pendingMessage}\n chatResponseText={''}\n chatErrorReason={''}\n scrollIntoView\n onSendChat={sendChat}\n />\n )}\n </List>\n </Box>\n )}\n <Box\n sx={{\n position: 'sticky',\n bottom: textboxPositionOffset,\n backgroundColor: 'white',\n }}\n >\n {suggestedPrompts &&\n suggestedPrompts.length > 0 &&\n chatJobIds.length === 0 &&\n !pendingMessage && (\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{ pt: '8px', flexWrap: 'wrap', gap: 1 }}\n >\n {suggestedPrompts.map(prompt => (\n <Chip\n key={prompt}\n label={prompt}\n variant=\"outlined\"\n onClick={() => setUserChatTextfieldValue(prompt)}\n disabled={!agentSession}\n sx={{ cursor: 'pointer' }}\n />\n ))}\n </Stack>\n )}\n <Box\n component=\"form\"\n sx={{\n pt: '8px',\n mt: '5px',\n pb: '10px',\n position: 'sticky',\n borderTop: '1px solid',\n borderColor: 'grey.400',\n }}\n onSubmit={handleSendMessage}\n >\n <TextField\n fullWidth\n value={userChatTextfieldValue}\n onChange={e => setUserChatTextfieldValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={`Message ${chatbotName}`}\n slotProps={{\n input: {\n sx: { borderRadius: 96.6 },\n endAdornment: (\n <IconButton\n disabled={isDisabled}\n onClick={handleSendMessage}\n sx={{\n ml: '7px',\n mr: '-8px',\n color: sendMessageButtonColor,\n borderStyle: 'solid',\n borderWidth: isDisabled ? '1px' : '2px',\n borderColor: isDisabled ? 'gray' : sendMessageButtonColor,\n }}\n >\n <ArrowUpward />\n </IconButton>\n ),\n },\n }}\n />\n <Typography\n variant=\"smallText1\"\n sx={{ pt: '8px', textAlign: 'center' }}\n >\n {chatbotName} can make mistakes.\n </Typography>\n </Box>\n </Box>\n </Box>\n )\n}\n\nexport default SynapseChat\n"],"mappings":";;;;;;;;;;;;;;;;;AAuEA,SAAgB,EAAY,EAC1B,mBACA,wBACA,iBAAc,eACd,gBAAY,IACZ,4BAAwB,OACxB,mBACA,oBACA,uBACA,sBACA,yBAAsB,IACtB,mBACA,uBACmB;CACnB,IAAM,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAmB,KAAwB,EAAuB,GACnE,IAAe,KAAmB,GAClC,IAAkB,KAAsB,GAExC,EAAE,QAAQ,GAAoB,OAAO,MACzC,EAAsB,EACpB,YAAW,MAAmB,EAAgB,CAAe,EAC/D,CAAC,GAEG,EAAE,QAAQ,MAAuB,EAAsB;EAC3D,YAAW,MAAuB,EAAgB,CAAmB;EACrE,UAAS,MACP,EACE,uCAAuC,EAAI,WAC3C,QACF;CACJ,CAAC,GACK,IAAQ,GAAS,GACjB,CAAC,GAAkB,KAAuB,EAC9C,IACI,EAAiB,0BACjB,EAAiB,mBACvB,GAEM,IAAoB,EAAa,GAAc,CAAc,GAE7D,EAAE,mBAAgB,eAAY,gBADlB,KAAqB,GAIjC,CAAC,GAAwB,KAA6B,EAAS,EAAE,GACjE,CAAC,GAAyB,KAA8B,EAAS,EAAK;CA2C5E,AAlBA,QAAgB;EAEd,AAAI,KAAsB,CAAC,KACzB,EAAmB;GACjB;GACA;GACA;EACF,CAAC;CAEL,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAED,QAAgB;EAEd,AAAI,KAAgB,KAAkB,CAAC,MACrC,EAAS,CAAc,GACvB,EAA2B,EAAI;CAEnC,GAAG;EAAC;EAAc;EAAgB;EAAyB;CAAQ,CAAC;CAEpE,IAAM,UAA0B;EAC9B,AAAI,EAAuB,KAAK,MAC9B,EAAS,EAAuB,KAAK,CAAC,GACtC,EAA0B,EAAE;CAEhC,GAEM,IACJ,CAAC,KAAgB,CAAC,KAA0B,CAAC,CAAC,GAE1C,MAAsD,MAAS;EACnE,AAAI,CAAC,KAAc,EAAM,QAAQ,WAAW,CAAC,EAAM,aACjD,EAAM,eAAe,GACrB,EAAkB;CAEtB,GAEM,IACJ,EAAM,QAAQ,UACd;CASF,OARI,IAEA,kBAAC,GAAD;EAAO,UAAU;EAAS,IAAI,EAAE,IAAI,EAAE;YACnC,EAAwB;CACpB,CAAA,IAKT,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,eAAe;GACf,gBAAgB;GAChB,UAAU;GACV,IAAI;GACJ,QAAQ;EACV;YARF;GAUG,CAAC,MACA,kBAAC,GAAD;IACE,SAAQ;IACR,IAAI;KACF,GAAG;KACH,cAAc;KACd,aAAa;KACb,UAAU;KACV,KAAK;KACL,iBAAiB;KACjB,QAAQ;IACV;cAEC;GACS,CAAA;GAEb,KACC,kBAAC,GAAD;IACE,iBAAiB;IACjB,WAAU,MAAkB;KAE1B,AADA,EAAoB,CAAc,GAClC,EAAmB;MACjB,kBAAkB;MAClB,WAAW,EAAc;KAC3B,CAAC;IACH;GACD,CAAA;GAEF,CAAC,KAAgB,kBAAC,GAAD,EAAmB,SAAS,GAAK,CAAA;GAClD,KACC,kBAAC,GAAD;IAAK,IAAI;KAAE,UAAU;KAAG,WAAW;KAAQ,IAAI;IAAE;cAC/C,kBAAC,GAAD;KACE,IAAI;MACF,MAAM;MACN,WAAW;MACX,IAAI;MACJ,SAAS;MACT,eAAe;KACjB;eAPF,CAmBG,EAAW,KAAI,MAEZ,kBAAC,IAAD;MAEE,WAAW;MACX,YAAY;KACb,GAHM,CAGN,CAEJ,GACA,KACC,kBAAC,GAAD;MACE,aAAa;MACb,kBAAkB;MAClB,iBAAiB;MACjB,gBAAA;MACA,YAAY;KACb,CAAA,CAEC;;GACH,CAAA;GAEP,kBAAC,GAAD;IACE,IAAI;KACF,UAAU;KACV,QAAQ;KACR,iBAAiB;IACnB;cALF,CAOG,KACC,EAAiB,SAAS,KAC1B,EAAW,WAAW,KACtB,CAAC,KACC,kBAAC,GAAD;KACE,WAAU;KACV,SAAS;KACT,IAAI;MAAE,IAAI;MAAO,UAAU;MAAQ,KAAK;KAAE;eAEzC,EAAiB,KAAI,MACpB,kBAAC,GAAD;MAEE,OAAO;MACP,SAAQ;MACR,eAAe,EAA0B,CAAM;MAC/C,UAAU,CAAC;MACX,IAAI,EAAE,QAAQ,UAAU;KACzB,GANM,CAMN,CACF;IACI,CAAA,GAEX,kBAAC,GAAD;KACE,WAAU;KACV,IAAI;MACF,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,UAAU;MACV,WAAW;MACX,aAAa;KACf;KACA,UAAU;eAVZ,CAYE,kBAAC,GAAD;MACE,WAAA;MACA,OAAO;MACP,WAAU,MAAK,EAA0B,EAAE,OAAO,KAAK;MACvD,WAAW;MACX,aAAa,WAAW;MACxB,WAAW,EACT,OAAO;OACL,IAAI,EAAE,cAAc,KAAK;OACzB,cACE,kBAAC,GAAD;QACE,UAAU;QACV,SAAS;QACT,IAAI;SACF,IAAI;SACJ,IAAI;SACJ,OAAO;SACP,aAAa;SACb,aAAa,IAAa,QAAQ;SAClC,aAAa,IAAa,SAAS;QACrC;kBAEA,kBAAC,GAAD,CAAc,CAAA;OACJ,CAAA;MAEhB,EACF;KACD,CAAA,GACD,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OAAE,IAAI;OAAO,WAAW;MAAS;gBAFvC,CAIG,GAAY,qBACH;OACT;MACF;;EACF;;AAET"}
|