synapse-react-client 4.0.19 → 4.0.21
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 +1 -1
- package/dist/SWC.index.js +1 -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/CardConfiguration.d.ts +2 -0
- package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +3 -3
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.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 -1
- package/dist/components/DataExplorer/DataExplorer.js +28 -31
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
- 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.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.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +3 -1
- 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.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.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +1 -0
- 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.d.ts +2 -0
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +76 -64
- 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.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
- 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.css +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +54 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.js +359 -0
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -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.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.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.d.ts +13 -12
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- 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.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.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
- 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.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
- 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.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.d.ts +27 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +10 -10
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.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.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.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.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
- 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.js +39 -42
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
- 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.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 +5 -0
- 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 +2 -2
- 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.d.ts +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
- 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.d.ts +13 -0
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
- 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/style/components/_cards.scss +10 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +7 -1
- package/dist/style/main.css +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 +499 -505
- 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.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 +68 -65
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimelinePlot.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePlot.tsx"],"sourcesContent":["import React from 'react'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions'\nimport { getHeaderIndex } from '@/utils/functions/queryUtils'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport { Skeleton, Typography } from '@mui/material'\nimport { Box } from '@mui/system'\nimport { useMeasure } from '@react-hookz/web'\nimport {\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { useMemo, useState } from 'react'\nimport { getColorPalette } from '../ColorGradient/ColorGradient'\nimport { ObservationCardSchema } from '../row_renderers/ObservationCard'\nimport hardcodedPhasesQueryResponseData, {\n phaseObservationIndex,\n phaseSpeciesIndex,\n} from './phasesQueryResponseData'\nimport TimelineLegendItem from './TimelineLegendItem'\nimport TimelinePhase from './TimelinePhase'\nimport TimelinePlotSpeciesSelector from './TimelinePlotSpeciesSelector'\n\nconst OBSERVATION_PHASE_COLUMN_NAME = 'observationphase'\nconst OBSERVATION_TIME_COLUMN_NAME = 'observationtime'\nconst OBSERVATION_TIME_UNITS_COLUMN_NAME = 'observationtimeunits'\nconst OBSERVATION_SUBMITTER_NAME_COLUMN_NAME = 'observationsubmittername'\nconst OBSERVATION_TEXT_COLUMN_NAME = 'observationtext'\nconst OBSERVATION_TYPE_COLUMN_NAME = 'observationtype'\nconst OBSERVATION_SUBMITTER_USER_ID_COLUMN_NAME = 'synapseid'\nconst OBSERVATION_DOI_COLUMN_NAME = 'doi'\n\nexport type TimelinePlotProps = {\n sql: string\n searchParams?: Record<string, string>\n sqlOperator?: SQLOperator\n title?: string\n subTitle?: string\n defaultSpecies?: string //for test\n}\nexport const TimelinePlot = ({\n sql,\n searchParams,\n sqlOperator,\n defaultSpecies,\n title,\n subTitle,\n}: TimelinePlotProps): React.ReactNode => {\n // Fetch the table data\n const eventsTableId = parseEntityIdFromSqlStatement(sql)\n const [species, setSpecies] = useState<string | undefined | null>(\n defaultSpecies,\n )\n const [plotContainerMeasurements, plotContainerRef] =\n useMeasure<HTMLDivElement>()\n const queryFilters = getAdditionalFilters(searchParams, sqlOperator) ?? []\n const speciesFilter: ColumnMultiValueFunctionQueryFilter | undefined = species\n ? {\n columnName: 'species',\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n values: [species],\n function: ColumnMultiValueFunction.HAS,\n _function: ColumnMultiValueFunction.HAS,\n }\n : undefined\n const additionalFilters = [...queryFilters]\n if (speciesFilter) {\n additionalFilters.push(speciesFilter)\n }\n const eventTableQuery = useGetFullTableQueryResults(\n {\n entityId: eventsTableId,\n query: {\n sql: `${sql} WHERE observationTime IS NOT NULL`,\n sort: [\n {\n column: 'observationTime',\n direction: 'ASC',\n },\n ],\n additionalFilters: additionalFilters,\n },\n\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n {\n enabled: !!species,\n },\n )\n\n const { data: eventsData, isLoading } = eventTableQuery\n\n // filter the phases query response data to the specific species\n const phaseData = useMemo(() => {\n if (species) {\n const phasesForTargetSpecies =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.rows.filter(\n row => {\n return row.values[phaseSpeciesIndex] == species\n },\n )\n return phasesForTargetSpecies\n } else return undefined\n }, [species])\n\n if (isLoading) {\n return <LoadingTimelinePlot />\n }\n const observationPhaseIndex = getHeaderIndex(\n OBSERVATION_PHASE_COLUMN_NAME,\n eventsData,\n )\n const observationTimeIndex = getHeaderIndex(\n OBSERVATION_TIME_COLUMN_NAME,\n eventsData,\n )\n const observationTimeUnitIndex = getHeaderIndex(\n OBSERVATION_TIME_UNITS_COLUMN_NAME,\n eventsData,\n )\n const observationSubmitterNameIndex = getHeaderIndex(\n OBSERVATION_SUBMITTER_NAME_COLUMN_NAME,\n eventsData,\n )\n const observationTextIndex = getHeaderIndex(\n OBSERVATION_TEXT_COLUMN_NAME,\n eventsData,\n )\n const observationDoiIndex = getHeaderIndex(\n OBSERVATION_DOI_COLUMN_NAME,\n eventsData,\n )\n\n const observationTypeIndex = getHeaderIndex(\n OBSERVATION_TYPE_COLUMN_NAME,\n eventsData,\n )\n const submitterUserIdIndex = getHeaderIndex(\n OBSERVATION_SUBMITTER_USER_ID_COLUMN_NAME,\n eventsData,\n )\n\n const schema: ObservationCardSchema = {\n observationSubmitterName: observationSubmitterNameIndex,\n synapseId: submitterUserIdIndex,\n observationType: observationTypeIndex,\n observationText: observationTextIndex,\n observationTime: observationTimeIndex,\n observationTimeUnits: observationTimeUnitIndex,\n doi: observationDoiIndex,\n }\n\n const widthPx =\n plotContainerMeasurements?.width && phaseData\n ? plotContainerMeasurements?.width / phaseData.length\n : 0\n const gridTemplateColumns = phaseData?.map(() => 'auto').join(' ')\n\n return (\n <>\n {species && (\n <>\n {title && <Typography variant=\"h2\">{title}</Typography>}\n {subTitle && (\n <Typography variant=\"body1Italic\" sx={{ margin: '10px 0px' }}>\n {subTitle}\n </Typography>\n )}\n </>\n )}\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n {/* Species selector */}\n <Box>\n {!defaultSpecies && (\n <TimelinePlotSpeciesSelector\n setSpecies={setSpecies}\n species={species}\n sql={sql}\n additionalFilters={queryFilters}\n />\n )}\n </Box>\n {/* Legend */}\n {phaseData && (\n <Box\n sx={{ display: 'flex', justifyContent: 'flex-end', gap: '25px' }}\n >\n {phaseData.map((phaseRow, index) => {\n const { colorPalette } = getColorPalette(index, 1)\n return (\n <TimelineLegendItem\n key={phaseRow.rowId}\n color={colorPalette[0]}\n phaseName={phaseRow.values[phaseObservationIndex]}\n />\n )\n })}\n </Box>\n )}\n </Box>\n {/* Phase plots */}\n {species && phaseData && (\n <div ref={plotContainerRef}>\n <Box\n sx={{\n display: 'inline-grid',\n gridTemplateColumns,\n minWidth: plotContainerMeasurements?.width,\n maxWidth: plotContainerMeasurements?.width,\n }}\n className=\"forcePlotlyDefaultCursor\"\n >\n {phaseData.map((phaseRow, index) => {\n const { colorPalette } = getColorPalette(index, 1)\n const phaseEventRows =\n eventsData?.queryResult?.queryResults.rows.filter(row => {\n return (\n row.values[observationPhaseIndex] ==\n phaseRow.values[phaseObservationIndex]\n )\n })\n\n return phaseEventRows ? (\n <TimelinePhase\n key={phaseRow.rowId}\n name={phaseRow.values[phaseObservationIndex]!}\n color={colorPalette[0]}\n rowData={phaseEventRows}\n schema={schema}\n widthPx={widthPx}\n sql={sql}\n />\n ) : (\n <></>\n )\n })}\n </Box>\n </div>\n )}\n </Box>\n </>\n )\n}\n\nexport const LoadingTimelinePlot = (): React.ReactNode => {\n return (\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', gap: '10px' }}>\n <Skeleton height=\"45px\" width=\"80px\" />\n <Skeleton height=\"45px\" width=\"80px\" />\n </Box>\n <Box sx={{ display: 'flex' }}>\n <Skeleton height=\"150px\" width=\"100%\" />\n </Box>\n </Box>\n )\n}\n\nexport default TimelinePlot\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimelinePlot.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePlot.tsx"],"sourcesContent":["import React from 'react'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions'\nimport { getHeaderIndex } from '@/utils/functions/queryUtils'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport { Skeleton, Typography } from '@mui/material'\nimport { Box } from '@mui/system'\nimport { useMeasure } from '@react-hookz/web'\nimport {\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { useMemo, useState } from 'react'\nimport { getColorPalette } from '../ColorGradient/ColorGradient'\nimport { ObservationCardSchema } from '../row_renderers/ObservationCard'\nimport hardcodedPhasesQueryResponseData, {\n phaseObservationIndex,\n phaseSpeciesIndex,\n} from './phasesQueryResponseData'\nimport TimelineLegendItem from './TimelineLegendItem'\nimport TimelinePhase from './TimelinePhase'\nimport TimelinePlotSpeciesSelector from './TimelinePlotSpeciesSelector'\n\nconst OBSERVATION_PHASE_COLUMN_NAME = 'observationphase'\nconst OBSERVATION_TIME_COLUMN_NAME = 'observationtime'\nconst OBSERVATION_TIME_UNITS_COLUMN_NAME = 'observationtimeunits'\nconst OBSERVATION_SUBMITTER_NAME_COLUMN_NAME = 'observationsubmittername'\nconst OBSERVATION_TEXT_COLUMN_NAME = 'observationtext'\nconst OBSERVATION_TYPE_COLUMN_NAME = 'observationtype'\nconst OBSERVATION_SUBMITTER_USER_ID_COLUMN_NAME = 'synapseid'\nconst OBSERVATION_DOI_COLUMN_NAME = 'doi'\n\nexport type TimelinePlotProps = {\n sql: string\n searchParams?: Record<string, string>\n sqlOperator?: SQLOperator\n title?: string\n subTitle?: string\n defaultSpecies?: string //for test\n}\nexport const TimelinePlot = ({\n sql,\n searchParams,\n sqlOperator,\n defaultSpecies,\n title,\n subTitle,\n}: TimelinePlotProps): React.ReactNode => {\n // Fetch the table data\n const eventsTableId = parseEntityIdFromSqlStatement(sql)\n const [species, setSpecies] = useState<string | undefined | null>(\n defaultSpecies,\n )\n const [plotContainerMeasurements, plotContainerRef] =\n useMeasure<HTMLDivElement>()\n const queryFilters = getAdditionalFilters(searchParams, sqlOperator) ?? []\n const speciesFilter: ColumnMultiValueFunctionQueryFilter | undefined = species\n ? {\n columnName: 'species',\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n values: [species],\n function: ColumnMultiValueFunction.HAS,\n _function: ColumnMultiValueFunction.HAS,\n }\n : undefined\n const additionalFilters = [...queryFilters]\n if (speciesFilter) {\n additionalFilters.push(speciesFilter)\n }\n const eventTableQuery = useGetFullTableQueryResults(\n {\n entityId: eventsTableId,\n query: {\n sql: `${sql} WHERE observationTime IS NOT NULL`,\n sort: [\n {\n column: 'observationTime',\n direction: 'ASC',\n },\n ],\n additionalFilters: additionalFilters,\n },\n\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n {\n enabled: !!species,\n },\n )\n\n const { data: eventsData, isLoading } = eventTableQuery\n\n // filter the phases query response data to the specific species\n const phaseData = useMemo(() => {\n if (species) {\n const phasesForTargetSpecies =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.rows.filter(\n row => {\n return row.values[phaseSpeciesIndex] == species\n },\n )\n return phasesForTargetSpecies\n } else return undefined\n }, [species])\n\n if (isLoading) {\n return <LoadingTimelinePlot />\n }\n const observationPhaseIndex = getHeaderIndex(\n OBSERVATION_PHASE_COLUMN_NAME,\n eventsData,\n )\n const observationTimeIndex = getHeaderIndex(\n OBSERVATION_TIME_COLUMN_NAME,\n eventsData,\n )\n const observationTimeUnitIndex = getHeaderIndex(\n OBSERVATION_TIME_UNITS_COLUMN_NAME,\n eventsData,\n )\n const observationSubmitterNameIndex = getHeaderIndex(\n OBSERVATION_SUBMITTER_NAME_COLUMN_NAME,\n eventsData,\n )\n const observationTextIndex = getHeaderIndex(\n OBSERVATION_TEXT_COLUMN_NAME,\n eventsData,\n )\n const observationDoiIndex = getHeaderIndex(\n OBSERVATION_DOI_COLUMN_NAME,\n eventsData,\n )\n\n const observationTypeIndex = getHeaderIndex(\n OBSERVATION_TYPE_COLUMN_NAME,\n eventsData,\n )\n const submitterUserIdIndex = getHeaderIndex(\n OBSERVATION_SUBMITTER_USER_ID_COLUMN_NAME,\n eventsData,\n )\n\n const schema: ObservationCardSchema = {\n observationSubmitterName: observationSubmitterNameIndex,\n synapseId: submitterUserIdIndex,\n observationType: observationTypeIndex,\n observationText: observationTextIndex,\n observationTime: observationTimeIndex,\n observationTimeUnits: observationTimeUnitIndex,\n doi: observationDoiIndex,\n }\n\n const widthPx =\n plotContainerMeasurements?.width && phaseData\n ? plotContainerMeasurements?.width / phaseData.length\n : 0\n const gridTemplateColumns = phaseData?.map(() => 'auto').join(' ')\n\n return (\n <>\n {species && (\n <>\n {title && <Typography variant=\"h2\">{title}</Typography>}\n {subTitle && (\n <Typography variant=\"body1Italic\" sx={{ margin: '10px 0px' }}>\n {subTitle}\n </Typography>\n )}\n </>\n )}\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n {/* Species selector */}\n <Box>\n {!defaultSpecies && (\n <TimelinePlotSpeciesSelector\n setSpecies={setSpecies}\n species={species}\n sql={sql}\n additionalFilters={queryFilters}\n />\n )}\n </Box>\n {/* Legend */}\n {phaseData && (\n <Box\n sx={{ display: 'flex', justifyContent: 'flex-end', gap: '25px' }}\n >\n {phaseData.map((phaseRow, index) => {\n const { colorPalette } = getColorPalette(index, 1)\n return (\n <TimelineLegendItem\n key={phaseRow.rowId}\n color={colorPalette[0]}\n phaseName={phaseRow.values[phaseObservationIndex]}\n />\n )\n })}\n </Box>\n )}\n </Box>\n {/* Phase plots */}\n {species && phaseData && (\n <div ref={plotContainerRef}>\n <Box\n sx={{\n display: 'inline-grid',\n gridTemplateColumns,\n minWidth: plotContainerMeasurements?.width,\n maxWidth: plotContainerMeasurements?.width,\n }}\n className=\"forcePlotlyDefaultCursor\"\n >\n {phaseData.map((phaseRow, index) => {\n const { colorPalette } = getColorPalette(index, 1)\n const phaseEventRows =\n eventsData?.queryResult?.queryResults.rows.filter(row => {\n return (\n row.values[observationPhaseIndex] ==\n phaseRow.values[phaseObservationIndex]\n )\n })\n\n return phaseEventRows ? (\n <TimelinePhase\n key={phaseRow.rowId}\n name={phaseRow.values[phaseObservationIndex]!}\n color={colorPalette[0]}\n rowData={phaseEventRows}\n schema={schema}\n widthPx={widthPx}\n sql={sql}\n />\n ) : (\n <></>\n )\n })}\n </Box>\n </div>\n )}\n </Box>\n </>\n )\n}\n\nexport const LoadingTimelinePlot = (): React.ReactNode => {\n return (\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', gap: '10px' }}>\n <Skeleton height=\"45px\" width=\"80px\" />\n <Skeleton height=\"45px\" width=\"80px\" />\n </Box>\n <Box sx={{ display: 'flex' }}>\n <Skeleton height=\"150px\" width=\"100%\" />\n </Box>\n </Box>\n )\n}\n\nexport default TimelinePlot\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimelinePlotSpeciesSelector.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePlotSpeciesSelector.tsx"],"sourcesContent":["import React, { useId } from 'react'\nimport { StyledFormControl } from '@/components/styled'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport { InputLabel, MenuItem, Select } from '@mui/material'\nimport { Box } from '@mui/system'\nimport { QueryFilter } from '@sage-bionetworks/synapse-types'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport type TimelinePlotSpeciesSelectorProps = {\n sql: string\n additionalFilters?: QueryFilter[]\n species?: string | null\n setSpecies: Dispatch<SetStateAction<string | null | undefined>>\n}\nexport const TimelinePlotSpeciesSelector = ({\n sql,\n additionalFilters,\n species,\n setSpecies,\n}: TimelinePlotSpeciesSelectorProps): React.ReactNode => {\n const speciesLabelId = useId()\n\n const eventsTableId = parseEntityIdFromSqlStatement(sql)\n // Fetch the species\n const eventTableQuery = useGetFullTableQueryResults({\n entityId: eventsTableId,\n query: {\n sql: `SELECT distinct unnest(species) FROM ${eventsTableId} WHERE species IS NOT NULL AND observationTime IS NOT NULL GROUP BY species`,\n additionalFilters: additionalFilters,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n })\n\n const { data: speciesData, isLoading } = eventTableQuery\n const rows = speciesData?.queryResult?.queryResults?.rows\n const defaultSpecies = rows && rows.length > 0 ? rows[0].values[0] : undefined\n if (species == undefined && defaultSpecies != undefined) {\n setSpecies(defaultSpecies)\n }\n // Hide if loading, there are no rows, or there's only 1 species option\n if (isLoading || !rows || rows.length < 2) {\n return <></>\n }\n\n return (\n <Box>\n <StyledFormControl>\n <InputLabel id={speciesLabelId}>Species</InputLabel>\n <Select\n sx={{ marginLeft: '2px', marginBottom: '2px' }}\n labelId={speciesLabelId}\n value={species}\n label=\"Species\"\n onChange={event => {\n setSpecies(event.target.value)\n }}\n >\n {rows?.map(row => {\n const species = row.values[0]!\n return (\n <MenuItem key={species} value={species}>\n {species}\n </MenuItem>\n )\n })}\n </Select>\n </StyledFormControl>\n </Box>\n )\n}\nexport default TimelinePlotSpeciesSelector\n"],"mappings":";;;;;;;;;;;;AAgBA,IAAa,KAA+B,EAC1C,QACA,sBACA,YACA,oBACuD;CACvD,IAAM,IAAiB,
|
|
1
|
+
{"version":3,"file":"TimelinePlotSpeciesSelector.js","names":[],"sources":["../../../src/components/TimelinePlot/TimelinePlotSpeciesSelector.tsx"],"sourcesContent":["import React, { useId } from 'react'\nimport { StyledFormControl } from '@/components/styled'\nimport { useGetFullTableQueryResults } from '@/synapse-queries'\nimport { parseEntityIdFromSqlStatement } from '@/utils/functions'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '@/utils/SynapseConstants'\nimport { InputLabel, MenuItem, Select } from '@mui/material'\nimport { Box } from '@mui/system'\nimport { QueryFilter } from '@sage-bionetworks/synapse-types'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport type TimelinePlotSpeciesSelectorProps = {\n sql: string\n additionalFilters?: QueryFilter[]\n species?: string | null\n setSpecies: Dispatch<SetStateAction<string | null | undefined>>\n}\nexport const TimelinePlotSpeciesSelector = ({\n sql,\n additionalFilters,\n species,\n setSpecies,\n}: TimelinePlotSpeciesSelectorProps): React.ReactNode => {\n const speciesLabelId = useId()\n\n const eventsTableId = parseEntityIdFromSqlStatement(sql)\n // Fetch the species\n const eventTableQuery = useGetFullTableQueryResults({\n entityId: eventsTableId,\n query: {\n sql: `SELECT distinct unnest(species) FROM ${eventsTableId} WHERE species IS NOT NULL AND observationTime IS NOT NULL GROUP BY species`,\n additionalFilters: additionalFilters,\n },\n partMask: BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n })\n\n const { data: speciesData, isLoading } = eventTableQuery\n const rows = speciesData?.queryResult?.queryResults?.rows\n const defaultSpecies = rows && rows.length > 0 ? rows[0].values[0] : undefined\n if (species == undefined && defaultSpecies != undefined) {\n setSpecies(defaultSpecies)\n }\n // Hide if loading, there are no rows, or there's only 1 species option\n if (isLoading || !rows || rows.length < 2) {\n return <></>\n }\n\n return (\n <Box>\n <StyledFormControl>\n <InputLabel id={speciesLabelId}>Species</InputLabel>\n <Select\n sx={{ marginLeft: '2px', marginBottom: '2px' }}\n labelId={speciesLabelId}\n value={species}\n label=\"Species\"\n onChange={event => {\n setSpecies(event.target.value)\n }}\n >\n {rows?.map(row => {\n const species = row.values[0]!\n return (\n <MenuItem key={species} value={species}>\n {species}\n </MenuItem>\n )\n })}\n </Select>\n </StyledFormControl>\n </Box>\n )\n}\nexport default TimelinePlotSpeciesSelector\n"],"mappings":";;;;;;;;;;;;AAgBA,IAAa,KAA+B,EAC1C,QACA,sBACA,YACA,oBACuD;CACvD,IAAM,IAAiB,EAAM,GAEvB,IAAgB,EAA8B,CAAG,GAYjD,EAAE,MAAM,GAAa,iBAVH,EAA4B;EAClD,UAAU;EACV,OAAO;GACL,KAAK,wCAAwC,EAAc;GACxC;EACrB;EACA,UAAA;EACA,cAAc;CAChB,CAEyC,GACnC,IAAO,GAAa,aAAa,cAAc,MAC/C,IAAiB,KAAQ,EAAK,SAAS,IAAI,EAAK,GAAG,OAAO,KAAK,KAAA;CASrE,OARI,KAAW,QAAa,KAAkB,QAC5C,EAAW,CAAc,GAGvB,KAAa,CAAC,KAAQ,EAAK,SAAS,IAC/B,kBAAA,GAAA,CAAI,CAAA,IAIX,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAY,IAAI;YAAgB;CAAmB,CAAA,GACnD,kBAAC,GAAD;EACE,IAAI;GAAE,YAAY;GAAO,cAAc;EAAM;EAC7C,SAAS;EACT,OAAO;EACP,OAAM;EACN,WAAU,MAAS;GACjB,EAAW,EAAM,OAAO,KAAK;EAC/B;YAEC,GAAM,KAAI,MAAO;GAChB,IAAM,IAAU,EAAI,OAAO;GAC3B,OACE,kBAAC,GAAD;IAAwB,OAAO;cAC5B;GACO,GAFK,CAEL;EAEd,CAAC;CACK,CAAA,CACS,EAAA,CAAA,EAChB,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phasesQueryResponseData.js","names":[],"sources":["../../../src/components/TimelinePlot/phasesQueryResponseData.ts"],"sourcesContent":["import { QueryResultBundle } from '@sage-bionetworks/synapse-types'\n\nconst SPECIES_COLUMN_NAME = 'species'\nconst OBSERVATION_PHASE_COLUMN_NAME = 'observationphase'\n\nconst hardcodedPhasesQueryResponseData: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: 'syn52408661',\n etag: 'a3270cb2-4373-4e12-9981-e12326e54ad1',\n headers: [\n {\n name: 'species',\n columnType: 'STRING',\n id: '152514',\n },\n {\n name: 'observationPhase',\n columnType: 'STRING',\n id: '197976',\n },\n {\n name: 'observationPhaseOrder',\n columnType: 'INTEGER',\n id: '198102',\n },\n {\n name: 'observationTimeMax',\n columnType: 'INTEGER',\n id: '198103',\n },\n {\n name: 'observationTimeUnits',\n columnType: 'STRING',\n id: '198101',\n },\n ],\n rows: [\n {\n rowId: 9,\n versionNumber: 4,\n values: ['Danio rerio', 'embryo', '1', '7', 'days'],\n },\n {\n rowId: 10,\n versionNumber: 4,\n values: ['Danio rerio', 'larval', '2', '3', 'months'],\n },\n {\n rowId: 11,\n versionNumber: 4,\n values: ['Danio rerio', 'juvenile', '3', '6', 'months'],\n },\n {\n rowId: 12,\n versionNumber: 4,\n values: ['Danio rerio', 'adult', '4', '12', 'months'],\n },\n {\n rowId: 16,\n versionNumber: 4,\n values: ['Drosophila', 'embryo', '1', '24', 'hours'],\n },\n {\n rowId: 17,\n versionNumber: 4,\n values: ['Drosophila', 'larval', '2', '5', 'days'],\n },\n {\n rowId: 18,\n versionNumber: 4,\n values: ['Drosophila', 'pupal', '3', '12', 'days'],\n },\n {\n rowId: 19,\n versionNumber: 4,\n values: ['Drosophila', 'adult', '4', '5', 'weeks'],\n },\n {\n rowId: 1,\n versionNumber: 4,\n values: ['Mus musculus', 'prenatal', '1', '21', 'days'],\n },\n {\n rowId: 2,\n versionNumber: 4,\n values: ['Mus musculus', 'postnatal', '2', '6', 'months'],\n },\n {\n rowId: 20,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'prenatal', '1', '23', 'days'],\n },\n {\n rowId: 21,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'neonatal', '2', '4', 'weeks'],\n },\n {\n rowId: 22,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'weanling', '3', '2', 'months'],\n },\n {\n rowId: 23,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'juvenile', '4', '3', 'months'],\n },\n {\n rowId: 24,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'adolescent', '5', '6', 'months'],\n },\n {\n rowId: 25,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'adult', '6', '12', 'months'],\n },\n {\n rowId: 13,\n versionNumber: 4,\n values: ['Saccharomyces', 'log phase', '1', '7', 'days'],\n },\n {\n rowId: 14,\n versionNumber: 4,\n values: ['Saccharomyces', 'stationary phase', '2', '2', 'weeks'],\n },\n {\n rowId: 15,\n versionNumber: 4,\n values: ['Saccharomyces', 'death phase', '3', '3', 'weeks'],\n },\n {\n rowId: 3,\n versionNumber: 4,\n values: ['Sus scrofa', 'prenatal', '1', '115', 'days'],\n },\n {\n rowId: 4,\n versionNumber: 4,\n values: ['Sus scrofa', 'neonatal', '2', '3', 'months'],\n },\n {\n rowId: 5,\n versionNumber: 4,\n values: ['Sus scrofa', 'weanling', '3', '6', 'months'],\n },\n {\n rowId: 6,\n versionNumber: 4,\n values: ['Sus scrofa', 'juvenile', '4', '12', 'months'],\n },\n {\n rowId: 7,\n versionNumber: 4,\n values: ['Sus scrofa', 'adolescent', '5', '2', 'years'],\n },\n {\n rowId: 8,\n versionNumber: 4,\n values: ['Sus scrofa', 'adult', '6', '3', 'years'],\n },\n ],\n },\n },\n}\n\nexport const phaseSpeciesIndex =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.headers.findIndex(\n header => header.name.toLowerCase() === SPECIES_COLUMN_NAME,\n )!\nexport const phaseObservationIndex =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.headers.findIndex(\n header => header.name.toLowerCase() === OBSERVATION_PHASE_COLUMN_NAME,\n )!\n\nexport default hardcodedPhasesQueryResponseData\n"],"mappings":";AAEA,IAAM,IAAsB,WACtB,IAAgC,oBAEhC,IAAsD;CAC1D,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACN,SAAS;IACP;KACE,MAAM;KACN,YAAY;KACZ,IAAI;
|
|
1
|
+
{"version":3,"file":"phasesQueryResponseData.js","names":[],"sources":["../../../src/components/TimelinePlot/phasesQueryResponseData.ts"],"sourcesContent":["import { QueryResultBundle } from '@sage-bionetworks/synapse-types'\n\nconst SPECIES_COLUMN_NAME = 'species'\nconst OBSERVATION_PHASE_COLUMN_NAME = 'observationphase'\n\nconst hardcodedPhasesQueryResponseData: QueryResultBundle = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResultBundle',\n queryResult: {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryResult',\n queryResults: {\n concreteType: 'org.sagebionetworks.repo.model.table.RowSet',\n tableId: 'syn52408661',\n etag: 'a3270cb2-4373-4e12-9981-e12326e54ad1',\n headers: [\n {\n name: 'species',\n columnType: 'STRING',\n id: '152514',\n },\n {\n name: 'observationPhase',\n columnType: 'STRING',\n id: '197976',\n },\n {\n name: 'observationPhaseOrder',\n columnType: 'INTEGER',\n id: '198102',\n },\n {\n name: 'observationTimeMax',\n columnType: 'INTEGER',\n id: '198103',\n },\n {\n name: 'observationTimeUnits',\n columnType: 'STRING',\n id: '198101',\n },\n ],\n rows: [\n {\n rowId: 9,\n versionNumber: 4,\n values: ['Danio rerio', 'embryo', '1', '7', 'days'],\n },\n {\n rowId: 10,\n versionNumber: 4,\n values: ['Danio rerio', 'larval', '2', '3', 'months'],\n },\n {\n rowId: 11,\n versionNumber: 4,\n values: ['Danio rerio', 'juvenile', '3', '6', 'months'],\n },\n {\n rowId: 12,\n versionNumber: 4,\n values: ['Danio rerio', 'adult', '4', '12', 'months'],\n },\n {\n rowId: 16,\n versionNumber: 4,\n values: ['Drosophila', 'embryo', '1', '24', 'hours'],\n },\n {\n rowId: 17,\n versionNumber: 4,\n values: ['Drosophila', 'larval', '2', '5', 'days'],\n },\n {\n rowId: 18,\n versionNumber: 4,\n values: ['Drosophila', 'pupal', '3', '12', 'days'],\n },\n {\n rowId: 19,\n versionNumber: 4,\n values: ['Drosophila', 'adult', '4', '5', 'weeks'],\n },\n {\n rowId: 1,\n versionNumber: 4,\n values: ['Mus musculus', 'prenatal', '1', '21', 'days'],\n },\n {\n rowId: 2,\n versionNumber: 4,\n values: ['Mus musculus', 'postnatal', '2', '6', 'months'],\n },\n {\n rowId: 20,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'prenatal', '1', '23', 'days'],\n },\n {\n rowId: 21,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'neonatal', '2', '4', 'weeks'],\n },\n {\n rowId: 22,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'weanling', '3', '2', 'months'],\n },\n {\n rowId: 23,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'juvenile', '4', '3', 'months'],\n },\n {\n rowId: 24,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'adolescent', '5', '6', 'months'],\n },\n {\n rowId: 25,\n versionNumber: 4,\n values: ['Rattus norvegicus', 'adult', '6', '12', 'months'],\n },\n {\n rowId: 13,\n versionNumber: 4,\n values: ['Saccharomyces', 'log phase', '1', '7', 'days'],\n },\n {\n rowId: 14,\n versionNumber: 4,\n values: ['Saccharomyces', 'stationary phase', '2', '2', 'weeks'],\n },\n {\n rowId: 15,\n versionNumber: 4,\n values: ['Saccharomyces', 'death phase', '3', '3', 'weeks'],\n },\n {\n rowId: 3,\n versionNumber: 4,\n values: ['Sus scrofa', 'prenatal', '1', '115', 'days'],\n },\n {\n rowId: 4,\n versionNumber: 4,\n values: ['Sus scrofa', 'neonatal', '2', '3', 'months'],\n },\n {\n rowId: 5,\n versionNumber: 4,\n values: ['Sus scrofa', 'weanling', '3', '6', 'months'],\n },\n {\n rowId: 6,\n versionNumber: 4,\n values: ['Sus scrofa', 'juvenile', '4', '12', 'months'],\n },\n {\n rowId: 7,\n versionNumber: 4,\n values: ['Sus scrofa', 'adolescent', '5', '2', 'years'],\n },\n {\n rowId: 8,\n versionNumber: 4,\n values: ['Sus scrofa', 'adult', '6', '3', 'years'],\n },\n ],\n },\n },\n}\n\nexport const phaseSpeciesIndex =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.headers.findIndex(\n header => header.name.toLowerCase() === SPECIES_COLUMN_NAME,\n )!\nexport const phaseObservationIndex =\n hardcodedPhasesQueryResponseData.queryResult?.queryResults.headers.findIndex(\n header => header.name.toLowerCase() === OBSERVATION_PHASE_COLUMN_NAME,\n )!\n\nexport default hardcodedPhasesQueryResponseData\n"],"mappings":";AAEA,IAAM,IAAsB,WACtB,IAAgC,oBAEhC,IAAsD;CAC1D,cAAc;CACd,aAAa;EACX,cAAc;EACd,cAAc;GACZ,cAAc;GACd,SAAS;GACT,MAAM;GACN,SAAS;IACP;KACE,MAAM;KACN,YAAY;KACZ,IAAI;IACN;IACA;KACE,MAAM;KACN,YAAY;KACZ,IAAI;IACN;IACA;KACE,MAAM;KACN,YAAY;KACZ,IAAI;IACN;IACA;KACE,MAAM;KACN,YAAY;KACZ,IAAI;IACN;IACA;KACE,MAAM;KACN,YAAY;KACZ,IAAI;IACN;GACF;GACA,MAAM;IACJ;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAe;MAAU;MAAK;MAAK;KAAM;IACpD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAe;MAAU;MAAK;MAAK;KAAQ;IACtD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAe;MAAY;MAAK;MAAK;KAAQ;IACxD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAe;MAAS;MAAK;MAAM;KAAQ;IACtD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAU;MAAK;MAAM;KAAO;IACrD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAU;MAAK;MAAK;KAAM;IACnD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAS;MAAK;MAAM;KAAM;IACnD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAS;MAAK;MAAK;KAAO;IACnD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAgB;MAAY;MAAK;MAAM;KAAM;IACxD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAgB;MAAa;MAAK;MAAK;KAAQ;IAC1D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAY;MAAK;MAAM;KAAM;IAC7D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAY;MAAK;MAAK;KAAO;IAC7D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAY;MAAK;MAAK;KAAQ;IAC9D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAY;MAAK;MAAK;KAAQ;IAC9D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAc;MAAK;MAAK;KAAQ;IAChE;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAqB;MAAS;MAAK;MAAM;KAAQ;IAC5D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAiB;MAAa;MAAK;MAAK;KAAM;IACzD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAiB;MAAoB;MAAK;MAAK;KAAO;IACjE;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAiB;MAAe;MAAK;MAAK;KAAO;IAC5D;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAY;MAAK;MAAO;KAAM;IACvD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAY;MAAK;MAAK;KAAQ;IACvD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAY;MAAK;MAAK;KAAQ;IACvD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAY;MAAK;MAAM;KAAQ;IACxD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAc;MAAK;MAAK;KAAO;IACxD;IACA;KACE,OAAO;KACP,eAAe;KACf,QAAQ;MAAC;MAAc;MAAS;MAAK;MAAK;KAAO;IACnD;GACF;EACF;CACF;AACF,GAEa,IACX,EAAiC,aAAa,aAAa,QAAQ,WACjE,MAAU,EAAO,KAAK,YAAY,MAAM,CAC1C,GACW,IACX,EAAiC,aAAa,aAAa,QAAQ,WACjE,MAAU,EAAO,KAAK,YAAY,MAAM,CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastMessage.js","names":[],"sources":["../../../src/components/ToastMessage/ToastMessage.tsx"],"sourcesContent":["import { uniqueId } from 'lodash-es'\nimport React, { ReactNode, useRef } from 'react'\nimport { toast, ToastBar, Toaster } from 'react-hot-toast'\nimport { CSSTransition, TransitionGroup } from 'react-transition-group'\nimport FullWidthAlert, {\n AlertButtonConfig,\n} from '../FullWidthAlert/FullWidthAlert'\n\nexport type ToastMessageProps = {\n text: string\n show: boolean\n autohide: boolean\n}\n\n/**\n *\n * Generalization of a Material-style toast message used in a couple of places. This component is simple and\n * cannot handle issuing multiple toast messages. For more sophisticated cases, see {@link displayToast}\n */\nexport function ToastMessage({\n text,\n show,\n autohide,\n}: ToastMessageProps): React.JSX.Element {\n const modalRef = useRef<HTMLDivElement>(null)\n return (\n <TransitionGroup>\n {show && (\n <CSSTransition\n nodeRef={modalRef}\n classNames=\"SRC-card\"\n timeout={autohide ? { enter: 500, exit: 300 } : {}}\n >\n <div className=\"SRC-modal\" ref={modalRef}>\n {text}\n </div>\n </CSSTransition>\n )}\n </TransitionGroup>\n )\n}\n\n/**\n * Customized ToastContainer for using react-toastify.\n *\n * Note that this will collide with other notification systems, such as the BootstrapNotify notifications\n * in SWC.\n */\nexport function SynapseToastContainer(): React.ReactNode {\n return (\n <Toaster\n containerClassName=\"SynapseToastContainer\"\n position=\"bottom-center\"\n >\n {t => (\n <ToastBar\n toast={t}\n style={{\n ...t.style,\n animation: t.visible ? 'fadeInUp 0.5s ease' : 'fadeOutDown 1s ease', // The exit animation needs to be long enough for the element to be removed, or else it will pop back in\n }}\n ></ToastBar>\n )}\n </Toaster>\n )\n}\n\ntype ToastMessageOptions = {\n title?: string\n /* autoCloseInMs default: 15000 */\n autoCloseInMs?: number\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n dismissOnPrimaryButtonClick?: boolean\n dismissOnSecondaryButtonClick?: boolean\n}\n\n/**\n * Displays a toast message. Requires one 'SynapseToastContainer' to be somewhere in the page.\n *\n * @param message - The description of the toast message.\n * @param variant - The type of toast message to display. Default 'info'.\n\n * In ToastMessageOptions:\n *\n * @param autoCloseInMs - The amount of time in milliseconds to wait before automatically closing the toast. To prevent autoclose, set to 0 or Infinity. Default 15000.\n *\n * The rest of the options params are undefined by default.\n */\nexport const displayToast = (\n message: ReactNode,\n variant?: 'info' | 'success' | 'warning' | 'danger',\n toastMessageOptions: ToastMessageOptions | null = {},\n): (() => void) => {\n const id = uniqueId('synToast-')\n const onClose = () => {\n toast.dismiss(id)\n }\n\n const {\n title = undefined,\n primaryButtonConfig = undefined,\n secondaryButtonConfig = undefined,\n dismissOnPrimaryButtonClick = false,\n dismissOnSecondaryButtonClick = false,\n } = toastMessageOptions ?? {}\n\n // If 'dismissOnPrimaryButtonClick' is true, then we need to invoke onClose after onClick is invoked.\n if (\n primaryButtonConfig &&\n 'onClick' in primaryButtonConfig &&\n dismissOnPrimaryButtonClick\n ) {\n const onClick = primaryButtonConfig.onClick!\n primaryButtonConfig.onClick = e => {\n onClick(e)\n onClose()\n }\n }\n\n // ditto for secondary\n if (\n secondaryButtonConfig &&\n 'onClick' in secondaryButtonConfig &&\n dismissOnSecondaryButtonClick\n ) {\n const onClick = secondaryButtonConfig.onClick!\n secondaryButtonConfig.onClick = e => {\n onClick(e)\n onClose()\n }\n }\n\n let { autoCloseInMs = 15000 } = toastMessageOptions ?? {}\n // Some toast libraries use 0 to prevent autoclose\n // react-hot-toast doesn't, but we can convert it for better compatibility as we try to migrate to use just one library\n if (autoCloseInMs === 0) {\n autoCloseInMs = Infinity\n }\n\n toast(\n <FullWidthAlert\n isGlobal={false}\n onClose={onClose}\n variant={variant ?? 'info'}\n show={true}\n title={title}\n description={message}\n primaryButtonConfig={primaryButtonConfig}\n secondaryButtonConfig={secondaryButtonConfig}\n />,\n {\n id: id,\n className: 'SynapseToastMessage',\n duration: autoCloseInMs,\n },\n )\n\n return onClose\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,EAAa,EAC3B,SACA,SACA,eACuC;CACvC,IAAM,IAAW,EAAuB,
|
|
1
|
+
{"version":3,"file":"ToastMessage.js","names":[],"sources":["../../../src/components/ToastMessage/ToastMessage.tsx"],"sourcesContent":["import { uniqueId } from 'lodash-es'\nimport React, { ReactNode, useRef } from 'react'\nimport { toast, ToastBar, Toaster } from 'react-hot-toast'\nimport { CSSTransition, TransitionGroup } from 'react-transition-group'\nimport FullWidthAlert, {\n AlertButtonConfig,\n} from '../FullWidthAlert/FullWidthAlert'\n\nexport type ToastMessageProps = {\n text: string\n show: boolean\n autohide: boolean\n}\n\n/**\n *\n * Generalization of a Material-style toast message used in a couple of places. This component is simple and\n * cannot handle issuing multiple toast messages. For more sophisticated cases, see {@link displayToast}\n */\nexport function ToastMessage({\n text,\n show,\n autohide,\n}: ToastMessageProps): React.JSX.Element {\n const modalRef = useRef<HTMLDivElement>(null)\n return (\n <TransitionGroup>\n {show && (\n <CSSTransition\n nodeRef={modalRef}\n classNames=\"SRC-card\"\n timeout={autohide ? { enter: 500, exit: 300 } : {}}\n >\n <div className=\"SRC-modal\" ref={modalRef}>\n {text}\n </div>\n </CSSTransition>\n )}\n </TransitionGroup>\n )\n}\n\n/**\n * Customized ToastContainer for using react-toastify.\n *\n * Note that this will collide with other notification systems, such as the BootstrapNotify notifications\n * in SWC.\n */\nexport function SynapseToastContainer(): React.ReactNode {\n return (\n <Toaster\n containerClassName=\"SynapseToastContainer\"\n position=\"bottom-center\"\n >\n {t => (\n <ToastBar\n toast={t}\n style={{\n ...t.style,\n animation: t.visible ? 'fadeInUp 0.5s ease' : 'fadeOutDown 1s ease', // The exit animation needs to be long enough for the element to be removed, or else it will pop back in\n }}\n ></ToastBar>\n )}\n </Toaster>\n )\n}\n\ntype ToastMessageOptions = {\n title?: string\n /* autoCloseInMs default: 15000 */\n autoCloseInMs?: number\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n dismissOnPrimaryButtonClick?: boolean\n dismissOnSecondaryButtonClick?: boolean\n}\n\n/**\n * Displays a toast message. Requires one 'SynapseToastContainer' to be somewhere in the page.\n *\n * @param message - The description of the toast message.\n * @param variant - The type of toast message to display. Default 'info'.\n\n * In ToastMessageOptions:\n *\n * @param autoCloseInMs - The amount of time in milliseconds to wait before automatically closing the toast. To prevent autoclose, set to 0 or Infinity. Default 15000.\n *\n * The rest of the options params are undefined by default.\n */\nexport const displayToast = (\n message: ReactNode,\n variant?: 'info' | 'success' | 'warning' | 'danger',\n toastMessageOptions: ToastMessageOptions | null = {},\n): (() => void) => {\n const id = uniqueId('synToast-')\n const onClose = () => {\n toast.dismiss(id)\n }\n\n const {\n title = undefined,\n primaryButtonConfig = undefined,\n secondaryButtonConfig = undefined,\n dismissOnPrimaryButtonClick = false,\n dismissOnSecondaryButtonClick = false,\n } = toastMessageOptions ?? {}\n\n // If 'dismissOnPrimaryButtonClick' is true, then we need to invoke onClose after onClick is invoked.\n if (\n primaryButtonConfig &&\n 'onClick' in primaryButtonConfig &&\n dismissOnPrimaryButtonClick\n ) {\n const onClick = primaryButtonConfig.onClick!\n primaryButtonConfig.onClick = e => {\n onClick(e)\n onClose()\n }\n }\n\n // ditto for secondary\n if (\n secondaryButtonConfig &&\n 'onClick' in secondaryButtonConfig &&\n dismissOnSecondaryButtonClick\n ) {\n const onClick = secondaryButtonConfig.onClick!\n secondaryButtonConfig.onClick = e => {\n onClick(e)\n onClose()\n }\n }\n\n let { autoCloseInMs = 15000 } = toastMessageOptions ?? {}\n // Some toast libraries use 0 to prevent autoclose\n // react-hot-toast doesn't, but we can convert it for better compatibility as we try to migrate to use just one library\n if (autoCloseInMs === 0) {\n autoCloseInMs = Infinity\n }\n\n toast(\n <FullWidthAlert\n isGlobal={false}\n onClose={onClose}\n variant={variant ?? 'info'}\n show={true}\n title={title}\n description={message}\n primaryButtonConfig={primaryButtonConfig}\n secondaryButtonConfig={secondaryButtonConfig}\n />,\n {\n id: id,\n className: 'SynapseToastMessage',\n duration: autoCloseInMs,\n },\n )\n\n return onClose\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,EAAa,EAC3B,SACA,SACA,eACuC;CACvC,IAAM,IAAW,EAAuB,IAAI;CAC5C,OACE,kBAAC,GAAD,EAAA,UACG,KACC,kBAAC,GAAD;EACE,SAAS;EACT,YAAW;EACX,SAAS,IAAW;GAAE,OAAO;GAAK,MAAM;EAAI,IAAI,CAAC;YAEjD,kBAAC,OAAD;GAAK,WAAU;GAAY,KAAK;aAC7B;EACE,CAAA;CACQ,CAAA,EAEF,CAAA;AAErB;AAQA,SAAgB,IAAyC;CACvD,OACE,kBAAC,GAAD;EACE,oBAAmB;EACnB,UAAS;aAER,MACC,kBAAC,GAAD;GACE,OAAO;GACP,OAAO;IACL,GAAG,EAAE;IACL,WAAW,EAAE,UAAU,uBAAuB;GAChD;EACS,CAAA;CAEN,CAAA;AAEb;AAwBA,IAAa,KACX,GACA,GACA,IAAkD,CAAC,MAClC;CACjB,IAAM,IAAK,EAAS,WAAW,GACzB,UAAgB;EACpB,EAAM,QAAQ,CAAE;CAClB,GAEM,EACJ,WAAQ,KAAA,GACR,yBAAsB,KAAA,GACtB,2BAAwB,KAAA,GACxB,iCAA8B,IAC9B,mCAAgC,OAC9B,KAAuB,CAAC;CAG5B,IACE,KACA,aAAa,KACb,GACA;EACA,IAAM,IAAU,EAAoB;EACpC,EAAoB,WAAU,MAAK;GAEjC,AADA,EAAQ,CAAC,GACT,EAAQ;EACV;CACF;CAGA,IACE,KACA,aAAa,KACb,GACA;EACA,IAAM,IAAU,EAAsB;EACtC,EAAsB,WAAU,MAAK;GAEnC,AADA,EAAQ,CAAC,GACT,EAAQ;EACV;CACF;CAEA,IAAI,EAAE,mBAAgB,SAAU,KAAuB,CAAC;CAyBxD,OAtBI,MAAkB,MACpB,IAAgB,WAGlB,EACE,kBAAC,GAAD;EACE,UAAU;EACD;EACT,SAAS,KAAW;EACpB,MAAM;EACC;EACP,aAAa;EACQ;EACE;CACxB,CAAA,GACD;EACM;EACJ,WAAW;EACX,UAAU;CACZ,CACF,GAEO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotalQueryResults.js","names":[],"sources":["../../src/components/TotalQueryResults.tsx"],"sourcesContent":["import { FacetColumnRequest } from '@sage-bionetworks/synapse-types'\nimport pluralize from 'pluralize'\nimport { CSSProperties, Suspense } from 'react'\nimport { SynapseErrorBoundary } from './error'\nimport IconSvg from './IconSvg/IconSvg'\nimport { useQueryContext } from './QueryContext'\nimport { useQueryVisualizationContext } from './QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from './QueryWrapper/useGetQueryMetadata'\nimport { SkeletonInlineBlock } from './Skeleton'\nimport SelectionCriteriaPills from './widgets/facet-nav/SelectionCriteriaPills'\n\nexport type TotalQueryResultsProps = {\n style?: CSSProperties\n frontText: string\n endText?: string\n applyChanges?: (newFacets: FacetColumnRequest[]) => void\n hideIfUnfiltered?: boolean\n}\n\nfunction TotalQueryResults(props: TotalQueryResultsProps) {\n const { style, frontText, endText = '', hideIfUnfiltered = false } = props\n const { resetQuery, hasResettableFilters } = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { unitDescription } = useQueryVisualizationContext()\n\n const total = queryMetadata?.queryCount\n\n const showClearAll = hasResettableFilters\n\n return (\n <div\n className={`TotalQueryResults ${\n hasResettableFilters ? 'hasFilters' : ''\n }`}\n style={style}\n >\n {(hasResettableFilters || !hideIfUnfiltered) && (\n <div className=\"TotalQueryResults__topbar\">\n <span className=\"SRC-boldText\">\n {frontText} {total?.toLocaleString()}{' '}\n {pluralize(unitDescription, total)} {endText}\n </span>\n {showClearAll && (\n <a\n onClick={resetQuery}\n className=\"TotalQueryResults__topbar__clearall\"\n >\n <IconSvg icon=\"deleteSweep\" />\n Clear all filters\n </a>\n )}\n </div>\n )}\n <div className=\"TotalQueryResults__selections\">\n <SelectionCriteriaPills />\n </div>\n </div>\n )\n}\n\nexport default function TotalQueryResultsWithSuspense(\n props: TotalQueryResultsProps,\n) {\n return (\n <SynapseErrorBoundary>\n <Suspense fallback={<SkeletonInlineBlock width={100} />}>\n <TotalQueryResults {...props} />\n </Suspense>\n </SynapseErrorBoundary>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,SAAS,EAAkB,GAA+B;CACxD,IAAM,EAAE,UAAO,cAAW,aAAU,IAAI,sBAAmB,OAAU,GAC/D,EAAE,eAAY,4BAAyB,
|
|
1
|
+
{"version":3,"file":"TotalQueryResults.js","names":[],"sources":["../../src/components/TotalQueryResults.tsx"],"sourcesContent":["import { FacetColumnRequest } from '@sage-bionetworks/synapse-types'\nimport pluralize from 'pluralize'\nimport { CSSProperties, Suspense } from 'react'\nimport { SynapseErrorBoundary } from './error'\nimport IconSvg from './IconSvg/IconSvg'\nimport { useQueryContext } from './QueryContext'\nimport { useQueryVisualizationContext } from './QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from './QueryWrapper/useGetQueryMetadata'\nimport { SkeletonInlineBlock } from './Skeleton'\nimport SelectionCriteriaPills from './widgets/facet-nav/SelectionCriteriaPills'\n\nexport type TotalQueryResultsProps = {\n style?: CSSProperties\n frontText: string\n endText?: string\n applyChanges?: (newFacets: FacetColumnRequest[]) => void\n hideIfUnfiltered?: boolean\n}\n\nfunction TotalQueryResults(props: TotalQueryResultsProps) {\n const { style, frontText, endText = '', hideIfUnfiltered = false } = props\n const { resetQuery, hasResettableFilters } = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { unitDescription } = useQueryVisualizationContext()\n\n const total = queryMetadata?.queryCount\n\n const showClearAll = hasResettableFilters\n\n return (\n <div\n className={`TotalQueryResults ${\n hasResettableFilters ? 'hasFilters' : ''\n }`}\n style={style}\n >\n {(hasResettableFilters || !hideIfUnfiltered) && (\n <div className=\"TotalQueryResults__topbar\">\n <span className=\"SRC-boldText\">\n {frontText} {total?.toLocaleString()}{' '}\n {pluralize(unitDescription, total)} {endText}\n </span>\n {showClearAll && (\n <a\n onClick={resetQuery}\n className=\"TotalQueryResults__topbar__clearall\"\n >\n <IconSvg icon=\"deleteSweep\" />\n Clear all filters\n </a>\n )}\n </div>\n )}\n <div className=\"TotalQueryResults__selections\">\n <SelectionCriteriaPills />\n </div>\n </div>\n )\n}\n\nexport default function TotalQueryResultsWithSuspense(\n props: TotalQueryResultsProps,\n) {\n return (\n <SynapseErrorBoundary>\n <Suspense fallback={<SkeletonInlineBlock width={100} />}>\n <TotalQueryResults {...props} />\n </Suspense>\n </SynapseErrorBoundary>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmBA,SAAS,EAAkB,GAA+B;CACxD,IAAM,EAAE,UAAO,cAAW,aAAU,IAAI,sBAAmB,OAAU,GAC/D,EAAE,eAAY,4BAAyB,EAAgB,GACvD,EAAE,MAAM,MAAkB,EAA4B,GACtD,EAAE,uBAAoB,EAA6B,GAEnD,IAAQ,GAAe,YAEvB,IAAe;CAErB,OACE,kBAAC,OAAD;EACE,WAAW,qBACT,IAAuB,eAAe;EAEjC;YAJT,EAMI,KAAwB,CAAC,MACzB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACG;KAAU;KAAE,GAAO,eAAe;KAAG;KACrC,EAAU,GAAiB,CAAK;KAAE;KAAE;IACjC;OACL,KACC,kBAAC,KAAD;IACE,SAAS;IACT,WAAU;cAFZ,CAIE,kBAAC,GAAD,EAAS,MAAK,cAAe,CAAA,GAAC,mBAE7B;KAEF;MAEP,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD,CAAyB,CAAA;EACtB,CAAA,CACF;;AAET;AAEA,SAAwB,EACtB,GACA;CACA,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,UAAU,kBAAC,GAAD,EAAqB,OAAO,IAAM,CAAA;YACpD,kBAAC,GAAD,EAAmB,GAAI,EAAQ,CAAA;CACvB,CAAA,EACU,CAAA;AAE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/UserCard/Avatar.tsx"],"sourcesContent":["import { getColor } from '@/utils/functions/getUserData'\nimport { useOverlay } from '@/utils/hooks'\nimport { Avatar as MUIAvatar, Skeleton, SxProps, useTheme } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\nimport { CSSProperties, ReactNode, useRef } from 'react'\nimport UserCardMedium from './UserCardMedium'\n\nconst TIMER_DELAY_SHOW = 250 // milliseconds\nconst TIMER_DELAY_HIDE = 500\n\nexport type AvatarSize = 'SMALL' | 'MEDIUM' | 'LARGE'\n\nexport type AvatarProps = {\n userProfile: UserProfile\n avatarSize?: AvatarSize\n imageURL?: string\n showCardOnHover?: boolean\n isLoadingAvatar?: boolean\n className?: string\n}\n\nexport function Avatar({\n userProfile,\n avatarSize = 'LARGE',\n imageURL,\n showCardOnHover = false,\n isLoadingAvatar = false,\n className,\n}: AvatarProps) {\n const target = useRef(null)\n const theme = useTheme()\n\n const mediumUserCard = (\n <UserCardMedium userProfile={userProfile} imageURL={imageURL} />\n )\n const {\n OverlayComponent,\n isShowing: isShowingOverlay,\n toggleShow,\n toggleHide,\n } = useOverlay(mediumUserCard, target, TIMER_DELAY_SHOW, TIMER_DELAY_HIDE, {\n sx: { maxWidth: '425px' },\n })\n\n let sizeStyles: SxProps = {}\n switch (avatarSize) {\n case 'SMALL':\n sizeStyles = {\n fontSize: '12px',\n width: '20px',\n height: '20px',\n }\n break\n case 'MEDIUM':\n sizeStyles = {\n fontSize: '18px',\n width: '30px',\n height: '30px',\n }\n break\n case 'LARGE':\n sizeStyles = {\n fontSize: '26px',\n width: '80px',\n height: '80px',\n [theme.breakpoints.down('sm')]: {\n fontSize: '21px',\n width: '45px',\n height: '45px',\n },\n }\n break\n default:\n break\n }\n\n const cursorStyle = showCardOnHover ? 'pointer' : 'unset'\n\n const hasProfileImage = !!imageURL\n\n const { ownerId } = userProfile\n const { userName = ownerId, firstName } = userProfile\n const conditionalStyles: CSSProperties = hasProfileImage\n ? {\n backgroundImage: `url(${imageURL})`,\n }\n : { background: getColor(userName) }\n\n if (isLoadingAvatar) {\n return <Skeleton sx={sizeStyles} variant=\"circular\" />\n }\n\n let content: ReactNode | string = <></>\n\n if (!hasProfileImage) {\n content = firstName ? firstName[0] : userName[0]\n }\n\n return (\n <>\n {showCardOnHover && <OverlayComponent />}\n <MUIAvatar\n ref={target}\n role=\"img\"\n onMouseEnter={() => toggleShow()}\n onMouseLeave={() => toggleHide()}\n onClick={event => {\n if (showCardOnHover) {\n event.stopPropagation()\n }\n if (isShowingOverlay) {\n toggleHide(false)\n } else {\n toggleShow(false)\n }\n }}\n className={`${className ?? ''}`}\n sx={{\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n cursor: cursorStyle,\n textDecoration: 'none',\n ...sizeStyles,\n ...conditionalStyles,\n }}\n >\n {content}\n </MUIAvatar>\n </>\n )\n}\n"],"mappings":";;;;;;;;AAOA,IAAM,IAAmB,KACnB,IAAmB;AAazB,SAAgB,EAAO,EACrB,gBACA,gBAAa,SACb,aACA,qBAAkB,IAClB,qBAAkB,IAClB,gBACc;CACd,IAAM,IAAS,EAAO,
|
|
1
|
+
{"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/UserCard/Avatar.tsx"],"sourcesContent":["import { getColor } from '@/utils/functions/getUserData'\nimport { useOverlay } from '@/utils/hooks'\nimport { Avatar as MUIAvatar, Skeleton, SxProps, useTheme } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\nimport { CSSProperties, ReactNode, useRef } from 'react'\nimport UserCardMedium from './UserCardMedium'\n\nconst TIMER_DELAY_SHOW = 250 // milliseconds\nconst TIMER_DELAY_HIDE = 500\n\nexport type AvatarSize = 'SMALL' | 'MEDIUM' | 'LARGE'\n\nexport type AvatarProps = {\n userProfile: UserProfile\n avatarSize?: AvatarSize\n imageURL?: string\n showCardOnHover?: boolean\n isLoadingAvatar?: boolean\n className?: string\n}\n\nexport function Avatar({\n userProfile,\n avatarSize = 'LARGE',\n imageURL,\n showCardOnHover = false,\n isLoadingAvatar = false,\n className,\n}: AvatarProps) {\n const target = useRef(null)\n const theme = useTheme()\n\n const mediumUserCard = (\n <UserCardMedium userProfile={userProfile} imageURL={imageURL} />\n )\n const {\n OverlayComponent,\n isShowing: isShowingOverlay,\n toggleShow,\n toggleHide,\n } = useOverlay(mediumUserCard, target, TIMER_DELAY_SHOW, TIMER_DELAY_HIDE, {\n sx: { maxWidth: '425px' },\n })\n\n let sizeStyles: SxProps = {}\n switch (avatarSize) {\n case 'SMALL':\n sizeStyles = {\n fontSize: '12px',\n width: '20px',\n height: '20px',\n }\n break\n case 'MEDIUM':\n sizeStyles = {\n fontSize: '18px',\n width: '30px',\n height: '30px',\n }\n break\n case 'LARGE':\n sizeStyles = {\n fontSize: '26px',\n width: '80px',\n height: '80px',\n [theme.breakpoints.down('sm')]: {\n fontSize: '21px',\n width: '45px',\n height: '45px',\n },\n }\n break\n default:\n break\n }\n\n const cursorStyle = showCardOnHover ? 'pointer' : 'unset'\n\n const hasProfileImage = !!imageURL\n\n const { ownerId } = userProfile\n const { userName = ownerId, firstName } = userProfile\n const conditionalStyles: CSSProperties = hasProfileImage\n ? {\n backgroundImage: `url(${imageURL})`,\n }\n : { background: getColor(userName) }\n\n if (isLoadingAvatar) {\n return <Skeleton sx={sizeStyles} variant=\"circular\" />\n }\n\n let content: ReactNode | string = <></>\n\n if (!hasProfileImage) {\n content = firstName ? firstName[0] : userName[0]\n }\n\n return (\n <>\n {showCardOnHover && <OverlayComponent />}\n <MUIAvatar\n ref={target}\n role=\"img\"\n onMouseEnter={() => toggleShow()}\n onMouseLeave={() => toggleHide()}\n onClick={event => {\n if (showCardOnHover) {\n event.stopPropagation()\n }\n if (isShowingOverlay) {\n toggleHide(false)\n } else {\n toggleShow(false)\n }\n }}\n className={`${className ?? ''}`}\n sx={{\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n cursor: cursorStyle,\n textDecoration: 'none',\n ...sizeStyles,\n ...conditionalStyles,\n }}\n >\n {content}\n </MUIAvatar>\n </>\n )\n}\n"],"mappings":";;;;;;;;AAOA,IAAM,IAAmB,KACnB,IAAmB;AAazB,SAAgB,EAAO,EACrB,gBACA,gBAAa,SACb,aACA,qBAAkB,IAClB,qBAAkB,IAClB,gBACc;CACd,IAAM,IAAS,EAAO,IAAI,GACpB,IAAQ,EAAS,GAKjB,EACJ,qBACA,WAAW,GACX,eACA,kBACE,EAPF,kBAAC,GAAD;EAA6B;EAAuB;CAAW,CAOlD,GAAgB,GAAQ,GAAkB,GAAkB,EACzE,IAAI,EAAE,UAAU,QAAQ,EAC1B,CAAC,GAEG,IAAsB,CAAC;CAC3B,QAAQ,GAAR;EACE,KAAK;GACH,IAAa;IACX,UAAU;IACV,OAAO;IACP,QAAQ;GACV;GACA;EACF,KAAK;GACH,IAAa;IACX,UAAU;IACV,OAAO;IACP,QAAQ;GACV;GACA;EACF,KAAK;GACH,IAAa;IACX,UAAU;IACV,OAAO;IACP,QAAQ;KACP,EAAM,YAAY,KAAK,IAAI,IAAI;KAC9B,UAAU;KACV,OAAO;KACP,QAAQ;IACV;GACF;GACA;EACF,SACE;CACJ;CAEA,IAAM,IAAc,IAAkB,YAAY,SAE5C,IAAkB,CAAC,CAAC,GAEpB,EAAE,eAAY,GACd,EAAE,cAAW,GAAS,iBAAc,GACpC,IAAmC,IACrC,EACE,iBAAiB,OAAO,EAAS,GACnC,IACA,EAAE,YAAY,EAAS,CAAQ,EAAE;CAErC,IAAI,GACF,OAAO,kBAAC,GAAD;EAAU,IAAI;EAAY,SAAQ;CAAY,CAAA;CAGvD,IAAI,IAA8B,kBAAA,GAAA,CAAI,CAAA;CAMtC,OAJK,MACH,IAAU,IAAY,EAAU,KAAK,EAAS,KAI9C,kBAAA,GAAA,EAAA,UAAA,CACG,KAAmB,kBAAC,GAAD,CAAmB,CAAA,GACvC,kBAAC,GAAD;EACE,KAAK;EACL,MAAK;EACL,oBAAoB,EAAW;EAC/B,oBAAoB,EAAW;EAC/B,UAAS,MAAS;GAIhB,AAHI,KACF,EAAM,gBAAgB,GAEpB,IACF,EAAW,EAAK,IAEhB,EAAW,EAAK;EAEpB;EACA,WAAW,GAAG,KAAa;EAC3B,IAAI;GACF,oBAAoB;GACpB,kBAAkB;GAClB,gBAAgB;GAChB,QAAQ;GACR,gBAAgB;GAChB,GAAG;GACH,GAAG;EACL;YAEC;CACQ,CAAA,CACX,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserBadge.js","names":[],"sources":["../../../src/components/UserCard/UserBadge.tsx"],"sourcesContent":["import { useUserOrTeam } from '../UserOrTeamBadge/useUserOrTeam'\nimport { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { getPrincipalDisplayName } from '@/utils/functions/getPrincipalDisplayName'\nimport { useOverlay } from '@/utils/hooks/useOverlay'\nimport { Box, Chip, Link, Skeleton } from '@mui/material'\nimport { CSSProperties, useMemo, useRef } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { AvatarSize } from './Avatar'\nimport UserCard from './UserCard'\n\nexport type UserBadgeProps = {\n /* The ID of the user to show. If undefined, a skeleton will be shown */\n userId?: string\n /* If true, shows the user's avatar with their name. Default false */\n withAvatar?: boolean\n /* Whether a card containing additional profile information should be shown on hover. Default true. */\n showCardOnHover?: boolean\n /* Whether to disable the profile linking to the user's profile page */\n disableLink?: boolean\n /* Override the href of the UserBadge component. Default is the Synapse profile page */\n link?: string\n /* Shows icons to denote profile certification and validation. Default is false. */\n showAccountLevelIcon?: boolean\n /* Whether to open the clicked link in a new tab. Default is false */\n openLinkInNewTab?: boolean\n /* Defines the size of the avatar if `withAvatar` is true. Default is 'SMALL' */\n avatarSize?: AvatarSize\n /* If true, shows the user's full name. Default is false */\n showFullName?: boolean\n\n className?: string\n\n showModeratorBadge?: boolean\n}\n\nconst TIMER_DELAY_SHOW = 250 // milliseconds\nconst TIMER_DELAY_HIDE = 500\n\nexport function UserBadge(props: UserBadgeProps) {\n const {\n userId,\n showCardOnHover = true,\n disableLink,\n showAccountLevelIcon = false,\n openLinkInNewTab = false,\n withAvatar = false,\n avatarSize = 'SMALL',\n className,\n showFullName = false,\n showModeratorBadge = false,\n } = props\n let { link } = props\n\n const target = useRef(null)\n const certificationOrVerification =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED\n\n const { userGroupHeader, IconComponent } = useUserOrTeam(userId)\n\n // To show certification/validation status, we need the full bundle. Only fetch if these should be shown.\n const { data: userBundle } = useGetUserBundle(\n userId!,\n certificationOrVerification,\n {\n enabled: Boolean(userId) && showAccountLevelIcon,\n },\n )\n\n const mediumUserCard = useMemo(\n () => <UserCard ownerId={userId} size={'MEDIUM USER CARD'} />,\n [userId],\n )\n\n if (link == null) {\n link = `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${userId}`\n }\n\n const { OverlayComponent, toggleShow, toggleHide } = useOverlay(\n mediumUserCard,\n target,\n TIMER_DELAY_SHOW,\n TIMER_DELAY_HIDE,\n { sx: { maxWidth: '425px' } },\n )\n\n const avatar = withAvatar ? (\n <span className=\"SRC-inline-avatar\">\n <IconComponent avatarSize={avatarSize} />\n </span>\n ) : (\n <></>\n )\n\n const accountLevelIcon = (\n <Box\n sx={{\n display: 'flex',\n gap: 1,\n mx: 1,\n }}\n >\n {!userBundle?.isCertified && !userBundle?.isVerified && (\n <IconSvg\n icon=\"accountRegistered\"\n label={'Registered'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n {userBundle?.isCertified && (\n <IconSvg\n icon=\"accountCertified\"\n label={'Certified'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n {userBundle?.isVerified && (\n <IconSvg\n icon=\"accountValidated\"\n label={'Validated'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n </Box>\n )\n\n const displayName = userGroupHeader\n ? getPrincipalDisplayName(userGroupHeader, { showFullName })\n : undefined\n\n const Tag = showCardOnHover || !disableLink ? Link : 'span'\n\n let style: CSSProperties = {}\n if (showCardOnHover) {\n style = { whiteSpace: 'nowrap' }\n } else if (disableLink) {\n style = { cursor: 'unset' }\n }\n\n return (\n <>\n {showCardOnHover && <OverlayComponent />}\n {avatar}\n <Tag\n className={`SRC-userCard UserBadge SRC-boldText ${className ?? ''}`}\n style={style}\n href={disableLink ? undefined : link}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n ref={target}\n onMouseEnter={() => toggleShow()}\n onMouseLeave={() => toggleHide()}\n >\n {displayName ?? <Skeleton width={'100px'} />}\n {showAccountLevelIcon && accountLevelIcon}\n </Tag>\n {showModeratorBadge && (\n <Chip\n sx={{\n borderRadius: '5px',\n backgroundColor: '#395979',\n color: '#FFF',\n fontWeight: 700,\n fontSize: '12px',\n marginLeft: '8px',\n height: 'unset',\n '& .MuiChip-label': {\n padding: '5px 6px',\n },\n }}\n label=\"Moderator\"\n />\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,IAAmB,KACnB,IAAmB;AAEzB,SAAgB,EAAU,GAAuB;CAC/C,IAAM,EACJ,WACA,qBAAkB,IAClB,gBACA,0BAAuB,IACvB,sBAAmB,IACnB,gBAAa,IACb,gBAAa,SACb,cACA,kBAAe,IACf,wBAAqB,OACnB,GACA,EAAE,YAAS,GAET,IAAS,EAAO,
|
|
1
|
+
{"version":3,"file":"UserBadge.js","names":[],"sources":["../../../src/components/UserCard/UserBadge.tsx"],"sourcesContent":["import { useUserOrTeam } from '../UserOrTeamBadge/useUserOrTeam'\nimport { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { getPrincipalDisplayName } from '@/utils/functions/getPrincipalDisplayName'\nimport { useOverlay } from '@/utils/hooks/useOverlay'\nimport { Box, Chip, Link, Skeleton } from '@mui/material'\nimport { CSSProperties, useMemo, useRef } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { AvatarSize } from './Avatar'\nimport UserCard from './UserCard'\n\nexport type UserBadgeProps = {\n /* The ID of the user to show. If undefined, a skeleton will be shown */\n userId?: string\n /* If true, shows the user's avatar with their name. Default false */\n withAvatar?: boolean\n /* Whether a card containing additional profile information should be shown on hover. Default true. */\n showCardOnHover?: boolean\n /* Whether to disable the profile linking to the user's profile page */\n disableLink?: boolean\n /* Override the href of the UserBadge component. Default is the Synapse profile page */\n link?: string\n /* Shows icons to denote profile certification and validation. Default is false. */\n showAccountLevelIcon?: boolean\n /* Whether to open the clicked link in a new tab. Default is false */\n openLinkInNewTab?: boolean\n /* Defines the size of the avatar if `withAvatar` is true. Default is 'SMALL' */\n avatarSize?: AvatarSize\n /* If true, shows the user's full name. Default is false */\n showFullName?: boolean\n\n className?: string\n\n showModeratorBadge?: boolean\n}\n\nconst TIMER_DELAY_SHOW = 250 // milliseconds\nconst TIMER_DELAY_HIDE = 500\n\nexport function UserBadge(props: UserBadgeProps) {\n const {\n userId,\n showCardOnHover = true,\n disableLink,\n showAccountLevelIcon = false,\n openLinkInNewTab = false,\n withAvatar = false,\n avatarSize = 'SMALL',\n className,\n showFullName = false,\n showModeratorBadge = false,\n } = props\n let { link } = props\n\n const target = useRef(null)\n const certificationOrVerification =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED\n\n const { userGroupHeader, IconComponent } = useUserOrTeam(userId)\n\n // To show certification/validation status, we need the full bundle. Only fetch if these should be shown.\n const { data: userBundle } = useGetUserBundle(\n userId!,\n certificationOrVerification,\n {\n enabled: Boolean(userId) && showAccountLevelIcon,\n },\n )\n\n const mediumUserCard = useMemo(\n () => <UserCard ownerId={userId} size={'MEDIUM USER CARD'} />,\n [userId],\n )\n\n if (link == null) {\n link = `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${userId}`\n }\n\n const { OverlayComponent, toggleShow, toggleHide } = useOverlay(\n mediumUserCard,\n target,\n TIMER_DELAY_SHOW,\n TIMER_DELAY_HIDE,\n { sx: { maxWidth: '425px' } },\n )\n\n const avatar = withAvatar ? (\n <span className=\"SRC-inline-avatar\">\n <IconComponent avatarSize={avatarSize} />\n </span>\n ) : (\n <></>\n )\n\n const accountLevelIcon = (\n <Box\n sx={{\n display: 'flex',\n gap: 1,\n mx: 1,\n }}\n >\n {!userBundle?.isCertified && !userBundle?.isVerified && (\n <IconSvg\n icon=\"accountRegistered\"\n label={'Registered'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n {userBundle?.isCertified && (\n <IconSvg\n icon=\"accountCertified\"\n label={'Certified'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n {userBundle?.isVerified && (\n <IconSvg\n icon=\"accountValidated\"\n label={'Validated'}\n sx={{ width: '30px', height: '30px' }}\n />\n )}\n </Box>\n )\n\n const displayName = userGroupHeader\n ? getPrincipalDisplayName(userGroupHeader, { showFullName })\n : undefined\n\n const Tag = showCardOnHover || !disableLink ? Link : 'span'\n\n let style: CSSProperties = {}\n if (showCardOnHover) {\n style = { whiteSpace: 'nowrap' }\n } else if (disableLink) {\n style = { cursor: 'unset' }\n }\n\n return (\n <>\n {showCardOnHover && <OverlayComponent />}\n {avatar}\n <Tag\n className={`SRC-userCard UserBadge SRC-boldText ${className ?? ''}`}\n style={style}\n href={disableLink ? undefined : link}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n ref={target}\n onMouseEnter={() => toggleShow()}\n onMouseLeave={() => toggleHide()}\n >\n {displayName ?? <Skeleton width={'100px'} />}\n {showAccountLevelIcon && accountLevelIcon}\n </Tag>\n {showModeratorBadge && (\n <Chip\n sx={{\n borderRadius: '5px',\n backgroundColor: '#395979',\n color: '#FFF',\n fontWeight: 700,\n fontSize: '12px',\n marginLeft: '8px',\n height: 'unset',\n '& .MuiChip-label': {\n padding: '5px 6px',\n },\n }}\n label=\"Moderator\"\n />\n )}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,IAAmB,KACnB,IAAmB;AAEzB,SAAgB,EAAU,GAAuB;CAC/C,IAAM,EACJ,WACA,qBAAkB,IAClB,gBACA,0BAAuB,IACvB,sBAAmB,IACnB,gBAAa,IACb,gBAAa,SACb,cACA,kBAAe,IACf,wBAAqB,OACnB,GACA,EAAE,YAAS,GAET,IAAS,EAAO,IAAI,GAKpB,EAAE,oBAAiB,qBAAkB,EAAc,CAAM,GAGzD,EAAE,MAAM,MAAe,EAC3B,GACA,IACA,EACE,SAAS,EAAQ,KAAW,EAC9B,CACF,GAEM,IAAiB,QACf,kBAAC,GAAD;EAAU,SAAS;EAAQ,MAAM;CAAqB,CAAA,GAC5D,CAAC,CAAM,CACT;CAEA,AACE,MAAO,GAAG,EAA2B,OAAO,UAAU;CAGxD,IAAM,EAAE,qBAAkB,eAAY,kBAAe,EACnD,GACA,GACA,GACA,GACA,EAAE,IAAI,EAAE,UAAU,QAAQ,EAAE,CAC9B,GAEM,IAAS,IACb,kBAAC,QAAD;EAAM,WAAU;YACd,kBAAC,GAAD,EAA2B,cAAa,CAAA;CACpC,CAAA,IAEN,kBAAA,GAAA,CAAI,CAAA,GAGA,IACJ,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,IAAI;EACN;YALF;GAOG,CAAC,GAAY,eAAe,CAAC,GAAY,cACxC,kBAAC,GAAD;IACE,MAAK;IACL,OAAO;IACP,IAAI;KAAE,OAAO;KAAQ,QAAQ;IAAO;GACrC,CAAA;GAEF,GAAY,eACX,kBAAC,GAAD;IACE,MAAK;IACL,OAAO;IACP,IAAI;KAAE,OAAO;KAAQ,QAAQ;IAAO;GACrC,CAAA;GAEF,GAAY,cACX,kBAAC,GAAD;IACE,MAAK;IACL,OAAO;IACP,IAAI;KAAE,OAAO;KAAQ,QAAQ;IAAO;GACrC,CAAA;EAEA;KAGD,IAAc,IAChB,EAAwB,GAAiB,EAAE,gBAAa,CAAC,IACzD,KAAA,GAEE,IAAM,KAAmB,CAAC,IAAc,IAAO,QAEjD,IAAuB,CAAC;CAO5B,OANI,IACF,IAAQ,EAAE,YAAY,SAAS,IACtB,MACT,IAAQ,EAAE,QAAQ,QAAQ,IAI1B,kBAAA,GAAA,EAAA,UAAA;EACG,KAAmB,kBAAC,GAAD,CAAmB,CAAA;EACtC;EACD,kBAAC,GAAD;GACE,WAAW,uCAAuC,KAAa;GACxD;GACP,MAAM,IAAc,KAAA,IAAY;GAChC,QAAQ,IAAmB,WAAW;GACtC,KAAK,IAAmB,eAAe;GACvC,KAAK;GACL,oBAAoB,EAAW;GAC/B,oBAAoB,EAAW;aARjC,CAUG,KAAe,kBAAC,GAAD,EAAU,OAAO,QAAU,CAAA,GAC1C,KAAwB,CACtB;;EACJ,KACC,kBAAC,GAAD;GACE,IAAI;IACF,cAAc;IACd,iBAAiB;IACjB,OAAO;IACP,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,oBAAoB,EAClB,SAAS,UACX;GACF;GACA,OAAM;EACP,CAAA;CAEH,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCard.js","names":[],"sources":["../../../src/components/UserCard/UserCard.tsx"],"sourcesContent":["import { useGetProfileImage } from '@/synapse-queries/file/useFiles'\nimport {\n useGetPrincipalIdForAlias,\n useGetUserProfile,\n} from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport usePreFetchResource, {\n useCreateUrlForData,\n} from '@/utils/hooks/usePreFetchResource'\nimport { UserCardSize } from '@/utils/SynapseConstants'\nimport { AliasType, UserProfile } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { Avatar, AvatarSize } from './Avatar'\nimport { UserBadge } from './UserBadge'\nimport { MenuAction } from './UserCardContextMenu'\nimport UserCardMedium from './UserCardMedium'\n\nexport type UserCardProps = {\n /** A UserProfile may be used for data for the card. You must supply one of `userProfile`, `alias`, `ownerId` */\n userProfile?: UserProfile\n /** An alias that resolves the ownerId for the UserProfile. You must supply one of `userProfile`, `alias`, `ownerId` */\n alias?: string\n /** The unique ownerId of the UserProfile. You must supply one of `userProfile`, `alias`, `ownerId` */\n ownerId?: string\n /** Whether to hide the user's Synapse email address */\n hideEmail?: boolean\n /** If set, the corresponding image will be shown for the user. */\n preSignedURL?: string\n /** Specifies the card size */\n size: UserCardSize\n /** For the small user card or avatar, shows the medium user card on mouseover */\n showCardOnHover?: boolean\n /** @deprecated For the small user card, hides the tooltip observed when hovering over the profile image. */\n hideTooltip?: boolean\n /** Specifies the dropdown menu functionality for the ellipsis on medium/large cards. If field === 'SEPERATOR' then a break will occur in the menu. If left undefined, the menu will not render to the screen. */\n menuActions?: MenuAction[]\n /** The link to point to on the username, defaults to https://www.synapse.org/Profile:${userProfile.ownerId} */\n link?: string\n openLinkInNewTab?: boolean\n /** Disables the `@username` link for the small user card (if `showCardOnHover` is false). For the medium user card, disables linking the user's name to their profile (or other specified destination) */\n disableLink?: boolean\n isCertified?: boolean\n isValidated?: boolean\n /** Determines the size of the avatar when size === 'AVATAR' or (size === 'SMALL' and withAvatar is true) */\n avatarSize?: AvatarSize\n /** Whether to show the avatar with the name for the small user card */\n withAvatar?: boolean\n /** @deprecated Whether to show the full name in the small user card */\n showFullName?: boolean\n className?: string\n /** @deprecated show certification/validation badges for small user card */\n showAccountLevelIcon?: boolean\n}\n\nexport function UserCard(props: UserCardProps) {\n const {\n userProfile: initialProfile,\n preSignedURL: initialPreSignedURL,\n size,\n ownerId,\n alias,\n ...rest\n } = props\n\n // If we were given an alias, fetch the principal ID\n const { data: fetchedPrincipalId, isLoading: isLoadingAliasLookup } =\n useGetPrincipalIdForAlias(\n {\n alias: alias!,\n type: AliasType.USER_NAME,\n },\n { enabled: !!alias },\n )\n\n const principalId = (\n ownerId ??\n initialProfile?.ownerId ??\n fetchedPrincipalId\n )?.toString()\n\n // If we weren't provided an initialProfile, fetch from Synapse\n const { data: fetchedProfile, isLoading: isLoadingProfile } =\n useGetUserProfile(principalId!, {\n enabled: !!principalId && !initialProfile,\n })\n const userProfile = initialProfile ?? fetchedProfile\n\n const { data: avatarData, isLoading: isLoadingAvatar } = useGetProfileImage(\n principalId!,\n {\n // Don't fetch the avatar if `initialPresignedURL` is provided.\n // Also, wait until we have a value for `principalId`\n enabled: !!(!initialPreSignedURL && principalId),\n },\n )\n\n // If a URL was provided, fetch it and create a local data URL\n const providedAvatarURL = usePreFetchResource(initialPreSignedURL)\n // If we fetched the avatar from Synapse, we already have the blob. Create a local data URL\n const fetchedAvatarUrl = useCreateUrlForData(avatarData)\n\n const imageURL = providedAvatarURL ?? fetchedAvatarUrl\n\n const isLoading = isLoadingAliasLookup || isLoadingProfile\n\n const propsForChild = useMemo(\n () => ({\n userProfile: userProfile!,\n imageURL,\n isLoadingAvatar,\n ...rest,\n }),\n [imageURL, isLoadingAvatar, rest, userProfile],\n )\n\n if (isLoading || userProfile == null) {\n return <></>\n }\n\n switch (size) {\n case SynapseConstants.AVATAR:\n return <Avatar {...propsForChild} />\n case SynapseConstants.SMALL_USER_CARD:\n return (\n <UserBadge userId={ownerId ?? userProfile.ownerId} {...propsForChild} />\n )\n case SynapseConstants.MEDIUM_USER_CARD:\n return <UserCardMedium {...propsForChild} />\n case SynapseConstants.LARGE_USER_CARD:\n return <UserCardMedium isLarge={true} {...propsForChild} />\n default:\n console.warn('No size specified for UserCard')\n return <span />\n }\n}\n\nexport default UserCard\n"],"mappings":";;;;;;;;;;;;AAsDA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EACJ,aAAa,GACb,cAAc,GACd,SACA,YACA,UACA,GAAG,MACD,GAGE,EAAE,MAAM,GAAoB,WAAW,MAC3C,EACE;EACS;EACP,MAAM,EAAU;
|
|
1
|
+
{"version":3,"file":"UserCard.js","names":[],"sources":["../../../src/components/UserCard/UserCard.tsx"],"sourcesContent":["import { useGetProfileImage } from '@/synapse-queries/file/useFiles'\nimport {\n useGetPrincipalIdForAlias,\n useGetUserProfile,\n} from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport usePreFetchResource, {\n useCreateUrlForData,\n} from '@/utils/hooks/usePreFetchResource'\nimport { UserCardSize } from '@/utils/SynapseConstants'\nimport { AliasType, UserProfile } from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { Avatar, AvatarSize } from './Avatar'\nimport { UserBadge } from './UserBadge'\nimport { MenuAction } from './UserCardContextMenu'\nimport UserCardMedium from './UserCardMedium'\n\nexport type UserCardProps = {\n /** A UserProfile may be used for data for the card. You must supply one of `userProfile`, `alias`, `ownerId` */\n userProfile?: UserProfile\n /** An alias that resolves the ownerId for the UserProfile. You must supply one of `userProfile`, `alias`, `ownerId` */\n alias?: string\n /** The unique ownerId of the UserProfile. You must supply one of `userProfile`, `alias`, `ownerId` */\n ownerId?: string\n /** Whether to hide the user's Synapse email address */\n hideEmail?: boolean\n /** If set, the corresponding image will be shown for the user. */\n preSignedURL?: string\n /** Specifies the card size */\n size: UserCardSize\n /** For the small user card or avatar, shows the medium user card on mouseover */\n showCardOnHover?: boolean\n /** @deprecated For the small user card, hides the tooltip observed when hovering over the profile image. */\n hideTooltip?: boolean\n /** Specifies the dropdown menu functionality for the ellipsis on medium/large cards. If field === 'SEPERATOR' then a break will occur in the menu. If left undefined, the menu will not render to the screen. */\n menuActions?: MenuAction[]\n /** The link to point to on the username, defaults to https://www.synapse.org/Profile:${userProfile.ownerId} */\n link?: string\n openLinkInNewTab?: boolean\n /** Disables the `@username` link for the small user card (if `showCardOnHover` is false). For the medium user card, disables linking the user's name to their profile (or other specified destination) */\n disableLink?: boolean\n isCertified?: boolean\n isValidated?: boolean\n /** Determines the size of the avatar when size === 'AVATAR' or (size === 'SMALL' and withAvatar is true) */\n avatarSize?: AvatarSize\n /** Whether to show the avatar with the name for the small user card */\n withAvatar?: boolean\n /** @deprecated Whether to show the full name in the small user card */\n showFullName?: boolean\n className?: string\n /** @deprecated show certification/validation badges for small user card */\n showAccountLevelIcon?: boolean\n}\n\nexport function UserCard(props: UserCardProps) {\n const {\n userProfile: initialProfile,\n preSignedURL: initialPreSignedURL,\n size,\n ownerId,\n alias,\n ...rest\n } = props\n\n // If we were given an alias, fetch the principal ID\n const { data: fetchedPrincipalId, isLoading: isLoadingAliasLookup } =\n useGetPrincipalIdForAlias(\n {\n alias: alias!,\n type: AliasType.USER_NAME,\n },\n { enabled: !!alias },\n )\n\n const principalId = (\n ownerId ??\n initialProfile?.ownerId ??\n fetchedPrincipalId\n )?.toString()\n\n // If we weren't provided an initialProfile, fetch from Synapse\n const { data: fetchedProfile, isLoading: isLoadingProfile } =\n useGetUserProfile(principalId!, {\n enabled: !!principalId && !initialProfile,\n })\n const userProfile = initialProfile ?? fetchedProfile\n\n const { data: avatarData, isLoading: isLoadingAvatar } = useGetProfileImage(\n principalId!,\n {\n // Don't fetch the avatar if `initialPresignedURL` is provided.\n // Also, wait until we have a value for `principalId`\n enabled: !!(!initialPreSignedURL && principalId),\n },\n )\n\n // If a URL was provided, fetch it and create a local data URL\n const providedAvatarURL = usePreFetchResource(initialPreSignedURL)\n // If we fetched the avatar from Synapse, we already have the blob. Create a local data URL\n const fetchedAvatarUrl = useCreateUrlForData(avatarData)\n\n const imageURL = providedAvatarURL ?? fetchedAvatarUrl\n\n const isLoading = isLoadingAliasLookup || isLoadingProfile\n\n const propsForChild = useMemo(\n () => ({\n userProfile: userProfile!,\n imageURL,\n isLoadingAvatar,\n ...rest,\n }),\n [imageURL, isLoadingAvatar, rest, userProfile],\n )\n\n if (isLoading || userProfile == null) {\n return <></>\n }\n\n switch (size) {\n case SynapseConstants.AVATAR:\n return <Avatar {...propsForChild} />\n case SynapseConstants.SMALL_USER_CARD:\n return (\n <UserBadge userId={ownerId ?? userProfile.ownerId} {...propsForChild} />\n )\n case SynapseConstants.MEDIUM_USER_CARD:\n return <UserCardMedium {...propsForChild} />\n case SynapseConstants.LARGE_USER_CARD:\n return <UserCardMedium isLarge={true} {...propsForChild} />\n default:\n console.warn('No size specified for UserCard')\n return <span />\n }\n}\n\nexport default UserCard\n"],"mappings":";;;;;;;;;;;;AAsDA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EACJ,aAAa,GACb,cAAc,GACd,SACA,YACA,UACA,GAAG,MACD,GAGE,EAAE,MAAM,GAAoB,WAAW,MAC3C,EACE;EACS;EACP,MAAM,EAAU;CAClB,GACA,EAAE,SAAS,CAAC,CAAC,EAAM,CACrB,GAEI,KACJ,KACA,GAAgB,WAChB,IACC,SAAS,GAGN,EAAE,MAAM,GAAgB,WAAW,MACvC,EAAkB,GAAc,EAC9B,SAAS,CAAC,CAAC,KAAe,CAAC,EAC7B,CAAC,GACG,IAAc,KAAkB,GAEhC,EAAE,MAAM,GAAY,WAAW,MAAoB,EACvD,GACA,EAGE,SAAS,CAAC,EAAE,CAAC,KAAuB,GACtC,CACF,GAGM,IAAoB,EAAoB,CAAmB,GAE3D,IAAmB,EAAoB,CAAU,GAEjD,IAAW,KAAqB,GAEhC,IAAY,KAAwB,GAEpC,IAAgB,SACb;EACQ;EACb;EACA;EACA,GAAG;CACL,IACA;EAAC;EAAU;EAAiB;EAAM;CAAW,CAC/C;CAEA,IAAI,KAAa,KAAe,MAC9B,OAAO,kBAAA,GAAA,CAAI,CAAA;CAGb,QAAQ,GAAR;EACE,KAAK,GACH,OAAO,kBAAC,GAAD,EAAQ,GAAI,EAAgB,CAAA;EACrC,KAAK,GACH,OACE,kBAAC,GAAD;GAAW,QAAQ,KAAW,EAAY;GAAS,GAAI;EAAgB,CAAA;EAE3E,KAAK,GACH,OAAO,kBAAC,GAAD,EAAgB,GAAI,EAAgB,CAAA;EAC7C,KAAK,GACH,OAAO,kBAAC,GAAD;GAAgB,SAAS;GAAM,GAAI;EAAgB,CAAA;EAC5D,SAEE,OADA,QAAQ,KAAK,gCAAgC,GACtC,kBAAC,QAAD,CAAO,CAAA;CAClB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardContextMenu.js","names":[],"sources":["../../../src/components/UserCard/UserCardContextMenu.tsx"],"sourcesContent":["import { SEPERATOR } from '@/utils/SynapseConstants'\nimport { Divider, Menu, MenuItem } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\n\nexport type MenuAction = {\n field: string\n callback?: (userProfile: UserProfile) => void\n}\n\nexport type UserCardContextMenuProps = {\n userProfile: UserProfile\n menuActions: MenuAction[]\n open: boolean\n anchorEl?: HTMLElement | null\n onClose?: () => void\n}\n\nfunction UserCardContextMenu(props: UserCardContextMenuProps) {\n const {\n menuActions = [],\n userProfile,\n open,\n anchorEl = null,\n onClose,\n } = props\n return (\n <Menu open={open} anchorEl={anchorEl} onClose={onClose}>\n {menuActions.map((menuAction, index) => {\n const callback = () => menuAction.callback!(userProfile)\n if (menuAction.field === SEPERATOR) {\n return <Divider key={`${menuAction.field}_${index}`} />\n }\n return (\n <MenuItem role=\"menuitem\" key={menuAction.field} onClick={callback}>\n {menuAction.field}\n </MenuItem>\n )\n })}\n </Menu>\n )\n}\n\nexport default UserCardContextMenu\n"],"mappings":";;;;AAiBA,SAAS,EAAoB,GAAiC;CAC5D,IAAM,EACJ,iBAAc,
|
|
1
|
+
{"version":3,"file":"UserCardContextMenu.js","names":[],"sources":["../../../src/components/UserCard/UserCardContextMenu.tsx"],"sourcesContent":["import { SEPERATOR } from '@/utils/SynapseConstants'\nimport { Divider, Menu, MenuItem } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\n\nexport type MenuAction = {\n field: string\n callback?: (userProfile: UserProfile) => void\n}\n\nexport type UserCardContextMenuProps = {\n userProfile: UserProfile\n menuActions: MenuAction[]\n open: boolean\n anchorEl?: HTMLElement | null\n onClose?: () => void\n}\n\nfunction UserCardContextMenu(props: UserCardContextMenuProps) {\n const {\n menuActions = [],\n userProfile,\n open,\n anchorEl = null,\n onClose,\n } = props\n return (\n <Menu open={open} anchorEl={anchorEl} onClose={onClose}>\n {menuActions.map((menuAction, index) => {\n const callback = () => menuAction.callback!(userProfile)\n if (menuAction.field === SEPERATOR) {\n return <Divider key={`${menuAction.field}_${index}`} />\n }\n return (\n <MenuItem role=\"menuitem\" key={menuAction.field} onClick={callback}>\n {menuAction.field}\n </MenuItem>\n )\n })}\n </Menu>\n )\n}\n\nexport default UserCardContextMenu\n"],"mappings":";;;;AAiBA,SAAS,EAAoB,GAAiC;CAC5D,IAAM,EACJ,iBAAc,CAAC,GACf,gBACA,SACA,cAAW,MACX,eACE;CACJ,OACE,kBAAC,GAAD;EAAY;EAAgB;EAAmB;YAC5C,EAAY,KAAK,GAAY,MAExB,EAAW,UAAA,cACN,kBAAC,GAAD,CAA+C,GAAjC,GAAG,EAAW,MAAM,GAAG,GAAU,IAGtD,kBAAC,GAAD;GAAU,MAAK;GAAkC,eAL5B,EAAW,SAAU,CAAW;aAMlD,EAAW;EACJ,GAFqB,EAAW,KAEhC,CAEb;CACG,CAAA;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardLarge.js","names":[],"sources":["../../../src/components/UserCard/UserCardLarge.tsx"],"sourcesContent":["import CertifiedUserIcon from '@/assets/icons/CertifiedUser'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\n\ntype UserCardLargeProps = {\n userProfile: UserProfile\n isCertified?: boolean\n}\n\n/**\n * UserCardLarge wraps around UserCardMedium\n *\n * @export UserCardLarge\n * @param {UserCardLargeProps} { userProfile }\n */\n// Disable function name because compiler has to know that its a class\n// tslint:disable-next-line:function-name\nexport function UserCardLarge({\n userProfile,\n isCertified,\n}: UserCardLargeProps) {\n const { summary, industry, location, url } = userProfile\n\n return (\n <div className=\"SRC-cardMetaData\">\n <div className=\"SRC-cardMetaData-scroll\">\n {summary && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Bio </p>\n <p>{summary}</p>\n </div>\n )}\n {url && (\n <div>\n <p className=\"SRC-card-metadata-title\"> More Info </p>\n <p>{url}</p>\n </div>\n )}\n {industry && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Industry </p>\n <p>{industry}</p>\n </div>\n )}\n {location && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Location </p>\n <p>{location}</p>\n </div>\n )}\n {isCertified && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Access </p>\n <p>{CertifiedUserIcon} Certified Account</p>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;AAgBA,SAAgB,EAAc,EAC5B,gBACA,kBACqB;CACrB,IAAM,EAAE,YAAS,aAAU,aAAU,WAAQ;
|
|
1
|
+
{"version":3,"file":"UserCardLarge.js","names":[],"sources":["../../../src/components/UserCard/UserCardLarge.tsx"],"sourcesContent":["import CertifiedUserIcon from '@/assets/icons/CertifiedUser'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\n\ntype UserCardLargeProps = {\n userProfile: UserProfile\n isCertified?: boolean\n}\n\n/**\n * UserCardLarge wraps around UserCardMedium\n *\n * @export UserCardLarge\n * @param {UserCardLargeProps} { userProfile }\n */\n// Disable function name because compiler has to know that its a class\n// tslint:disable-next-line:function-name\nexport function UserCardLarge({\n userProfile,\n isCertified,\n}: UserCardLargeProps) {\n const { summary, industry, location, url } = userProfile\n\n return (\n <div className=\"SRC-cardMetaData\">\n <div className=\"SRC-cardMetaData-scroll\">\n {summary && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Bio </p>\n <p>{summary}</p>\n </div>\n )}\n {url && (\n <div>\n <p className=\"SRC-card-metadata-title\"> More Info </p>\n <p>{url}</p>\n </div>\n )}\n {industry && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Industry </p>\n <p>{industry}</p>\n </div>\n )}\n {location && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Location </p>\n <p>{location}</p>\n </div>\n )}\n {isCertified && (\n <div>\n <p className=\"SRC-card-metadata-title\"> Access </p>\n <p>{CertifiedUserIcon} Certified Account</p>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;AAgBA,SAAgB,EAAc,EAC5B,gBACA,kBACqB;CACrB,IAAM,EAAE,YAAS,aAAU,aAAU,WAAQ;CAE7C,OACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;IAAQ,CAAA,GAC/C,kBAAC,KAAD,EAAA,UAAI,EAAW,CAAA,CACZ,EAAA,CAAA;IAEN,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;IAAc,CAAA,GACrD,kBAAC,KAAD,EAAA,UAAI,EAAO,CAAA,CACR,EAAA,CAAA;IAEN,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;IAAa,CAAA,GACpD,kBAAC,KAAD,EAAA,UAAI,EAAY,CAAA,CACb,EAAA,CAAA;IAEN,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;IAAa,CAAA,GACpD,kBAAC,KAAD,EAAA,UAAI,EAAY,CAAA,CACb,EAAA,CAAA;IAEN,KACC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAA0B;IAAW,CAAA,GAClD,kBAAC,KAAD,EAAA,UAAA,CAAI,GAAkB,oBAAqB,EAAA,CAAA,CACxC,EAAA,CAAA;GAEJ;;CACF,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardMedium.js","names":[],"sources":["../../../src/components/UserCard/UserCardMedium.tsx"],"sourcesContent":["import IconCopy from '@/assets/icons/IconCopy'\nimport ValidatedProfileIcon from '@/assets/icons/ValidatedProfile'\nimport { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Card, IconButton, Skeleton, Tooltip } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\nimport {\n MouseEvent,\n MutableRefObject,\n SyntheticEvent,\n useRef,\n useState,\n} from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { SkeletonTable } from '../Skeleton/SkeletonTable'\nimport { ToastMessage } from '../ToastMessage/ToastMessage'\nimport { Avatar } from './Avatar'\nimport UserCardContextMenu, { MenuAction } from './UserCardContextMenu'\nimport { UserCardLarge } from './UserCardLarge'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\n\nexport type UserCardMediumProps = {\n userProfile: UserProfile\n menuActions?: MenuAction[]\n imageURL?: string\n hideEmail?: boolean\n isLarge?: boolean\n link?: string\n openLinkInNewTab?: boolean\n disableLink?: boolean\n isCertified?: boolean\n isValidated?: boolean\n isLoadingAvatar?: boolean\n}\n\n/**\n * Function handles copying to clipboard the user's email address\n *\n * @param {string} value the email address of the user\n * @returns\n */\nconst copyToClipboard =\n (\n ref: MutableRefObject<HTMLElement | null>,\n value: string,\n onCopy: () => void,\n ) =>\n (event: SyntheticEvent) => {\n event.preventDefault()\n\n copyStringToClipboard(value).then(() => {\n onCopy()\n })\n }\n\nexport function UserCardMedium({\n userProfile,\n menuActions,\n isLarge = false,\n imageURL,\n hideEmail = false,\n disableLink = false,\n link,\n openLinkInNewTab = false,\n isValidated,\n isCertified,\n isLoadingAvatar,\n}: UserCardMediumProps) {\n const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null)\n const isContextMenuOpen = Boolean(menuAnchorEl)\n const handleMenuClick = (event: MouseEvent<HTMLButtonElement>) => {\n setMenuAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setMenuAnchorEl(null)\n }\n const [showModal, setShowModal] = useState(false)\n\n const copyToClipboardRef = useRef<HTMLParagraphElement>(null)\n\n const onCopyToClipboard = () => {\n // show modal and hide after 4 seconds, the timing is per Material Design\n setShowModal(true)\n // hide after 4 seconds\n setTimeout(() => {\n setShowModal(false)\n }, 4000)\n }\n\n const { ownerId } = userProfile\n const { displayName, userName, firstName, lastName, position, company } =\n userProfile\n\n const { data: userBundle } = useGetUserBundle(\n ownerId,\n SynapseConstants.USER_BUNDLE_MASK_ORCID,\n )\n\n const ORCID = userBundle?.ORCID\n\n let name = ''\n const linkLocation = link\n ? link\n : `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${ownerId}`\n // linkLocation is overriden by custom click handler\n const email = userName ? `${userName}@synapse.org` : undefined\n if (displayName) {\n name = displayName\n } else if (firstName && lastName) {\n name = `${firstName} ${lastName}`\n } else if (userName) {\n name = userName\n }\n const avatar = (\n <Avatar\n userProfile={userProfile}\n imageURL={imageURL}\n avatarSize={'LARGE'}\n isLoadingAvatar={isLoadingAvatar}\n />\n )\n const mediumCard = (\n <>\n {!hideEmail && (\n <ToastMessage\n show={showModal}\n text=\"Email address copied to clipboard\"\n autohide={true}\n ></ToastMessage>\n )}\n {disableLink && avatar}\n {!disableLink && (\n <a\n href={linkLocation}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n className={`SRC-no-border-bottom-imp ${\n isLarge ? 'SRC-isLargeCard' : ''\n }`}\n >\n {avatar}\n </a>\n )}\n <div className=\"SRC-cardContent\">\n <p className=\"SRC-eqHeightRow SRC-userCardName\">\n {/*\n make the header clickable for all cards\n consolidate click events\n */}\n <a\n href={linkLocation}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n tabIndex={0}\n className={'SRC-hand-cursor'}\n >\n {name}\n </a>\n {isValidated && (\n <Tooltip\n title=\"This user profile has been validated.\"\n placement=\"bottom\"\n enterNextDelay={300}\n >\n <span>{ValidatedProfileIcon}</span>\n </Tooltip>\n )}\n </p>\n {(position || company) && (\n <p>\n {position} {position ? ' / ' : ''} {company}\n </p>\n )}\n {!hideEmail && !!email && (\n <p\n ref={copyToClipboardRef}\n className={`SRC-hand-cursor SRC-eqHeightRow SRC-inlineFlex SRC-emailText SRC-cardSvg`}\n onClick={copyToClipboard(\n copyToClipboardRef,\n email,\n onCopyToClipboard,\n )}\n onKeyPress={copyToClipboard(\n copyToClipboardRef,\n email,\n onCopyToClipboard,\n )}\n tabIndex={0}\n >\n <span style={{ paddingRight: '5px', paddingBottom: '2px' }}>\n <a className={`link`}>{`${userName}@synapse.org`}</a>\n </span>\n <IconCopy />\n </p>\n )}\n {ORCID && (\n <a\n href={ORCID}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ width: 'fit-content' }}\n tabIndex={0}\n >\n View ORCID\n </a>\n )}\n </div>\n {/* conditionally render menu actions, if there are no actions then we don't show the button */}\n {menuActions && menuActions.length > 0 && (\n <>\n <IconButton\n role=\"menu\"\n tabIndex={0}\n onClick={handleMenuClick}\n sx={{ mx: 1 }}\n >\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <UserCardContextMenu\n menuActions={menuActions}\n userProfile={userProfile}\n anchorEl={menuAnchorEl}\n onClose={handleMenuClose}\n open={isContextMenuOpen}\n />\n </>\n )}\n </>\n )\n\n if (!isLarge) {\n return (\n <Card\n className={`SRC-userCard SRC-userCardMediumUp`}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: {\n '&.SRC-userCard': {\n minWidth: 'unset',\n padding: '0 16px',\n width: '100%',\n },\n },\n })}\n >\n {mediumCard}\n </Card>\n )\n }\n // else return medium card inside large component\n // when the component is large we have to set the click handler to wrap both the top and bottom portion\n return (\n <Card>\n <div className={`SRC-userCard SRC-userCardMediumUp`}>{mediumCard}</div>\n {isLarge && (\n <UserCardLarge userProfile={userProfile} isCertified={isCertified} />\n )}\n </Card>\n )\n}\n\nexport function LoadingUserCardMedium() {\n return (\n <Card\n className=\"SRC-userCard SRC-userCardMediumUp\"\n style={{ width: '380px' }}\n >\n <Skeleton variant=\"circular\" width=\"80px\" height=\"80px\" />\n <div style={{ width: '250px' }}>\n <SkeletonTable numCols={1} numRows={2} />\n </div>\n </Card>\n )\n}\n\nexport default UserCardMedium\n"],"mappings":";;;;;;;;;;;;;;;;;AA0CA,IAAM,KAEF,GACA,GACA,OAED,MAA0B;AAGzB,CAFA,EAAM,gBAAgB,EAEtB,EAAsB,EAAM,CAAC,WAAW;AACtC,KAAQ;GACR;;AAGN,SAAgB,EAAe,EAC7B,gBACA,gBACA,aAAU,IACV,aACA,eAAY,IACZ,iBAAc,IACd,SACA,sBAAmB,IACnB,gBACA,gBACA,sBACsB;CACtB,IAAM,CAAC,GAAc,KAAmB,EAA6B,KAAK,EACpE,IAAoB,EAAQ,GAC5B,KAAmB,MAAyC;AAChE,IAAgB,EAAM,cAAc;IAEhC,UAAwB;AAC5B,IAAgB,KAAK;IAEjB,CAAC,GAAW,KAAgB,EAAS,GAAM,EAE3C,IAAqB,EAA6B,KAAK,EAEvD,UAA0B;AAI9B,EAFA,EAAa,GAAK,EAElB,iBAAiB;AACf,KAAa,GAAM;KAClB,IAAK;IAGJ,EAAE,eAAY,GACd,EAAE,gBAAa,aAAU,cAAW,aAAU,aAAU,eAC5D,GAEI,EAAE,MAAM,MAAe,EAC3B,GACA,EACD,EAEK,IAAQ,GAAY,OAEtB,IAAO,IACL,IAAe,KAEjB,GAAG,EAA2B,OAAO,UAAU,KAE7C,IAAQ,IAAW,GAAG,EAAS,gBAAgB,KAAA;AACrD,CAAI,IACF,IAAO,IACE,KAAa,IACtB,IAAO,GAAG,EAAU,GAAG,MACd,MACT,IAAO;CAET,IAAM,IACJ,kBAAC,GAAD;EACe;EACH;EACV,YAAY;EACK;EACjB,CAAA,EAEE,IACJ,kBAAA,GAAA,EAAA,UAAA;EACG,CAAC,KACA,kBAAC,GAAD;GACE,MAAM;GACN,MAAK;GACL,UAAU;GACI,CAAA;EAEjB,KAAe;EACf,CAAC,KACA,kBAAC,KAAD;GACE,MAAM;GACN,QAAQ,IAAmB,WAAW;GACtC,KAAK,IAAmB,eAAe;GACvC,WAAW,4BACT,IAAU,oBAAoB;aAG/B;GACC,CAAA;EAEN,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,KAAD;KAAG,WAAU;eAAb,CAKE,kBAAC,KAAD;MACE,MAAM;MACN,QAAQ,IAAmB,WAAW;MACtC,KAAK,IAAmB,eAAe;MACvC,UAAU;MACV,WAAW;gBAEV;MACC,CAAA,EACH,KACC,kBAAC,GAAD;MACE,OAAM;MACN,WAAU;MACV,gBAAgB;gBAEhB,kBAAC,QAAD,EAAA,UAAO,GAA4B,CAAA;MAC3B,CAAA,CAEV;;KACF,KAAY,MACZ,kBAAC,KAAD,EAAA,UAAA;KACG;KAAS;KAAE,IAAW,QAAQ;KAAG;KAAE;KAClC,EAAA,CAAA;IAEL,CAAC,KAAa,CAAC,CAAC,KACf,kBAAC,KAAD;KACE,KAAK;KACL,WAAW;KACX,SAAS,EACP,GACA,GACA,EACD;KACD,YAAY,EACV,GACA,GACA,EACD;KACD,UAAU;eAbZ,CAeE,kBAAC,QAAD;MAAM,OAAO;OAAE,cAAc;OAAO,eAAe;OAAO;gBACxD,kBAAC,KAAD;OAAG,WAAW;iBAAS,GAAG,EAAS;OAAkB,CAAA;MAChD,CAAA,EACP,kBAAC,GAAD,EAAY,CAAA,CACV;;IAEL,KACC,kBAAC,KAAD;KACE,MAAM;KACN,QAAO;KACP,KAAI;KACJ,OAAO,EAAE,OAAO,eAAe;KAC/B,UAAU;eACX;KAEG,CAAA;IAEF;;EAEL,KAAe,EAAY,SAAS,KACnC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,MAAK;GACL,UAAU;GACV,SAAS;GACT,IAAI,EAAE,IAAI,GAAG;aAEb,kBAAC,GAAD;IAAS,MAAK;IAAmB,MAAM;IAAS,CAAA;GACrC,CAAA,EACb,kBAAC,GAAD;GACe;GACA;GACb,UAAU;GACV,SAAS;GACT,MAAM;GACN,CAAA,CACD,EAAA,CAAA;EAEJ,EAAA,CAAA;AAuBL,QApBK,IAqBH,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;EAAK,WAAW;YAAsC;EAAiB,CAAA,EACtE,KACC,kBAAC,GAAD;EAA4B;EAA0B;EAAe,CAAA,CAElE,EAAA,CAAA,GAxBL,kBAAC,GAAD;EACE,WAAW;EACX,KAAI,OAAU,GACX,EAAM,YAAY,KAAK,KAAK,GAAG,EAC9B,kBAAkB;GAChB,UAAU;GACV,SAAS;GACT,OAAO;GACR,EACF,EACF;YAEA;EACI,CAAA;;AAeb,SAAgB,IAAwB;AACtC,QACE,kBAAC,GAAD;EACE,WAAU;EACV,OAAO,EAAE,OAAO,SAAS;YAF3B,CAIE,kBAAC,GAAD;GAAU,SAAQ;GAAW,OAAM;GAAO,QAAO;GAAS,CAAA,EAC1D,kBAAC,OAAD;GAAK,OAAO,EAAE,OAAO,SAAS;aAC5B,kBAAC,GAAD;IAAe,SAAS;IAAG,SAAS;IAAK,CAAA;GACrC,CAAA,CACD"}
|
|
1
|
+
{"version":3,"file":"UserCardMedium.js","names":[],"sources":["../../../src/components/UserCard/UserCardMedium.tsx"],"sourcesContent":["import IconCopy from '@/assets/icons/IconCopy'\nimport ValidatedProfileIcon from '@/assets/icons/ValidatedProfile'\nimport { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Card, IconButton, Skeleton, Tooltip } from '@mui/material'\nimport { UserProfile } from '@sage-bionetworks/synapse-types'\nimport {\n MouseEvent,\n MutableRefObject,\n SyntheticEvent,\n useRef,\n useState,\n} from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { SkeletonTable } from '../Skeleton/SkeletonTable'\nimport { ToastMessage } from '../ToastMessage/ToastMessage'\nimport { Avatar } from './Avatar'\nimport UserCardContextMenu, { MenuAction } from './UserCardContextMenu'\nimport { UserCardLarge } from './UserCardLarge'\nimport { copyStringToClipboard } from '@/utils/functions/StringUtils'\n\nexport type UserCardMediumProps = {\n userProfile: UserProfile\n menuActions?: MenuAction[]\n imageURL?: string\n hideEmail?: boolean\n isLarge?: boolean\n link?: string\n openLinkInNewTab?: boolean\n disableLink?: boolean\n isCertified?: boolean\n isValidated?: boolean\n isLoadingAvatar?: boolean\n}\n\n/**\n * Function handles copying to clipboard the user's email address\n *\n * @param {string} value the email address of the user\n * @returns\n */\nconst copyToClipboard =\n (\n ref: MutableRefObject<HTMLElement | null>,\n value: string,\n onCopy: () => void,\n ) =>\n (event: SyntheticEvent) => {\n event.preventDefault()\n\n copyStringToClipboard(value).then(() => {\n onCopy()\n })\n }\n\nexport function UserCardMedium({\n userProfile,\n menuActions,\n isLarge = false,\n imageURL,\n hideEmail = false,\n disableLink = false,\n link,\n openLinkInNewTab = false,\n isValidated,\n isCertified,\n isLoadingAvatar,\n}: UserCardMediumProps) {\n const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null)\n const isContextMenuOpen = Boolean(menuAnchorEl)\n const handleMenuClick = (event: MouseEvent<HTMLButtonElement>) => {\n setMenuAnchorEl(event.currentTarget)\n }\n const handleMenuClose = () => {\n setMenuAnchorEl(null)\n }\n const [showModal, setShowModal] = useState(false)\n\n const copyToClipboardRef = useRef<HTMLParagraphElement>(null)\n\n const onCopyToClipboard = () => {\n // show modal and hide after 4 seconds, the timing is per Material Design\n setShowModal(true)\n // hide after 4 seconds\n setTimeout(() => {\n setShowModal(false)\n }, 4000)\n }\n\n const { ownerId } = userProfile\n const { displayName, userName, firstName, lastName, position, company } =\n userProfile\n\n const { data: userBundle } = useGetUserBundle(\n ownerId,\n SynapseConstants.USER_BUNDLE_MASK_ORCID,\n )\n\n const ORCID = userBundle?.ORCID\n\n let name = ''\n const linkLocation = link\n ? link\n : `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${ownerId}`\n // linkLocation is overriden by custom click handler\n const email = userName ? `${userName}@synapse.org` : undefined\n if (displayName) {\n name = displayName\n } else if (firstName && lastName) {\n name = `${firstName} ${lastName}`\n } else if (userName) {\n name = userName\n }\n const avatar = (\n <Avatar\n userProfile={userProfile}\n imageURL={imageURL}\n avatarSize={'LARGE'}\n isLoadingAvatar={isLoadingAvatar}\n />\n )\n const mediumCard = (\n <>\n {!hideEmail && (\n <ToastMessage\n show={showModal}\n text=\"Email address copied to clipboard\"\n autohide={true}\n ></ToastMessage>\n )}\n {disableLink && avatar}\n {!disableLink && (\n <a\n href={linkLocation}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n className={`SRC-no-border-bottom-imp ${\n isLarge ? 'SRC-isLargeCard' : ''\n }`}\n >\n {avatar}\n </a>\n )}\n <div className=\"SRC-cardContent\">\n <p className=\"SRC-eqHeightRow SRC-userCardName\">\n {/*\n make the header clickable for all cards\n consolidate click events\n */}\n <a\n href={linkLocation}\n target={openLinkInNewTab ? '_blank' : ''}\n rel={openLinkInNewTab ? 'noreferrer' : ''}\n tabIndex={0}\n className={'SRC-hand-cursor'}\n >\n {name}\n </a>\n {isValidated && (\n <Tooltip\n title=\"This user profile has been validated.\"\n placement=\"bottom\"\n enterNextDelay={300}\n >\n <span>{ValidatedProfileIcon}</span>\n </Tooltip>\n )}\n </p>\n {(position || company) && (\n <p>\n {position} {position ? ' / ' : ''} {company}\n </p>\n )}\n {!hideEmail && !!email && (\n <p\n ref={copyToClipboardRef}\n className={`SRC-hand-cursor SRC-eqHeightRow SRC-inlineFlex SRC-emailText SRC-cardSvg`}\n onClick={copyToClipboard(\n copyToClipboardRef,\n email,\n onCopyToClipboard,\n )}\n onKeyPress={copyToClipboard(\n copyToClipboardRef,\n email,\n onCopyToClipboard,\n )}\n tabIndex={0}\n >\n <span style={{ paddingRight: '5px', paddingBottom: '2px' }}>\n <a className={`link`}>{`${userName}@synapse.org`}</a>\n </span>\n <IconCopy />\n </p>\n )}\n {ORCID && (\n <a\n href={ORCID}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ width: 'fit-content' }}\n tabIndex={0}\n >\n View ORCID\n </a>\n )}\n </div>\n {/* conditionally render menu actions, if there are no actions then we don't show the button */}\n {menuActions && menuActions.length > 0 && (\n <>\n <IconButton\n role=\"menu\"\n tabIndex={0}\n onClick={handleMenuClick}\n sx={{ mx: 1 }}\n >\n <IconSvg icon=\"verticalEllipsis\" wrap={false} />\n </IconButton>\n <UserCardContextMenu\n menuActions={menuActions}\n userProfile={userProfile}\n anchorEl={menuAnchorEl}\n onClose={handleMenuClose}\n open={isContextMenuOpen}\n />\n </>\n )}\n </>\n )\n\n if (!isLarge) {\n return (\n <Card\n className={`SRC-userCard SRC-userCardMediumUp`}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: {\n '&.SRC-userCard': {\n minWidth: 'unset',\n padding: '0 16px',\n width: '100%',\n },\n },\n })}\n >\n {mediumCard}\n </Card>\n )\n }\n // else return medium card inside large component\n // when the component is large we have to set the click handler to wrap both the top and bottom portion\n return (\n <Card>\n <div className={`SRC-userCard SRC-userCardMediumUp`}>{mediumCard}</div>\n {isLarge && (\n <UserCardLarge userProfile={userProfile} isCertified={isCertified} />\n )}\n </Card>\n )\n}\n\nexport function LoadingUserCardMedium() {\n return (\n <Card\n className=\"SRC-userCard SRC-userCardMediumUp\"\n style={{ width: '380px' }}\n >\n <Skeleton variant=\"circular\" width=\"80px\" height=\"80px\" />\n <div style={{ width: '250px' }}>\n <SkeletonTable numCols={1} numRows={2} />\n </div>\n </Card>\n )\n}\n\nexport default UserCardMedium\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardList.js","names":[],"sources":["../../../src/components/UserCardList/UserCardList.tsx"],"sourcesContent":["import { UserProfileList } from '@/synapse-client/SynapseClient'\nimport { getUserProfileWithProfilePicAttached } from '@/utils/functions/getUserData'\nimport { MEDIUM_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n RowSet,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { without } from 'lodash-es'\nimport { Component } from 'react'\nimport UserCard from '../UserCard/UserCard'\n\nexport type UserCardListProps = {\n /* The list of user IDs or null values to render. For null values, the card will be rendered with table data supplied by `firstName`, `lastName`, and `institution` columns supplied by the data prop. */\n list: (string | null)[]\n size?: UserCardSize\n // Data should not be needed, however, it gives the option to fill in a user profile with other column\n // fields. This is required specifically by AMP-AD Explore/People page\n rowSet?: RowSet\n}\n\nexport type UserCardListState = {\n userProfileMap: Record<string, UserProfile>\n}\nexport class UserCardList extends Component<\n UserCardListProps,\n UserCardListState\n> {\n constructor(props: UserCardListProps) {\n super(props)\n this.state = {\n userProfileMap: {},\n }\n this.update = this.update.bind(this)\n }\n\n componentDidMount() {\n const { list } = this.props\n this.update(list)\n }\n\n componentDidUpdate(prevProps: UserCardListProps) {\n const priorListOfIds = prevProps.list\n const newValues = without(\n this.props.list.filter(el => el),\n ...priorListOfIds,\n )\n // check that the props have changed by seeing that at least one element is different\n if (newValues.length > 0) {\n this.update(newValues)\n }\n }\n\n update(list: (string | null)[]) {\n getUserProfileWithProfilePicAttached(\n list.filter((el): el is string => !!el),\n )\n .then((data: UserProfileList) => {\n const newEntries: Record<string, UserProfile> = {}\n data.list.forEach(el => {\n const { ownerId } = el\n newEntries[ownerId] = el\n })\n this.setState({\n userProfileMap: { ...this.state.userProfileMap, ...newEntries },\n })\n })\n .catch((err: string) => {\n console.error('Error on batch call =', err)\n })\n }\n\n /**\n * Given data this will find rows where there is no userId columnType and create faux user profiles\n * using firstName, lastName, and institution (company in UserProfile object).\n * @param {RowSet} rowSet\n * @returns list of UserProfiles with firstName, lastName, company, userName (first letter of firstName) filled out.\n * @memberof UserCardList\n */\n manuallyExtractData(rowSet: RowSet) {\n const firstNameIndex = rowSet.headers.findIndex(\n el => el.name === 'firstName',\n )\n const lastNameIndex = rowSet.headers.findIndex(el => el.name === 'lastName')\n const institutionIndex = rowSet.headers.findIndex(\n el => el.name === 'institution',\n )\n const ownerId = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const nullOwnerIdsRows = rowSet.rows.filter(el => !el.values[ownerId])\n return nullOwnerIdsRows.map<Omit<UserProfile, 'ownerId'>>(el => {\n const values = el.values\n return {\n firstName: values[firstNameIndex] ?? '',\n lastName: values[lastNameIndex] ?? '',\n company: values[institutionIndex] ?? undefined,\n ownerId: null,\n userName: values[firstNameIndex]\n ? (values[firstNameIndex][0] ?? '')\n : '',\n }\n })\n }\n\n render() {\n const { size = MEDIUM_USER_CARD, rowSet, list } = this.props\n const { userProfileMap = {} } = this.state\n const fauxUserProfilesList = rowSet && this.manuallyExtractData(rowSet)\n let fauxUserProfileIndex = 0\n return (\n <div className=\"SRC-card-grid-row\">\n {\n // we loop through the list from the props because thats the 'active set of data' whereas the data stored in state could be stale\n list.map(ownerId => {\n const userProfile = ownerId != null ? userProfileMap[ownerId] : null\n if (userProfile) {\n return (\n <div\n key={JSON.stringify(userProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n size={size}\n preSignedURL={userProfile.clientPreSignedURL}\n userProfile={userProfile}\n />\n </div>\n )\n }\n const fauxUserProfile =\n fauxUserProfilesList && fauxUserProfilesList[fauxUserProfileIndex]\n if (!fauxUserProfile) {\n // This could happen in one of two cases:\n // - The props just updated with a new userlist where the data is being gathered for this particular user\n // OR there is no mapping for this user\n return false\n }\n fauxUserProfileIndex += 1\n return (\n <div\n key={JSON.stringify(fauxUserProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n disableLink={true}\n hideEmail={true}\n size={size}\n // TODO: Modify UserCard to accept a fake profile with no ownerId field, and remove this cast.\n userProfile={fauxUserProfile as UserProfile}\n />\n </div>\n )\n })\n }\n </div>\n )\n }\n}\nexport default UserCardList\n"],"mappings":";;;;;;;;AAwBA,IAAa,IAAb,cAAkC,EAGhC;CACA,YAAY,GAA0B;
|
|
1
|
+
{"version":3,"file":"UserCardList.js","names":[],"sources":["../../../src/components/UserCardList/UserCardList.tsx"],"sourcesContent":["import { UserProfileList } from '@/synapse-client/SynapseClient'\nimport { getUserProfileWithProfilePicAttached } from '@/utils/functions/getUserData'\nimport { MEDIUM_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n RowSet,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { without } from 'lodash-es'\nimport { Component } from 'react'\nimport UserCard from '../UserCard/UserCard'\n\nexport type UserCardListProps = {\n /* The list of user IDs or null values to render. For null values, the card will be rendered with table data supplied by `firstName`, `lastName`, and `institution` columns supplied by the data prop. */\n list: (string | null)[]\n size?: UserCardSize\n // Data should not be needed, however, it gives the option to fill in a user profile with other column\n // fields. This is required specifically by AMP-AD Explore/People page\n rowSet?: RowSet\n}\n\nexport type UserCardListState = {\n userProfileMap: Record<string, UserProfile>\n}\nexport class UserCardList extends Component<\n UserCardListProps,\n UserCardListState\n> {\n constructor(props: UserCardListProps) {\n super(props)\n this.state = {\n userProfileMap: {},\n }\n this.update = this.update.bind(this)\n }\n\n componentDidMount() {\n const { list } = this.props\n this.update(list)\n }\n\n componentDidUpdate(prevProps: UserCardListProps) {\n const priorListOfIds = prevProps.list\n const newValues = without(\n this.props.list.filter(el => el),\n ...priorListOfIds,\n )\n // check that the props have changed by seeing that at least one element is different\n if (newValues.length > 0) {\n this.update(newValues)\n }\n }\n\n update(list: (string | null)[]) {\n getUserProfileWithProfilePicAttached(\n list.filter((el): el is string => !!el),\n )\n .then((data: UserProfileList) => {\n const newEntries: Record<string, UserProfile> = {}\n data.list.forEach(el => {\n const { ownerId } = el\n newEntries[ownerId] = el\n })\n this.setState({\n userProfileMap: { ...this.state.userProfileMap, ...newEntries },\n })\n })\n .catch((err: string) => {\n console.error('Error on batch call =', err)\n })\n }\n\n /**\n * Given data this will find rows where there is no userId columnType and create faux user profiles\n * using firstName, lastName, and institution (company in UserProfile object).\n * @param {RowSet} rowSet\n * @returns list of UserProfiles with firstName, lastName, company, userName (first letter of firstName) filled out.\n * @memberof UserCardList\n */\n manuallyExtractData(rowSet: RowSet) {\n const firstNameIndex = rowSet.headers.findIndex(\n el => el.name === 'firstName',\n )\n const lastNameIndex = rowSet.headers.findIndex(el => el.name === 'lastName')\n const institutionIndex = rowSet.headers.findIndex(\n el => el.name === 'institution',\n )\n const ownerId = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const nullOwnerIdsRows = rowSet.rows.filter(el => !el.values[ownerId])\n return nullOwnerIdsRows.map<Omit<UserProfile, 'ownerId'>>(el => {\n const values = el.values\n return {\n firstName: values[firstNameIndex] ?? '',\n lastName: values[lastNameIndex] ?? '',\n company: values[institutionIndex] ?? undefined,\n ownerId: null,\n userName: values[firstNameIndex]\n ? (values[firstNameIndex][0] ?? '')\n : '',\n }\n })\n }\n\n render() {\n const { size = MEDIUM_USER_CARD, rowSet, list } = this.props\n const { userProfileMap = {} } = this.state\n const fauxUserProfilesList = rowSet && this.manuallyExtractData(rowSet)\n let fauxUserProfileIndex = 0\n return (\n <div className=\"SRC-card-grid-row\">\n {\n // we loop through the list from the props because thats the 'active set of data' whereas the data stored in state could be stale\n list.map(ownerId => {\n const userProfile = ownerId != null ? userProfileMap[ownerId] : null\n if (userProfile) {\n return (\n <div\n key={JSON.stringify(userProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n size={size}\n preSignedURL={userProfile.clientPreSignedURL}\n userProfile={userProfile}\n />\n </div>\n )\n }\n const fauxUserProfile =\n fauxUserProfilesList && fauxUserProfilesList[fauxUserProfileIndex]\n if (!fauxUserProfile) {\n // This could happen in one of two cases:\n // - The props just updated with a new userlist where the data is being gathered for this particular user\n // OR there is no mapping for this user\n return false\n }\n fauxUserProfileIndex += 1\n return (\n <div\n key={JSON.stringify(fauxUserProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n disableLink={true}\n hideEmail={true}\n size={size}\n // TODO: Modify UserCard to accept a fake profile with no ownerId field, and remove this cast.\n userProfile={fauxUserProfile as UserProfile}\n />\n </div>\n )\n })\n }\n </div>\n )\n }\n}\nexport default UserCardList\n"],"mappings":";;;;;;;;AAwBA,IAAa,IAAb,cAAkC,EAGhC;CACA,YAAY,GAA0B;EAKpC,AAJA,MAAM,CAAK,GACX,KAAK,QAAQ,EACX,gBAAgB,CAAC,EACnB,GACA,KAAK,SAAS,KAAK,OAAO,KAAK,IAAI;CACrC;CAEA,oBAAoB;EAClB,IAAM,EAAE,YAAS,KAAK;EACtB,KAAK,OAAO,CAAI;CAClB;CAEA,mBAAmB,GAA8B;EAC/C,IAAM,IAAiB,EAAU,MAC3B,IAAY,EAChB,KAAK,MAAM,KAAK,QAAO,MAAM,CAAE,GAC/B,GAAG,CACL;EAEA,AAAI,EAAU,SAAS,KACrB,KAAK,OAAO,CAAS;CAEzB;CAEA,OAAO,GAAyB;EAC9B,EACE,EAAK,QAAQ,MAAqB,CAAC,CAAC,CAAE,CACxC,EACG,MAAM,MAA0B;GAC/B,IAAM,IAA0C,CAAC;GAKjD,AAJA,EAAK,KAAK,SAAQ,MAAM;IACtB,IAAM,EAAE,eAAY;IACpB,EAAW,KAAW;GACxB,CAAC,GACD,KAAK,SAAS,EACZ,gBAAgB;IAAE,GAAG,KAAK,MAAM;IAAgB,GAAG;GAAW,EAChE,CAAC;EACH,CAAC,EACA,OAAO,MAAgB;GACtB,QAAQ,MAAM,yBAAyB,CAAG;EAC5C,CAAC;CACL;CASA,oBAAoB,GAAgB;EAClC,IAAM,IAAiB,EAAO,QAAQ,WACpC,MAAM,EAAG,SAAS,WACpB,GACM,IAAgB,EAAO,QAAQ,WAAU,MAAM,EAAG,SAAS,UAAU,GACrE,IAAmB,EAAO,QAAQ,WACtC,MAAM,EAAG,SAAS,aACpB,GACM,IAAU,EAAO,QAAQ,WAC7B,MAAM,EAAG,eAAe,EAAe,MACzC;EAEA,OADyB,EAAO,KAAK,QAAO,MAAM,CAAC,EAAG,OAAO,EACtD,EAAiB,KAAkC,MAAM;GAC9D,IAAM,IAAS,EAAG;GAClB,OAAO;IACL,WAAW,EAAO,MAAmB;IACrC,UAAU,EAAO,MAAkB;IACnC,SAAS,EAAO,MAAqB,KAAA;IACrC,SAAS;IACT,UAAU,EAAO,KACZ,EAAO,GAAgB,MAAM,KAC9B;GACN;EACF,CAAC;CACH;CAEA,SAAS;EACP,IAAM,EAAE,UAAO,GAAkB,WAAQ,YAAS,KAAK,OACjD,EAAE,oBAAiB,CAAC,MAAM,KAAK,OAC/B,IAAuB,KAAU,KAAK,oBAAoB,CAAM,GAClE,IAAuB;EAC3B,OACE,kBAAC,OAAD;GAAK,WAAU;aAGX,EAAK,KAAI,MAAW;IAClB,IAAM,IAAc,KAAW,OAAiC,OAA1B,EAAe;IACrD,IAAI,GACF,OACE,kBAAC,OAAD;KAEE,WAAU;eAEV,kBAAC,GAAD;MACQ;MACN,cAAc,EAAY;MACb;KACd,CAAA;IACE,GARE,KAAK,UAAU,CAAW,CAQ5B;IAGT,IAAM,IACJ,KAAwB,EAAqB;IAQ/C,OAPK,KAML,KAAwB,GAEtB,kBAAC,OAAD;KAEE,WAAU;eAEV,kBAAC,GAAD;MACE,aAAa;MACb,WAAW;MACL;MAEN,aAAa;KACd,CAAA;IACE,GAVE,KAAK,UAAU,CAAe,CAUhC,KAfE;GAiBX,CAAC;EAEA,CAAA;CAET;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListGroups.Desktop.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.tsx"],"sourcesContent":["import { useState } from 'react'\nimport UserCardListRotate from '../UserCardListRotate'\nimport { FacetColumnValuesRequest } from '@sage-bionetworks/synapse-types'\nimport { UserCardListGroupsProps } from './UserCardListGroups'\n\nexport default function UserCardListGroupsDesktop(\n props: UserCardListGroupsProps,\n) {\n const [selectedGroupIndex, setSelectedGroupIndex] = useState<number>(0)\n const { columnName, facetValues, ...rest } = props\n const selectedFacet: FacetColumnValuesRequest = {\n columnName,\n facetValues: [facetValues[selectedGroupIndex]],\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnValuesRequest',\n }\n return (\n <div className=\"control-container\">\n <div className=\"button-container\">\n {facetValues?.map((el, curIndex) => {\n return (\n <button\n className={selectedGroupIndex === curIndex ? 'isSelected' : ''}\n onClick={() => setSelectedGroupIndex(curIndex)}\n key={el}\n >\n {el}\n </button>\n )\n })}\n {/*\n This button keeps the border line in the button container running from top to bottom,\n it doesn't have any functionality.\n */}\n <button className=\"gap-fill\" />\n </div>\n <div className=\"content-container\">\n <UserCardListRotate\n key={`UserCardListGroup-${selectedGroupIndex}`}\n {...rest}\n selectedFacets={[selectedFacet]}\n />\n </div>\n </div>\n )\n}\n"],"mappings":";;;;AAKA,SAAwB,EACtB,GACA;CACA,IAAM,CAAC,GAAoB,KAAyB,EAAiB,
|
|
1
|
+
{"version":3,"file":"UserCardListGroups.Desktop.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.tsx"],"sourcesContent":["import { useState } from 'react'\nimport UserCardListRotate from '../UserCardListRotate'\nimport { FacetColumnValuesRequest } from '@sage-bionetworks/synapse-types'\nimport { UserCardListGroupsProps } from './UserCardListGroups'\n\nexport default function UserCardListGroupsDesktop(\n props: UserCardListGroupsProps,\n) {\n const [selectedGroupIndex, setSelectedGroupIndex] = useState<number>(0)\n const { columnName, facetValues, ...rest } = props\n const selectedFacet: FacetColumnValuesRequest = {\n columnName,\n facetValues: [facetValues[selectedGroupIndex]],\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnValuesRequest',\n }\n return (\n <div className=\"control-container\">\n <div className=\"button-container\">\n {facetValues?.map((el, curIndex) => {\n return (\n <button\n className={selectedGroupIndex === curIndex ? 'isSelected' : ''}\n onClick={() => setSelectedGroupIndex(curIndex)}\n key={el}\n >\n {el}\n </button>\n )\n })}\n {/*\n This button keeps the border line in the button container running from top to bottom,\n it doesn't have any functionality.\n */}\n <button className=\"gap-fill\" />\n </div>\n <div className=\"content-container\">\n <UserCardListRotate\n key={`UserCardListGroup-${selectedGroupIndex}`}\n {...rest}\n selectedFacets={[selectedFacet]}\n />\n </div>\n </div>\n )\n}\n"],"mappings":";;;;AAKA,SAAwB,EACtB,GACA;CACA,IAAM,CAAC,GAAoB,KAAyB,EAAiB,CAAC,GAChE,EAAE,eAAY,gBAAa,GAAG,MAAS,GACvC,IAA0C;EAC9C;EACA,aAAa,CAAC,EAAY,EAAmB;EAC7C,cACE;CACJ;CACA,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,GAAa,KAAK,GAAI,MAEnB,kBAAC,UAAD;IACE,WAAW,MAAuB,IAAW,eAAe;IAC5D,eAAe,EAAsB,CAAQ;cAG5C;GACK,GAHD,CAGC,CAEX,GAKD,kBAAC,UAAD,EAAQ,WAAU,WAAY,CAAA,CAC3B;MACL,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD;IAEE,GAAI;IACJ,gBAAgB,CAAC,CAAa;GAC/B,GAHM,qBAAqB,GAG3B;EACE,CAAA,CACF;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListGroups.Mobile.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.tsx"],"sourcesContent":["import UserCardListRotate from '../UserCardListRotate'\nimport { FacetColumnValuesRequest } from '@sage-bionetworks/synapse-types'\nimport ExpandableContent from '../../home_page/ExpandableContent'\nimport { UserCardListGroupsProps } from './UserCardListGroups'\n\nexport default function UserCardListGroupsMobile(\n props: UserCardListGroupsProps,\n) {\n const { columnName, facetValues, ...rest } = props\n return (\n <div>\n {facetValues?.map((el, curIndex) => {\n const facetValue = facetValues[curIndex]\n const selectedFacet: FacetColumnValuesRequest = {\n columnName,\n facetValues: [facetValue],\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnValuesRequest',\n }\n const content = (\n <UserCardListRotate {...rest} selectedFacets={[selectedFacet]} />\n )\n const title = <> {facetValue} </>\n return (\n <ExpandableContent\n key={`UserCardListGroup-Mobile-${curIndex}`}\n title={title}\n content={content}\n />\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;;AAKA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,gBAAa,GAAG,MAAS;
|
|
1
|
+
{"version":3,"file":"UserCardListGroups.Mobile.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.tsx"],"sourcesContent":["import UserCardListRotate from '../UserCardListRotate'\nimport { FacetColumnValuesRequest } from '@sage-bionetworks/synapse-types'\nimport ExpandableContent from '../../home_page/ExpandableContent'\nimport { UserCardListGroupsProps } from './UserCardListGroups'\n\nexport default function UserCardListGroupsMobile(\n props: UserCardListGroupsProps,\n) {\n const { columnName, facetValues, ...rest } = props\n return (\n <div>\n {facetValues?.map((el, curIndex) => {\n const facetValue = facetValues[curIndex]\n const selectedFacet: FacetColumnValuesRequest = {\n columnName,\n facetValues: [facetValue],\n concreteType:\n 'org.sagebionetworks.repo.model.table.FacetColumnValuesRequest',\n }\n const content = (\n <UserCardListRotate {...rest} selectedFacets={[selectedFacet]} />\n )\n const title = <> {facetValue} </>\n return (\n <ExpandableContent\n key={`UserCardListGroup-Mobile-${curIndex}`}\n title={title}\n content={content}\n />\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;;AAKA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,gBAAa,GAAG,MAAS;CAC7C,OACE,kBAAC,OAAD,EAAA,UACG,GAAa,KAAK,GAAI,MAAa;EAClC,IAAM,IAAa,EAAY,IACzB,IAA0C;GAC9C;GACA,aAAa,CAAC,CAAU;GACxB,cACE;EACJ,GACM,IACJ,kBAAC,GAAD;GAAoB,GAAI;GAAM,gBAAgB,CAAC,CAAa;EAAI,CAAA;EAGlE,OACE,kBAAC,GAAD;GAES,OAJG,kBAAA,GAAA,EAAA,UAAA;IAAE;IAAE;IAAW;GAAG,EAAA,CAIrB;GACE;EACV,GAHM,4BAA4B,GAGlC;CAEL,CAAC,EACE,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListGroups.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport { UserCardSize } from '@/utils/SynapseConstants'\nimport UserCardListGroupsDesktop from './UserCardListGroups.Desktop'\nimport UserCardListGroupsMobile from './UserCardListGroups.Mobile'\n\nexport type UserCardListGroupsProps = {\n sql: string\n columnName: string\n facetValues: string[]\n size: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n count: number\n useQueryResultUserData?: boolean\n}\n\nexport default function UserCardListGroups(props: UserCardListGroupsProps) {\n const { summaryLink, summaryLinkText, ...rest } = props\n const showDesktop = useShowDesktop()\n return (\n <div className={`UserCardListGroups${showDesktop ? '__Desktop' : ''}`}>\n <div>\n {showDesktop ? (\n <UserCardListGroupsDesktop {...rest} />\n ) : (\n <UserCardListGroupsMobile {...rest} />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListGroups__summary\">\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={summaryLink}\n >\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;AAiBA,SAAwB,EAAmB,GAAgC;CACzE,IAAM,EAAE,gBAAa,oBAAiB,GAAG,MAAS,GAC5C,IAAc,
|
|
1
|
+
{"version":3,"file":"UserCardListGroups.js","names":[],"sources":["../../../../src/components/UserCardList/UserCardListGroups/UserCardListGroups.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport { UserCardSize } from '@/utils/SynapseConstants'\nimport UserCardListGroupsDesktop from './UserCardListGroups.Desktop'\nimport UserCardListGroupsMobile from './UserCardListGroups.Mobile'\n\nexport type UserCardListGroupsProps = {\n sql: string\n columnName: string\n facetValues: string[]\n size: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n count: number\n useQueryResultUserData?: boolean\n}\n\nexport default function UserCardListGroups(props: UserCardListGroupsProps) {\n const { summaryLink, summaryLinkText, ...rest } = props\n const showDesktop = useShowDesktop()\n return (\n <div className={`UserCardListGroups${showDesktop ? '__Desktop' : ''}`}>\n <div>\n {showDesktop ? (\n <UserCardListGroupsDesktop {...rest} />\n ) : (\n <UserCardListGroupsMobile {...rest} />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListGroups__summary\">\n <LargeButton\n color=\"secondary\"\n variant=\"contained\"\n href={summaryLink}\n >\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;AAiBA,SAAwB,EAAmB,GAAgC;CACzE,IAAM,EAAE,gBAAa,oBAAiB,GAAG,MAAS,GAC5C,IAAc,EAAe;CACnC,OACE,kBAAC,OAAD;EAAK,WAAW,qBAAqB,IAAc,cAAc;YAC/D,kBAAC,OAAD,EAAA,UAAA,CAEI,EADD,IACE,IAEA,GAFD,EAA2B,GAAI,EAAO,CAED,GAEtC,KAAe,KACd,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;cAEL;GACU,CAAA;EACV,CAAA,CAEJ,EAAA,CAAA;CACF,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListRotate.js","names":[],"sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport 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 { LARGE_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n FacetColumnRequest,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { LoadingUserCardMedium } from '../UserCard/UserCardMedium'\nimport UserCardList from './UserCardList'\n\nconst STORED_UID_KEY = 'sage_rotate_uids'\nconst DEFAULT_DISPLAY_COUNT = 3\n\nexport type UserCardListRotateProps = {\n sql: string\n count: number\n useQueryResultUserData?: boolean\n size?: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n selectedFacets?: FacetColumnRequest[]\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n additionalFiltersSessionStorageKey?: string\n}\n\nexport const getDisplayIds = (\n ids: string[] = [],\n count: number = DEFAULT_DISPLAY_COUNT,\n storageUidKey: string,\n) => {\n let storedIds: string[] = []\n let newIds: string[] = []\n const storedIdsStr = localStorage.getItem(storageUidKey)\n if (storedIdsStr != null) {\n storedIds = JSON.parse(storedIdsStr)\n }\n if (!storedIds.length) {\n // no stuff in storage\n newIds = ids.slice(0, count)\n localStorage.setItem(storageUidKey, JSON.stringify(newIds))\n return newIds\n } else {\n // has stuff in storage\n const filtered = ids.filter(item => !storedIds.includes(item))\n if (filtered.length >= count) {\n newIds = filtered.slice(0, count)\n localStorage.setItem(\n storageUidKey,\n JSON.stringify(storedIds.concat(newIds)),\n )\n return newIds\n } else {\n localStorage.removeItem(storageUidKey)\n const part = ids.slice(0, count - filtered.length)\n localStorage.setItem(storageUidKey, JSON.stringify(part))\n return filtered.concat(part)\n }\n }\n}\n\nexport function UserCardListRotate({\n sql,\n count,\n useQueryResultUserData = false,\n size = LARGE_USER_CARD,\n summaryLink,\n summaryLinkText,\n selectedFacets,\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n}: UserCardListRotateProps) {\n const { accessToken } = useSynapseContext()\n const [userIds, setUserIds] = useState<string[]>([])\n const [queryData, setQueryData] = useState<QueryResultBundle>()\n const [isLoading, setIsLoading] = useState<boolean>()\n let mounted = true\n const storageUidKey = `${STORED_UID_KEY}-${sql}-${JSON.stringify(\n selectedFacets,\n )}`\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 additionalFilters,\n selectedFacets,\n },\n }\n\n const queryResultBundle = await SynapseClient.getFullQueryTableResults(\n request,\n accessToken,\n )\n const { queryResult } = queryResultBundle\n if (queryResult?.queryResults.rows) {\n // find the column that has the USER_ID in it.\n const ownerIdColumnIndex = queryResult.queryResults.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const ids: string[] = queryResult.queryResults.rows\n .map(d => d.values[ownerIdColumnIndex])\n .filter((id): id is string => id !== null)\n if (mounted) {\n const newIds = getDisplayIds(ids, count, storageUidKey)\n setUserIds(newIds)\n if (useQueryResultUserData) {\n setQueryData(queryResultBundle)\n }\n setIsLoading(false)\n }\n } else {\n console.log('UserCardListRotate: Error getting data')\n }\n }\n fetchData()\n\n return () => {\n mounted = false\n }\n }, [sql, selectedFacets, count, accessToken, searchParams, sqlOperator])\n\n return (\n <div className=\"UserCardListRotate\">\n {isLoading && <LoadingUserCardMedium />}\n {!isLoading && userIds.length === 0 && (\n <p className=\"font-italic\">No one was found.</p>\n )}\n {!isLoading && userIds.length > 0 && (\n <UserCardList\n list={userIds}\n size={size}\n rowSet={queryData?.queryResult?.queryResults}\n />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListRotate__summary\">\n <LargeButton color=\"secondary\" variant=\"contained\" href={summaryLink}>\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n )\n}\n\nexport default UserCardListRotate\n"],"mappings":";;;;;;;;;;;;;AAqBA,IAAM,IAAiB,oBACjB,IAAwB,GAejB,KACX,IAAgB,
|
|
1
|
+
{"version":3,"file":"UserCardListRotate.js","names":[],"sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport 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 { LARGE_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n FacetColumnRequest,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { LoadingUserCardMedium } from '../UserCard/UserCardMedium'\nimport UserCardList from './UserCardList'\n\nconst STORED_UID_KEY = 'sage_rotate_uids'\nconst DEFAULT_DISPLAY_COUNT = 3\n\nexport type UserCardListRotateProps = {\n sql: string\n count: number\n useQueryResultUserData?: boolean\n size?: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n selectedFacets?: FacetColumnRequest[]\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n additionalFiltersSessionStorageKey?: string\n}\n\nexport const getDisplayIds = (\n ids: string[] = [],\n count: number = DEFAULT_DISPLAY_COUNT,\n storageUidKey: string,\n) => {\n let storedIds: string[] = []\n let newIds: string[] = []\n const storedIdsStr = localStorage.getItem(storageUidKey)\n if (storedIdsStr != null) {\n storedIds = JSON.parse(storedIdsStr)\n }\n if (!storedIds.length) {\n // no stuff in storage\n newIds = ids.slice(0, count)\n localStorage.setItem(storageUidKey, JSON.stringify(newIds))\n return newIds\n } else {\n // has stuff in storage\n const filtered = ids.filter(item => !storedIds.includes(item))\n if (filtered.length >= count) {\n newIds = filtered.slice(0, count)\n localStorage.setItem(\n storageUidKey,\n JSON.stringify(storedIds.concat(newIds)),\n )\n return newIds\n } else {\n localStorage.removeItem(storageUidKey)\n const part = ids.slice(0, count - filtered.length)\n localStorage.setItem(storageUidKey, JSON.stringify(part))\n return filtered.concat(part)\n }\n }\n}\n\nexport function UserCardListRotate({\n sql,\n count,\n useQueryResultUserData = false,\n size = LARGE_USER_CARD,\n summaryLink,\n summaryLinkText,\n selectedFacets,\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n}: UserCardListRotateProps) {\n const { accessToken } = useSynapseContext()\n const [userIds, setUserIds] = useState<string[]>([])\n const [queryData, setQueryData] = useState<QueryResultBundle>()\n const [isLoading, setIsLoading] = useState<boolean>()\n let mounted = true\n const storageUidKey = `${STORED_UID_KEY}-${sql}-${JSON.stringify(\n selectedFacets,\n )}`\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 additionalFilters,\n selectedFacets,\n },\n }\n\n const queryResultBundle = await SynapseClient.getFullQueryTableResults(\n request,\n accessToken,\n )\n const { queryResult } = queryResultBundle\n if (queryResult?.queryResults.rows) {\n // find the column that has the USER_ID in it.\n const ownerIdColumnIndex = queryResult.queryResults.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const ids: string[] = queryResult.queryResults.rows\n .map(d => d.values[ownerIdColumnIndex])\n .filter((id): id is string => id !== null)\n if (mounted) {\n const newIds = getDisplayIds(ids, count, storageUidKey)\n setUserIds(newIds)\n if (useQueryResultUserData) {\n setQueryData(queryResultBundle)\n }\n setIsLoading(false)\n }\n } else {\n console.log('UserCardListRotate: Error getting data')\n }\n }\n fetchData()\n\n return () => {\n mounted = false\n }\n }, [sql, selectedFacets, count, accessToken, searchParams, sqlOperator])\n\n return (\n <div className=\"UserCardListRotate\">\n {isLoading && <LoadingUserCardMedium />}\n {!isLoading && userIds.length === 0 && (\n <p className=\"font-italic\">No one was found.</p>\n )}\n {!isLoading && userIds.length > 0 && (\n <UserCardList\n list={userIds}\n size={size}\n rowSet={queryData?.queryResult?.queryResults}\n />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListRotate__summary\">\n <LargeButton color=\"secondary\" variant=\"contained\" href={summaryLink}>\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n )\n}\n\nexport default UserCardListRotate\n"],"mappings":";;;;;;;;;;;;;AAqBA,IAAM,IAAiB,oBACjB,IAAwB,GAejB,KACX,IAAgB,CAAC,GACjB,IAAgB,GAChB,MACG;CACH,IAAI,IAAsB,CAAC,GACvB,IAAmB,CAAC,GAClB,IAAe,aAAa,QAAQ,CAAa;CAIvD,IAHI,KAAgB,SAClB,IAAY,KAAK,MAAM,CAAY,IAEhC,EAAU,QAKR;EAEL,IAAM,IAAW,EAAI,QAAO,MAAQ,CAAC,EAAU,SAAS,CAAI,CAAC;EAC7D,IAAI,EAAS,UAAU,GAMrB,OALA,IAAS,EAAS,MAAM,GAAG,CAAK,GAChC,aAAa,QACX,GACA,KAAK,UAAU,EAAU,OAAO,CAAM,CAAC,CACzC,GACO;EACF;GACL,aAAa,WAAW,CAAa;GACrC,IAAM,IAAO,EAAI,MAAM,GAAG,IAAQ,EAAS,MAAM;GAEjD,OADA,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAI,CAAC,GACjD,EAAS,OAAO,CAAI;EAC7B;CACF,OAjBE,OAFA,IAAS,EAAI,MAAM,GAAG,CAAK,GAC3B,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAM,CAAC,GACnD;AAkBX;AAEA,SAAgB,EAAmB,EACjC,QACA,UACA,4BAAyB,IACzB,UAAO,GACP,gBACA,oBACA,mBACA,iBACA,gBACA,yCAC0B;CAC1B,IAAM,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAS,KAAc,EAAmB,CAAC,CAAC,GAC7C,CAAC,GAAW,KAAgB,EAA4B,GACxD,CAAC,GAAW,KAAgB,EAAkB,GAChD,IAAU,IACR,IAAgB,GAAG,EAAe,GAAG,EAAI,GAAG,KAAK,UACrD,CACF;CAsDA,OArDA,SA8CE,iBA7CoC;EAClC,EAAa,EAAI;EAQjB,IAAM,IAA8B;GAClC,UAAA;GACA,cAAc;GACd,UAVe,EAA8B,CAU7C;GACA,OAAO;IACL;IACA,mBAZsB,EACxB,GACA,GACA,CASE;IACA;GACF;EACF,GAEM,IAAoB,MAAM,EAAc,yBAC5C,GACA,CACF,GACM,EAAE,mBAAgB;EACxB,IAAI,GAAa,aAAa,MAAM;GAElC,IAAM,IAAqB,EAAY,aAAa,QAAQ,WAC1D,MAAM,EAAG,eAAe,EAAe,MACzC,GACM,IAAgB,EAAY,aAAa,KAC5C,KAAI,MAAK,EAAE,OAAO,EAAmB,EACrC,QAAQ,MAAqB,MAAO,IAAI;GAC3C,AAAI,MAEF,EADe,EAAc,GAAK,GAAO,CAC9B,CAAM,GACb,KACF,EAAa,CAAiB,GAEhC,EAAa,EAAK;EAEtB,OACE,QAAQ,IAAI,wCAAwC;CAExD,EACU,SAEG;EACX,IAAU;CACZ,IACC;EAAC;EAAK;EAAgB;EAAO;EAAa;EAAc;CAAW,CAAC,GAGrE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,KAAa,kBAAC,GAAD,CAAwB,CAAA;GACrC,CAAC,KAAa,EAAQ,WAAW,KAChC,kBAAC,KAAD;IAAG,WAAU;cAAc;GAAoB,CAAA;GAEhD,CAAC,KAAa,EAAQ,SAAS,KAC9B,kBAAC,GAAD;IACE,MAAM;IACA;IACN,QAAQ,GAAW,aAAa;GACjC,CAAA;GAEF,KAAe,KACd,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KAAa,OAAM;KAAY,SAAQ;KAAY,MAAM;eACtD;IACU,CAAA;GACV,CAAA;EAEJ;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserOrTeamBadge.js","names":[],"sources":["../../../src/components/UserOrTeamBadge/UserOrTeamBadge.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\nimport { UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport TeamBadge from '../TeamBadge'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport { useUserOrTeam } from './useUserOrTeam'\n\nexport type UserOrTeamBadgeProps = {\n /* The principal ID of the user or team. Required if userGroupHeader is undefined. */\n principalId?: string | number\n /* The userGroupHeader of the user or team. Required if principalId is undefined. */\n userGroupHeader?: UserGroupHeader\n showFullName?: boolean\n disableHref?: boolean\n showCardOnHover?: boolean\n openLinkInNewTab?: boolean\n}\n\nexport default function UserOrTeamBadge(props: UserOrTeamBadgeProps) {\n const {\n principalId,\n disableHref,\n showCardOnHover,\n showFullName,\n userGroupHeader: providedUserGroupHeader,\n openLinkInNewTab,\n } = props\n\n const { userGroupHeader } = useUserOrTeam(\n principalId,\n providedUserGroupHeader,\n )\n\n const resolvedPrincipalId = principalId ?? providedUserGroupHeader?.ownerId\n\n if (resolvedPrincipalId == null && providedUserGroupHeader == null) {\n console.error(\n 'Expected one of principalId or userGroupHeader to be defined but both were null or undefined',\n )\n return <></>\n } else if (userGroupHeader === undefined) {\n return <Skeleton width={125} height={30} />\n } else if (userGroupHeader.isIndividual) {\n return (\n <UserBadge\n userId={resolvedPrincipalId!.toString()}\n disableLink={disableHref}\n showFullName={showFullName}\n showCardOnHover={showCardOnHover}\n openLinkInNewTab={openLinkInNewTab}\n />\n )\n } else {\n return (\n <TeamBadge\n teamId={resolvedPrincipalId!}\n teamName={userGroupHeader.userName}\n disableHref={disableHref}\n openLinkInNewTab={openLinkInNewTab}\n />\n )\n }\n}\n"],"mappings":";;;;;;AAiBA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EACJ,gBACA,gBACA,oBACA,iBACA,iBAAiB,GACjB,wBACE,GAEE,EAAE,uBAAoB,EAC1B,GACA,
|
|
1
|
+
{"version":3,"file":"UserOrTeamBadge.js","names":[],"sources":["../../../src/components/UserOrTeamBadge/UserOrTeamBadge.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\nimport { UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport TeamBadge from '../TeamBadge'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport { useUserOrTeam } from './useUserOrTeam'\n\nexport type UserOrTeamBadgeProps = {\n /* The principal ID of the user or team. Required if userGroupHeader is undefined. */\n principalId?: string | number\n /* The userGroupHeader of the user or team. Required if principalId is undefined. */\n userGroupHeader?: UserGroupHeader\n showFullName?: boolean\n disableHref?: boolean\n showCardOnHover?: boolean\n openLinkInNewTab?: boolean\n}\n\nexport default function UserOrTeamBadge(props: UserOrTeamBadgeProps) {\n const {\n principalId,\n disableHref,\n showCardOnHover,\n showFullName,\n userGroupHeader: providedUserGroupHeader,\n openLinkInNewTab,\n } = props\n\n const { userGroupHeader } = useUserOrTeam(\n principalId,\n providedUserGroupHeader,\n )\n\n const resolvedPrincipalId = principalId ?? providedUserGroupHeader?.ownerId\n\n if (resolvedPrincipalId == null && providedUserGroupHeader == null) {\n console.error(\n 'Expected one of principalId or userGroupHeader to be defined but both were null or undefined',\n )\n return <></>\n } else if (userGroupHeader === undefined) {\n return <Skeleton width={125} height={30} />\n } else if (userGroupHeader.isIndividual) {\n return (\n <UserBadge\n userId={resolvedPrincipalId!.toString()}\n disableLink={disableHref}\n showFullName={showFullName}\n showCardOnHover={showCardOnHover}\n openLinkInNewTab={openLinkInNewTab}\n />\n )\n } else {\n return (\n <TeamBadge\n teamId={resolvedPrincipalId!}\n teamName={userGroupHeader.userName}\n disableHref={disableHref}\n openLinkInNewTab={openLinkInNewTab}\n />\n )\n }\n}\n"],"mappings":";;;;;;AAiBA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EACJ,gBACA,gBACA,oBACA,iBACA,iBAAiB,GACjB,wBACE,GAEE,EAAE,uBAAoB,EAC1B,GACA,CACF,GAEM,IAAsB,KAAe,GAAyB;CAoBlE,OAlBE,KAAuB,QAAQ,KAA2B,QAC5D,QAAQ,MACN,8FACF,GACO,kBAAA,GAAA,CAAI,CAAA,KACF,MAAoB,KAAA,IACtB,kBAAC,GAAD;EAAU,OAAO;EAAK,QAAQ;CAAK,CAAA,IACjC,EAAgB,eAEvB,kBAAC,GAAD;EACE,QAAQ,EAAqB,SAAS;EACtC,aAAa;EACC;EACG;EACC;CACnB,CAAA,IAID,kBAAC,GAAD;EACE,QAAQ;EACR,UAAU,EAAgB;EACb;EACK;CACnB,CAAA;AAGP"}
|