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":"useGetSchemaForGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useGetSchemaForGrid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAEZ,MAAM,kCAAkC,CAAA;AAUzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"useGetSchemaForGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useGetSchemaForGrid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAEZ,MAAM,kCAAkC,CAAA;AAUzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAiEzC;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,2BAmCtE"}
|
|
@@ -23,7 +23,14 @@ var { compareSchemaDefinitions: u, compareSchemaValues: d } = a(), { mergeArrayO
|
|
|
23
23
|
"path",
|
|
24
24
|
"type",
|
|
25
25
|
"currentVersion",
|
|
26
|
-
"benefactorId"
|
|
26
|
+
"benefactorId",
|
|
27
|
+
"dataFileHandleId",
|
|
28
|
+
"dataFileName",
|
|
29
|
+
"dataFileSizeBytes",
|
|
30
|
+
"dataFileMD5Hex",
|
|
31
|
+
"dataFileConcreteType",
|
|
32
|
+
"dataFileBucket",
|
|
33
|
+
"dataFileKey"
|
|
27
34
|
];
|
|
28
35
|
function h(e) {
|
|
29
36
|
if (!e.properties) return e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetSchemaForGrid.js","names":["useGetEntity","useGetSchema","GridSession","instanceOfEntityView","createComparator","createMerger","createShallowAllOfMerge","createDeduplicator","createIntersector","JSONSchema7","isObject","useMemo","compareSchemaDefinitions","compareSchemaValues","mergeArrayOfSchemaDefinitions","intersectJson","deduplicateJsonSchemaDef","shallowAllOfMerge","GRID_ENTITY_READONLY_PROPERTIES","addReadonlyToEntityProperties","jsonSchema","properties","updatedProperties","propertiesToMakeReadonly","forEach","prop","readOnly","useGetSchemaForGrid","session","$","_c","t0","gridJsonSchema$Id","t1","enabled","data","t2","sourceEntityId","t3","entityData","undefined","includeBaseEntitySchema","t4","select","entityJsonSchema","t5","t6","allOf"],"sources":["../../../../src/components/DataGrid/hooks/useGetSchemaForGrid.ts"],"sourcesContent":["import { useGetEntity, useGetSchema } from '@/synapse-queries/index'\nimport {\n GridSession,\n instanceOfEntityView,\n} from '@sage-bionetworks/synapse-client'\nimport {\n createComparator,\n createMerger,\n createShallowAllOfMerge,\n} from '@x0k/json-schema-merge'\nimport {\n createDeduplicator,\n createIntersector,\n} from '@x0k/json-schema-merge/lib/array'\nimport { JSONSchema7 } from 'json-schema'\nimport isObject from 'lodash-es/isObject'\nimport { useMemo } from 'react'\n\nconst { compareSchemaDefinitions, compareSchemaValues } = createComparator()\nconst { mergeArrayOfSchemaDefinitions } = createMerger({\n intersectJson: createIntersector(compareSchemaValues),\n deduplicateJsonSchemaDef: createDeduplicator(compareSchemaDefinitions),\n})\nconst shallowAllOfMerge = createShallowAllOfMerge(mergeArrayOfSchemaDefinitions)\n\nconst GRID_ENTITY_READONLY_PROPERTIES = [\n 'name',\n 'id',\n 'createdBy',\n 'createdOn',\n 'modifiedBy',\n 'modifiedOn',\n 'etag',\n 'concreteType',\n 'parentId',\n 'path',\n 'type',\n 'currentVersion',\n 'benefactorId',\n]\n\n/**\n * The Synapse JSON Schemas for entities do not indicate which properties should be readOnly.\n * Amend the schema to mark certain properties as readOnly so they cannot be edited in the grid.\n */\nfunction addReadonlyToEntityProperties(jsonSchema: JSONSchema7): JSONSchema7 {\n if (!jsonSchema.properties) {\n return jsonSchema\n }\n\n const updatedProperties = { ...jsonSchema.properties }\n\n // List of properties to mark as read-only\n const propertiesToMakeReadonly = GRID_ENTITY_READONLY_PROPERTIES\n\n propertiesToMakeReadonly.forEach(prop => {\n if (updatedProperties[prop]) {\n updatedProperties[prop] = {\n ...(isObject(updatedProperties[prop]) ? updatedProperties[prop] : {}),\n readOnly: true,\n }\n } else {\n updatedProperties[prop] = { readOnly: true }\n }\n })\n\n return {\n ...jsonSchema,\n properties: updatedProperties,\n }\n}\n\n/**\n * Hook to get the JSON schema for a Data Grid, merging in the base Entity schema if the source entity is an EntityView.\n * @param session - The GridSession object.\n */\nexport default function useGetSchemaForGrid(session: GridSession | null) {\n const { data: jsonSchema } = useGetSchema(session?.gridJsonSchema$Id ?? '', {\n enabled: !!session?.gridJsonSchema$Id,\n })\n\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n let includeBaseEntitySchema = false\n if (entityData && instanceOfEntityView(entityData)) {\n includeBaseEntitySchema = true\n }\n\n const { data: entityJsonSchema } = useGetSchema(\n 'org.sagebionetworks-repo.model.Entity',\n {\n enabled: includeBaseEntitySchema,\n select: addReadonlyToEntityProperties,\n },\n )\n\n return useMemo(() => {\n if (jsonSchema && entityJsonSchema) {\n return shallowAllOfMerge({\n allOf: [entityJsonSchema, jsonSchema],\n }) as JSONSchema7\n } else {\n return jsonSchema\n }\n }, [jsonSchema, entityJsonSchema])\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAM,EAAEY,6BAA0BC,2BAAwBT,
|
|
1
|
+
{"version":3,"file":"useGetSchemaForGrid.js","names":["useGetEntity","useGetSchema","GridSession","instanceOfEntityView","createComparator","createMerger","createShallowAllOfMerge","createDeduplicator","createIntersector","JSONSchema7","isObject","useMemo","compareSchemaDefinitions","compareSchemaValues","mergeArrayOfSchemaDefinitions","intersectJson","deduplicateJsonSchemaDef","shallowAllOfMerge","GRID_ENTITY_READONLY_PROPERTIES","addReadonlyToEntityProperties","jsonSchema","properties","updatedProperties","propertiesToMakeReadonly","forEach","prop","readOnly","useGetSchemaForGrid","session","$","_c","t0","gridJsonSchema$Id","t1","enabled","data","t2","sourceEntityId","t3","entityData","undefined","includeBaseEntitySchema","t4","select","entityJsonSchema","t5","t6","allOf"],"sources":["../../../../src/components/DataGrid/hooks/useGetSchemaForGrid.ts"],"sourcesContent":["import { useGetEntity, useGetSchema } from '@/synapse-queries/index'\nimport {\n GridSession,\n instanceOfEntityView,\n} from '@sage-bionetworks/synapse-client'\nimport {\n createComparator,\n createMerger,\n createShallowAllOfMerge,\n} from '@x0k/json-schema-merge'\nimport {\n createDeduplicator,\n createIntersector,\n} from '@x0k/json-schema-merge/lib/array'\nimport { JSONSchema7 } from 'json-schema'\nimport isObject from 'lodash-es/isObject'\nimport { useMemo } from 'react'\n\nconst { compareSchemaDefinitions, compareSchemaValues } = createComparator()\nconst { mergeArrayOfSchemaDefinitions } = createMerger({\n intersectJson: createIntersector(compareSchemaValues),\n deduplicateJsonSchemaDef: createDeduplicator(compareSchemaDefinitions),\n})\nconst shallowAllOfMerge = createShallowAllOfMerge(mergeArrayOfSchemaDefinitions)\n\nconst GRID_ENTITY_READONLY_PROPERTIES = [\n 'name',\n 'id',\n 'createdBy',\n 'createdOn',\n 'modifiedBy',\n 'modifiedOn',\n 'etag',\n 'concreteType',\n 'parentId',\n 'path',\n 'type',\n 'currentVersion',\n 'benefactorId',\n 'dataFileHandleId',\n 'dataFileName',\n 'dataFileSizeBytes',\n 'dataFileMD5Hex',\n 'dataFileConcreteType',\n 'dataFileBucket',\n 'dataFileKey',\n]\n\n/**\n * The Synapse JSON Schemas for entities do not indicate which properties should be readOnly.\n * Amend the schema to mark certain properties as readOnly so they cannot be edited in the grid.\n */\nfunction addReadonlyToEntityProperties(jsonSchema: JSONSchema7): JSONSchema7 {\n if (!jsonSchema.properties) {\n return jsonSchema\n }\n\n const updatedProperties = { ...jsonSchema.properties }\n\n // List of properties to mark as read-only\n const propertiesToMakeReadonly = GRID_ENTITY_READONLY_PROPERTIES\n\n propertiesToMakeReadonly.forEach(prop => {\n if (updatedProperties[prop]) {\n updatedProperties[prop] = {\n ...(isObject(updatedProperties[prop]) ? updatedProperties[prop] : {}),\n readOnly: true,\n }\n } else {\n updatedProperties[prop] = { readOnly: true }\n }\n })\n\n return {\n ...jsonSchema,\n properties: updatedProperties,\n }\n}\n\n/**\n * Hook to get the JSON schema for a Data Grid, merging in the base Entity schema if the source entity is an EntityView.\n * @param session - The GridSession object.\n */\nexport default function useGetSchemaForGrid(session: GridSession | null) {\n const { data: jsonSchema } = useGetSchema(session?.gridJsonSchema$Id ?? '', {\n enabled: !!session?.gridJsonSchema$Id,\n })\n\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n let includeBaseEntitySchema = false\n if (entityData && instanceOfEntityView(entityData)) {\n includeBaseEntitySchema = true\n }\n\n const { data: entityJsonSchema } = useGetSchema(\n 'org.sagebionetworks-repo.model.Entity',\n {\n enabled: includeBaseEntitySchema,\n select: addReadonlyToEntityProperties,\n },\n )\n\n return useMemo(() => {\n if (jsonSchema && entityJsonSchema) {\n return shallowAllOfMerge({\n allOf: [entityJsonSchema, jsonSchema],\n }) as JSONSchema7\n } else {\n return jsonSchema\n }\n }, [jsonSchema, entityJsonSchema])\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAM,EAAEY,6BAA0BC,2BAAwBT,EAAiB,GACrE,EAAEU,qCAAkCT,EAAa;CACrDU,eAAeP,EAAkBK,CAAmB;CACpDG,0BAA0BT,EAAmBK,CAAwB;AACvE,CAAC,GACKK,IAAoBX,EAAwBQ,CAA6B,GAEzEI,IAAkC;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAa;AAOf,SAASC,EAA8BC,GAAsC;CAC3E,IAAI,CAACA,EAAWC,YACd,OAAOD;CAGT,IAAME,IAAoB,EAAE,GAAGF,EAAWC,WAAW;CAgBrD,OAXAE,EAAyBC,SAAQC,MAAQ;EACvC,AAAIH,EAAkBG,KACpBH,EAAkBG,KAAQ;GACxB,GAAIf,EAASY,EAAkBG,EAAK,IAAIH,EAAkBG,KAAQ,CAAC;GACnEC,UAAU;EACZ,IAEAJ,EAAkBG,KAAQ,EAAEC,UAAU,GAAK;CAE/C,CAAC,GAEM;EACL,GAAGN;EACHC,YAAYC;CACd;AACF;AAMA,SAAeK,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAEFC,IAAA,CAAC,CAACH,GAAOI,mBAAmBC;CAAA,AAAAJ,EAAA,OAAAE,IACtCE,IAAAJ,EAAA,MAF2EI,IAAA,EAAAC,SACjEH,EACX,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAI;CAFD,IAAA,EAAAE,MAAAf,MAA6BnB,EAAa2B,GAAOI,qBAAP,IAAkCC,CAE3E,GAMYG,IAAA,CAAC,CAACR,GAAOS,gBAAgBC;CAAA,AAAAT,EAAA,OAAAO,IACnCE,IAAAT,EAAA,MAFDS,IAAA,EAAAJ,SACWE,EACX,GAACP,EAAA,KAAAO,GAAAP,EAAA,KAAAS;CALH,IAAA,EAAAH,MAAAI,MAA6BvC,EAC3B4B,GAAOS,gBACPG,KAAAA,GACAF,CAGF,GAEAG,IAA8B;CAC9B,AAAIF,KAAcpC,EAAqBoC,CAAU,MAC/CE,IAA0BA;CAC3B,IAAAC;CAAA,AAAAb,EAAA,OAAAY,IAOEC,IAAAb,EAAA,MAHDa,IAAA;EAAAR,SACWO;EAAuBE,QACxBxB;CACV,GAACU,EAAA,KAAAY,GAAAZ,EAAA,KAAAa;CALH,IAAA,EAAAP,MAAAS,MAAmC3C,EACjC,yCACAyC,CAIF,GAACG;CAGC,IAAIzB,KAAAwB,GAA8B;EAAA,IAAAE;EAChCD,AADgChB,EAAA,OAAAe,KAAAf,EAAA,OAAAT,KACzB0B,IAAA7B,EAAkB,EAAA8B,OAChB,CAACH,GAAkBxB,CAAU,EACtC,CAAC,GAACS,EAAA,KAAAe,GAAAf,EAAA,KAAAT,GAAAS,EAAA,KAAAiB,KAAAA,IAAAjB,EAAA,IAFFgB,IAAOC;CAEU,OAEjBD,IAAOzB;CACR,OAPIyB;AAQ2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridReplicaUsers.js","names":["useSynapseContext","useQueries","getReplicaCategory","ReplicaCategory","GridReplicaInfo","UserProfile","getUserProfileQuery","useMemo","useDeepCompareMemoize","ReplicaUserInfo","replicaInfo","category","profile","useGridReplicaUsers","replicas","localReplicaId","currentUserId","$","_c","accessToken","keyFactory","t0","filter","_temp","attributableReplicas","t1","Set","map","_temp2","Boolean","t2","uniqueUserIds","t3","queries","userId","staleTime","profileQueries","t4","_temp3","stableProfileData","profileByUserId","Map","forEach","userId_0","i","data","set","result","replica","replicaId","createdBy","get","undefined","q","r_0","r","replicaType"],"sources":["../../../../src/components/DataGrid/hooks/useGridReplicaUsers.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useQueries } from '@tanstack/react-query'\nimport {\n getReplicaCategory,\n type ReplicaCategory,\n} from '@/components/DataGrid/utils/getReplicaCategory'\nimport type { GridReplicaInfo } from '@sage-bionetworks/synapse-client'\nimport type { UserProfile } from '@sage-bionetworks/synapse-types'\nimport { getUserProfileQuery } from '@/synapse-queries/user/useUserBundle'\nimport { useMemo } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\n\nexport interface ReplicaUserInfo {\n replicaInfo: GridReplicaInfo\n category: ReplicaCategory\n profile: UserProfile | undefined\n}\n\n/**\n * Given the list of replicas in the current session and the local replica ID,\n * fetches user profiles for each non-SERVICE replica and returns a map from\n * replicaId → ReplicaUserInfo for use in attribution and coloring.\n */\nexport function useGridReplicaUsers(\n replicas: GridReplicaInfo[],\n localReplicaId: number | null,\n currentUserId: string | undefined,\n): Map<number, ReplicaUserInfo> {\n const { accessToken, keyFactory } = useSynapseContext()\n\n // Only query non-SERVICE replicas (SERVICE replicas are ignored for attribution)\n const attributableReplicas = useMemo(\n () => replicas.filter(r => r.replicaType !== 'SERVICE'),\n [replicas],\n )\n\n // Deduplicate user IDs so we only fetch each profile once\n const uniqueUserIds = useMemo(\n () => [\n ...new Set(\n attributableReplicas.map(r => r.createdBy).filter(Boolean) as string[],\n ),\n ],\n [attributableReplicas],\n )\n\n const profileQueries = useQueries({\n queries: uniqueUserIds.map(userId => ({\n ...getUserProfileQuery(userId, { accessToken, keyFactory }),\n staleTime: 5 * 60 * 1000, // profiles are stable within a session\n })),\n })\n\n const stableProfileData = useDeepCompareMemoize(\n profileQueries.map(q => q.data),\n )\n\n return useMemo(() => {\n // Build userId → profile map from query results\n const profileByUserId = new Map<string, UserProfile>()\n uniqueUserIds.forEach((userId, i) => {\n const data = stableProfileData[i]\n if (data) profileByUserId.set(userId, data)\n })\n\n const result = new Map<number, ReplicaUserInfo>()\n for (const replica of attributableReplicas) {\n if (replica.replicaId == null) continue\n const category =\n localReplicaId != null && currentUserId != null\n ? getReplicaCategory(replica, currentUserId, localReplicaId)\n : null\n if (category === null) continue\n result.set(replica.replicaId, {\n replicaInfo: replica,\n category,\n profile: replica.createdBy\n ? profileByUserId.get(replica.createdBy)\n : undefined,\n })\n }\n return result\n }, [\n attributableReplicas,\n uniqueUserIds,\n stableProfileData,\n localReplicaId,\n currentUserId,\n ])\n}\n"],"mappings":";;;;;;;AAuBA,SAAOa,EAAAC,GAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useGridReplicaUsers.js","names":["useSynapseContext","useQueries","getReplicaCategory","ReplicaCategory","GridReplicaInfo","UserProfile","getUserProfileQuery","useMemo","useDeepCompareMemoize","ReplicaUserInfo","replicaInfo","category","profile","useGridReplicaUsers","replicas","localReplicaId","currentUserId","$","_c","accessToken","keyFactory","t0","filter","_temp","attributableReplicas","t1","Set","map","_temp2","Boolean","t2","uniqueUserIds","t3","queries","userId","staleTime","profileQueries","t4","_temp3","stableProfileData","profileByUserId","Map","forEach","userId_0","i","data","set","result","replica","replicaId","createdBy","get","undefined","q","r_0","r","replicaType"],"sources":["../../../../src/components/DataGrid/hooks/useGridReplicaUsers.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { useQueries } from '@tanstack/react-query'\nimport {\n getReplicaCategory,\n type ReplicaCategory,\n} from '@/components/DataGrid/utils/getReplicaCategory'\nimport type { GridReplicaInfo } from '@sage-bionetworks/synapse-client'\nimport type { UserProfile } from '@sage-bionetworks/synapse-types'\nimport { getUserProfileQuery } from '@/synapse-queries/user/useUserBundle'\nimport { useMemo } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\n\nexport interface ReplicaUserInfo {\n replicaInfo: GridReplicaInfo\n category: ReplicaCategory\n profile: UserProfile | undefined\n}\n\n/**\n * Given the list of replicas in the current session and the local replica ID,\n * fetches user profiles for each non-SERVICE replica and returns a map from\n * replicaId → ReplicaUserInfo for use in attribution and coloring.\n */\nexport function useGridReplicaUsers(\n replicas: GridReplicaInfo[],\n localReplicaId: number | null,\n currentUserId: string | undefined,\n): Map<number, ReplicaUserInfo> {\n const { accessToken, keyFactory } = useSynapseContext()\n\n // Only query non-SERVICE replicas (SERVICE replicas are ignored for attribution)\n const attributableReplicas = useMemo(\n () => replicas.filter(r => r.replicaType !== 'SERVICE'),\n [replicas],\n )\n\n // Deduplicate user IDs so we only fetch each profile once\n const uniqueUserIds = useMemo(\n () => [\n ...new Set(\n attributableReplicas.map(r => r.createdBy).filter(Boolean) as string[],\n ),\n ],\n [attributableReplicas],\n )\n\n const profileQueries = useQueries({\n queries: uniqueUserIds.map(userId => ({\n ...getUserProfileQuery(userId, { accessToken, keyFactory }),\n staleTime: 5 * 60 * 1000, // profiles are stable within a session\n })),\n })\n\n const stableProfileData = useDeepCompareMemoize(\n profileQueries.map(q => q.data),\n )\n\n return useMemo(() => {\n // Build userId → profile map from query results\n const profileByUserId = new Map<string, UserProfile>()\n uniqueUserIds.forEach((userId, i) => {\n const data = stableProfileData[i]\n if (data) profileByUserId.set(userId, data)\n })\n\n const result = new Map<number, ReplicaUserInfo>()\n for (const replica of attributableReplicas) {\n if (replica.replicaId == null) continue\n const category =\n localReplicaId != null && currentUserId != null\n ? getReplicaCategory(replica, currentUserId, localReplicaId)\n : null\n if (category === null) continue\n result.set(replica.replicaId, {\n replicaInfo: replica,\n category,\n profile: replica.createdBy\n ? profileByUserId.get(replica.createdBy)\n : undefined,\n })\n }\n return result\n }, [\n attributableReplicas,\n uniqueUserIds,\n stableProfileData,\n localReplicaId,\n currentUserId,\n ])\n}\n"],"mappings":";;;;;;;AAuBA,SAAOa,EAAAC,GAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAKL,EAAAC,gBAAAC,kBAAoCpB,EAAkB,GAACqB;CAAA,AAAAJ,EAAA,OAAAH,IAIEO,IAAAJ,EAAA,MAAjDI,IAAAP,EAAQQ,OAAQC,CAAgC,GAACN,EAAA,KAAAH,GAAAG,EAAA,KAAAI;CADzD,IAAAG,IACQH,GAEPI;CAAA,AAAAR,EAAA,OAAAO,IAOIC,IAAAR,EAAA,MAFEQ,IAAA,IAAIC,IACLF,EAAoBG,IAAKC,CAAgB,EAACN,OAAQO,OAAO,CAC3D,GAACZ,EAAA,KAAAO,GAAAP,EAAA,KAAAQ;CAAA,IAAAK;CAAA,AAAAb,EAAA,OAAAQ,IACFK,IAAAb,EAAA,MAJKa,IAAA,CAAA,GACDL,CAEF,GACFR,EAAA,KAAAQ,GAAAR,EAAA,KAAAa;CALH,IAAAC,IACQD,GAMPE;CAAA,AAAAf,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAAAH,EAAA,OAAAc,KAEiCC,IAAA,EAAAC,SACvBF,EAAaJ,KAAKO,OAAW;EAAA,GACjC5B,EAAoB4B,GAAQ;GAAAf;GAAAC;EAA0B,CAAC;EAACe,WAChD;CACb,EAAE,EACJ,GAAClB,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAc,GAAAd,EAAA,KAAAe,KAAAA,IAAAf,EAAA;CALD,IAAAmB,IAAuBnC,EAAW+B,CAKjC,GAACK;CAAA,AAAApB,EAAA,QAAAmB,IAG+BC,IAAApB,EAAA,OAA/BoB,IAAAD,EAAcT,IAAKW,CAAW,GAACrB,EAAA,MAAAmB,GAAAnB,EAAA,MAAAoB;CADjC,IAAAE,IAA0B/B,EACxB6B,CACF,GAACG;CAAA,AAAAvB,EAAA,QAAAsB,KAAAtB,EAAA,QAAAc,KAICS,oBAAwB,IAAIC,IAAyB,GACrDV,EAAaW,SAASC,GAAAC,MAAA;EACpB,IAAAC,IAAaN,EAAkBK;EAC/B,AAAIC,KAAML,EAAeM,IAAKZ,GAAQW,CAAI;CAAC,CAC5C,GAAC5B,EAAA,MAAAsB,GAAAtB,EAAA,MAAAc,GAAAd,EAAA,MAAAuB,KAAAA,IAAAvB,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAAO,KAAAP,EAAA,QAAAD,KAAAC,EAAA,QAAAF,KAAAE,EAAA,QAAAuB,GAAA;EAEFO,oBAAe,IAAIN,IAA6B;EAChD,KAAK,IAAAO,KAAiBxB,GAAoB;GACxC,IAAIwB,EAAOC,aAAc,MAAM;GAC/B,IAAAtC,IACEI,KAAkB,QAAQC,KAAiB,OACvCd,EAAmB8C,GAAShC,GAAeD,CACxC,IAFP;GAGEJ,MAAa,QACjBoC,EAAMD,IAAKE,EAAOC,WAAY;IAAAvC,aACfsC;IAAOrC;IAAAC,SAEXoC,EAAOE,YACZV,EAAeW,IAAKH,EAAOE,SACnB,IAFHE,KAAAA;GAGX,CAAC;EAAC;EACHnC,AAAAA,EAAA,MAAAO,GAAAP,EAAA,MAAAD,GAAAC,EAAA,MAAAF,GAAAE,EAAA,MAAAuB,GAAAvB,EAAA,MAAA8B;CAAA,OAAAA,IAAA9B,EAAA;CAAA,OACD8B;AAAa;AA1DV,SAAAT,EAAAe,GAAA;CAAA,OA+BqBA,EAACR;AAAK;AA/B3B,SAAAjB,EAAA0B,GAAA;CAAA,OAiB+BC,EAACL;AAAU;AAjB1C,SAAA3B,EAAAgC,GAAA;CAAA,OASwBA,EAACC,gBAAiB;AAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","isEmpty","lastAction","peek","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","i_3","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_4","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","undefined","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n if (undoStack.isEmpty()) return null\n\n const lastAction = undoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n if (redoStack.isEmpty()) return null\n\n const lastAction = redoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (let i = 0; i < actionToRedo.actions.length; i++) {\n const child = actionToRedo.actions[i]\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","isEmpty","lastAction","peek","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","i_3","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_4","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","undefined","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n if (undoStack.isEmpty()) return null\n\n const lastAction = undoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n if (redoStack.isEmpty()) return null\n\n const lastAction = redoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (let i = 0; i < actionToRedo.actions.length; i++) {\n const child = actionToRedo.actions[i]\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoteSelections.js","names":["useMemo","GridModel","GridModelSnapshot","ReplicaSelectionModel","GridReplicaInfo","replicaSelectionToGridSelection","GridSelectionRange","RemoteSelection","replicaId","range","colorIndex","useRemoteSelections","modelSnapshot","model","replicas","localReplicaId","$","_c","t0","bb0","t1","Symbol","for","selectionMap","selection","Record","results","replica","rid","isConnected","replicaType","selectionModel","String","push"],"sources":["../../../../src/components/DataGrid/hooks/useRemoteSelections.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type {\n GridModel,\n GridModelSnapshot,\n ReplicaSelectionModel,\n} from '../DataGridTypes'\nimport type { GridReplicaInfo } from '@sage-bionetworks/synapse-client'\nimport {\n replicaSelectionToGridSelection,\n type GridSelectionRange,\n} from '../utils/replicaSelectionToGridSelection'\n\nexport interface RemoteSelection {\n replicaId: number\n range: GridSelectionRange\n /** 0-7 color index, derived from replicaId for a stable per-session color. */\n colorIndex: number\n}\n\n/**\n * Derives remote replica selection ranges from the CRDT model's selection map.\n * The server mirrors each replica's selection into the model under\n * `snapshot.selection[replicaId]`, so no extra API calls are needed.\n */\nexport function useRemoteSelections(\n modelSnapshot: GridModelSnapshot | null | undefined,\n model: GridModel | null | undefined,\n replicas: GridReplicaInfo[],\n localReplicaId: number | null,\n): RemoteSelection[] {\n return useMemo(() => {\n if (!modelSnapshot || !model) return []\n\n const selectionMap = modelSnapshot.selection as Record<\n string,\n ReplicaSelectionModel\n >\n if (!selectionMap) return []\n\n const results: RemoteSelection[] = []\n\n for (const replica of replicas) {\n const rid = replica.replicaId\n if (rid == null || rid === localReplicaId) continue\n if (!replica.isConnected) continue\n if (replica.replicaType === 'SERVICE') continue\n\n const selectionModel = selectionMap[String(rid)]\n if (!selectionModel) continue\n\n try {\n const range = replicaSelectionToGridSelection(selectionModel, model)\n if (range) {\n results.push({\n replicaId: rid,\n range,\n colorIndex: rid % 8,\n })\n }\n } catch {\n // Ignore stale/malformed selection data for a replica\n }\n }\n\n return results\n }, [modelSnapshot, model, replicas, localReplicaId])\n}\n"],"mappings":";;;AAwBA,SAAOW,EAAAC,GAAAC,GAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useRemoteSelections.js","names":["useMemo","GridModel","GridModelSnapshot","ReplicaSelectionModel","GridReplicaInfo","replicaSelectionToGridSelection","GridSelectionRange","RemoteSelection","replicaId","range","colorIndex","useRemoteSelections","modelSnapshot","model","replicas","localReplicaId","$","_c","t0","bb0","t1","Symbol","for","selectionMap","selection","Record","results","replica","rid","isConnected","replicaType","selectionModel","String","push"],"sources":["../../../../src/components/DataGrid/hooks/useRemoteSelections.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type {\n GridModel,\n GridModelSnapshot,\n ReplicaSelectionModel,\n} from '../DataGridTypes'\nimport type { GridReplicaInfo } from '@sage-bionetworks/synapse-client'\nimport {\n replicaSelectionToGridSelection,\n type GridSelectionRange,\n} from '../utils/replicaSelectionToGridSelection'\n\nexport interface RemoteSelection {\n replicaId: number\n range: GridSelectionRange\n /** 0-7 color index, derived from replicaId for a stable per-session color. */\n colorIndex: number\n}\n\n/**\n * Derives remote replica selection ranges from the CRDT model's selection map.\n * The server mirrors each replica's selection into the model under\n * `snapshot.selection[replicaId]`, so no extra API calls are needed.\n */\nexport function useRemoteSelections(\n modelSnapshot: GridModelSnapshot | null | undefined,\n model: GridModel | null | undefined,\n replicas: GridReplicaInfo[],\n localReplicaId: number | null,\n): RemoteSelection[] {\n return useMemo(() => {\n if (!modelSnapshot || !model) return []\n\n const selectionMap = modelSnapshot.selection as Record<\n string,\n ReplicaSelectionModel\n >\n if (!selectionMap) return []\n\n const results: RemoteSelection[] = []\n\n for (const replica of replicas) {\n const rid = replica.replicaId\n if (rid == null || rid === localReplicaId) continue\n if (!replica.isConnected) continue\n if (replica.replicaType === 'SERVICE') continue\n\n const selectionModel = selectionMap[String(rid)]\n if (!selectionModel) continue\n\n try {\n const range = replicaSelectionToGridSelection(selectionModel, model)\n if (range) {\n results.push({\n replicaId: rid,\n range,\n colorIndex: rid % 8,\n })\n }\n } catch {\n // Ignore stale/malformed selection data for a replica\n }\n }\n\n return results\n }, [modelSnapshot, model, replicas, localReplicaId])\n}\n"],"mappings":";;;AAwBA,SAAOW,EAAAC,GAAAC,GAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAAC,KAAA;EAOH,IAAI,CAACP,KAAD,CAAmBC,GAAK;GAAA,IAAAO;GAAEF,AAAFF,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAASF,IAAA,CAAA,GAAEJ,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IAATE,IAAOE;GAAP,MAAAD;EAAS;EAEvC,IAAAI,IAAqBX,EAAaY;EAIlC,IAAI,CAACD,GAAY;GAAA,IAAAH;GAAEF,AAAFF,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAASF,IAAA,CAAA,GAAEJ,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IAATE,IAAOE;GAAP,MAAAD;EAAS;EAAA,IAAAO;EAAA,IAAAV,EAAA,OAAAD,KAAAC,EAAA,OAAAH,KAAAG,EAAA,OAAAF,KAAAE,EAAA,OAAAO,GAAA;GAE5BG,IAAmC,CAAA;GAEnC,KAAK,IAAAC,KAAiBb,GAAQ;IAC5B,IAAAc,IAAYD,EAAOnB;IAGnB,IAFIoB,KAAO,QAAQA,MAAQb,KACvB,CAACY,EAAOE,eACRF,EAAOG,gBAAiB,WAAW;IAEvC,IAAAC,IAAuBR,EAAaS,OAAOJ,CAAG;IACzCG,OAEL,IAAA;KACE,IAAAtB,IAAcJ,EAAgC0B,GAAgBlB,CAAK;KACnE,AAAIJ,KACFiB,EAAOO,KAAM;MAAAzB,WACAoB;MAAGnB;MAAAC,YAEFkB,IAAM;KACpB,CAAC;IACF,QAAA,CAAA;GAGF;GACFZ,AAAAA,EAAA,KAAAD,GAAAC,EAAA,KAAAH,GAAAG,EAAA,KAAAF,GAAAE,EAAA,KAAAO,GAAAP,EAAA,KAAAU;EAAA,OAAAA,IAAAV,EAAA;EAEDE,IAAOQ;CAAO;CAAA,OAlCTR;AAmC6C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack[currentStack.length - 1]\n setCurrentStack(prev => prev.slice(0, -1))\n return popped\n }, [currentStack])\n\n const peek = useCallback(() => {\n return currentStack[currentStack.length - 1]\n }, [currentStack])\n\n const clear = useCallback(() => {\n setCurrentStack([])\n }, [])\n\n const isEmpty = useCallback(() => currentStack.length === 0, [currentStack])\n\n return {\n stack: currentStack,\n push,\n pop,\n clear,\n peek,\n size: currentStack.length,\n isEmpty,\n }\n}\n"],"mappings":";;;AAMI,SAAOE,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack[currentStack.length - 1]\n setCurrentStack(prev => prev.slice(0, -1))\n return popped\n }, [currentStack])\n\n const peek = useCallback(() => {\n return currentStack[currentStack.length - 1]\n }, [currentStack])\n\n const clear = useCallback(() => {\n setCurrentStack([])\n }, [])\n\n const isEmpty = useCallback(() => currentStack.length === 0, [currentStack])\n\n return {\n stack: currentStack,\n push,\n pop,\n clear,\n peek,\n size: currentStack.length,\n isEmpty,\n }\n}\n"],"mappings":";;;AAMI,SAAOE,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAF,IAAoCI,IAAAF,EAAA,MAAfE,IAAAJ,MAAAK,KAAAA,IAAA,CAAA,IAAAL,GAAeE,EAAA,KAAAF,GAAAE,EAAA,KAAAE;CAC7C,IAAA,CAAAG,GAAAC,KAAwCV,EAAcQ,CAAK,GAACG;CAAA,AAAAP,EAAA,OAAAD,IAezDQ,IAAAP,EAAA,MAZDO,KAAAC,MAAA;EACEF,GAAgBG,MAAA;GAEd,IAAAC,IAAiB,CAAA,GAAID,GAAMD,CAAI;GAK9B,OAFGT,KAAWW,EAAQC,SAAUZ,KAC/BW,EAAQE,MAAO,GAGVF;EAAQ,CAChB;CAAC,GACHV,EAAA,KAAAD,GAAAC,EAAA,KAAAO;CAbH,IAAAM,IAAaN,GAeZO;CAAA,AAAAd,EAAA,OAAAK,IAQAS,IAAAd,EAAA,MANuBc,UAAA;EACtB,IAAIT,EAAYM,WAAY,GAAC;EAE7B,IAAAI,IAAeV,EAAaA,EAAYM,SAAU;EACR,OAA1CL,EAAgBU,CAAyB,GAClCD;CAAM,GACdf,EAAA,KAAAK,GAAAL,EAAA,KAAAc;CAND,IAAAG,IAAYH,GAMMI;CAAA,AAAAlB,EAAA,OAAAK,IAIjBa,IAAAlB,EAAA,MAFwBkB,UAChBb,EAAaA,EAAYM,SAAU,IAC3CX,EAAA,KAAAK,GAAAL,EAAA,KAAAkB;CAFD,IAAAC,IAAaD,GAEKE;CAAA,AAAApB,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,KAEQF,UAAA;EACxBd,EAAgB,CAAA,CAAE;CAAC,GACpBN,EAAA,KAAAoB,KAAAA,IAAApB,EAAA;CAFD,IAAAuB,IAAcH,GAERI;CAAA,AAAAxB,EAAA,OAAAK,EAAAM,SAEqDa,IAAAxB,EAAA,OAA/BwB,UAAMnB,EAAYM,WAAY,GAACX,EAAA,KAAAK,EAAAM,QAAAX,EAAA,MAAAwB;CAA3D,IAAAC,IAAgBD,GAA4DE;CAU3E,OAV2E1B,EAAA,QAAAK,KAAAL,EAAA,QAAAyB,KAAAzB,EAAA,QAAAmB,KAAAnB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAa,KAErEa,IAAA;EAAAtB,OACEC;EAAYQ;EAAAI;EAAAM;EAAAJ;EAAAQ,MAKbtB,EAAYM;EAAOc;CAE3B,GAACzB,EAAA,MAAAK,GAAAL,EAAA,MAAAyB,GAAAzB,EAAA,MAAAmB,GAAAnB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAa,GAAAb,EAAA,MAAA0B,KAAAA,IAAA1B,EAAA,KARM0B;AAQN;AA9CQ,SAAAV,EAAAY,GAAA;CAAA,OAwBiBnB,EAAIoB,MAAO,GAAG,EAAE;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCRDTModelView.js","names":["JsonNode","Model","useCallback","useMemo","useSyncExternalStore","noop","useCRDTModelView","model","$","_c","t0","bb0","_temp","api","subscribe","t1","getSnapshot"],"sources":["../../../src/components/DataGrid/useCRDTModelView.ts"],"sourcesContent":["import { JsonNode, Model } from 'json-joy/lib/json-crdt'\nimport { useCallback, useMemo, useSyncExternalStore } from 'react'\nimport noop from 'lodash-es/noop'\n\nexport function useCRDTModelView<T extends JsonNode = JsonNode>(\n model: Model<T> | null | undefined,\n) {\n const subscribe = useMemo(() => {\n if (!model) return () => noop\n return model.api.subscribe\n }, [model])\n\n const getSnapshot = useCallback(() => {\n if (!model) return null\n return model.api.getSnapshot()\n }, [model])\n\n return useSyncExternalStore(subscribe, getSnapshot)\n}\n"],"mappings":";;;;AAIA,SAAOM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useCRDTModelView.js","names":["JsonNode","Model","useCallback","useMemo","useSyncExternalStore","noop","useCRDTModelView","model","$","_c","t0","bb0","_temp","api","subscribe","t1","getSnapshot"],"sources":["../../../src/components/DataGrid/useCRDTModelView.ts"],"sourcesContent":["import { JsonNode, Model } from 'json-joy/lib/json-crdt'\nimport { useCallback, useMemo, useSyncExternalStore } from 'react'\nimport noop from 'lodash-es/noop'\n\nexport function useCRDTModelView<T extends JsonNode = JsonNode>(\n model: Model<T> | null | undefined,\n) {\n const subscribe = useMemo(() => {\n if (!model) return () => noop\n return model.api.subscribe\n }, [model])\n\n const getSnapshot = useCallback(() => {\n if (!model) return null\n return model.api.getSnapshot()\n }, [model])\n\n return useSyncExternalStore(subscribe, getSnapshot)\n}\n"],"mappings":";;;;AAIA,SAAOM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAAC,KAAA;EAIH,IAAI,CAACJ,GAAK;GAAEG,IAAOE;GAAP,MAAAD;EAAiB;EAC7BD,IAAOH,EAAKM,IAAIC;CAAU;CAF5B,IAAAA,IAAkBJ,GAGPK;CAKA,OALAP,EAAA,OAAAD,IAKVQ,IAAAP,EAAA,MAH+BO,UACzBR,IACEA,EAAKM,IAAIG,YAAa,IADV,MAEpBR,EAAA,KAAAD,GAAAC,EAAA,KAAAO,IAEMX,EAAqBU,GAAWE,CAAW;AAAC;AAb9C,SAAAJ,IAAA;CAAA,OAIsBP;AAAI"}
|
|
@@ -22,6 +22,7 @@ interface WebSocketState {
|
|
|
22
22
|
websocketInstance: DataGridWebSocket | null;
|
|
23
23
|
connectionAttemptId: number | null;
|
|
24
24
|
connectionError: unknown;
|
|
25
|
+
websocketError: unknown;
|
|
25
26
|
}
|
|
26
27
|
export declare const initialWebSocketState: WebSocketState;
|
|
27
28
|
/**
|
|
@@ -84,6 +85,7 @@ export declare function useDataGridWebSocket(options?: UseDataGridWebSocketOptio
|
|
|
84
85
|
connect: (replicaId: number, sessionId: string) => void;
|
|
85
86
|
presignedUrl: string | null;
|
|
86
87
|
errorEstablishingWebsocketConnection: unknown;
|
|
88
|
+
websocketError: unknown;
|
|
87
89
|
hasSufficientData: boolean;
|
|
88
90
|
};
|
|
89
91
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridWebsocket.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAA;IAChC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAA;IACR,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useDataGridWebsocket.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAA;IAChC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAA;IACR,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAgHD,eAAO,MAAM,qBAAqB,EAAE,cAWnC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;CACnC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAsD1D,MAAM,aAAa,MAAM;;;;;EA+IxC"}
|
|
@@ -59,6 +59,10 @@ function c(e, t) {
|
|
|
59
59
|
connectionError: t.payload,
|
|
60
60
|
isConnecting: !1
|
|
61
61
|
};
|
|
62
|
+
case "WEBSOCKET_ERROR": return {
|
|
63
|
+
...e,
|
|
64
|
+
websocketError: t.payload
|
|
65
|
+
};
|
|
62
66
|
default: return e;
|
|
63
67
|
}
|
|
64
68
|
}
|
|
@@ -71,7 +75,8 @@ var l = {
|
|
|
71
75
|
connectionParams: null,
|
|
72
76
|
websocketInstance: null,
|
|
73
77
|
connectionAttemptId: null,
|
|
74
|
-
connectionError: null
|
|
78
|
+
connectionError: null,
|
|
79
|
+
websocketError: null
|
|
75
80
|
};
|
|
76
81
|
function u(u) {
|
|
77
82
|
let [d, f] = a(c, l), p = o(0), m = o(null), h = t(d.model), g = s(), { mutateAsync: _, isPending: v, error: y, presignedUrl: b, reset: x, clearPresignedUrl: S } = e(), C = n((e) => {
|
|
@@ -88,7 +93,11 @@ function u(u) {
|
|
|
88
93
|
onReplicaConnected: u?.onReplicaConnected,
|
|
89
94
|
onReplicaDisconnected: u?.onReplicaDisconnected,
|
|
90
95
|
onSyncStart: () => f({ type: "SYNC_STARTED" }),
|
|
91
|
-
onSyncEnd: () => f({ type: "SYNC_ENDED" })
|
|
96
|
+
onSyncEnd: () => f({ type: "SYNC_ENDED" }),
|
|
97
|
+
onError: (e) => f({
|
|
98
|
+
type: "WEBSOCKET_ERROR",
|
|
99
|
+
payload: e
|
|
100
|
+
})
|
|
92
101
|
}), [
|
|
93
102
|
C,
|
|
94
103
|
u?.onGridReady,
|
|
@@ -170,6 +179,7 @@ function u(u) {
|
|
|
170
179
|
connect: T,
|
|
171
180
|
presignedUrl: b,
|
|
172
181
|
errorEstablishingWebsocketConnection: d.connectionError ?? y,
|
|
182
|
+
websocketError: d.websocketError,
|
|
173
183
|
hasSufficientData: D(d.model)
|
|
174
184
|
};
|
|
175
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridWebsocket.js","names":["GridModel","useCRDTModelView","useCallback","useEffect","useMemo","useReducer","useRef","DataGridWebSocket","useEstablishWebsocketConnection","useDocumentVisibility","WebSocketState","model","hasCompletedInitialSync","isSyncing","isConnected","isConnecting","connectionParams","replicaId","sessionId","websocketInstance","connectionAttemptId","connectionError","WebSocketAction","type","payload","attemptId","websocketReducer","state","action","isSameConnection","initialWebSocketState","UseDataGridWebSocketOptions","onGridReady","onReplicaConnected","onReplicaDisconnected","useDataGridWebSocket","options","dispatch","connectionAttemptCounter","activeConnectionAttemptIdRef","modelSnapshot","isDocumentVisible","mutateAsync","establishWebsocketConnection","isPending","isEstablishingWebsocketConnection","error","errorEstablishingWebsocketConnection","presignedUrl","reset","resetEstablishWebsocketConnection","clearPresignedUrl","handleModelCreate","newModel","websocketOptionsWithoutModel","onStatusChange","open","onModelCreate","onSyncStart","onSyncEnd","connect","isDifferentConnection","current","websocketOptions","then","ws","disconnect","catch","err","console","previousConnectionParams","previous","isModelRenderable","api","getSnapshot","columnNames","columnOrder","rows","columnsReady","length","orderReady","rowsReady","hasSufficientData"],"sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"sourcesContent":["import { GridModel } from '@/components/DataGrid/DataGridTypes'\nimport { useCRDTModelView } from '@/components/DataGrid/useCRDTModelView'\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { DataGridWebSocket } from './DataGridWebSocket'\nimport { useEstablishWebsocketConnection } from '@/synapse-queries/grid/useEstablishWebsocketConnection'\nimport { useDocumentVisibility } from '@react-hookz/web'\n\n// State type\ninterface WebSocketState {\n model: GridModel | null\n /**\n * True if the WebSocket has finished the initial sync and can process CRDT updates.\n * Corresponds to the `GRID_READY` action.\n */\n hasCompletedInitialSync: boolean\n /**\n * True while a clock-sync exchange is in progress. Set on every outgoing\n * `synchronize-clock` and cleared on `ResponseComplete`, which the server\n * sends once per exchange to signal \"we're synchronized\" — not per request.\n */\n isSyncing: boolean\n isConnected: boolean\n isConnecting: boolean\n connectionParams: {\n replicaId: number\n sessionId: string\n } | null\n websocketInstance: DataGridWebSocket | null\n connectionAttemptId: number | null\n connectionError: unknown\n}\n\n// Action types\ntype WebSocketAction =\n | {\n type: 'CONNECT_REQUESTED'\n payload: { replicaId: number; sessionId: string; attemptId: number }\n }\n | { type: 'CONNECTION_ESTABLISHED'; payload: DataGridWebSocket }\n | { type: 'CONNECTION_OPENED' }\n | { type: 'CONNECTION_CLOSED' }\n | { type: 'GRID_READY' }\n | { type: 'SYNC_STARTED' }\n | { type: 'SYNC_ENDED' }\n | { type: 'MODEL_CREATED'; payload: GridModel }\n | { type: 'CONNECTION_ERROR'; payload: unknown }\n\n// Reducer function\nfunction websocketReducer(\n state: WebSocketState,\n action: WebSocketAction,\n): WebSocketState {\n switch (action.type) {\n case 'CONNECT_REQUESTED': {\n const isSameConnection =\n state.connectionParams &&\n state.connectionParams.replicaId === action.payload.replicaId &&\n state.connectionParams.sessionId === action.payload.sessionId\n\n return {\n ...state,\n connectionParams: {\n replicaId: action.payload.replicaId,\n sessionId: action.payload.sessionId,\n },\n hasCompletedInitialSync: isSameConnection\n ? state.hasCompletedInitialSync\n : false,\n isSyncing: false,\n model: isSameConnection ? state.model : null,\n isConnected: false,\n isConnecting: false,\n connectionAttemptId: action.payload.attemptId,\n connectionError: null,\n }\n }\n\n case 'CONNECTION_ESTABLISHED':\n return {\n ...state,\n websocketInstance: action.payload,\n isConnecting: true,\n }\n\n case 'CONNECTION_OPENED':\n return {\n ...state,\n isConnected: true,\n isConnecting: false,\n }\n\n case 'CONNECTION_CLOSED':\n return {\n ...state,\n isConnected: false,\n isConnecting: false,\n isSyncing: false,\n }\n\n case 'GRID_READY':\n return {\n ...state,\n hasCompletedInitialSync: true,\n }\n\n case 'SYNC_STARTED':\n return {\n ...state,\n isSyncing: true,\n }\n\n case 'SYNC_ENDED':\n return {\n ...state,\n isSyncing: false,\n }\n\n case 'MODEL_CREATED':\n return {\n ...state,\n model: action.payload,\n }\n\n case 'CONNECTION_ERROR':\n return {\n ...state,\n connectionError: action.payload,\n isConnecting: false,\n }\n\n default:\n return state\n }\n}\n\nexport const initialWebSocketState: WebSocketState = {\n model: null,\n hasCompletedInitialSync: false,\n isSyncing: false,\n isConnected: false,\n isConnecting: false,\n connectionParams: null,\n websocketInstance: null,\n connectionAttemptId: null,\n connectionError: null,\n}\n\n/**\n * Custom hook to manage a DataGrid WebSocket connection.\n * Handles:\n * - Fetching presigned URLs via a mutation hook\n * - Instantiating the DataGridWebSocket\n * - Connection status tracking\n * - Reconnection on disconnect\n * - Grid model updates and snapshot tracking\n */\nexport interface UseDataGridWebSocketOptions {\n onGridReady?: () => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n}\n\nexport function useDataGridWebSocket(options?: UseDataGridWebSocketOptions) {\n const [state, dispatch] = useReducer(websocketReducer, initialWebSocketState)\n\n const connectionAttemptCounter = useRef(0)\n const activeConnectionAttemptIdRef = useRef<number | null>(null)\n\n const modelSnapshot = useCRDTModelView(state.model)\n\n const isDocumentVisible = useDocumentVisibility()\n\n const {\n mutateAsync: establishWebsocketConnection,\n isPending: isEstablishingWebsocketConnection,\n error: errorEstablishingWebsocketConnection,\n presignedUrl,\n reset: resetEstablishWebsocketConnection,\n clearPresignedUrl,\n } = useEstablishWebsocketConnection()\n\n // Update model creation handler - only set model, don't reset to null on disconnect\n const handleModelCreate = useCallback(\n (newModel: GridModel) => {\n dispatch({ type: 'MODEL_CREATED', payload: newModel })\n },\n [dispatch],\n )\n\n // Memoize websocket options to prevent unnecessary re-renders (excluding model to avoid circular deps)\n const websocketOptionsWithoutModel = useMemo(\n () => ({\n onGridReady: () => {\n dispatch({ type: 'GRID_READY' })\n options?.onGridReady?.()\n },\n onStatusChange: (open: boolean) =>\n dispatch({ type: open ? 'CONNECTION_OPENED' : 'CONNECTION_CLOSED' }),\n onModelCreate: handleModelCreate,\n onReplicaConnected: options?.onReplicaConnected,\n onReplicaDisconnected: options?.onReplicaDisconnected,\n onSyncStart: () => dispatch({ type: 'SYNC_STARTED' }),\n onSyncEnd: () => dispatch({ type: 'SYNC_ENDED' }),\n }),\n [\n handleModelCreate,\n options?.onGridReady,\n options?.onReplicaConnected,\n options?.onReplicaDisconnected,\n ],\n )\n\n // Initiate (or re-initiate) a connection\n const connect = useCallback(\n (replicaId: number, sessionId: string) => {\n resetEstablishWebsocketConnection()\n\n const isDifferentConnection =\n !state.connectionParams ||\n state.connectionParams.replicaId !== replicaId ||\n state.connectionParams.sessionId !== sessionId\n\n if (isDifferentConnection) {\n clearPresignedUrl()\n }\n\n connectionAttemptCounter.current += 1\n const attemptId = connectionAttemptCounter.current\n\n dispatch({\n type: 'CONNECT_REQUESTED',\n payload: { replicaId, sessionId, attemptId },\n })\n },\n [\n dispatch,\n state.connectionParams,\n resetEstablishWebsocketConnection,\n clearPresignedUrl,\n connectionAttemptCounter,\n ],\n )\n\n /**\n * Establish the WebSocket connection when conditions are met.\n * Uses the current model state at connection time for reconnections to the same session.\n * Note: Changes to `model` alone do NOT trigger reconnection - only changes to connection\n * params, visibility, or connection status will trigger a new connection attempt.\n */\n useEffect(() => {\n // Don't attempt connection if conditions aren't met\n const { connectionParams, connectionAttemptId } = state\n\n if (\n !connectionParams ||\n connectionAttemptId === null ||\n state.isConnected ||\n state.isConnecting ||\n isEstablishingWebsocketConnection ||\n errorEstablishingWebsocketConnection ||\n state.connectionError ||\n !isDocumentVisible\n ) {\n return\n }\n\n activeConnectionAttemptIdRef.current = connectionAttemptId\n\n // Use current model state for reconnections to same session\n // (model may have been created by a previous connection)\n establishWebsocketConnection({\n replicaId: connectionParams.replicaId,\n sessionId: connectionParams.sessionId,\n websocketOptions: {\n ...websocketOptionsWithoutModel,\n model: state.model, // Current model at connection time\n },\n })\n .then(ws => {\n if (activeConnectionAttemptIdRef.current !== connectionAttemptId) {\n ws.disconnect()\n return\n }\n\n dispatch({ type: 'CONNECTION_ESTABLISHED', payload: ws })\n })\n .catch(err => {\n dispatch({ type: 'CONNECTION_ERROR', payload: err })\n console.error('Failed to establish WebSocket', err)\n })\n }, [\n state,\n state.connectionParams,\n state.connectionAttemptId,\n state.isConnected,\n state.isConnecting,\n isEstablishingWebsocketConnection,\n errorEstablishingWebsocketConnection,\n isDocumentVisible,\n establishWebsocketConnection,\n websocketOptionsWithoutModel,\n ])\n\n const previousConnectionParams =\n useRef<WebSocketState['connectionParams']>(null)\n\n useEffect(() => {\n const previous = previousConnectionParams.current\n const current = state.connectionParams\n\n if (\n previous &&\n current &&\n (previous.replicaId !== current.replicaId ||\n previous.sessionId !== current.sessionId)\n ) {\n state.websocketInstance?.disconnect()\n }\n\n previousConnectionParams.current = current\n }, [state.connectionParams, state.websocketInstance])\n\n useEffect(() => {\n return () => {\n state.websocketInstance?.disconnect()\n activeConnectionAttemptIdRef.current = null\n }\n }, [state.websocketInstance])\n\n /**\n * Checks if the model snapshot contains the minimum data required for rendering (columns and rows).\n */\n function isModelRenderable(model: GridModel | null) {\n if (!model || !model.api.getSnapshot() || !modelSnapshot) {\n return false\n }\n const { columnNames, columnOrder, rows } = modelSnapshot\n const columnsReady = columnNames.length >= 1\n const orderReady = columnOrder.length >= 1\n const rowsReady = rows.length >= 0\n return columnsReady && orderReady && rowsReady\n }\n\n return {\n isConnected: state.isConnected,\n websocketInstance: state.websocketInstance,\n hasCompletedInitialSync: state.hasCompletedInitialSync,\n isSyncing: state.isSyncing,\n model: state.model,\n modelSnapshot,\n connect,\n presignedUrl,\n errorEstablishingWebsocketConnection:\n state.connectionError ?? errorEstablishingWebsocketConnection,\n hasSufficientData: isModelRenderable(state.model),\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDataGridWebsocket.js","names":["GridModel","useCRDTModelView","useCallback","useEffect","useMemo","useReducer","useRef","DataGridWebSocket","useEstablishWebsocketConnection","useDocumentVisibility","WebSocketState","model","hasCompletedInitialSync","isSyncing","isConnected","isConnecting","connectionParams","replicaId","sessionId","websocketInstance","connectionAttemptId","connectionError","websocketError","WebSocketAction","type","payload","attemptId","websocketReducer","state","action","isSameConnection","initialWebSocketState","UseDataGridWebSocketOptions","onGridReady","onReplicaConnected","onReplicaDisconnected","useDataGridWebSocket","options","dispatch","connectionAttemptCounter","activeConnectionAttemptIdRef","modelSnapshot","isDocumentVisible","mutateAsync","establishWebsocketConnection","isPending","isEstablishingWebsocketConnection","error","errorEstablishingWebsocketConnection","presignedUrl","reset","resetEstablishWebsocketConnection","clearPresignedUrl","handleModelCreate","newModel","websocketOptionsWithoutModel","onStatusChange","open","onModelCreate","onSyncStart","onSyncEnd","onError","connect","isDifferentConnection","current","websocketOptions","then","ws","disconnect","catch","err","console","previousConnectionParams","previous","isModelRenderable","api","getSnapshot","columnNames","columnOrder","rows","columnsReady","length","orderReady","rowsReady","hasSufficientData"],"sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"sourcesContent":["import { GridModel } from '@/components/DataGrid/DataGridTypes'\nimport { useCRDTModelView } from '@/components/DataGrid/useCRDTModelView'\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { DataGridWebSocket } from './DataGridWebSocket'\nimport { useEstablishWebsocketConnection } from '@/synapse-queries/grid/useEstablishWebsocketConnection'\nimport { useDocumentVisibility } from '@react-hookz/web'\n\n// State type\ninterface WebSocketState {\n model: GridModel | null\n /**\n * True if the WebSocket has finished the initial sync and can process CRDT updates.\n * Corresponds to the `GRID_READY` action.\n */\n hasCompletedInitialSync: boolean\n /**\n * True while a clock-sync exchange is in progress. Set on every outgoing\n * `synchronize-clock` and cleared on `ResponseComplete`, which the server\n * sends once per exchange to signal \"we're synchronized\" — not per request.\n */\n isSyncing: boolean\n isConnected: boolean\n isConnecting: boolean\n connectionParams: {\n replicaId: number\n sessionId: string\n } | null\n websocketInstance: DataGridWebSocket | null\n connectionAttemptId: number | null\n connectionError: unknown\n websocketError: unknown\n}\n\n// Action types\ntype WebSocketAction =\n | {\n type: 'CONNECT_REQUESTED'\n payload: { replicaId: number; sessionId: string; attemptId: number }\n }\n | { type: 'CONNECTION_ESTABLISHED'; payload: DataGridWebSocket }\n | { type: 'CONNECTION_OPENED' }\n | { type: 'CONNECTION_CLOSED' }\n | { type: 'GRID_READY' }\n | { type: 'SYNC_STARTED' }\n | { type: 'SYNC_ENDED' }\n | { type: 'MODEL_CREATED'; payload: GridModel }\n | { type: 'CONNECTION_ERROR'; payload: unknown }\n | { type: 'WEBSOCKET_ERROR'; payload: unknown }\n\n// Reducer function\nfunction websocketReducer(\n state: WebSocketState,\n action: WebSocketAction,\n): WebSocketState {\n switch (action.type) {\n case 'CONNECT_REQUESTED': {\n const isSameConnection =\n state.connectionParams &&\n state.connectionParams.replicaId === action.payload.replicaId &&\n state.connectionParams.sessionId === action.payload.sessionId\n\n return {\n ...state,\n connectionParams: {\n replicaId: action.payload.replicaId,\n sessionId: action.payload.sessionId,\n },\n hasCompletedInitialSync: isSameConnection\n ? state.hasCompletedInitialSync\n : false,\n isSyncing: false,\n model: isSameConnection ? state.model : null,\n isConnected: false,\n isConnecting: false,\n connectionAttemptId: action.payload.attemptId,\n connectionError: null,\n }\n }\n\n case 'CONNECTION_ESTABLISHED':\n return {\n ...state,\n websocketInstance: action.payload,\n isConnecting: true,\n }\n\n case 'CONNECTION_OPENED':\n return {\n ...state,\n isConnected: true,\n isConnecting: false,\n }\n\n case 'CONNECTION_CLOSED':\n return {\n ...state,\n isConnected: false,\n isConnecting: false,\n isSyncing: false,\n }\n\n case 'GRID_READY':\n return {\n ...state,\n hasCompletedInitialSync: true,\n }\n\n case 'SYNC_STARTED':\n return {\n ...state,\n isSyncing: true,\n }\n\n case 'SYNC_ENDED':\n return {\n ...state,\n isSyncing: false,\n }\n\n case 'MODEL_CREATED':\n return {\n ...state,\n model: action.payload,\n }\n\n case 'CONNECTION_ERROR':\n return {\n ...state,\n connectionError: action.payload,\n isConnecting: false,\n }\n\n case 'WEBSOCKET_ERROR':\n return {\n ...state,\n websocketError: action.payload,\n }\n\n default:\n return state\n }\n}\n\nexport const initialWebSocketState: WebSocketState = {\n model: null,\n hasCompletedInitialSync: false,\n isSyncing: false,\n isConnected: false,\n isConnecting: false,\n connectionParams: null,\n websocketInstance: null,\n connectionAttemptId: null,\n connectionError: null,\n websocketError: null,\n}\n\n/**\n * Custom hook to manage a DataGrid WebSocket connection.\n * Handles:\n * - Fetching presigned URLs via a mutation hook\n * - Instantiating the DataGridWebSocket\n * - Connection status tracking\n * - Reconnection on disconnect\n * - Grid model updates and snapshot tracking\n */\nexport interface UseDataGridWebSocketOptions {\n onGridReady?: () => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n}\n\nexport function useDataGridWebSocket(options?: UseDataGridWebSocketOptions) {\n const [state, dispatch] = useReducer(websocketReducer, initialWebSocketState)\n\n const connectionAttemptCounter = useRef(0)\n const activeConnectionAttemptIdRef = useRef<number | null>(null)\n\n const modelSnapshot = useCRDTModelView(state.model)\n\n const isDocumentVisible = useDocumentVisibility()\n\n const {\n mutateAsync: establishWebsocketConnection,\n isPending: isEstablishingWebsocketConnection,\n error: errorEstablishingWebsocketConnection,\n presignedUrl,\n reset: resetEstablishWebsocketConnection,\n clearPresignedUrl,\n } = useEstablishWebsocketConnection()\n\n // Update model creation handler - only set model, don't reset to null on disconnect\n const handleModelCreate = useCallback(\n (newModel: GridModel) => {\n dispatch({ type: 'MODEL_CREATED', payload: newModel })\n },\n [dispatch],\n )\n\n // Memoize websocket options to prevent unnecessary re-renders (excluding model to avoid circular deps)\n const websocketOptionsWithoutModel = useMemo(\n () => ({\n onGridReady: () => {\n dispatch({ type: 'GRID_READY' })\n options?.onGridReady?.()\n },\n onStatusChange: (open: boolean) =>\n dispatch({ type: open ? 'CONNECTION_OPENED' : 'CONNECTION_CLOSED' }),\n onModelCreate: handleModelCreate,\n onReplicaConnected: options?.onReplicaConnected,\n onReplicaDisconnected: options?.onReplicaDisconnected,\n onSyncStart: () => dispatch({ type: 'SYNC_STARTED' }),\n onSyncEnd: () => dispatch({ type: 'SYNC_ENDED' }),\n onError: (error: unknown) =>\n dispatch({ type: 'WEBSOCKET_ERROR', payload: error }),\n }),\n [\n handleModelCreate,\n options?.onGridReady,\n options?.onReplicaConnected,\n options?.onReplicaDisconnected,\n ],\n )\n\n // Initiate (or re-initiate) a connection\n const connect = useCallback(\n (replicaId: number, sessionId: string) => {\n resetEstablishWebsocketConnection()\n\n const isDifferentConnection =\n !state.connectionParams ||\n state.connectionParams.replicaId !== replicaId ||\n state.connectionParams.sessionId !== sessionId\n\n if (isDifferentConnection) {\n clearPresignedUrl()\n }\n\n connectionAttemptCounter.current += 1\n const attemptId = connectionAttemptCounter.current\n\n dispatch({\n type: 'CONNECT_REQUESTED',\n payload: { replicaId, sessionId, attemptId },\n })\n },\n [\n dispatch,\n state.connectionParams,\n resetEstablishWebsocketConnection,\n clearPresignedUrl,\n connectionAttemptCounter,\n ],\n )\n\n /**\n * Establish the WebSocket connection when conditions are met.\n * Uses the current model state at connection time for reconnections to the same session.\n * Note: Changes to `model` alone do NOT trigger reconnection - only changes to connection\n * params, visibility, or connection status will trigger a new connection attempt.\n */\n useEffect(() => {\n // Don't attempt connection if conditions aren't met\n const { connectionParams, connectionAttemptId } = state\n\n if (\n !connectionParams ||\n connectionAttemptId === null ||\n state.isConnected ||\n state.isConnecting ||\n isEstablishingWebsocketConnection ||\n errorEstablishingWebsocketConnection ||\n state.connectionError ||\n !isDocumentVisible\n ) {\n return\n }\n\n activeConnectionAttemptIdRef.current = connectionAttemptId\n\n // Use current model state for reconnections to same session\n // (model may have been created by a previous connection)\n establishWebsocketConnection({\n replicaId: connectionParams.replicaId,\n sessionId: connectionParams.sessionId,\n websocketOptions: {\n ...websocketOptionsWithoutModel,\n model: state.model, // Current model at connection time\n },\n })\n .then(ws => {\n if (activeConnectionAttemptIdRef.current !== connectionAttemptId) {\n ws.disconnect()\n return\n }\n\n dispatch({ type: 'CONNECTION_ESTABLISHED', payload: ws })\n })\n .catch(err => {\n dispatch({ type: 'CONNECTION_ERROR', payload: err })\n console.error('Failed to establish WebSocket', err)\n })\n }, [\n state,\n state.connectionParams,\n state.connectionAttemptId,\n state.isConnected,\n state.isConnecting,\n isEstablishingWebsocketConnection,\n errorEstablishingWebsocketConnection,\n isDocumentVisible,\n establishWebsocketConnection,\n websocketOptionsWithoutModel,\n ])\n\n const previousConnectionParams =\n useRef<WebSocketState['connectionParams']>(null)\n\n useEffect(() => {\n const previous = previousConnectionParams.current\n const current = state.connectionParams\n\n if (\n previous &&\n current &&\n (previous.replicaId !== current.replicaId ||\n previous.sessionId !== current.sessionId)\n ) {\n state.websocketInstance?.disconnect()\n }\n\n previousConnectionParams.current = current\n }, [state.connectionParams, state.websocketInstance])\n\n useEffect(() => {\n return () => {\n state.websocketInstance?.disconnect()\n activeConnectionAttemptIdRef.current = null\n }\n }, [state.websocketInstance])\n\n /**\n * Checks if the model snapshot contains the minimum data required for rendering (columns and rows).\n */\n function isModelRenderable(model: GridModel | null) {\n if (!model || !model.api.getSnapshot() || !modelSnapshot) {\n return false\n }\n const { columnNames, columnOrder, rows } = modelSnapshot\n const columnsReady = columnNames.length >= 1\n const orderReady = columnOrder.length >= 1\n const rowsReady = rows.length >= 0\n return columnsReady && orderReady && rowsReady\n }\n\n return {\n isConnected: state.isConnected,\n websocketInstance: state.websocketInstance,\n hasCompletedInitialSync: state.hasCompletedInitialSync,\n isSyncing: state.isSyncing,\n model: state.model,\n modelSnapshot,\n connect,\n presignedUrl,\n errorEstablishingWebsocketConnection:\n state.connectionError ?? errorEstablishingWebsocketConnection,\n websocketError: state.websocketError,\n hasSufficientData: isModelRenderable(state.model),\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitializeGridConnection.js","names":["useCreateGridReplica","useCreateGridSession","useSynapseContext","CreateGridRequest","GridReplica","GridSession","useMutation","UseMutationOptions","CreateOrGetGridSessionInput","createGridRequest","sessionId","useCreateOrGetExistingGridSession","$","_c","mutateAsync","startGridSession","synapseClient","t0","mutationFn","t1","Error","gridSessionResponse","console","log","gridSession","gridServicesClient","getRepoV1GridSessionSessionId","useInitializeGridConnection","options","createOrGetSession","createReplicaId","sessionIdArg","session","createReplicaResponse","replica","t2","error","cause"],"sources":["../../../src/components/DataGrid/useInitializeGridConnection.ts"],"sourcesContent":["import {\n useCreateGridReplica,\n useCreateGridSession,\n} from '@/synapse-queries/grid/useGridSession'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n CreateGridRequest,\n GridReplica,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type CreateOrGetGridSessionInput = {\n createGridRequest?: CreateGridRequest\n sessionId?: string\n}\n\n/**\n * Create a new grid session or retrieve an existing one based on the provided SQL query or session ID.\n */\nfunction useCreateOrGetExistingGridSession() {\n const { mutateAsync: startGridSession } = useCreateGridSession()\n const { synapseClient } = useSynapseContext()\n return useMutation<GridSession, unknown, CreateOrGetGridSessionInput>({\n mutationFn: async ({ createGridRequest, sessionId }) => {\n if (!(createGridRequest || sessionId)) {\n throw new Error(\n 'Must provide either a CreateGridRequest or sessionId to create or get a grid session.',\n )\n }\n\n if (createGridRequest) {\n const gridSessionResponse = await startGridSession(createGridRequest)\n console.log('Grid session started:', gridSessionResponse)\n return gridSessionResponse.gridSession!\n }\n\n // The input is a sessionId, so retrieve the session object\n console.log(`Joining existing session ID: ${sessionId}`)\n return await synapseClient.gridServicesClient.getRepoV1GridSessionSessionId(\n {\n sessionId: sessionId!,\n },\n )\n },\n })\n}\n\n/**\n * Mutation to establish a grid connection by creating or getting an existing session and creating a replica.\n *\n * @param gridSqlOrSessionId - The SQL query or session ID to use for the grid connection.\n * @param schemaId - Optional schema ID to associate with the session.\n * @param options\n */\nexport default function useInitializeGridConnection(\n options?: Omit<\n UseMutationOptions<\n { session: GridSession; replica: GridReplica },\n unknown,\n CreateOrGetGridSessionInput\n >,\n 'mutationFn'\n >,\n) {\n const { mutateAsync: createOrGetSession } =\n useCreateOrGetExistingGridSession()\n const { mutateAsync: createReplicaId } = useCreateGridReplica()\n\n return useMutation<\n { session: GridSession; replica: GridReplica },\n unknown,\n CreateOrGetGridSessionInput\n >({\n ...options,\n mutationFn: async ({ createGridRequest, sessionId: sessionIdArg }) => {\n if (!(createGridRequest || sessionIdArg)) {\n throw new Error(\n 'Must provide either a SQL query, recordSetId, or sessionId to initialize grid connection.',\n )\n }\n const session = await createOrGetSession({\n createGridRequest,\n sessionId: sessionIdArg,\n })\n const sessionId = session.sessionId!\n try {\n const createReplicaResponse = await createReplicaId(sessionId)\n console.log('Replica created:', createReplicaResponse)\n const replica = createReplicaResponse.replica!\n\n return {\n session,\n replica,\n }\n } catch (error) {\n throw new Error('Error starting session:', { cause: error })\n }\n },\n })\n}\n"],"mappings":";;;;;AAoBA,SAAAW,IAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useInitializeGridConnection.js","names":["useCreateGridReplica","useCreateGridSession","useSynapseContext","CreateGridRequest","GridReplica","GridSession","useMutation","UseMutationOptions","CreateOrGetGridSessionInput","createGridRequest","sessionId","useCreateOrGetExistingGridSession","$","_c","mutateAsync","startGridSession","synapseClient","t0","mutationFn","t1","Error","gridSessionResponse","console","log","gridSession","gridServicesClient","getRepoV1GridSessionSessionId","useInitializeGridConnection","options","createOrGetSession","createReplicaId","sessionIdArg","session","createReplicaResponse","replica","t2","error","cause"],"sources":["../../../src/components/DataGrid/useInitializeGridConnection.ts"],"sourcesContent":["import {\n useCreateGridReplica,\n useCreateGridSession,\n} from '@/synapse-queries/grid/useGridSession'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n CreateGridRequest,\n GridReplica,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type CreateOrGetGridSessionInput = {\n createGridRequest?: CreateGridRequest\n sessionId?: string\n}\n\n/**\n * Create a new grid session or retrieve an existing one based on the provided SQL query or session ID.\n */\nfunction useCreateOrGetExistingGridSession() {\n const { mutateAsync: startGridSession } = useCreateGridSession()\n const { synapseClient } = useSynapseContext()\n return useMutation<GridSession, unknown, CreateOrGetGridSessionInput>({\n mutationFn: async ({ createGridRequest, sessionId }) => {\n if (!(createGridRequest || sessionId)) {\n throw new Error(\n 'Must provide either a CreateGridRequest or sessionId to create or get a grid session.',\n )\n }\n\n if (createGridRequest) {\n const gridSessionResponse = await startGridSession(createGridRequest)\n console.log('Grid session started:', gridSessionResponse)\n return gridSessionResponse.gridSession!\n }\n\n // The input is a sessionId, so retrieve the session object\n console.log(`Joining existing session ID: ${sessionId}`)\n return await synapseClient.gridServicesClient.getRepoV1GridSessionSessionId(\n {\n sessionId: sessionId!,\n },\n )\n },\n })\n}\n\n/**\n * Mutation to establish a grid connection by creating or getting an existing session and creating a replica.\n *\n * @param gridSqlOrSessionId - The SQL query or session ID to use for the grid connection.\n * @param schemaId - Optional schema ID to associate with the session.\n * @param options\n */\nexport default function useInitializeGridConnection(\n options?: Omit<\n UseMutationOptions<\n { session: GridSession; replica: GridReplica },\n unknown,\n CreateOrGetGridSessionInput\n >,\n 'mutationFn'\n >,\n) {\n const { mutateAsync: createOrGetSession } =\n useCreateOrGetExistingGridSession()\n const { mutateAsync: createReplicaId } = useCreateGridReplica()\n\n return useMutation<\n { session: GridSession; replica: GridReplica },\n unknown,\n CreateOrGetGridSessionInput\n >({\n ...options,\n mutationFn: async ({ createGridRequest, sessionId: sessionIdArg }) => {\n if (!(createGridRequest || sessionIdArg)) {\n throw new Error(\n 'Must provide either a SQL query, recordSetId, or sessionId to initialize grid connection.',\n )\n }\n const session = await createOrGetSession({\n createGridRequest,\n sessionId: sessionIdArg,\n })\n const sessionId = session.sessionId!\n try {\n const createReplicaResponse = await createReplicaId(sessionId)\n console.log('Replica created:', createReplicaResponse)\n const replica = createReplicaResponse.replica!\n\n return {\n session,\n replica,\n }\n } catch (error) {\n throw new Error('Error starting session:', { cause: error })\n }\n },\n })\n}\n"],"mappings":";;;;;AAoBA,SAAAW,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACE,EAAAC,aAAAC,MAA0Cd,EAAqB,GAC/D,EAAAe,qBAA0Bd,EAAkB,GAACe;CAuB5C,OAvB4CL,EAAA,OAAAG,KAAAH,EAAA,OAAAI,KACyBC,IAAA,EAAAC,YACxD,OAAAC,MAAA;EAAO,IAAA,EAAAV,sBAAAC,iBAAAS;EACjB,IAAI,EAAEV,KAAAC,IACJ,MAAUU,MACR,uFACF;EAGF,IAAIX,GAAiB;GACnB,IAAAY,IAA4B,MAAMN,EAAiBN,CAAiB;GACX,OAAzDa,QAAOC,IAAK,yBAAyBF,CAAmB,GACjDA,EAAmBG;EAAY;EAIgB,OAAxDF,QAAOC,IAAK,gCAAgCb,GAAW,GAChD,MAAMM,EAAaS,mBAAmBC,8BAC3C,EAAAhB,aAEA,CACF;CAAC,EAEL,GAACE,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,KAAAA,IAAAL,EAAA,IAtBMN,EAA+DW,CAsBrE;AAAC;AAUJ,SAAeU,EAAAC,GAAA;CAAA,IAAAhB,IAAAC,EAAA,CAAA,GAUb,EAAAC,aAAAe,MACElB,EAAkC,GACpC,EAAAG,aAAAgB,MAAyC9B,EAAqB,GAACiB;CAAA,AAAAL,EAAA,OAAAiB,KAAAjB,EAAA,OAAAkB,KAQjDb,IAAA,OAAAE,MAAA;EAAO,IAAA,EAAAV,sBAAAC,WAAAqB,MAAAZ;EACjB,IAAI,EAAEV,KAAAsB,IACJ,MAAUX,MACR,2FACF;EAEF,IAAAY,IAAgB,MAAMH,EAAmB;GAAApB;GAAAC,WAE5BqB;EACb,CAAC,GACDrB,IAAkBsB,EAAOtB;EACzB,IAAA;GACE,IAAAuB,IAA8B,MAAMH,EAAgBpB,CAAS;GAEf,OAD9CY,QAAOC,IAAK,oBAAoBU,CAAqB,GAG9C;IAAAD;IAAAE,SAFSD,EAAqBC;GAKrC;EAAC,SAAAC,GAAA;GAED,MAAUf,MAAM,2BAA2B,EAAAiB,OAASD,EAAM,CAAC;EAAC;CAC7D,GACFxB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAkB,GAAAlB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAO;CACF,OADEP,EAAA,OAAAgB,KAAAhB,EAAA,OAAAK,KAzBDE,IAAA;EAAA,GACGS;EAAOV,YACED;CAwBd,GAACL,EAAA,KAAAgB,GAAAhB,EAAA,KAAAK,GAAAL,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IA9BMN,EAILa,CA0BD;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithRecordSet.js","names":["useSynapseContext","GridRecordSetExportRequest","GridRecordSetExportResponse","SynapseClientError","waitForAsyncResult","useMutation","UseMutationOptions","MergeGridWithRecordSetInput","gridSessionId","useMergeGridWithRecordSet","options","$","_c","synapseClient","t0","t1","gridExportRequest","sessionId","concreteType","asyncJobId","gridServicesClient","postRepoV1GridExportRecordsetAsyncStart","gridRecordSetExportRequest","asyncJobResponse","asynchronousJobServicesClient","getRepoV1AsynchronousJobJobId","jobId","token","responseBody","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport {\n GridRecordSetExportRequest,\n GridRecordSetExportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type MergeGridWithRecordSetInput = {\n gridSessionId: string\n}\n\n/**\n * Query mutation hook for exporting a grid session back into a RecordSet.\n */\nexport default function useMergeGridWithRecordSet(\n options?: Omit<\n UseMutationOptions<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >({\n ...options,\n mutationFn: async ({ gridSessionId }) => {\n const gridExportRequest: GridRecordSetExportRequest = {\n sessionId: gridSessionId,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridRecordSetExportRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridExportRecordsetAsyncStart(\n { gridRecordSetExportRequest: gridExportRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as GridRecordSetExportResponse\n },\n })\n}\n"],"mappings":";;;;;;AAgBA,SAAeS,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useMergeGridWithRecordSet.js","names":["useSynapseContext","GridRecordSetExportRequest","GridRecordSetExportResponse","SynapseClientError","waitForAsyncResult","useMutation","UseMutationOptions","MergeGridWithRecordSetInput","gridSessionId","useMergeGridWithRecordSet","options","$","_c","synapseClient","t0","t1","gridExportRequest","sessionId","concreteType","asyncJobId","gridServicesClient","postRepoV1GridExportRecordsetAsyncStart","gridRecordSetExportRequest","asyncJobResponse","asynchronousJobServicesClient","getRepoV1AsynchronousJobJobId","jobId","token","responseBody","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport {\n GridRecordSetExportRequest,\n GridRecordSetExportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type MergeGridWithRecordSetInput = {\n gridSessionId: string\n}\n\n/**\n * Query mutation hook for exporting a grid session back into a RecordSet.\n */\nexport default function useMergeGridWithRecordSet(\n options?: Omit<\n UseMutationOptions<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >({\n ...options,\n mutationFn: async ({ gridSessionId }) => {\n const gridExportRequest: GridRecordSetExportRequest = {\n sessionId: gridSessionId,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridRecordSetExportRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridExportRecordsetAsyncStart(\n { gridRecordSetExportRequest: gridExportRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as GridRecordSetExportResponse\n },\n })\n}\n"],"mappings":";;;;;;AAgBA,SAAeS,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAUb,EAAAC,qBAA0Bb,EAAkB,GAACc;CAAA,AAAAH,EAAA,OAAAE,IA+B1CC,IAAAH,EAAA,MAvBWG,IAAA,OAAAC,MAAA;EAAO,IAAA,EAAAP,qBAAAO,GACjBC,IAAsD;GAAAC,WACzCT;GAAaU,cAEtB;EACJ,GAGAC,IACE,MAAMN,EAAaO,mBAAmBC,wCACpC,EAAAC,4BAA8BN,EAAkB,CAClD;EASD,QAEMO,MARwBnB,QAC7BS,EAAaW,8BAA8BC,8BACzC,EAAAC,OACSP,EAAUQ,MACnB,CACF,CACF,GAEuBC;CAA4C,GACpEjB,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAA,IAAAC;CACF,OADEJ,EAAA,OAAAD,KAAAC,EAAA,OAAAG,KAzBDC,IAAA;EAAA,GACGL;EAAOmB,YACEf;CAwBd,GAACH,EAAA,KAAAD,GAAAC,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IA9BMN,EAILU,CA0BD;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithSource.js","names":["useMergeGridWithTable","useMergeGridWithRecordSet","EntityType","GridRecordSetExportResponse","SynchronizeGridResponse","TableUpdateTransactionResponse","useMutation","UseMutationOptions","SynapseClientError","useSynchronizeGridSession","MergeGridWithSource","gridSessionId","sourceEntityId","sourceEntityType","MergeGridResult","type","data","useMergeGridWithSource","options","$","_c","mergeGridWithEntityView","mergeGridWithTable","mergeGridWithRecordSet","t0","t1","isEntityView","entityview","isRecordSet","recordset","mutateAsync","data_0","data_1","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithSource.ts"],"sourcesContent":["import useMergeGridWithTable from './useMergeGridWithTable'\nimport useMergeGridWithRecordSet from './useMergeGridWithRecordSet'\nimport {\n EntityType,\n GridRecordSetExportResponse,\n SynchronizeGridResponse,\n TableUpdateTransactionResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynchronizeGridSession } from '@/synapse-queries/grid/useGridSession'\n\nexport type MergeGridWithSource = {\n gridSessionId: string\n sourceEntityId?: string\n sourceEntityType?: EntityType\n}\n\nexport type MergeGridResult =\n | { type: 'entityview'; data: SynchronizeGridResponse }\n | {\n type: 'recordset'\n data: GridRecordSetExportResponse\n }\n | {\n type: 'table'\n data: TableUpdateTransactionResponse\n }\n\n/**\n * Single entrypoint to handle merging grid edits with source Synapse data.\n * Calls the appropriate mutation based on entity type:\n * - EntityView -> useSynchronizeGridSession\n * - TableEntity -> useMergeGridWithTable\n * - RecordSet -> useMergeGridWithRecordSet\n *\n * Returns a query mutation that handles merging for tables or recordsets.\n */\nexport default function useMergeGridWithSource(\n options?: Omit<\n UseMutationOptions<\n MergeGridResult,\n SynapseClientError,\n MergeGridWithSource\n >,\n 'mutationFn'\n >,\n) {\n // SynchronizeGridSession is the best option, but currently only supports EntityViews.\n // As support for other types is added, the other hooks should be replaced.\n const mergeGridWithEntityView = useSynchronizeGridSession()\n const mergeGridWithTable = useMergeGridWithTable()\n const mergeGridWithRecordSet = useMergeGridWithRecordSet()\n\n return useMutation<MergeGridResult, SynapseClientError, MergeGridWithSource>({\n ...options,\n mutationFn: async ({ gridSessionId, sourceEntityId, sourceEntityType }) => {\n const isEntityView = sourceEntityType === EntityType.entityview\n const isRecordSet = sourceEntityType === EntityType.recordset\n\n if (isEntityView) {\n const data = await mergeGridWithEntityView.mutateAsync({\n gridSessionId,\n })\n return { type: 'entityview', data }\n } else if (isRecordSet) {\n const data = await mergeGridWithRecordSet.mutateAsync({ gridSessionId })\n return { type: 'recordset', data }\n } else {\n const data = await mergeGridWithTable.mutateAsync({\n gridSessionId,\n sourceEntityId: sourceEntityId!,\n })\n return { type: 'table', data }\n }\n },\n })\n}\n"],"mappings":";;;;;;;AAsCA,SAAeiB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useMergeGridWithSource.js","names":["useMergeGridWithTable","useMergeGridWithRecordSet","EntityType","GridRecordSetExportResponse","SynchronizeGridResponse","TableUpdateTransactionResponse","useMutation","UseMutationOptions","SynapseClientError","useSynchronizeGridSession","MergeGridWithSource","gridSessionId","sourceEntityId","sourceEntityType","MergeGridResult","type","data","useMergeGridWithSource","options","$","_c","mergeGridWithEntityView","mergeGridWithTable","mergeGridWithRecordSet","t0","t1","isEntityView","entityview","isRecordSet","recordset","mutateAsync","data_0","data_1","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithSource.ts"],"sourcesContent":["import useMergeGridWithTable from './useMergeGridWithTable'\nimport useMergeGridWithRecordSet from './useMergeGridWithRecordSet'\nimport {\n EntityType,\n GridRecordSetExportResponse,\n SynchronizeGridResponse,\n TableUpdateTransactionResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynchronizeGridSession } from '@/synapse-queries/grid/useGridSession'\n\nexport type MergeGridWithSource = {\n gridSessionId: string\n sourceEntityId?: string\n sourceEntityType?: EntityType\n}\n\nexport type MergeGridResult =\n | { type: 'entityview'; data: SynchronizeGridResponse }\n | {\n type: 'recordset'\n data: GridRecordSetExportResponse\n }\n | {\n type: 'table'\n data: TableUpdateTransactionResponse\n }\n\n/**\n * Single entrypoint to handle merging grid edits with source Synapse data.\n * Calls the appropriate mutation based on entity type:\n * - EntityView -> useSynchronizeGridSession\n * - TableEntity -> useMergeGridWithTable\n * - RecordSet -> useMergeGridWithRecordSet\n *\n * Returns a query mutation that handles merging for tables or recordsets.\n */\nexport default function useMergeGridWithSource(\n options?: Omit<\n UseMutationOptions<\n MergeGridResult,\n SynapseClientError,\n MergeGridWithSource\n >,\n 'mutationFn'\n >,\n) {\n // SynchronizeGridSession is the best option, but currently only supports EntityViews.\n // As support for other types is added, the other hooks should be replaced.\n const mergeGridWithEntityView = useSynchronizeGridSession()\n const mergeGridWithTable = useMergeGridWithTable()\n const mergeGridWithRecordSet = useMergeGridWithRecordSet()\n\n return useMutation<MergeGridResult, SynapseClientError, MergeGridWithSource>({\n ...options,\n mutationFn: async ({ gridSessionId, sourceEntityId, sourceEntityType }) => {\n const isEntityView = sourceEntityType === EntityType.entityview\n const isRecordSet = sourceEntityType === EntityType.recordset\n\n if (isEntityView) {\n const data = await mergeGridWithEntityView.mutateAsync({\n gridSessionId,\n })\n return { type: 'entityview', data }\n } else if (isRecordSet) {\n const data = await mergeGridWithRecordSet.mutateAsync({ gridSessionId })\n return { type: 'recordset', data }\n } else {\n const data = await mergeGridWithTable.mutateAsync({\n gridSessionId,\n sourceEntityId: sourceEntityId!,\n })\n return { type: 'table', data }\n }\n },\n })\n}\n"],"mappings":";;;;;;;AAsCA,SAAeiB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAYbC,IAAgCZ,EAA0B,GAC1Da,IAA2BtB,EAAsB,GACjDuB,IAA+BtB,EAA0B,GAACuB;CAAA,AAAAL,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAAAJ,EAAA,OAAAG,KAI5CE,IAAA,OAAAC,MAAA;EAAO,IAAA,EAAAd,kBAAAC,mBAAAC,wBAAAY,GACjBC,IAAqBb,MAAqBX,EAAUyB,YACpDC,IAAoBf,MAAqBX,EAAU2B;EAc/C,OAZAH,IAIK;GAAAX,MAAQ;GAAYC,MAAAA,MAHRK,EAAuBS,YAAa,EAAAnB,iBAEvD,CAAC;EACiC,IACzBiB,IAEF;GAAAb,MAAQ;GAAWC,MAAEA,MADTO,EAAsBO,YAAa,EAAAnB,iBAAgB,CAAC;EACtC,IAM1B;GAAAI,MAAQ;GAAOC,MAAEA,MAJLM,EAAkBQ,YAAa;IAAAnB;IAAAC;GAGlD,CAAC;EAC4B;CAC9B,GACFO,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAG,GAAAH,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAM;CACF,OADEN,EAAA,OAAAD,KAAAC,EAAA,OAAAK,KArB0EC,IAAA;EAAA,GACxEP;EAAOe,YACET;CAoBd,GAACL,EAAA,KAAAD,GAAAC,EAAA,KAAAK,GAAAL,EAAA,KAAAM,KAAAA,IAAAN,EAAA,IAtBMb,EAAsEmB,CAsB5E;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithTable.js","names":["useExportGridAsCsv","useGetEntityQueryOptions","useTableUpdateTransaction","SynapseClientError","DownloadFromGridRequest","Entity","instanceOfTableEntity","TableUpdateTransactionRequest","TableUpdateTransactionResponse","useMutation","UseMutationOptions","useQueryClient","useMergeGridWithTable","options","$","_c","queryClient","mutateAsync","exportGridToCsv","updateTable","getEntityQueryOptions","t0","t1","gridSessionId","sourceEntityId","entity","fetchQuery","gridExportRequest","getDownloadFromGridRequestParamsForEntity","sessionId","gridExportResult","tableUpdateRequest","concreteType","entityId","changes","uploadFileHandleId","resultsFileHandleId","tableId","mutationFn","Omit","includeRowIdAndRowVersion","includeEtag"],"sources":["../../../src/components/DataGrid/useMergeGridWithTable.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { useGetEntityQueryOptions } from '@/synapse-queries/entity/useEntity'\nimport { useTableUpdateTransaction } from '@/synapse-queries/table/useTableUpdateTransaction'\nimport { SynapseClientError } from '@/utils/index'\nimport {\n DownloadFromGridRequest,\n Entity,\n instanceOfTableEntity,\n TableUpdateTransactionRequest,\n TableUpdateTransactionResponse,\n} from '@sage-bionetworks/synapse-client'\nimport {\n useMutation,\n UseMutationOptions,\n useQueryClient,\n} from '@tanstack/react-query'\n\n/**\n * Mutation hook that exports a grid session to CSV and applies the changes to a Synapse table.\n */\nexport default function useMergeGridWithTable(\n options?: Omit<\n UseMutationOptions<\n TableUpdateTransactionResponse,\n SynapseClientError,\n { gridSessionId: string; sourceEntityId: string }\n >,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { mutateAsync: exportGridToCsv } = useExportGridAsCsv()\n const { mutateAsync: updateTable } = useTableUpdateTransaction()\n const getEntityQueryOptions = useGetEntityQueryOptions()\n return useMutation<\n TableUpdateTransactionResponse,\n SynapseClientError,\n { gridSessionId: string; sourceEntityId: string }\n >({\n ...options,\n mutationFn: async ({ gridSessionId, sourceEntityId }) => {\n // First, get the type of the source entity. The request body for the export varies based on the entity type.\n const entity = await queryClient.fetchQuery(\n getEntityQueryOptions(sourceEntityId),\n )\n\n const gridExportRequest: DownloadFromGridRequest = {\n ...getDownloadFromGridRequestParamsForEntity(entity),\n sessionId: gridSessionId,\n }\n\n const gridExportResult = await exportGridToCsv(gridExportRequest)\n\n const tableUpdateRequest: TableUpdateTransactionRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableUpdateTransactionRequest',\n entityId: sourceEntityId,\n changes: [\n {\n uploadFileHandleId: gridExportResult.resultsFileHandleId,\n tableId: sourceEntityId,\n concreteType:\n 'org.sagebionetworks.repo.model.table.UploadToTableRequest',\n },\n ],\n }\n return updateTable(tableUpdateRequest)\n },\n })\n}\n\nexport function getDownloadFromGridRequestParamsForEntity(\n entity: Entity,\n): Omit<DownloadFromGridRequest, 'sessionId'> {\n if (instanceOfTableEntity(entity)) {\n return {\n includeRowIdAndRowVersion: true,\n includeEtag: false,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n }\n } else {\n return {\n includeRowIdAndRowVersion: true,\n includeEtag: true,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n }\n }\n}\n"],"mappings":";;;;;;;AAoBA,SAAeY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useMergeGridWithTable.js","names":["useExportGridAsCsv","useGetEntityQueryOptions","useTableUpdateTransaction","SynapseClientError","DownloadFromGridRequest","Entity","instanceOfTableEntity","TableUpdateTransactionRequest","TableUpdateTransactionResponse","useMutation","UseMutationOptions","useQueryClient","useMergeGridWithTable","options","$","_c","queryClient","mutateAsync","exportGridToCsv","updateTable","getEntityQueryOptions","t0","t1","gridSessionId","sourceEntityId","entity","fetchQuery","gridExportRequest","getDownloadFromGridRequestParamsForEntity","sessionId","gridExportResult","tableUpdateRequest","concreteType","entityId","changes","uploadFileHandleId","resultsFileHandleId","tableId","mutationFn","Omit","includeRowIdAndRowVersion","includeEtag"],"sources":["../../../src/components/DataGrid/useMergeGridWithTable.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { useGetEntityQueryOptions } from '@/synapse-queries/entity/useEntity'\nimport { useTableUpdateTransaction } from '@/synapse-queries/table/useTableUpdateTransaction'\nimport { SynapseClientError } from '@/utils/index'\nimport {\n DownloadFromGridRequest,\n Entity,\n instanceOfTableEntity,\n TableUpdateTransactionRequest,\n TableUpdateTransactionResponse,\n} from '@sage-bionetworks/synapse-client'\nimport {\n useMutation,\n UseMutationOptions,\n useQueryClient,\n} from '@tanstack/react-query'\n\n/**\n * Mutation hook that exports a grid session to CSV and applies the changes to a Synapse table.\n */\nexport default function useMergeGridWithTable(\n options?: Omit<\n UseMutationOptions<\n TableUpdateTransactionResponse,\n SynapseClientError,\n { gridSessionId: string; sourceEntityId: string }\n >,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { mutateAsync: exportGridToCsv } = useExportGridAsCsv()\n const { mutateAsync: updateTable } = useTableUpdateTransaction()\n const getEntityQueryOptions = useGetEntityQueryOptions()\n return useMutation<\n TableUpdateTransactionResponse,\n SynapseClientError,\n { gridSessionId: string; sourceEntityId: string }\n >({\n ...options,\n mutationFn: async ({ gridSessionId, sourceEntityId }) => {\n // First, get the type of the source entity. The request body for the export varies based on the entity type.\n const entity = await queryClient.fetchQuery(\n getEntityQueryOptions(sourceEntityId),\n )\n\n const gridExportRequest: DownloadFromGridRequest = {\n ...getDownloadFromGridRequestParamsForEntity(entity),\n sessionId: gridSessionId,\n }\n\n const gridExportResult = await exportGridToCsv(gridExportRequest)\n\n const tableUpdateRequest: TableUpdateTransactionRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.TableUpdateTransactionRequest',\n entityId: sourceEntityId,\n changes: [\n {\n uploadFileHandleId: gridExportResult.resultsFileHandleId,\n tableId: sourceEntityId,\n concreteType:\n 'org.sagebionetworks.repo.model.table.UploadToTableRequest',\n },\n ],\n }\n return updateTable(tableUpdateRequest)\n },\n })\n}\n\nexport function getDownloadFromGridRequestParamsForEntity(\n entity: Entity,\n): Omit<DownloadFromGridRequest, 'sessionId'> {\n if (instanceOfTableEntity(entity)) {\n return {\n includeRowIdAndRowVersion: true,\n includeEtag: false,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n }\n } else {\n return {\n includeRowIdAndRowVersion: true,\n includeEtag: true,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n }\n }\n}\n"],"mappings":";;;;;;;AAoBA,SAAeY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAUbC,IAAoBL,EAAe,GACnC,EAAAM,aAAAC,MAAyClB,EAAmB,GAC5D,EAAAiB,aAAAE,MAAqCjB,EAA0B,GAC/DkB,IAA8BnB,EAAyB,GAACoB;CAAA,AAAAP,EAAA,OAAAI,KAAAJ,EAAA,OAAAM,KAAAN,EAAA,OAAAE,KAAAF,EAAA,OAAAK,KAO1CE,IAAA,OAAAC,MAAA;EAAO,IAAA,EAAAC,kBAAAC,sBAAAF;EAyBhB,OACMH,EAAYY;GAbuCC,cAEtD;GAAoEC,UAC5DT;GAAcU,SACf,CACP;IAAAC,qBACsBL,MARKZ,EAAgBS;KALI,GAC9CC,EAA0CH,MAL1BT,EAAWU,WAC9BN,EAAsBI,CAAc,CACtC,CAGqD;KAACK,WACzCN;IAGkCI,CAAiB,GAQtBS;IAAoBC,SAC/Cb;IAAcQ,cAErB;GACJ,CAAC;EAGcD,CAAkB;CAAC,GACvCjB,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,GAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAK,GAAAL,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ;CACF,OADER,EAAA,OAAAD,KAAAC,EAAA,OAAAO,KA7BDC,IAAA;EAAA,GACGT;EAAOyB,YACEjB;CA4Bd,GAACP,EAAA,KAAAD,GAAAC,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAlCML,EAILa,CA8BD;AAAC;AAGJ,SAAgBM,EACdH,GAC4C;CAS1C,OAREnB,EAAsBmB,CAAM,IACvB;EACLe,2BAA2B;EAC3BC,aAAa;EACbT,cACE;CACJ,IAEO;EACLQ,2BAA2B;EAC3BC,aAAa;EACbT,cACE;CACJ;AAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGridUtils.js","names":["SYNAPSE_ENTITY_ID_REGEX","DataGridRow","Operation","QueryInput","GRID_ROW_REACT_KEY_PROPERTY","parseQueryInput","input","trimmedInput","trim","type","toUpperCase","startsWith","test","rowsAreIdentical","a","b","isDataKey","key","aKeys","Object","keys","filter","bKeys","length","aVal","bVal","isNullish","v","undefined","is","removeNoOpOperations","newValue","rowValues","operations","isNoop","operation","oldVal","slice","fromRowIndex","toRowIndex","newVal","comparisonResults","map","oldItem","idx","every","Boolean","op"],"sources":["../../../../src/components/DataGrid/utils/DataGridUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { DataGridRow, Operation, QueryInput } from '../DataGridTypes'\n\n// We embed a value into the in row data passed to react-datasheet-grid for use as a render optimization\nexport const GRID_ROW_REACT_KEY_PROPERTY = '__rowKey'\n\n// Query Input can either be an empty string, a SQL query, or a session ID\nexport const parseQueryInput = (input: string): QueryInput => {\n const trimmedInput = input.trim()\n if (!trimmedInput) {\n return { type: 'empty', input: '' }\n } else if (trimmedInput.toUpperCase().startsWith('SELECT')) {\n return { type: 'sql', input: trimmedInput }\n } else if (SYNAPSE_ENTITY_ID_REGEX.test(trimmedInput)) {\n return { type: 'recordSetId', input: trimmedInput }\n } else if (/^[A-Za-z]\\w*=+$/.test(trimmedInput)) {\n return { type: 'sessionId', input: trimmedInput }\n }\n return { type: 'unknown', input: trimmedInput }\n}\n\nexport function rowsAreIdentical(a: DataGridRow, b: DataGridRow): boolean {\n const isDataKey = (key: string) => !key.startsWith('__')\n const aKeys = Object.keys(a).filter(isDataKey)\n const bKeys = Object.keys(b).filter(isDataKey)\n if (aKeys.length !== bKeys.length) return false\n for (const key of aKeys) {\n const aVal = a[key] as string | number | boolean | null | undefined\n const bVal = b[key] as string | number | boolean | null | undefined\n // Treat null, undefined, and empty string as equivalent\n const isNullish = (v: unknown) => v === null || v === undefined || v === ''\n if (isNullish(aVal) && isNullish(bVal)) continue\n if (!Object.is(aVal, bVal)) return false\n }\n return true\n}\n\n/**\n * Remove no-op operations created by react-datasheet-grid that would result in invalid or undesired changes to the json-joy CRDT model\n * @param newValue\n * @param rowValues\n * @param operations\n */\nexport function removeNoOpOperations(\n newValue: DataGridRow[],\n rowValues: DataGridRow[],\n operations: Operation[],\n) {\n function isNoop(operation: Operation): boolean {\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(\n operation.fromRowIndex,\n operation.toRowIndex,\n )\n const newVal = newValue.slice(\n operation.fromRowIndex,\n operation.toRowIndex,\n )\n\n const comparisonResults = oldVal.map((oldItem, idx) =>\n rowsAreIdentical(oldItem, newVal[idx]),\n )\n return comparisonResults.every(Boolean)\n }\n return false\n }\n\n return operations.filter(op => !isNoop(op))\n}\n"],"mappings":";;AAIA,IAAaI,IAA8B,YAG9BC,KAAmBC,MAA8B;CAC5D,IAAMC,IAAeD,EAAME,
|
|
1
|
+
{"version":3,"file":"DataGridUtils.js","names":["SYNAPSE_ENTITY_ID_REGEX","DataGridRow","Operation","QueryInput","GRID_ROW_REACT_KEY_PROPERTY","parseQueryInput","input","trimmedInput","trim","type","toUpperCase","startsWith","test","rowsAreIdentical","a","b","isDataKey","key","aKeys","Object","keys","filter","bKeys","length","aVal","bVal","isNullish","v","undefined","is","removeNoOpOperations","newValue","rowValues","operations","isNoop","operation","oldVal","slice","fromRowIndex","toRowIndex","newVal","comparisonResults","map","oldItem","idx","every","Boolean","op"],"sources":["../../../../src/components/DataGrid/utils/DataGridUtils.ts"],"sourcesContent":["import { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { DataGridRow, Operation, QueryInput } from '../DataGridTypes'\n\n// We embed a value into the in row data passed to react-datasheet-grid for use as a render optimization\nexport const GRID_ROW_REACT_KEY_PROPERTY = '__rowKey'\n\n// Query Input can either be an empty string, a SQL query, or a session ID\nexport const parseQueryInput = (input: string): QueryInput => {\n const trimmedInput = input.trim()\n if (!trimmedInput) {\n return { type: 'empty', input: '' }\n } else if (trimmedInput.toUpperCase().startsWith('SELECT')) {\n return { type: 'sql', input: trimmedInput }\n } else if (SYNAPSE_ENTITY_ID_REGEX.test(trimmedInput)) {\n return { type: 'recordSetId', input: trimmedInput }\n } else if (/^[A-Za-z]\\w*=+$/.test(trimmedInput)) {\n return { type: 'sessionId', input: trimmedInput }\n }\n return { type: 'unknown', input: trimmedInput }\n}\n\nexport function rowsAreIdentical(a: DataGridRow, b: DataGridRow): boolean {\n const isDataKey = (key: string) => !key.startsWith('__')\n const aKeys = Object.keys(a).filter(isDataKey)\n const bKeys = Object.keys(b).filter(isDataKey)\n if (aKeys.length !== bKeys.length) return false\n for (const key of aKeys) {\n const aVal = a[key] as string | number | boolean | null | undefined\n const bVal = b[key] as string | number | boolean | null | undefined\n // Treat null, undefined, and empty string as equivalent\n const isNullish = (v: unknown) => v === null || v === undefined || v === ''\n if (isNullish(aVal) && isNullish(bVal)) continue\n if (!Object.is(aVal, bVal)) return false\n }\n return true\n}\n\n/**\n * Remove no-op operations created by react-datasheet-grid that would result in invalid or undesired changes to the json-joy CRDT model\n * @param newValue\n * @param rowValues\n * @param operations\n */\nexport function removeNoOpOperations(\n newValue: DataGridRow[],\n rowValues: DataGridRow[],\n operations: Operation[],\n) {\n function isNoop(operation: Operation): boolean {\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(\n operation.fromRowIndex,\n operation.toRowIndex,\n )\n const newVal = newValue.slice(\n operation.fromRowIndex,\n operation.toRowIndex,\n )\n\n const comparisonResults = oldVal.map((oldItem, idx) =>\n rowsAreIdentical(oldItem, newVal[idx]),\n )\n return comparisonResults.every(Boolean)\n }\n return false\n }\n\n return operations.filter(op => !isNoop(op))\n}\n"],"mappings":";;AAIA,IAAaI,IAA8B,YAG9BC,KAAmBC,MAA8B;CAC5D,IAAMC,IAAeD,EAAME,KAAK;CAUhC,OATKD,IAEMA,EAAaG,YAAY,EAAEC,WAAW,QAAQ,IAChD;EAAEF,MAAM;EAAOH,OAAOC;CAAa,IACjCP,EAAwBY,KAAKL,CAAY,IAC3C;EAAEE,MAAM;EAAeH,OAAOC;CAAa,IACzC,kBAAkBK,KAAKL,CAAY,IACrC;EAAEE,MAAM;EAAaH,OAAOC;CAAa,IAE3C;EAAEE,MAAM;EAAWH,OAAOC;CAAa,IARrC;EAAEE,MAAM;EAASH,OAAO;CAAG;AAStC;AAEA,SAAgBO,EAAiBC,GAAgBC,GAAyB;CACxE,IAAMC,KAAaC,MAAgB,CAACA,EAAIN,WAAW,IAAI,GACjDO,IAAQC,OAAOC,KAAKN,CAAC,EAAEO,OAAOL,CAAS,GACvCM,IAAQH,OAAOC,KAAKL,CAAC,EAAEM,OAAOL,CAAS;CAC7C,IAAIE,EAAMK,WAAWD,EAAMC,QAAQ,OAAO;CAC1C,KAAK,IAAMN,KAAOC,GAAO;EACvB,IAAMM,IAAOV,EAAEG,IACTQ,IAAOV,EAAEE,IAETS,KAAaC,MAAeA,KAAM,QAA2BA,MAAM;EACrED,QAAUF,CAAI,KAAKE,EAAUD,CAAI,MACjC,CAACN,OAAOU,GAAGL,GAAMC,CAAI,GAAG,OAAO;CACrC;CACA,OAAO;AACT;AAQA,SAAgBK,EACdC,GACAC,GACAC,GACA;CACA,SAASC,EAAOC,GAA+B;EAC7C,IAAIA,EAAU1B,SAAS,UAAU;GAC/B,IAAM2B,IAASJ,EAAUK,MACvBF,EAAUG,cACVH,EAAUI,UACZ,GACMC,IAAST,EAASM,MACtBF,EAAUG,cACVH,EAAUI,UACZ;GAKA,OAH0BH,EAAOM,KAAKC,GAASC,MAC7C/B,EAAiB8B,GAASH,EAAOI,EAAI,CAEhCH,EAAkBI,MAAMC,OAAO;EACxC;EACA,OAAO;CACT;CAEA,OAAOb,EAAWZ,QAAO0B,MAAM,CAACb,EAAOa,CAAE,CAAC;AAC5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageCounter.js","names":["MAX_MESSAGE_COUNTER_VALUE","Math","pow","MessageCounter","counter","constructor","getNext","current"],"sources":["../../../../src/components/DataGrid/utils/MessageCounter.ts"],"sourcesContent":["/**\n * The message counter provides a unique integer that increments with each JSON-Rx message sent that must associate\n * a request with a response.\n */\n\nconst MAX_MESSAGE_COUNTER_VALUE = Math.pow(2, 31) - 1\n\nexport default class MessageCounter {\n private counter: number\n\n constructor() {\n this.counter = 1\n }\n\n public getNext(): number {\n const current = this.counter\n this.counter += 1\n if (this.counter > MAX_MESSAGE_COUNTER_VALUE) {\n // The server encodes this as a signed 32-bit integer, we need to ensure we don't exceed that limit.'\n this.counter = 1\n }\n return current\n }\n}\n"],"mappings":";AAKA,IAAMA,IAAqC,KAAG,KAAM,GAE/BG,IAArB,MAAoC;CAClC;CAEAE,cAAc;
|
|
1
|
+
{"version":3,"file":"MessageCounter.js","names":["MAX_MESSAGE_COUNTER_VALUE","Math","pow","MessageCounter","counter","constructor","getNext","current"],"sources":["../../../../src/components/DataGrid/utils/MessageCounter.ts"],"sourcesContent":["/**\n * The message counter provides a unique integer that increments with each JSON-Rx message sent that must associate\n * a request with a response.\n */\n\nconst MAX_MESSAGE_COUNTER_VALUE = Math.pow(2, 31) - 1\n\nexport default class MessageCounter {\n private counter: number\n\n constructor() {\n this.counter = 1\n }\n\n public getNext(): number {\n const current = this.counter\n this.counter += 1\n if (this.counter > MAX_MESSAGE_COUNTER_VALUE) {\n // The server encodes this as a signed 32-bit integer, we need to ensure we don't exceed that limit.'\n this.counter = 1\n }\n return current\n }\n}\n"],"mappings":";AAKA,IAAMA,IAAqC,KAAG,KAAM,GAE/BG,IAArB,MAAoC;CAClC;CAEAE,cAAc;EACZ,KAAKD,UAAU;CACjB;CAEA,UAAyB;EACvB,IAAMG,IAAU,KAAKH;EAMrB,OALA,KAAKA,WAAW,GACZ,KAAKA,UAAUJ,MAEjB,KAAKI,UAAU,IAEVG;CACT;AACF"}
|