synapse-react-client 4.0.18 → 4.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.d.ts +3 -1
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +3 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
- package/dist/assets/GoogleIcon.js.map +1 -1
- package/dist/assets/GoogleIcon24.js.map +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
- package/dist/assets/homepage/aacr.js.map +1 -1
- package/dist/assets/homepage/cri.js.map +1 -1
- package/dist/assets/homepage/ctf.js.map +1 -1
- package/dist/assets/homepage/egress.js.map +1 -1
- package/dist/assets/homepage/facebook.js.map +1 -1
- package/dist/assets/homepage/fisma.js.map +1 -1
- package/dist/assets/homepage/gff.js.map +1 -1
- package/dist/assets/homepage/github.js.map +1 -1
- package/dist/assets/homepage/gray.js.map +1 -1
- package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
- package/dist/assets/homepage/instagram.js.map +1 -1
- package/dist/assets/homepage/linkedin.js.map +1 -1
- package/dist/assets/homepage/ml-commons.js.map +1 -1
- package/dist/assets/homepage/nih-aging.js.map +1 -1
- package/dist/assets/homepage/nih-heart.js.map +1 -1
- package/dist/assets/homepage/nih-nci.js.map +1 -1
- package/dist/assets/homepage/nih-nimh.js.map +1 -1
- package/dist/assets/homepage/ntap.js.map +1 -1
- package/dist/assets/homepage/plan-item.js.map +1 -1
- package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
- package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
- package/dist/assets/homepage/python.js.map +1 -1
- package/dist/assets/homepage/r.js.map +1 -1
- package/dist/assets/homepage/research-credit-feature.js.map +1 -1
- package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
- package/dist/assets/homepage/sloan.js.map +1 -1
- package/dist/assets/homepage/twitter.js.map +1 -1
- package/dist/assets/homepage/users.js.map +1 -1
- package/dist/assets/homepage/youtube.js.map +1 -1
- package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
- package/dist/assets/icons/AccessPending.js.map +1 -1
- package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
- package/dist/assets/icons/AddAd.js.map +1 -1
- package/dist/assets/icons/AddToList.js.map +1 -1
- package/dist/assets/icons/Alert.js.map +1 -1
- package/dist/assets/icons/Arrow.js.map +1 -1
- package/dist/assets/icons/AwardScroll.js.map +1 -1
- package/dist/assets/icons/Baseline.js.map +1 -1
- package/dist/assets/icons/Cavatica.js.map +1 -1
- package/dist/assets/icons/CertifiedUser.js.map +1 -1
- package/dist/assets/icons/Challenge.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
- package/dist/assets/icons/ClappingHands.js.map +1 -1
- package/dist/assets/icons/CloudWarning.js.map +1 -1
- package/dist/assets/icons/CommunicateFindings.js.map +1 -1
- package/dist/assets/icons/CreateVersion.js.map +1 -1
- package/dist/assets/icons/DNA_Two.js.map +1 -1
- package/dist/assets/icons/Data2.js.map +1 -1
- package/dist/assets/icons/DoubleQuotes.js.map +1 -1
- package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
- package/dist/assets/icons/FileWithShield.js.map +1 -1
- package/dist/assets/icons/FileWithShield2.js.map +1 -1
- package/dist/assets/icons/FrontHand.js.map +1 -1
- package/dist/assets/icons/HandWithMoney.js.map +1 -1
- package/dist/assets/icons/IconCopy.js.map +1 -1
- package/dist/assets/icons/IconMinus.js.map +1 -1
- package/dist/assets/icons/IconPlus.js.map +1 -1
- package/dist/assets/icons/Java.js.map +1 -1
- package/dist/assets/icons/MintDoi.js.map +1 -1
- package/dist/assets/icons/MultiFile.js.map +1 -1
- package/dist/assets/icons/MultiFile2.js.map +1 -1
- package/dist/assets/icons/NoData.js.map +1 -1
- package/dist/assets/icons/NoSearchResults.js.map +1 -1
- package/dist/assets/icons/ORCIDIcon.js.map +1 -1
- package/dist/assets/icons/OpenBook.js.map +1 -1
- package/dist/assets/icons/Podium.js.map +1 -1
- package/dist/assets/icons/Python.js.map +1 -1
- package/dist/assets/icons/QueryStructuredData.js.map +1 -1
- package/dist/assets/icons/RLogo.js.map +1 -1
- package/dist/assets/icons/RecordProvenance.js.map +1 -1
- package/dist/assets/icons/RosetteRibbon.js.map +1 -1
- package/dist/assets/icons/SageFullLogo.js.map +1 -1
- package/dist/assets/icons/SearchImage.js.map +1 -1
- package/dist/assets/icons/ShareYourResearch.js.map +1 -1
- package/dist/assets/icons/Sort.js.map +1 -1
- package/dist/assets/icons/StarTrophy.js.map +1 -1
- package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
- package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
- package/dist/assets/icons/SynapseLogoName.js.map +1 -1
- package/dist/assets/icons/TasksIcon.js.map +1 -1
- package/dist/assets/icons/Terminal.js.map +1 -1
- package/dist/assets/icons/ThreeStars.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
- package/dist/assets/icons/ValidatedProfile.js.map +1 -1
- package/dist/assets/icons/account-certified.js.map +1 -1
- package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
- package/dist/assets/icons/account-validated.js.map +1 -1
- package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
- package/dist/assets/icons/chart2.js.map +1 -1
- package/dist/assets/icons/columns.js.map +1 -1
- package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
- package/dist/assets/icons/computationalTool.js.map +1 -1
- package/dist/assets/icons/dataReuse.js.map +1 -1
- package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
- package/dist/assets/icons/emailWithNotification.js.map +1 -1
- package/dist/assets/icons/error_page/maintenance.js.map +1 -1
- package/dist/assets/icons/error_page/no-access.js.map +1 -1
- package/dist/assets/icons/error_page/unavailable.js.map +1 -1
- package/dist/assets/icons/file.js.map +1 -1
- package/dist/assets/icons/inSilicoModel.js.map +1 -1
- package/dist/assets/icons/institution.js.map +1 -1
- package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
- package/dist/assets/icons/modelSystem.js.map +1 -1
- package/dist/assets/icons/mouse.js.map +1 -1
- package/dist/assets/icons/organizations.js.map +1 -1
- package/dist/assets/icons/person.js.map +1 -1
- package/dist/assets/icons/spatialProfiling.js.map +1 -1
- package/dist/assets/icons/standardDataModel.js.map +1 -1
- package/dist/assets/icons/study-active.js.map +1 -1
- package/dist/assets/icons/study-complete.js.map +1 -1
- package/dist/assets/icons/subscribe_plus.js.map +1 -1
- package/dist/assets/icons/synapse-logo.js.map +1 -1
- package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
- package/dist/assets/icons/translational.js.map +1 -1
- package/dist/assets/icons/tree_horizontal.js.map +1 -1
- package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
- package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
- package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
- package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
- package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
- package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
- package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
- package/dist/assets/illustrations/docker_illustration.js.map +1 -1
- package/dist/assets/illustrations/donation_illustration.js.map +1 -1
- package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
- package/dist/assets/illustrations/files_illustration.js.map +1 -1
- package/dist/assets/illustrations/following_illustration.js.map +1 -1
- package/dist/assets/illustrations/index.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/projects_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/tables_illustration.js.map +1 -1
- package/dist/assets/illustrations/teams_illustration.js.map +1 -1
- package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
- package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
- package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
- package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
- package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
- package/dist/assets/logos/other/pluto-logo.js.map +1 -1
- package/dist/assets/logos/other/terra-logo.js.map +1 -1
- package/dist/assets/mui_components/AccessManagement.js.map +1 -1
- package/dist/assets/mui_components/AccountCertified.js.map +1 -1
- package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
- package/dist/assets/mui_components/AccountValidated.js.map +1 -1
- package/dist/assets/mui_components/ActionKey.js.map +1 -1
- package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
- package/dist/assets/mui_components/Chromatin.js.map +1 -1
- package/dist/assets/mui_components/Clinical.js.map +1 -1
- package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
- package/dist/assets/mui_components/Data.js.map +1 -1
- package/dist/assets/mui_components/DataLocked.js.map +1 -1
- package/dist/assets/mui_components/DataReuse.js.map +1 -1
- package/dist/assets/mui_components/Dataset.js.map +1 -1
- package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
- package/dist/assets/mui_components/Docker.js.map +1 -1
- package/dist/assets/mui_components/GeneExpression.js.map +1 -1
- package/dist/assets/mui_components/GeneVariants.js.map +1 -1
- package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
- package/dist/assets/mui_components/Imaging.js.map +1 -1
- package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
- package/dist/assets/mui_components/Kinomics.js.map +1 -1
- package/dist/assets/mui_components/LineGraph.js.map +1 -1
- package/dist/assets/mui_components/ModelSystem.js.map +1 -1
- package/dist/assets/mui_components/Other.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
- package/dist/assets/mui_components/Proteomics.js.map +1 -1
- package/dist/assets/mui_components/Rat.js.map +1 -1
- package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
- package/dist/assets/sustainability/dialPosition1.js.map +1 -1
- package/dist/assets/sustainability/dialPosition2.js.map +1 -1
- package/dist/assets/sustainability/dialPosition3.js.map +1 -1
- package/dist/assets/sustainability/dialPosition4.js.map +1 -1
- package/dist/assets/themed_icons/Active.js.map +1 -1
- package/dist/assets/themed_icons/Chart.js.map +1 -1
- package/dist/assets/themed_icons/Close.js.map +1 -1
- package/dist/assets/themed_icons/Collapse.js.map +1 -1
- package/dist/assets/themed_icons/Columns.js.map +1 -1
- package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
- package/dist/assets/themed_icons/Database.js.map +1 -1
- package/dist/assets/themed_icons/Download.js.map +1 -1
- package/dist/assets/themed_icons/Expand.js.map +1 -1
- package/dist/assets/themed_icons/Explore.js.map +1 -1
- package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
- package/dist/assets/themed_icons/Filter.js.map +1 -1
- package/dist/assets/themed_icons/Program.js.map +1 -1
- package/dist/assets/themed_icons/Project.js.map +1 -1
- package/dist/assets/themed_icons/Publication.js.map +1 -1
- package/dist/assets/themed_icons/Search.js.map +1 -1
- package/dist/assets/themed_icons/Settings.js.map +1 -1
- package/dist/assets/themed_icons/SortDown.js.map +1 -1
- package/dist/assets/themed_icons/SortUp.js.map +1 -1
- package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
- package/dist/assets/themed_icons/Study.js.map +1 -1
- package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
- package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
- package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
- package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
- package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
- package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
- package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
- package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
- package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
- package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
- package/dist/components/Authentication/LoginForm.js.map +1 -1
- package/dist/components/Authentication/LoginMethod.js.map +1 -1
- package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
- package/dist/components/Authentication/Logout.js.map +1 -1
- package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
- package/dist/components/Authentication/PasswordField.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
- package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Desktop.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/CardGridWithLinks/CardGridWithLinks.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationAnswer.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js.map +1 -1
- package/dist/components/ChallengeRegisterButton/ChallengeRegisterButton.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/AddExternalRepo.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +62 -64
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionCommitList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamSearch.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +96 -102
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/MembershipRequestForm.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/OpenMembershipInvitation.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/RegistrationSuccessful.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/useCreateAndRegisterChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopover.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CitationPopover/useCitation.js.map +1 -1
- package/dist/components/ColorGradient/ColorGradient.js.map +1 -1
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiePreferencesDialog.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.d.ts.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js +9 -9
- package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
- package/dist/components/CopyToClipboardIcon.js.map +1 -1
- package/dist/components/CopyToClipboardInput/CopyToClipboardInput.js.map +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizardUtils.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableTypeSelection.js.map +1 -1
- package/dist/components/CreateTableViewWizard/ViewTypeSelection.js.map +1 -1
- package/dist/components/CrispChat/CrispChat.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts +13 -0
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.js +116 -0
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.js +22 -0
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -0
- package/dist/components/DataExplorer/DataExplorer.module.scss +156 -0
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/StartGridSession.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +219 -211
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +106 -102
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +97 -89
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +19 -8
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js +64 -43
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +9 -9
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +2 -0
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +8 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
- package/dist/components/DataGrid/utils/convertActionToModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/createTestModel.js.map +1 -1
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -1
- package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -1
- package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -1
- package/dist/components/DataGrid/utils/isValidationUpToDateForRow.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxMessage.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxNotification.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequest.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxRequestComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponse.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRxResponseComplete.js.map +1 -1
- package/dist/components/DataGrid/utils/logicalTimestampToString.js.map +1 -1
- package/dist/components/DataGrid/utils/mapOperationsToModelChanges.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -1
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DatasetJsonLdScript.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/Dialog/ConfirmCloseWithoutSavingDialog.js.map +1 -1
- package/dist/components/DialogBase.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DirectDownload/FileEntityDirectDownload.js.map +1 -1
- package/dist/components/DirectDownloadButton.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/DirectProgrammaticDownload.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListStats.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/EnableTwoFaRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/components/DynamicForm/DynamicForm.js.map +1 -1
- package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemCard.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemLayout.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
- package/dist/components/EntityAclEditor/CreateOrDeleteLocalSharingSettingsButton.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js.map +1 -1
- package/dist/components/EntityAclEditor/InheritanceMessage.js.map +1 -1
- package/dist/components/EntityAclEditor/OpenData.js.map +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +68 -70
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitationUtils.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +32 -35
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/Breadcrumbs.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +134 -136
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinderModal.js.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
- package/dist/components/EntityFinder/details/EntityDetailsList.js +20 -20
- package/dist/components/EntityFinder/details/EntityDetailsList.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ReferenceDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/SearchDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +67 -67
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js +1 -1
- package/dist/components/EntityFinder/details/view/VersionColumnHeader.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/DateCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderCheckboxCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityFinderVersionCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityTypeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityDirectDownloadCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/UserBadgeCell.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +80 -80
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +31 -31
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
- package/dist/components/EntityForm/EntityForm.js.map +1 -1
- package/dist/components/EntityHeaderTable/DebouncedInput.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTableCellRenderers.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
- package/dist/components/EntityIcon.js.map +1 -1
- package/dist/components/EntityLink.js.map +1 -1
- package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.js.map +1 -1
- package/dist/components/EntityTreeTable/components/AutoLoadMore.js.map +1 -1
- package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityBadgeIconsCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableContext.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableRow.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadModal.js +29 -31
- package/dist/components/EntityUpload/EntityUploadModal.js.map +1 -1
- package/dist/components/EntityUpload/EntityUploadPromptDialog.js.map +1 -1
- package/dist/components/EntityUpload/ExternalObjectStoreCredentialsForm.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/EntityUpload/LinkToURL.js.map +1 -1
- package/dist/components/EntityUpload/ProjectStorageLimitAlert.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditor.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewScopeEditorModal.js.map +1 -1
- package/dist/components/Evaluation/CreatedOnByUserDiv.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditorPage.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorDropdown.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditorList.js.map +1 -1
- package/dist/components/Evaluation/input_models/models.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptions.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/EvaluationFinder/EvaluationFinder.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.d.ts.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +24 -30
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCardGrid.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataPlots.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
- package/dist/components/FeaturedResearch/FeaturedResearch.js +16 -18
- package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolCard.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
- package/dist/components/FilePreview/EntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileEntityPreview.js.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
- package/dist/components/FilePreview/PdfPreview.js.map +1 -1
- package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
- package/dist/components/FilePreview/PreviewUtils.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/Forum/DiscussionReply.js.map +1 -1
- package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
- package/dist/components/Forum/DiscussionThread.js.map +1 -1
- package/dist/components/Forum/ForumPage.js.map +1 -1
- package/dist/components/Forum/ForumTable.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/Forum/SubscribersModal.js.map +1 -1
- package/dist/components/ForumSearch/ForumSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js.map +1 -1
- package/dist/components/GenericCard/CroissantButton/CroissantButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
- package/dist/components/GenericCard/GenericCardIcon.js.map +1 -1
- package/dist/components/GenericCard/GenericCardTitle.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -1
- package/dist/components/GenericCard/Linkify.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOIUtils.js.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GenericCard/useResolvedSynapseEntity.js.map +1 -1
- package/dist/components/Goals/Goals.Desktop.js.map +1 -1
- package/dist/components/Goals/Goals.Mobile.js.map +1 -1
- package/dist/components/Goals/Goals.js +25 -27
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.js +14 -16
- package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Desktop.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js +14 -16
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js.map +1 -1
- package/dist/components/GoogleMap/GoogleMap.js.map +1 -1
- package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js +10 -10
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/HasAccess/HasAccessV2.js.map +1 -1
- package/dist/components/HasAccess/useHasAccess.js.map +1 -1
- package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IDUReport/IDUReport.js.map +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconList.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/IconSvgButton.js.map +1 -1
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js +7 -9
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
- package/dist/components/ImageFromSynapseTable.js.map +1 -1
- package/dist/components/InteractiveCopyIdsIcon.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditorModal.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/JsonLdScript.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTitleTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/DescriptionFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ErrorListTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldDescriptionTable.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldErrorTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/BooleanWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/DateTimeWidget.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
- package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
- package/dist/components/Markdown/GovernanceMarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js +75 -106
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +14 -4
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +38 -37
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/MarkdownWidget.js.map +1 -1
- package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/Bookmarks.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownEntityPreview.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownIDUReport.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseImage.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapsePlot.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownSynapseTable.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownTableOfContents.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownUserOrTeamBadge.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownVideo.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.FormSchema.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/MuiContainer.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/OAuthClientManagement/CreateOAuthClient.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/OrientationBanner/OrientationBanner.js.map +1 -1
- package/dist/components/PageProgress/PageProgress.js.map +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/DotPlot.js.map +1 -1
- package/dist/components/Plot/Plot.d.ts +12 -1
- package/dist/components/Plot/Plot.d.ts.map +1 -1
- package/dist/components/Plot/Plot.js +5 -1
- package/dist/components/Plot/Plot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +12 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.js +54 -0
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/Plot/index.d.ts +3 -1
- package/dist/components/Plot/index.d.ts.map +1 -1
- package/dist/components/Plot/index.js +2 -1
- package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
- package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Desktop.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
- package/dist/components/QueryContext/QueryContext.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QuerySortSelector.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +67 -65
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
- package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
- package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
- package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
- package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
- package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
- package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
- package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
- package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js.map +1 -1
- package/dist/components/Resources/Resources.Mobile.js.map +1 -1
- package/dist/components/Resources/Resources.js +8 -11
- package/dist/components/Resources/Resources.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +1 -0
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/ShowMore/ShowMore.js.map +1 -1
- package/dist/components/SignInButton.js.map +1 -1
- package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
- package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
- package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
- package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
- package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
- package/dist/components/SmartLink/SmartButton.js.map +1 -1
- package/dist/components/SmartLink/SmartLink.js.map +1 -1
- package/dist/components/SmartLink/useSmartLink.js.map +1 -1
- package/dist/components/SourceAppImage.js.map +1 -1
- package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.d.ts.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
- package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
- package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/Topic.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
- package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
- package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
- package/dist/components/SynapseForm/DataDebug.js.map +1 -1
- package/dist/components/SynapseForm/Header.js.map +1 -1
- package/dist/components/SynapseForm/NavButtons.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseForm/types.js.map +1 -1
- package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
- package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
- package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
- package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
- package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
- package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
- package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js.map +1 -1
- package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
- package/dist/components/SynapseTable/TablePagination.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorCheckboxCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorUtils.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +131 -133
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/datasets/EntityFetchErrorCell.js.map +1 -1
- package/dist/components/SynapseTable/export/ADDiscoveryPortalInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +48 -51
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformInstructions.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalAnalysisPlatformsConstants.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformDisclaimer.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadLoginModal.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/SynapseTable/useTableSort.js.map +1 -1
- package/dist/components/SystemUseNotification/SystemUseNotification.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +12 -12
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js +4 -4
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +32 -32
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DefaultValueValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EnumValuesValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TeamBadge.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TemplateComponent.js.map +1 -1
- package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
- package/dist/components/TextToComponentCollapse.js.map +1 -1
- package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
- package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
- package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
- package/dist/components/TotalQueryResults.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCard/UserBadge.js.map +1 -1
- package/dist/components/UserCard/UserCard.js.map +1 -1
- package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
- package/dist/components/UserCard/UserCardLarge.js.map +1 -1
- package/dist/components/UserCard/UserCardMedium.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
- package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
- package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
- package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/doi/DoiFormSchemas.js.map +1 -1
- package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/download_list/index.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js.map +1 -1
- package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/error/ErrorPage.js +24 -24
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/error/RouteErrorBoundary.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
- package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
- package/dist/components/favorites/FavoriteButton.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
- package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
- package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
- package/dist/components/home_page/ExpandableContent.js.map +1 -1
- package/dist/components/index.js +48 -47
- package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
- package/dist/components/layout/SWCHeader.js.map +1 -1
- package/dist/components/layout/SWCPageLayout.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/HoverPopover.js.map +1 -1
- package/dist/components/styled/InlineBadge.js.map +1 -1
- package/dist/components/styled/InputSizedButton.js.map +1 -1
- package/dist/components/styled/LargeButton.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/styled/LightTooltip.js.map +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/styled/StyledTableContainer.js.map +1 -1
- package/dist/components/styled/WideButton.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +113 -0
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts +5 -5
- package/dist/components/table/CsvPreview/CsvPreviewDialog.d.ts.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +27 -76
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts +19 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +41 -0
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts +12 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js +25 -0
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts +18 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js +55 -0
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts +19 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js +35 -0
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts +22 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js +32 -0
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts +14 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.d.ts.map +1 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js +23 -0
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -0
- package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
- package/dist/components/trash/TrashCanList.js.map +1 -1
- package/dist/components/utils/Blocker.js.map +1 -1
- package/dist/components/utils/ConditionalWrapper.js.map +1 -1
- package/dist/components/utils/VisibilityObserver.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/EntityColumnImage.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/components/widgets/ImageFileHandle.js.map +1 -1
- package/dist/components/widgets/LoginAwareButton.js.map +1 -1
- package/dist/components/widgets/Range.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/SynapseVideo.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -34
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +11 -3
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- package/dist/index.js +54 -53
- package/dist/index.js.map +1 -1
- package/dist/mocks/MockAccessApprovals.js.map +1 -1
- package/dist/mocks/MockSynapseContext.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
- package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
- package/dist/mocks/challenge/mockChallenge.js.map +1 -1
- package/dist/mocks/chat/mockChat.js.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
- package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
- package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
- package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
- package/dist/mocks/discussion/mock_discussion.js.map +1 -1
- package/dist/mocks/doi/MockDoi.js.map +1 -1
- package/dist/mocks/entity/index.js.map +1 -1
- package/dist/mocks/entity/mockDataset.js.map +1 -1
- package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
- package/dist/mocks/entity/mockEntity.js.map +1 -1
- package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
- package/dist/mocks/entity/mockFileEntity.js.map +1 -1
- package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
- package/dist/mocks/entity/mockFileView.js.map +1 -1
- package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
- package/dist/mocks/entity/mockProject.js.map +1 -1
- package/dist/mocks/entity/mockProjectView.js.map +1 -1
- package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
- package/dist/mocks/entity/mockRootEntity.js.map +1 -1
- package/dist/mocks/entity/mockTableEntity.js.map +1 -1
- package/dist/mocks/faker/fakerUtils.js.map +1 -1
- package/dist/mocks/faker/generateDiscussion.js.map +1 -1
- package/dist/mocks/faker/generateEvaluation.js.map +1 -1
- package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
- package/dist/mocks/faker/generateSubscription.js.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/mockCertificationQuiz.js.map +1 -1
- package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
- package/dist/mocks/mockFileViewQuery.js.map +1 -1
- package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
- package/dist/mocks/mockQueryResponseData.js.map +1 -1
- package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
- package/dist/mocks/mockSchema.js.map +1 -1
- package/dist/mocks/mockSearchQueryData.js.map +1 -1
- package/dist/mocks/mockShortIo.js.map +1 -1
- package/dist/mocks/mockSourceAppConfigQuery.js.map +1 -1
- package/dist/mocks/mockSubscription.js.map +1 -1
- package/dist/mocks/mockWiki.js.map +1 -1
- package/dist/mocks/mockWikiPageKey.js.map +1 -1
- package/dist/mocks/mock_drug_tool_data.js.map +1 -1
- package/dist/mocks/mock_file_handle.js.map +1 -1
- package/dist/mocks/mock_file_statistics.js.map +1 -1
- package/dist/mocks/mock_has_access_data.js.map +1 -1
- package/dist/mocks/mock_upload_destination.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataciteHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/doiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/evaluationHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/featureFlagHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/messageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/oauthClientAclHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/projectStorageHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/realmHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/researchProjectHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/shortIoHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryService.js.map +1 -1
- package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/termsOfServiceHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/webhookHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/mocks/msw/server.d.ts +1 -1
- package/dist/mocks/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js.map +1 -1
- package/dist/mocks/msw/util/BasicMockedCrudService.js.map +1 -1
- package/dist/mocks/oauth/MockClient.js.map +1 -1
- package/dist/mocks/personalAccessToken/mockPersonalAccessToken.js.map +1 -1
- package/dist/mocks/projectStorage/mockProjectStorageLimits.js.map +1 -1
- package/dist/mocks/provenance/mockActivity.js.map +1 -1
- package/dist/mocks/query/defaultFileViewColumnModels.js.map +1 -1
- package/dist/mocks/query/mockFeaturedDataTabsQueryData.js.map +1 -1
- package/dist/mocks/query/mockHomepageQueryResultData.js.map +1 -1
- package/dist/mocks/query/mockProjectViewQueryResults.js.map +1 -1
- package/dist/mocks/query/mockRejectionReasonsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
- package/dist/mocks/query/mock_query_data.js.map +1 -1
- package/dist/mocks/query/syn16787123.js.map +1 -1
- package/dist/mocks/query/syn17328596.js.map +1 -1
- package/dist/mocks/query/syn51735464.js.map +1 -1
- package/dist/mocks/query/syn51735464GroupBySpecies.js.map +1 -1
- package/dist/mocks/realm/mockRealmPrincipal.js.map +1 -1
- package/dist/mocks/team/mockTeam.js.map +1 -1
- package/dist/mocks/termsOfService/mockTermsOfService.js.map +1 -1
- package/dist/mocks/user/mock_user_profile.js.map +1 -1
- package/dist/mocks/usergroup/mockUserGroup.js.map +1 -1
- package/dist/ror-client/index.js.map +1 -1
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/stories/ToastDemo.js.map +1 -1
- package/dist/stories/stubs/Alert/MuiAlert.js.map +1 -1
- package/dist/stories/stubs/Button/MuiButton.js.map +1 -1
- package/dist/stories/stubs/Dialog/MuiDialog.js.map +1 -1
- package/dist/stories/stubs/TextField/MuiTextField.js.map +1 -1
- package/dist/stories/stubs/Tooltip/MuiTooltip.js.map +1 -1
- package/dist/synapse-client/HttpClient.js.map +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +61 -69
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
- package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
- package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
- package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
- package/dist/synapse-queries/forum/useForum.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/github/useGithub.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/message/useMessage.js.map +1 -1
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
- package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
- package/dist/synapse-queries/ror/index.js.map +1 -1
- package/dist/synapse-queries/search/useSearch.js.map +1 -1
- package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
- package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
- package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
- package/dist/synapse-queries/user/useProjects.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
- package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
- package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
- package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
- package/dist/testutils/LocationTracker.js.map +1 -1
- package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/TestingLibraryUtils.js +18 -16
- package/dist/testutils/TestingLibraryUtils.js.map +1 -1
- package/dist/testutils/muiDatePickerMock.js.map +1 -1
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/mergeTheme.js.map +1 -1
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/theme/spreadSx.js.map +1 -1
- package/dist/theme/typography/Link.js.map +1 -1
- package/dist/theme/typography/Typography.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +11 -11
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/OrientationBannerConstants.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
- package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/AridhiaContext.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/DateFormatter.js.map +1 -1
- package/dist/utils/functions/DateTimeUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
- package/dist/utils/functions/IsExternalLink.js.map +1 -1
- package/dist/utils/functions/ObjectUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
- package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
- package/dist/utils/functions/colorPalette.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
- package/dist/utils/functions/generateCsrfToken.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js +3 -3
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
- package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
- package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js +24 -23
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js +2 -4
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useShowDesktop.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
- package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/searchDefaults.js.map +1 -1
- package/dist/utils/slots/SlotUtils.js.map +1 -1
- package/dist/utils/types/IsType.js.map +1 -1
- package/package.json +67 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListItem.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"sourcesContent":["import {\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n AccessRequirement,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ManagedACTAccessRequirement,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport React from 'react'\nimport UnmanagedACTAccessRequirementItem from './RequirementItem/UnmanagedACTAccessRequirementItem'\nimport ManagedACTAccessRequirementItem from './ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem'\nimport SelfSignAccessRequirementItem from './RequirementItem/SelfSignAccessRequirementItem'\nimport LockAccessRequirementItem from './RequirementItem/LockAccessRequirementItem'\n\nexport type AccessRequirementListItemProps = {\n accessRequirement: AccessRequirement\n onHide: () => void\n onRequestAccess: (accessRequirement: ManagedACTAccessRequirement) => void\n subjectId?: string\n subjectType?: RestrictableObjectType\n}\n\n/**\n * Renders an individual AR item for the AccessRequirementList\n */\nexport function AccessRequirementListItem(\n props: AccessRequirementListItemProps,\n): React.ReactNode {\n const { accessRequirement, subjectId, subjectType, onHide, onRequestAccess } =\n props\n switch (accessRequirement.concreteType) {\n case SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n case TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <SelfSignAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n />\n )\n case ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <UnmanagedACTAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n subjectId={subjectId}\n subjectType={subjectType}\n />\n )\n case MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <ManagedACTAccessRequirementItem\n accessRequirement={accessRequirement}\n subjectId={subjectId}\n subjectType={subjectType}\n onRejectTerms={onHide}\n onRequestAccess={() => {\n onRequestAccess(accessRequirement)\n }}\n />\n )\n case LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return <LockAccessRequirementItem />\n // case not supported yet\n default:\n console.warn(\n 'Unsupported access requirement type:',\n (accessRequirement as AccessRequirement).concreteType,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgB,EACd,GACiB;CACjB,IAAM,EAAE,sBAAmB,cAAW,gBAAa,WAAQ,uBACzD;
|
|
1
|
+
{"version":3,"file":"AccessRequirementListItem.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"sourcesContent":["import {\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n AccessRequirement,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ManagedACTAccessRequirement,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport React from 'react'\nimport UnmanagedACTAccessRequirementItem from './RequirementItem/UnmanagedACTAccessRequirementItem'\nimport ManagedACTAccessRequirementItem from './ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem'\nimport SelfSignAccessRequirementItem from './RequirementItem/SelfSignAccessRequirementItem'\nimport LockAccessRequirementItem from './RequirementItem/LockAccessRequirementItem'\n\nexport type AccessRequirementListItemProps = {\n accessRequirement: AccessRequirement\n onHide: () => void\n onRequestAccess: (accessRequirement: ManagedACTAccessRequirement) => void\n subjectId?: string\n subjectType?: RestrictableObjectType\n}\n\n/**\n * Renders an individual AR item for the AccessRequirementList\n */\nexport function AccessRequirementListItem(\n props: AccessRequirementListItemProps,\n): React.ReactNode {\n const { accessRequirement, subjectId, subjectType, onHide, onRequestAccess } =\n props\n switch (accessRequirement.concreteType) {\n case SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n case TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <SelfSignAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n />\n )\n case ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <UnmanagedACTAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n subjectId={subjectId}\n subjectType={subjectType}\n />\n )\n case MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <ManagedACTAccessRequirementItem\n accessRequirement={accessRequirement}\n subjectId={subjectId}\n subjectType={subjectType}\n onRejectTerms={onHide}\n onRequestAccess={() => {\n onRequestAccess(accessRequirement)\n }}\n />\n )\n case LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return <LockAccessRequirementItem />\n // case not supported yet\n default:\n console.warn(\n 'Unsupported access requirement type:',\n (accessRequirement as AccessRequirement).concreteType,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgB,EACd,GACiB;CACjB,IAAM,EAAE,sBAAmB,cAAW,gBAAa,WAAQ,uBACzD;CACF,QAAQ,EAAkB,cAA1B;EACE,KAAK;EACL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACX;EACT,CAAA;EAEL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACX;GACG;GACE;EACd,CAAA;EAEL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACR;GACE;GACb,eAAe;GACf,uBAAuB;IACrB,EAAgB,CAAiB;GACnC;EACD,CAAA;EAEL,KAAK,GACH,OAAO,kBAAC,GAAD,CAA4B,CAAA;EAErC,SAKE,OAJA,QAAQ,KACN,wCACC,EAAwC,YAC3C,GACO,kBAAA,GAAA,CAAI,CAAA;CACf;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListUtils.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"sourcesContent":["import { getAccessRequirementStatus } from '@/synapse-client/SynapseClient'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { sortBy } from 'lodash-es'\n\n/**\n * Given an array of access requirement IDs, return the IDs sorted by the user's status, where\n * completed access requirements are shown first.\n * @param accessToken\n * @param requirementIds\n */\nexport const sortAccessRequirementsByCompletion = async (\n accessToken: string | undefined,\n requirementIds: string[],\n): Promise<string[]> => {\n const statuses = requirementIds.map(id => {\n return getAccessRequirementStatus(accessToken, id)\n })\n const accessRequirementStatuses = await Promise.all(statuses)\n\n return sortBy(requirementIds, id => {\n // if its true then it should come first, which means that it should be higher in the list\n // which is sorted ascendingly\n return (\n -1 *\n Number(\n accessRequirementStatuses.find(\n status => id === status.accessRequirementId,\n )!.isApproved,\n )\n )\n })\n}\n\n/**\n * Determines if we can show ManagedACTAccessRequirement wiki content alongside the forms using a media query.\n * See SWC-6432.\n */\nexport function useCanShowManagedACTWikiInWizard(): boolean {\n const theme = useTheme()\n const matchesBreakpoint = useMediaQuery(theme.breakpoints.up('md'))\n return matchesBreakpoint\n}\n"],"mappings":";;;;AAUA,IAAa,IAAqC,OAChD,GACA,MACsB;CACtB,IAAM,IAAW,EAAe,KAAI,MAC3B,EAA2B,GAAa,
|
|
1
|
+
{"version":3,"file":"AccessRequirementListUtils.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"sourcesContent":["import { getAccessRequirementStatus } from '@/synapse-client/SynapseClient'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { sortBy } from 'lodash-es'\n\n/**\n * Given an array of access requirement IDs, return the IDs sorted by the user's status, where\n * completed access requirements are shown first.\n * @param accessToken\n * @param requirementIds\n */\nexport const sortAccessRequirementsByCompletion = async (\n accessToken: string | undefined,\n requirementIds: string[],\n): Promise<string[]> => {\n const statuses = requirementIds.map(id => {\n return getAccessRequirementStatus(accessToken, id)\n })\n const accessRequirementStatuses = await Promise.all(statuses)\n\n return sortBy(requirementIds, id => {\n // if its true then it should come first, which means that it should be higher in the list\n // which is sorted ascendingly\n return (\n -1 *\n Number(\n accessRequirementStatuses.find(\n status => id === status.accessRequirementId,\n )!.isApproved,\n )\n )\n })\n}\n\n/**\n * Determines if we can show ManagedACTAccessRequirement wiki content alongside the forms using a media query.\n * See SWC-6432.\n */\nexport function useCanShowManagedACTWikiInWizard(): boolean {\n const theme = useTheme()\n const matchesBreakpoint = useMediaQuery(theme.breakpoints.up('md'))\n return matchesBreakpoint\n}\n"],"mappings":";;;;AAUA,IAAa,IAAqC,OAChD,GACA,MACsB;CACtB,IAAM,IAAW,EAAe,KAAI,MAC3B,EAA2B,GAAa,CAAE,CAClD,GACK,IAA4B,MAAM,QAAQ,IAAI,CAAQ;CAE5D,OAAO,EAAO,IAAgB,MAI1B,KACA,OACE,EAA0B,MACxB,MAAU,MAAO,EAAO,mBAC1B,EAAG,UACL,CAEH;AACH;AAMA,SAAgB,IAA4C;CAG1D,OAD0B,EADZ,EAC0B,EAAM,YAAY,GAAG,IAAI,CAC1D;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CancelRequestDataAccess.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.tsx"],"sourcesContent":["import { useUpdateDataAccessRequest } from '@/synapse-queries'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport { Renewal, Request } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport IconSvg from '../../IconSvg/IconSvg'\nimport { AlertProps } from './DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\n\nexport type CancelRequestDataAccessProps = {\n /* The data access request with unsaved changes */\n modifiedDataAccessRequest: Request | Renewal | undefined\n onHide: () => void\n}\n\nfunction CancelRequestDataAccess(props: CancelRequestDataAccessProps) {\n const { modifiedDataAccessRequest, onHide } = props\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const [showCloseBtn, setShowCloseBtn] = useState<boolean>(false)\n\n const { mutate: updateRequest } = useUpdateDataAccessRequest({\n onSuccess: () => {\n onHide()\n },\n onError: e => {\n setAlert({\n key: 'error',\n message: `Sorry, there is an error in submitting your request. ${\n e.reason ? e.reason + '.' : ' '\n }Please close this dialog and try again later.`,\n })\n setShowCloseBtn(true)\n },\n })\n\n function handleSave() {\n if (modifiedDataAccessRequest) {\n updateRequest(modifiedDataAccessRequest)\n }\n }\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Save Changes\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n\n <DialogContent>\n <Typography variant={'body1'}>\n Would you like to save your recent changes?\n </Typography>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n\n <DialogActions>\n {!showCloseBtn && (\n <>\n <Button variant=\"outlined\" onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => {\n handleSave()\n }}\n >\n Save changes\n </Button>\n </>\n )}\n {showCloseBtn && (\n <Button variant=\"contained\" onClick={onHide}>\n Close\n </Button>\n )}\n </DialogActions>\n </>\n )\n}\n\nexport default CancelRequestDataAccess\n"],"mappings":";;;;;;;AAuBA,SAAS,EAAwB,GAAqC;CACpE,IAAM,EAAE,8BAA2B,cAAW,GACxC,CAAC,GAAO,KAAY,
|
|
1
|
+
{"version":3,"file":"CancelRequestDataAccess.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.tsx"],"sourcesContent":["import { useUpdateDataAccessRequest } from '@/synapse-queries'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport { Renewal, Request } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport IconSvg from '../../IconSvg/IconSvg'\nimport { AlertProps } from './DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\n\nexport type CancelRequestDataAccessProps = {\n /* The data access request with unsaved changes */\n modifiedDataAccessRequest: Request | Renewal | undefined\n onHide: () => void\n}\n\nfunction CancelRequestDataAccess(props: CancelRequestDataAccessProps) {\n const { modifiedDataAccessRequest, onHide } = props\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const [showCloseBtn, setShowCloseBtn] = useState<boolean>(false)\n\n const { mutate: updateRequest } = useUpdateDataAccessRequest({\n onSuccess: () => {\n onHide()\n },\n onError: e => {\n setAlert({\n key: 'error',\n message: `Sorry, there is an error in submitting your request. ${\n e.reason ? e.reason + '.' : ' '\n }Please close this dialog and try again later.`,\n })\n setShowCloseBtn(true)\n },\n })\n\n function handleSave() {\n if (modifiedDataAccessRequest) {\n updateRequest(modifiedDataAccessRequest)\n }\n }\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Save Changes\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n\n <DialogContent>\n <Typography variant={'body1'}>\n Would you like to save your recent changes?\n </Typography>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n\n <DialogActions>\n {!showCloseBtn && (\n <>\n <Button variant=\"outlined\" onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => {\n handleSave()\n }}\n >\n Save changes\n </Button>\n </>\n )}\n {showCloseBtn && (\n <Button variant=\"contained\" onClick={onHide}>\n Close\n </Button>\n )}\n </DialogActions>\n </>\n )\n}\n\nexport default CancelRequestDataAccess\n"],"mappings":";;;;;;;AAuBA,SAAS,EAAwB,GAAqC;CACpE,IAAM,EAAE,8BAA2B,cAAW,GACxC,CAAC,GAAO,KAAY,EAAiC,GACrD,CAAC,GAAc,KAAmB,EAAkB,EAAK,GAEzD,EAAE,QAAQ,MAAkB,EAA2B;EAC3D,iBAAiB;GACf,EAAO;EACT;EACA,UAAS,MAAK;GAOZ,AANA,EAAS;IACP,KAAK;IACL,SAAS,wDACP,EAAE,SAAS,EAAE,SAAS,MAAM,IAC7B;GACH,CAAC,GACD,EAAgB,EAAI;EACtB;CACF,CAAC;CAED,SAAS,IAAa;EACpB,AAAI,KACF,EAAc,CAAyB;CAE3C;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAU;GACV,IAAI;IACF,YAAY;IACZ,KAAK;GACP;aALF;IAMC;IAEC,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;IAC3B,kBAAC,GAAD;KAAY,SAAS;eACnB,kBAAC,GAAD;MAAS,MAAM;MAAS,MAAM;MAAO,IAAI,EAAE,OAAO,WAAW;KAAI,CAAA;IACvD,CAAA;GACP;KACI,CAAA;EAEb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;GAAY,SAAS;aAAS;EAElB,CAAA,GACX,KAAS,kBAAC,GAAD;GAAO,UAAU,EAAM;aAAM,EAAM;EAAe,CAAA,CAC/C,EAAA,CAAA;EAEf,kBAAC,GAAD,EAAA,UAAA,CACG,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAQ;GAAW,SAAS;aAAQ;EAEpC,CAAA,GACR,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe;IACb,EAAW;GACb;aACD;EAEO,CAAA,CACR,EAAA,CAAA,GAEH,KACC,kBAAC,GAAD;GAAQ,SAAQ;GAAY,SAAS;aAAQ;EAErC,CAAA,CAEG,EAAA,CAAA;CACf,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataAccessRequestAccessorsEditor.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.tsx"],"sourcesContent":["import { useGetCurrentUserProfile } from '@/synapse-queries'\nimport {\n Button,\n FormControlLabel,\n Radio,\n RadioGroup,\n Stack,\n Typography,\n} from '@mui/material'\nimport {\n AccessorChange,\n AccessType,\n TYPE_FILTER,\n UserGroupHeader,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport IconSvg from '../../IconSvg/IconSvg'\nimport { UserBadge } from '../../UserCard/UserBadge'\nimport UserSearchBox from '../../UserSearchBox/UserSearchBox'\n\nexport type DataAccessRequestAccessorsEditorProps = {\n /* The current set of accessor changes for a data access request */\n accessorChanges: AccessorChange[]\n /* Invoked when the set of accessors is updated */\n onChange: (updater: (prevValue: AccessorChange[]) => AccessorChange[]) => void\n /* Whether this request is a renewal */\n isRenewal: boolean\n /* Text to show to inform the user about requirements accessors may need to meet */\n helpText: ReactNode\n}\n\n/**\n * Component that handles adding/removing/revoking accessors for a data access request.\n */\nexport default function DataAccessRequestAccessorsEditor(\n props: DataAccessRequestAccessorsEditorProps,\n) {\n const { accessorChanges, onChange, isRenewal, helpText } = props\n const { data: user } = useGetCurrentUserProfile()\n\n const onSelectUserCallback = (\n id: string | null,\n ugh: UserGroupHeader | null,\n ) => {\n if (ugh) {\n onChange(previousValue => {\n const currentAccessorIds = previousValue.map(ac => ac.userId)\n // if user is not already in the accessor list (prevent duplicates in accessor list)\n if (!currentAccessorIds.includes(ugh.ownerId)) {\n const selectedAccessor: AccessorChange = {\n userId: ugh.ownerId,\n type: AccessType.GAIN_ACCESS,\n }\n previousValue.push(selectedAccessor)\n }\n return previousValue\n })\n }\n }\n\n const onClearAccessor = (userId: string) => {\n onChange(previousValue => {\n return previousValue.filter(item => item.userId !== userId)\n })\n }\n\n // For renewal only\n const onAccessorAccessTypeChange = (\n accessType: AccessType,\n userId: string,\n ) => {\n onChange(previousValue => {\n const indexOfUser = previousValue.findIndex(\n item => item.userId === userId,\n )\n previousValue[indexOfUser].type = accessType\n return previousValue\n })\n }\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Data Requesters\n </Typography>\n <Typography\n component={'div'}\n variant={'body1'}\n sx={{ mb: 1 }}\n className={'requester-label'}\n >\n {helpText}\n </Typography>\n <UserSearchBox\n inputId={'requesters'}\n typeFilter={TYPE_FILTER.USERS_ONLY}\n onChange={onSelectUserCallback}\n filterPredicate={userGroupHeader =>\n !accessorChanges\n .map(ac => ac.userId)\n .includes(userGroupHeader.ownerId)\n }\n value={null}\n />\n <Stack sx={{ my: 1, gap: 1 }}>\n {accessorChanges.map((ac, i) => {\n return (\n <div className={'list-items'} key={`accessor-${i}`}>\n <UserBadge\n userId={ac.userId}\n showAccountLevelIcon={true}\n disableLink={true}\n showFullName={true}\n />\n {\n // only display delete button if the user profile is not the current user and has not had access before\n user?.ownerId !== ac.userId &&\n ac.type === AccessType.GAIN_ACCESS && (\n <Button\n aria-label={`Remove user`}\n variant={'text'}\n sx={{\n ml: 1,\n px: 0,\n }}\n onClick={() => onClearAccessor(ac.userId)}\n >\n <IconSvg icon=\"clear\" />\n </Button>\n )\n }\n {\n // Renewal/Revoke data access, only display if isRenewal is true\n // TODO: It's possible to that the accessors list is in an illegal state with no way to recover -- see PLFM-7893\n isRenewal &&\n user?.ownerId !== ac.userId &&\n ac.type !== AccessType.GAIN_ACCESS && (\n <>\n <RadioGroup\n value={ac.type}\n onChange={(_event, value) =>\n onAccessorAccessTypeChange(\n value as AccessType,\n ac.userId,\n )\n }\n >\n <FormControlLabel\n control={<Radio />}\n label={'Renew'}\n value={AccessType.RENEW_ACCESS}\n />\n <FormControlLabel\n control={<Radio />}\n label={'Revoke'}\n value={AccessType.REVOKE_ACCESS}\n />\n </RadioGroup>\n </>\n )\n }\n </div>\n )\n })}\n </Stack>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAkCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,oBAAiB,aAAU,cAAW,gBAAa,GACrD,EAAE,MAAM,MAAS,
|
|
1
|
+
{"version":3,"file":"DataAccessRequestAccessorsEditor.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.tsx"],"sourcesContent":["import { useGetCurrentUserProfile } from '@/synapse-queries'\nimport {\n Button,\n FormControlLabel,\n Radio,\n RadioGroup,\n Stack,\n Typography,\n} from '@mui/material'\nimport {\n AccessorChange,\n AccessType,\n TYPE_FILTER,\n UserGroupHeader,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport IconSvg from '../../IconSvg/IconSvg'\nimport { UserBadge } from '../../UserCard/UserBadge'\nimport UserSearchBox from '../../UserSearchBox/UserSearchBox'\n\nexport type DataAccessRequestAccessorsEditorProps = {\n /* The current set of accessor changes for a data access request */\n accessorChanges: AccessorChange[]\n /* Invoked when the set of accessors is updated */\n onChange: (updater: (prevValue: AccessorChange[]) => AccessorChange[]) => void\n /* Whether this request is a renewal */\n isRenewal: boolean\n /* Text to show to inform the user about requirements accessors may need to meet */\n helpText: ReactNode\n}\n\n/**\n * Component that handles adding/removing/revoking accessors for a data access request.\n */\nexport default function DataAccessRequestAccessorsEditor(\n props: DataAccessRequestAccessorsEditorProps,\n) {\n const { accessorChanges, onChange, isRenewal, helpText } = props\n const { data: user } = useGetCurrentUserProfile()\n\n const onSelectUserCallback = (\n id: string | null,\n ugh: UserGroupHeader | null,\n ) => {\n if (ugh) {\n onChange(previousValue => {\n const currentAccessorIds = previousValue.map(ac => ac.userId)\n // if user is not already in the accessor list (prevent duplicates in accessor list)\n if (!currentAccessorIds.includes(ugh.ownerId)) {\n const selectedAccessor: AccessorChange = {\n userId: ugh.ownerId,\n type: AccessType.GAIN_ACCESS,\n }\n previousValue.push(selectedAccessor)\n }\n return previousValue\n })\n }\n }\n\n const onClearAccessor = (userId: string) => {\n onChange(previousValue => {\n return previousValue.filter(item => item.userId !== userId)\n })\n }\n\n // For renewal only\n const onAccessorAccessTypeChange = (\n accessType: AccessType,\n userId: string,\n ) => {\n onChange(previousValue => {\n const indexOfUser = previousValue.findIndex(\n item => item.userId === userId,\n )\n previousValue[indexOfUser].type = accessType\n return previousValue\n })\n }\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Data Requesters\n </Typography>\n <Typography\n component={'div'}\n variant={'body1'}\n sx={{ mb: 1 }}\n className={'requester-label'}\n >\n {helpText}\n </Typography>\n <UserSearchBox\n inputId={'requesters'}\n typeFilter={TYPE_FILTER.USERS_ONLY}\n onChange={onSelectUserCallback}\n filterPredicate={userGroupHeader =>\n !accessorChanges\n .map(ac => ac.userId)\n .includes(userGroupHeader.ownerId)\n }\n value={null}\n />\n <Stack sx={{ my: 1, gap: 1 }}>\n {accessorChanges.map((ac, i) => {\n return (\n <div className={'list-items'} key={`accessor-${i}`}>\n <UserBadge\n userId={ac.userId}\n showAccountLevelIcon={true}\n disableLink={true}\n showFullName={true}\n />\n {\n // only display delete button if the user profile is not the current user and has not had access before\n user?.ownerId !== ac.userId &&\n ac.type === AccessType.GAIN_ACCESS && (\n <Button\n aria-label={`Remove user`}\n variant={'text'}\n sx={{\n ml: 1,\n px: 0,\n }}\n onClick={() => onClearAccessor(ac.userId)}\n >\n <IconSvg icon=\"clear\" />\n </Button>\n )\n }\n {\n // Renewal/Revoke data access, only display if isRenewal is true\n // TODO: It's possible to that the accessors list is in an illegal state with no way to recover -- see PLFM-7893\n isRenewal &&\n user?.ownerId !== ac.userId &&\n ac.type !== AccessType.GAIN_ACCESS && (\n <>\n <RadioGroup\n value={ac.type}\n onChange={(_event, value) =>\n onAccessorAccessTypeChange(\n value as AccessType,\n ac.userId,\n )\n }\n >\n <FormControlLabel\n control={<Radio />}\n label={'Renew'}\n value={AccessType.RENEW_ACCESS}\n />\n <FormControlLabel\n control={<Radio />}\n label={'Revoke'}\n value={AccessType.REVOKE_ACCESS}\n />\n </RadioGroup>\n </>\n )\n }\n </div>\n )\n })}\n </Stack>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAkCA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,oBAAiB,aAAU,cAAW,gBAAa,GACrD,EAAE,MAAM,MAAS,EAAyB,GAE1C,KACJ,GACA,MACG;EACH,AAAI,KACF,GAAS,MAAiB;GAGxB,IAAI,CAFuB,EAAc,KAAI,MAAM,EAAG,MAEjD,EAAmB,SAAS,EAAI,OAAO,GAAG;IAC7C,IAAM,IAAmC;KACvC,QAAQ,EAAI;KACZ,MAAM,EAAW;IACnB;IACA,EAAc,KAAK,CAAgB;GACrC;GACA,OAAO;EACT,CAAC;CAEL,GAEM,KAAmB,MAAmB;EAC1C,GAAS,MACA,EAAc,QAAO,MAAQ,EAAK,WAAW,CAAM,CAC3D;CACH,GAGM,KACJ,GACA,MACG;EACH,GAAS,MAAiB;GACxB,IAAM,IAAc,EAAc,WAChC,MAAQ,EAAK,WAAW,CAC1B;GAEA,OADA,EAAc,GAAa,OAAO,GAC3B;EACT,CAAC;CACH;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;IAAE,IAAI;IAAG,IAAI;GAAE;aAAG;EAE5C,CAAA;EACZ,kBAAC,GAAD;GACE,WAAW;GACX,SAAS;GACT,IAAI,EAAE,IAAI,EAAE;GACZ,WAAW;aAEV;EACS,CAAA;EACZ,kBAAC,GAAD;GACE,SAAS;GACT,YAAY,EAAY;GACxB,UAAU;GACV,kBAAiB,MACf,CAAC,EACE,KAAI,MAAM,EAAG,MAAM,EACnB,SAAS,EAAgB,OAAO;GAErC,OAAO;EACR,CAAA;EACD,kBAAC,GAAD;GAAO,IAAI;IAAE,IAAI;IAAG,KAAK;GAAE;aACxB,EAAgB,KAAK,GAAI,MAEtB,kBAAC,OAAD;IAAK,WAAW;cAAhB;KACE,kBAAC,GAAD;MACE,QAAQ,EAAG;MACX,sBAAsB;MACtB,aAAa;MACb,cAAc;KACf,CAAA;KAGC,GAAM,YAAY,EAAG,UACnB,EAAG,SAAS,EAAW,eACrB,kBAAC,GAAD;MACE,cAAY;MACZ,SAAS;MACT,IAAI;OACF,IAAI;OACJ,IAAI;MACN;MACA,eAAe,EAAgB,EAAG,MAAM;gBAExC,kBAAC,GAAD,EAAS,MAAK,QAAS,CAAA;KACjB,CAAA;KAMZ,KACE,GAAM,YAAY,EAAG,UACrB,EAAG,SAAS,EAAW,eACrB,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;MACE,OAAO,EAAG;MACV,WAAW,GAAQ,MACjB,EACE,GACA,EAAG,MACL;gBANJ,CASE,kBAAC,GAAD;OACE,SAAS,kBAAC,GAAD,CAAQ,CAAA;OACjB,OAAO;OACP,OAAO,EAAW;MACnB,CAAA,GACD,kBAAC,GAAD;OACE,SAAS,kBAAC,GAAD,CAAQ,CAAA;OACjB,OAAO;OACP,OAAO,EAAW;MACnB,CAAA,CACS;QACZ,CAAA;IAGL;MAtD8B,YAAY,GAsD1C,CAER;EACI,CAAA;CACP,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import { NewReleasesOutlined } from '@mui/icons-material'\nimport {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Link,\n Stack,\n Typography,\n} from '@mui/material'\nimport { deepEquals } from '@rjsf/utils'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n AccessorChange,\n AccessType,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport DocumentTemplate from '../DocumentTemplate'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\nfunction AccessorRequirementHelpText(props: {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n}) {\n const { managedACTAccessRequirement } = props\n let link: string = ''\n let msg: string = ''\n\n if (\n managedACTAccessRequirement.isCertifiedUserRequired &&\n managedACTAccessRequirement.isValidatedProfileRequired\n ) {\n link = 'https://help.synapse.org/docs/User-Types.2007072795.html'\n msg =\n 'All data requesters must be certified users and have a validated user profile.'\n } else if (managedACTAccessRequirement.isCertifiedUserRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'\n msg = 'All data requesters must be a certified user.'\n } else if (managedACTAccessRequirement.isValidatedProfileRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'\n msg = 'All data requesters must have a validated user profile.'\n }\n return (\n <>\n {managedACTAccessRequirement.isDUCRequired ? (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', py: 1 }}>\n <NewReleasesOutlined sx={{ color: 'error.main' }} />\n <div>\n You must list the Synapse user names of all collaborators listed in\n your Data Use Certificate (DUC).\n </div>\n </Box>\n ) : (\n ''\n )}\n {msg}{' '}\n {link && (\n <Link href={link} target={'_blank'} rel={'noreferrer'}>\n Learn more\n </Link>\n )}\n </>\n )\n}\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * This effect comprises a collection of updates we should immediately apply to a data access request.\n */\n useEffect(() => {\n if (dataAccessRequest && user) {\n let shouldUpdate = false\n\n // Attach the researchProjectId to the request\n if (!dataAccessRequest.researchProjectId) {\n dataAccessRequest.researchProjectId = researchProjectId\n shouldUpdate = true\n }\n\n // Add the current user with GAIN_ACCESS to the list of accessors\n const currentUserWithGainAccess: AccessorChange = {\n userId: user.ownerId,\n type: isRenewal ? AccessType.RENEW_ACCESS : AccessType.GAIN_ACCESS,\n }\n if (\n !dataAccessRequest.accessorChanges ||\n !dataAccessRequest.accessorChanges.find(item =>\n deepEquals(item, currentUserWithGainAccess),\n )\n ) {\n dataAccessRequest.accessorChanges = [\n currentUserWithGainAccess,\n ...(dataAccessRequest.accessorChanges || []),\n ]\n shouldUpdate = true\n }\n\n // SWC-5765: Filter out duplicate accessors\n const seen = new Set()\n const uniqueAccessorChanges = dataAccessRequest.accessorChanges.filter(\n accessorChange => {\n return seen.has(accessorChange.userId)\n ? false\n : seen.add(accessorChange.userId)\n },\n )\n if (\n uniqueAccessorChanges.length !==\n dataAccessRequest.accessorChanges.length\n ) {\n dataAccessRequest.accessorChanges = uniqueAccessorChanges\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n updateRequestAsync(dataAccessRequest)\n }\n }\n }, [\n dataAccessRequest,\n isRenewal,\n researchProjectId,\n updateRequestAsync,\n user,\n ])\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n return {\n ...dataAccessRequest,\n // append local state to the request\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequestAsync({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2 }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n helpText={\n <AccessorRequirementHelpText\n managedACTAccessRequirement={managedACTAccessRequirement}\n />\n }\n />\n )}\n\n {(managedACTAccessRequirement?.isDUCRequired ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC */}\n {managedACTAccessRequirement?.isDUCRequired && (\n <>\n {managedACTAccessRequirement?.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId:\n managedACTAccessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(managedACTAccessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must download and fill out a Data Use Certificate (DUC).\n Be sure to upload the completed DUC below once you've\n completed it.\n </Typography>\n <Typography variant={'body1'} component={'ol'}>\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the\n file.\n </li>\n <li>\n Upload the completed certificate using the button below:\n </li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={resp =>\n uploadCallback(resp, 'ducFileHandleId')\n }\n documentName={'Data Use Certificate'}\n fileHandleAssociations={ducFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import { NewReleasesOutlined } from '@mui/icons-material'\nimport {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Link,\n Stack,\n Typography,\n} from '@mui/material'\nimport { deepEquals } from '@rjsf/utils'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n AccessorChange,\n AccessType,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport DocumentTemplate from '../DocumentTemplate'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\nfunction AccessorRequirementHelpText(props: {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n}) {\n const { managedACTAccessRequirement } = props\n let link: string = ''\n let msg: string = ''\n\n if (\n managedACTAccessRequirement.isCertifiedUserRequired &&\n managedACTAccessRequirement.isValidatedProfileRequired\n ) {\n link = 'https://help.synapse.org/docs/User-Types.2007072795.html'\n msg =\n 'All data requesters must be certified users and have a validated user profile.'\n } else if (managedACTAccessRequirement.isCertifiedUserRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'\n msg = 'All data requesters must be a certified user.'\n } else if (managedACTAccessRequirement.isValidatedProfileRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'\n msg = 'All data requesters must have a validated user profile.'\n }\n return (\n <>\n {managedACTAccessRequirement.isDUCRequired ? (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', py: 1 }}>\n <NewReleasesOutlined sx={{ color: 'error.main' }} />\n <div>\n You must list the Synapse user names of all collaborators listed in\n your Data Use Certificate (DUC).\n </div>\n </Box>\n ) : (\n ''\n )}\n {msg}{' '}\n {link && (\n <Link href={link} target={'_blank'} rel={'noreferrer'}>\n Learn more\n </Link>\n )}\n </>\n )\n}\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * This effect comprises a collection of updates we should immediately apply to a data access request.\n */\n useEffect(() => {\n if (dataAccessRequest && user) {\n let shouldUpdate = false\n\n // Attach the researchProjectId to the request\n if (!dataAccessRequest.researchProjectId) {\n dataAccessRequest.researchProjectId = researchProjectId\n shouldUpdate = true\n }\n\n // Add the current user with GAIN_ACCESS to the list of accessors\n const currentUserWithGainAccess: AccessorChange = {\n userId: user.ownerId,\n type: isRenewal ? AccessType.RENEW_ACCESS : AccessType.GAIN_ACCESS,\n }\n if (\n !dataAccessRequest.accessorChanges ||\n !dataAccessRequest.accessorChanges.find(item =>\n deepEquals(item, currentUserWithGainAccess),\n )\n ) {\n dataAccessRequest.accessorChanges = [\n currentUserWithGainAccess,\n ...(dataAccessRequest.accessorChanges || []),\n ]\n shouldUpdate = true\n }\n\n // SWC-5765: Filter out duplicate accessors\n const seen = new Set()\n const uniqueAccessorChanges = dataAccessRequest.accessorChanges.filter(\n accessorChange => {\n return seen.has(accessorChange.userId)\n ? false\n : seen.add(accessorChange.userId)\n },\n )\n if (\n uniqueAccessorChanges.length !==\n dataAccessRequest.accessorChanges.length\n ) {\n dataAccessRequest.accessorChanges = uniqueAccessorChanges\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n updateRequestAsync(dataAccessRequest)\n }\n }\n }, [\n dataAccessRequest,\n isRenewal,\n researchProjectId,\n updateRequestAsync,\n user,\n ])\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n return {\n ...dataAccessRequest,\n // append local state to the request\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequestAsync({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2 }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n helpText={\n <AccessorRequirementHelpText\n managedACTAccessRequirement={managedACTAccessRequirement}\n />\n }\n />\n )}\n\n {(managedACTAccessRequirement?.isDUCRequired ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC */}\n {managedACTAccessRequirement?.isDUCRequired && (\n <>\n {managedACTAccessRequirement?.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId:\n managedACTAccessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(managedACTAccessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must download and fill out a Data Use Certificate (DUC).\n Be sure to upload the completed DUC below once you've\n completed it.\n </Typography>\n <Typography variant={'body1'} component={'ol'}>\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the\n file.\n </li>\n <li>\n Upload the completed certificate using the button below:\n </li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={resp =>\n uploadCallback(resp, 'ducFileHandleId')\n }\n documentName={'Data Use Certificate'}\n fileHandleAssociations={ducFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentTemplate.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Typography } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport IconSvg from '../../IconSvg/IconSvg'\n\nexport type DownloadDocumentTemplateProps = {\n title: ReactNode\n description: ReactNode\n fileHandleAssociation: FileHandleAssociation\n downloadButtonText: string\n}\n\nexport default function DocumentTemplate(props: DownloadDocumentTemplateProps) {\n const { title, description, fileHandleAssociation, downloadButtonText } =\n props\n\n // get batch of files\n const { data: fileData } = useGetFileBatch(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n },\n {\n enabled: !!fileHandleAssociation,\n },\n )\n\n const fileName = fileData?.requestedFiles[0]?.fileHandle?.fileName\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n {title}\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n {description}\n </Typography>\n <Typography variant={'body1'}>Download this file:</Typography>\n <Typography variant={'smallText1'} sx={{ my: 0.5 }}>\n <strong>{fileName}</strong>\n </Typography>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: 2,\n backgroundColor: 'tertiary.100',\n p: 2.5,\n my: 2,\n flexWrap: { xs: 'nowrap', md: 'wrap-reverse' },\n }}\n >\n <DirectDownloadButton\n variant={'outlined'}\n fileHandleAssociation={fileHandleAssociation}\n fileName={downloadButtonText}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n sx={{ whiteSpace: 'nowrap', flexShrink: 0 }}\n />\n <Typography variant={'body1'}>\n You must fill out and upload this exact version of the template.{' '}\n <strong>No other versions will be accepted.</strong>\n </Typography>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;AAcA,SAAwB,EAAiB,GAAsC;CAC7E,IAAM,EAAE,UAAO,gBAAa,0BAAuB,0BACjD,GAGI,EAAE,MAAM,MAAa,EACzB;EACE,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"DocumentTemplate.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Typography } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport { ReactNode } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport IconSvg from '../../IconSvg/IconSvg'\n\nexport type DownloadDocumentTemplateProps = {\n title: ReactNode\n description: ReactNode\n fileHandleAssociation: FileHandleAssociation\n downloadButtonText: string\n}\n\nexport default function DocumentTemplate(props: DownloadDocumentTemplateProps) {\n const { title, description, fileHandleAssociation, downloadButtonText } =\n props\n\n // get batch of files\n const { data: fileData } = useGetFileBatch(\n {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n },\n {\n enabled: !!fileHandleAssociation,\n },\n )\n\n const fileName = fileData?.requestedFiles[0]?.fileHandle?.fileName\n\n return (\n <>\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n {title}\n </Typography>\n <Typography variant={'body1'} sx={{ my: 2 }}>\n {description}\n </Typography>\n <Typography variant={'body1'}>Download this file:</Typography>\n <Typography variant={'smallText1'} sx={{ my: 0.5 }}>\n <strong>{fileName}</strong>\n </Typography>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n gap: 2,\n backgroundColor: 'tertiary.100',\n p: 2.5,\n my: 2,\n flexWrap: { xs: 'nowrap', md: 'wrap-reverse' },\n }}\n >\n <DirectDownloadButton\n variant={'outlined'}\n fileHandleAssociation={fileHandleAssociation}\n fileName={downloadButtonText}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n sx={{ whiteSpace: 'nowrap', flexShrink: 0 }}\n />\n <Typography variant={'body1'}>\n You must fill out and upload this exact version of the template.{' '}\n <strong>No other versions will be accepted.</strong>\n </Typography>\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;AAcA,SAAwB,EAAiB,GAAsC;CAC7E,IAAM,EAAE,UAAO,gBAAa,0BAAuB,0BACjD,GAGI,EAAE,MAAM,MAAa,EACzB;EACE,gBAAgB,CAAC,CAAqB;EACtC,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;CAC/B,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF,GAEM,IAAW,GAAU,eAAe,IAAI,YAAY;CAE1D,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;IAAE,IAAI;IAAG,IAAI;GAAE;aAClD;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;GAAS,IAAI,EAAE,IAAI,EAAE;aACvC;EACS,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;aAAS;EAA+B,CAAA;EAC7D,kBAAC,GAAD;GAAY,SAAS;GAAc,IAAI,EAAE,IAAI,GAAI;aAC/C,kBAAC,UAAD,EAAA,UAAS,EAAiB,CAAA;EAChB,CAAA;EACZ,kBAAC,GAAD;GACE,IAAI;IACF,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,KAAK;IACL,iBAAiB;IACjB,GAAG;IACH,IAAI;IACJ,UAAU;KAAE,IAAI;KAAU,IAAI;IAAe;GAC/C;aAVF,CAYE,kBAAC,GAAD;IACE,SAAS;IACc;IACvB,UAAU;IACV,SAAS,kBAAC,GAAD;KAAS,MAAM;KAAY,MAAM;IAAQ,CAAA;IAClD,IAAI;KAAE,YAAY;KAAU,YAAY;IAAE;GAC3C,CAAA,GACD,kBAAC,GAAD;IAAY,SAAS;cAArB;KAA8B;KACqC;KACjE,kBAAC,UAAD,EAAA,UAAQ,sCAA2C,CAAA;IACzC;KACT;;CACL,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedACTAccessRequirementFormWikiWrapper.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.tsx"],"sourcesContent":["import { useGetAccessRequirementWikiPageKey } from '@/synapse-queries'\nimport { GridLegacy as Grid, Typography } from '@mui/material'\nimport { PropsWithChildren } from 'react'\nimport MarkdownSynapse from '../../Markdown/MarkdownSynapse'\nimport { useCanShowManagedACTWikiInWizard } from '../AccessRequirementListUtils'\n\ntype ManagedACTAccessRequirementFormWikiWrapperProps = PropsWithChildren<{\n managedACTAccessRequirementId: string\n}>\n\n/**\n * Renders the child content next to the wiki associated with the provided ManagedACTAccessRequirement. Utilizes a grid\n * layout where the wiki content will not appear on small screen sizes.\n *\n * @param props\n * @constructor\n */\nexport default function ManagedACTAccessRequirementFormWikiWrapper(\n props: ManagedACTAccessRequirementFormWikiWrapperProps,\n) {\n const { children, managedACTAccessRequirementId } = props\n const { data: wikiPage } = useGetAccessRequirementWikiPageKey(\n managedACTAccessRequirementId,\n {\n enabled: !!managedACTAccessRequirementId,\n },\n )\n\n const canShowWiki = useCanShowManagedACTWikiInWizard()\n\n return (\n <Grid container spacing={5}>\n <Grid\n item\n xs={12}\n md={6}\n lg={5}\n sx={{\n overflow: 'auto',\n pr: {\n xs: 0,\n md: 1,\n },\n }}\n >\n {children}\n </Grid>\n {canShowWiki && (\n <Grid\n item\n md={6}\n lg={7}\n sx={{\n overflowY: 'scroll',\n pr: 1,\n }}\n >\n <Typography variant={'headline3'} sx={{ mb: 2 }}>\n Instructions\n </Typography>\n {wikiPage && (\n <MarkdownSynapse\n wikiId={wikiPage.wikiPageId}\n ownerId={wikiPage.ownerObjectId}\n objectType={wikiPage.ownerObjectType}\n loadingSkeletonRowCount={15}\n />\n )}\n </Grid>\n )}\n </Grid>\n )\n}\n"],"mappings":";;;;;;;AAiBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,qCAAkC,GAC9C,EAAE,MAAM,MAAa,EACzB,GACA,EACE,SAAS,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ManagedACTAccessRequirementFormWikiWrapper.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.tsx"],"sourcesContent":["import { useGetAccessRequirementWikiPageKey } from '@/synapse-queries'\nimport { GridLegacy as Grid, Typography } from '@mui/material'\nimport { PropsWithChildren } from 'react'\nimport MarkdownSynapse from '../../Markdown/MarkdownSynapse'\nimport { useCanShowManagedACTWikiInWizard } from '../AccessRequirementListUtils'\n\ntype ManagedACTAccessRequirementFormWikiWrapperProps = PropsWithChildren<{\n managedACTAccessRequirementId: string\n}>\n\n/**\n * Renders the child content next to the wiki associated with the provided ManagedACTAccessRequirement. Utilizes a grid\n * layout where the wiki content will not appear on small screen sizes.\n *\n * @param props\n * @constructor\n */\nexport default function ManagedACTAccessRequirementFormWikiWrapper(\n props: ManagedACTAccessRequirementFormWikiWrapperProps,\n) {\n const { children, managedACTAccessRequirementId } = props\n const { data: wikiPage } = useGetAccessRequirementWikiPageKey(\n managedACTAccessRequirementId,\n {\n enabled: !!managedACTAccessRequirementId,\n },\n )\n\n const canShowWiki = useCanShowManagedACTWikiInWizard()\n\n return (\n <Grid container spacing={5}>\n <Grid\n item\n xs={12}\n md={6}\n lg={5}\n sx={{\n overflow: 'auto',\n pr: {\n xs: 0,\n md: 1,\n },\n }}\n >\n {children}\n </Grid>\n {canShowWiki && (\n <Grid\n item\n md={6}\n lg={7}\n sx={{\n overflowY: 'scroll',\n pr: 1,\n }}\n >\n <Typography variant={'headline3'} sx={{ mb: 2 }}>\n Instructions\n </Typography>\n {wikiPage && (\n <MarkdownSynapse\n wikiId={wikiPage.wikiPageId}\n ownerId={wikiPage.ownerObjectId}\n objectType={wikiPage.ownerObjectType}\n loadingSkeletonRowCount={15}\n />\n )}\n </Grid>\n )}\n </Grid>\n )\n}\n"],"mappings":";;;;;;;AAiBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,aAAU,qCAAkC,GAC9C,EAAE,MAAM,MAAa,EACzB,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF,GAEM,IAAc,EAAiC;CAErD,OACE,kBAAC,GAAD;EAAM,WAAA;EAAU,SAAS;YAAzB,CACE,kBAAC,GAAD;GACE,MAAA;GACA,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;IACF,UAAU;IACV,IAAI;KACF,IAAI;KACJ,IAAI;IACN;GACF;GAEC;EACG,CAAA,GACL,KACC,kBAAC,GAAD;GACE,MAAA;GACA,IAAI;GACJ,IAAI;GACJ,IAAI;IACF,WAAW;IACX,IAAI;GACN;aAPF,CASE,kBAAC,GAAD;IAAY,SAAS;IAAa,IAAI,EAAE,IAAI,EAAE;cAAG;GAErC,CAAA,GACX,KACC,kBAAC,GAAD;IACE,QAAQ,EAAS;IACjB,SAAS,EAAS;IAClB,YAAY,EAAS;IACrB,yBAAyB;GAC1B,CAAA,CAEC;IAEJ;;AAEV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedACTAccessRequirementItem.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.tsx"],"sourcesContent":["import {\n useCancelDataAccessRequest,\n useGetAccessRequirementStatus,\n useGetAccessRequirementWikiPageKey,\n useGetRestrictionInformation,\n} from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useCallback } from 'react'\nimport MarkdownSynapse from '../../Markdown/MarkdownSynapse'\nimport RequirementItem from '../RequirementItem/RequirementItem'\nimport ManagedACTAccessRequirementItemView from './ManagedACTAccessRequirementItemView'\n\nexport type ManagedACTAccessRequirementItemProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * If available, the ID of the object that this access requirement is being displayed for.\n */\n subjectId?: string\n /**\n * If available, the type of the object that this access requirement is being displayed for.\n */\n subjectType?: RestrictableObjectType\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n */\nexport function ManagedACTAccessRequirementItem(\n props: ManagedACTAccessRequirementItemProps,\n) {\n const {\n accessRequirement,\n subjectId,\n subjectType,\n onRejectTerms,\n onRequestAccess,\n } = props\n const {\n data: wikiPageKey,\n isLoading: isLoadingWikiPageKey,\n error: getWikiPageError,\n } = useGetAccessRequirementWikiPageKey(accessRequirement.id.toString())\n\n const {\n data: accessRequirementStatus,\n isLoading: isLoadingArStatus,\n error: getArStatusError,\n } = useGetAccessRequirementStatus<ManagedACTAccessRequirementStatus>(\n String(accessRequirement.id),\n )\n\n const {\n data: restrictionInformation,\n isLoading: isLoadingRestrictionInfo,\n error: getRestrictionInfoError,\n } = useGetRestrictionInformation(\n {\n objectId: subjectId!,\n restrictableObjectType: subjectType!,\n },\n { enabled: !!subjectId && !!subjectType },\n )\n\n const {\n mutate: cancelDataAccessRequest,\n error: cancelRequestError,\n isPending: cancelRequestIsPending,\n } = useCancelDataAccessRequest()\n\n const onCancelDataAccessRequest = useCallback(() => {\n if (!accessRequirementStatus) {\n // no-op; the component is still loading, so this will never happen\n return\n }\n cancelDataAccessRequest({\n submissionId:\n accessRequirementStatus.currentSubmissionStatus!.submissionId,\n accessRequirementId: String(accessRequirement.id),\n })\n }, [accessRequirement.id, accessRequirementStatus, cancelDataAccessRequest])\n\n const isLoading =\n isLoadingWikiPageKey || isLoadingArStatus || isLoadingRestrictionInfo\n\n let error: ReactNode = null\n if (\n getWikiPageError ||\n getArStatusError ||\n getRestrictionInfoError ||\n cancelRequestError\n ) {\n error = (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n {getWikiPageError && getWikiPageError.reason}\n {getArStatusError && getArStatusError.reason}\n {getRestrictionInfoError && getRestrictionInfoError.reason}\n {cancelRequestError && (\n <>\n <strong>Error canceling your data access request:</strong>\n <br />\n {cancelRequestError.reason}\n </>\n )}\n </Alert>\n )\n }\n\n return (\n <ManagedACTAccessRequirementItemView\n isLoading={isLoading}\n accessRequirement={accessRequirement}\n accessRequirementStatus={accessRequirementStatus}\n restrictionInformation={restrictionInformation}\n wikiPage={\n wikiPageKey && (\n <MarkdownSynapse\n wikiId={wikiPageKey.wikiPageId}\n ownerId={wikiPageKey.ownerObjectId}\n objectType={wikiPageKey.ownerObjectType}\n />\n )\n }\n error={error}\n onCancelDataAccessRequest={onCancelDataAccessRequest}\n onRejectTerms={onRejectTerms}\n onRequestAccess={onRequestAccess}\n cancelRequestIsPending={cancelRequestIsPending}\n />\n )\n}\n\nexport default ManagedACTAccessRequirementItem\n"],"mappings":";;;;;;;;;AA4CA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,sBACA,cACA,gBACA,kBACA,uBACE,GACE,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAmC,EAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"ManagedACTAccessRequirementItem.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.tsx"],"sourcesContent":["import {\n useCancelDataAccessRequest,\n useGetAccessRequirementStatus,\n useGetAccessRequirementWikiPageKey,\n useGetRestrictionInformation,\n} from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useCallback } from 'react'\nimport MarkdownSynapse from '../../Markdown/MarkdownSynapse'\nimport RequirementItem from '../RequirementItem/RequirementItem'\nimport ManagedACTAccessRequirementItemView from './ManagedACTAccessRequirementItemView'\n\nexport type ManagedACTAccessRequirementItemProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * If available, the ID of the object that this access requirement is being displayed for.\n */\n subjectId?: string\n /**\n * If available, the type of the object that this access requirement is being displayed for.\n */\n subjectType?: RestrictableObjectType\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n */\nexport function ManagedACTAccessRequirementItem(\n props: ManagedACTAccessRequirementItemProps,\n) {\n const {\n accessRequirement,\n subjectId,\n subjectType,\n onRejectTerms,\n onRequestAccess,\n } = props\n const {\n data: wikiPageKey,\n isLoading: isLoadingWikiPageKey,\n error: getWikiPageError,\n } = useGetAccessRequirementWikiPageKey(accessRequirement.id.toString())\n\n const {\n data: accessRequirementStatus,\n isLoading: isLoadingArStatus,\n error: getArStatusError,\n } = useGetAccessRequirementStatus<ManagedACTAccessRequirementStatus>(\n String(accessRequirement.id),\n )\n\n const {\n data: restrictionInformation,\n isLoading: isLoadingRestrictionInfo,\n error: getRestrictionInfoError,\n } = useGetRestrictionInformation(\n {\n objectId: subjectId!,\n restrictableObjectType: subjectType!,\n },\n { enabled: !!subjectId && !!subjectType },\n )\n\n const {\n mutate: cancelDataAccessRequest,\n error: cancelRequestError,\n isPending: cancelRequestIsPending,\n } = useCancelDataAccessRequest()\n\n const onCancelDataAccessRequest = useCallback(() => {\n if (!accessRequirementStatus) {\n // no-op; the component is still loading, so this will never happen\n return\n }\n cancelDataAccessRequest({\n submissionId:\n accessRequirementStatus.currentSubmissionStatus!.submissionId,\n accessRequirementId: String(accessRequirement.id),\n })\n }, [accessRequirement.id, accessRequirementStatus, cancelDataAccessRequest])\n\n const isLoading =\n isLoadingWikiPageKey || isLoadingArStatus || isLoadingRestrictionInfo\n\n let error: ReactNode = null\n if (\n getWikiPageError ||\n getArStatusError ||\n getRestrictionInfoError ||\n cancelRequestError\n ) {\n error = (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n {getWikiPageError && getWikiPageError.reason}\n {getArStatusError && getArStatusError.reason}\n {getRestrictionInfoError && getRestrictionInfoError.reason}\n {cancelRequestError && (\n <>\n <strong>Error canceling your data access request:</strong>\n <br />\n {cancelRequestError.reason}\n </>\n )}\n </Alert>\n )\n }\n\n return (\n <ManagedACTAccessRequirementItemView\n isLoading={isLoading}\n accessRequirement={accessRequirement}\n accessRequirementStatus={accessRequirementStatus}\n restrictionInformation={restrictionInformation}\n wikiPage={\n wikiPageKey && (\n <MarkdownSynapse\n wikiId={wikiPageKey.wikiPageId}\n ownerId={wikiPageKey.ownerObjectId}\n objectType={wikiPageKey.ownerObjectType}\n />\n )\n }\n error={error}\n onCancelDataAccessRequest={onCancelDataAccessRequest}\n onRejectTerms={onRejectTerms}\n onRequestAccess={onRequestAccess}\n cancelRequestIsPending={cancelRequestIsPending}\n />\n )\n}\n\nexport default ManagedACTAccessRequirementItem\n"],"mappings":";;;;;;;;;AA4CA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,sBACA,cACA,gBACA,kBACA,uBACE,GACE,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAmC,EAAkB,GAAG,SAAS,CAAC,GAEhE,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF,OAAO,EAAkB,EAAE,CAC7B,GAEM,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF;EACE,UAAU;EACV,wBAAwB;CAC1B,GACA,EAAE,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC,EAAY,CAC1C,GAEM,EACJ,QAAQ,GACR,OAAO,GACP,WAAW,MACT,EAA2B,GAEzB,IAA4B,QAAkB;EAC7C,KAIL,EAAwB;GACtB,cACE,EAAwB,wBAAyB;GACnD,qBAAqB,OAAO,EAAkB,EAAE;EAClD,CAAC;CACH,GAAG;EAAC,EAAkB;EAAI;EAAyB;CAAuB,CAAC,GAErE,IACJ,KAAwB,KAAqB,GAE3C,IAAmB;CAuBvB,QArBE,KACA,KACA,KACA,OAEA,IACE,kBAAC,GAAD;EAAO,WAAW;EAAiC,UAAU;YAA7D;GACG,KAAoB,EAAiB;GACrC,KAAoB,EAAiB;GACrC,KAA2B,EAAwB;GACnD,KACC,kBAAA,GAAA,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,4CAAiD,CAAA;IACzD,kBAAC,MAAD,CAAK,CAAA;IACJ,EAAmB;GACpB,EAAA,CAAA;EAEC;MAKT,kBAAC,GAAD;EACa;EACQ;EACM;EACD;EACxB,UACE,KACE,kBAAC,GAAD;GACE,QAAQ,EAAY;GACpB,SAAS,EAAY;GACrB,YAAY,EAAY;EACzB,CAAA;EAGE;EACoB;EACZ;EACE;EACO;CACzB,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedACTAccessRequirementItemView.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport { Alert, Box, ButtonProps, Link, Typography } from '@mui/material'\nimport Stack from '@mui/material/Stack'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictionInformationResponse,\n SubmissionState,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useState } from 'react'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from '../RequirementItem/RequirementItem'\n\nexport type ManagedACTAccessRequirementItemViewProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * The user's status for this access requirement.\n */\n accessRequirementStatus?: ManagedACTAccessRequirementStatus\n /**\n * A ReactNode that contains the wiki page content for this access requirement.\n */\n wikiPage?: ReactNode\n /**\n * Whether the component is currently loading data.\n */\n isLoading: boolean\n /**\n * If available, the restriction information relevant to the subject that this\n * access requirement is being displayed for.\n *\n * This is used to determine if the user is exempt from meeting this requirement.\n */\n restrictionInformation?: RestrictionInformationResponse\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n /**\n * Invoked when the user clicks the \"Cancel Request\" button (only shown if a request is active).\n */\n onCancelDataAccessRequest: () => void\n /**\n * ReactNode to display if there is an error in the component.\n */\n error?: ReactNode\n /**\n * Whether the a request to cancel the data access request is currently pending.\n */\n cancelRequestIsPending: boolean\n}\n\nconst APPROVED_TEXT = 'Your data access request has been approved.'\nconst EXEMPT_TEXT =\n 'This data access requirement is fulfilled by your team membership and permissions.'\n\n/**\n * Translate the ManagedACTAccessRequirementStatus and exemption status into a the\n * RequirementItemStatus displayed by the UI\n * @param status\n * @param isExempt\n */\nfunction getRequirementItemUiState(\n status: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n): RequirementItemStatus {\n if (isExempt) {\n return RequirementItemStatus.COMPLETE\n }\n\n // If there's no current submission, check the isApproved flag directly\n if (!status.currentSubmissionStatus) {\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n }\n\n switch (status.currentSubmissionStatus.state) {\n case SubmissionState.APPROVED:\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n case SubmissionState.SUBMITTED:\n return RequirementItemStatus.PENDING\n case SubmissionState.REJECTED:\n case SubmissionState.CANCELLED:\n default:\n return RequirementItemStatus.LOCKED\n }\n}\n\n/**\n * Gets the action buttons to display for a ManagedACTAccessRequirement based on the current state of the requirement.\n * @param accessRequirementStatus - the user's status for the access requirement\n * @param isExempt - whether the user is exempt from submitting a request for this access requirement\n * @param cancelRequestIsPending - whether a request to cancel the data access request is currently pending\n * @param callbacks - callbacks to invoke when the user clicks the action buttons\n */\nfunction getActionButtonProps(\n accessRequirementStatus: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n cancelRequestIsPending: boolean,\n callbacks: {\n onRequestAccess: () => void\n onRejectTerms: () => void\n onCancelDataAccessRequest: () => void\n },\n): ButtonProps[] {\n const { onRequestAccess, onRejectTerms, onCancelDataAccessRequest } =\n callbacks\n\n const actions: ButtonProps[] = []\n\n if (accessRequirementStatus) {\n if (accessRequirementStatus.currentSubmissionStatus == null) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n // Show \"Update Request\" if approved, \"Request access\" otherwise\n children: accessRequirementStatus.isApproved\n ? 'Update Request'\n : 'Request access',\n })\n if (!isExempt && !accessRequirementStatus.isApproved) {\n actions.push({\n variant: 'text',\n onClick: onRejectTerms,\n children: 'I do not accept',\n })\n }\n } else if (\n [\n SubmissionState.APPROVED,\n SubmissionState.REJECTED,\n SubmissionState.CANCELLED,\n ].includes(accessRequirementStatus.currentSubmissionStatus.state)\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n children: 'Update Request',\n })\n } else if (\n accessRequirementStatus.currentSubmissionStatus.state ===\n SubmissionState.SUBMITTED\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onCancelDataAccessRequest,\n children: 'Cancel Request',\n loading: cancelRequestIsPending,\n })\n }\n }\n return actions\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n *\n * This is a UI-only component that does not make any requests to external stores, and is exported for testing/Storybook only.\n */\nexport function ManagedACTAccessRequirementItemView(\n props: ManagedACTAccessRequirementItemViewProps,\n) {\n const {\n accessRequirement,\n accessRequirementStatus,\n isLoading,\n wikiPage,\n restrictionInformation,\n onRejectTerms,\n onRequestAccess,\n error,\n onCancelDataAccessRequest,\n cancelRequestIsPending,\n } = props\n const restrictionFulfillment =\n restrictionInformation?.restrictionDetails?.find(\n ar => ar.accessRequirementId === accessRequirement.id,\n )\n\n const [collapseWikiContent, setCollapseWikiContent] = useState<boolean>(true)\n\n const isApproved = accessRequirementStatus?.isApproved\n const isExempt = Boolean(restrictionFulfillment?.isExempt)\n\n const requirementTermsWikiContent = (\n <Stack gap={2}>\n {wikiPage}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.SUBMITTED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <strong>You have submitted a data access request.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'success'}\n >\n <strong>Your data access request has been approved.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n !isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'warning'}\n >\n <Typography variant={'smallText1'} gutterBottom>\n <strong>Your data access has been revoked.</strong>\n </Typography>\n {accessRequirementStatus.expiredOn &&\n dayjs(accessRequirementStatus.expiredOn).isBefore(dayjs()) && (\n <Typography variant={'smallText1'} gutterBottom>\n Your access expired on{' '}\n {formatDate(dayjs(accessRequirementStatus.expiredOn))}.\n </Typography>\n )}\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.REJECTED && (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n <Typography variant={'body1'} gutterBottom>\n <strong>Your data access request has been rejected.</strong>\n </Typography>\n <Typography\n variant={'body1'}\n gutterBottom\n sx={{ whiteSpace: 'pre-line' }}\n >\n {accessRequirementStatus?.currentSubmissionStatus.rejectedReason ||\n ''}\n </Typography>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.CANCELLED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <Typography variant={'body1'}>\n Your data access request has been canceled.\n </Typography>\n </Alert>\n )}\n </Stack>\n )\n\n let actions: ButtonProps[] = []\n if (!isLoading && accessRequirementStatus) {\n actions = getActionButtonProps(\n accessRequirementStatus,\n isExempt,\n cancelRequestIsPending,\n {\n onRequestAccess,\n onRejectTerms,\n onCancelDataAccessRequest,\n },\n )\n }\n\n let requirementItemState: RequirementItemStatus =\n RequirementItemStatus.LOADING\n if (!isLoading && accessRequirementStatus) {\n requirementItemState = getRequirementItemUiState(\n accessRequirementStatus,\n isExempt,\n )\n }\n\n return (\n <RequirementItem\n data-testid=\"ManagedACTAccessRequirementItem\"\n status={requirementItemState}\n actions={actions}\n >\n {/* If not approved/exempt, show the terms */}\n {!isApproved && !isExempt && <>{requirementTermsWikiContent}</>}\n {(isApproved || isExempt) && (\n <>\n <Typography variant={'body1'}>\n {isApproved && APPROVED_TEXT} {isExempt && EXEMPT_TEXT}{' '}\n <Link\n role={'button'}\n onClick={() => {\n setCollapseWikiContent(!collapseWikiContent)\n }}\n >\n {collapseWikiContent ? 'View Terms' : 'Hide Terms'}\n </Link>\n </Typography>\n {!collapseWikiContent && (\n <Box sx={{ my: 1 }}>{requirementTermsWikiContent}</Box>\n )}\n </>\n )}\n {error}\n </RequirementItem>\n )\n}\n\nexport default ManagedACTAccessRequirementItemView\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManagedACTAccessRequirementItemView.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport { Alert, Box, ButtonProps, Link, Typography } from '@mui/material'\nimport Stack from '@mui/material/Stack'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictionInformationResponse,\n SubmissionState,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useState } from 'react'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from '../RequirementItem/RequirementItem'\n\nexport type ManagedACTAccessRequirementItemViewProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * The user's status for this access requirement.\n */\n accessRequirementStatus?: ManagedACTAccessRequirementStatus\n /**\n * A ReactNode that contains the wiki page content for this access requirement.\n */\n wikiPage?: ReactNode\n /**\n * Whether the component is currently loading data.\n */\n isLoading: boolean\n /**\n * If available, the restriction information relevant to the subject that this\n * access requirement is being displayed for.\n *\n * This is used to determine if the user is exempt from meeting this requirement.\n */\n restrictionInformation?: RestrictionInformationResponse\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n /**\n * Invoked when the user clicks the \"Cancel Request\" button (only shown if a request is active).\n */\n onCancelDataAccessRequest: () => void\n /**\n * ReactNode to display if there is an error in the component.\n */\n error?: ReactNode\n /**\n * Whether the a request to cancel the data access request is currently pending.\n */\n cancelRequestIsPending: boolean\n}\n\nconst APPROVED_TEXT = 'Your data access request has been approved.'\nconst EXEMPT_TEXT =\n 'This data access requirement is fulfilled by your team membership and permissions.'\n\n/**\n * Translate the ManagedACTAccessRequirementStatus and exemption status into a the\n * RequirementItemStatus displayed by the UI\n * @param status\n * @param isExempt\n */\nfunction getRequirementItemUiState(\n status: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n): RequirementItemStatus {\n if (isExempt) {\n return RequirementItemStatus.COMPLETE\n }\n\n // If there's no current submission, check the isApproved flag directly\n if (!status.currentSubmissionStatus) {\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n }\n\n switch (status.currentSubmissionStatus.state) {\n case SubmissionState.APPROVED:\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n case SubmissionState.SUBMITTED:\n return RequirementItemStatus.PENDING\n case SubmissionState.REJECTED:\n case SubmissionState.CANCELLED:\n default:\n return RequirementItemStatus.LOCKED\n }\n}\n\n/**\n * Gets the action buttons to display for a ManagedACTAccessRequirement based on the current state of the requirement.\n * @param accessRequirementStatus - the user's status for the access requirement\n * @param isExempt - whether the user is exempt from submitting a request for this access requirement\n * @param cancelRequestIsPending - whether a request to cancel the data access request is currently pending\n * @param callbacks - callbacks to invoke when the user clicks the action buttons\n */\nfunction getActionButtonProps(\n accessRequirementStatus: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n cancelRequestIsPending: boolean,\n callbacks: {\n onRequestAccess: () => void\n onRejectTerms: () => void\n onCancelDataAccessRequest: () => void\n },\n): ButtonProps[] {\n const { onRequestAccess, onRejectTerms, onCancelDataAccessRequest } =\n callbacks\n\n const actions: ButtonProps[] = []\n\n if (accessRequirementStatus) {\n if (accessRequirementStatus.currentSubmissionStatus == null) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n // Show \"Update Request\" if approved, \"Request access\" otherwise\n children: accessRequirementStatus.isApproved\n ? 'Update Request'\n : 'Request access',\n })\n if (!isExempt && !accessRequirementStatus.isApproved) {\n actions.push({\n variant: 'text',\n onClick: onRejectTerms,\n children: 'I do not accept',\n })\n }\n } else if (\n [\n SubmissionState.APPROVED,\n SubmissionState.REJECTED,\n SubmissionState.CANCELLED,\n ].includes(accessRequirementStatus.currentSubmissionStatus.state)\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n children: 'Update Request',\n })\n } else if (\n accessRequirementStatus.currentSubmissionStatus.state ===\n SubmissionState.SUBMITTED\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onCancelDataAccessRequest,\n children: 'Cancel Request',\n loading: cancelRequestIsPending,\n })\n }\n }\n return actions\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n *\n * This is a UI-only component that does not make any requests to external stores, and is exported for testing/Storybook only.\n */\nexport function ManagedACTAccessRequirementItemView(\n props: ManagedACTAccessRequirementItemViewProps,\n) {\n const {\n accessRequirement,\n accessRequirementStatus,\n isLoading,\n wikiPage,\n restrictionInformation,\n onRejectTerms,\n onRequestAccess,\n error,\n onCancelDataAccessRequest,\n cancelRequestIsPending,\n } = props\n const restrictionFulfillment =\n restrictionInformation?.restrictionDetails?.find(\n ar => ar.accessRequirementId === accessRequirement.id,\n )\n\n const [collapseWikiContent, setCollapseWikiContent] = useState<boolean>(true)\n\n const isApproved = accessRequirementStatus?.isApproved\n const isExempt = Boolean(restrictionFulfillment?.isExempt)\n\n const requirementTermsWikiContent = (\n <Stack gap={2}>\n {wikiPage}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.SUBMITTED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <strong>You have submitted a data access request.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'success'}\n >\n <strong>Your data access request has been approved.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n !isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'warning'}\n >\n <Typography variant={'smallText1'} gutterBottom>\n <strong>Your data access has been revoked.</strong>\n </Typography>\n {accessRequirementStatus.expiredOn &&\n dayjs(accessRequirementStatus.expiredOn).isBefore(dayjs()) && (\n <Typography variant={'smallText1'} gutterBottom>\n Your access expired on{' '}\n {formatDate(dayjs(accessRequirementStatus.expiredOn))}.\n </Typography>\n )}\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.REJECTED && (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n <Typography variant={'body1'} gutterBottom>\n <strong>Your data access request has been rejected.</strong>\n </Typography>\n <Typography\n variant={'body1'}\n gutterBottom\n sx={{ whiteSpace: 'pre-line' }}\n >\n {accessRequirementStatus?.currentSubmissionStatus.rejectedReason ||\n ''}\n </Typography>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.CANCELLED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <Typography variant={'body1'}>\n Your data access request has been canceled.\n </Typography>\n </Alert>\n )}\n </Stack>\n )\n\n let actions: ButtonProps[] = []\n if (!isLoading && accessRequirementStatus) {\n actions = getActionButtonProps(\n accessRequirementStatus,\n isExempt,\n cancelRequestIsPending,\n {\n onRequestAccess,\n onRejectTerms,\n onCancelDataAccessRequest,\n },\n )\n }\n\n let requirementItemState: RequirementItemStatus =\n RequirementItemStatus.LOADING\n if (!isLoading && accessRequirementStatus) {\n requirementItemState = getRequirementItemUiState(\n accessRequirementStatus,\n isExempt,\n )\n }\n\n return (\n <RequirementItem\n data-testid=\"ManagedACTAccessRequirementItem\"\n status={requirementItemState}\n actions={actions}\n >\n {/* If not approved/exempt, show the terms */}\n {!isApproved && !isExempt && <>{requirementTermsWikiContent}</>}\n {(isApproved || isExempt) && (\n <>\n <Typography variant={'body1'}>\n {isApproved && APPROVED_TEXT} {isExempt && EXEMPT_TEXT}{' '}\n <Link\n role={'button'}\n onClick={() => {\n setCollapseWikiContent(!collapseWikiContent)\n }}\n >\n {collapseWikiContent ? 'View Terms' : 'Hide Terms'}\n </Link>\n </Typography>\n {!collapseWikiContent && (\n <Box sx={{ my: 1 }}>{requirementTermsWikiContent}</Box>\n )}\n </>\n )}\n {error}\n </RequirementItem>\n )\n}\n\nexport default ManagedACTAccessRequirementItemView\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestDataAccessSuccess.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.tsx"],"sourcesContent":["import {\n Box,\n Button,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport IconSvg from '../../IconSvg/IconSvg'\n\nexport type RequestDataAccessSuccessProps = {\n onHide: () => void\n}\n\nexport default function RequestDataAccessSuccess(\n props: RequestDataAccessSuccessProps,\n) {\n const { onHide } = props\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Your Data Access Request Has Been Submitted\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n\n <DialogContent>\n <Typography variant=\"body1\">\n Your data access request has been submitted and is currently being\n reviewed. Please allow for up to 2 weeks for your request to be\n reviewed and approved.\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={onHide}>\n Finish\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":";;;;AAgBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,cAAW;
|
|
1
|
+
{"version":3,"file":"RequestDataAccessSuccess.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.tsx"],"sourcesContent":["import {\n Box,\n Button,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport IconSvg from '../../IconSvg/IconSvg'\n\nexport type RequestDataAccessSuccessProps = {\n onHide: () => void\n}\n\nexport default function RequestDataAccessSuccess(\n props: RequestDataAccessSuccessProps,\n) {\n const { onHide } = props\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Your Data Access Request Has Been Submitted\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n\n <DialogContent>\n <Typography variant=\"body1\">\n Your data access request has been submitted and is currently being\n reviewed. Please allow for up to 2 weeks for your request to be\n reviewed and approved.\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={onHide}>\n Finish\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":";;;;AAgBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,cAAW;CACnB,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAU;GACV,IAAI;IACF,YAAY;IACZ,KAAK;GACP;aALF;IAMC;IAEC,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;IAC3B,kBAAC,GAAD;KAAY,SAAS;eACnB,kBAAC,GAAD;MAAS,MAAM;MAAS,MAAM;MAAO,IAAI,EAAE,OAAO,WAAW;KAAI,CAAA;IACvD,CAAA;GACP;KACI,CAAA;EAEb,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAY,SAAQ;aAAQ;EAIhB,CAAA,EACC,CAAA;EACf,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAQ,SAAQ;GAAY,SAAS;aAAQ;EAErC,CAAA,EACK,CAAA;CACf,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResearchProjectForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"sourcesContent":["import {\n useGetResearchProject,\n useUpdateResearchProject,\n} from '@/synapse-queries'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ResearchProject,\n} from '@sage-bionetworks/synapse-types'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { FormEvent, useEffect, useState } from 'react'\nimport HelpPopover from '../../../HelpPopover'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport TextFieldWithWordLimit, {\n getWordCount,\n} from '../../../TextField/TextFieldWithWordLimit'\nimport { AlertProps } from '../DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\n\nconst INTENDED_DATA_USE_MIN_WORD_COUNT = 50\nconst INTENDED_DATA_USE_MAX_WORD_COUNT = 750 // SWC-7526\n\nexport type ResearchProjectFormProps = {\n /* The access requirement to which the research project refers */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSave?: (researchProject: ResearchProject) => void\n onHide?: () => void\n}\n\n/**\n * Step 1 of the Data Access Request/Renewal flow prompts the user to provide information about their ResearchProject.\n */\nexport default function ResearchProjectForm(props: ResearchProjectFormProps) {\n const { onSave, managedACTAccessRequirement, onHide } = props\n const [projectLead, setProjectLead] = useState<string>('')\n const [institution, setInstitution] = useState<string>('')\n const [intendedDataUseStatement, setIntendedDataUseStatement] =\n useState<string>('')\n const [alert, setAlert] = useState<AlertProps | undefined>()\n\n const [showConfirmationScreen, setShowConfirmationScreen] = useState(false)\n\n const { data: existingResearchProject, isLoading: isLoadingInitialData } =\n useGetResearchProject(String(managedACTAccessRequirement.id), {\n // Infinite staleTime ensures this won't be refetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n // Populate the form with existing data if it exists\n useEffect(() => {\n if (isEmpty(projectLead) && existingResearchProject?.projectLead) {\n setProjectLead(existingResearchProject?.projectLead)\n }\n if (isEmpty(institution) && existingResearchProject?.institution) {\n setInstitution(existingResearchProject?.institution)\n }\n if (\n isEmpty(intendedDataUseStatement) &&\n existingResearchProject?.intendedDataUseStatement\n ) {\n setIntendedDataUseStatement(\n existingResearchProject?.intendedDataUseStatement,\n )\n }\n }, [\n existingResearchProject?.institution,\n existingResearchProject?.intendedDataUseStatement,\n existingResearchProject?.projectLead,\n // PORTALS-3774: initialize from existingResearchProject, but do not reset institution,\n // projectLead, or intendedDataUseStatement if they have been modified\n ])\n\n const { mutate, isPending: updateIsPending } = useUpdateResearchProject({\n onSuccess: data => {\n if (onSave) {\n onSave(data)\n }\n },\n onError: e => {\n console.log(\n 'RequestDataAccessStep1: Error updating research project data: ',\n e,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n },\n })\n\n const isLoading = isLoadingInitialData || updateIsPending\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Unable to update research project data.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const handleSubmit = (e: FormEvent<HTMLElement>) => {\n e.preventDefault()\n if (!showConfirmationScreen) {\n setShowConfirmationScreen(true)\n } else {\n mutate({\n ...existingResearchProject,\n accessRequirementId: String(managedACTAccessRequirement.id),\n institution: institution,\n projectLead: projectLead,\n intendedDataUseStatement: intendedDataUseStatement || undefined,\n })\n setShowConfirmationScreen(false)\n }\n }\n\n const formIsValid =\n projectLead &&\n institution &&\n (!managedACTAccessRequirement.isIDURequired ||\n (intendedDataUseStatement &&\n getWordCount(intendedDataUseStatement) >=\n INTENDED_DATA_USE_MIN_WORD_COUNT &&\n getWordCount(intendedDataUseStatement) <=\n INTENDED_DATA_USE_MAX_WORD_COUNT))\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n {showConfirmationScreen && (\n <ConfirmationScreenContent\n isIDURequired={managedACTAccessRequirement.isIDURequired}\n />\n )}\n {!showConfirmationScreen && (\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(\n managedACTAccessRequirement.id,\n )}\n >\n <Box\n component={'form'}\n onSubmit={handleSubmit}\n sx={{\n '& .MuiTextField-root': {\n marginBottom: '20px',\n },\n }}\n >\n <TextField\n id={'project-lead'}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>First and last names of your project lead or PI</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nProvide the name of one person who serves as the project leader or PI.`}\n />\n </Box>\n }\n placeholder={\n 'First and last name of individual leading the project, ex: Jane Smith'\n }\n fullWidth\n disabled={isLoading}\n type=\"text\"\n value={projectLead}\n required\n onChange={e => setProjectLead(e.target.value)}\n slotProps={{\n inputLabel: {\n // allows floating the help popover all the way to the right\n sx: { width: '100%' },\n },\n }}\n />\n <TextField\n id={'institution'}\n label={'Your Institution'}\n placeholder={\n 'Full, unabbreviated name of the institution you are affiliated with'\n }\n fullWidth\n type=\"text\"\n disabled={isLoading}\n value={institution}\n required\n onChange={e => setInstitution(e.target.value)}\n />\n\n {managedACTAccessRequirement.isIDURequired && (\n <TextFieldWithWordLimit\n id={'data-use'}\n minWords={INTENDED_DATA_USE_MIN_WORD_COUNT}\n maxWords={INTENDED_DATA_USE_MAX_WORD_COUNT}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>Intended Data Use (IDU)</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nCheck the instructions for data access for information on completing the IDU statement.`}\n />\n </Box>\n }\n helperText={\n managedACTAccessRequirement.isIDUPublic\n ? 'This will be visible to the public'\n : undefined\n }\n placeholder={\n 'Outline the objectives of your proposed research involving this data, and your study design and analysis plan.'\n }\n fullWidth\n required\n multiline\n rows={9}\n disabled={isLoading}\n value={intendedDataUseStatement}\n onChange={e => setIntendedDataUseStatement(e.target.value)}\n />\n )}\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n )}\n <DialogActions>\n {showConfirmationScreen && (\n <>\n <Button\n variant={'outlined'}\n onClick={() => {\n setShowConfirmationScreen(false)\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n </>\n )}\n <Button variant=\"outlined\" disabled={isLoading} onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n type=\"submit\"\n disabled={isLoading || !formIsValid}\n onClick={handleSubmit}\n >\n {updateIsPending ? 'Saving...' : 'Save and Continue'}\n </Button>\n </DialogActions>\n </>\n )\n}\n\nfunction ConfirmationScreenContent(props: { isIDURequired: boolean }) {\n const { isIDURequired } = props\n return (\n <DialogContent>\n <Typography\n variant=\"body1\"\n gutterBottom\n sx={{\n fontWeight: 700,\n }}\n >\n Double-check your submission before continuing!\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Here are some common reasons a request is rejected:\n </Typography>\n <Box component=\"ul\">\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is your <i>Project Lead</i> a full name (first and last)?\n </Typography>\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is the <i>Institution</i> name you provided unabbreviated and\n verifiable? You must give the full name of your institution, so we can\n look it up.\n </Typography>\n {isIDURequired && (\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Did you provide clear <i>study objectives</i> and your{' '}\n <i>study design</i> and <i>analysis plan</i> in the IDU section?\n </Typography>\n )}\n </Box>\n <Typography variant=\"body1\" gutterBottom>\n Please take a minute to make sure your submission is correct. If your\n submission is rejected, you’ll have to resubmit after a few days!\n </Typography>\n </DialogContent>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResearchProjectForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"sourcesContent":["import {\n useGetResearchProject,\n useUpdateResearchProject,\n} from '@/synapse-queries'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ResearchProject,\n} from '@sage-bionetworks/synapse-types'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { FormEvent, useEffect, useState } from 'react'\nimport HelpPopover from '../../../HelpPopover'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport TextFieldWithWordLimit, {\n getWordCount,\n} from '../../../TextField/TextFieldWithWordLimit'\nimport { AlertProps } from '../DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\n\nconst INTENDED_DATA_USE_MIN_WORD_COUNT = 50\nconst INTENDED_DATA_USE_MAX_WORD_COUNT = 750 // SWC-7526\n\nexport type ResearchProjectFormProps = {\n /* The access requirement to which the research project refers */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSave?: (researchProject: ResearchProject) => void\n onHide?: () => void\n}\n\n/**\n * Step 1 of the Data Access Request/Renewal flow prompts the user to provide information about their ResearchProject.\n */\nexport default function ResearchProjectForm(props: ResearchProjectFormProps) {\n const { onSave, managedACTAccessRequirement, onHide } = props\n const [projectLead, setProjectLead] = useState<string>('')\n const [institution, setInstitution] = useState<string>('')\n const [intendedDataUseStatement, setIntendedDataUseStatement] =\n useState<string>('')\n const [alert, setAlert] = useState<AlertProps | undefined>()\n\n const [showConfirmationScreen, setShowConfirmationScreen] = useState(false)\n\n const { data: existingResearchProject, isLoading: isLoadingInitialData } =\n useGetResearchProject(String(managedACTAccessRequirement.id), {\n // Infinite staleTime ensures this won't be refetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n // Populate the form with existing data if it exists\n useEffect(() => {\n if (isEmpty(projectLead) && existingResearchProject?.projectLead) {\n setProjectLead(existingResearchProject?.projectLead)\n }\n if (isEmpty(institution) && existingResearchProject?.institution) {\n setInstitution(existingResearchProject?.institution)\n }\n if (\n isEmpty(intendedDataUseStatement) &&\n existingResearchProject?.intendedDataUseStatement\n ) {\n setIntendedDataUseStatement(\n existingResearchProject?.intendedDataUseStatement,\n )\n }\n }, [\n existingResearchProject?.institution,\n existingResearchProject?.intendedDataUseStatement,\n existingResearchProject?.projectLead,\n // PORTALS-3774: initialize from existingResearchProject, but do not reset institution,\n // projectLead, or intendedDataUseStatement if they have been modified\n ])\n\n const { mutate, isPending: updateIsPending } = useUpdateResearchProject({\n onSuccess: data => {\n if (onSave) {\n onSave(data)\n }\n },\n onError: e => {\n console.log(\n 'RequestDataAccessStep1: Error updating research project data: ',\n e,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n },\n })\n\n const isLoading = isLoadingInitialData || updateIsPending\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Unable to update research project data.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const handleSubmit = (e: FormEvent<HTMLElement>) => {\n e.preventDefault()\n if (!showConfirmationScreen) {\n setShowConfirmationScreen(true)\n } else {\n mutate({\n ...existingResearchProject,\n accessRequirementId: String(managedACTAccessRequirement.id),\n institution: institution,\n projectLead: projectLead,\n intendedDataUseStatement: intendedDataUseStatement || undefined,\n })\n setShowConfirmationScreen(false)\n }\n }\n\n const formIsValid =\n projectLead &&\n institution &&\n (!managedACTAccessRequirement.isIDURequired ||\n (intendedDataUseStatement &&\n getWordCount(intendedDataUseStatement) >=\n INTENDED_DATA_USE_MIN_WORD_COUNT &&\n getWordCount(intendedDataUseStatement) <=\n INTENDED_DATA_USE_MAX_WORD_COUNT))\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n {showConfirmationScreen && (\n <ConfirmationScreenContent\n isIDURequired={managedACTAccessRequirement.isIDURequired}\n />\n )}\n {!showConfirmationScreen && (\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(\n managedACTAccessRequirement.id,\n )}\n >\n <Box\n component={'form'}\n onSubmit={handleSubmit}\n sx={{\n '& .MuiTextField-root': {\n marginBottom: '20px',\n },\n }}\n >\n <TextField\n id={'project-lead'}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>First and last names of your project lead or PI</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nProvide the name of one person who serves as the project leader or PI.`}\n />\n </Box>\n }\n placeholder={\n 'First and last name of individual leading the project, ex: Jane Smith'\n }\n fullWidth\n disabled={isLoading}\n type=\"text\"\n value={projectLead}\n required\n onChange={e => setProjectLead(e.target.value)}\n slotProps={{\n inputLabel: {\n // allows floating the help popover all the way to the right\n sx: { width: '100%' },\n },\n }}\n />\n <TextField\n id={'institution'}\n label={'Your Institution'}\n placeholder={\n 'Full, unabbreviated name of the institution you are affiliated with'\n }\n fullWidth\n type=\"text\"\n disabled={isLoading}\n value={institution}\n required\n onChange={e => setInstitution(e.target.value)}\n />\n\n {managedACTAccessRequirement.isIDURequired && (\n <TextFieldWithWordLimit\n id={'data-use'}\n minWords={INTENDED_DATA_USE_MIN_WORD_COUNT}\n maxWords={INTENDED_DATA_USE_MAX_WORD_COUNT}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>Intended Data Use (IDU)</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nCheck the instructions for data access for information on completing the IDU statement.`}\n />\n </Box>\n }\n helperText={\n managedACTAccessRequirement.isIDUPublic\n ? 'This will be visible to the public'\n : undefined\n }\n placeholder={\n 'Outline the objectives of your proposed research involving this data, and your study design and analysis plan.'\n }\n fullWidth\n required\n multiline\n rows={9}\n disabled={isLoading}\n value={intendedDataUseStatement}\n onChange={e => setIntendedDataUseStatement(e.target.value)}\n />\n )}\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n )}\n <DialogActions>\n {showConfirmationScreen && (\n <>\n <Button\n variant={'outlined'}\n onClick={() => {\n setShowConfirmationScreen(false)\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n </>\n )}\n <Button variant=\"outlined\" disabled={isLoading} onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n type=\"submit\"\n disabled={isLoading || !formIsValid}\n onClick={handleSubmit}\n >\n {updateIsPending ? 'Saving...' : 'Save and Continue'}\n </Button>\n </DialogActions>\n </>\n )\n}\n\nfunction ConfirmationScreenContent(props: { isIDURequired: boolean }) {\n const { isIDURequired } = props\n return (\n <DialogContent>\n <Typography\n variant=\"body1\"\n gutterBottom\n sx={{\n fontWeight: 700,\n }}\n >\n Double-check your submission before continuing!\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Here are some common reasons a request is rejected:\n </Typography>\n <Box component=\"ul\">\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is your <i>Project Lead</i> a full name (first and last)?\n </Typography>\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is the <i>Institution</i> name you provided unabbreviated and\n verifiable? You must give the full name of your institution, so we can\n look it up.\n </Typography>\n {isIDURequired && (\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Did you provide clear <i>study objectives</i> and your{' '}\n <i>study design</i> and <i>analysis plan</i> in the IDU section?\n </Typography>\n )}\n </Box>\n <Typography variant=\"body1\" gutterBottom>\n Please take a minute to make sure your submission is correct. If your\n submission is rejected, you’ll have to resubmit after a few days!\n </Typography>\n </DialogContent>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadDocumentField.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Button, ButtonProps } from '@mui/material'\nimport {\n FileHandleAssociation,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport FileUpload from '../../FileUpload/FileUpload'\nimport IconSvg from '../../IconSvg/IconSvg'\n\ntype UploadDocumentFieldProps = {\n id: string\n documentName: string\n uploadCallback: (data: UploadCallbackResp) => void\n /* The fileHandleAssociations corresponding to an existing upload */\n fileHandleAssociations?: FileHandleAssociation[]\n isMultiFileUpload?: boolean\n onClearAttachment?: (fileHandleId: string) => void\n isLoading?: boolean\n uploadBtnVariant?: ButtonProps['variant']\n}\n\nexport function UploadDocumentField(props: UploadDocumentFieldProps) {\n const {\n fileHandleAssociations = [],\n uploadCallback,\n id,\n documentName,\n isMultiFileUpload = false,\n onClearAttachment,\n isLoading = false,\n uploadBtnVariant = 'outlined',\n } = props\n const [isUploading, setIsUploading] = useState(false)\n\n const { data: fileData } = useGetFileBatch(\n {\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n requestedFiles: fileHandleAssociations,\n },\n { enabled: fileHandleAssociations.length > 0 },\n )\n\n return (\n <Box\n id={id}\n sx={{\n display: 'flex',\n flexDirection: isMultiFileUpload ? 'column' : 'row',\n alignItems: isMultiFileUpload ? 'flex-start' : 'center',\n justifyContent: 'flex-start',\n gap: 2,\n my: 2,\n }}\n >\n <FileUpload\n id={`${id}-upload`}\n onUploadStart={() => setIsUploading(true)}\n onComplete={res => {\n setIsUploading(false)\n uploadCallback(res)\n }}\n label={`Upload ${documentName}`}\n buttonProps={{\n disabled: isLoading,\n variant: uploadBtnVariant,\n endIcon: <IconSvg icon={'upload'} wrap={false} />,\n }}\n />\n {fileHandleAssociations.map((fha, index) => {\n const fileHandle = fileData?.requestedFiles.find(\n result => result.fileHandleId === fha.fileHandleId,\n )?.fileHandle\n return (\n <Box key={fha.fileHandleId}>\n <DirectDownloadButton\n key={index}\n id={`${id}-download-${index}`}\n variant={'text'}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n color={'primary'}\n fileHandleAssociation={fha}\n fileName={fileHandle?.fileName}\n sx={{\n /* Do not apply text-transform because the text is a raw filename */\n textTransform: 'none',\n }}\n />\n {onClearAttachment && (\n <Button\n className={'clear-x'}\n variant={'text'}\n onClick={() => onClearAttachment(fha.fileHandleId)}\n >\n <IconSvg icon=\"clear\" />\n </Button>\n )}\n </Box>\n )\n })}\n {isUploading && (\n <Button\n disabled={true}\n variant={'text'}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n >\n Uploading...\n </Button>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;;;;AAuBA,SAAgB,EAAoB,GAAiC;CACnE,IAAM,EACJ,4BAAyB,
|
|
1
|
+
{"version":3,"file":"UploadDocumentField.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.tsx"],"sourcesContent":["import { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { Box, Button, ButtonProps } from '@mui/material'\nimport {\n FileHandleAssociation,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport DirectDownloadButton from '../../DirectDownloadButton'\nimport FileUpload from '../../FileUpload/FileUpload'\nimport IconSvg from '../../IconSvg/IconSvg'\n\ntype UploadDocumentFieldProps = {\n id: string\n documentName: string\n uploadCallback: (data: UploadCallbackResp) => void\n /* The fileHandleAssociations corresponding to an existing upload */\n fileHandleAssociations?: FileHandleAssociation[]\n isMultiFileUpload?: boolean\n onClearAttachment?: (fileHandleId: string) => void\n isLoading?: boolean\n uploadBtnVariant?: ButtonProps['variant']\n}\n\nexport function UploadDocumentField(props: UploadDocumentFieldProps) {\n const {\n fileHandleAssociations = [],\n uploadCallback,\n id,\n documentName,\n isMultiFileUpload = false,\n onClearAttachment,\n isLoading = false,\n uploadBtnVariant = 'outlined',\n } = props\n const [isUploading, setIsUploading] = useState(false)\n\n const { data: fileData } = useGetFileBatch(\n {\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n requestedFiles: fileHandleAssociations,\n },\n { enabled: fileHandleAssociations.length > 0 },\n )\n\n return (\n <Box\n id={id}\n sx={{\n display: 'flex',\n flexDirection: isMultiFileUpload ? 'column' : 'row',\n alignItems: isMultiFileUpload ? 'flex-start' : 'center',\n justifyContent: 'flex-start',\n gap: 2,\n my: 2,\n }}\n >\n <FileUpload\n id={`${id}-upload`}\n onUploadStart={() => setIsUploading(true)}\n onComplete={res => {\n setIsUploading(false)\n uploadCallback(res)\n }}\n label={`Upload ${documentName}`}\n buttonProps={{\n disabled: isLoading,\n variant: uploadBtnVariant,\n endIcon: <IconSvg icon={'upload'} wrap={false} />,\n }}\n />\n {fileHandleAssociations.map((fha, index) => {\n const fileHandle = fileData?.requestedFiles.find(\n result => result.fileHandleId === fha.fileHandleId,\n )?.fileHandle\n return (\n <Box key={fha.fileHandleId}>\n <DirectDownloadButton\n key={index}\n id={`${id}-download-${index}`}\n variant={'text'}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n color={'primary'}\n fileHandleAssociation={fha}\n fileName={fileHandle?.fileName}\n sx={{\n /* Do not apply text-transform because the text is a raw filename */\n textTransform: 'none',\n }}\n />\n {onClearAttachment && (\n <Button\n className={'clear-x'}\n variant={'text'}\n onClick={() => onClearAttachment(fha.fileHandleId)}\n >\n <IconSvg icon=\"clear\" />\n </Button>\n )}\n </Box>\n )\n })}\n {isUploading && (\n <Button\n disabled={true}\n variant={'text'}\n endIcon={<IconSvg icon={'download'} wrap={false} />}\n >\n Uploading...\n </Button>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;;;;AAuBA,SAAgB,EAAoB,GAAiC;CACnE,IAAM,EACJ,4BAAyB,CAAC,GAC1B,mBACA,OACA,iBACA,uBAAoB,IACpB,sBACA,eAAY,IACZ,sBAAmB,eACjB,GACE,CAAC,GAAa,KAAkB,EAAS,EAAK,GAE9C,EAAE,MAAM,MAAa,EACzB;EACE,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;EAC7B,gBAAgB;CAClB,GACA,EAAE,SAAS,EAAuB,SAAS,EAAE,CAC/C;CAEA,OACE,kBAAC,GAAD;EACM;EACJ,IAAI;GACF,SAAS;GACT,eAAe,IAAoB,WAAW;GAC9C,YAAY,IAAoB,eAAe;GAC/C,gBAAgB;GAChB,KAAK;GACL,IAAI;EACN;YATF;GAWE,kBAAC,GAAD;IACE,IAAI,GAAG,EAAG;IACV,qBAAqB,EAAe,EAAI;IACxC,aAAY,MAAO;KAEjB,AADA,EAAe,EAAK,GACpB,EAAe,CAAG;IACpB;IACA,OAAO,UAAU;IACjB,aAAa;KACX,UAAU;KACV,SAAS;KACT,SAAS,kBAAC,GAAD;MAAS,MAAM;MAAU,MAAM;KAAQ,CAAA;IAClD;GACD,CAAA;GACA,EAAuB,KAAK,GAAK,MAAU;IAC1C,IAAM,IAAa,GAAU,eAAe,MAC1C,MAAU,EAAO,iBAAiB,EAAI,YACxC,GAAG;IACH,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KAEE,IAAI,GAAG,EAAG,YAAY;KACtB,SAAS;KACT,SAAS,kBAAC,GAAD;MAAS,MAAM;MAAY,MAAM;KAAQ,CAAA;KAClD,OAAO;KACP,uBAAuB;KACvB,UAAU,GAAY;KACtB,IAAI,EAEF,eAAe,OACjB;IACD,GAXM,CAWN,GACA,KACC,kBAAC,GAAD;KACE,WAAW;KACX,SAAS;KACT,eAAe,EAAkB,EAAI,YAAY;eAEjD,kBAAC,GAAD,EAAS,MAAK,QAAS,CAAA;IACjB,CAAA,CAEP,EAAA,GAvBK,EAAI,YAuBT;GAET,CAAC;GACA,KACC,kBAAC,GAAD;IACE,UAAU;IACV,SAAS;IACT,SAAS,kBAAC,GAAD;KAAS,MAAM;KAAY,MAAM;IAAQ,CAAA;cACnD;GAEO,CAAA;EAEP;;AAET"}
|
package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedRequirement.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.tsx"],"sourcesContent":["import { useGetCurrentUserProfile } from '@/synapse-queries'\nimport { SynapseConstants, useSynapseContext } from '@/utils'\nimport { useOneSageURL } from '@/utils/hooks/useOneSageURL'\nimport { Link, Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * Displays a data access request requirement prompts the user to authenticate if not already signed in.\n */\nexport default function AuthenticatedRequirement() {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const registrationUrl = useOneSageURL('/register1')\n\n return (\n <RequirementItem\n status={\n isAuthenticated\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n }\n >\n {!isAuthenticated && (\n <>\n <Typography variant={'body1'}>\n <Link className={SynapseConstants.SRC_SIGN_IN_CLASS}>Sign in</Link>{' '}\n with a Sage Platform (Synapse) user account. If you do not have a\n Sage account, you can{' '}\n <Link href={registrationUrl.toString()}>register for free.</Link>\n </Typography>\n </>\n )}\n {isAuthenticated && (\n <Typography variant={'body1'}>\n You have signed in with the Sage Platform (Synapse) user account{' '}\n <b>{userProfile?.userName}@synapse.org</b>\n </Typography>\n )}\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,IAA2B;CACjD,IAAM,EAAE,uBAAoB,
|
|
1
|
+
{"version":3,"file":"AuthenticatedRequirement.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.tsx"],"sourcesContent":["import { useGetCurrentUserProfile } from '@/synapse-queries'\nimport { SynapseConstants, useSynapseContext } from '@/utils'\nimport { useOneSageURL } from '@/utils/hooks/useOneSageURL'\nimport { Link, Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * Displays a data access request requirement prompts the user to authenticate if not already signed in.\n */\nexport default function AuthenticatedRequirement() {\n const { isAuthenticated } = useSynapseContext()\n const { data: userProfile } = useGetCurrentUserProfile()\n\n const registrationUrl = useOneSageURL('/register1')\n\n return (\n <RequirementItem\n status={\n isAuthenticated\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n }\n >\n {!isAuthenticated && (\n <>\n <Typography variant={'body1'}>\n <Link className={SynapseConstants.SRC_SIGN_IN_CLASS}>Sign in</Link>{' '}\n with a Sage Platform (Synapse) user account. If you do not have a\n Sage account, you can{' '}\n <Link href={registrationUrl.toString()}>register for free.</Link>\n </Typography>\n </>\n )}\n {isAuthenticated && (\n <Typography variant={'body1'}>\n You have signed in with the Sage Platform (Synapse) user account{' '}\n <b>{userProfile?.userName}@synapse.org</b>\n </Typography>\n )}\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,IAA2B;CACjD,IAAM,EAAE,uBAAoB,EAAkB,GACxC,EAAE,MAAM,MAAgB,EAAyB,GAEjD,IAAkB,EAAc,YAAY;CAElD,OACE,kBAAC,GAAD;EACE,QACE,IACI,EAAsB,WACtB,EAAsB;YAJ9B,CAOG,CAAC,KACA,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;GAAY,SAAS;aAArB;IACE,kBAAC,GAAD;KAAM,WAAW;eAAoC;IAAa,CAAA;IAAE;IAAI;IAElD;IACtB,kBAAC,GAAD;KAAM,MAAM,EAAgB,SAAS;eAAG;IAAwB,CAAA;GACtD;KACZ,CAAA,GAEH,KACC,kBAAC,GAAD;GAAY,SAAS;aAArB;IAA8B;IACqC;IACjE,kBAAC,KAAD,EAAA,UAAA,CAAI,GAAa,UAAS,cAAe,EAAA,CAAA;GAC/B;IAEC;;AAErB"}
|
package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificationRequirement.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/CertificationRequirement.tsx"],"sourcesContent":["import { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link, Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * When creating requests for access requirements on a particular file, one or more access requirements may require that the\n * user is certified.\n *\n * This component checks if the user is certified, and if not, provides a link on how to begin certification.\n */\nexport default function CertificationRequirement() {\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const requirementItemState: RequirementItemStatus = isLoading\n ? RequirementItemStatus.LOADING\n : userBundle?.isCertified\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n\n return (\n <RequirementItem status={requirementItemState}>\n <Typography variant=\"body1\">\n You must first become a{' '}\n <Link href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Quiz:`}>\n certified user\n </Link>\n </Typography>\n {isLoading && <span className=\"spinner\" />}\n {userBundle?.isCertified && (\n <Typography variant={'body1'}>You are a certified user</Typography>\n )}\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;;;;AAYA,SAAwB,IAA2B;CACjD,IAAM,EAAE,MAAM,GAAY,iBAAc,
|
|
1
|
+
{"version":3,"file":"CertificationRequirement.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/CertificationRequirement.tsx"],"sourcesContent":["import { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { Link, Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * When creating requests for access requirements on a particular file, one or more access requirements may require that the\n * user is certified.\n *\n * This component checks if the user is certified, and if not, provides a link on how to begin certification.\n */\nexport default function CertificationRequirement() {\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const requirementItemState: RequirementItemStatus = isLoading\n ? RequirementItemStatus.LOADING\n : userBundle?.isCertified\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n\n return (\n <RequirementItem status={requirementItemState}>\n <Typography variant=\"body1\">\n You must first become a{' '}\n <Link href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Quiz:`}>\n certified user\n </Link>\n </Typography>\n {isLoading && <span className=\"spinner\" />}\n {userBundle?.isCertified && (\n <Typography variant={'body1'}>You are a certified user</Typography>\n )}\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;;;;AAYA,SAAwB,IAA2B;CACjD,IAAM,EAAE,MAAM,GAAY,iBAAc,EAAwB;CAQhE,OACE,kBAAC,GAAD;EAAiB,QAPiC,IAChD,EAAsB,UACtB,GAAY,cACV,EAAsB,WACtB,EAAsB;YAG1B;GACE,kBAAC,GAAD;IAAY,SAAQ;cAApB;KAA4B;KACF;KACxB,kBAAC,GAAD;MAAM,MAAM,GAAG,EAA2B,OAAO;gBAAQ;KAEnD,CAAA;IACI;;GACX,KAAa,kBAAC,QAAD,EAAM,WAAU,UAAW,CAAA;GACxC,GAAY,eACX,kBAAC,GAAD;IAAY,SAAS;cAAS;GAAoC,CAAA;EAErD;;AAErB"}
|
package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LockAccessRequirementItem.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * Renders a {@link RequirementItem} for a {@link LockAccessRequirement}.\n * Lock Access Requirements are used to lock down an entity while waiting for ACT to review.\n * These requirements cannot be fulfilled by the user.\n */\nexport default function LockAccessRequirementItem() {\n return (\n <RequirementItem\n data-testid=\"LockAccessRequirementItem\"\n status={RequirementItemStatus.LOCKED}\n >\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold' }}>\n This asset is not accessible to the public.\n </Typography>\n <Typography variant=\"body1\">\n Contributor has not completed access conditions for this asset.\n </Typography>\n <Typography variant=\"body1\">\n Sage Bionetworks cannot grant access without contributor approval.\n </Typography>\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;AASA,SAAwB,IAA4B;
|
|
1
|
+
{"version":3,"file":"LockAccessRequirementItem.js","names":[],"sources":["../../../../src/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from './RequirementItem'\n\n/**\n * Renders a {@link RequirementItem} for a {@link LockAccessRequirement}.\n * Lock Access Requirements are used to lock down an entity while waiting for ACT to review.\n * These requirements cannot be fulfilled by the user.\n */\nexport default function LockAccessRequirementItem() {\n return (\n <RequirementItem\n data-testid=\"LockAccessRequirementItem\"\n status={RequirementItemStatus.LOCKED}\n >\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold' }}>\n This asset is not accessible to the public.\n </Typography>\n <Typography variant=\"body1\">\n Contributor has not completed access conditions for this asset.\n </Typography>\n <Typography variant=\"body1\">\n Sage Bionetworks cannot grant access without contributor approval.\n </Typography>\n </RequirementItem>\n )\n}\n"],"mappings":";;;;;AASA,SAAwB,IAA4B;CAClD,OACE,kBAAC,GAAD;EACE,eAAY;EACZ,QAAQ,EAAsB;YAFhC;GAIE,kBAAC,GAAD;IAAY,SAAQ;IAAQ,IAAI,EAAE,YAAY,OAAO;cAAG;GAE5C,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;cAAQ;GAEhB,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;cAAQ;GAEhB,CAAA;EACG;;AAErB"}
|