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":"SqlFunctions.js","names":[],"sources":["../../../src/utils/functions/SqlFunctions.ts"],"sourcesContent":["import {\n ColumnModel,\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryFilter,\n Row,\n SelectColumn,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\nimport { splitAndTrim } from './StringUtils'\n\nexport type SQLOperator =\n | ColumnSingleValueFilterOperator\n | ColumnMultiValueFunction\n\nconst WITHOUT_SYN_PREFIX = 3\nexport const QUERY_FILTERS_SESSION_STORAGE_KEY = (key: string) =>\n `${key}-temp-QueryFilter-array`\n\nexport function removePrefixIfSynId(value: string) {\n if (value.match(SYNAPSE_ENTITY_ID_REGEX)) {\n return value.substring(WITHOUT_SYN_PREFIX)\n }\n return value\n}\nexport const getIgnoredQueryFilterSearchParamKey = (\n key: string,\n namespace?: string,\n) => {\n return `__${namespace ?? ''}_${key}`\n}\n\n// Special search parameter key that will automatically apply a FTS search term to a Query Wrapper if present\nexport const SEARCH_TERM = 'SEARCH_TERM'\nexport const SEARCH_ROLE = 'SEARCH_ROLE'\n\n/** @deprecated Use SEARCH_TERM instead */\nexport const FTS_SEARCH_TERM = 'FTS_SEARCH_TERM'\n/** @deprecated Use SEARCH_ROLE instead */\nexport const FTS_SEARCH_ROLE = 'FTS_SEARCH_ROLE'\n\n/**\n * Look in local storage for a set of QueryFilters to apply. In addition, given the search params,\n * generate a set of QueryFilters to narrow the query to view just related data.\n * May return null if a QueryFilter should not be added.\n * @param sql\n * @param searchParams\n * @param operator\n * @returns\n */\nexport const getAdditionalFilters = (\n searchParams?: Record<string, string>,\n operator: SQLOperator = ColumnSingleValueFilterOperator.LIKE,\n sessionStorageKey?: string,\n): QueryFilter[] | undefined => {\n const sessionStorageQueryFiltersString = sessionStorageKey\n ? sessionStorage.getItem(\n QUERY_FILTERS_SESSION_STORAGE_KEY(sessionStorageKey),\n )\n : undefined\n let additionalFilters: QueryFilter[] = []\n if (sessionStorageQueryFiltersString) {\n additionalFilters = JSON.parse(\n sessionStorageQueryFiltersString,\n ) as QueryFilter[]\n }\n if (searchParams) {\n const isQueryWrapperKey = (key: string) =>\n key.startsWith('qw') || key.startsWith('__')\n additionalFilters = additionalFilters.concat(\n Object.keys(searchParams || {})\n .filter(\n key =>\n !isQueryWrapperKey(key) &&\n searchParams[key] != undefined &&\n searchParams[key].trim() != '',\n )\n .map(key => {\n if (key == SEARCH_TERM || key == FTS_SEARCH_TERM) {\n const filter: TextMatchesQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression: searchParams[key],\n }\n return filter\n }\n switch (operator) {\n case ColumnSingleValueFilterOperator.EQUAL: {\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n values: [searchParams[key]],\n }\n return filter\n }\n case ColumnSingleValueFilterOperator.IN: {\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n values: splitAndTrim(searchParams[key]),\n }\n return filter\n }\n case ColumnMultiValueFunction.HAS: {\n const filter: ColumnMultiValueFunctionQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n columnName: key,\n function: operator,\n _function: operator,\n values: splitAndTrim(searchParams[key]),\n }\n return filter\n }\n case ColumnSingleValueFilterOperator.LIKE: {\n // If we use a LIKE statement with a synId the backend will look for a string with the first three\n // characters being 'syn', however, it stores synIds without 'syn', so the query will fail\n // The backend usually parses 'syn' out, but not with the LIKE clause since its expecting a regex, so we\n // parse this out. This will cause a bug if something matches the synId regex but is in free text.\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n // Add wildcards around the value\n values: [`%${removePrefixIfSynId(searchParams[key])}%`],\n }\n return filter\n }\n case ColumnMultiValueFunction.HAS_LIKE: {\n const filter: ColumnMultiValueFunctionQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n columnName: key,\n function: operator,\n _function: operator,\n values: searchParams[key].split(',').map(param => {\n // Remove synId prefix for the same reasons as in the LIKE case\n return `%${removePrefixIfSynId(param)}%`\n }),\n }\n return filter\n }\n }\n }),\n )\n }\n\n return additionalFilters.length === 0 ? undefined : additionalFilters\n}\n\n//parses synapse entity id from a sql query string\n//look for a pattern of 'from[some number of spaces]syn[somenumbers]` case insensitive\nexport const parseEntityIdFromSqlStatement = (sql: string): string => {\n const matches = sql.match(/(from)\\s+(syn)\\d+/gi)\n return matches && matches[0] ? matches[0].substr(5).trim() : ''\n}\n\nexport const parseEntityIdAndVersionFromSqlStatement = (\n sql: string,\n): { entityId?: string; versionNumber?: number } => {\n const regex = /from\\s+(syn\\d+)(?:\\.(\\d+))?/i\n const matches = regex.exec(sql)\n if (!matches) {\n return { entityId: undefined, versionNumber: undefined }\n }\n return {\n entityId: matches[1],\n versionNumber: matches[2] ? parseInt(matches[2]) : undefined,\n }\n}\n\nexport const resultToJson = (\n headerColumns: SelectColumn[],\n rowColumns: Row[],\n) => {\n const rows = rowColumns.map(row => row.values)\n const headers = headerColumns.map(column => column.name)\n return rows.map(row => {\n const obj: Record<string, string | null> = {}\n row.forEach((text, cellIndex) => {\n obj[headers[cellIndex]] = text\n })\n return obj\n })\n}\n\n/**\n * Finds the index of the given column name in the selectColumns or columnModels.\n *\n * @returns a non-negative integer if the column is found, or undefined if the column is not found\n * @param columnName\n * @param selectColumns\n * @param columnModels\n */\nexport const getColumnIndex = (\n columnName?: string,\n selectColumns?: SelectColumn[],\n columnModels?: ColumnModel[],\n): number | undefined => {\n if (!columnName) {\n return undefined\n }\n\n const lowerCaseColumnName = columnName.toLowerCase()\n\n if (selectColumns) {\n const findIndexResult = selectColumns.findIndex(\n el => el.name?.toLowerCase() === lowerCaseColumnName,\n )\n if (findIndexResult != -1) {\n return findIndexResult\n }\n }\n\n if (columnModels) {\n const findIndexResult = columnModels.findIndex(\n el => el.name?.toLowerCase() === lowerCaseColumnName,\n )\n if (findIndexResult !== -1) {\n return findIndexResult\n }\n }\n\n return undefined\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SqlFunctions.js","names":[],"sources":["../../../src/utils/functions/SqlFunctions.ts"],"sourcesContent":["import {\n ColumnModel,\n ColumnMultiValueFunction,\n ColumnMultiValueFunctionQueryFilter,\n ColumnSingleValueFilterOperator,\n ColumnSingleValueQueryFilter,\n QueryFilter,\n Row,\n SelectColumn,\n TextMatchesQueryFilter,\n} from '@sage-bionetworks/synapse-types'\nimport { SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\nimport { splitAndTrim } from './StringUtils'\n\nexport type SQLOperator =\n | ColumnSingleValueFilterOperator\n | ColumnMultiValueFunction\n\nconst WITHOUT_SYN_PREFIX = 3\nexport const QUERY_FILTERS_SESSION_STORAGE_KEY = (key: string) =>\n `${key}-temp-QueryFilter-array`\n\nexport function removePrefixIfSynId(value: string) {\n if (value.match(SYNAPSE_ENTITY_ID_REGEX)) {\n return value.substring(WITHOUT_SYN_PREFIX)\n }\n return value\n}\nexport const getIgnoredQueryFilterSearchParamKey = (\n key: string,\n namespace?: string,\n) => {\n return `__${namespace ?? ''}_${key}`\n}\n\n// Special search parameter key that will automatically apply a FTS search term to a Query Wrapper if present\nexport const SEARCH_TERM = 'SEARCH_TERM'\nexport const SEARCH_ROLE = 'SEARCH_ROLE'\n\n/** @deprecated Use SEARCH_TERM instead */\nexport const FTS_SEARCH_TERM = 'FTS_SEARCH_TERM'\n/** @deprecated Use SEARCH_ROLE instead */\nexport const FTS_SEARCH_ROLE = 'FTS_SEARCH_ROLE'\n\n/**\n * Look in local storage for a set of QueryFilters to apply. In addition, given the search params,\n * generate a set of QueryFilters to narrow the query to view just related data.\n * May return null if a QueryFilter should not be added.\n * @param sql\n * @param searchParams\n * @param operator\n * @returns\n */\nexport const getAdditionalFilters = (\n searchParams?: Record<string, string>,\n operator: SQLOperator = ColumnSingleValueFilterOperator.LIKE,\n sessionStorageKey?: string,\n): QueryFilter[] | undefined => {\n const sessionStorageQueryFiltersString = sessionStorageKey\n ? sessionStorage.getItem(\n QUERY_FILTERS_SESSION_STORAGE_KEY(sessionStorageKey),\n )\n : undefined\n let additionalFilters: QueryFilter[] = []\n if (sessionStorageQueryFiltersString) {\n additionalFilters = JSON.parse(\n sessionStorageQueryFiltersString,\n ) as QueryFilter[]\n }\n if (searchParams) {\n const isQueryWrapperKey = (key: string) =>\n key.startsWith('qw') || key.startsWith('__')\n additionalFilters = additionalFilters.concat(\n Object.keys(searchParams || {})\n .filter(\n key =>\n !isQueryWrapperKey(key) &&\n searchParams[key] != undefined &&\n searchParams[key].trim() != '',\n )\n .map(key => {\n if (key == SEARCH_TERM || key == FTS_SEARCH_TERM) {\n const filter: TextMatchesQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TextMatchesQueryFilter',\n searchExpression: searchParams[key],\n }\n return filter\n }\n switch (operator) {\n case ColumnSingleValueFilterOperator.EQUAL: {\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n values: [searchParams[key]],\n }\n return filter\n }\n case ColumnSingleValueFilterOperator.IN: {\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n values: splitAndTrim(searchParams[key]),\n }\n return filter\n }\n case ColumnMultiValueFunction.HAS: {\n const filter: ColumnMultiValueFunctionQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n columnName: key,\n function: operator,\n _function: operator,\n values: splitAndTrim(searchParams[key]),\n }\n return filter\n }\n case ColumnSingleValueFilterOperator.LIKE: {\n // If we use a LIKE statement with a synId the backend will look for a string with the first three\n // characters being 'syn', however, it stores synIds without 'syn', so the query will fail\n // The backend usually parses 'syn' out, but not with the LIKE clause since its expecting a regex, so we\n // parse this out. This will cause a bug if something matches the synId regex but is in free text.\n const filter: ColumnSingleValueQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnSingleValueQueryFilter',\n columnName: key,\n operator: operator,\n // Add wildcards around the value\n values: [`%${removePrefixIfSynId(searchParams[key])}%`],\n }\n return filter\n }\n case ColumnMultiValueFunction.HAS_LIKE: {\n const filter: ColumnMultiValueFunctionQueryFilter = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.ColumnMultiValueFunctionQueryFilter',\n columnName: key,\n function: operator,\n _function: operator,\n values: searchParams[key].split(',').map(param => {\n // Remove synId prefix for the same reasons as in the LIKE case\n return `%${removePrefixIfSynId(param)}%`\n }),\n }\n return filter\n }\n }\n }),\n )\n }\n\n return additionalFilters.length === 0 ? undefined : additionalFilters\n}\n\n//parses synapse entity id from a sql query string\n//look for a pattern of 'from[some number of spaces]syn[somenumbers]` case insensitive\nexport const parseEntityIdFromSqlStatement = (sql: string): string => {\n const matches = sql.match(/(from)\\s+(syn)\\d+/gi)\n return matches && matches[0] ? matches[0].substr(5).trim() : ''\n}\n\nexport const parseEntityIdAndVersionFromSqlStatement = (\n sql: string,\n): { entityId?: string; versionNumber?: number } => {\n const regex = /from\\s+(syn\\d+)(?:\\.(\\d+))?/i\n const matches = regex.exec(sql)\n if (!matches) {\n return { entityId: undefined, versionNumber: undefined }\n }\n return {\n entityId: matches[1],\n versionNumber: matches[2] ? parseInt(matches[2]) : undefined,\n }\n}\n\nexport const resultToJson = (\n headerColumns: SelectColumn[],\n rowColumns: Row[],\n) => {\n const rows = rowColumns.map(row => row.values)\n const headers = headerColumns.map(column => column.name)\n return rows.map(row => {\n const obj: Record<string, string | null> = {}\n row.forEach((text, cellIndex) => {\n obj[headers[cellIndex]] = text\n })\n return obj\n })\n}\n\n/**\n * Finds the index of the given column name in the selectColumns or columnModels.\n *\n * @returns a non-negative integer if the column is found, or undefined if the column is not found\n * @param columnName\n * @param selectColumns\n * @param columnModels\n */\nexport const getColumnIndex = (\n columnName?: string,\n selectColumns?: SelectColumn[],\n columnModels?: ColumnModel[],\n): number | undefined => {\n if (!columnName) {\n return undefined\n }\n\n const lowerCaseColumnName = columnName.toLowerCase()\n\n if (selectColumns) {\n const findIndexResult = selectColumns.findIndex(\n el => el.name?.toLowerCase() === lowerCaseColumnName,\n )\n if (findIndexResult != -1) {\n return findIndexResult\n }\n }\n\n if (columnModels) {\n const findIndexResult = columnModels.findIndex(\n el => el.name?.toLowerCase() === lowerCaseColumnName,\n )\n if (findIndexResult !== -1) {\n return findIndexResult\n }\n }\n\n return undefined\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.js","names":[],"sources":["../../../src/utils/functions/StringUtils.ts"],"sourcesContent":["import { parseSynId, SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\n\n/**\n * Truncates a string to be a specified length, then optionally append a suffix.\n */\nexport function truncateString(str: string, maxLength: number, suffix = '…') {\n if (str.length <= maxLength) {\n return str\n }\n return str.substring(0, maxLength) + suffix\n}\n\nexport function hex2ascii(inputString: string): string {\n const hex: string = inputString.toString()\n let str: string = ''\n for (let n = 0; n < hex.length; n += 2) {\n str += String.fromCharCode(parseInt(hex.substring(n, n + 2), 16))\n }\n return str\n}\n\n/**\n * Returns a hash code from a string. Uses Java's String.hashCode() algorithm: https://devdocs.io/openjdk~8/java/lang/string#hashCode--\n * @param {String} str The string to hash.\n * @return {Number} A 32bit integer\n * @see https://stackoverflow.com/a/8831937\n */\nexport function hashCode(str?: string | null) {\n if (str == null) {\n str = ''\n }\n let hash = 0\n for (let i = 0, len = str.length; i < len; i++) {\n const chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return hash\n}\n\nexport function normalizeNumericId(id: string | number): number {\n if (id == null) {\n return NaN\n }\n if (typeof id === 'number') {\n return id\n }\n if (id.match(SYNAPSE_ENTITY_ID_REGEX)) {\n // parse the ID to remove a possible version suffix ('syn123.4' -> 'syn123')\n const entityId = parseSynId(id)!.targetId\n return parseInt(entityId.substring('syn'.length))\n } else {\n return parseInt(id)\n }\n}\n\n// Used for client-side validation. Note, the server has the final say. Integration tested in ChangePassword.integration.test.tsx\n// See https://github.com/Sage-Bionetworks/Synapse-Repository-Services/blob/develop/services/repository-managers/src/main/java/org/sagebionetworks/repo/manager/password/PasswordValidatorImpl.java#L47 for rules\nexport function validatePassword(newPassword: string) {\n if (newPassword.trim().length < 8) {\n return 'A valid password must be at least 8 characters long'\n }\n const hasLetter = /[a-zA-Z]/.test(newPassword) // Checks for at least one letter\n if (!hasLetter) {\n return 'A valid password must include letters'\n }\n\n const hasNumber = /\\d/.test(newPassword) // Checks for at least one number\n if (!hasNumber) {\n return 'A valid password must include digits (0-9)'\n }\n\n const hasSpecialChar = /[~!@#$%^&*_\\-+=`|\\\\(){}[\\]:;\"'<>,.?/]/.test(\n newPassword,\n ) // Checks for at least one special character\n if (!hasSpecialChar) {\n return 'A valid password must include special characters ~!@#$%^&*_-+=`|\\\\(){}[]:;\"\\'<>,.?/'\n }\n return undefined\n}\n\nexport function copyStringToClipboard(value: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // PORTALS-3571: setTimeout necessary on Safari\n setTimeout(() => {\n // use the Clipboard API\n // https://caniuse.com/mdn-api_clipboard_writetext\n navigator.clipboard.writeText(value).then(resolve).catch(reject)\n }, 0)\n })\n}\n\nexport function replaceFileExtension(\n filePath: string,\n extension: string,\n): string {\n const pathParts = filePath.split(/[\\\\/]/) // split on both '/' and '\\'\n const filename = pathParts[pathParts.length - 1] // last part of path\n const baseName = filename.replace(/\\.[^/.]+$/, '') // remove extension\n return `${baseName}.${extension}`\n}\n\nexport function stringListToArray(input: string): string[] {\n let inputArray: string[]\n\n if (Array.isArray(input)) {\n inputArray = input.map(String)\n } else {\n try {\n const parsed = JSON.parse(input ?? '[]')\n inputArray = Array.isArray(parsed) ? parsed.map(String) : [String(parsed)]\n } catch {\n inputArray = input ? [String(input)] : []\n }\n }\n return inputArray\n}\n\n// Split a value by a separator and remove leading/trailing spaces\nexport function splitAndTrim(value: string, sep: string = ','): string[] {\n return value?.split(sep).map(v => v.trim()) ?? []\n}\n"],"mappings":";;AAKA,SAAgB,EAAe,GAAa,GAAmB,IAAS,KAAK;
|
|
1
|
+
{"version":3,"file":"StringUtils.js","names":[],"sources":["../../../src/utils/functions/StringUtils.ts"],"sourcesContent":["import { parseSynId, SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\n\n/**\n * Truncates a string to be a specified length, then optionally append a suffix.\n */\nexport function truncateString(str: string, maxLength: number, suffix = '…') {\n if (str.length <= maxLength) {\n return str\n }\n return str.substring(0, maxLength) + suffix\n}\n\nexport function hex2ascii(inputString: string): string {\n const hex: string = inputString.toString()\n let str: string = ''\n for (let n = 0; n < hex.length; n += 2) {\n str += String.fromCharCode(parseInt(hex.substring(n, n + 2), 16))\n }\n return str\n}\n\n/**\n * Returns a hash code from a string. Uses Java's String.hashCode() algorithm: https://devdocs.io/openjdk~8/java/lang/string#hashCode--\n * @param {String} str The string to hash.\n * @return {Number} A 32bit integer\n * @see https://stackoverflow.com/a/8831937\n */\nexport function hashCode(str?: string | null) {\n if (str == null) {\n str = ''\n }\n let hash = 0\n for (let i = 0, len = str.length; i < len; i++) {\n const chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return hash\n}\n\nexport function normalizeNumericId(id: string | number): number {\n if (id == null) {\n return NaN\n }\n if (typeof id === 'number') {\n return id\n }\n if (id.match(SYNAPSE_ENTITY_ID_REGEX)) {\n // parse the ID to remove a possible version suffix ('syn123.4' -> 'syn123')\n const entityId = parseSynId(id)!.targetId\n return parseInt(entityId.substring('syn'.length))\n } else {\n return parseInt(id)\n }\n}\n\n// Used for client-side validation. Note, the server has the final say. Integration tested in ChangePassword.integration.test.tsx\n// See https://github.com/Sage-Bionetworks/Synapse-Repository-Services/blob/develop/services/repository-managers/src/main/java/org/sagebionetworks/repo/manager/password/PasswordValidatorImpl.java#L47 for rules\nexport function validatePassword(newPassword: string) {\n if (newPassword.trim().length < 8) {\n return 'A valid password must be at least 8 characters long'\n }\n const hasLetter = /[a-zA-Z]/.test(newPassword) // Checks for at least one letter\n if (!hasLetter) {\n return 'A valid password must include letters'\n }\n\n const hasNumber = /\\d/.test(newPassword) // Checks for at least one number\n if (!hasNumber) {\n return 'A valid password must include digits (0-9)'\n }\n\n const hasSpecialChar = /[~!@#$%^&*_\\-+=`|\\\\(){}[\\]:;\"'<>,.?/]/.test(\n newPassword,\n ) // Checks for at least one special character\n if (!hasSpecialChar) {\n return 'A valid password must include special characters ~!@#$%^&*_-+=`|\\\\(){}[]:;\"\\'<>,.?/'\n }\n return undefined\n}\n\nexport function copyStringToClipboard(value: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // PORTALS-3571: setTimeout necessary on Safari\n setTimeout(() => {\n // use the Clipboard API\n // https://caniuse.com/mdn-api_clipboard_writetext\n navigator.clipboard.writeText(value).then(resolve).catch(reject)\n }, 0)\n })\n}\n\nexport function replaceFileExtension(\n filePath: string,\n extension: string,\n): string {\n const pathParts = filePath.split(/[\\\\/]/) // split on both '/' and '\\'\n const filename = pathParts[pathParts.length - 1] // last part of path\n const baseName = filename.replace(/\\.[^/.]+$/, '') // remove extension\n return `${baseName}.${extension}`\n}\n\nexport function stringListToArray(input: string): string[] {\n let inputArray: string[]\n\n if (Array.isArray(input)) {\n inputArray = input.map(String)\n } else {\n try {\n const parsed = JSON.parse(input ?? '[]')\n inputArray = Array.isArray(parsed) ? parsed.map(String) : [String(parsed)]\n } catch {\n inputArray = input ? [String(input)] : []\n }\n }\n return inputArray\n}\n\n// Split a value by a separator and remove leading/trailing spaces\nexport function splitAndTrim(value: string, sep: string = ','): string[] {\n return value?.split(sep).map(v => v.trim()) ?? []\n}\n"],"mappings":";;AAKA,SAAgB,EAAe,GAAa,GAAmB,IAAS,KAAK;CAI3E,OAHI,EAAI,UAAU,IACT,IAEF,EAAI,UAAU,GAAG,CAAS,IAAI;AACvC;AAEA,SAAgB,EAAU,GAA6B;CACrD,IAAM,IAAc,EAAY,SAAS,GACrC,IAAc;CAClB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAI,QAAQ,KAAK,GACnC,KAAO,OAAO,aAAa,SAAS,EAAI,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;CAElE,OAAO;AACT;AAQA,SAAgB,EAAS,GAAqB;CAC5C,AACE,MAAM;CAER,IAAI,IAAO;CACX,KAAK,IAAI,IAAI,GAAG,IAAM,EAAI,QAAQ,IAAI,GAAK,KAAK;EAC9C,IAAM,IAAM,EAAI,WAAW,CAAC;EAE5B,AADA,KAAQ,KAAQ,KAAK,IAAO,GAC5B,KAAQ;CACV;CACA,OAAO;AACT;AAEA,SAAgB,EAAmB,GAA6B;CAC9D,IAAI,KAAM,MACR,OAAO;CAET,IAAI,OAAO,KAAO,UAChB,OAAO;CAET,IAAI,EAAG,MAAM,CAAuB,GAAG;EAErC,IAAM,IAAW,EAAW,CAAE,EAAG;EACjC,OAAO,SAAS,EAAS,UAAU,CAAY,CAAC;CAClD,OACE,OAAO,SAAS,CAAE;AAEtB;AAIA,SAAgB,EAAiB,GAAqB;CACpD,IAAI,EAAY,KAAK,EAAE,SAAS,GAC9B,OAAO;CAGT,IAAI,CADc,WAAW,KAAK,CAC7B,GACH,OAAO;CAIT,IAAI,CADc,KAAK,KAAK,CACvB,GACH,OAAO;CAMT,IAAI,CAHmB,wCAAwC,KAC7D,CAEG,GACH,OAAO;AAGX;AAEA,SAAgB,EAAsB,GAA8B;CAClE,OAAO,IAAI,SAAS,GAAS,MAAW;EAEtC,iBAAiB;GAGf,UAAU,UAAU,UAAU,CAAK,EAAE,KAAK,CAAO,EAAE,MAAM,CAAM;EACjE,GAAG,CAAC;CACN,CAAC;AACH;AAEA,SAAgB,EACd,GACA,GACQ;CACR,IAAM,IAAY,EAAS,MAAM,OAAO;CAGxC,OAAO,GAFU,EAAU,EAAU,SAAS,GACpB,QAAQ,aAAa,EACrC,EAAS,GAAG;AACxB;AAEA,SAAgB,EAAkB,GAAyB;CACzD,IAAI;CAEJ,IAAI,MAAM,QAAQ,CAAK,GACrB,IAAa,EAAM,IAAI,MAAM;MAE7B,IAAI;EACF,IAAM,IAAS,KAAK,MAAM,KAAS,IAAI;EACvC,IAAa,MAAM,QAAQ,CAAM,IAAI,EAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAM,CAAC;CAC3E,QAAQ;EACN,IAAa,IAAQ,CAAC,OAAO,CAAK,CAAC,IAAI,CAAC;CAC1C;CAEF,OAAO;AACT;AAGA,SAAgB,EAAa,GAAe,IAAc,KAAe;CACvE,OAAO,GAAO,MAAM,CAAG,EAAE,KAAI,MAAK,EAAE,KAAK,CAAC,KAAK,CAAC;AAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableColumnSchemaUtils.js","names":[],"sources":["../../../src/utils/functions/TableColumnSchemaUtils.ts"],"sourcesContent":["import { createColumnModels } from '@/synapse-client'\nimport {\n ColumnChange,\n ColumnModel,\n TableUpdateTransactionRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { SetOptional } from 'type-fest'\nimport { isEqualTreatUndefinedAsMissing } from './IsEqualTreatUndefinedAsMissing'\n\nfunction validateProposedSchema(\n oldSchema: ColumnModel[],\n proposedSchema: SetOptional<ColumnModel, 'id'>[],\n): void {\n // If the proposed schema contains any IDs that are not in the old schema, throw an error\n // We do this so we can accurately track updates to existing columns by using the ID that is already present\n const oldColumnModelIds: Set<string> = new Set()\n for (const columnModel of oldSchema) {\n oldColumnModelIds.add(columnModel.id)\n }\n for (const columnModel of proposedSchema) {\n if (columnModel.id != null && !oldColumnModelIds.has(columnModel.id)) {\n throw new Error(\n `Proposed schema contains a new column model with ID ${columnModel.id} that is not in the old schema.`,\n )\n }\n }\n}\n\n/**\n * Creates the column models for a change request and returns the change request to be passed to the Synapse backend.\n *\n * Note that to update a column model and preserve table data, the ID of the column in the oldSchema should be the same as the column ID in the proposedSchema.\n * @param accessToken the Synapse access token\n * @param tableId the ID of the table to change\n * @param oldSchema the current schema of the table\n * @param proposedSchema the proposed schema of the table. For TableEntities, the IDs should be preserved for columns\n * that should maintain their data, even if the column model has changed\n */\nexport async function createTableUpdateTransactionRequest(\n accessToken: string,\n tableId: string,\n oldSchema: ColumnModel[],\n proposedSchema: SetOptional<ColumnModel, 'id'>[],\n): Promise<TableUpdateTransactionRequest> {\n validateProposedSchema(oldSchema, proposedSchema)\n\n // Keep track of the old column models by ID\n const oldColumnModelId2Model: Map<string, ColumnModel> = new Map()\n for (const columnModel of oldSchema) {\n oldColumnModelId2Model.set(columnModel.id, columnModel)\n }\n\n // Create the new column models.\n // The newSchema will match the proposed schema, but column models that have been changed will end up getting a new ID\n const newSchema: SetOptional<ColumnModel, 'id'>[] = []\n for (const m of proposedSchema) {\n const copy: SetOptional<ColumnModel, 'id'> = {\n ...m,\n }\n if (copy.id != null) {\n // If there are any changes to the existing column model, remove the ID before we create the new one\n const oldColumnModel: ColumnModel | undefined =\n oldColumnModelId2Model.get(copy.id)\n if (\n oldColumnModel != undefined &&\n !isEqualTreatUndefinedAsMissing(oldColumnModel, copy)\n ) {\n delete copy.id\n }\n }\n newSchema.push(copy)\n }\n const createdColumnModels = (await createColumnModels(accessToken, newSchema))\n .list\n\n // now that all columns have been created, figure out the column changes (create, update, and no-op)\n const changes: ColumnChange[] = []\n // We have to provide the backend with the set of columns to remove from the table schema.\n // Keep track of the column IDs that were modified or added to make it easier to determine this set.\n const columnIdsThatShouldNotBeRemovedFromSchema: Set<string> = new Set()\n for (let i = 0; i < proposedSchema.length; i++) {\n const columnIdInProposedSchema: string | null = proposedSchema[i].id ?? null\n const newColumnId: string = createdColumnModels[i].id\n if (columnIdInProposedSchema != null) {\n // This column was modified, so it should not be removed from the schema\n columnIdsThatShouldNotBeRemovedFromSchema.add(columnIdInProposedSchema)\n }\n columnIdsThatShouldNotBeRemovedFromSchema.add(newColumnId)\n if (\n columnIdInProposedSchema != null &&\n columnIdInProposedSchema !== newColumnId\n ) {\n // The column has changed\n changes.push({ oldColumnId: columnIdInProposedSchema, newColumnId })\n } else if (columnIdInProposedSchema == null) {\n // the column is new to the table\n changes.push({ oldColumnId: null, newColumnId })\n }\n // Otherwise, the column was in the old schema and was not modified. No change is needed.\n }\n\n // delete columns that were not updated, added, or unchanged in the table schema\n for (const oldColumnModel of oldSchema) {\n const oldColumnId: string | null = oldColumnModel.id\n if (!columnIdsThatShouldNotBeRemovedFromSchema.has(oldColumnId)) {\n changes.push({ oldColumnId, newColumnId: null })\n }\n }\n\n return {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableUpdateTransactionRequest',\n entityId: tableId,\n changes: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableSchemaChangeRequest',\n entityId: tableId,\n changes: changes,\n orderedColumnIds: createdColumnModels.map(cm => cm.id),\n },\n ],\n }\n}\n"],"mappings":";;;;AASA,SAAS,EACP,GACA,GACM;CAGN,IAAM,oBAAiC,IAAI,
|
|
1
|
+
{"version":3,"file":"TableColumnSchemaUtils.js","names":[],"sources":["../../../src/utils/functions/TableColumnSchemaUtils.ts"],"sourcesContent":["import { createColumnModels } from '@/synapse-client'\nimport {\n ColumnChange,\n ColumnModel,\n TableUpdateTransactionRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { SetOptional } from 'type-fest'\nimport { isEqualTreatUndefinedAsMissing } from './IsEqualTreatUndefinedAsMissing'\n\nfunction validateProposedSchema(\n oldSchema: ColumnModel[],\n proposedSchema: SetOptional<ColumnModel, 'id'>[],\n): void {\n // If the proposed schema contains any IDs that are not in the old schema, throw an error\n // We do this so we can accurately track updates to existing columns by using the ID that is already present\n const oldColumnModelIds: Set<string> = new Set()\n for (const columnModel of oldSchema) {\n oldColumnModelIds.add(columnModel.id)\n }\n for (const columnModel of proposedSchema) {\n if (columnModel.id != null && !oldColumnModelIds.has(columnModel.id)) {\n throw new Error(\n `Proposed schema contains a new column model with ID ${columnModel.id} that is not in the old schema.`,\n )\n }\n }\n}\n\n/**\n * Creates the column models for a change request and returns the change request to be passed to the Synapse backend.\n *\n * Note that to update a column model and preserve table data, the ID of the column in the oldSchema should be the same as the column ID in the proposedSchema.\n * @param accessToken the Synapse access token\n * @param tableId the ID of the table to change\n * @param oldSchema the current schema of the table\n * @param proposedSchema the proposed schema of the table. For TableEntities, the IDs should be preserved for columns\n * that should maintain their data, even if the column model has changed\n */\nexport async function createTableUpdateTransactionRequest(\n accessToken: string,\n tableId: string,\n oldSchema: ColumnModel[],\n proposedSchema: SetOptional<ColumnModel, 'id'>[],\n): Promise<TableUpdateTransactionRequest> {\n validateProposedSchema(oldSchema, proposedSchema)\n\n // Keep track of the old column models by ID\n const oldColumnModelId2Model: Map<string, ColumnModel> = new Map()\n for (const columnModel of oldSchema) {\n oldColumnModelId2Model.set(columnModel.id, columnModel)\n }\n\n // Create the new column models.\n // The newSchema will match the proposed schema, but column models that have been changed will end up getting a new ID\n const newSchema: SetOptional<ColumnModel, 'id'>[] = []\n for (const m of proposedSchema) {\n const copy: SetOptional<ColumnModel, 'id'> = {\n ...m,\n }\n if (copy.id != null) {\n // If there are any changes to the existing column model, remove the ID before we create the new one\n const oldColumnModel: ColumnModel | undefined =\n oldColumnModelId2Model.get(copy.id)\n if (\n oldColumnModel != undefined &&\n !isEqualTreatUndefinedAsMissing(oldColumnModel, copy)\n ) {\n delete copy.id\n }\n }\n newSchema.push(copy)\n }\n const createdColumnModels = (await createColumnModels(accessToken, newSchema))\n .list\n\n // now that all columns have been created, figure out the column changes (create, update, and no-op)\n const changes: ColumnChange[] = []\n // We have to provide the backend with the set of columns to remove from the table schema.\n // Keep track of the column IDs that were modified or added to make it easier to determine this set.\n const columnIdsThatShouldNotBeRemovedFromSchema: Set<string> = new Set()\n for (let i = 0; i < proposedSchema.length; i++) {\n const columnIdInProposedSchema: string | null = proposedSchema[i].id ?? null\n const newColumnId: string = createdColumnModels[i].id\n if (columnIdInProposedSchema != null) {\n // This column was modified, so it should not be removed from the schema\n columnIdsThatShouldNotBeRemovedFromSchema.add(columnIdInProposedSchema)\n }\n columnIdsThatShouldNotBeRemovedFromSchema.add(newColumnId)\n if (\n columnIdInProposedSchema != null &&\n columnIdInProposedSchema !== newColumnId\n ) {\n // The column has changed\n changes.push({ oldColumnId: columnIdInProposedSchema, newColumnId })\n } else if (columnIdInProposedSchema == null) {\n // the column is new to the table\n changes.push({ oldColumnId: null, newColumnId })\n }\n // Otherwise, the column was in the old schema and was not modified. No change is needed.\n }\n\n // delete columns that were not updated, added, or unchanged in the table schema\n for (const oldColumnModel of oldSchema) {\n const oldColumnId: string | null = oldColumnModel.id\n if (!columnIdsThatShouldNotBeRemovedFromSchema.has(oldColumnId)) {\n changes.push({ oldColumnId, newColumnId: null })\n }\n }\n\n return {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableUpdateTransactionRequest',\n entityId: tableId,\n changes: [\n {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableSchemaChangeRequest',\n entityId: tableId,\n changes: changes,\n orderedColumnIds: createdColumnModels.map(cm => cm.id),\n },\n ],\n }\n}\n"],"mappings":";;;;AASA,SAAS,EACP,GACA,GACM;CAGN,IAAM,oBAAiC,IAAI,IAAI;CAC/C,KAAK,IAAM,KAAe,GACxB,EAAkB,IAAI,EAAY,EAAE;CAEtC,KAAK,IAAM,KAAe,GACxB,IAAI,EAAY,MAAM,QAAQ,CAAC,EAAkB,IAAI,EAAY,EAAE,GACjE,MAAU,MACR,uDAAuD,EAAY,GAAG,gCACxE;AAGN;AAYA,eAAsB,EACpB,GACA,GACA,GACA,GACwC;CACxC,EAAuB,GAAW,CAAc;CAGhD,IAAM,oBAAmD,IAAI,IAAI;CACjE,KAAK,IAAM,KAAe,GACxB,EAAuB,IAAI,EAAY,IAAI,CAAW;CAKxD,IAAM,IAA8C,CAAC;CACrD,KAAK,IAAM,KAAK,GAAgB;EAC9B,IAAM,IAAuC,EAC3C,GAAG,EACL;EACA,IAAI,EAAK,MAAM,MAAM;GAEnB,IAAM,IACJ,EAAuB,IAAI,EAAK,EAAE;GACpC,AACE,KAAkB,QAClB,CAAC,EAA+B,GAAgB,CAAI,KAEpD,OAAO,EAAK;EAEhB;EACA,EAAU,KAAK,CAAI;CACrB;CACA,IAAM,KAAuB,MAAM,EAAmB,GAAa,CAAS,GACzE,MAGG,IAA0B,CAAC,GAG3B,oBAAyD,IAAI,IAAI;CACvE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAe,QAAQ,KAAK;EAC9C,IAAM,IAA0C,EAAe,GAAG,MAAM,MAClE,IAAsB,EAAoB,GAAG;EAMnD,AALI,KAA4B,QAE9B,EAA0C,IAAI,CAAwB,GAExE,EAA0C,IAAI,CAAW,GAEvD,KAA4B,QAC5B,MAA6B,IAG7B,EAAQ,KAAK;GAAE,aAAa;GAA0B;EAAY,CAAC,IAC1D,KAET,EAAQ,KAAK;GAAE,aAAa;GAAM;EAAY,CAAC;CAGnD;CAGA,KAAK,IAAM,KAAkB,GAAW;EACtC,IAAM,IAA6B,EAAe;EAClD,AAAK,EAA0C,IAAI,CAAW,KAC5D,EAAQ,KAAK;GAAE;GAAa,aAAa;EAAK,CAAC;CAEnD;CAEA,OAAO;EACL,cACE;EACF,UAAU;EACV,SAAS,CACP;GACE,cACE;GACF,UAAU;GACD;GACT,kBAAkB,EAAoB,KAAI,MAAM,EAAG,EAAE;EACvD,CACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateFriendlyFileSize.js","names":[],"sources":["../../../src/utils/functions/calculateFriendlyFileSize.ts"],"sourcesContent":["const suffixes: string[] = [\n 'Bytes',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB',\n 'EB',\n 'ZB',\n 'YB',\n]\n\nexport function calculateFriendlyFileSize(\n bytes: number | null | undefined,\n fractionDigits?: number,\n) {\n if (bytes == null) {\n return ''\n }\n // https://stackoverflow.com/questions/10420352/converting-file-size-in-bytes-to-human-readable-string\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n // 0 for Bytes/KB, 1 for MB, 2 for GB, 3 for TB etc\n const digits = fractionDigits ?? Math.max(0, i - 1)\n // tslint:disable-next-line\n return (\n (bytes == 0 && '0 Bytes') ||\n (bytes / Math.pow(1024, i)).toFixed(digits) + ' ' + suffixes[i]\n )\n}\n"],"mappings":";AAAA,IAAM,IAAqB;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;
|
|
1
|
+
{"version":3,"file":"calculateFriendlyFileSize.js","names":[],"sources":["../../../src/utils/functions/calculateFriendlyFileSize.ts"],"sourcesContent":["const suffixes: string[] = [\n 'Bytes',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB',\n 'EB',\n 'ZB',\n 'YB',\n]\n\nexport function calculateFriendlyFileSize(\n bytes: number | null | undefined,\n fractionDigits?: number,\n) {\n if (bytes == null) {\n return ''\n }\n // https://stackoverflow.com/questions/10420352/converting-file-size-in-bytes-to-human-readable-string\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n // 0 for Bytes/KB, 1 for MB, 2 for GB, 3 for TB etc\n const digits = fractionDigits ?? Math.max(0, i - 1)\n // tslint:disable-next-line\n return (\n (bytes == 0 && '0 Bytes') ||\n (bytes / Math.pow(1024, i)).toFixed(digits) + ' ' + suffixes[i]\n )\n}\n"],"mappings":";AAAA,IAAM,IAAqB;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAgB,EACd,GACA,GACA;CACA,IAAI,KAAS,MACX,OAAO;CAGT,IAAM,IAAI,KAAK,MAAM,KAAK,IAAI,CAAK,IAAI,KAAK,IAAI,IAAI,CAAC,GAE/C,IAAS,KAAkB,KAAK,IAAI,GAAG,IAAI,CAAC;CAElD,OACG,KAAS,KAAK,cACd,IAAiB,QAAM,GAAI,QAAQ,CAAM,IAAI,MAAM,EAAS;AAEjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorPalette.js","names":[],"sources":["../../../src/utils/functions/colorPalette.ts"],"sourcesContent":["const COLOR_PALETTE_EVEN: string[] = [\n 'hsl(183, 38%, 43%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 37%, 81%)',\n\n 'hsl(204, 33%, 78%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 43%, 36%)',\n\n 'hsl(332, 57%, 42%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(331, 55%, 81%)',\n\n 'hsl(256, 22%, 74%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 40%, 40%)',\n 'hsl(256, 42%, 32%)',\n\n 'hsl(39, 76%, 45%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(38, 78%, 65%)',\n 'hsl(39, 78%, 75%)',\n\n 'hsl(174, 38%, 73%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 80%, 25%)',\n\n 'hsl(218, 28%, 25%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(218, 11%, 73%)',\n\n 'hsl(26, 68%, 79%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 89%, 39%)',\n\n 'hsl(120, 29%, 40%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 79%)',\n\n 'hsl(223, 47%, 81%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 45%)',\n\n 'hsl(357, 66%, 35%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 77%)',\n\n 'hsl(183, 37%, 79%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 45%)',\n\n 'hsl(203, 43%, 38%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(204, 33%, 75%)',\n\n 'hsl(331, 55%, 81%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 44%)',\n\n 'hsl(256, 42%, 28%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 22%, 74%)',\n\n 'hsl(39, 75%, 80%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(39, 75%, 40%)',\n\n 'hsl(175, 80%, 28%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(174, 38%, 73%)',\n\n 'hsl(218, 11%, 73%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(218, 25%, 25%)',\n\n 'hsl(26, 75%, 37%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 79%)',\n\n 'hsl(120, 28%, 79%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 29%, 39%)',\n\n 'hsl(223, 47%, 45%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 81%)',\n\n 'hsl(357, 48%, 77%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 66%, 38%)',\n]\n\nconst COLOR_PALETTE_ODD: string[] = [\n 'hsl(203, 43%, 34%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(204, 33%, 78%)',\n\n 'hsl(331, 55%, 81%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 45%)',\n\n 'hsl(256, 42%, 25%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 22%, 74%)',\n\n 'hsl(39, 75%, 80%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(39, 75%, 40%)',\n\n 'hsl(175, 80%, 25%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(174, 38%, 73%)',\n\n 'hsl(218, 11%, 73%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(218, 25%, 25%)',\n\n 'hsl(26, 75%, 35%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 79%)',\n\n 'hsl(120, 28%, 79%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 29%, 39%)',\n\n 'hsl(223, 47%, 45%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 81%)',\n\n 'hsl(357, 48%, 77%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 66%, 35%)',\n\n 'hsl(183, 38%, 45%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 37%, 81%)',\n\n 'hsl(204, 33%, 78%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 43%, 36%)',\n\n 'hsl(332, 56%, 43%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(331, 55%, 81%)',\n\n 'hsl(256, 22%, 74%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 42%, 25%)',\n\n 'hsl(39, 75%, 40%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(39, 75%, 80%)',\n\n 'hsl(174, 38%, 73%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 80%, 25%)',\n\n 'hsl(218, 25%, 25%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(218, 11%, 73%)',\n\n 'hsl(26, 68%, 79%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 75%, 36%)',\n\n 'hsl(120, 29%, 35%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 79%)',\n\n 'hsl(223, 47%, 81%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 45%)',\n\n 'hsl(357, 66%, 35%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 77%)',\n\n 'hsl(183, 37%, 81%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 45%)',\n]\n\nexport { COLOR_PALETTE_EVEN, COLOR_PALETTE_ODD }\n"],"mappings":";AAAA,IAAM,IAA+B,
|
|
1
|
+
{"version":3,"file":"colorPalette.js","names":[],"sources":["../../../src/utils/functions/colorPalette.ts"],"sourcesContent":["const COLOR_PALETTE_EVEN: string[] = [\n 'hsl(183, 38%, 43%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 37%, 81%)',\n\n 'hsl(204, 33%, 78%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 43%, 36%)',\n\n 'hsl(332, 57%, 42%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(331, 55%, 81%)',\n\n 'hsl(256, 22%, 74%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 40%, 40%)',\n 'hsl(256, 42%, 32%)',\n\n 'hsl(39, 76%, 45%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(38, 78%, 65%)',\n 'hsl(39, 78%, 75%)',\n\n 'hsl(174, 38%, 73%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 80%, 25%)',\n\n 'hsl(218, 28%, 25%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(218, 11%, 73%)',\n\n 'hsl(26, 68%, 79%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 89%, 39%)',\n\n 'hsl(120, 29%, 40%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 79%)',\n\n 'hsl(223, 47%, 81%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 45%)',\n\n 'hsl(357, 66%, 35%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 77%)',\n\n 'hsl(183, 37%, 79%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 45%)',\n\n 'hsl(203, 43%, 38%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(204, 33%, 75%)',\n\n 'hsl(331, 55%, 81%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 44%)',\n\n 'hsl(256, 42%, 28%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 22%, 74%)',\n\n 'hsl(39, 75%, 80%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(39, 75%, 40%)',\n\n 'hsl(175, 80%, 28%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(174, 38%, 73%)',\n\n 'hsl(218, 11%, 73%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(218, 25%, 25%)',\n\n 'hsl(26, 75%, 37%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 79%)',\n\n 'hsl(120, 28%, 79%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 29%, 39%)',\n\n 'hsl(223, 47%, 45%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 81%)',\n\n 'hsl(357, 48%, 77%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 66%, 38%)',\n]\n\nconst COLOR_PALETTE_ODD: string[] = [\n 'hsl(203, 43%, 34%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(204, 33%, 78%)',\n\n 'hsl(331, 55%, 81%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 45%)',\n\n 'hsl(256, 42%, 25%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 22%, 74%)',\n\n 'hsl(39, 75%, 80%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(39, 75%, 40%)',\n\n 'hsl(175, 80%, 25%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(174, 38%, 73%)',\n\n 'hsl(218, 11%, 73%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(218, 25%, 25%)',\n\n 'hsl(26, 75%, 35%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 79%)',\n\n 'hsl(120, 28%, 79%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 29%, 39%)',\n\n 'hsl(223, 47%, 45%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 81%)',\n\n 'hsl(357, 48%, 77%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 66%, 35%)',\n\n 'hsl(183, 38%, 45%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 37%, 81%)',\n\n 'hsl(204, 33%, 78%)',\n 'hsl(203, 34%, 66%)',\n 'hsl(203, 34%, 55%)',\n 'hsl(203, 43%, 44%)',\n 'hsl(203, 43%, 36%)',\n\n 'hsl(332, 56%, 43%)',\n 'hsl(332, 56%, 52%)',\n 'hsl(332, 56%, 62%)',\n 'hsl(333, 56%, 72%)',\n 'hsl(331, 55%, 81%)',\n\n 'hsl(256, 22%, 74%)',\n 'hsl(256, 22%, 61%)',\n 'hsl(256, 24%, 48%)',\n 'hsl(256, 42%, 35%)',\n 'hsl(256, 42%, 25%)',\n\n 'hsl(39, 75%, 40%)',\n 'hsl(39, 75%, 50%)',\n 'hsl(38, 75%, 60%)',\n 'hsl(38, 74%, 70%)',\n 'hsl(39, 75%, 80%)',\n\n 'hsl(174, 38%, 73%)',\n 'hsl(175, 38%, 59%)',\n 'hsl(175, 45%, 46%)',\n 'hsl(175, 80%, 32%)',\n 'hsl(175, 80%, 25%)',\n\n 'hsl(218, 25%, 25%)',\n 'hsl(218, 25%, 31%)',\n 'hsl(219, 14%, 45%)',\n 'hsl(219, 11%, 59%)',\n 'hsl(218, 11%, 73%)',\n\n 'hsl(26, 68%, 79%)',\n 'hsl(26, 68%, 68%)',\n 'hsl(26, 68%, 58%)',\n 'hsl(26, 75%, 47%)',\n 'hsl(26, 75%, 36%)',\n\n 'hsl(120, 29%, 35%)',\n 'hsl(120, 29%, 49%)',\n 'hsl(120, 28%, 59%)',\n 'hsl(120, 28%, 69%)',\n 'hsl(120, 28%, 79%)',\n\n 'hsl(223, 47%, 81%)',\n 'hsl(223, 46%, 72%)',\n 'hsl(223, 47%, 63%)',\n 'hsl(223, 47%, 54%)',\n 'hsl(223, 47%, 45%)',\n\n 'hsl(357, 66%, 35%)',\n 'hsl(357, 66%, 42%)',\n 'hsl(357, 48%, 54%)',\n 'hsl(358, 48%, 65%)',\n 'hsl(357, 48%, 77%)',\n\n 'hsl(183, 37%, 81%)',\n 'hsl(183, 38%, 72%)',\n 'hsl(183, 38%, 63%)',\n 'hsl(183, 38%, 53%)',\n 'hsl(183, 38%, 45%)',\n]\n\nexport { COLOR_PALETTE_EVEN, COLOR_PALETTE_ODD }\n"],"mappings":";AAAA,IAAM,IAA+B,ijEAoIrC,GAEM,IAA8B,ijEAoIpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepLinkingUtils.js","names":[],"sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n window.history.state,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deepLinkingUtils.js","names":[],"sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n window.history.state,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchDownloadListChangeEvent.js","names":[],"sources":["../../../src/utils/functions/dispatchDownloadListChangeEvent.ts"],"sourcesContent":["import { DownloadList } from '@sage-bionetworks/synapse-types'\n\nexport const DOWNLOAD_LIST_CHANGE_EVENT = 'DOWNLOAD_LIST_UPDATED_EVENT'\n\nexport const dispatchDownloadListChangeEvent = (\n downloadList: DownloadList | undefined,\n) => {\n const downloadEvent = new CustomEvent(DOWNLOAD_LIST_CHANGE_EVENT, {\n detail: downloadList,\n })\n document.dispatchEvent(downloadEvent)\n}\n"],"mappings":";AAEA,IAAa,IAA6B,+BAE7B,KACX,MACG;CACH,IAAM,IAAgB,IAAI,YAAY,GAA4B,EAChE,QAAQ,
|
|
1
|
+
{"version":3,"file":"dispatchDownloadListChangeEvent.js","names":[],"sources":["../../../src/utils/functions/dispatchDownloadListChangeEvent.ts"],"sourcesContent":["import { DownloadList } from '@sage-bionetworks/synapse-types'\n\nexport const DOWNLOAD_LIST_CHANGE_EVENT = 'DOWNLOAD_LIST_UPDATED_EVENT'\n\nexport const dispatchDownloadListChangeEvent = (\n downloadList: DownloadList | undefined,\n) => {\n const downloadEvent = new CustomEvent(DOWNLOAD_LIST_CHANGE_EVENT, {\n detail: downloadList,\n })\n document.dispatchEvent(downloadEvent)\n}\n"],"mappings":";AAEA,IAAa,IAA6B,+BAE7B,KACX,MACG;CACH,IAAM,IAAgB,IAAI,YAAY,GAA4B,EAChE,QAAQ,EACV,CAAC;CACD,SAAS,cAAc,CAAa;AACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateCsrfToken.js","names":[],"sources":["../../../src/utils/functions/generateCsrfToken.ts"],"sourcesContent":["/**\n * Generates a cryptographically secure random CSRF token.\n *\n * @returns A cryptographically secure random token string\n */\nexport function generateCsrfToken(): string {\n // Use globalThis.crypto which works in both browsers and Node.js 19+.\n // Avoids a direct `window` reference so this function is safe to call during SSR.\n const crypto =\n typeof globalThis !== 'undefined' ? globalThis.crypto : undefined\n if (crypto?.getRandomValues) {\n const bytes = new Uint8Array(32)\n crypto.getRandomValues(bytes)\n return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join(\n '',\n )\n }\n\n return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`\n}\n"],"mappings":";AAKA,SAAgB,IAA4B;CAG1C,IAAM,IACJ,OAAO,aAAe,MAAc,WAAW,SAAS,KAAA;
|
|
1
|
+
{"version":3,"file":"generateCsrfToken.js","names":[],"sources":["../../../src/utils/functions/generateCsrfToken.ts"],"sourcesContent":["/**\n * Generates a cryptographically secure random CSRF token.\n *\n * @returns A cryptographically secure random token string\n */\nexport function generateCsrfToken(): string {\n // Use globalThis.crypto which works in both browsers and Node.js 19+.\n // Avoids a direct `window` reference so this function is safe to call during SSR.\n const crypto =\n typeof globalThis !== 'undefined' ? globalThis.crypto : undefined\n if (crypto?.getRandomValues) {\n const bytes = new Uint8Array(32)\n crypto.getRandomValues(bytes)\n return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join(\n '',\n )\n }\n\n return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`\n}\n"],"mappings":";AAKA,SAAgB,IAA4B;CAG1C,IAAM,IACJ,OAAO,aAAe,MAAc,WAAW,SAAS,KAAA;CAC1D,IAAI,GAAQ,iBAAiB;EAC3B,IAAM,IAAQ,IAAI,WAAW,EAAE;EAE/B,OADA,EAAO,gBAAgB,CAAK,GACrB,MAAM,KAAK,IAAO,MAAQ,EAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KACnE,EACF;CACF;CAEA,OAAO,GAAG,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AACzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataFromFromStorage.js","names":[],"sources":["../../../src/utils/functions/getDataFromFromStorage.ts"],"sourcesContent":["import {\n ColumnType,\n ColumnTypeEnum,\n EntityHeader,\n Evaluation,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { SynapseConstants } from '../index'\n\nconst getStoredEntityHeaders = (): EntityHeader[] => {\n try {\n const lookUpEntityHeaders: EntityHeader[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.ENTITY_HEADER_STORAGE_KEY) || '',\n )\n return lookUpEntityHeaders\n } catch (e) {\n return []\n }\n}\n\nconst getStoredUserProfiles = (): UserProfile[] => {\n try {\n const lookUpUserIds: UserProfile[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.USER_PROFILE_STORAGE_KEY) || '',\n )\n return lookUpUserIds\n } catch (e) {\n return []\n }\n}\n\nconst getStoredEvaluation = (): Evaluation[] => {\n try {\n const lookUpEvaluations: UserProfile[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.EVALUATIONS_STORAGE_KEY) || '',\n )\n return lookUpEvaluations\n } catch (e) {\n return []\n }\n}\n\nconst getDisplayValueForEntityColumn = (value: string): string => {\n const entity = getStoredEntityHeaders().find(item => item.id === value)\n return entity?.name ?? value\n}\n\nconst getDisplayValueEvaluationIdColumn = (facetValue: string): string => {\n const evaluation = getStoredEvaluation().find(item => item.id === facetValue)\n return evaluation?.name || facetValue\n}\n\nconst getDisplayValueUserIdColumn = (facetValue: string): string => {\n const userProfile = getStoredUserProfiles().find(\n item => item.ownerId === facetValue,\n )\n return userProfile?.userName || facetValue\n}\n\nexport const getDisplayValue = (value: string, columnType: ColumnType) => {\n if (value === SynapseConstants.VALUE_NOT_SET) {\n return SynapseConstants.FRIENDLY_VALUE_NOT_SET\n }\n\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n return getDisplayValueForEntityColumn(value)\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n return getDisplayValueUserIdColumn(value)\n case ColumnTypeEnum.EVALUATIONID:\n return getDisplayValueEvaluationIdColumn(value)\n default:\n return value\n }\n}\n"],"mappings":";;;;AASA,IAAM,UAA+C;
|
|
1
|
+
{"version":3,"file":"getDataFromFromStorage.js","names":[],"sources":["../../../src/utils/functions/getDataFromFromStorage.ts"],"sourcesContent":["import {\n ColumnType,\n ColumnTypeEnum,\n EntityHeader,\n Evaluation,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { SynapseConstants } from '../index'\n\nconst getStoredEntityHeaders = (): EntityHeader[] => {\n try {\n const lookUpEntityHeaders: EntityHeader[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.ENTITY_HEADER_STORAGE_KEY) || '',\n )\n return lookUpEntityHeaders\n } catch (e) {\n return []\n }\n}\n\nconst getStoredUserProfiles = (): UserProfile[] => {\n try {\n const lookUpUserIds: UserProfile[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.USER_PROFILE_STORAGE_KEY) || '',\n )\n return lookUpUserIds\n } catch (e) {\n return []\n }\n}\n\nconst getStoredEvaluation = (): Evaluation[] => {\n try {\n const lookUpEvaluations: UserProfile[] = JSON.parse(\n sessionStorage.getItem(SynapseConstants.EVALUATIONS_STORAGE_KEY) || '',\n )\n return lookUpEvaluations\n } catch (e) {\n return []\n }\n}\n\nconst getDisplayValueForEntityColumn = (value: string): string => {\n const entity = getStoredEntityHeaders().find(item => item.id === value)\n return entity?.name ?? value\n}\n\nconst getDisplayValueEvaluationIdColumn = (facetValue: string): string => {\n const evaluation = getStoredEvaluation().find(item => item.id === facetValue)\n return evaluation?.name || facetValue\n}\n\nconst getDisplayValueUserIdColumn = (facetValue: string): string => {\n const userProfile = getStoredUserProfiles().find(\n item => item.ownerId === facetValue,\n )\n return userProfile?.userName || facetValue\n}\n\nexport const getDisplayValue = (value: string, columnType: ColumnType) => {\n if (value === SynapseConstants.VALUE_NOT_SET) {\n return SynapseConstants.FRIENDLY_VALUE_NOT_SET\n }\n\n switch (columnType) {\n case ColumnTypeEnum.ENTITYID:\n case ColumnTypeEnum.ENTITYID_LIST:\n return getDisplayValueForEntityColumn(value)\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.USERID_LIST:\n return getDisplayValueUserIdColumn(value)\n case ColumnTypeEnum.EVALUATIONID:\n return getDisplayValueEvaluationIdColumn(value)\n default:\n return value\n }\n}\n"],"mappings":";;;;AASA,IAAM,UAA+C;CACnD,IAAI;EAIF,OAH4C,KAAK,MAC/C,eAAe,QAAQ,6BAA0C,KAAK,EAEjE;CACT,QAAY;EACV,OAAO,CAAC;CACV;AACF,GAEM,UAA6C;CACjD,IAAI;EAIF,OAHqC,KAAK,MACxC,eAAe,QAAQ,4BAAyC,KAAK,EAEhE;CACT,QAAY;EACV,OAAO,CAAC;CACV;AACF,GAEM,UAA0C;CAC9C,IAAI;EAIF,OAHyC,KAAK,MAC5C,eAAe,QAAQ,gCAAwC,KAAK,EAE/D;CACT,QAAY;EACV,OAAO,CAAC;CACV;AACF,GAEM,KAAkC,MACvB,EAAuB,EAAE,MAAK,MAAQ,EAAK,OAAO,CAC1D,GAAQ,QAAQ,GAGnB,KAAqC,MACtB,EAAoB,EAAE,MAAK,MAAQ,EAAK,OAAO,CAC3D,GAAY,QAAQ,GAGvB,KAA+B,MACf,EAAsB,EAAE,MAC1C,MAAQ,EAAK,YAAY,CAEpB,GAAa,YAAY,GAGrB,KAAmB,GAAe,MAA2B;CACxE,IAAI,MAAU,6CACZ,OAAO;CAGT,QAAQ,GAAR;EACE,KAAK,EAAe;EACpB,KAAK,EAAe,eAClB,OAAO,EAA+B,CAAK;EAC7C,KAAK,EAAe;EACpB,KAAK,EAAe,aAClB,OAAO,EAA4B,CAAK;EAC1C,KAAK,EAAe,cAClB,OAAO,EAAkC,CAAK;EAChD,SACE,OAAO;CACX;AACF"}
|
|
@@ -20,9 +20,9 @@ var s = {
|
|
|
20
20
|
}, c = (e) => {
|
|
21
21
|
let t = s;
|
|
22
22
|
typeof window < "u" && window.SRC_OVERRIDE_ENDPOINT_CONFIG && (t = window.SRC_OVERRIDE_ENDPOINT_CONFIG);
|
|
23
|
-
let { PORTAL: n, REPO:
|
|
24
|
-
if (!n || !
|
|
25
|
-
return e ===
|
|
23
|
+
let { PORTAL: n, REPO: r } = t;
|
|
24
|
+
if (!n || !r) throw Error("Error failed to specify endpoints, cannot make call");
|
|
25
|
+
return e === 1 ? n : r;
|
|
26
26
|
}, l = "https://mock-repo.sagebase.org", u = {
|
|
27
27
|
production: {
|
|
28
28
|
REPO: t,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEndpoint.js","names":[],"sources":["../../../src/utils/functions/getEndpoint.ts"],"sourcesContent":["import {\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport enum BackendDestinationEnum {\n REPO_ENDPOINT,\n PORTAL_ENDPOINT,\n}\n\n// Encodes the portal and repo service destinations\nexport type EndpointObject = {\n REPO: string\n PORTAL: string\n}\n\nexport const KNOWN_SYNAPSE_ORG_URLS = [\n 'www.synapse.org',\n 'staging.synapse.org',\n 'tst.synapse.org',\n 'dev.synapse.org',\n '127.0.0.1',\n]\n\nexport const getSynapsePortalEndpoint = (hostname: string): string => {\n return KNOWN_SYNAPSE_ORG_URLS.includes(hostname.toLowerCase())\n ? '/'\n : 'https://www.synapse.org/'\n}\nfunction getDefaultSynapsePortal(): string {\n if (typeof window === 'undefined') return getSynapsePortalEndpoint('')\n return getSynapsePortalEndpoint(window.location.hostname)\n}\n\nexport const PRODUCTION_ENDPOINT_CONFIG: EndpointObject = {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n // Computed lazily via a getter so this object can be imported in Node.js (SSR/pre-render)\n // without crashing on the `window.location.hostname` access.\n get PORTAL() {\n return getDefaultSynapsePortal()\n },\n}\n\n// Given an endpoint will return the specific stack object\nexport const getEndpoint = (endpoint: BackendDestinationEnum): string => {\n let endpoint_config = PRODUCTION_ENDPOINT_CONFIG\n if (typeof window !== 'undefined') {\n // @ts-expect-error if overriding endpoint config\n if (window.SRC_OVERRIDE_ENDPOINT_CONFIG) {\n // @ts-expect-error\n endpoint_config = window.SRC_OVERRIDE_ENDPOINT_CONFIG\n }\n }\n const { PORTAL, REPO } = endpoint_config\n if (!PORTAL || !REPO) {\n throw Error('Error failed to specify endpoints, cannot make call')\n }\n if (endpoint === BackendDestinationEnum.PORTAL_ENDPOINT) {\n return PORTAL\n }\n return REPO\n}\n\nexport type SynapseStack =\n | 'production'\n | 'staging'\n | 'development'\n | 'mock'\n | 'local'\n\nexport const MOCK_REPO_ORIGIN =\n 'https://mock-repo.sagebase.org' satisfies string\nconst MOCK_PORTAL_ORIGIN = 'https://mock-portal.sagebase.org/' satisfies string\n\nexport const STACK_MAP: Record<SynapseStack, EndpointObject> = {\n production: {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n PORTAL: 'https://www.synapse.org/',\n },\n staging: {\n REPO: SYNAPSE_BACKEND_STAGING_URL,\n PORTAL: 'https://staging.synapse.org/',\n },\n development: {\n REPO: SYNAPSE_BACKEND_DEV_URL,\n PORTAL: 'https://dev.synapse.org/',\n },\n mock: {\n REPO: MOCK_REPO_ORIGIN,\n PORTAL: MOCK_PORTAL_ORIGIN,\n },\n local: {\n REPO: 'http://localhost:8080/services-repository-develop-SNAPSHOT',\n PORTAL: 'http://localhost:8888/',\n },\n}\n"],"mappings":";;AAMA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,gBAAA,KAAA,iBACA,EAAA,EAAA,kBAAA,KAAA;
|
|
1
|
+
{"version":3,"file":"getEndpoint.js","names":[],"sources":["../../../src/utils/functions/getEndpoint.ts"],"sourcesContent":["import {\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport enum BackendDestinationEnum {\n REPO_ENDPOINT,\n PORTAL_ENDPOINT,\n}\n\n// Encodes the portal and repo service destinations\nexport type EndpointObject = {\n REPO: string\n PORTAL: string\n}\n\nexport const KNOWN_SYNAPSE_ORG_URLS = [\n 'www.synapse.org',\n 'staging.synapse.org',\n 'tst.synapse.org',\n 'dev.synapse.org',\n '127.0.0.1',\n]\n\nexport const getSynapsePortalEndpoint = (hostname: string): string => {\n return KNOWN_SYNAPSE_ORG_URLS.includes(hostname.toLowerCase())\n ? '/'\n : 'https://www.synapse.org/'\n}\nfunction getDefaultSynapsePortal(): string {\n if (typeof window === 'undefined') return getSynapsePortalEndpoint('')\n return getSynapsePortalEndpoint(window.location.hostname)\n}\n\nexport const PRODUCTION_ENDPOINT_CONFIG: EndpointObject = {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n // Computed lazily via a getter so this object can be imported in Node.js (SSR/pre-render)\n // without crashing on the `window.location.hostname` access.\n get PORTAL() {\n return getDefaultSynapsePortal()\n },\n}\n\n// Given an endpoint will return the specific stack object\nexport const getEndpoint = (endpoint: BackendDestinationEnum): string => {\n let endpoint_config = PRODUCTION_ENDPOINT_CONFIG\n if (typeof window !== 'undefined') {\n // @ts-expect-error if overriding endpoint config\n if (window.SRC_OVERRIDE_ENDPOINT_CONFIG) {\n // @ts-expect-error\n endpoint_config = window.SRC_OVERRIDE_ENDPOINT_CONFIG\n }\n }\n const { PORTAL, REPO } = endpoint_config\n if (!PORTAL || !REPO) {\n throw Error('Error failed to specify endpoints, cannot make call')\n }\n if (endpoint === BackendDestinationEnum.PORTAL_ENDPOINT) {\n return PORTAL\n }\n return REPO\n}\n\nexport type SynapseStack =\n | 'production'\n | 'staging'\n | 'development'\n | 'mock'\n | 'local'\n\nexport const MOCK_REPO_ORIGIN =\n 'https://mock-repo.sagebase.org' satisfies string\nconst MOCK_PORTAL_ORIGIN = 'https://mock-portal.sagebase.org/' satisfies string\n\nexport const STACK_MAP: Record<SynapseStack, EndpointObject> = {\n production: {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n PORTAL: 'https://www.synapse.org/',\n },\n staging: {\n REPO: SYNAPSE_BACKEND_STAGING_URL,\n PORTAL: 'https://staging.synapse.org/',\n },\n development: {\n REPO: SYNAPSE_BACKEND_DEV_URL,\n PORTAL: 'https://dev.synapse.org/',\n },\n mock: {\n REPO: MOCK_REPO_ORIGIN,\n PORTAL: MOCK_PORTAL_ORIGIN,\n },\n local: {\n REPO: 'http://localhost:8080/services-repository-develop-SNAPSHOT',\n PORTAL: 'http://localhost:8888/',\n },\n}\n"],"mappings":";;AAMA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,gBAAA,KAAA,iBACA,EAAA,EAAA,kBAAA,KAAA;AACF,EAAA,CAAA,CAAA,GAQa,IAAyB;CACpC;CACA;CACA;CACA;CACA;AACF,GAEa,KAA4B,MAChC,EAAuB,SAAS,EAAS,YAAY,CAAC,IACzD,MACA;AAEN,SAAS,IAAkC;CAEzC,OAD0C,EAAtC,OAAO,SAAW,MAA6C,KACnC,OAAO,SAAS,QADqB;AAEvE;AAEA,IAAa,IAA6C;CACxD,MAAM;CAGN,IAAI,SAAS;EACX,OAAO,EAAwB;CACjC;AACF,GAGa,KAAe,MAA6C;CACvE,IAAI,IAAkB;CACtB,AAAI,OAAO,SAAW,OAEhB,OAAO,iCAET,IAAkB,OAAO;CAG7B,IAAM,EAAE,WAAQ,YAAS;CACzB,IAAI,CAAC,KAAU,CAAC,GACd,MAAM,MAAM,qDAAqD;CAKnE,OAHI,MAAA,IACK,IAEF;AACT,GASa,IACX,kCAGW,IAAkD;CAC7D,YAAY;EACV,MAAM;EACN,QAAQ;CACV;CACA,SAAS;EACP,MAAM;EACN,QAAQ;CACV;CACA,aAAa;EACX,MAAM;EACN,QAAQ;CACV;CACA,MAAM;EACJ,MAAM;EACN,QAAQ;CACV;CACA,OAAO;EACL,MAAM;EACN,QAAQ;CACV;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrincipalDisplayName.js","names":[],"sources":["../../../src/utils/functions/getPrincipalDisplayName.ts"],"sourcesContent":["const NONBREAKING_SPACE = '\\u00A0'\n\nexport type GetPrincipalDisplayNameOptions = {\n /**\n * When true and the user has firstName/lastName fields, the full name is included\n * in the result. Default false.\n */\n showFullName?: boolean\n /**\n * When showFullName is true and a full name is available, append the @username\n * in parentheses (e.g. \"Jane Doe (@jdoe)\"). Default true.\n * Set to false when username context would be redundant (e.g. email body text).\n */\n showUsername?: boolean\n}\n\n/**\n * Returns a display string for any Synapse principal (user or team).\n *\n * - **Team** (`isIndividual === false`): returns the team name directly (no `@` prefix).\n * - **User, default**: returns `\"@username\"`.\n * - **User, `showFullName: true`** and name fields present:\n * - `showUsername: true` (default): `\"First\\u00A0Last (@username)\"`\n * - `showUsername: false`: `\"First\\u00A0Last\"`\n * - Falls back to `\"@username\"` when `showFullName` is true but no name fields exist.\n */\nexport function getPrincipalDisplayName(\n header: {\n userName: string\n firstName?: string | null\n lastName?: string | null\n isIndividual?: boolean\n },\n options: GetPrincipalDisplayNameOptions = {},\n): string {\n const { showFullName = false, showUsername = true } = options\n\n if (header.isIndividual === false) {\n return header.userName\n }\n\n const hasName = !!(header.firstName || header.lastName)\n\n if (showFullName && hasName) {\n const firstName = header.firstName ?? ''\n const lastName = header.lastName ?? ''\n const separator =\n header.firstName && header.lastName ? NONBREAKING_SPACE : ''\n const fullName = `${firstName}${separator}${lastName}`\n\n return showUsername\n ? `${fullName}${NONBREAKING_SPACE}(@${header.userName})`\n : fullName\n }\n\n return `@${header.userName}`\n}\n"],"mappings":";AAAA,IAAM,IAAoB;AA0B1B,SAAgB,EACd,GAMA,IAA0C,
|
|
1
|
+
{"version":3,"file":"getPrincipalDisplayName.js","names":[],"sources":["../../../src/utils/functions/getPrincipalDisplayName.ts"],"sourcesContent":["const NONBREAKING_SPACE = '\\u00A0'\n\nexport type GetPrincipalDisplayNameOptions = {\n /**\n * When true and the user has firstName/lastName fields, the full name is included\n * in the result. Default false.\n */\n showFullName?: boolean\n /**\n * When showFullName is true and a full name is available, append the @username\n * in parentheses (e.g. \"Jane Doe (@jdoe)\"). Default true.\n * Set to false when username context would be redundant (e.g. email body text).\n */\n showUsername?: boolean\n}\n\n/**\n * Returns a display string for any Synapse principal (user or team).\n *\n * - **Team** (`isIndividual === false`): returns the team name directly (no `@` prefix).\n * - **User, default**: returns `\"@username\"`.\n * - **User, `showFullName: true`** and name fields present:\n * - `showUsername: true` (default): `\"First\\u00A0Last (@username)\"`\n * - `showUsername: false`: `\"First\\u00A0Last\"`\n * - Falls back to `\"@username\"` when `showFullName` is true but no name fields exist.\n */\nexport function getPrincipalDisplayName(\n header: {\n userName: string\n firstName?: string | null\n lastName?: string | null\n isIndividual?: boolean\n },\n options: GetPrincipalDisplayNameOptions = {},\n): string {\n const { showFullName = false, showUsername = true } = options\n\n if (header.isIndividual === false) {\n return header.userName\n }\n\n const hasName = !!(header.firstName || header.lastName)\n\n if (showFullName && hasName) {\n const firstName = header.firstName ?? ''\n const lastName = header.lastName ?? ''\n const separator =\n header.firstName && header.lastName ? NONBREAKING_SPACE : ''\n const fullName = `${firstName}${separator}${lastName}`\n\n return showUsername\n ? `${fullName}${NONBREAKING_SPACE}(@${header.userName})`\n : fullName\n }\n\n return `@${header.userName}`\n}\n"],"mappings":";AAAA,IAAM,IAAoB;AA0B1B,SAAgB,EACd,GAMA,IAA0C,CAAC,GACnC;CACR,IAAM,EAAE,kBAAe,IAAO,kBAAe,OAAS;CAEtD,IAAI,EAAO,iBAAiB,IAC1B,OAAO,EAAO;CAGhB,IAAM,IAAU,CAAC,EAAE,EAAO,aAAa,EAAO;CAE9C,IAAI,KAAgB,GAAS;EAC3B,IAAM,IAAY,EAAO,aAAa,IAChC,IAAW,EAAO,YAAY,IAG9B,IAAW,GAAG,IADlB,EAAO,aAAa,EAAO,WAAW,IAAoB,KAChB;EAE5C,OAAO,IACH,GAAG,IAAW,EAAkB,IAAI,EAAO,SAAS,KACpD;CACN;CAEA,OAAO,IAAI,EAAO;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSynapseEntityUrl.js","names":[],"sources":["../../../src/utils/functions/getSynapseEntityUrl.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\n\n/**\n * Constructs a URL to the Synapse entity page.\n *\n * @param entityId - The Synapse ID (e.g., \"syn12345678\")\n * @param version - Optional version number\n * @returns The full Synapse URL (e.g., \"https://www.synapse.org/#!Synapse:syn12345678.2\")\n */\nexport function getSynapseEntityUrl(\n entityId: string,\n version?: number,\n): string {\n const baseUrl = `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${entityId}`\n return version ? `${baseUrl}.${version}` : baseUrl\n}\n"],"mappings":";;AASA,SAAgB,EACd,GACA,GACQ;CACR,IAAM,IAAU,GAAG,EAA2B,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"getSynapseEntityUrl.js","names":[],"sources":["../../../src/utils/functions/getSynapseEntityUrl.tsx"],"sourcesContent":["import { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\n\n/**\n * Constructs a URL to the Synapse entity page.\n *\n * @param entityId - The Synapse ID (e.g., \"syn12345678\")\n * @param version - Optional version number\n * @returns The full Synapse URL (e.g., \"https://www.synapse.org/#!Synapse:syn12345678.2\")\n */\nexport function getSynapseEntityUrl(\n entityId: string,\n version?: number,\n): string {\n const baseUrl = `${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Synapse:${entityId}`\n return version ? `${baseUrl}.${version}` : baseUrl\n}\n"],"mappings":";;AASA,SAAgB,EACd,GACA,GACQ;CACR,IAAM,IAAU,GAAG,EAA2B,OAAO,UAAU;CAC/D,OAAO,IAAU,GAAG,EAAQ,GAAG,MAAY;AAC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSynapseWebClientLink.js","names":[],"sources":["../../../src/utils/functions/getSynapseWebClientLink.ts"],"sourcesContent":["import {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n GRID_PAGE_SESSION_ID_QUERY_PARAM,\n GRID_PAGE_TASK_ID_QUERY_PARAM,\n} from '@/utils/SynapseConstants'\n\nexport function getLinkToEntityPage(\n entityId: string,\n versionNumber?: number,\n): string {\n let url = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${entityId}`\n if (versionNumber != null) {\n url += `/version/${versionNumber}`\n }\n return url\n}\n\nexport function getLinkToGridSession(\n sessionId: string,\n taskId?: number,\n): string {\n let url = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Grid:default?${GRID_PAGE_SESSION_ID_QUERY_PARAM}=${encodeURIComponent(\n sessionId,\n )}`\n if (taskId != null) {\n url += `&${GRID_PAGE_TASK_ID_QUERY_PARAM}=${taskId}`\n }\n return url\n}\n"],"mappings":";;;AASA,SAAgB,EACd,GACA,GACQ;CACR,IAAI,IAAM,GAAG,EACX,EAAuB,
|
|
1
|
+
{"version":3,"file":"getSynapseWebClientLink.js","names":[],"sources":["../../../src/utils/functions/getSynapseWebClientLink.ts"],"sourcesContent":["import {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n GRID_PAGE_SESSION_ID_QUERY_PARAM,\n GRID_PAGE_TASK_ID_QUERY_PARAM,\n} from '@/utils/SynapseConstants'\n\nexport function getLinkToEntityPage(\n entityId: string,\n versionNumber?: number,\n): string {\n let url = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${entityId}`\n if (versionNumber != null) {\n url += `/version/${versionNumber}`\n }\n return url\n}\n\nexport function getLinkToGridSession(\n sessionId: string,\n taskId?: number,\n): string {\n let url = `${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Grid:default?${GRID_PAGE_SESSION_ID_QUERY_PARAM}=${encodeURIComponent(\n sessionId,\n )}`\n if (taskId != null) {\n url += `&${GRID_PAGE_TASK_ID_QUERY_PARAM}=${taskId}`\n }\n return url\n}\n"],"mappings":";;;AASA,SAAgB,EACd,GACA,GACQ;CACR,IAAI,IAAM,GAAG,EACX,EAAuB,eACzB,EAAE,UAAU;CAIZ,OAHI,KAAiB,SACnB,KAAO,YAAY,MAEd;AACT;AAEA,SAAgB,EACd,GACA,GACQ;CACR,IAAI,IAAM,GAAG,EACX,EAAuB,eACzB,EAAE,eAAe,EAAiC,GAAG,mBACnD,CACF;CAIA,OAHI,KAAU,SACZ,KAAO,IAAI,EAA8B,GAAG,MAEvC;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserData.js","names":[],"sources":["../../../src/utils/functions/getUserData.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { BackendDestinationEnum, getEndpoint } from './getEndpoint'\n\n/*\n Utility functions for UserCards\n*/\n\nexport async function getUserProfileWithProfilePicAttached(\n principalIds: string[],\n) {\n const userProfiles = await SynapseClient.getUserProfiles(principalIds)\n const profilesWithPictures = userProfiles.list.map(profile => {\n if (profile.profilePicureFileHandleId) {\n return {\n ...profile,\n clientPreSignedURL: `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/userProfile/${profile.ownerId}/image/preview?redirect=true`,\n }\n } else {\n return profile\n }\n })\n return { list: profilesWithPictures }\n}\n\nconst COLORS: string[] = [\n 'chocolate',\n 'black',\n 'firebrick',\n 'maroon',\n 'olive',\n 'green',\n 'forestgreen',\n 'darkturquoise',\n 'teal',\n 'blue',\n 'navy',\n 'darkmagenta',\n 'purple',\n 'blue',\n 'orangered',\n 'blueviolet',\n]\n\nconst hash = (userName: string) => {\n const val = userName\n .split('')\n .reduce(\n (prevHash, currVal) =>\n ((prevHash << 5) - prevHash + currVal.charCodeAt(0)) | 0,\n 0,\n )\n return Math.abs(val)\n}\n\nexport const getColor = (userName: string) => {\n const hashedUserName = hash(userName)\n return COLORS[hashedUserName % COLORS.length]\n}\n"],"mappings":";;;AAOA,eAAsB,EACpB,GACA;
|
|
1
|
+
{"version":3,"file":"getUserData.js","names":[],"sources":["../../../src/utils/functions/getUserData.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { BackendDestinationEnum, getEndpoint } from './getEndpoint'\n\n/*\n Utility functions for UserCards\n*/\n\nexport async function getUserProfileWithProfilePicAttached(\n principalIds: string[],\n) {\n const userProfiles = await SynapseClient.getUserProfiles(principalIds)\n const profilesWithPictures = userProfiles.list.map(profile => {\n if (profile.profilePicureFileHandleId) {\n return {\n ...profile,\n clientPreSignedURL: `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/userProfile/${profile.ownerId}/image/preview?redirect=true`,\n }\n } else {\n return profile\n }\n })\n return { list: profilesWithPictures }\n}\n\nconst COLORS: string[] = [\n 'chocolate',\n 'black',\n 'firebrick',\n 'maroon',\n 'olive',\n 'green',\n 'forestgreen',\n 'darkturquoise',\n 'teal',\n 'blue',\n 'navy',\n 'darkmagenta',\n 'purple',\n 'blue',\n 'orangered',\n 'blueviolet',\n]\n\nconst hash = (userName: string) => {\n const val = userName\n .split('')\n .reduce(\n (prevHash, currVal) =>\n ((prevHash << 5) - prevHash + currVal.charCodeAt(0)) | 0,\n 0,\n )\n return Math.abs(val)\n}\n\nexport const getColor = (userName: string) => {\n const hashedUserName = hash(userName)\n return COLORS[hashedUserName % COLORS.length]\n}\n"],"mappings":";;;AAOA,eAAsB,EACpB,GACA;CAcA,OAAO,EAAE,OAZoB,MADF,EAAc,gBAAgB,CAAY,GAC3B,KAAK,KAAI,MAC7C,EAAQ,4BACH;EACL,GAAG;EACH,oBAAoB,GAAG,EACrB,EAAuB,aACzB,EAAE,uBAAuB,EAAQ,QAAQ;CAC3C,IAEO,CAGI,EAAqB;AACtC;AAEA,IAAM,IAAmB;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAEM,KAAQ,MAAqB;CACjC,IAAM,IAAM,EACT,MAAM,EAAE,EACR,QACE,GAAU,OACP,KAAY,KAAK,IAAW,EAAQ,WAAW,CAAC,IAAK,GACzD,CACF;CACF,OAAO,KAAK,IAAI,CAAG;AACrB,GAEa,KAAY,MAEhB,EADgB,EAAK,CACd,IAAiB,EAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryUtils.js","names":[],"sources":["../../../src/utils/functions/queryUtils.ts"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n UniqueFacetIdentifier,\n} from '@/utils/types'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetColumnRequest,\n FacetColumnResult,\n JsonSubColumnModel,\n Query,\n QueryBundleRequest,\n QueryResultBundle,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport { cloneDeep, isEqual, isEqualWith, isMatch, isNil } from 'lodash-es'\nimport * as SynapseConstants from '../SynapseConstants'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport {\n hasFilesInView,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isFileView,\n} from './EntityTypeUtils'\n\n/**\n * Retrieve the index of a column using the column name\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getFieldIndex = (name?: string, result?: QueryResultBundle) => {\n if (name == undefined) {\n return -1\n }\n return (\n result?.selectColumns?.findIndex(el => {\n return el.name === name\n }) ?? -1\n )\n}\n\n/**\n * Retrieve the index of a column using the header column name found inthe query results.\n * Ignores case.\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getHeaderIndex = (\n name: string,\n result: QueryResultBundle | undefined,\n) => {\n const nameLowercase = name.toLowerCase()\n return (\n result?.queryResult?.queryResults.headers.findIndex(el => {\n return el.name.toLowerCase() === nameLowercase\n }) ?? -1\n )\n}\n\n/**\n * Returns the indices of the selectColumns with the specified type\n * @param columnType\n * @param selectColumns\n */\nexport function getTypeIndices(\n columnType: ColumnTypeEnum,\n selectColumns: SelectColumn[] = [],\n): number[] {\n return selectColumns.reduce((prev: number[], curr, index) => {\n if (curr.columnType === columnType) {\n return [...prev, index]\n }\n return prev\n }, [])\n}\n\nexport const hasFacetedSelectColumn = (\n facets?: FacetColumnResult[],\n selectColumns?: SelectColumn[],\n): boolean => {\n /**\n * Facets are available iff\n * * there is at least one facet AND\n * * each facet has a corresponding columnModel in the selectColumns AND\n * * each facets has a valid value other than the null/not set value\n */\n if (facets == null || selectColumns == null) {\n return false\n }\n\n if (facets.length === 0 || selectColumns.length === 0) {\n return false\n }\n\n const facetsWithValuesAndColumnModels = facets.filter(facet => {\n return (\n !isSingleNotSetValue(facet) &&\n selectColumns.find(model => model.name === facet.columnName)\n )\n })\n\n return facetsWithValuesAndColumnModels.length > 0\n}\n\nexport const isSingleNotSetValue = (facet: FacetColumnResult): boolean => {\n return (\n facet.facetType === 'enumeration' &&\n facet.facetValues.length == 1 &&\n facet.facetValues[0].value == SynapseConstants.VALUE_NOT_SET\n )\n}\n\n// TODO Instead of removing the facet from the data, the facet renderers should just be aware of what to hide\nexport function removeLockedColumnFromFacetData(\n data?: QueryResultBundle,\n lockedColumn?: LockedColumn,\n): QueryResultBundle | undefined {\n const lockedColumnName = lockedColumn?.columnName\n if (lockedColumnName && data) {\n // for details page, return data without the \"locked\" facet\n const dataCopy: QueryResultBundle = cloneDeep(data)\n const facets = dataCopy.facets?.filter(\n item => item.columnName.toLowerCase() !== lockedColumnName.toLowerCase(),\n )\n dataCopy.facets = facets\n return dataCopy\n } else {\n // for other pages, just return the data\n return data\n }\n}\n\n/**\n * Returns true iff the query has filters applied that can be reset.\n * This includes facet filters and additional filters that are not applied to a locked column.\n */\nexport function hasResettableFilters(\n query: Query,\n lockedColumn?: LockedColumn,\n): boolean {\n const hasFacetFilters =\n Array.isArray(query.selectedFacets) &&\n query.selectedFacets.filter(\n facet =>\n facet.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase(),\n ).length > 0\n const hasAdditionalFilters =\n Array.isArray(query.additionalFilters) &&\n query.additionalFilters.filter(queryFilter =>\n isColumnSingleValueQueryFilter(queryFilter) ||\n isColumnMultiValueFunctionQueryFilter(queryFilter)\n ? queryFilter.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase()\n : true,\n ).length > 0\n\n return hasFacetFilters || hasAdditionalFilters\n}\n\n/**\n * Returns true iff a table query can be added to the download list.\n * @param entity\n * @param entityColumnId\n */\nexport function canTableQueryBeAddedToDownloadList<T extends Table = Table>(\n entity?: T,\n entityColumnId?: string,\n) {\n const viewCannotIncludeFiles =\n // EntityViews without the file bit mask cannot contain files\n (entity && isEntityView(entity) && !hasFilesInView(entity)) ||\n // DatasetCollections cannot contain files\n (entity && isDatasetCollection(entity))\n\n if (viewCannotIncludeFiles) {\n return false\n }\n\n return Boolean(\n entityColumnId ||\n (entity &&\n ((isEntityView(entity) && isFileView(entity)) || isDataset(entity))),\n )\n}\n\n/**\n * Returns true if the queries necessarily return the same result set, i.e. if they have identical parameters other than\n * limit, offset, sort.\n *\n * Note that this does not query the actual tables, so this only captures the semantic equivalence of the queries.\n */\nexport function queryRequestsHaveSameTotalResults(\n request1: Query,\n request2: Query,\n) {\n const clone1 = cloneDeep(request1)\n delete clone1.limit\n delete clone1.offset\n delete clone1.sort\n const clone2 = cloneDeep(request2)\n delete clone2.limit\n delete clone2.offset\n delete clone2.sort\n return isEqualWith(clone1, clone2, (value1, value2) => {\n if (isNil(value1) && isNil(value2)) {\n // Consider all nil (e.g. undefined/null) values equal\n return true\n }\n return isEqual(value1, value2)\n })\n}\n\n/**\n * Remove null/empty values from the query parameters where an undefined value is equivalent.\n *\n * This will ensure a query object is as simple as possible for URL search parameters and also increases the\n * likelihood of a cache hit.\n * @param q\n */\nexport function removeEmptyQueryParams(q: Query) {\n const query = cloneDeep(q)\n\n if (query.limit == null) {\n delete query.limit\n }\n if (query.offset == null || query.offset == 0) {\n delete query.offset\n }\n\n if (query.sort == null || query.sort.length == 0) {\n delete query.sort\n }\n\n if (query.selectedFacets == null || query.selectedFacets.length == 0) {\n delete query.selectedFacets\n }\n\n if (query.additionalFilters == null || query.additionalFilters.length == 0) {\n delete query.additionalFilters\n }\n\n return query\n}\n\n/**\n * Given a FacetColumnResult and a set of ColumnModels, return the ColumnModel that\n * matches the FacetColumnResult.\n * @param facet\n * @param columnModels\n */\nexport function getCorrespondingColumnForFacet(\n facet: FacetColumnResult,\n columnModels: ColumnModel[],\n): ColumnModel | JsonSubColumnModel | undefined {\n let columnModel: ColumnModel | JsonSubColumnModel | undefined =\n columnModels.find(model => model.name === facet.columnName)\n if (facet.jsonPath && columnModel && columnModel.jsonSubColumns) {\n columnModel = columnModel.jsonSubColumns.find(\n cm => cm.jsonPath === facet.jsonPath,\n )\n }\n return columnModel\n}\n\n/**\n * Given a set of FacetColumnRequests, return the FacetColumnRequest that matches the given UniqueFacetIdentifier.\n * @param facetDefinition\n * @param selectedFacets\n */\nexport function getCorrespondingSelectedFacet(\n facetDefinition: UniqueFacetIdentifier,\n selectedFacets?: FacetColumnRequest[],\n): FacetColumnRequest | undefined {\n return selectedFacets?.find(selectedFacet =>\n facetObjectMatchesDefinition(facetDefinition, selectedFacet),\n )\n}\n\nexport function facetObjectMatchesDefinition(\n facetDefinition:\n | UniqueFacetIdentifier\n | FacetColumnRequest\n | FacetColumnResult,\n facetObject: UniqueFacetIdentifier | FacetColumnRequest | FacetColumnResult,\n) {\n return isMatch(\n {\n columnName: facetDefinition.columnName,\n jsonPath: facetDefinition.jsonPath,\n },\n { columnName: facetObject.columnName, jsonPath: facetObject.jsonPath },\n )\n}\n\nexport function partitionQueryBundleRequestIntoRowsAndMetadata(\n queryBundleRequest: QueryBundleRequest,\n): {\n rowDataRequest: QueryBundleRequest\n queryMetadataRequest: QueryBundleRequest\n} {\n const rowDataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n // Get just the rows (if they were originally requested)\n partMask: queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS,\n }\n\n const queryMetadataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n // Remove query fields that don't affect the results.\n offset: undefined,\n limit: undefined,\n sort: undefined,\n },\n // Bitwise remove the query result flag from the mask\n partMask: queryBundleRequest.partMask & ~BUNDLE_MASK_QUERY_RESULTS,\n }\n\n return {\n rowDataRequest,\n queryMetadataRequest,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queryUtils.js","names":[],"sources":["../../../src/utils/functions/queryUtils.ts"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n UniqueFacetIdentifier,\n} from '@/utils/types'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetColumnRequest,\n FacetColumnResult,\n JsonSubColumnModel,\n Query,\n QueryBundleRequest,\n QueryResultBundle,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport { cloneDeep, isEqual, isEqualWith, isMatch, isNil } from 'lodash-es'\nimport * as SynapseConstants from '../SynapseConstants'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport {\n hasFilesInView,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isFileView,\n} from './EntityTypeUtils'\n\n/**\n * Retrieve the index of a column using the column name\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getFieldIndex = (name?: string, result?: QueryResultBundle) => {\n if (name == undefined) {\n return -1\n }\n return (\n result?.selectColumns?.findIndex(el => {\n return el.name === name\n }) ?? -1\n )\n}\n\n/**\n * Retrieve the index of a column using the header column name found inthe query results.\n * Ignores case.\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getHeaderIndex = (\n name: string,\n result: QueryResultBundle | undefined,\n) => {\n const nameLowercase = name.toLowerCase()\n return (\n result?.queryResult?.queryResults.headers.findIndex(el => {\n return el.name.toLowerCase() === nameLowercase\n }) ?? -1\n )\n}\n\n/**\n * Returns the indices of the selectColumns with the specified type\n * @param columnType\n * @param selectColumns\n */\nexport function getTypeIndices(\n columnType: ColumnTypeEnum,\n selectColumns: SelectColumn[] = [],\n): number[] {\n return selectColumns.reduce((prev: number[], curr, index) => {\n if (curr.columnType === columnType) {\n return [...prev, index]\n }\n return prev\n }, [])\n}\n\nexport const hasFacetedSelectColumn = (\n facets?: FacetColumnResult[],\n selectColumns?: SelectColumn[],\n): boolean => {\n /**\n * Facets are available iff\n * * there is at least one facet AND\n * * each facet has a corresponding columnModel in the selectColumns AND\n * * each facets has a valid value other than the null/not set value\n */\n if (facets == null || selectColumns == null) {\n return false\n }\n\n if (facets.length === 0 || selectColumns.length === 0) {\n return false\n }\n\n const facetsWithValuesAndColumnModels = facets.filter(facet => {\n return (\n !isSingleNotSetValue(facet) &&\n selectColumns.find(model => model.name === facet.columnName)\n )\n })\n\n return facetsWithValuesAndColumnModels.length > 0\n}\n\nexport const isSingleNotSetValue = (facet: FacetColumnResult): boolean => {\n return (\n facet.facetType === 'enumeration' &&\n facet.facetValues.length == 1 &&\n facet.facetValues[0].value == SynapseConstants.VALUE_NOT_SET\n )\n}\n\n// TODO Instead of removing the facet from the data, the facet renderers should just be aware of what to hide\nexport function removeLockedColumnFromFacetData(\n data?: QueryResultBundle,\n lockedColumn?: LockedColumn,\n): QueryResultBundle | undefined {\n const lockedColumnName = lockedColumn?.columnName\n if (lockedColumnName && data) {\n // for details page, return data without the \"locked\" facet\n const dataCopy: QueryResultBundle = cloneDeep(data)\n const facets = dataCopy.facets?.filter(\n item => item.columnName.toLowerCase() !== lockedColumnName.toLowerCase(),\n )\n dataCopy.facets = facets\n return dataCopy\n } else {\n // for other pages, just return the data\n return data\n }\n}\n\n/**\n * Returns true iff the query has filters applied that can be reset.\n * This includes facet filters and additional filters that are not applied to a locked column.\n */\nexport function hasResettableFilters(\n query: Query,\n lockedColumn?: LockedColumn,\n): boolean {\n const hasFacetFilters =\n Array.isArray(query.selectedFacets) &&\n query.selectedFacets.filter(\n facet =>\n facet.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase(),\n ).length > 0\n const hasAdditionalFilters =\n Array.isArray(query.additionalFilters) &&\n query.additionalFilters.filter(queryFilter =>\n isColumnSingleValueQueryFilter(queryFilter) ||\n isColumnMultiValueFunctionQueryFilter(queryFilter)\n ? queryFilter.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase()\n : true,\n ).length > 0\n\n return hasFacetFilters || hasAdditionalFilters\n}\n\n/**\n * Returns true iff a table query can be added to the download list.\n * @param entity\n * @param entityColumnId\n */\nexport function canTableQueryBeAddedToDownloadList<T extends Table = Table>(\n entity?: T,\n entityColumnId?: string,\n) {\n const viewCannotIncludeFiles =\n // EntityViews without the file bit mask cannot contain files\n (entity && isEntityView(entity) && !hasFilesInView(entity)) ||\n // DatasetCollections cannot contain files\n (entity && isDatasetCollection(entity))\n\n if (viewCannotIncludeFiles) {\n return false\n }\n\n return Boolean(\n entityColumnId ||\n (entity &&\n ((isEntityView(entity) && isFileView(entity)) || isDataset(entity))),\n )\n}\n\n/**\n * Returns true if the queries necessarily return the same result set, i.e. if they have identical parameters other than\n * limit, offset, sort.\n *\n * Note that this does not query the actual tables, so this only captures the semantic equivalence of the queries.\n */\nexport function queryRequestsHaveSameTotalResults(\n request1: Query,\n request2: Query,\n) {\n const clone1 = cloneDeep(request1)\n delete clone1.limit\n delete clone1.offset\n delete clone1.sort\n const clone2 = cloneDeep(request2)\n delete clone2.limit\n delete clone2.offset\n delete clone2.sort\n return isEqualWith(clone1, clone2, (value1, value2) => {\n if (isNil(value1) && isNil(value2)) {\n // Consider all nil (e.g. undefined/null) values equal\n return true\n }\n return isEqual(value1, value2)\n })\n}\n\n/**\n * Remove null/empty values from the query parameters where an undefined value is equivalent.\n *\n * This will ensure a query object is as simple as possible for URL search parameters and also increases the\n * likelihood of a cache hit.\n * @param q\n */\nexport function removeEmptyQueryParams(q: Query) {\n const query = cloneDeep(q)\n\n if (query.limit == null) {\n delete query.limit\n }\n if (query.offset == null || query.offset == 0) {\n delete query.offset\n }\n\n if (query.sort == null || query.sort.length == 0) {\n delete query.sort\n }\n\n if (query.selectedFacets == null || query.selectedFacets.length == 0) {\n delete query.selectedFacets\n }\n\n if (query.additionalFilters == null || query.additionalFilters.length == 0) {\n delete query.additionalFilters\n }\n\n return query\n}\n\n/**\n * Given a FacetColumnResult and a set of ColumnModels, return the ColumnModel that\n * matches the FacetColumnResult.\n * @param facet\n * @param columnModels\n */\nexport function getCorrespondingColumnForFacet(\n facet: FacetColumnResult,\n columnModels: ColumnModel[],\n): ColumnModel | JsonSubColumnModel | undefined {\n let columnModel: ColumnModel | JsonSubColumnModel | undefined =\n columnModels.find(model => model.name === facet.columnName)\n if (facet.jsonPath && columnModel && columnModel.jsonSubColumns) {\n columnModel = columnModel.jsonSubColumns.find(\n cm => cm.jsonPath === facet.jsonPath,\n )\n }\n return columnModel\n}\n\n/**\n * Given a set of FacetColumnRequests, return the FacetColumnRequest that matches the given UniqueFacetIdentifier.\n * @param facetDefinition\n * @param selectedFacets\n */\nexport function getCorrespondingSelectedFacet(\n facetDefinition: UniqueFacetIdentifier,\n selectedFacets?: FacetColumnRequest[],\n): FacetColumnRequest | undefined {\n return selectedFacets?.find(selectedFacet =>\n facetObjectMatchesDefinition(facetDefinition, selectedFacet),\n )\n}\n\nexport function facetObjectMatchesDefinition(\n facetDefinition:\n | UniqueFacetIdentifier\n | FacetColumnRequest\n | FacetColumnResult,\n facetObject: UniqueFacetIdentifier | FacetColumnRequest | FacetColumnResult,\n) {\n return isMatch(\n {\n columnName: facetDefinition.columnName,\n jsonPath: facetDefinition.jsonPath,\n },\n { columnName: facetObject.columnName, jsonPath: facetObject.jsonPath },\n )\n}\n\nexport function partitionQueryBundleRequestIntoRowsAndMetadata(\n queryBundleRequest: QueryBundleRequest,\n): {\n rowDataRequest: QueryBundleRequest\n queryMetadataRequest: QueryBundleRequest\n} {\n const rowDataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n // Get just the rows (if they were originally requested)\n partMask: queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS,\n }\n\n const queryMetadataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n // Remove query fields that don't affect the results.\n offset: undefined,\n limit: undefined,\n sort: undefined,\n },\n // Bitwise remove the query result flag from the mask\n partMask: queryBundleRequest.partMask & ~BUNDLE_MASK_QUERY_RESULTS,\n }\n\n return {\n rowDataRequest,\n queryMetadataRequest,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testDownloadSpeed.js","names":[],"sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"sourcesContent":["import {\n getEntity,\n getFileHandleContent,\n getFiles,\n} from '@/synapse-client/SynapseClient'\nimport {\n BatchFileRequest,\n BatchFileResult,\n Entity,\n FileEntity,\n FileHandle,\n FileHandleAssociateType,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nconst ESTIMATED_CORS_TIME_MS: number = 200\nconst ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY: string =\n 'ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME'\nconst ESTIMATED_DOWNLOAD_SPEED_KEY: string = 'ESTIMATED_DOWNLOAD_SPEED'\nconst TEST_FILE_ENTITY_ID: string = 'syn12600511'\n/**\n * Return the estimated download speed (bytes/second). Result is cached.\n * Result is crude estimate since it's a single test file (small sample, only ~2MB), but is a valid test (since it's a Synapse file on s3).\n * The intent is to let the user know if the package download will take many hours to download.\n * @param accessToken\n */\nexport const testDownloadSpeed = (accessToken: string): Promise<number> => {\n return new Promise((resolve, reject) => {\n // check cache\n const cachedSpeedExpireTime = localStorage.getItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n )\n const cachedSpeed = localStorage.getItem(ESTIMATED_DOWNLOAD_SPEED_KEY)\n if (cachedSpeedExpireTime && cachedSpeed) {\n // is this value expired?\n const now: number = new Date().getTime()\n if (now < Number(cachedSpeedExpireTime)) {\n resolve(Number(cachedSpeed))\n return\n }\n }\n\n /**\n * 1. Get the test File Entity\n * 2. Get the file handle and presigned URL associated to the latest version of the test File Entity\n * 3. Start the timer and fetch the file content using that presigned URL\n */\n getEntity(accessToken, TEST_FILE_ENTITY_ID)\n .then((entity: Entity) => {\n const fileEntity: FileEntity = entity as FileEntity\n const fileHandleAssociationList: FileHandleAssociation[] = [\n {\n associateObjectId: fileEntity.id!,\n associateObjectType: FileHandleAssociateType.FileEntity,\n fileHandleId: fileEntity.dataFileHandleId,\n },\n ]\n const request: BatchFileRequest = {\n includeFileHandles: true,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n requestedFiles: fileHandleAssociationList,\n }\n getFiles(request, accessToken).then((data: BatchFileResult) => {\n const presignedUrl: string = data.requestedFiles[0].preSignedURL!\n // we know this file exists\n const fileHandle: FileHandle = data.requestedFiles[0].fileHandle!\n // start test!\n const startMs = new Date().getTime()\n return getFileHandleContent(fileHandle, presignedUrl).then(() => {\n // console.log(`Transferred ${fileHandle.contentSize/1000000} MB in ${((new Date().getTime() - startMs - ESTIMATED_CORS_TIME_MS)/1000)} seconds`)\n // bytes/second\n const result =\n fileHandle.contentSize /\n ((new Date().getTime() - startMs - ESTIMATED_CORS_TIME_MS) / 1000)\n // save result in cache (for 5 minutes)\n const now: number = new Date().getTime()\n localStorage.setItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n (now + 1000 * 60 * 5).toString(),\n )\n localStorage.setItem(\n ESTIMATED_DOWNLOAD_SPEED_KEY,\n result.toString(),\n )\n resolve(result)\n })\n })\n })\n .catch(err => reject(err as Error))\n })\n}\n"],"mappings":";;;AAeA,IAAM,IAAiC,KACjC,IACJ,wCACI,IAAuC,4BACvC,IAA8B,eAOvB,KAAqB,MACzB,IAAI,SAAS,GAAS,MAAW;CAEtC,IAAM,IAAwB,aAAa,QACzC,
|
|
1
|
+
{"version":3,"file":"testDownloadSpeed.js","names":[],"sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"sourcesContent":["import {\n getEntity,\n getFileHandleContent,\n getFiles,\n} from '@/synapse-client/SynapseClient'\nimport {\n BatchFileRequest,\n BatchFileResult,\n Entity,\n FileEntity,\n FileHandle,\n FileHandleAssociateType,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nconst ESTIMATED_CORS_TIME_MS: number = 200\nconst ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY: string =\n 'ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME'\nconst ESTIMATED_DOWNLOAD_SPEED_KEY: string = 'ESTIMATED_DOWNLOAD_SPEED'\nconst TEST_FILE_ENTITY_ID: string = 'syn12600511'\n/**\n * Return the estimated download speed (bytes/second). Result is cached.\n * Result is crude estimate since it's a single test file (small sample, only ~2MB), but is a valid test (since it's a Synapse file on s3).\n * The intent is to let the user know if the package download will take many hours to download.\n * @param accessToken\n */\nexport const testDownloadSpeed = (accessToken: string): Promise<number> => {\n return new Promise((resolve, reject) => {\n // check cache\n const cachedSpeedExpireTime = localStorage.getItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n )\n const cachedSpeed = localStorage.getItem(ESTIMATED_DOWNLOAD_SPEED_KEY)\n if (cachedSpeedExpireTime && cachedSpeed) {\n // is this value expired?\n const now: number = new Date().getTime()\n if (now < Number(cachedSpeedExpireTime)) {\n resolve(Number(cachedSpeed))\n return\n }\n }\n\n /**\n * 1. Get the test File Entity\n * 2. Get the file handle and presigned URL associated to the latest version of the test File Entity\n * 3. Start the timer and fetch the file content using that presigned URL\n */\n getEntity(accessToken, TEST_FILE_ENTITY_ID)\n .then((entity: Entity) => {\n const fileEntity: FileEntity = entity as FileEntity\n const fileHandleAssociationList: FileHandleAssociation[] = [\n {\n associateObjectId: fileEntity.id!,\n associateObjectType: FileHandleAssociateType.FileEntity,\n fileHandleId: fileEntity.dataFileHandleId,\n },\n ]\n const request: BatchFileRequest = {\n includeFileHandles: true,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n requestedFiles: fileHandleAssociationList,\n }\n getFiles(request, accessToken).then((data: BatchFileResult) => {\n const presignedUrl: string = data.requestedFiles[0].preSignedURL!\n // we know this file exists\n const fileHandle: FileHandle = data.requestedFiles[0].fileHandle!\n // start test!\n const startMs = new Date().getTime()\n return getFileHandleContent(fileHandle, presignedUrl).then(() => {\n // console.log(`Transferred ${fileHandle.contentSize/1000000} MB in ${((new Date().getTime() - startMs - ESTIMATED_CORS_TIME_MS)/1000)} seconds`)\n // bytes/second\n const result =\n fileHandle.contentSize /\n ((new Date().getTime() - startMs - ESTIMATED_CORS_TIME_MS) / 1000)\n // save result in cache (for 5 minutes)\n const now: number = new Date().getTime()\n localStorage.setItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n (now + 1000 * 60 * 5).toString(),\n )\n localStorage.setItem(\n ESTIMATED_DOWNLOAD_SPEED_KEY,\n result.toString(),\n )\n resolve(result)\n })\n })\n })\n .catch(err => reject(err as Error))\n })\n}\n"],"mappings":";;;AAeA,IAAM,IAAiC,KACjC,IACJ,wCACI,IAAuC,4BACvC,IAA8B,eAOvB,KAAqB,MACzB,IAAI,SAAS,GAAS,MAAW;CAEtC,IAAM,IAAwB,aAAa,QACzC,CACF,GACM,IAAc,aAAa,QAAQ,CAA4B;CACrE,IAAI,KAAyB,sBAEP,IAAI,KAAK,GAAE,QAC3B,IAAM,OAAO,CAAqB,GAAG;EACvC,EAAQ,OAAO,CAAW,CAAC;EAC3B;CACF;CAQF,EAAU,GAAa,CAAmB,EACvC,MAAM,MAAmB;EACxB,IAAM,IAAyB;EAc/B,EAAS;GALP,oBAAoB;GACpB,sBAAsB;GACtB,6BAA6B;GAC7B,gBAAgB,CAVhB;IACE,mBAAmB,EAAW;IAC9B,qBAAqB,EAAwB;IAC7C,cAAc,EAAW;GAC3B,CAMgB;EAET,GAAS,CAAW,EAAE,MAAM,MAA0B;GAC7D,IAAM,IAAuB,EAAK,eAAe,GAAG,cAE9C,IAAyB,EAAK,eAAe,GAAG,YAEhD,qBAAU,IAAI,KAAK,GAAE,QAAQ;GACnC,OAAO,EAAqB,GAAY,CAAY,EAAE,WAAW;IAG/D,IAAM,IACJ,EAAW,iCACT,IAAI,KAAK,GAAE,QAAQ,IAAI,IAAU,KAA0B,MAEzD,qBAAc,IAAI,KAAK,GAAE,QAAQ;IASvC,AARA,aAAa,QACX,IACC,IAAM,MAAO,KAAK,GAAG,SAAS,CACjC,GACA,aAAa,QACX,GACA,EAAO,SAAS,CAClB,GACA,EAAQ,CAAM;GAChB,CAAC;EACH,CAAC;CACH,CAAC,EACA,OAAM,MAAO,EAAO,CAAY,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unCamelCase.js","names":[],"sources":["../../../src/utils/functions/unCamelCase.ts"],"sourcesContent":["export const unCamelCase = (str: string): string => {\n // https://stackoverflow.com/questions/4149276/how-to-convert-camelcase-to-camel-case\n return (\n str\n // insert a space between lower & upper\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // space before last upper in a sequence followed by lower\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\n // uppercase the first character\n .replace(/^./, (str: string) => {\n return str.toUpperCase()\n })\n )\n}\n"],"mappings":";AAAA,IAAa,KAAe,MAGxB,EAEG,QAAQ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"unCamelCase.js","names":[],"sources":["../../../src/utils/functions/unCamelCase.ts"],"sourcesContent":["export const unCamelCase = (str: string): string => {\n // https://stackoverflow.com/questions/4149276/how-to-convert-camelcase-to-camel-case\n return (\n str\n // insert a space between lower & upper\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // space before last upper in a sequence followed by lower\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\n // uppercase the first character\n .replace(/^./, (str: string) => {\n return str.toUpperCase()\n })\n )\n}\n"],"mappings":";AAAA,IAAa,KAAe,MAGxB,EAEG,QAAQ,mBAAmB,OAAO,EAElC,QAAQ,4BAA4B,SAAS,EAE7C,QAAQ,OAAO,MACP,EAAI,YAAY,CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfirmItems.js","names":[],"sources":["../../../src/utils/hooks/useConfirmItems.ts"],"sourcesContent":["import { useReducer } from 'react'\n\ntype UseConfirmItemsReturn<T = unknown> = {\n /** The set of items that are awaiting confirmation */\n pendingItems: T[]\n /** The set of items that have been confirmed */\n confirmedItems: T[]\n /** Adds one or more items to the pending list */\n addItemsPendingConfirmation: (...items: T[]) => void\n /** Confirms one or more items, adding them to the confirmed list and removing them from the pending list\n * @returns the confirmed items */\n confirmItem: (...items: T[]) => { confirmedItems: T[]; pendingItems: T[] }\n /** Remove one or more items that are pending from the list\n * @returns the resulting state of confirmed items and pending items */\n removePendingItems: (...items: T[]) => {\n confirmedItems: T[]\n pendingItems: T[]\n }\n /** Clear all items from the confirmed and pending lists */\n clear: () => void\n}\n\nfunction reducer<T = unknown>(\n state: { pendingItems: T[]; confirmedItems: T[] },\n action:\n | { type: 'addItemsPendingConfirmation'; newItems: T[] }\n | { type: 'confirmItem'; itemsToConfirm: T[] }\n | { type: 'removePendingItems'; itemsToRemove: T[] }\n | { type: 'clear' },\n) {\n switch (action.type) {\n case 'addItemsPendingConfirmation':\n return {\n ...state,\n pendingItems: [...state.pendingItems, ...action.newItems],\n }\n case 'confirmItem': {\n const newConfirmedItems = [\n ...state.confirmedItems,\n ...action.itemsToConfirm,\n ]\n const newPendingItems = state.pendingItems.filter(\n i => !action.itemsToConfirm.includes(i),\n )\n return {\n confirmedItems: newConfirmedItems,\n pendingItems: newPendingItems,\n }\n }\n case 'removePendingItems': {\n const newPendingItems = state.pendingItems.filter(\n i => !action.itemsToRemove.includes(i),\n )\n return {\n confirmedItems: state.confirmedItems,\n pendingItems: newPendingItems,\n }\n }\n case 'clear':\n return { confirmedItems: [], pendingItems: [] }\n default:\n return state\n }\n}\n\n/**\n * Stateful hook used to track items that need to be confirmed by the user. Methods are provided to support confirming\n * individual items or all items, as well as skipping confirmation for individual items or all items.\n */\nfunction useConfirmItems<T = unknown>(): UseConfirmItemsReturn<T> {\n const [state, dispatch] = useReducer(reducer<T>, {\n pendingItems: [],\n confirmedItems: [],\n })\n\n const addItemsPendingConfirmation = (...items: T[]) => {\n dispatch({ type: 'addItemsPendingConfirmation', newItems: items })\n }\n\n const confirmItem = (...items: T[]) => {\n dispatch({ type: 'confirmItem', itemsToConfirm: items })\n return reducer(state, { type: 'confirmItem', itemsToConfirm: items })\n }\n\n const removePendingItems = (...items: T[]) => {\n dispatch({ type: 'removePendingItems', itemsToRemove: items })\n return reducer(state, { type: 'removePendingItems', itemsToRemove: items })\n }\n\n const clear = () => {\n dispatch({ type: 'clear' })\n }\n\n return {\n pendingItems: state.pendingItems,\n confirmedItems: state.confirmedItems,\n addItemsPendingConfirmation,\n confirmItem,\n removePendingItems,\n clear,\n }\n}\n\nexport default useConfirmItems\n"],"mappings":";;AAsBA,SAAS,EACP,GACA,GAKA;
|
|
1
|
+
{"version":3,"file":"useConfirmItems.js","names":[],"sources":["../../../src/utils/hooks/useConfirmItems.ts"],"sourcesContent":["import { useReducer } from 'react'\n\ntype UseConfirmItemsReturn<T = unknown> = {\n /** The set of items that are awaiting confirmation */\n pendingItems: T[]\n /** The set of items that have been confirmed */\n confirmedItems: T[]\n /** Adds one or more items to the pending list */\n addItemsPendingConfirmation: (...items: T[]) => void\n /** Confirms one or more items, adding them to the confirmed list and removing them from the pending list\n * @returns the confirmed items */\n confirmItem: (...items: T[]) => { confirmedItems: T[]; pendingItems: T[] }\n /** Remove one or more items that are pending from the list\n * @returns the resulting state of confirmed items and pending items */\n removePendingItems: (...items: T[]) => {\n confirmedItems: T[]\n pendingItems: T[]\n }\n /** Clear all items from the confirmed and pending lists */\n clear: () => void\n}\n\nfunction reducer<T = unknown>(\n state: { pendingItems: T[]; confirmedItems: T[] },\n action:\n | { type: 'addItemsPendingConfirmation'; newItems: T[] }\n | { type: 'confirmItem'; itemsToConfirm: T[] }\n | { type: 'removePendingItems'; itemsToRemove: T[] }\n | { type: 'clear' },\n) {\n switch (action.type) {\n case 'addItemsPendingConfirmation':\n return {\n ...state,\n pendingItems: [...state.pendingItems, ...action.newItems],\n }\n case 'confirmItem': {\n const newConfirmedItems = [\n ...state.confirmedItems,\n ...action.itemsToConfirm,\n ]\n const newPendingItems = state.pendingItems.filter(\n i => !action.itemsToConfirm.includes(i),\n )\n return {\n confirmedItems: newConfirmedItems,\n pendingItems: newPendingItems,\n }\n }\n case 'removePendingItems': {\n const newPendingItems = state.pendingItems.filter(\n i => !action.itemsToRemove.includes(i),\n )\n return {\n confirmedItems: state.confirmedItems,\n pendingItems: newPendingItems,\n }\n }\n case 'clear':\n return { confirmedItems: [], pendingItems: [] }\n default:\n return state\n }\n}\n\n/**\n * Stateful hook used to track items that need to be confirmed by the user. Methods are provided to support confirming\n * individual items or all items, as well as skipping confirmation for individual items or all items.\n */\nfunction useConfirmItems<T = unknown>(): UseConfirmItemsReturn<T> {\n const [state, dispatch] = useReducer(reducer<T>, {\n pendingItems: [],\n confirmedItems: [],\n })\n\n const addItemsPendingConfirmation = (...items: T[]) => {\n dispatch({ type: 'addItemsPendingConfirmation', newItems: items })\n }\n\n const confirmItem = (...items: T[]) => {\n dispatch({ type: 'confirmItem', itemsToConfirm: items })\n return reducer(state, { type: 'confirmItem', itemsToConfirm: items })\n }\n\n const removePendingItems = (...items: T[]) => {\n dispatch({ type: 'removePendingItems', itemsToRemove: items })\n return reducer(state, { type: 'removePendingItems', itemsToRemove: items })\n }\n\n const clear = () => {\n dispatch({ type: 'clear' })\n }\n\n return {\n pendingItems: state.pendingItems,\n confirmedItems: state.confirmedItems,\n addItemsPendingConfirmation,\n confirmItem,\n removePendingItems,\n clear,\n }\n}\n\nexport default useConfirmItems\n"],"mappings":";;AAsBA,SAAS,EACP,GACA,GAKA;CACA,QAAQ,EAAO,MAAf;EACE,KAAK,+BACH,OAAO;GACL,GAAG;GACH,cAAc,CAAC,GAAG,EAAM,cAAc,GAAG,EAAO,QAAQ;EAC1D;EACF,KAAK,eAQH,OAAO;GACL,gBAAgB,CAPhB,GAAG,EAAM,gBACT,GAAG,EAAO,cAMM;GAChB,cALsB,EAAM,aAAa,QACzC,MAAK,CAAC,EAAO,eAAe,SAAS,CAAC,CAIxB;EAChB;EAEF,KAAK,sBAAsB;GACzB,IAAM,IAAkB,EAAM,aAAa,QACzC,MAAK,CAAC,EAAO,cAAc,SAAS,CAAC,CACvC;GACA,OAAO;IACL,gBAAgB,EAAM;IACtB,cAAc;GAChB;EACF;EACA,KAAK,SACH,OAAO;GAAE,gBAAgB,CAAC;GAAG,cAAc,CAAC;EAAE;EAChD,SACE,OAAO;CACX;AACF;AAMA,SAAS,IAAyD;CAChE,IAAM,CAAC,GAAO,KAAY,EAAW,GAAY;EAC/C,cAAc,CAAC;EACf,gBAAgB,CAAC;CACnB,CAAC;CAoBD,OAAO;EACL,cAAc,EAAM;EACpB,gBAAgB,EAAM;EACtB,8BArBmC,GAAG,MAAe;GACrD,EAAS;IAAE,MAAM;IAA+B,UAAU;GAAM,CAAC;EACnE;EAoBE,cAlBmB,GAAG,OACtB,EAAS;GAAE,MAAM;GAAe,gBAAgB;EAAM,CAAC,GAChD,EAAQ,GAAO;GAAE,MAAM;GAAe,gBAAgB;EAAM,CAAC;EAiBpE,qBAd0B,GAAG,OAC7B,EAAS;GAAE,MAAM;GAAsB,eAAe;EAAM,CAAC,GACtD,EAAQ,GAAO;GAAE,MAAM;GAAsB,eAAe;EAAM,CAAC;EAa1E,aAVkB;GAClB,EAAS,EAAE,MAAM,QAAQ,CAAC;EAC5B;CASA;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCookiePreferences.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useCookiePreferences.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,gBAGtB,CAAA;AACD,eAAO,MAAM,SAAS,EAAE,gBAGvB,CAAA;AAED,eAAO,MAAM,4BAA4B,2DACiB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAO,
|
|
1
|
+
{"version":3,"file":"useCookiePreferences.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/useCookiePreferences.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,gBAGtB,CAAA;AACD,eAAO,MAAM,SAAS,EAAE,gBAGvB,CAAA;AAED,eAAO,MAAM,4BAA4B,2DACiB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAO,gBAa9C,CAAA;AAED,eAAO,MAAM,oBAAoB,QAAO,CACtC,gBAAgB,EAChB,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CA2CjC,CAAA"}
|
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
import { useCallback as e,
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { useCallback as e, useMemo as t } from "react";
|
|
2
|
+
import n from "js-cookie";
|
|
3
|
+
import { useCookieValue as r } from "@react-hookz/web/useCookieValue/index.js";
|
|
4
4
|
//#region src/utils/hooks/useCookiePreferences.ts
|
|
5
|
-
var
|
|
5
|
+
var i = {
|
|
6
6
|
functionalAllowed: !0,
|
|
7
7
|
analyticsAllowed: !0
|
|
8
|
-
},
|
|
8
|
+
}, a = {
|
|
9
9
|
functionalAllowed: !1,
|
|
10
10
|
analyticsAllowed: !1
|
|
11
|
-
},
|
|
12
|
-
let e =
|
|
11
|
+
}, o = "org.sagebionetworks.security.cookies.portal.preference", s = () => {
|
|
12
|
+
let e = n.get(o), t = a;
|
|
13
13
|
try {
|
|
14
14
|
e != null && (t = JSON.parse(e));
|
|
15
15
|
} catch {
|
|
16
16
|
console.error(`Failed to parse CookiePreference from value, falling back to allow none. value=${e}`);
|
|
17
17
|
}
|
|
18
18
|
return t;
|
|
19
|
-
},
|
|
20
|
-
let [i,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
n
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
}, c = () => {
|
|
20
|
+
let [n, i, s] = r(o, {
|
|
21
|
+
path: "/",
|
|
22
|
+
expires: 365,
|
|
23
|
+
domain: typeof window < "u" && window.location.hostname.toLowerCase().endsWith(".synapse.org") ? "synapse.org" : void 0
|
|
24
|
+
});
|
|
25
|
+
return [t(() => {
|
|
26
|
+
if (n) try {
|
|
27
|
+
return JSON.parse(n);
|
|
28
|
+
} catch {
|
|
29
|
+
return console.error(`Failed to parse CookiePreference from cookie value, falling back to allow none and deleting the cookie. value=${n}`), s(), a;
|
|
30
|
+
}
|
|
31
|
+
else return a;
|
|
32
|
+
}, [n, s]), e((e) => {
|
|
33
|
+
e.functionalAllowed || (localStorage.clear(), sessionStorage.clear()), i(JSON.stringify(e));
|
|
34
|
+
}, [i])];
|
|
34
35
|
};
|
|
35
36
|
//#endregion
|
|
36
|
-
export {
|
|
37
|
+
export { o as COOKIES_AGREEMENT_COOKIE_KEY, i as allowAll, a as allowNone, s as getCurrentCookiePreferences, c as useCookiePreferences };
|
|
37
38
|
|
|
38
39
|
//# sourceMappingURL=useCookiePreferences.js.map
|