synapse-react-client 4.0.19 → 4.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.d.ts +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/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CitationPopover/useCitation.js.map +1 -1
- package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
- package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
- package/dist/components/CopyToClipboardIcon.js.map +1 -1
- package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
- package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
- package/dist/components/CrispChat/CrispChat.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js +28 -31
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- 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.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.js +2 -0
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
- package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
- package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
- package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
- package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
- package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DatasetJsonLdScript.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
- package/dist/components/DialogBase.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
- package/dist/components/DirectDownloadButton.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
- package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
- package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
- package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
- package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +134 -136
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
- package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
- package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
- package/dist/components/EntityForm/EntityForm.js.map +1 -1
- package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
- package/dist/components/EntityIcon.js.map +1 -1
- package/dist/components/EntityLink.js.map +1 -1
- package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
- package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
- package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
- package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
- package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
- package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
- package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
- package/dist/components/Evaluation/input_models/models.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
- package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
- package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
- package/dist/components/FilePreview/EntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
- package/dist/components/FilePreview/PdfPreview.js.map +1 -1
- package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
- package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/Forum/DiscussionReply.js.map +1 -1
- package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
- package/dist/components/Forum/DiscussionThread.js.map +1 -1
- package/dist/components/Forum/ForumPage.js.map +1 -1
- package/dist/components/Forum/ForumTable.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/Forum/SubscribersModal.js.map +1 -1
- package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
- package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
- package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
- package/dist/components/GenericCard/Linkify.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
- package/dist/components/Goals/Goals.Desktop.js.map +1 -1
- package/dist/components/Goals/Goals.Mobile.js.map +1 -1
- package/dist/components/Goals/Goals.js +25 -27
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.js +14 -16
- package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js +14 -16
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
- package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
- package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js +10 -10
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
- package/dist/components/HasAccess/useHasAccess.js.map +1 -1
- package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IDUReport/IDUReport.js.map +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconList.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/IconSvgButton.js.map +1 -1
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
- package/dist/components/ImageFromSynapseTable.js.map +1 -1
- package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/JsonLdScript.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
- package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
- package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js +75 -106
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +38 -37
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
- package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/MuiContainer.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
- package/dist/components/PageProgress/PageProgress.js.map +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/DotPlot.js.map +1 -1
- package/dist/components/Plot/Plot.d.ts +12 -1
- package/dist/components/Plot/Plot.d.ts.map +1 -1
- package/dist/components/Plot/Plot.js +5 -1
- package/dist/components/Plot/Plot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/Plot/index.d.ts +3 -1
- package/dist/components/Plot/index.d.ts.map +1 -1
- package/dist/components/Plot/index.js +2 -1
- package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
- package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Desktop.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
- package/dist/components/QueryContext/QueryContext.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QuerySortSelector.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.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.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.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
- package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/SynapseTable/useTableSort.js.map +1 -1
- package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +4 -4
- 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.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +9 -9
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TeamBadge.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TemplateComponent.js.map +1 -1
- package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
- package/dist/components/TextToComponentCollapse.js.map +1 -1
- package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
- package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
- package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
- package/dist/components/TotalQueryResults.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCard/UserBadge.js.map +1 -1
- package/dist/components/UserCard/UserCard.js.map +1 -1
- package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
- package/dist/components/UserCard/UserCardLarge.js.map +1 -1
- package/dist/components/UserCard/UserCardMedium.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
- package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
- package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
- package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/doi/DoiFormSchemas.js.map +1 -1
- package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/download_list/index.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js.map +1 -1
- package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/error/ErrorPage.js +24 -24
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/error/RouteErrorBoundary.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
- package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
- package/dist/components/favorites/FavoriteButton.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
- package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
- package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
- package/dist/components/home_page/ExpandableContent.js.map +1 -1
- package/dist/components/index.js +48 -47
- package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
- package/dist/components/layout/SWCHeader.js.map +1 -1
- package/dist/components/layout/SWCPageLayout.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/HoverPopover.js.map +1 -1
- package/dist/components/styled/InlineBadge.js.map +1 -1
- package/dist/components/styled/InputSizedButton.js.map +1 -1
- package/dist/components/styled/LargeButton.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/styled/LightTooltip.js.map +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/styled/StyledTableContainer.js.map +1 -1
- package/dist/components/styled/WideButton.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.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.map +1 -1
- package/dist/mocks/mockShortIo.js.map +1 -1
- package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
- package/dist/mocks/mockSubscription.js.map +1 -1
- package/dist/mocks/mockWiki.js.map +1 -1
- package/dist/mocks/mockWikiPageKey.js.map +1 -1
- package/dist/mocks/mock_drug_tool_data.js.map +1 -1
- package/dist/mocks/mock_file_handle.js.map +1 -1
- package/dist/mocks/mock_file_statistics.js.map +1 -1
- package/dist/mocks/mock_has_access_data.js.map +1 -1
- package/dist/mocks/mock_upload_destination.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
- package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/mocks/msw/server.d.ts +1 -1
- package/dist/mocks/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js.map +1 -1
- package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
- package/dist/mocks/oauth/MockClient.js.map +1 -1
- package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
- package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
- package/dist/mocks/provenance/mockActivity.js.map +1 -1
- package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
- package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
- package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
- package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
- package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mock_query_data.js.map +1 -1
- package/dist/mocks/query/syn16787123.js.map +1 -1
- package/dist/mocks/query/syn17328596.js.map +1 -1
- package/dist/mocks/query/syn51735464.js.map +1 -1
- package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
- package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
- package/dist/mocks/team/mockTeam.js.map +1 -1
- package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
- package/dist/mocks/user/mock_user_profile.js.map +1 -1
- package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
- package/dist/ror-client/index.js.map +1 -1
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/stories/ToastDemo.js.map +1 -1
- package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
- package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
- package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
- package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
- package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
- package/dist/synapse-client/HttpClient.js.map +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +61 -69
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
- package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
- package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
- package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
- package/dist/synapse-queries/forum/useForum.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/github/useGithub.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/message/useMessage.js.map +1 -1
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
- package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
- package/dist/synapse-queries/ror/index.js.map +1 -1
- package/dist/synapse-queries/search/useSearch.js.map +1 -1
- package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
- package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
- package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
- package/dist/synapse-queries/user/useProjects.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
- package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
- package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
- package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
- package/dist/testutils/LocationTracker.js.map +1 -1
- package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/TestingLibraryUtils.js +18 -16
- package/dist/testutils/TestingLibraryUtils.js.map +1 -1
- package/dist/testutils/muiDatePickerMock.js.map +1 -1
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/mergeTheme.js.map +1 -1
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/theme/spreadSx.js.map +1 -1
- package/dist/theme/typography/Link.js.map +1 -1
- package/dist/theme/typography/Typography.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +11 -11
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/OrientationBannerConstants.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
- package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/AridhiaContext.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/DateFormatter.js.map +1 -1
- package/dist/utils/functions/DateTimeUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
- package/dist/utils/functions/IsExternalLink.js.map +1 -1
- package/dist/utils/functions/ObjectUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
- package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
- package/dist/utils/functions/colorPalette.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
- package/dist/utils/functions/generateCsrfToken.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js +3 -3
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
- package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
- package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js +24 -23
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js +2 -4
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useShowDesktop.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
- package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/searchDefaults.js.map +1 -1
- package/dist/utils/slots/SlotUtils.js.map +1 -1
- package/dist/utils/types/IsType.js.map +1 -1
- package/package.json +67 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAM,IAAgB,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AA8JA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,GACE,EAE7C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;EACvB,CACF,GACD,KAAA,GACN,CAAC,EAAW,CACb,EAEK,IAAuC,QAAc;EACzD,IAAI;AACJ,MAAI,EAAM,MACR,KAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;GACV;OACI;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,mCACP;AACD,OAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;IACpB;;AAGH,SAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;GAQH;IACA;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACP,CAAC,EAQI,IAAkB,KAAK,UAAU,EAAiB;AAExD,QACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;EAwBQ,EAtBb,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,eAAc,CAAA;GAC3D,KACC,kBAAC,GAAD,EACmC,oCACjC,CAAA;GAEJ,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;IACrB,CAAA;GACwB,EAAA,CAAA;EACF,CAAA,CACf"}
|
|
1
|
+
{"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AA8JA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,EACC,GAE5C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;CACxB,CACF,IACA,KAAA,GACN,CAAC,CAAU,CACb,GAEM,IAAuC,QAAc;EACzD,IAAI;EACJ,IAAI,EAAM,OACR,IAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;EACX;OACK;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,kCACR;GACA,IAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;GACrB;EACF;EAEA,OAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;EAQJ;CACF,GAAG;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;CACR,CAAC,GAQK,IAAkB,KAAK,UAAU,CAAgB;CAEvD,OACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;CAwBO,GAtBZ,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,cAAa,CAAA;GAC1D,KACC,kBAAC,GAAD,EACmC,mCAClC,CAAA;GAEH,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;GACtB,CAAA;EACwB,EAAA,CAAA;CACF,CAAA,CACf;AAElB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardDeck.Desktop.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Desktop.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport classNames from 'classnames'\n\nexport default function CardDeckDesktop({\n title,\n description,\n ctaButtonText,\n ctaButtonURL,\n headerImage,\n titleIcon,\n cardDeckType,\n}: CardDeckCardProps) {\n return (\n <div\n className={classNames(\n 'CardDeck__Card',\n cardDeckType && `CardDeck__Card--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__image',\n cardDeckType && `CardDeck__Card__header__image--${cardDeckType}`,\n )}\n >\n <Link href={ctaButtonURL}>{headerImage}</Link>\n </div>\n <div\n className={classNames(\n 'CardDeck__Card__header',\n cardDeckType && `CardDeck__Card__header--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__icon',\n cardDeckType && `CardDeck__Card__header__icon--${cardDeckType}`,\n )}\n >\n {titleIcon}\n </div>\n <div className=\"CardDeck__Card__header__info\">\n <span\n className={classNames(\n 'CardDeck__Card__header__info__title',\n cardDeckType &&\n `CardDeck__Card__header__info__title--${cardDeckType}`,\n )}\n >\n {' '}\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? (\n <Link href={ctaButtonURL}>{title}</Link>\n ) : (\n title\n )}{' '}\n </span>\n </div>\n </div>\n <div\n className={classNames(\n `CardDeck__Card__summary`,\n cardDeckType && `CardDeck__Card__summary--${cardDeckType}`,\n )}\n >\n <p> {description} </p>\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? null : (\n <LargeButton\n color=\"primary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n maxWidth: '200px',\n fontSize: '14px',\n boxShadow: 'none',\n borderColor: 'primary.main',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAgB,EACtC,UACA,gBACA,kBACA,iBACA,gBACA,cACA,mBACoB;
|
|
1
|
+
{"version":3,"file":"CardDeck.Desktop.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Desktop.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport classNames from 'classnames'\n\nexport default function CardDeckDesktop({\n title,\n description,\n ctaButtonText,\n ctaButtonURL,\n headerImage,\n titleIcon,\n cardDeckType,\n}: CardDeckCardProps) {\n return (\n <div\n className={classNames(\n 'CardDeck__Card',\n cardDeckType && `CardDeck__Card--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__image',\n cardDeckType && `CardDeck__Card__header__image--${cardDeckType}`,\n )}\n >\n <Link href={ctaButtonURL}>{headerImage}</Link>\n </div>\n <div\n className={classNames(\n 'CardDeck__Card__header',\n cardDeckType && `CardDeck__Card__header--${cardDeckType}`,\n )}\n >\n <div\n className={classNames(\n 'CardDeck__Card__header__icon',\n cardDeckType && `CardDeck__Card__header__icon--${cardDeckType}`,\n )}\n >\n {titleIcon}\n </div>\n <div className=\"CardDeck__Card__header__info\">\n <span\n className={classNames(\n 'CardDeck__Card__header__info__title',\n cardDeckType &&\n `CardDeck__Card__header__info__title--${cardDeckType}`,\n )}\n >\n {' '}\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? (\n <Link href={ctaButtonURL}>{title}</Link>\n ) : (\n title\n )}{' '}\n </span>\n </div>\n </div>\n <div\n className={classNames(\n `CardDeck__Card__summary`,\n cardDeckType && `CardDeck__Card__summary--${cardDeckType}`,\n )}\n >\n <p> {description} </p>\n {['b2ai', 'b2ai-detail-card'].includes(cardDeckType ?? '') ? null : (\n <LargeButton\n color=\"primary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n maxWidth: '200px',\n fontSize: '14px',\n boxShadow: 'none',\n borderColor: 'primary.main',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAgB,EACtC,UACA,gBACA,kBACA,iBACA,gBACA,cACA,mBACoB;CACpB,OACE,kBAAC,OAAD;EACE,WAAW,EACT,kBACA,KAAgB,mBAAmB,GACrC;YAJF;GAME,kBAAC,OAAD;IACE,WAAW,EACT,iCACA,KAAgB,kCAAkC,GACpD;cAEA,kBAAC,GAAD;KAAM,MAAM;eAAe;IAAkB,CAAA;GAC1C,CAAA;GACL,kBAAC,OAAD;IACE,WAAW,EACT,0BACA,KAAgB,2BAA2B,GAC7C;cAJF,CAME,kBAAC,OAAD;KACE,WAAW,EACT,gCACA,KAAgB,iCAAiC,GACnD;eAEC;IACE,CAAA,GACL,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,QAAD;MACE,WAAW,EACT,uCACA,KACE,wCAAwC,GAC5C;gBALF;OAOG;OACA,CAAC,QAAQ,kBAAkB,EAAE,SAAS,KAAgB,EAAE,IACvD,kBAAC,GAAD;QAAM,MAAM;kBAAe;OAAY,CAAA,IAEvC;OACC;MACC;;IACH,CAAA,CACF;;GACL,kBAAC,OAAD;IACE,WAAW,EACT,2BACA,KAAgB,4BAA4B,GAC9C;cAJF,CAME,kBAAC,KAAD,EAAA,UAAA;KAAG;KAAE;KAAY;IAAI,EAAA,CAAA,GACpB,CAAC,QAAQ,kBAAkB,EAAE,SAAS,KAAgB,EAAE,IAAI,OAC3D,kBAAC,GAAD;KACE,OAAM;KACN,SAAQ;KACR,MAAM;KACN,IAAI;MACF,UAAU;MACV,UAAU;MACV,WAAW;MACX,aAAa;MACb,OAAO;KACT;eAEC;IACU,CAAA,CAEZ;;EACF;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardDeck.Mobile.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Mobile.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport ExpandableContent from '../home_page/ExpandableContent'\n\nexport default function CardDeckMobile({\n description,\n title,\n titleIcon,\n ctaButtonText,\n ctaButtonURL,\n cardDeckType,\n}: CardDeckCardProps) {\n const titleElement = (\n <div className=\"CardDeck__Mobile__Header\">\n <span className=\"CardDeck__Mobile__Header__icon\">{titleIcon}</span>\n <span className=\"CardDeck__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"CardDeck__Mobile__Content\">\n <p>{description}</p>\n {cardDeckType === 'b2ai' ? (\n <Link href={ctaButtonURL} underline=\"none\">\n {ctaButtonText}\n </Link>\n ) : (\n <LargeButton\n color=\"secondary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n width: '170px',\n marginLeft: 0,\n fontSize: '14px',\n boxShadow: 'none',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,gBACA,UACA,cACA,kBACA,iBACA,mBACoB;
|
|
1
|
+
{"version":3,"file":"CardDeck.Mobile.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.Mobile.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport LargeButton from '@/components/styled/LargeButton'\nimport { Link } from '@mui/material'\nimport ExpandableContent from '../home_page/ExpandableContent'\n\nexport default function CardDeckMobile({\n description,\n title,\n titleIcon,\n ctaButtonText,\n ctaButtonURL,\n cardDeckType,\n}: CardDeckCardProps) {\n const titleElement = (\n <div className=\"CardDeck__Mobile__Header\">\n <span className=\"CardDeck__Mobile__Header__icon\">{titleIcon}</span>\n <span className=\"CardDeck__Mobile__Header__Title\"> {title} </span>\n </div>\n )\n const content = (\n <div className=\"CardDeck__Mobile__Content\">\n <p>{description}</p>\n {cardDeckType === 'b2ai' ? (\n <Link href={ctaButtonURL} underline=\"none\">\n {ctaButtonText}\n </Link>\n ) : (\n <LargeButton\n color=\"secondary\"\n variant=\"outlined\" // Update variant based on cardDeckType\n href={ctaButtonURL}\n sx={{\n width: '170px',\n marginLeft: 0,\n fontSize: '14px',\n boxShadow: 'none',\n color: 'primary.main',\n }}\n >\n {ctaButtonText}\n </LargeButton>\n )}\n </div>\n )\n return <ExpandableContent title={titleElement} content={content} />\n}\n"],"mappings":";;;;;AAKA,SAAwB,EAAe,EACrC,gBACA,UACA,cACA,kBACA,iBACA,mBACoB;CAgCpB,OAAO,kBAAC,GAAD;EAAmB,OA9BxB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAkC;GAAgB,CAAA,GAClE,kBAAC,QAAD;IAAM,WAAU;cAAhB;KAAkD;KAAE;KAAM;IAAO;KAC9D;GA2B0B;EAAuB,SAxBtD,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD,EAAA,UAAI,EAAe,CAAA,GAClB,MAAiB,SAChB,kBAAC,GAAD;IAAM,MAAM;IAAc,WAAU;cACjC;GACG,CAAA,IAEN,kBAAC,GAAD;IACE,OAAM;IACN,SAAQ;IACR,MAAM;IACN,IAAI;KACF,OAAO;KACP,YAAY;KACZ,UAAU;KACV,WAAW;KACX,OAAO;IACT;cAEC;GACU,CAAA,CAEZ;GAEiD;CAAU,CAAA;AACpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardDeck.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport classNames from 'classnames'\nimport CardDeckDesktop from './CardDeck.Desktop'\nimport CardDeckMobile from './CardDeck.Mobile'\n\nexport type CardDeckProps = {\n cards: CardDeckCardProps[]\n cardDeckType?:\n | 'cckp'\n | 'b2ai'\n | 'b2ai-detail-card' /* The type of card deck (cckp or b2ai)*/\n}\n\n/**\n * UI for a 'deck' of cards.\n */\nexport function CardDeck(props: CardDeckProps) {\n const { cards, cardDeckType } = props\n const showDesktop = useShowDesktop()\n\n const className = `CardDeck${showDesktop ? '__Desktop' : ''}`\n\n return (\n <div\n className={classNames(\n className,\n cardDeckType && `${className}--${cardDeckType}`,\n )}\n >\n {cards.map((card, i) => {\n return showDesktop ? (\n <CardDeckDesktop key={i} cardDeckType={cardDeckType} {...card} />\n ) : (\n <CardDeckMobile cardDeckType={cardDeckType} {...card} />\n )\n })}\n </div>\n )\n}\n\nexport default CardDeck\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EAAE,UAAO,oBAAiB,GAC1B,IAAc,
|
|
1
|
+
{"version":3,"file":"CardDeck.js","names":[],"sources":["../../../src/components/CardDeck/CardDeck.tsx"],"sourcesContent":["import { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport useShowDesktop from '@/utils/hooks/useShowDesktop'\nimport classNames from 'classnames'\nimport CardDeckDesktop from './CardDeck.Desktop'\nimport CardDeckMobile from './CardDeck.Mobile'\n\nexport type CardDeckProps = {\n cards: CardDeckCardProps[]\n cardDeckType?:\n | 'cckp'\n | 'b2ai'\n | 'b2ai-detail-card' /* The type of card deck (cckp or b2ai)*/\n}\n\n/**\n * UI for a 'deck' of cards.\n */\nexport function CardDeck(props: CardDeckProps) {\n const { cards, cardDeckType } = props\n const showDesktop = useShowDesktop()\n\n const className = `CardDeck${showDesktop ? '__Desktop' : ''}`\n\n return (\n <div\n className={classNames(\n className,\n cardDeckType && `${className}--${cardDeckType}`,\n )}\n >\n {cards.map((card, i) => {\n return showDesktop ? (\n <CardDeckDesktop key={i} cardDeckType={cardDeckType} {...card} />\n ) : (\n <CardDeckMobile cardDeckType={cardDeckType} {...card} />\n )\n })}\n </div>\n )\n}\n\nexport default CardDeck\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAS,GAAsB;CAC7C,IAAM,EAAE,UAAO,oBAAiB,GAC1B,IAAc,EAAe,GAE7B,IAAY,WAAW,IAAc,cAAc;CAEzD,OACE,kBAAC,OAAD;EACE,WAAW,EACT,GACA,KAAgB,GAAG,EAAU,IAAI,GACnC;YAEC,EAAM,KAAK,GAAM,MACT,IACL,kBAAC,GAAD;GAAuC;GAAc,GAAI;EAAO,GAA1C,CAA0C,IAEhE,kBAAC,GAAD;GAA8B;GAAc,GAAI;EAAO,CAAA,CAE1D;CACE,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableQueryCardDeck.js","names":[],"sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EACJ,aACA,oBACA,0BACA,4BACA,2BACA,kCACA,oCACA,iBACA,kBACE,GACE,IAAS,EAAa,
|
|
1
|
+
{"version":3,"file":"TableQueryCardDeck.js","names":[],"sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EACJ,aACA,oBACA,0BACA,4BACA,2BACA,kCACA,oCACA,iBACA,kBACE,GACE,IAAS,EAAa,CAAQ,GAW9B,EAAE,MAAM,MACZ,EAAwB;EAVxB,cAAc;EACd;EACA,UACE;EAEF,OAAO,EACL,KAAK,iBAAiB,IACxB;CAGwB,CAAkB,GAEtC,IAAmB,EAAc,GAAiB,CAAiB,GACnE,IAAyB,EAC7B,GACA,CACF,GACM,IAA2B,EAC/B,GACA,CACF,GACM,IAA0B,EAC9B,GACA,CACF,GACM,IAAuB,EAC3B,GACA,CACF,GACM,IAAyB,EAC7B,GACA,CACF,GAEM,IAAQ,GAAmB,YAAa,aAAa,KAAK,KAC7D,MAA0B;EACzB,IAAM,IAAS,EAAG;EAClB,AAAI,EAAO,MAAK,MAAS,MAAU,IAAI,KAErC,QAAQ,KAAK,8CAA8C;EAG7D,IAAM,IAAQ,EAAO,IACf,IAAc,EAAO,IACrB,IAAgB,EAAO,IACvB,IAAe,EAAO,MAA4B,IAClD,IAA6B,EAAO,MAAyB,IAC7D,IAA+B,EAAO,MAA2B,IAEjE,IAAiC,CAAC;EACxC,GAAmB,YAAa,aAAa,QAAQ,SAClD,GAAQ,MAAa;GACpB,EAAO,EAAO,QAAQ;EACxB,CACF;EACA,IAAM,EAAE,YAAS,EAAc,GAAc,GAAY,GAAQ,CAAM,GAEjE,IAAiC,EACrC,EAAO,MACP,GACA,MAAM,EAAG,OACX,GAEM,IAAY,IAChB,kBAAC,GAAD,EACE,uBAAuB,EACxB,CAAA,IACC,KAAA,GAEE,IAAmC,EACvC,EAAO,MACP,GACA,MAAM,EAAG,OACX;EAQA,OAAO;GACL;GACA;GACA;GACA,cAAc;GACd;GACA,aAZkB,IAClB,kBAAC,GAAD,EACE,uBAAuB,EACxB,CAAA,IACC,KAAA;GASF;EACF;CACF,CACF;CAEA,OAAO,kBAAC,GAAD;EAAU,OAAO,KAAS,CAAC;EAAiB;CAAe,CAAA;AACpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardGridWithLinks.js","names":[],"sources":["../../../src/components/CardGridWithLinks/CardGridWithLinks.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Typography, Link, Card } from '@mui/material'\nimport { Link as RouterLink } from 'react-router'\n\ntype CardGridWithLinksConfig = {\n title: string\n description: string\n link: string\n}\n\nexport type CardGridWithLinksProps = {\n linkText: string\n cards: CardGridWithLinksConfig[]\n}\n\nconst CardGridWithLinks = ({\n cards,\n linkText,\n}: CardGridWithLinksProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n width: '100%',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n {cards.map((card, index) => {\n return (\n <Card\n key={index}\n sx={{\n padding: '24px',\n flex: '1',\n }}\n >\n <Stack sx={{ height: '100%', gap: 2 }}>\n <Typography variant={'headline3'} sx={{ lineHeight: '20px' }}>\n {card.title}\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ fontSize: '14px', flex: '1', lineHeight: 'normal' }}\n >\n {card.description}\n </Typography>\n <Typography\n sx={{\n fontSize: '14px',\n marginTop: 'auto',\n }}\n >\n <Link\n component={RouterLink}\n to={card.link}\n sx={{ textDecoration: 'none' }}\n >\n {linkText}\n </Link>\n </Typography>\n </Stack>\n </Card>\n )\n })}\n </Box>\n )\n}\n\nexport default CardGridWithLinks\n"],"mappings":";;;;;AAeA,IAAM,KAAqB,EACzB,UACA,kBAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,KAAK;EACL,OAAO;EACP,eAAe;GAAE,IAAI;GAAU,IAAI;
|
|
1
|
+
{"version":3,"file":"CardGridWithLinks.js","names":[],"sources":["../../../src/components/CardGridWithLinks/CardGridWithLinks.tsx"],"sourcesContent":["import React from 'react'\nimport { Box, Stack, Typography, Link, Card } from '@mui/material'\nimport { Link as RouterLink } from 'react-router'\n\ntype CardGridWithLinksConfig = {\n title: string\n description: string\n link: string\n}\n\nexport type CardGridWithLinksProps = {\n linkText: string\n cards: CardGridWithLinksConfig[]\n}\n\nconst CardGridWithLinks = ({\n cards,\n linkText,\n}: CardGridWithLinksProps): React.ReactNode => {\n return (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n width: '100%',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n {cards.map((card, index) => {\n return (\n <Card\n key={index}\n sx={{\n padding: '24px',\n flex: '1',\n }}\n >\n <Stack sx={{ height: '100%', gap: 2 }}>\n <Typography variant={'headline3'} sx={{ lineHeight: '20px' }}>\n {card.title}\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ fontSize: '14px', flex: '1', lineHeight: 'normal' }}\n >\n {card.description}\n </Typography>\n <Typography\n sx={{\n fontSize: '14px',\n marginTop: 'auto',\n }}\n >\n <Link\n component={RouterLink}\n to={card.link}\n sx={{ textDecoration: 'none' }}\n >\n {linkText}\n </Link>\n </Typography>\n </Stack>\n </Card>\n )\n })}\n </Box>\n )\n}\n\nexport default CardGridWithLinks\n"],"mappings":";;;;;AAeA,IAAM,KAAqB,EACzB,UACA,kBAGE,kBAAC,GAAD;CACE,IAAI;EACF,SAAS;EACT,KAAK;EACL,OAAO;EACP,eAAe;GAAE,IAAI;GAAU,IAAI;EAAM;CAC3C;WAEC,EAAM,KAAK,GAAM,MAEd,kBAAC,GAAD;EAEE,IAAI;GACF,SAAS;GACT,MAAM;EACR;YAEA,kBAAC,GAAD;GAAO,IAAI;IAAE,QAAQ;IAAQ,KAAK;GAAE;aAApC;IACE,kBAAC,GAAD;KAAY,SAAS;KAAa,IAAI,EAAE,YAAY,OAAO;eACxD,EAAK;IACI,CAAA;IACZ,kBAAC,GAAD;KACE,SAAS;KACT,IAAI;MAAE,UAAU;MAAQ,MAAM;MAAK,YAAY;KAAS;eAEvD,EAAK;IACI,CAAA;IACZ,kBAAC,GAAD;KACE,IAAI;MACF,UAAU;MACV,WAAW;KACb;eAEA,kBAAC,GAAD;MACE,WAAW;MACX,IAAI,EAAK;MACT,IAAI,EAAE,gBAAgB,OAAO;gBAE5B;KACG,CAAA;IACI,CAAA;GACP;;CACH,GA/BC,CA+BD,CAET;AACE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificationAnswer.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationAnswer.tsx"],"sourcesContent":["import {\n MultichoiceAnswer,\n MultichoiceQuestion,\n} from '@sage-bionetworks/synapse-types'\nimport { Typography } from '@mui/material'\nimport { Box } from '@mui/material'\nimport { MouseEventHandler } from 'react'\n\nexport type CertificationAnswerProps = {\n question: MultichoiceQuestion\n answer: MultichoiceAnswer\n onClick?: MouseEventHandler<HTMLInputElement>\n checked?: boolean\n disabled?: boolean\n}\n\nexport default function CertificationAnswer(props: CertificationAnswerProps) {\n const { question, answer, onClick, checked, disabled } = props\n return (\n <Box sx={{ marginBottom: '5px' }}>\n <input\n id={`${question.questionIndex}-${answer.answerIndex}`}\n name={`${question.questionIndex}`}\n type={question.exclusive ? 'radio' : 'checkbox'}\n value={answer.answerIndex}\n onClick={onClick}\n checked={checked}\n disabled={disabled}\n />\n <Typography\n variant={'body1'}\n component={'label'}\n sx={{ lineHeight: '18px' }}\n htmlFor={`${question.questionIndex}-${answer.answerIndex}`}\n >\n {answer.prompt}\n </Typography>\n </Box>\n )\n}\n"],"mappings":";;;AAgBA,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,aAAU,WAAQ,YAAS,YAAS,gBAAa;
|
|
1
|
+
{"version":3,"file":"CertificationAnswer.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationAnswer.tsx"],"sourcesContent":["import {\n MultichoiceAnswer,\n MultichoiceQuestion,\n} from '@sage-bionetworks/synapse-types'\nimport { Typography } from '@mui/material'\nimport { Box } from '@mui/material'\nimport { MouseEventHandler } from 'react'\n\nexport type CertificationAnswerProps = {\n question: MultichoiceQuestion\n answer: MultichoiceAnswer\n onClick?: MouseEventHandler<HTMLInputElement>\n checked?: boolean\n disabled?: boolean\n}\n\nexport default function CertificationAnswer(props: CertificationAnswerProps) {\n const { question, answer, onClick, checked, disabled } = props\n return (\n <Box sx={{ marginBottom: '5px' }}>\n <input\n id={`${question.questionIndex}-${answer.answerIndex}`}\n name={`${question.questionIndex}`}\n type={question.exclusive ? 'radio' : 'checkbox'}\n value={answer.answerIndex}\n onClick={onClick}\n checked={checked}\n disabled={disabled}\n />\n <Typography\n variant={'body1'}\n component={'label'}\n sx={{ lineHeight: '18px' }}\n htmlFor={`${question.questionIndex}-${answer.answerIndex}`}\n >\n {answer.prompt}\n </Typography>\n </Box>\n )\n}\n"],"mappings":";;;AAgBA,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,aAAU,WAAQ,YAAS,YAAS,gBAAa;CACzD,OACE,kBAAC,GAAD;EAAK,IAAI,EAAE,cAAc,MAAM;YAA/B,CACE,kBAAC,SAAD;GACE,IAAI,GAAG,EAAS,cAAc,GAAG,EAAO;GACxC,MAAM,GAAG,EAAS;GAClB,MAAM,EAAS,YAAY,UAAU;GACrC,OAAO,EAAO;GACL;GACA;GACC;EACX,CAAA,GACD,kBAAC,GAAD;GACE,SAAS;GACT,WAAW;GACX,IAAI,EAAE,YAAY,OAAO;GACzB,SAAS,GAAG,EAAS,cAAc,GAAG,EAAO;aAE5C,EAAO;EACE,CAAA,CACT;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificationQuiz.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationQuiz.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport {\n useGetPassingRecord,\n usePostCertifiedUserTestResponse,\n} from '@/synapse-queries/user/useCertificationQuiz'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { USER_BUNDLE_MASK_IS_CERTIFIED } from '@/utils/SynapseConstants'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n MultichoiceQuestion,\n MultichoiceResponse,\n QuestionResponse,\n Quiz,\n QuizResponse,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useEffect, useRef, useState } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { MarkdownPopover } from '../Markdown/MarkdownPopover'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport CertificationAnswer from './CertificationAnswer'\n\nfunction CertificationQuiz() {\n const { accessToken, isAuthenticated } = useSynapseContext()\n const handleError = useErrorHandler()\n const [quiz, setQuiz] = useState<Quiz | undefined>()\n const [isRetakingQuiz, setIsRetakingQuiz] = useState(false)\n const [questionResponse, setQuestionResponse] = useState<QuestionResponse[]>(\n [],\n )\n const { data: currentUserBundle } = useGetCurrentUserBundle(\n USER_BUNDLE_MASK_IS_CERTIFIED,\n )\n const isCertified = currentUserBundle?.isCertified\n const userId = currentUserBundle?.userId\n const { data: passingRecord, isLoading: isLoadingPassingRecord } =\n useGetPassingRecord(userId, {\n enabled: userId !== undefined,\n })\n const formRef = useRef<HTMLFormElement>(null)\n const GETTING_STARTED_URL =\n 'https://help.synapse.org/docs/Getting-Started.2055471150.html'\n\n const getQuiz = async () => {\n try {\n setQuiz(await SynapseClient.getCertifyQuiz(accessToken))\n } catch (err: any) {\n handleError(err)\n }\n }\n\n const { mutate: postCertifiedUserTestResponse, isPending: isSubmitting } =\n usePostCertifiedUserTestResponse({\n onSuccess: () => {\n setIsRetakingQuiz(false)\n window.scrollTo(0, 0)\n },\n throwOnError: true,\n })\n // user is taking the quiz if user is not certified, and either there is no passing record or if the user clicked to retake the quiz\n const isTakingQuiz = !isCertified && (passingRecord == null || isRetakingQuiz)\n useEffect(() => {\n if (isAuthenticated) {\n getQuiz()\n }\n }, [isAuthenticated])\n\n if (isLoadingPassingRecord || quiz == undefined) {\n return <CertificationQuizSkeleton />\n }\n\n const onUpdateAnswer = (questionIndex: number, answer: number) => {\n const newState = [\n ...questionResponse.filter(obj => obj.questionIndex !== questionIndex),\n {\n questionIndex,\n answerIndex: [answer],\n concreteType: MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n },\n ]\n setQuestionResponse(newState)\n }\n\n const handleRetakeQuiz = () => {\n formRef.current?.reset()\n setIsRetakingQuiz(true)\n setQuestionResponse([])\n getQuiz()\n }\n\n const handleSubmit = () => {\n try {\n if (quiz && quiz.questions.length === questionResponse.length) {\n const quizResponse: QuizResponse = {\n quizId: quiz.id,\n questionResponses: questionResponse,\n }\n postCertifiedUserTestResponse(quizResponse)\n } else {\n displayToast(\n 'Please answer all of the questions and try again.',\n 'warning',\n )\n }\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const actionButtonConfig = (helpUrl: string) =>\n helpUrl\n ? {\n content: <>More info</>,\n closePopoverOnClick: true,\n onClick: () => window.open(helpUrl, '_blank'),\n color: 'primary' as ButtonProps['color'],\n }\n : undefined\n return (\n <div>\n {passingRecord && !isTakingQuiz && (\n <>\n {(passingRecord.revokedOn || passingRecord.passed) &&\n !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && (\n <AlertTitle>Certification Revoked</AlertTitle>\n )}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Your certification was revoked. To become certified, you must{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {!passingRecord.passed && !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && <AlertTitle>Quiz Failed</AlertTitle>}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Please review the results from the previous attempt, and{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {passingRecord.passed && isCertified && (\n <Alert severity=\"success\">\n <AlertTitle>Quiz Passed</AlertTitle>\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n {`You passed the Synapse Certification Quiz on ${formatDate(\n dayjs(passingRecord.passedOn),\n )}`}\n </Typography>\n </Alert>\n )}\n <Typography\n variant=\"sectionTitle\"\n sx={{ marginTop: '20px', marginBottom: '20px' }}\n >\n Score: {passingRecord.score} / {passingRecord.corrections?.length}\n </Typography>\n </>\n )}\n <div className=\"CertificationQuiz__container\">\n {quiz && isTakingQuiz && (\n <>\n <Button\n onClick={() => window.open(GETTING_STARTED_URL, '_blank')}\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px', color: 'white' }}\n />\n <>Help</>\n </Box>\n </Button>\n <Typography variant=\"headline1\" sx={{ marginBottom: '25px' }}>\n Certified User Quiz\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Certified users are authorized to use the full Synapse\n functionality. In order to ensure that users who create content in\n the system and/or wish to interact more freely within Synapse are\n familiar with the governance process and Synapse operating\n procedures when dealing with possibly sensitive data, users must\n pass a short quiz (approximately 15 minutes) to become Synapse\n certified.\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Please answer the following questions to become certified.\n </Typography>\n <form ref={formRef} onSubmit={e => e.preventDefault()}>\n <ol>\n {quiz?.questions.map(question => {\n const isHelp = question.helpText || question.docLink\n return (\n <li\n key={question.questionIndex}\n role={question.exclusive ? 'radiogroup' : undefined}\n >\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n onClick={e =>\n onUpdateAnswer(\n question.questionIndex,\n Number(e.currentTarget.value),\n )\n }\n />\n ))}\n {isHelp && (\n <MarkdownPopover\n contentProps={{ markdown: question.helpText }}\n placement=\"right\"\n sx={{\n table: {\n textAlign: 'center',\n th: {\n padding: '5px',\n },\n },\n }}\n actionButton={actionButtonConfig(question.docLink)}\n showCloseButton={true}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n marginTop: '10px',\n }}\n >\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px' }}\n />\n <Link>Need help answering this question?</Link>\n </Box>\n </MarkdownPopover>\n )}\n </li>\n )\n })}\n </ol>\n </form>\n <Button\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </>\n )}\n\n {!isTakingQuiz && passingRecord?.corrections && (\n <ol>\n {passingRecord.corrections.map(responseCorrectness => {\n const question =\n responseCorrectness.question as MultichoiceQuestion\n const response =\n responseCorrectness.response as MultichoiceResponse\n return (\n <li key={question.questionIndex}>\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n className={\n responseCorrectness.isCorrect ? '' : 'incorrectQuestion'\n }\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n disabled={true}\n checked={response.answerIndex.includes(\n choice.answerIndex,\n )}\n />\n ))}\n </li>\n )\n })}\n </ol>\n )}\n </div>\n </div>\n )\n}\n\nfunction CertificationQuizSkeleton() {\n const questions: ReactNode[] = []\n for (let i = 0; i < 20; i++) {\n questions.push(\n <li key={i}>\n <SkeletonTable numCols={1} numRows={5} />\n </li>,\n )\n }\n return (\n <>\n <div>\n <Skeleton height=\"80px\" width=\"460px\" />\n </div>\n <SkeletonParagraph numRows={5} />\n <div className=\"CertificationQuiz__container\">\n <ol style={{ marginTop: '20px' }}>{questions}</ol>\n </div>\n </>\n )\n}\n\nexport default CertificationQuiz\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CertificationQuiz.js","names":[],"sources":["../../../src/components/CertificationQuiz/CertificationQuiz.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport {\n useGetPassingRecord,\n usePostCertifiedUserTestResponse,\n} from '@/synapse-queries/user/useCertificationQuiz'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { USER_BUNDLE_MASK_IS_CERTIFIED } from '@/utils/SynapseConstants'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Link,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n MultichoiceQuestion,\n MultichoiceResponse,\n QuestionResponse,\n Quiz,\n QuizResponse,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useEffect, useRef, useState } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { MarkdownPopover } from '../Markdown/MarkdownPopover'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport CertificationAnswer from './CertificationAnswer'\n\nfunction CertificationQuiz() {\n const { accessToken, isAuthenticated } = useSynapseContext()\n const handleError = useErrorHandler()\n const [quiz, setQuiz] = useState<Quiz | undefined>()\n const [isRetakingQuiz, setIsRetakingQuiz] = useState(false)\n const [questionResponse, setQuestionResponse] = useState<QuestionResponse[]>(\n [],\n )\n const { data: currentUserBundle } = useGetCurrentUserBundle(\n USER_BUNDLE_MASK_IS_CERTIFIED,\n )\n const isCertified = currentUserBundle?.isCertified\n const userId = currentUserBundle?.userId\n const { data: passingRecord, isLoading: isLoadingPassingRecord } =\n useGetPassingRecord(userId, {\n enabled: userId !== undefined,\n })\n const formRef = useRef<HTMLFormElement>(null)\n const GETTING_STARTED_URL =\n 'https://help.synapse.org/docs/Getting-Started.2055471150.html'\n\n const getQuiz = async () => {\n try {\n setQuiz(await SynapseClient.getCertifyQuiz(accessToken))\n } catch (err: any) {\n handleError(err)\n }\n }\n\n const { mutate: postCertifiedUserTestResponse, isPending: isSubmitting } =\n usePostCertifiedUserTestResponse({\n onSuccess: () => {\n setIsRetakingQuiz(false)\n window.scrollTo(0, 0)\n },\n throwOnError: true,\n })\n // user is taking the quiz if user is not certified, and either there is no passing record or if the user clicked to retake the quiz\n const isTakingQuiz = !isCertified && (passingRecord == null || isRetakingQuiz)\n useEffect(() => {\n if (isAuthenticated) {\n getQuiz()\n }\n }, [isAuthenticated])\n\n if (isLoadingPassingRecord || quiz == undefined) {\n return <CertificationQuizSkeleton />\n }\n\n const onUpdateAnswer = (questionIndex: number, answer: number) => {\n const newState = [\n ...questionResponse.filter(obj => obj.questionIndex !== questionIndex),\n {\n questionIndex,\n answerIndex: [answer],\n concreteType: MULTICHOICE_RESPONSE_CONCRETE_TYPE_VALUE,\n },\n ]\n setQuestionResponse(newState)\n }\n\n const handleRetakeQuiz = () => {\n formRef.current?.reset()\n setIsRetakingQuiz(true)\n setQuestionResponse([])\n getQuiz()\n }\n\n const handleSubmit = () => {\n try {\n if (quiz && quiz.questions.length === questionResponse.length) {\n const quizResponse: QuizResponse = {\n quizId: quiz.id,\n questionResponses: questionResponse,\n }\n postCertifiedUserTestResponse(quizResponse)\n } else {\n displayToast(\n 'Please answer all of the questions and try again.',\n 'warning',\n )\n }\n } catch (err: any) {\n displayToast(err.reason as string, 'danger')\n }\n }\n\n const actionButtonConfig = (helpUrl: string) =>\n helpUrl\n ? {\n content: <>More info</>,\n closePopoverOnClick: true,\n onClick: () => window.open(helpUrl, '_blank'),\n color: 'primary' as ButtonProps['color'],\n }\n : undefined\n return (\n <div>\n {passingRecord && !isTakingQuiz && (\n <>\n {(passingRecord.revokedOn || passingRecord.passed) &&\n !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && (\n <AlertTitle>Certification Revoked</AlertTitle>\n )}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Your certification was revoked. To become certified, you must{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {!passingRecord.passed && !isCertified && (\n <Alert severity=\"error\">\n {!passingRecord.passed && <AlertTitle>Quiz Failed</AlertTitle>}\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n Please review the results from the previous attempt, and{' '}\n <Link\n href=\"#\"\n onClick={e => {\n e.preventDefault()\n handleRetakeQuiz()\n }}\n >\n retake the quiz\n </Link>\n .\n </Typography>\n </Alert>\n )}\n {passingRecord.passed && isCertified && (\n <Alert severity=\"success\">\n <AlertTitle>Quiz Passed</AlertTitle>\n <Typography variant=\"body1\" sx={{ marginTop: '5px' }}>\n {`You passed the Synapse Certification Quiz on ${formatDate(\n dayjs(passingRecord.passedOn),\n )}`}\n </Typography>\n </Alert>\n )}\n <Typography\n variant=\"sectionTitle\"\n sx={{ marginTop: '20px', marginBottom: '20px' }}\n >\n Score: {passingRecord.score} / {passingRecord.corrections?.length}\n </Typography>\n </>\n )}\n <div className=\"CertificationQuiz__container\">\n {quiz && isTakingQuiz && (\n <>\n <Button\n onClick={() => window.open(GETTING_STARTED_URL, '_blank')}\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px', color: 'white' }}\n />\n <>Help</>\n </Box>\n </Button>\n <Typography variant=\"headline1\" sx={{ marginBottom: '25px' }}>\n Certified User Quiz\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Certified users are authorized to use the full Synapse\n functionality. In order to ensure that users who create content in\n the system and/or wish to interact more freely within Synapse are\n familiar with the governance process and Synapse operating\n procedures when dealing with possibly sensitive data, users must\n pass a short quiz (approximately 15 minutes) to become Synapse\n certified.\n </Typography>\n <Typography variant=\"body1\" sx={{ marginBottom: '15px' }}>\n Please answer the following questions to become certified.\n </Typography>\n <form ref={formRef} onSubmit={e => e.preventDefault()}>\n <ol>\n {quiz?.questions.map(question => {\n const isHelp = question.helpText || question.docLink\n return (\n <li\n key={question.questionIndex}\n role={question.exclusive ? 'radiogroup' : undefined}\n >\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n onClick={e =>\n onUpdateAnswer(\n question.questionIndex,\n Number(e.currentTarget.value),\n )\n }\n />\n ))}\n {isHelp && (\n <MarkdownPopover\n contentProps={{ markdown: question.helpText }}\n placement=\"right\"\n sx={{\n table: {\n textAlign: 'center',\n th: {\n padding: '5px',\n },\n },\n }}\n actionButton={actionButtonConfig(question.docLink)}\n showCloseButton={true}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n marginTop: '10px',\n }}\n >\n <HelpOutlineTwoTone\n className=\"HelpButton\"\n style={{ marginRight: '4px' }}\n />\n <Link>Need help answering this question?</Link>\n </Box>\n </MarkdownPopover>\n )}\n </li>\n )\n })}\n </ol>\n </form>\n <Button\n className=\"help-button\"\n color=\"primary\"\n variant=\"contained\"\n size=\"large\"\n disabled={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </>\n )}\n\n {!isTakingQuiz && passingRecord?.corrections && (\n <ol>\n {passingRecord.corrections.map(responseCorrectness => {\n const question =\n responseCorrectness.question as MultichoiceQuestion\n const response =\n responseCorrectness.response as MultichoiceResponse\n return (\n <li key={question.questionIndex}>\n <Typography\n variant={'headline3'}\n dangerouslySetInnerHTML={{ __html: question.prompt }}\n className={\n responseCorrectness.isCorrect ? '' : 'incorrectQuestion'\n }\n sx={{ marginTop: '40px', marginBottom: '10px' }}\n />\n {question.answers.map(choice => (\n <CertificationAnswer\n key={`${question.questionIndex}-${choice.answerIndex}`}\n question={question}\n answer={choice}\n disabled={true}\n checked={response.answerIndex.includes(\n choice.answerIndex,\n )}\n />\n ))}\n </li>\n )\n })}\n </ol>\n )}\n </div>\n </div>\n )\n}\n\nfunction CertificationQuizSkeleton() {\n const questions: ReactNode[] = []\n for (let i = 0; i < 20; i++) {\n questions.push(\n <li key={i}>\n <SkeletonTable numCols={1} numRows={5} />\n </li>,\n )\n }\n return (\n <>\n <div>\n <Skeleton height=\"80px\" width=\"460px\" />\n </div>\n <SkeletonParagraph numRows={5} />\n <div className=\"CertificationQuiz__container\">\n <ol style={{ marginTop: '20px' }}>{questions}</ol>\n </div>\n </>\n )\n}\n\nexport default CertificationQuiz\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeDataDownload.js","names":[],"sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAsB,EACpC,wBAC6B;CAC7B,IAAM,EAAE,2BAAwB,
|
|
1
|
+
{"version":3,"file":"ChallengeDataDownload.js","names":[],"sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAsB,EACpC,wBAC6B;CAC7B,IAAM,EAAE,2BAAwB,EAAkB,GAE5C,EAAE,qBAAkB,oBAAiB,yBACzC,EAAmB,EAAc,GAE7B,EAAE,QAAQ,MAA2B,EAA8B;EACvE,iBAAiB;GACf,EACE,0DACA,WACA,EACE,qBAAqB;IACnB,MAAM;IACN,eAAgB,OAAO,SAAS,OAAO;GACzC,EACF,CACF;EACF;EACA,UAAS,MAAK;GACZ,EACE,iDAAiD,EAAE,UACnD,QACF;EACF;CACF,CAAC,GAEK,IAAe,GAClB,MACQ,EAAiB,IAAI,EAAO,EAAE,GAEvC,CAAC,CAAgB,CACnB,GAEM,IAAa,QAAkB;EAOnC,EANiB,MAAM,KAAK,EAAiB,OAAO,CAAC,EAAE,KAAI,OAClD;GACL,cAAc,EAAU;GACxB,eAAe,EAAU;EAC3B,EAEqB,CAAQ;CACjC,GAAG,CAAC,GAAkB,CAAsB,CAAC;CAqB7C,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACqB;EAtBzB,kBAAkB,EAAqB;EACvC,kBAAkB;EAClB,iBAAiB;EACjB,cAAc,CAAC,EAAW,IAAI;EAC9B,UAAU;EACV,iBAAiB,CAAC,EAAW,IAAI;EACjC;EACA,oBAAoB;EACpB;EACA;EACA,eAAe;GACb,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;GAClB,EAAkB;EACpB;CAQK,CAAA,EACE,CAAA,GACL,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,EACN;YAEA,kBAAC,GAAD;GACE,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAChC,SAAS;GACT,IAAI;IAAE,WAAW;IAAY,QAAQ;GAAO;GAC5C,SAAS;GACT,UAAU,CAAC,EAAiB,QAAQ,EAAE;aACvC;EAEO,CAAA;CACL,CAAA,CACL,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeDetailPage.js","names":[],"sources":["../../../src/components/ChallengeDetailPage/ChallengeDetailPage.tsx"],"sourcesContent":["import {\n useDeleteTeamMembership,\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { useState } from 'react'\nimport ChallengeRegisterButton from '../ChallengeRegisterButton'\nimport ChallengeRequirementsModal from '../ChallengeRequirementsModal/ChallengeRequirementsModal'\nimport ChallengeTeamWizard from '../ChallengeTeamWizard'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDetailPageProps = {\n projectId: string\n}\n\nexport function ChallengeDetailPage({ projectId }: ChallengeDetailPageProps) {\n const { isAuthenticated } = useSynapseContext()\n const [showSubmissionTeamWizard, setShowSubmissionTeamWizard] =\n useState<boolean>(false)\n const [showRegistrationModal, setShowRegistrationModal] =\n useState<boolean>(false)\n const [showLeaveConfirm, setShowLeaveConfirm] = useState<boolean>(false)\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const toggleShowWizard = (b: boolean) => {\n setShowSubmissionTeamWizard(b)\n }\n const onJoinClick = () => {\n setShowRegistrationModal(true)\n }\n const onLeaveClick = () => {\n setShowLeaveConfirm(true)\n }\n\n const { data: challenge } = useGetEntityChallenge(projectId)\n\n // Determine whether the given user belongs to any submission teams\n // If so, we should not show them the ChallengeTeamWizard once they have registered.\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id!,\n 1,\n 0,\n {\n enabled: Boolean(isAuthenticated && challenge),\n },\n )\n const isMemberOfSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n\n const { mutate: leaveChallenge } = useDeleteTeamMembership({\n onSuccess: () => {\n displayToast('You are no longer registered for this challenge', 'info')\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const doLeaveChallenge = () => {\n if (isAuthenticated && challenge && userProfile) {\n /**\n * What does it mean to leave a challenge?\n * Simply leaving the participant team may not be enough...\n * the user may also belong to one or more challenge submission team(s).\n * Should they be removed from those?\n * What if the team belongs to more than one challenge?\n * Should the team be removed from the challenge instead?\n * Only a team admin can request this, however.\n */\n\n leaveChallenge({\n teamId: challenge.participantTeamId,\n userId: userProfile.ownerId,\n })\n }\n }\n\n const handleRequirementsHide = () => {\n setShowRegistrationModal(false)\n }\n const handleRegistrationComplete = () => {\n setShowRegistrationModal(false)\n // Only guide the user to join/create a submission team if they are not already part of one.\n setShowSubmissionTeamWizard(!isMemberOfSubmissionTeam)\n }\n\n return (\n <>\n <ChallengeRegisterButton\n projectId={projectId}\n onJoinClick={onJoinClick}\n onLeaveClick={onLeaveClick}\n />\n <ChallengeRequirementsModal\n open={showRegistrationModal}\n projectId={projectId}\n onRegisterComplete={handleRegistrationComplete}\n onCancel={handleRequirementsHide}\n />\n <ChallengeTeamWizard\n projectId={projectId}\n onClose={() => {\n toggleShowWizard(false)\n }}\n isShowingModal={showSubmissionTeamWizard}\n />\n <ConfirmationDialog\n open={showLeaveConfirm}\n title={'Leave this Challenge?'}\n content={'Are you sure you want to leave this Challenge?'}\n onCancel={() => setShowLeaveConfirm(false)}\n onConfirm={() => {\n doLeaveChallenge()\n setShowLeaveConfirm(false)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAoB,EAAE,gBAAuC;CAC3E,IAAM,EAAE,uBAAoB,
|
|
1
|
+
{"version":3,"file":"ChallengeDetailPage.js","names":[],"sources":["../../../src/components/ChallengeDetailPage/ChallengeDetailPage.tsx"],"sourcesContent":["import {\n useDeleteTeamMembership,\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { useState } from 'react'\nimport ChallengeRegisterButton from '../ChallengeRegisterButton'\nimport ChallengeRequirementsModal from '../ChallengeRequirementsModal/ChallengeRequirementsModal'\nimport ChallengeTeamWizard from '../ChallengeTeamWizard'\nimport ConfirmationDialog from '../ConfirmationDialog'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDetailPageProps = {\n projectId: string\n}\n\nexport function ChallengeDetailPage({ projectId }: ChallengeDetailPageProps) {\n const { isAuthenticated } = useSynapseContext()\n const [showSubmissionTeamWizard, setShowSubmissionTeamWizard] =\n useState<boolean>(false)\n const [showRegistrationModal, setShowRegistrationModal] =\n useState<boolean>(false)\n const [showLeaveConfirm, setShowLeaveConfirm] = useState<boolean>(false)\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const toggleShowWizard = (b: boolean) => {\n setShowSubmissionTeamWizard(b)\n }\n const onJoinClick = () => {\n setShowRegistrationModal(true)\n }\n const onLeaveClick = () => {\n setShowLeaveConfirm(true)\n }\n\n const { data: challenge } = useGetEntityChallenge(projectId)\n\n // Determine whether the given user belongs to any submission teams\n // If so, we should not show them the ChallengeTeamWizard once they have registered.\n const { data: userSubmissionTeams } = useGetUserSubmissionTeams(\n challenge?.id!,\n 1,\n 0,\n {\n enabled: Boolean(isAuthenticated && challenge),\n },\n )\n const isMemberOfSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n\n const { mutate: leaveChallenge } = useDeleteTeamMembership({\n onSuccess: () => {\n displayToast('You are no longer registered for this challenge', 'info')\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n\n const doLeaveChallenge = () => {\n if (isAuthenticated && challenge && userProfile) {\n /**\n * What does it mean to leave a challenge?\n * Simply leaving the participant team may not be enough...\n * the user may also belong to one or more challenge submission team(s).\n * Should they be removed from those?\n * What if the team belongs to more than one challenge?\n * Should the team be removed from the challenge instead?\n * Only a team admin can request this, however.\n */\n\n leaveChallenge({\n teamId: challenge.participantTeamId,\n userId: userProfile.ownerId,\n })\n }\n }\n\n const handleRequirementsHide = () => {\n setShowRegistrationModal(false)\n }\n const handleRegistrationComplete = () => {\n setShowRegistrationModal(false)\n // Only guide the user to join/create a submission team if they are not already part of one.\n setShowSubmissionTeamWizard(!isMemberOfSubmissionTeam)\n }\n\n return (\n <>\n <ChallengeRegisterButton\n projectId={projectId}\n onJoinClick={onJoinClick}\n onLeaveClick={onLeaveClick}\n />\n <ChallengeRequirementsModal\n open={showRegistrationModal}\n projectId={projectId}\n onRegisterComplete={handleRegistrationComplete}\n onCancel={handleRequirementsHide}\n />\n <ChallengeTeamWizard\n projectId={projectId}\n onClose={() => {\n toggleShowWizard(false)\n }}\n isShowingModal={showSubmissionTeamWizard}\n />\n <ConfirmationDialog\n open={showLeaveConfirm}\n title={'Leave this Challenge?'}\n content={'Are you sure you want to leave this Challenge?'}\n onCancel={() => setShowLeaveConfirm(false)}\n onConfirm={() => {\n doLeaveChallenge()\n setShowLeaveConfirm(false)\n }}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,SAAgB,EAAoB,EAAE,gBAAuC;CAC3E,IAAM,EAAE,uBAAoB,EAAkB,GACxC,CAAC,GAA0B,KAC/B,EAAkB,EAAK,GACnB,CAAC,GAAuB,KAC5B,EAAkB,EAAK,GACnB,CAAC,GAAkB,KAAuB,EAAkB,EAAK,GACjE,EAAE,MAAM,MAAgB,EAAyB,GAEjD,KAAoB,MAAe;EACvC,EAA4B,CAAC;CAC/B,GACM,UAAoB;EACxB,EAAyB,EAAI;CAC/B,GACM,UAAqB;EACzB,EAAoB,EAAI;CAC1B,GAEM,EAAE,MAAM,MAAc,EAAsB,CAAS,GAIrD,EAAE,MAAM,MAAwB,EACpC,GAAW,IACX,GACA,GACA,EACE,SAAS,GAAQ,KAAmB,GACtC,CACF,GACM,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GAExD,EAAE,QAAQ,MAAmB,EAAwB;EACzD,iBAAiB;GACf,EAAa,mDAAmD,MAAM;EACxE;EACA,UAAS,MAAS;GAChB,EAAa,EAAM,QAAQ,QAAQ;EACrC;CACF,CAAC,GAEK,UAAyB;EAC7B,AAAI,KAAmB,KAAa,KAWlC,EAAe;GACb,QAAQ,EAAU;GAClB,QAAQ,EAAY;EACtB,CAAC;CAEL;CAWA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACa;GACE;GACC;EACf,CAAA;EACD,kBAAC,GAAD;GACE,MAAM;GACK;GACX,0BAhBmC;IAGvC,AAFA,EAAyB,EAAK,GAE9B,EAA4B,CAAC,CAAwB;GACvD;GAaM,gBApB+B;IACnC,EAAyB,EAAK;GAChC;EAmBK,CAAA;EACD,kBAAC,GAAD;GACa;GACX,eAAe;IACb,EAAiB,EAAK;GACxB;GACA,gBAAgB;EACjB,CAAA;EACD,kBAAC,GAAD;GACE,MAAM;GACN,OAAO;GACP,SAAS;GACT,gBAAgB,EAAoB,EAAK;GACzC,iBAAiB;IAEf,AADA,EAAiB,GACjB,EAAoB,EAAK;GAC3B;EACD,CAAA;CACD,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeRegisterButton.js","names":[],"sources":["../../../src/components/ChallengeRegisterButton/ChallengeRegisterButton.tsx"],"sourcesContent":["import {\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetIsUserMemberOfTeam,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport React from 'react'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport ExitToAppIcon from '@mui/icons-material/ExitToApp'\nimport PendingActionsIcon from '@mui/icons-material/PendingActions'\nimport { Box } from '@mui/material'\nimport { useEffect } from 'react'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\n\nexport interface ChallengeRegisterButtonProps {\n projectId: string\n onError?: (error: SynapseClientError) => void\n onJoinClick?: () => void\n onLeaveClick?: () => void\n}\n\nconst ChallengeRegisterButton = ({\n projectId,\n onError,\n onJoinClick,\n onLeaveClick,\n}: ChallengeRegisterButtonProps): React.ReactNode => {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const {\n data: challenge,\n isLoading: isLoadingChallenge,\n error: getChallengeError,\n } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated,\n })\n\n // Verify that user is a member of the participant team\n const {\n data: teamMembership,\n isLoading: isLoadingTeamMembership,\n error: getTeamMembershipError,\n } = useGetIsUserMemberOfTeam(\n challenge?.participantTeamId!,\n userProfile?.ownerId!,\n {\n enabled: !!challenge && !!userProfile,\n },\n )\n\n const isRegistered = Boolean(teamMembership)\n\n const {\n data: userSubmissionTeams,\n error: getSubmissionTeamsError,\n isLoading: isLoadingSubmissionTeams,\n } = useGetUserSubmissionTeams(challenge?.id!, 20, 0, {\n enabled: !!challenge && isAuthenticated,\n })\n\n const hasSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n const isMemberOfBothParticipantAndSubmissionTeams =\n isRegistered && hasSubmissionTeam\n const isMemberOfParticipantTeamOnly = isRegistered && !hasSubmissionTeam\n\n const error =\n getChallengeError || getTeamMembershipError || getSubmissionTeamsError\n\n useEffect(() => {\n if (error && onError) onError(error)\n }, [error, onError])\n\n const isLoading =\n isLoadingChallenge || isLoadingTeamMembership || isLoadingSubmissionTeams\n\n if (isLoading) {\n return <SpinnerButton showSpinner>Loading...</SpinnerButton>\n }\n\n return (\n <Box>\n {!isMemberOfBothParticipantAndSubmissionTeams &&\n !isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: 'white',\n backgroundColor: '#109488',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: 'white', backgroundColor: '#109488' },\n ':active': { color: 'white', backgroundColor: '#109488' },\n ':visited': { color: 'white', backgroundColor: '#109488' },\n }}\n >\n Register for this Challenge\n </SpinnerButton>\n )}\n {isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n endIcon={<PendingActionsIcon />}\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: '#4A2E1B',\n backgroundColor: '#FFD486',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':active': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':visited': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n }}\n >\n Complete Registration\n </SpinnerButton>\n )}\n {isMemberOfBothParticipantAndSubmissionTeams && (\n <SpinnerButton\n disableElevation={true}\n variant=\"outlined\"\n endIcon={<ExitToAppIcon />}\n onClick={() => (onLeaveClick ? onLeaveClick() : undefined)}\n sx={{\n borderColor: 'white',\n color: 'white',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': {\n color: '#172430',\n borderColor: '#172430',\n },\n }}\n >\n Leave Challenge\n </SpinnerButton>\n )}\n </Box>\n )\n}\n\nexport default ChallengeRegisterButton\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAM,KAA2B,EAC/B,cACA,YACA,gBACA,sBACmD;CACnD,IAAM,EAAE,uBAAoB,
|
|
1
|
+
{"version":3,"file":"ChallengeRegisterButton.js","names":[],"sources":["../../../src/components/ChallengeRegisterButton/ChallengeRegisterButton.tsx"],"sourcesContent":["import {\n useGetCurrentUserProfile,\n useGetEntityChallenge,\n useGetIsUserMemberOfTeam,\n useGetUserSubmissionTeams,\n} from '@/synapse-queries'\nimport React from 'react'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport ExitToAppIcon from '@mui/icons-material/ExitToApp'\nimport PendingActionsIcon from '@mui/icons-material/PendingActions'\nimport { Box } from '@mui/material'\nimport { useEffect } from 'react'\nimport SpinnerButton from '../SpinnerButton/SpinnerButton'\n\nexport interface ChallengeRegisterButtonProps {\n projectId: string\n onError?: (error: SynapseClientError) => void\n onJoinClick?: () => void\n onLeaveClick?: () => void\n}\n\nconst ChallengeRegisterButton = ({\n projectId,\n onError,\n onJoinClick,\n onLeaveClick,\n}: ChallengeRegisterButtonProps): React.ReactNode => {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const {\n data: challenge,\n isLoading: isLoadingChallenge,\n error: getChallengeError,\n } = useGetEntityChallenge(projectId, {\n enabled: isAuthenticated,\n })\n\n // Verify that user is a member of the participant team\n const {\n data: teamMembership,\n isLoading: isLoadingTeamMembership,\n error: getTeamMembershipError,\n } = useGetIsUserMemberOfTeam(\n challenge?.participantTeamId!,\n userProfile?.ownerId!,\n {\n enabled: !!challenge && !!userProfile,\n },\n )\n\n const isRegistered = Boolean(teamMembership)\n\n const {\n data: userSubmissionTeams,\n error: getSubmissionTeamsError,\n isLoading: isLoadingSubmissionTeams,\n } = useGetUserSubmissionTeams(challenge?.id!, 20, 0, {\n enabled: !!challenge && isAuthenticated,\n })\n\n const hasSubmissionTeam =\n userSubmissionTeams && userSubmissionTeams.results.length > 0\n const isMemberOfBothParticipantAndSubmissionTeams =\n isRegistered && hasSubmissionTeam\n const isMemberOfParticipantTeamOnly = isRegistered && !hasSubmissionTeam\n\n const error =\n getChallengeError || getTeamMembershipError || getSubmissionTeamsError\n\n useEffect(() => {\n if (error && onError) onError(error)\n }, [error, onError])\n\n const isLoading =\n isLoadingChallenge || isLoadingTeamMembership || isLoadingSubmissionTeams\n\n if (isLoading) {\n return <SpinnerButton showSpinner>Loading...</SpinnerButton>\n }\n\n return (\n <Box>\n {!isMemberOfBothParticipantAndSubmissionTeams &&\n !isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: 'white',\n backgroundColor: '#109488',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: 'white', backgroundColor: '#109488' },\n ':active': { color: 'white', backgroundColor: '#109488' },\n ':visited': { color: 'white', backgroundColor: '#109488' },\n }}\n >\n Register for this Challenge\n </SpinnerButton>\n )}\n {isMemberOfParticipantTeamOnly && (\n <SpinnerButton\n disableElevation={true}\n variant=\"contained\"\n endIcon={<PendingActionsIcon />}\n onClick={() =>\n isAuthenticated && onJoinClick ? onJoinClick() : undefined\n }\n sx={{\n color: '#4A2E1B',\n backgroundColor: '#FFD486',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':active': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n ':visited': { color: '#4A2E1B', backgroundColor: '#FFD486' },\n }}\n >\n Complete Registration\n </SpinnerButton>\n )}\n {isMemberOfBothParticipantAndSubmissionTeams && (\n <SpinnerButton\n disableElevation={true}\n variant=\"outlined\"\n endIcon={<ExitToAppIcon />}\n onClick={() => (onLeaveClick ? onLeaveClick() : undefined)}\n sx={{\n borderColor: 'white',\n color: 'white',\n fontSize: '1.12em',\n textTransform: 'none',\n padding: '4px 18px',\n fontWeight: 400,\n ':hover': {\n color: '#172430',\n borderColor: '#172430',\n },\n }}\n >\n Leave Challenge\n </SpinnerButton>\n )}\n </Box>\n )\n}\n\nexport default ChallengeRegisterButton\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAM,KAA2B,EAC/B,cACA,YACA,gBACA,sBACmD;CACnD,IAAM,EAAE,uBAAoB,EAAkB,GACxC,EAAE,MAAM,MAAgB,EAAyB,EACrD,SAAS,EACX,CAAC,GAEK,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAsB,GAAW,EACnC,SAAS,EACX,CAAC,GAGK,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF,GAAW,mBACX,GAAa,SACb,EACE,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC,EAC5B,CACF,GAEM,IAAe,EAAQ,GAEvB,EACJ,MAAM,GACN,OAAO,GACP,WAAW,MACT,EAA0B,GAAW,IAAK,IAAI,GAAG,EACnD,SAAS,CAAC,CAAC,KAAa,EAC1B,CAAC,GAEK,IACJ,KAAuB,EAAoB,QAAQ,SAAS,GACxD,IACJ,KAAgB,GACZ,IAAgC,KAAgB,CAAC,GAEjD,IACJ,KAAqB,KAA0B;CAajD,OAXA,QAAgB;EACd,AAAI,KAAS,KAAS,EAAQ,CAAK;CACrC,GAAG,CAAC,GAAO,CAAO,CAAC,GAGjB,KAAsB,KAA2B,IAG1C,kBAAC,GAAD;EAAe,aAAA;YAAY;CAAyB,CAAA,IAI3D,kBAAC,GAAD,EAAA,UAAA;EACG,CAAC,KACA,CAAC,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,eACE,KAAmB,IAAc,EAAY,IAAI,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAS,iBAAiB;IAAU;IACvD,WAAW;KAAE,OAAO;KAAS,iBAAiB;IAAU;IACxD,YAAY;KAAE,OAAO;KAAS,iBAAiB;IAAU;GAC3D;aACD;EAEc,CAAA;EAElB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,CAAqB,CAAA;GAC9B,eACE,KAAmB,IAAc,EAAY,IAAI,KAAA;GAEnD,IAAI;IACF,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KAAE,OAAO;KAAW,iBAAiB;IAAU;IACzD,WAAW;KAAE,OAAO;KAAW,iBAAiB;IAAU;IAC1D,YAAY;KAAE,OAAO;KAAW,iBAAiB;IAAU;GAC7D;aACD;EAEc,CAAA;EAEhB,KACC,kBAAC,GAAD;GACE,kBAAkB;GAClB,SAAQ;GACR,SAAS,kBAAC,GAAD,CAAgB,CAAA;GACzB,eAAgB,IAAe,EAAa,IAAI,KAAA;GAChD,IAAI;IACF,aAAa;IACb,OAAO;IACP,UAAU;IACV,eAAe;IACf,SAAS;IACT,YAAY;IACZ,UAAU;KACR,OAAO;KACP,aAAa;IACf;GACF;aACD;EAEc,CAAA;CAEd,EAAA,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeRequirementsModal.js","names":[],"sources":["../../../src/components/ChallengeRequirementsModal/ChallengeRequirementsModal.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForTeam,\n useGetAccessRequirementStatuses,\n useGetCurrentUserProfile,\n useGetEntity,\n useGetEntityChallenge,\n} from '@/synapse-queries'\nimport {\n useAddMemberToTeam,\n useGetMembershipStatus,\n} from '@/synapse-queries/team/useTeamMembers'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { Alert, Button, Typography } from '@mui/material'\nimport { RestrictableObjectType } from '@sage-bionetworks/synapse-types'\nimport { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AccessRequirementList from '../AccessRequirementList/AccessRequirementList'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\n\nexport type ChallengeRequirementsModalProps = {\n open: boolean\n projectId: string\n onCancel: () => void\n onRegisterComplete: () => void\n}\n\n/**\n * The challenge requirements modal will\n * 1. Display the access requirements that must be accepted to join a participant team. The component will guide the user through meeting the requirements.\n * 2. If the user has accepted the requirements, the user can click 'Register' to join the team\n * If the user has not accepted the requirements, the user cannot register for the challenge.\n */\nexport default function ChallengeRequirementsModal(\n props: ChallengeRequirementsModalProps,\n) {\n const { open, projectId, onRegisterComplete, onCancel } = props\n const { data: project, error: getEntityError } = useGetEntity(projectId)\n\n const { isAuthenticated } = useSynapseContext()\n\n const { data: challenge, error: getChallengeError } =\n useGetEntityChallenge(projectId)\n const { data: userProfile, error: getProfileError } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const participantTeamId = challenge?.participantTeamId\n const userId = userProfile?.ownerId\n\n const { data: teamMembershipStatus, error: getMembershipStatusError } =\n useGetMembershipStatus(participantTeamId!, userId!, {\n enabled: Boolean(participantTeamId && userId),\n })\n\n const {\n mutateAsync: addTeamMember,\n isPending: registrationIsPending,\n error: registrationError,\n } = useAddMemberToTeam()\n\n const {\n data: fetchedRequirementsForTeam,\n isSuccess: hasFetchedRequirements,\n error: getAccessRequirementsError,\n } = useGetAccessRequirementsForTeam(challenge?.participantTeamId!, {\n enabled: Boolean(challenge?.participantTeamId),\n })\n\n const requirementStatusesQueryResults = useGetAccessRequirementStatuses(\n fetchedRequirementsForTeam?.map(ar => String(ar.id)) ?? [],\n )\n\n const meetsAllRequirements =\n hasFetchedRequirements &&\n requirementStatusesQueryResults.every(queryResult => {\n return queryResult.status === 'success' && queryResult.data.isApproved\n })\n\n const registerForChallenge = useCallback(async () => {\n if (participantTeamId && userId && !teamMembershipStatus?.isMember) {\n await addTeamMember({\n teamId: participantTeamId,\n userId,\n })\n }\n onRegisterComplete()\n }, [\n addTeamMember,\n onRegisterComplete,\n participantTeamId,\n teamMembershipStatus?.isMember,\n userId,\n ])\n\n const errors = [\n getEntityError,\n getChallengeError,\n getProfileError,\n getMembershipStatusError,\n getAccessRequirementsError,\n registrationError,\n ].filter((e): e is SynapseClientError => Boolean(e))\n\n // It's possible that the user joined the team, but requirements on the team changed since they became a member\n // They do not need to re-join the team, but they should still be prompted to accept the requirements\n let registerButtonText = 'Next Step'\n if (registrationIsPending) {\n registerButtonText = 'Registering...'\n }\n\n if (!isEmpty(errors)) {\n return (\n <Alert severity=\"error\">\n {errors.map((e, index) => (\n <Typography variant={'body1'} key={index}>\n {e.reason}\n </Typography>\n ))}\n </Alert>\n )\n }\n\n if (!participantTeamId || !open) {\n return <></>\n }\n\n return (\n <AccessRequirementList\n dialogTitle={`Challenge Registration (Step 1 of 2): Terms and Conditions`}\n subjectId={participantTeamId}\n subjectType={RestrictableObjectType.TEAM}\n teamId={challenge?.participantTeamId}\n renderAsModal={true}\n requestObjectName={project?.name}\n onHide={() => {\n onCancel()\n }}\n customDialogActions={\n <>\n <Button variant={'outlined'} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant={'contained'}\n onClick={() => {\n registerForChallenge()\n }}\n startIcon={registrationIsPending ? <SynapseSpinner /> : undefined}\n disabled={!meetsAllRequirements || registrationIsPending}\n >\n {registerButtonText}\n </Button>\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,cAAW,uBAAoB,gBAAa,GACpD,EAAE,MAAM,GAAS,OAAO,MAAmB,EAAa,
|
|
1
|
+
{"version":3,"file":"ChallengeRequirementsModal.js","names":[],"sources":["../../../src/components/ChallengeRequirementsModal/ChallengeRequirementsModal.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForTeam,\n useGetAccessRequirementStatuses,\n useGetCurrentUserProfile,\n useGetEntity,\n useGetEntityChallenge,\n} from '@/synapse-queries'\nimport {\n useAddMemberToTeam,\n useGetMembershipStatus,\n} from '@/synapse-queries/team/useTeamMembers'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport { Alert, Button, Typography } from '@mui/material'\nimport { RestrictableObjectType } from '@sage-bionetworks/synapse-types'\nimport { isEmpty } from 'lodash-es'\nimport { useCallback } from 'react'\nimport AccessRequirementList from '../AccessRequirementList/AccessRequirementList'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\n\nexport type ChallengeRequirementsModalProps = {\n open: boolean\n projectId: string\n onCancel: () => void\n onRegisterComplete: () => void\n}\n\n/**\n * The challenge requirements modal will\n * 1. Display the access requirements that must be accepted to join a participant team. The component will guide the user through meeting the requirements.\n * 2. If the user has accepted the requirements, the user can click 'Register' to join the team\n * If the user has not accepted the requirements, the user cannot register for the challenge.\n */\nexport default function ChallengeRequirementsModal(\n props: ChallengeRequirementsModalProps,\n) {\n const { open, projectId, onRegisterComplete, onCancel } = props\n const { data: project, error: getEntityError } = useGetEntity(projectId)\n\n const { isAuthenticated } = useSynapseContext()\n\n const { data: challenge, error: getChallengeError } =\n useGetEntityChallenge(projectId)\n const { data: userProfile, error: getProfileError } =\n useGetCurrentUserProfile({\n enabled: isAuthenticated,\n })\n\n const participantTeamId = challenge?.participantTeamId\n const userId = userProfile?.ownerId\n\n const { data: teamMembershipStatus, error: getMembershipStatusError } =\n useGetMembershipStatus(participantTeamId!, userId!, {\n enabled: Boolean(participantTeamId && userId),\n })\n\n const {\n mutateAsync: addTeamMember,\n isPending: registrationIsPending,\n error: registrationError,\n } = useAddMemberToTeam()\n\n const {\n data: fetchedRequirementsForTeam,\n isSuccess: hasFetchedRequirements,\n error: getAccessRequirementsError,\n } = useGetAccessRequirementsForTeam(challenge?.participantTeamId!, {\n enabled: Boolean(challenge?.participantTeamId),\n })\n\n const requirementStatusesQueryResults = useGetAccessRequirementStatuses(\n fetchedRequirementsForTeam?.map(ar => String(ar.id)) ?? [],\n )\n\n const meetsAllRequirements =\n hasFetchedRequirements &&\n requirementStatusesQueryResults.every(queryResult => {\n return queryResult.status === 'success' && queryResult.data.isApproved\n })\n\n const registerForChallenge = useCallback(async () => {\n if (participantTeamId && userId && !teamMembershipStatus?.isMember) {\n await addTeamMember({\n teamId: participantTeamId,\n userId,\n })\n }\n onRegisterComplete()\n }, [\n addTeamMember,\n onRegisterComplete,\n participantTeamId,\n teamMembershipStatus?.isMember,\n userId,\n ])\n\n const errors = [\n getEntityError,\n getChallengeError,\n getProfileError,\n getMembershipStatusError,\n getAccessRequirementsError,\n registrationError,\n ].filter((e): e is SynapseClientError => Boolean(e))\n\n // It's possible that the user joined the team, but requirements on the team changed since they became a member\n // They do not need to re-join the team, but they should still be prompted to accept the requirements\n let registerButtonText = 'Next Step'\n if (registrationIsPending) {\n registerButtonText = 'Registering...'\n }\n\n if (!isEmpty(errors)) {\n return (\n <Alert severity=\"error\">\n {errors.map((e, index) => (\n <Typography variant={'body1'} key={index}>\n {e.reason}\n </Typography>\n ))}\n </Alert>\n )\n }\n\n if (!participantTeamId || !open) {\n return <></>\n }\n\n return (\n <AccessRequirementList\n dialogTitle={`Challenge Registration (Step 1 of 2): Terms and Conditions`}\n subjectId={participantTeamId}\n subjectType={RestrictableObjectType.TEAM}\n teamId={challenge?.participantTeamId}\n renderAsModal={true}\n requestObjectName={project?.name}\n onHide={() => {\n onCancel()\n }}\n customDialogActions={\n <>\n <Button variant={'outlined'} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant={'contained'}\n onClick={() => {\n registerForChallenge()\n }}\n startIcon={registrationIsPending ? <SynapseSpinner /> : undefined}\n disabled={!meetsAllRequirements || registrationIsPending}\n >\n {registerButtonText}\n </Button>\n </>\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,SAAM,cAAW,uBAAoB,gBAAa,GACpD,EAAE,MAAM,GAAS,OAAO,MAAmB,EAAa,CAAS,GAEjE,EAAE,uBAAoB,EAAkB,GAExC,EAAE,MAAM,GAAW,OAAO,MAC9B,EAAsB,CAAS,GAC3B,EAAE,MAAM,GAAa,OAAO,MAChC,EAAyB,EACvB,SAAS,EACX,CAAC,GAEG,IAAoB,GAAW,mBAC/B,IAAS,GAAa,SAEtB,EAAE,MAAM,GAAsB,OAAO,MACzC,EAAuB,GAAoB,GAAS,EAClD,SAAS,GAAQ,KAAqB,GACxC,CAAC,GAEG,EACJ,aAAa,GACb,WAAW,GACX,OAAO,MACL,EAAmB,GAEjB,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAgC,GAAW,mBAAoB,EACjE,SAAS,EAAQ,GAAW,kBAC9B,CAAC,GAEK,IAAkC,EACtC,GAA4B,KAAI,MAAM,OAAO,EAAG,EAAE,CAAC,KAAK,CAAC,CAC3D,GAEM,IACJ,KACA,EAAgC,OAAM,MAC7B,EAAY,WAAW,aAAa,EAAY,KAAK,UAC7D,GAEG,IAAuB,EAAY,YAAY;EAOnD,AANI,KAAqB,KAAU,CAAC,GAAsB,YACxD,MAAM,EAAc;GAClB,QAAQ;GACR;EACF,CAAC,GAEH,EAAmB;CACrB,GAAG;EACD;EACA;EACA;EACA,GAAsB;EACtB;CACF,CAAC,GAEK,IAAS;EACb;EACA;EACA;EACA;EACA;EACA;CACF,EAAE,QAAQ,MAA+B,EAAQ,CAAE,GAI/C,IAAqB;CAqBzB,OApBI,MACF,IAAqB,mBAGlB,EAAQ,CAAM,IAYf,CAAC,KAAqB,CAAC,IAClB,kBAAA,GAAA,CAAI,CAAA,IAIX,kBAAC,GAAD;EACE,aAAa;EACb,WAAW;EACX,aAAa,EAAuB;EACpC,QAAQ,GAAW;EACnB,eAAe;EACf,mBAAmB,GAAS;EAC5B,cAAc;GACZ,EAAS;EACX;EACA,qBACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAS;GAAY,SAAS;aAAU;EAExC,CAAA,GACR,kBAAC,GAAD;GACE,SAAS;GACT,eAAe;IACb,EAAqB;GACvB;GACA,WAAW,IAAwB,kBAAC,GAAD,CAAiB,CAAA,IAAI,KAAA;GACxD,UAAU,CAAC,KAAwB;aAElC;EACK,CAAA,CACR,EAAA,CAAA;CAEL,CAAA,IA1CC,kBAAC,GAAD;EAAO,UAAS;YACb,EAAO,KAAK,GAAG,MACd,kBAAC,GAAD;GAAY,SAAS;aAClB,EAAE;EACO,GAFuB,CAEvB,CACb;CACI,CAAA;AAsCb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddExternalRepo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AddExternalRepo.tsx"],"sourcesContent":["import { Alert, Box, TextField, Typography } from '@mui/material'\n\ntype AddExternalRepoProps = {\n repoName: string\n errorMessage?: string\n onRepoNameChange: (value: string) => void\n}\n\nfunction AddExternalRepo({\n errorMessage,\n repoName,\n onRepoNameChange,\n}: AddExternalRepoProps) {\n return (\n <>\n <Typography variant=\"body1\">Repository Name</Typography>\n <TextField\n id=\"repo\"\n name=\"repo\"\n fullWidth\n onChange={e => onRepoNameChange(e.target.value)}\n placeholder=\"ex. index.docker.io:500/library/ubuntu\"\n value={repoName}\n />\n {errorMessage && (\n <Box\n sx={{\n mt: 1,\n }}\n >\n <Alert severity=\"error\">{errorMessage}</Alert>\n </Box>\n )}\n </>\n )\n}\n\nexport default AddExternalRepo\n"],"mappings":";;;AAQA,SAAS,EAAgB,EACvB,iBACA,aACA,uBACuB;
|
|
1
|
+
{"version":3,"file":"AddExternalRepo.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AddExternalRepo.tsx"],"sourcesContent":["import { Alert, Box, TextField, Typography } from '@mui/material'\n\ntype AddExternalRepoProps = {\n repoName: string\n errorMessage?: string\n onRepoNameChange: (value: string) => void\n}\n\nfunction AddExternalRepo({\n errorMessage,\n repoName,\n onRepoNameChange,\n}: AddExternalRepoProps) {\n return (\n <>\n <Typography variant=\"body1\">Repository Name</Typography>\n <TextField\n id=\"repo\"\n name=\"repo\"\n fullWidth\n onChange={e => onRepoNameChange(e.target.value)}\n placeholder=\"ex. index.docker.io:500/library/ubuntu\"\n value={repoName}\n />\n {errorMessage && (\n <Box\n sx={{\n mt: 1,\n }}\n >\n <Alert severity=\"error\">{errorMessage}</Alert>\n </Box>\n )}\n </>\n )\n}\n\nexport default AddExternalRepo\n"],"mappings":";;;AAQA,SAAS,EAAgB,EACvB,iBACA,aACA,uBACuB;CACvB,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAQ;aAAQ;EAA2B,CAAA;EACvD,kBAAC,GAAD;GACE,IAAG;GACH,MAAK;GACL,WAAA;GACA,WAAU,MAAK,EAAiB,EAAE,OAAO,KAAK;GAC9C,aAAY;GACZ,OAAO;EACR,CAAA;EACA,KACC,kBAAC,GAAD;GACE,IAAI,EACF,IAAI,EACN;aAEA,kBAAC,GAAD;IAAO,UAAS;cAAS;GAAoB,CAAA;EAC1C,CAAA;CAEP,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":";;;;;;;;AAuBA,SAAS,EAAiB,GAA8B;CACtD,IAAM,EAAE,SAAM,2BAAwB;
|
|
1
|
+
{"version":3,"file":"AvailableEvaluationQueueList.js","names":[],"sources":["../../../src/components/ChallengeSubmission/AvailableEvaluationQueueList.tsx"],"sourcesContent":["import LightTooltip from '@/components/styled/LightTooltip'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n List,\n ListItem,\n MenuItem,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Evaluation } from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { useEffect, useState } from 'react'\nimport MarkdownSynapse from '../Markdown/MarkdownSynapse'\n\ntype TextWithHelpIconProps = {\n text: string\n tooltipMarkdownText?: string\n}\n\nfunction TextWithHelpIcon(props: TextWithHelpIconProps) {\n const { text, tooltipMarkdownText } = props\n\n return (\n <>\n {text}\n {tooltipMarkdownText && (\n <LightTooltip\n title={\n <Typography\n variant=\"body1\"\n sx={{\n mb: 0,\n }}\n >\n <MarkdownSynapse markdown={tooltipMarkdownText} />\n </Typography>\n }\n >\n <HelpOutlineTwoTone\n sx={{\n ml: 1,\n color: 'grey.600',\n fontSize: '16px',\n }}\n />\n </LightTooltip>\n )}\n </>\n )\n}\n\ntype AvailableEvaluationQueueStaticListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations'\n>\nfunction AvailableEvaluationQueueStaticList(\n props: AvailableEvaluationQueueStaticListProps,\n) {\n const { evaluations } = props\n return (\n <>\n <Typography variant=\"body1\">Available Evaluation Queues:</Typography>\n <List dense={true}>\n {evaluations.map(evaluation => (\n <ListItem key={evaluation.id}>\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </ListItem>\n ))}\n </List>\n </>\n )\n}\n\ntype AvailableEvaluationQueueCollapsableListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'isSelectable'\n>\n\nfunction AvailableEvaluationQueueCollapsableList(\n props: AvailableEvaluationQueueCollapsableListProps,\n) {\n const { evaluations, isSelectable } = props\n const [showList, setShowList] = useState<boolean>(false)\n const nEvaluationsCollapseLimit = isSelectable ? 2 : 8\n const shouldCollapse = evaluations.length >= nEvaluationsCollapseLimit\n\n return (\n <Box\n sx={{\n mt: 2,\n }}\n >\n {shouldCollapse ? (\n <>\n <Button\n variant=\"contained\"\n sx={{ mb: 1 }}\n onClick={() => setShowList(!showList)}\n >\n {`${showList ? 'Hide' : 'Show'} All Available Evaluation Queues`}\n </Button>\n <Collapse in={showList}>\n <AvailableEvaluationQueueStaticList {...props} />\n </Collapse>\n </>\n ) : (\n <>\n <AvailableEvaluationQueueStaticList {...props} />\n </>\n )}\n </Box>\n )\n}\n\ntype AvailableEvaluationQueueAutocompleteListProps = Pick<\n AvailableEvaluationQueueListProps,\n 'evaluations' | 'onChangeSelectedEvaluation'\n>\n\nfunction AvailableEvaluationQueueAutocompleteList(\n props: AvailableEvaluationQueueAutocompleteListProps,\n) {\n const { evaluations, onChangeSelectedEvaluation = noop } = props\n const [value, setValue] = useState<Evaluation | null>(null)\n\n return (\n <Autocomplete\n // Must be set to false for dropdown list to be correctly positioned\n // when component is in a modal opened from a Markdown Widget in SWC\n disablePortal={false}\n value={value}\n onChange={(event, newValue: Evaluation | null) => {\n setValue(newValue)\n onChangeSelectedEvaluation(newValue)\n }}\n options={evaluations}\n getOptionLabel={option => option.name!}\n renderOption={(props, option, state, ownerState) => {\n return (\n <MenuItem {...props}>\n <TextWithHelpIcon\n text={ownerState.getOptionLabel(option)}\n tooltipMarkdownText={option.submissionInstructionsMessage}\n />\n </MenuItem>\n )\n }}\n renderInput={params => (\n <TextField {...params} label=\"Selected Evaluation Queue\" />\n )}\n />\n )\n}\n\nexport type AvailableEvaluationQueueListProps = {\n /* evaluation queues available to the current user */\n evaluations: Evaluation[]\n /* should the user be able to select an evaluation queue */\n isSelectable?: boolean\n /* will be called when the currently selected evaluation queue is changed */\n onChangeSelectedEvaluation?: (evaluation: Evaluation | null) => void\n}\n\nfunction AvailableEvaluationQueueList(\n props: AvailableEvaluationQueueListProps,\n) {\n const {\n isSelectable = true,\n onChangeSelectedEvaluation = noop,\n evaluations,\n } = props\n const nEvaluations = evaluations.length\n\n useEffect(() => {\n if (nEvaluations === 1 && isSelectable)\n onChangeSelectedEvaluation(evaluations[0])\n }, [evaluations, isSelectable, nEvaluations, onChangeSelectedEvaluation])\n\n if (nEvaluations === 0)\n return <Typography variant=\"body1\">No evaluations found</Typography>\n\n if (nEvaluations === 1) {\n const evaluation = evaluations[0]\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <TextWithHelpIcon\n text={evaluation.name!}\n tooltipMarkdownText={evaluation.submissionInstructionsMessage}\n />\n </Box>\n )\n }\n\n return (\n <Box\n // Class name used in SWC to prevent markdown formatting from applying additional margin/padding\n className=\"AvailableEvaluationQueueList\"\n >\n {isSelectable && <AvailableEvaluationQueueAutocompleteList {...props} />}\n <AvailableEvaluationQueueCollapsableList {...props} />\n </Box>\n )\n}\n\nexport default AvailableEvaluationQueueList\n"],"mappings":"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"}
|