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":"useGridAutocompleteState.js","names":["useCallback","useEffect","useLayoutEffect","useRef","useState","UseGridAutocompleteStateProps","active","stopEditing","opts","nextRow","onDeactivate","UseGridAutocompleteStateReturn","menuIsOpen","setMenuIsOpen","open","inputRef","React","RefObject","HTMLInputElement","activeRef","handleListboxMouseDown","event","MouseEvent","notifyOptionCommitted","handleMenuOpen","handleClose","useGridAutocompleteState","t0","$","_c","optionMouseDownRef","t1","current","onDeactivateRef","t2","stopEditingRef","t3","t4","t5","focus","blur","t6","Symbol","for","preventDefault","target","Element","closest","t7","t8","t9","t10"],"sources":["../../../../src/components/DataGrid/columns/useGridAutocompleteState.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nexport type UseGridAutocompleteStateProps = {\n active: boolean\n /**\n * `stopEditing` from react-datasheet-grid's CellProps. The hook ref-stabilizes\n * this internally, so callers can pass it directly without memoizing.\n */\n stopEditing?: (opts?: { nextRow: boolean }) => void\n /**\n * Called when the cell transitions from active to inactive and there is no\n * pending option click in progress (i.e. the portal-click guard is not set).\n * Store any free-text commit logic here. The callback is ref-stabilized inside\n * the hook, so it may freely capture local state without becoming a stale closure.\n */\n onDeactivate?: () => void\n}\n\nexport type UseGridAutocompleteStateReturn = {\n menuIsOpen: boolean\n setMenuIsOpen: (open: boolean) => void\n /** Ref to attach to the focusable input element for programmatic focus/blur. */\n inputRef: React.RefObject<HTMLInputElement | null>\n /**\n * Always reflects the current `active` value. Safe to read inside event\n * handler closures (e.g. onChange) without a stale capture.\n */\n activeRef: React.RefObject<boolean>\n /** Pass to `slotProps.listbox.onMouseDown` on the MUI Autocomplete. */\n handleListboxMouseDown: (event: React.MouseEvent) => void\n /**\n * Call at the top of every `onChange` handler to signal that a pending\n * option click has been committed. Clears the portal-click guard so that\n * subsequent active→false transitions can proceed normally.\n */\n notifyOptionCommitted: () => void\n /** Pass to the Autocomplete `onOpen` prop. */\n handleMenuOpen: () => void\n /**\n * Pass to the Autocomplete `onClose` prop. Clears the portal-click guard and\n * closes the menu, then stops editing without advancing to the next row.\n */\n handleClose: () => void\n}\n\n/**\n * Manages the shared focus/blur/menu state needed by grid autocomplete cell\n * components that are built on top of react-datasheet-grid.\n *\n * Both AutocompleteColumn and AutocompleteMultipleEnumColumn use the same\n * three-part pattern:\n * 1. When `active` becomes true → focus the input.\n * 2. When `active` becomes false with no pending option click → blur + close menu.\n * 3. The dropdown renders in a portal outside the grid cell. react-datasheet-grid\n * sees the mousedown as an outside click and fires active=false before onClick\n * → onChange. The `optionMouseDownRef` guard defers step 2 until the click\n * completes and onChange resets the ref.\n */\nexport function useGridAutocompleteState({\n active,\n stopEditing,\n onDeactivate,\n}: UseGridAutocompleteStateProps): UseGridAutocompleteStateReturn {\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const optionMouseDownRef = useRef(false)\n\n // Always reflects the latest `active` value — safe to read in closures.\n const activeRef = useRef(active)\n useLayoutEffect(() => {\n activeRef.current = active\n })\n\n // Ref-stabilize callbacks so effects/handlers never need them in deps arrays,\n // yet always call the latest versions (avoiding stale closures).\n const onDeactivateRef = useRef(onDeactivate)\n useLayoutEffect(() => {\n onDeactivateRef.current = onDeactivate\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n useEffect(() => {\n if (active) {\n inputRef.current?.focus()\n } else if (!optionMouseDownRef.current) {\n // Only close when there is no pending option click; if there is one,\n // onChange will reset optionMouseDownRef and handle cleanup itself.\n setMenuIsOpen(false)\n inputRef.current?.blur()\n onDeactivateRef.current?.()\n }\n // Intentionally only re-runs when `active` changes.\n }, [active])\n\n const handleListboxMouseDown = useCallback((event: React.MouseEvent) => {\n // Prevent the input from blurring when clicking inside the listbox. MUI's\n // internal listbox onMouseDown does the same, but our slotProps replaces it,\n // so we must call preventDefault() here to preserve that behavior.\n event.preventDefault()\n // Only signal a pending option click when the mousedown actually targets an\n // option element. Clicks on scrollbars or listbox padding would otherwise\n // leave the guard stuck true (onChange never fires for non-selections),\n // causing later active→false transitions to skip blur/onDeactivate cleanup.\n if ((event.target as Element).closest('[role=\"option\"]')) {\n optionMouseDownRef.current = true\n }\n }, [])\n\n const notifyOptionCommitted = useCallback(() => {\n optionMouseDownRef.current = false\n }, [])\n\n const handleMenuOpen = useCallback(() => {\n setMenuIsOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n // Clear the guard in case a mousedown on an option was abandoned before\n // onChange could fire (e.g. drag-off).\n optionMouseDownRef.current = false\n setMenuIsOpen(false)\n stopEditingRef.current?.({ nextRow: false })\n }, [])\n\n return {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n }\n}\n"],"mappings":";;;AAgEA,SAAO0B,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAkC,EAAAvB,WAAAC,gBAAAG,oBAAAiB,GAKvCZ,IAAiBZ,EAAyB,KAAK,EAC/C,CAAAS,GAAAC,KAAoCT,EAAS,GAAM,EACnD0B,IAA2B3B,EAAO,GAAM,EAGxCgB,IAAkBhB,EAAOG,EAAO,EAAAyB;AAChC7B,CADgC0B,EAAA,OAAAtB,IAG/ByB,IAAAH,EAAA,MAFeG,UAAA;AACdZ,IAASa,UAAW1B;IACrBsB,EAAA,KAAAtB,GAAAsB,EAAA,KAAAG,IAFD7B,EAAgB6B,EAEd;CAIF,IAAAE,IAAwB9B,EAAOO,EAAa,EAAAwB;AAC5ChC,CAD4C0B,EAAA,OAAAlB,IAG3CwB,IAAAN,EAAA,MAFeM,UAAA;AACdD,IAAeD,UAAWtB;IAC3BkB,EAAA,KAAAlB,GAAAkB,EAAA,KAAAM,IAFDhC,EAAgBgC,EAEd;CACF,IAAAC,IAAuBhC,EAAOI,EAAY,EAAA6B;AAC1ClC,CAD0C0B,EAAA,OAAArB,IAGzC6B,IAAAR,EAAA,MAFeQ,UAAA;AACdD,IAAcH,UAAWzB;IAC1BqB,EAAA,KAAArB,GAAAqB,EAAA,KAAAQ,IAFDlC,EAAgBkC,EAEd;CAAA,IAAAC,GAAAC;AAEFrC,CAFE2B,EAAA,OAAAtB,KAaS+B,IAAAT,EAAA,IAAAU,IAAAV,EAAA,OAXDS,UAAA;AACR,EAAI/B,IACFS,EAAQiB,SAAeO,OAAE,GACfT,EAAkBE,YAG5BnB,EAAc,GAAM,EACpBE,EAAQiB,SAAcQ,MAAE,EACxBP,EAAeD,WAAY;IAG5BM,IAAA,CAAChC,EAAO,EAAAsB,EAAA,KAAAtB,GAAAsB,EAAA,KAAAS,GAAAT,EAAA,KAAAU,IAXXrC,EAAUoC,GAWPC,EAAS;CAAA,IAAAG;AAAA,CAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,IAE+BF,KAAApB,MAAA;AASzC,EALAA,EAAKuB,gBAAiB,EAKjBvB,EAAKwB,OAAkBE,QAAU,oBAAkB,KACtDjB,EAAkBE,UAAW;IAEhCJ,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAZD,IAAAR,IAA+BqB,GAYzBO;AAAA,CAAApB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAEoCK,UAAA;AACxClB,IAAkBE,UAAW;IAC9BJ,EAAA,MAAAoB,KAAAA,IAAApB,EAAA;CAFD,IAAAL,IAA8ByB,GAExBC;AAAA,CAAArB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAE6BM,UAAA;AACjCpC,IAAc,GAAK;IACpBe,EAAA,MAAAqB,KAAAA,IAAArB,EAAA;CAFD,IAAAJ,IAAuByB,GAEjBC;AAAA,CAAAtB,EAAA,QAAAc,OAAAC,IAAA,4BAAA,IAE0BO,UAAA;AAK9Bf,EAFAL,EAAkBE,UAAW,IAC7BnB,EAAc,GAAM,EACpBsB,EAAcH,UAAW,EAAAvB,SAAW,IAAO,CAAC;IAC7CmB,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAND,IAAAH,IAAoByB,GAMdC;AAWL,QAXKvB,EAAA,QAAAhB,IAWLuC,IAAAvB,EAAA,OATMuB,IAAA;EAAAvC;EAAAC;EAAAE;EAAAI;EAAAC;EAAAG;EAAAC;EAAAC;EASN,EAAAG,EAAA,MAAAhB,GAAAgB,EAAA,MAAAuB,IATMA"}
|
|
1
|
+
{"version":3,"file":"useGridAutocompleteState.js","names":["useCallback","useEffect","useLayoutEffect","useRef","useState","UseGridAutocompleteStateProps","active","focus","stopEditing","opts","nextRow","onDeactivate","UseGridAutocompleteStateReturn","menuIsOpen","setMenuIsOpen","open","inputRef","React","RefObject","HTMLInputElement","activeRef","handleListboxMouseDown","event","MouseEvent","notifyOptionCommitted","handleMenuOpen","handleClose","handlePopupIndicatorMouseDown","useGridAutocompleteState","t0","$","_c","optionMouseDownRef","t1","current","onDeactivateRef","t2","stopEditingRef","t3","popupClickInProgressRef","t4","Symbol","for","t5","t6","blur","t7","t8","input","handleFocus","addEventListener","removeEventListener","t10","t9","t11","preventDefault","target","Element","closest","t12","t13","t14","t15"],"sources":["../../../../src/components/DataGrid/columns/useGridAutocompleteState.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nexport type UseGridAutocompleteStateProps = {\n active: boolean\n focus: boolean\n /**\n * `stopEditing` from react-datasheet-grid's CellProps. The hook ref-stabilizes\n * this internally, so callers can pass it directly without memoizing.\n */\n stopEditing?: (opts?: { nextRow: boolean }) => void\n /**\n * Called when the cell transitions from active to inactive and there is no\n * pending option click in progress (i.e. the portal-click guard is not set).\n * Store any free-text commit logic here. The callback is ref-stabilized inside\n * the hook, so it may freely capture local state without becoming a stale closure.\n */\n onDeactivate?: () => void\n}\n\nexport type UseGridAutocompleteStateReturn = {\n menuIsOpen: boolean\n setMenuIsOpen: (open: boolean) => void\n /** Ref to attach to the focusable input element for programmatic focus/blur. */\n inputRef: React.RefObject<HTMLInputElement | null>\n /**\n * Always reflects the current `active` value. Safe to read inside event\n * handler closures (e.g. onChange) without a stale capture.\n */\n activeRef: React.RefObject<boolean>\n /** Pass to `slotProps.listbox.onMouseDown` on the MUI Autocomplete. */\n handleListboxMouseDown: (event: React.MouseEvent) => void\n /**\n * Call at the top of every `onChange` handler to signal that a pending\n * option click has been committed. Clears the portal-click guard so that\n * subsequent active→false transitions can proceed normally.\n */\n notifyOptionCommitted: () => void\n /** Pass to the Autocomplete `onOpen` prop. */\n handleMenuOpen: () => void\n /**\n * Pass to the Autocomplete `onClose` prop. Clears the portal-click guard and\n * closes the menu, then stops editing without advancing to the next row.\n */\n handleClose: () => void\n /** Pass to `slotProps.popupIndicator.onMouseDown` on the MUI Autocomplete. */\n handlePopupIndicatorMouseDown: () => void\n}\n\n/**\n * Manages the shared focus/blur/menu state needed by grid autocomplete cell\n * components that are built on top of react-datasheet-grid.\n *\n * Grid cell state is two-tiered: `active` is set on first click (cell is\n * selected, but not editing), `focus` is set on second click (cell is in edit\n * mode). This hook keeps browser focus and dropdown visibility tied to `focus`\n * so the active-but-not-focused state doesn't show a caret or open the menu —\n * Backspace/Delete and type-to-edit then fall through to the grid's defaults.\n *\n * 1. When `focus` becomes true → focus the input + open the menu.\n * 2. When `focus` becomes false → blur + close the menu.\n * 3. When `active` becomes false with no pending option click → run\n * `onDeactivate` to commit any uncommitted free-text. This is separate\n * from focus because Escape clears `focus` but keeps `active`, and we\n * should not commit on Escape.\n * 4. The dropdown renders in a portal outside the grid cell. react-datasheet-grid\n * sees the mousedown as an outside click and fires active=false before onClick\n * → onChange. The `optionMouseDownRef` guard defers steps 2 and 3 until the\n * click completes and onChange resets the ref.\n */\nexport function useGridAutocompleteState({\n active,\n focus,\n stopEditing,\n onDeactivate,\n}: UseGridAutocompleteStateProps): UseGridAutocompleteStateReturn {\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const optionMouseDownRef = useRef(false)\n\n // Always reflects the latest `active` value — safe to read in closures.\n const activeRef = useRef(active)\n useLayoutEffect(() => {\n activeRef.current = active\n })\n\n // Ref-stabilize callbacks so effects/handlers never need them in deps arrays,\n // yet always call the latest versions (avoiding stale closures).\n const onDeactivateRef = useRef(onDeactivate)\n useLayoutEffect(() => {\n onDeactivateRef.current = onDeactivate\n })\n const stopEditingRef = useRef(stopEditing)\n useLayoutEffect(() => {\n stopEditingRef.current = stopEditing\n })\n\n // Tracks an in-flight popup-indicator click so the focus effect skips its\n // auto-open. Without this, the indicator click both (a) promotes the cell to\n // grid focus (our effect would open the menu) and (b) toggles via MUI's\n // own onClick (which would then close because we just opened it) — flicker.\n // Letting MUI handle the open via its onOpen avoids the dueling state.\n // Cleared by handleMenuOpen (successful click) or by the focus/active effects\n // when focus drops (abandoned press).\n const popupClickInProgressRef = useRef(false)\n const handlePopupIndicatorMouseDown = useCallback(() => {\n popupClickInProgressRef.current = true\n }, [])\n\n useEffect(() => {\n if (focus) {\n inputRef.current?.focus()\n if (!popupClickInProgressRef.current) {\n setMenuIsOpen(true)\n }\n } else if (!optionMouseDownRef.current) {\n // Only close when there is no pending option click; if there is one,\n // onChange will reset optionMouseDownRef and handle cleanup itself.\n popupClickInProgressRef.current = false\n setMenuIsOpen(false)\n inputRef.current?.blur()\n }\n }, [focus])\n\n // Defense in depth for the caret: when grid focus is false, MUI may still\n // route browser focus to the <input> (e.g. multi-mode chip-area clicks,\n // popup indicator clicks). Intercept any focus that lands on the input\n // while we're not in edit mode and blur it, so no caret blinks after the\n // last chip or inside the input.\n useEffect(() => {\n if (focus) return\n const input = inputRef.current\n if (!input) return\n const handleFocus = () => {\n input.blur()\n }\n input.addEventListener('focus', handleFocus)\n return () => {\n input.removeEventListener('focus', handleFocus)\n }\n }, [focus])\n\n useEffect(() => {\n if (!active && !optionMouseDownRef.current) {\n // Menus can be opened with grid focus=false (e.g. clicking the popup\n // indicator on a freshly-activated cell), so the focus effect alone is\n // not enough — close on deactivation too. Otherwise a deactivated cell\n // can leave a stale menu open that re-anchors and \"moves\" as the user\n // scrolls the grid, or stack up alongside the next cell's menu.\n popupClickInProgressRef.current = false\n setMenuIsOpen(false)\n inputRef.current?.blur()\n onDeactivateRef.current?.()\n }\n }, [active])\n\n const handleListboxMouseDown = useCallback((event: React.MouseEvent) => {\n // Prevent the input from blurring when clicking inside the listbox. MUI's\n // internal listbox onMouseDown does the same, but our slotProps replaces it,\n // so we must call preventDefault() here to preserve that behavior.\n event.preventDefault()\n // Only signal a pending option click when the mousedown actually targets an\n // option element. Clicks on scrollbars or listbox padding would otherwise\n // leave the guard stuck true (onChange never fires for non-selections),\n // causing later active→false transitions to skip blur/onDeactivate cleanup.\n if ((event.target as Element).closest('[role=\"option\"]')) {\n optionMouseDownRef.current = true\n }\n }, [])\n\n const notifyOptionCommitted = useCallback(() => {\n optionMouseDownRef.current = false\n }, [])\n\n const handleMenuOpen = useCallback(() => {\n popupClickInProgressRef.current = false\n setMenuIsOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n // Clear the guard in case a mousedown on an option was abandoned before\n // onChange could fire (e.g. drag-off).\n optionMouseDownRef.current = false\n setMenuIsOpen(false)\n stopEditingRef.current?.({ nextRow: false })\n }, [])\n\n return {\n menuIsOpen,\n setMenuIsOpen,\n inputRef,\n activeRef,\n handleListboxMouseDown,\n notifyOptionCommitted,\n handleMenuOpen,\n handleClose,\n handlePopupIndicatorMouseDown,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","HelpTwoTone","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","undefined","t3","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t4","overflow","textOverflow","whiteSpace","t5","t6","flexShrink","t7","t8","e","stopPropagation","color","opacity","t9","t10"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { HelpTwoTone, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header with an optional help icon showing the column description.\n * Adopts the help icon pattern from ColumnHeader for consistent UX.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={name} // Native tooltip for truncated text\n >\n {name}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {description && (\n <Tooltip\n title={description}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton size=\"small\" color=\"inherit\">\n <HelpTwoTone fontSize=\"inherit\" />\n </IconButton>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAgBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","HelpTwoTone","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","undefined","t3","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t4","overflow","textOverflow","whiteSpace","t5","t6","flexShrink","t7","t8","e","stopPropagation","color","opacity","t9","t10"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { HelpTwoTone, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header with an optional help icon showing the column description.\n * Adopts the help icon pattern from ColumnHeader for consistent UX.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={name} // Native tooltip for truncated text\n >\n {name}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {description && (\n <Tooltip\n title={description}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton size=\"small\" color=\"inherit\">\n <HelpTwoTone fontSize=\"inherit\" />\n </IconButton>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAgBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAR,SAAAC,gBAAAC,aAAAO,GAAAN,UAAAO,GAAAN,mBAAAE,GAGtCJ,IAAAO,MAAAE,KAAAA,IAAA,KAAAF,GACAN,IAAAO,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;CACZ,GAACb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;CACZ,GAACb,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAP,IAIGyB,IAAAlB,EAAA,MAXNkB,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAJ;EAMGrB,OAAAA;YAENA;CAVC,CAAA,GAWEO,EAAA,KAAAP,GAAAO,EAAA,KAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGGY,IAAA;EAAAX,SAAW;EAAME,KAAO;EAAGU,YAAc;CAAE,GAACpB,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,OAAAN,IAWlD2B,IAAArB,EAAA,MAVAqB,IAAA3B,KACC,kBAAC,GAAD;EACSA,OAAAA;EACG,WAAA;EACMH,gBAAAA;YAEhB,kBAAC,GAAD;GAAiB,MAAA;GAAc,OAAA;aAC7B,kBAAC,GAAD,EAAsB,UAAA,UAAS,CAAA;EADtB,CAAA;CALL,CAAA,GASTS,EAAA,KAAAN,GAAAM,EAAA,KAAAqB;CAAA,IAAAC;CAAA,AAAAtB,EAAA,OAAAJ,KAAAI,EAAA,OAAAH,KAAAG,EAAA,OAAAL,KACA2B,IAAA3B,KAAAE,KACC,kBAAC,GAAD;EACS,OAAAD,IAAA,iBAAA;EACG,WAAA;EACML,gBAAAA;YAEhB,kBAAC,GAAD;GACO,MAAA;GACC,OAAA;GACM,cAAAK,IAAA,iBAAA;GAGC,cAAA2B,MAAA;IAEX1B,AADA0B,EAACC,gBAAiB,GAClB3B,EAAY;GAAC;GAEX,IAAA;IAAA4B,OACK;IAASC,SACP9B,IAAA,IAAA;IAAkB,WAChB,EAAA8B,SACA,EACX;GACF;aAGE,EADD9B,IACE,IAEA,GAFD,EAAkB,UAAA,UAAS,CAEQ;EArB5B,CAAA;CALL,CAAA,GA8BTI,EAAA,KAAAJ,GAAAI,EAAA,KAAAH,GAAAG,EAAA,KAAAL,GAAAK,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAqB,KAAArB,EAAA,QAAAsB,KA3CHK,IAAA,kBAAC,GAAD;EAAS,IAAAR;YAAT,CACGE,GAWAC,CAZC;KA4CEtB,EAAA,MAAAqB,GAAArB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA;CAAA,IAAA4B;CACF,OADE5B,EAAA,QAAAkB,KAAAlB,EAAA,QAAA2B,KArERC,IAAA,kBAAC,GAAD;EACM,IAAAvB;YADN,CAWEa,GAcAS,CAzBE;KAsEE3B,EAAA,MAAAkB,GAAAlB,EAAA,MAAA2B,GAAA3B,EAAA,MAAA4B,KAAAA,IAAA5B,EAAA,KAtEN4B;AAsEM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportCsvFromGridButton.js","names":["GridMenuButton","useExportDataGridToCsv","DownloadTwoTone","ExportCsvFromGridButtonProps","gridSessionId","filename","ExportCsvFromGridButton","props","$","_c","t0","exportToCsv","isExporting","t1","Symbol","for","t2"],"sources":["../../../../src/components/DataGrid/components/ExportCsvFromGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport { useExportDataGridToCsv } from '@/components/DataGrid/hooks/useExportDataGridToCsv'\nimport { DownloadTwoTone } from '@mui/icons-material'\n\nexport type ExportCsvFromGridButtonProps = {\n gridSessionId: string\n filename: string\n}\n\nexport default function ExportCsvFromGridButton(\n props: ExportCsvFromGridButtonProps,\n) {\n const { gridSessionId, filename } = props\n\n const { exportToCsv, isExporting } = useExportDataGridToCsv({\n gridSessionId,\n filename,\n })\n\n return (\n <GridMenuButton\n onClick={exportToCsv}\n variant=\"outlined\"\n startIcon={<DownloadTwoTone />}\n loading={isExporting}\n >\n Export CSV\n </GridMenuButton>\n )\n}\n"],"mappings":";;;;;;AASA,SAAeM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"ExportCsvFromGridButton.js","names":["GridMenuButton","useExportDataGridToCsv","DownloadTwoTone","ExportCsvFromGridButtonProps","gridSessionId","filename","ExportCsvFromGridButton","props","$","_c","t0","exportToCsv","isExporting","t1","Symbol","for","t2"],"sources":["../../../../src/components/DataGrid/components/ExportCsvFromGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport { useExportDataGridToCsv } from '@/components/DataGrid/hooks/useExportDataGridToCsv'\nimport { DownloadTwoTone } from '@mui/icons-material'\n\nexport type ExportCsvFromGridButtonProps = {\n gridSessionId: string\n filename: string\n}\n\nexport default function ExportCsvFromGridButton(\n props: ExportCsvFromGridButtonProps,\n) {\n const { gridSessionId, filename } = props\n\n const { exportToCsv, isExporting } = useExportDataGridToCsv({\n gridSessionId,\n filename,\n })\n\n return (\n <GridMenuButton\n onClick={exportToCsv}\n variant=\"outlined\"\n startIcon={<DownloadTwoTone />}\n loading={isExporting}\n >\n Export CSV\n </GridMenuButton>\n )\n}\n"],"mappings":";;;;;;AASA,SAAeM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGb,EAAAL,kBAAAC,gBAAoCE,GAAKG;CAAA,AAAAF,EAAA,OAAAH,KAAAG,EAAA,OAAAJ,KAEmBM,IAAA;EAAAN;EAAAC;CAG5D,GAACG,EAAA,KAAAH,GAAAG,EAAA,KAAAJ,GAAAI,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAHD,IAAA,EAAAG,gBAAAC,mBAAqCX,EAAuBS,CAG3D,GAACG;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAMaF,IAAA,kBAAC,GAAD,CAAgB,CAAA,GAAGL,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAQ;CAIf,OAJeR,EAAA,OAAAG,KAAAH,EAAA,OAAAI,KAHhCI,IAAA,kBAAC,GAAD;EACWL,SAAAA;EACD,SAAA;EACG,WAAAE;EACFD,SAAAA;YACV;CALc,CAAA,GAOEJ,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GAAAJ,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAPjBQ;AAOiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridMenuButton.js","names":["Button","ButtonProps","styles","GridMenuButton","props","$","_c","t0","button"],"sources":["../../../../../src/components/DataGrid/components/GridMenuButton/GridMenuButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from '@mui/material/Button'\nimport styles from './GridMenuButton.module.scss'\n\nexport default function GridMenuButton(props: ButtonProps) {\n return <Button {...props} className={styles.button} />\n}\n"],"mappings":";;;;;AAGA,SAAeG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"GridMenuButton.js","names":["Button","ButtonProps","styles","GridMenuButton","props","$","_c","t0","button"],"sources":["../../../../../src/components/DataGrid/components/GridMenuButton/GridMenuButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from '@mui/material/Button'\nimport styles from './GridMenuButton.module.scss'\n\nexport default function GridMenuButton(props: ButtonProps) {\n return <Button {...props} className={styles.button} />\n}\n"],"mappings":";;;;;AAGA,SAAeG,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CACyC,OADzCF,EAAA,OAAAD,IACyCG,IAAAF,EAAA,MAA/CE,IAAA,kBAAC,GAAD;EAAO,GAAKH;EAAkB,WAAAF,EAAMM;CAAO,CAAA,GAAIH,EAAA,KAAAD,GAAAC,EAAA,KAAAE,IAA/CA;AAA+C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridSessionSelectionField.js","names":["displayToast","useDeleteGridSession","useGetGridSessionsInfinite","Autocomplete","Grid","MenuItem","TextField","GridSession","noop","useMemo","GridSessionSelectionFieldProps","inputValue","onInputValueChange","value","onConfirmInput","onSessionChange","session","onReplicaChange","replicaId","GridSessionSelectionField","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","data","t4","onSuccess","_data","sessionId","onError","_temp","mutate","deleteSession","t5","pages","flatMap","_temp2","availableSessions","t6","_e","t7","_e_0","value_0","t8","e","key","t9","props_0","display","padding","cursor","borderBottom","justifyContent","textOverflow","overflow","whiteSpace","xs","md","sourceEntityId","gridJsonSchema$Id","marginLeft","color","fontSize","userSelect","e_0","stopPropagation","t10","_temp3","_temp4","option","params","page","error","reason"],"sources":["../../../../src/components/DataGrid/components/GridSessionSelectionField.tsx"],"sourcesContent":["import { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useDeleteGridSession,\n useGetGridSessionsInfinite,\n} from '@/synapse-queries/grid/useGridSession'\nimport { Autocomplete, Grid, MenuItem, TextField } from '@mui/material'\nimport { GridSession } from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useMemo } from 'react'\n\ntype GridSessionSelectionFieldProps = {\n inputValue: string\n onInputValueChange: (value: string) => void\n onConfirmInput?: (value: string) => void\n onSessionChange?: (session: GridSession | null) => void\n onReplicaChange?: (replicaId: number | null) => void\n}\n\n/**\n * Utility form field to pick the grid session from existing sessions. Currently, for testing/demo purposes only.\n */\nexport default function GridSessionSelectionField(\n props: GridSessionSelectionFieldProps,\n) {\n const {\n inputValue,\n onInputValueChange,\n onConfirmInput = noop,\n onSessionChange = noop,\n onReplicaChange = noop,\n } = props\n\n const { data } = useGetGridSessionsInfinite({})\n\n const { mutate: deleteSession } = useDeleteGridSession({\n onSuccess: (_data, sessionId) => {\n displayToast(`Successfully deleted grid session ${sessionId}`, 'success')\n onSessionChange(null)\n onReplicaChange(null)\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n const availableSessions = useMemo(\n () => data?.pages.flatMap(page => page.page || []) || [],\n [data],\n )\n\n return (\n <Autocomplete\n freeSolo\n fullWidth\n renderInput={params => (\n <TextField\n {...params}\n label={'SQL Query or Session ID'}\n placeholder=\"Enter a SQL query, RecordSet ID, or session ID\"\n />\n )}\n options={availableSessions}\n getOptionLabel={option =>\n typeof option === 'string' ? option : option.sessionId || ''\n }\n value={inputValue}\n onInputChange={(_e, value) => {\n onInputValueChange(value)\n }}\n onChange={(_e, value) => {\n if (value && typeof value === 'object') {\n onInputValueChange(value.sessionId || '')\n onConfirmInput(value.sessionId || '')\n } else {\n onInputValueChange(value || '')\n }\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n onConfirmInput(inputValue)\n }\n }}\n renderOption={(props, session) => (\n <MenuItem\n {...props}\n key={session.sessionId}\n style={{\n display: 'block',\n padding: '8px',\n cursor: 'pointer',\n borderBottom: '1px solid #eee',\n }}\n >\n <Grid\n container\n sx={{\n justifyContent: 'space-between',\n '& > *': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n }}\n >\n <Grid size={{ xs: 6, md: 2 }}>{session.sessionId}</Grid>\n <Grid size={{ xs: 5, md: 2 }}>{session.sourceEntityId}</Grid>\n <Grid size={{ xs: 0, md: 6 }}>\n {session.gridJsonSchema$Id ?? 'No schema'}\n </Grid>\n <Grid size={{ xs: 1 }}>\n <span\n data-icon=\"delete\"\n title=\"Delete session\"\n style={{\n marginLeft: '8px',\n color: '#d32f2f',\n cursor: 'pointer',\n fontSize: '16px',\n userSelect: 'none',\n }}\n onClick={e => {\n e.stopPropagation()\n deleteSession(session.sessionId!)\n }}\n >\n 🗑️\n </span>\n </Grid>\n </Grid>\n </MenuItem>\n )}\n />\n )\n}\n"],"mappings":";;;;;;;;AAqBA,SAAemB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"GridSessionSelectionField.js","names":["displayToast","useDeleteGridSession","useGetGridSessionsInfinite","Autocomplete","Grid","MenuItem","TextField","GridSession","noop","useMemo","GridSessionSelectionFieldProps","inputValue","onInputValueChange","value","onConfirmInput","onSessionChange","session","onReplicaChange","replicaId","GridSessionSelectionField","props","$","_c","t0","t1","t2","undefined","t3","Symbol","for","data","t4","onSuccess","_data","sessionId","onError","_temp","mutate","deleteSession","t5","pages","flatMap","_temp2","availableSessions","t6","_e","t7","_e_0","value_0","t8","e","key","t9","props_0","display","padding","cursor","borderBottom","justifyContent","textOverflow","overflow","whiteSpace","xs","md","sourceEntityId","gridJsonSchema$Id","marginLeft","color","fontSize","userSelect","e_0","stopPropagation","t10","_temp3","_temp4","option","params","page","error","reason"],"sources":["../../../../src/components/DataGrid/components/GridSessionSelectionField.tsx"],"sourcesContent":["import { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useDeleteGridSession,\n useGetGridSessionsInfinite,\n} from '@/synapse-queries/grid/useGridSession'\nimport { Autocomplete, Grid, MenuItem, TextField } from '@mui/material'\nimport { GridSession } from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useMemo } from 'react'\n\ntype GridSessionSelectionFieldProps = {\n inputValue: string\n onInputValueChange: (value: string) => void\n onConfirmInput?: (value: string) => void\n onSessionChange?: (session: GridSession | null) => void\n onReplicaChange?: (replicaId: number | null) => void\n}\n\n/**\n * Utility form field to pick the grid session from existing sessions. Currently, for testing/demo purposes only.\n */\nexport default function GridSessionSelectionField(\n props: GridSessionSelectionFieldProps,\n) {\n const {\n inputValue,\n onInputValueChange,\n onConfirmInput = noop,\n onSessionChange = noop,\n onReplicaChange = noop,\n } = props\n\n const { data } = useGetGridSessionsInfinite({})\n\n const { mutate: deleteSession } = useDeleteGridSession({\n onSuccess: (_data, sessionId) => {\n displayToast(`Successfully deleted grid session ${sessionId}`, 'success')\n onSessionChange(null)\n onReplicaChange(null)\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n },\n })\n const availableSessions = useMemo(\n () => data?.pages.flatMap(page => page.page || []) || [],\n [data],\n )\n\n return (\n <Autocomplete\n freeSolo\n fullWidth\n renderInput={params => (\n <TextField\n {...params}\n label={'SQL Query or Session ID'}\n placeholder=\"Enter a SQL query, RecordSet ID, or session ID\"\n />\n )}\n options={availableSessions}\n getOptionLabel={option =>\n typeof option === 'string' ? option : option.sessionId || ''\n }\n value={inputValue}\n onInputChange={(_e, value) => {\n onInputValueChange(value)\n }}\n onChange={(_e, value) => {\n if (value && typeof value === 'object') {\n onInputValueChange(value.sessionId || '')\n onConfirmInput(value.sessionId || '')\n } else {\n onInputValueChange(value || '')\n }\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n onConfirmInput(inputValue)\n }\n }}\n renderOption={(props, session) => (\n <MenuItem\n {...props}\n key={session.sessionId}\n style={{\n display: 'block',\n padding: '8px',\n cursor: 'pointer',\n borderBottom: '1px solid #eee',\n }}\n >\n <Grid\n container\n sx={{\n justifyContent: 'space-between',\n '& > *': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n }}\n >\n <Grid size={{ xs: 6, md: 2 }}>{session.sessionId}</Grid>\n <Grid size={{ xs: 5, md: 2 }}>{session.sourceEntityId}</Grid>\n <Grid size={{ xs: 0, md: 6 }}>\n {session.gridJsonSchema$Id ?? 'No schema'}\n </Grid>\n <Grid size={{ xs: 1 }}>\n <span\n data-icon=\"delete\"\n title=\"Delete session\"\n style={{\n marginLeft: '8px',\n color: '#d32f2f',\n cursor: 'pointer',\n fontSize: '16px',\n userSelect: 'none',\n }}\n onClick={e => {\n e.stopPropagation()\n deleteSession(session.sessionId!)\n }}\n >\n 🗑️\n </span>\n </Grid>\n </Grid>\n </MenuItem>\n )}\n />\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadCsvToGridButton.js","names":["GridMenuButton","UploadCsvToGridDialog","useGetEntity","UploadTwoTone","Skeleton","instanceOfRecordSet","useState","UploadCsvToGridButtonProps","sourceEntityId","gridSessionId","UploadCsvToGridButton","props","$","_c","showDialog","setShowDialog","data","entity","isLoading","isLoadingEntity","t0","Symbol","for","t1","t2","t3"],"sources":["../../../../src/components/DataGrid/components/UploadCsvToGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridDialog from '@/components/DataGrid/components/UploadCsvToGridDialog'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { UploadTwoTone } from '@mui/icons-material'\nimport Skeleton from '@mui/material/Skeleton'\nimport { instanceOfRecordSet } from '@sage-bionetworks/synapse-client'\nimport { useState } from 'react'\n\nexport type UploadCsvToGridButtonProps = {\n sourceEntityId: string\n gridSessionId: string\n}\n\nexport default function UploadCsvToGridButton(\n props: UploadCsvToGridButtonProps,\n) {\n const { sourceEntityId, gridSessionId } = props\n\n const [showDialog, setShowDialog] = useState(false)\n\n const { data: entity, isLoading: isLoadingEntity } =\n useGetEntity(sourceEntityId)\n\n if (isLoadingEntity) {\n return <Skeleton variant=\"rectangular\" width={100} />\n }\n if (entity && !instanceOfRecordSet(entity)) {\n // Currently, grid upload is only supported for record sets\n return null\n }\n\n return (\n <>\n {showDialog && (\n // Explicitly unmount the dialog when it is closed so that its state is reset\n // This prevents a user from getting stuck in an error state/uploading the wrong CSV\n <UploadCsvToGridDialog\n gridSessionId={gridSessionId}\n open={showDialog}\n onClose={() => setShowDialog(false)}\n onComplete={() => setShowDialog(false)}\n />\n )}\n <GridMenuButton\n onClick={() => {\n setShowDialog(true)\n }}\n variant=\"outlined\"\n startIcon={<UploadTwoTone />}\n >\n Upload\n </GridMenuButton>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAeU,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"UploadCsvToGridButton.js","names":["GridMenuButton","UploadCsvToGridDialog","useGetEntity","UploadTwoTone","Skeleton","instanceOfRecordSet","useState","UploadCsvToGridButtonProps","sourceEntityId","gridSessionId","UploadCsvToGridButton","props","$","_c","showDialog","setShowDialog","data","entity","isLoading","isLoadingEntity","t0","Symbol","for","t1","t2","t3"],"sources":["../../../../src/components/DataGrid/components/UploadCsvToGridButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridDialog from '@/components/DataGrid/components/UploadCsvToGridDialog'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { UploadTwoTone } from '@mui/icons-material'\nimport Skeleton from '@mui/material/Skeleton'\nimport { instanceOfRecordSet } from '@sage-bionetworks/synapse-client'\nimport { useState } from 'react'\n\nexport type UploadCsvToGridButtonProps = {\n sourceEntityId: string\n gridSessionId: string\n}\n\nexport default function UploadCsvToGridButton(\n props: UploadCsvToGridButtonProps,\n) {\n const { sourceEntityId, gridSessionId } = props\n\n const [showDialog, setShowDialog] = useState(false)\n\n const { data: entity, isLoading: isLoadingEntity } =\n useGetEntity(sourceEntityId)\n\n if (isLoadingEntity) {\n return <Skeleton variant=\"rectangular\" width={100} />\n }\n if (entity && !instanceOfRecordSet(entity)) {\n // Currently, grid upload is only supported for record sets\n return null\n }\n\n return (\n <>\n {showDialog && (\n // Explicitly unmount the dialog when it is closed so that its state is reset\n // This prevents a user from getting stuck in an error state/uploading the wrong CSV\n <UploadCsvToGridDialog\n gridSessionId={gridSessionId}\n open={showDialog}\n onClose={() => setShowDialog(false)}\n onComplete={() => setShowDialog(false)}\n />\n )}\n <GridMenuButton\n onClick={() => {\n setShowDialog(true)\n }}\n variant=\"outlined\"\n startIcon={<UploadTwoTone />}\n >\n Upload\n </GridMenuButton>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAeU,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGb,EAAAL,mBAAAC,qBAA0CE,GAE1C,CAAAG,GAAAC,KAAoCT,EAAS,EAAK,GAElD,EAAAU,MAAAC,GAAAC,WAAAC,MACEjB,EAAaM,CAAc;CAE7B,IAAIW,GAAe;EAAA,IAAAC;EACoC,OADpCR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KACVF,IAAA,kBAAC,GAAD;GAAkB,SAAA;GAAqB,OAAA;EAAG,CAAA,GAAIR,EAAA,KAAAQ,KAAAA,IAAAR,EAAA,IAA9CQ;CAA8C;CAEvD,IAAIH,KAAA,CAAWZ,EAAoBY,CAAM,GAAC,OAEjC;CACR,IAAAG;CAAA,AAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAE,KAIIM,IAAAN,KAGC,kBAAC,GAAD;EACiBL;EACTK,MAAAA;EACG,eAAMC,EAAc,EAAK;EACtB,kBAAMA,EAAc,EAAK;CAAC,CAAA,GAEzCH,EAAA,KAAAH,GAAAG,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAEUC,UAAA;EACPR,EAAc,EAAI;CAAC,GACpBH,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAHHE,IAAA,kBAAC,GAAD;EACW,SAAAD;EAGD,SAAA;EACG,WAAA,kBAAC,GAAD,CAAc,CAAA;YAC1B;CANc,CAAA,GAQEX,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAa;CAChB,OADgBb,EAAA,OAAAQ,IAChBK,IAAAb,EAAA,MApBHa,IAAA,kBAAA,GAAA,EAAA,UAAA,CACGL,GAUDI,CAQiB,EAAA,CAAA,GAChBZ,EAAA,KAAAQ,GAAAR,EAAA,KAAAa,IApBHA;AAoBG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadCsvToGridDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,KAAK,0BAA0B,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAgB,EAChB,YAAgB,GACjB,EAAE,qBAAqB,GAAG,MAAM,CAchC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"UploadCsvToGridDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAGxE,KAAK,0BAA0B,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAgB,EAChB,YAAgB,GACjB,EAAE,qBAAqB,GAAG,MAAM,CAchC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EAAE,0BAA0B,2CAoClC"}
|
|
@@ -11,12 +11,12 @@ function o({ createdCount: e = 0, updatedCount: t = 0 }) {
|
|
|
11
11
|
return e > 0 && (n += `created ${e.toLocaleString()} rows`), e > 0 && t > 0 ? n += " and " : t == 0 && (n += "."), t > 0 && (n += `updated ${t.toLocaleString()} rows.`), a(n);
|
|
12
12
|
}
|
|
13
13
|
function s(a) {
|
|
14
|
-
let s = i(
|
|
14
|
+
let s = i(12), { gridSessionId: c, open: l, onClose: u, onComplete: d } = a, f;
|
|
15
15
|
s[0] === d ? f = s[1] : (f = { onSuccess: (t) => {
|
|
16
16
|
e(o(t), "success", { title: "Data imported successfully" }), d();
|
|
17
17
|
} }, s[0] = d, s[1] = f);
|
|
18
|
-
let { mutate: p, isPending: m, error: h } = t(f), g;
|
|
19
|
-
s[2] !== c || s[3] !== p ? (
|
|
18
|
+
let { mutate: p, isPending: m, error: h } = t(f), g = String(l), _;
|
|
19
|
+
s[2] !== c || s[3] !== p ? (_ = (e, t, n) => {
|
|
20
20
|
p({
|
|
21
21
|
concreteType: "org.sagebionetworks.repo.model.grid.GridCsvImportRequest",
|
|
22
22
|
sessionId: c,
|
|
@@ -24,15 +24,15 @@ function s(a) {
|
|
|
24
24
|
csvDescriptor: n,
|
|
25
25
|
schema: t
|
|
26
26
|
});
|
|
27
|
-
}, s[2] = c, s[3] = p, s[4] =
|
|
28
|
-
let
|
|
29
|
-
return s[5] !== m || s[6] !== u || s[7] !== l || s[8] !== g || s[9] !== _ ? (
|
|
27
|
+
}, s[2] = c, s[3] = p, s[4] = _) : _ = s[4];
|
|
28
|
+
let v = h?.message, y;
|
|
29
|
+
return s[5] !== m || s[6] !== u || s[7] !== l || s[8] !== g || s[9] !== _ || s[10] !== v ? (y = /* @__PURE__ */ r(n, {
|
|
30
30
|
open: l,
|
|
31
31
|
onClose: u,
|
|
32
|
-
onConfirm:
|
|
33
|
-
errorMessage:
|
|
32
|
+
onConfirm: _,
|
|
33
|
+
errorMessage: v,
|
|
34
34
|
confirmIsPending: m
|
|
35
|
-
}), s[5] = m, s[6] = u, s[7] = l, s[8] = g, s[9] = _, s[10] = v) :
|
|
35
|
+
}, g), s[5] = m, s[6] = u, s[7] = l, s[8] = g, s[9] = _, s[10] = v, s[11] = y) : y = s[11], y;
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
38
|
export { s as default, o as getUpdateMessage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadCsvToGridDialog.js","names":["displayToast","CsvPreviewDialog","useImportCsvIntoGrid","GridCsvImportResponse","upperFirst","UploadCsvToGridDialogProps","gridSessionId","open","onClose","onComplete","getUpdateMessage","createdCount","updatedCount","message","toLocaleString","UploadCsvToGridDialog","props","$","_c","t0","onSuccess","result","title","mutate","importCsvIntoGrid","isPending","error","t1","fileHandleId","schema","csvDescriptor","concreteType","sessionId","
|
|
1
|
+
{"version":3,"file":"UploadCsvToGridDialog.js","names":["displayToast","CsvPreviewDialog","useImportCsvIntoGrid","GridCsvImportResponse","upperFirst","UploadCsvToGridDialogProps","gridSessionId","open","onClose","onComplete","getUpdateMessage","createdCount","updatedCount","message","toLocaleString","UploadCsvToGridDialog","props","$","_c","t0","onSuccess","result","title","mutate","importCsvIntoGrid","isPending","error","t1","String","t2","fileHandleId","schema","csvDescriptor","concreteType","sessionId","t3","t4"],"sources":["../../../../src/components/DataGrid/components/UploadCsvToGridDialog.tsx"],"sourcesContent":["import { displayToast } from '@/components/index'\nimport CsvPreviewDialog from '@/components/table/CsvPreview/CsvPreviewDialog'\nimport { useImportCsvIntoGrid } from '@/synapse-queries/grid/useImportCsvIntoGrid'\nimport { GridCsvImportResponse } from '@sage-bionetworks/synapse-client'\nimport upperFirst from 'lodash-es/upperFirst'\n\ntype UploadCsvToGridDialogProps = {\n gridSessionId: string\n open: boolean\n onClose: () => void\n onComplete: () => void\n}\n\nexport function getUpdateMessage({\n createdCount = 0,\n updatedCount = 0,\n}: GridCsvImportResponse): string {\n let message = ''\n if (createdCount > 0) {\n message += `created ${createdCount.toLocaleString()} rows`\n }\n if (createdCount > 0 && updatedCount > 0) {\n message += ' and '\n } else if (updatedCount == 0) {\n message += '.'\n }\n if (updatedCount > 0) {\n message += `updated ${updatedCount.toLocaleString()} rows.`\n }\n return upperFirst(message)\n}\n\nexport default function UploadCsvToGridDialog(\n props: UploadCsvToGridDialogProps,\n) {\n const { gridSessionId, open, onClose, onComplete } = props\n\n const {\n mutate: importCsvIntoGrid,\n isPending,\n error,\n } = useImportCsvIntoGrid({\n onSuccess: result => {\n displayToast(getUpdateMessage(result), 'success', {\n title: 'Data imported successfully',\n })\n onComplete()\n },\n })\n\n return (\n <CsvPreviewDialog\n key={String(open)}\n open={open}\n onClose={onClose}\n onConfirm={(fileHandleId, schema, csvDescriptor) => {\n importCsvIntoGrid({\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridCsvImportRequest',\n sessionId: gridSessionId,\n fileHandleId,\n csvDescriptor,\n schema,\n })\n }}\n errorMessage={error?.message}\n confirmIsPending={isPending}\n />\n )\n}\n"],"mappings":";;;;;;;;AAaA,SAAgBU,EAAiB,EAC/BC,kBAAe,GACfC,kBAAe,KACiB;CAChC,IAAIC,IAAU;CAYd,OAXIF,IAAe,MACjBE,KAAW,WAAWF,EAAaG,eAAe,EAAC,SAEjDH,IAAe,KAAKC,IAAe,IACrCC,KAAW,UACFD,KAAgB,MACzBC,KAAW,MAETD,IAAe,MACjBC,KAAW,WAAWD,EAAaE,eAAe,EAAC,UAE9CV,EAAWS,CAAO;AAC3B;AAEA,SAAeE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGb,EAAAZ,kBAAAC,SAAAC,YAAAC,kBAAqDO,GAAKG;CAAA,AAAAF,EAAA,OAAAR,IAazDU,IAAAF,EAAA,MAPwBE,IAAA,EAAAC,YACZC,MAAA;EAITZ,AAHAT,EAAaU,EAAiBW,CAAM,GAAG,WAAW,EAAAC,OACzC,6BACT,CAAC,GACDb,EAAW;CAAC,EAEhB,GAACQ,EAAA,KAAAR,GAAAQ,EAAA,KAAAE;CAXD,IAAA,EAAAI,QAAAC,GAAAC,cAAAC,aAIIxB,EAAqBiB,CAOxB,GAIQQ,IAAAC,OAAOrB,CAAI,GAACsB;CAAA,AAAAZ,EAAA,OAAAX,KAAAW,EAAA,OAAAO,KAGNK,KAAAC,GAAAC,GAAAC,MAAA;EACTR,EAAkB;GAAAS,cAEd;GAA0DC,WACjD5B;GAAawB;GAAAE;GAAAD;EAI1B,CAAC;CAAC,GACHd,EAAA,KAAAX,GAAAW,EAAA,KAAAO,GAAAP,EAAA,KAAAY,KAAAA,IAAAZ,EAAA;CACa,IAAAkB,IAAAT,GAAKb,SAASuB;CAE5B,OAF4BnB,EAAA,OAAAQ,KAAAR,EAAA,OAAAT,KAAAS,EAAA,OAAAV,KAAAU,EAAA,OAAAU,KAAAV,EAAA,OAAAY,KAAAZ,EAAA,QAAAkB,KAd9BC,IAAA,kBAAC,GAAD;EAEQ7B;EACGC;EACE,WAAAqB;EAUG,cAAAM;EACIV,kBAAAA;CAAS,GAdtBE,CAcsB,GAC3BV,EAAA,KAAAQ,GAAAR,EAAA,KAAAT,GAAAS,EAAA,KAAAV,GAAAU,EAAA,KAAAU,GAAAV,EAAA,KAAAY,GAAAZ,EAAA,MAAAkB,GAAAlB,EAAA,MAAAmB,KAAAA,IAAAnB,EAAA,KAhBFmB;AAgBE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationAlert.js","names":["DataGridRow","Box","Chip","Collapse","Divider","Link","Stack","Tab","Tabs","Typography","Fragment","useMemo","useState","SynapseSpinner","ValidationError","rowIndex","columnName","message","pending","RowEntry","GroupBy","ValidationAlertProps","rowValues","columnNames","columnOrder","onNavigateToCell","colIndex","isLoading","NavProps","getColDisplayIndex","colName","findIndex","i","colLabel","ErrorText","t0","$","_c","rowSuffix","t1","Symbol","for","fontWeight","t2","t3","t4","t5","rowLinkSx","textDecoration","cursor","const","bannerBaseSx","border","borderLeft","borderRadius","mb","tabSx","minHeight","py","groupSectionHeaderSx","display","alignItems","gap","groupSectionItemSx","pl","flexWrap","RowLinks","rows","navCol","j","color","userSelect","opacity","map","ByColumnTab","groups","Array","from","entries","messages","totalCount","values","reduce","_temp","Math","max","msg","rows_0","mr","sum","length","ByMessageTab","columns","_temp2","fontStyle","ValidationAlert","undefined","isExpanded","setIsExpanded","groupBy","setGroupBy","errors","forEach","row","status","__validationStatus","__cellValidationResults","push","allErrors","Map","rowIndex_0","columnName_0","message_0","pending_0","has","set","colGroup","get","byColumn","groups_0","rowIndex_1","columnName_1","message_1","pending_1","msgGroup","byMessage","shouldExpand","firstError","borderColor","borderLeftColor","px","t6","t7","_temp3","flexShrink","t8","t9","t10","textAlign","ml","t11","t12","_","v","t13","t14","t15","t16","t17","borderTop","style","height","t18","t19","maxHeight","overflowY","t20","error","t21","t22","t23","t24","t25","p"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import { DataGridRow } from '../DataGridTypes'\nimport {\n Box,\n Chip,\n Collapse,\n Divider,\n Link,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from '@mui/material'\nimport { Fragment, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\ntype ValidationError = {\n rowIndex: number\n columnName: string\n message: string\n pending: boolean\n}\n\ntype RowEntry = { rowIndex: number; pending: boolean }\n\ntype GroupBy = 'row' | 'column' | 'message'\n\ntype ValidationAlertProps = {\n rowValues: DataGridRow[]\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n isLoading?: boolean\n}\n\ntype NavProps = {\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}\n\nfunction getColDisplayIndex(\n colName: string,\n columnNames: string[],\n columnOrder: number[],\n): number {\n return columnOrder.findIndex(i => columnNames[i] === colName)\n}\n\n/** Column name for display — '_row' becomes 'Row-level'. */\nfunction colLabel(colName: string): string {\n return colName === '_row' ? 'Row-level' : colName\n}\n\n/** Renders a column name + message pair with distinct styles. */\nfunction ErrorText({\n columnName,\n message,\n rowIndex,\n}: {\n columnName: string\n message: string\n rowIndex: number\n}) {\n const rowSuffix = ` (Row ${rowIndex + 1})`\n if (columnName === '_row') {\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n }\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'bold' }}>\n {columnName}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {' — '}\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n}\n\nconst rowLinkSx = {\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': { textDecoration: 'underline' },\n} as const\n\nconst bannerBaseSx = {\n border: '1px solid',\n borderLeft: '4px solid',\n borderRadius: 1,\n mb: 1,\n} as const\n\nconst tabSx = { minHeight: 36, py: 0.5 } as const\n\nconst groupSectionHeaderSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n mb: 0.25,\n} as const\n\nconst groupSectionItemSx = {\n pl: 2,\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n gap: 0.5,\n py: 0.25,\n} as const\n\n/** Renders a list of row number links. The first shows \"Row N\"; subsequent\n * items show only the number, separated by a middle dot.\n * Pending entries are dimmed to signal unconfirmed validation state. */\nfunction RowLinks({\n rows,\n navCol,\n onNavigateToCell,\n}: {\n rows: RowEntry[]\n navCol: number\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}) {\n return (\n <>\n {rows.map(({ rowIndex, pending }, j) => (\n <Fragment key={rowIndex}>\n {j > 0 && (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ color: 'text.disabled', userSelect: 'none' }}\n >\n ·\n </Box>\n )}\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(rowIndex, navCol)}\n sx={{ ...rowLinkSx, opacity: pending ? 0.5 : 1 }}\n >\n {j === 0 ? `Row ${rowIndex + 1}` : rowIndex + 1}\n </Link>\n </Fragment>\n ))}\n </>\n )\n}\n\nfunction ByColumnTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([colName, messages]) => {\n const totalCount = Array.from(messages.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {colLabel(colName)}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(messages.entries()).map(([msg, rows]) => (\n <Box key={msg} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5 }}\n >\n {msg}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n ))}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nfunction ByMessageTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([msg, columns]) => {\n const totalCount = Array.from(columns.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n return (\n <Box key={msg}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {msg}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(columns.entries()).map(([colName, rows]) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5, fontStyle: 'italic' }}\n >\n {colLabel(colName)}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n )\n })}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nexport const ValidationAlert = ({\n rowValues,\n columnNames,\n columnOrder,\n onNavigateToCell,\n isLoading = false,\n}: ValidationAlertProps) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [groupBy, setGroupBy] = useState<GroupBy>('row')\n\n const allErrors = useMemo((): ValidationError[] => {\n const errors: ValidationError[] = []\n rowValues.forEach((row, rowIndex) => {\n const status = row.__validationStatus\n if (status !== 'invalid' && status !== 'pending') return\n const pending = status === 'pending'\n row.__cellValidationResults?.forEach((messages, columnName) => {\n messages.forEach(message =>\n errors.push({ rowIndex, columnName, message, pending }),\n )\n })\n })\n return errors\n }, [rowValues])\n\n // columnName → messageText → RowEntry[]\n const byColumn = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(columnName)) groups.set(columnName, new Map())\n const colGroup = groups.get(columnName)!\n if (!colGroup.has(message)) colGroup.set(message, [])\n colGroup.get(message)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n // messageText → columnName → RowEntry[]\n const byMessage = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(message)) groups.set(message, new Map())\n const msgGroup = groups.get(message)!\n if (!msgGroup.has(columnName)) msgGroup.set(columnName, [])\n msgGroup.get(columnName)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n const shouldExpand = isExpanded && allErrors.length > 0\n\n const firstError = allErrors[0]\n\n if (isLoading) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'divider',\n borderLeftColor: 'divider',\n px: 2,\n py: 2,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={14} margin=\"0\" />\n <Typography variant=\"body1\" color=\"text.secondary\">\n Loading validation errors…\n </Typography>\n </Box>\n )\n }\n\n if (allErrors.length === 0) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'success.main',\n borderLeftColor: 'success.main',\n px: 2,\n py: 2,\n }}\n >\n <Typography variant=\"body1\" color=\"success.main\">\n No validation errors\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'error.main',\n borderLeftColor: 'error.main',\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 2,\n gap: 1,\n }}\n >\n <Typography variant=\"body1\" fontWeight=\"bold\">\n Validation errors\n </Typography>\n <Chip label={allErrors.length} color=\"error\" size=\"small\" />\n <Link\n component=\"button\"\n variant=\"body1\"\n onClick={() => setIsExpanded(p => !p)}\n sx={{ cursor: 'pointer', flexShrink: 0, fontWeight: 'normal' }}\n >\n {shouldExpand ? 'Collapse' : 'Expand'}\n </Link>\n {!shouldExpand && (\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() =>\n onNavigateToCell(\n firstError.rowIndex,\n Math.max(\n 0,\n getColDisplayIndex(\n firstError.columnName,\n columnNames,\n columnOrder,\n ),\n ),\n )\n }\n noWrap\n sx={{\n textAlign: 'left',\n ml: 'auto',\n ...rowLinkSx,\n opacity: firstError.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={firstError.columnName}\n message={firstError.message}\n rowIndex={firstError.rowIndex}\n />\n </Link>\n )}\n </Box>\n\n {/* Expanded panel */}\n <Collapse in={shouldExpand}>\n <Tabs\n value={groupBy}\n onChange={(_, v: GroupBy) => setGroupBy(v)}\n textColor=\"inherit\"\n sx={{\n px: 2,\n minHeight: 36,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n TabIndicatorProps={{ style: { height: 2 } }}\n >\n <Tab label=\"By row\" value=\"row\" sx={tabSx} />\n <Tab label=\"By column\" value=\"column\" sx={tabSx} />\n <Tab label=\"By message\" value=\"message\" sx={tabSx} />\n </Tabs>\n\n <Box sx={{ px: 2, py: 1, maxHeight: 200, overflowY: 'auto' }}>\n {/* ── By row ─────────────────────────────────────────── */}\n {groupBy === 'row' && (\n <Stack divider={<Divider />}>\n {allErrors.map((error, i) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(\n error.columnName,\n columnNames,\n columnOrder,\n ),\n )\n return (\n <Link\n key={i}\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(error.rowIndex, navCol)}\n sx={{\n textAlign: 'left',\n py: 0.5,\n ...rowLinkSx,\n opacity: error.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={error.columnName}\n message={error.message}\n rowIndex={error.rowIndex}\n />\n </Link>\n )\n })}\n </Stack>\n )}\n\n {/* ── By column ──────────────────────────────────────── */}\n {groupBy === 'column' && (\n <ByColumnTab\n groups={byColumn}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n\n {/* ── By message ─────────────────────────────────────── */}\n {groupBy === 'message' && (\n <ByMessageTab\n groups={byMessage}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n </Box>\n </Collapse>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAwCA,SAAS6B,EACPC,GACAP,GACAC,GACQ;AACR,QAAOA,EAAYO,WAAUC,MAAKT,EAAYS,OAAOF,EAAQ;;AAI/D,SAASG,EAASH,GAAyB;AACzC,QAAOA,MAAY,SAAS,cAAcA;;AAI5C,SAAAI,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAmB,EAAArB,eAAAC,YAAAF,gBAAAoB,GASjBG,IAAkB,SAASvB,IAAW,EAAC;AACvC,KAAIC,MAAe,QAAM;EAAA,IAAAuB;AAAA,EAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAGOF,IAAA,EAAAG,YAAc,UAAU,EAAAN,EAAA,KAAAG,KAAAA,IAAAH,EAAA;EAAA,IAAAO;AAIjD,SAJiDP,EAAA,OAAAnB,KAAAmB,EAAA,OAAAE,KADpDK,IAAA,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;GAAe,WAAA;GAAW,IAAAJ;aAA1B,CACGtB,GACAqB,EACG;MACL,CAAA,EAAAF,EAAA,KAAAnB,GAAAmB,EAAA,KAAAE,GAAAF,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IALHO;;CAOH,IAAAJ;AAAA,CAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAG6BF,IAAA,EAAAG,YAAc,QAAQ,EAAAN,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAAA,IAAAO;AAAA,CAAAP,EAAA,OAAApB,IAE1C2B,IAAAP,EAAA,MAFNO,IAAA,kBAAC,GAAD;EAAe,WAAA;EAAW,IAAAJ;YACvBvB;EACG,CAAA,EAAAoB,EAAA,KAAApB,GAAAoB,EAAA,KAAAO;CAAA,IAAAC;AAAA,CAAAR,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IACoBG,IAAA,EAAAF,YAAc,UAAU,EAAAN,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAS;AAAA,CAAAT,EAAA,OAAAnB,KAAAmB,EAAA,OAAAE,KAAlDO,IAAA,kBAAC,GAAD;EAAe,WAAA;EAAW,IAAAD;YAA1B;GACG;GACA3B;GACAqB;GACG;KAAAF,EAAA,KAAAnB,GAAAmB,EAAA,KAAAE,GAAAF,EAAA,MAAAS,KAAAA,IAAAT,EAAA;CAAA,IAAAU;AACL,QADKV,EAAA,QAAAO,KAAAP,EAAA,QAAAS,KARRC,IAAA,kBAAA,GAAA,EAAA,UAAA,CACEH,GAGAE,EAKC,EAAA,CAAA,EAAAT,EAAA,MAAAO,GAAAP,EAAA,MAAAS,GAAAT,EAAA,MAAAU,KAAAA,IAAAV,EAAA,KATHU;;AAaJ,IAAMC,KAAY;CAChBC,gBAAgB;CAChBC,QAAQ;CACR,WAAW,EAAED,gBAAgB,aAAY;CAC1C,EAEKG,KAAe;CACnBC,QAAQ;CACRC,YAAY;CACZC,cAAc;CACdC,IAAI;CACL,EAEKC,IAAQ;CAAEC,WAAW;CAAIC,IAAI;CAAK,EAElCC,IAAuB;CAC3BC,SAAS;CACTC,YAAY;CACZC,KAAK;CACLP,IAAI;CACL,EAEKQ,IAAqB;CACzBC,IAAI;CACJJ,SAAS;CACTC,YAAY;CACZI,UAAU;CACVH,KAAK;CACLJ,IAAI;CACL;AAKD,SAAAQ,EAAA/B,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAkB,EAAA8B,SAAAC,WAAA3C,wBAAAU,GAQjBI;AAAA,KAAAH,EAAA,OAAAgC,KAAAhC,EAAA,OAAAX,KAAAW,EAAA,OAAA+B,GAAA;EAAA,IAAAxB;AAwBOP,EAxBPA,EAAA,OAAAgC,KAAAhC,EAAA,OAAAX,KAGekB,KAAAC,GAAAyB,MAAA;GAAC,IAAA,EAAAtD,aAAAG,eAAA0B;AAAqB,UAC9B,kBAAC,GAAD,EAAA,UAAA,CACGyB,IAAI,KACH,kBAAC,GAAD;IACY,WAAA;IACV,eAAA;IACI,IAAA;KAAAC,OAAS;KAAeC,YAAc;KAAO;cAClD;IAGH,CAAA,EACA,kBAAC,GAAD;IACY,WAAA;IACF,SAAA;IACF,OAAA;IACG,eAAM9C,EAAiBV,GAAUqD,EAAM;IAC5C,IAAA;KAAA,GAAKrB;KAASyB,SAAWtD,IAAA,KAAA;KAAkB;cAE9CmD,MAAM,IAAN,OAAiBtD,IAAW,MAAMA,IAAW;IAElD,CAAA,CAAW,EAAA,EAnBIA,EAmBJ;KACZqB,EAAA,KAAAgC,GAAAhC,EAAA,KAAAX,GAAAW,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IArBAG,IAAA4B,EAAIM,IAAK9B,EAqBR,EAAAP,EAAA,KAAAgC,GAAAhC,EAAA,KAAAX,GAAAW,EAAA,KAAA+B,GAAA/B,EAAA,KAAAG;OAAAA,KAAAH,EAAA;CAAA,IAAAO;AACD,QADCP,EAAA,OAAAG,IACDI,IAAAP,EAAA,MAvBHO,IAAA,kBAAA,GAAA,EAAA,UACGJ,GAsBA,CAAA,EAAAH,EAAA,KAAAG,GAAAH,EAAA,KAAAO,IAvBHA;;AA2BJ,SAAA+B,GAAAvC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAqB,EAAAsC,WAAApD,gBAAAC,gBAAAC,wBAAAU,GAKyCI;AAAA,CAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAE1CF,IAAA,kBAAC,GAAD,EAAW,CAAA,EAAAH,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAAA,IAAAO;AAqCnB,QArCmBP,EAAA,OAAAb,KAAAa,EAAA,OAAAZ,KAAAY,EAAA,OAAAuC,KAAAvC,EAAA,OAAAX,KAA3BkB,IAAA,kBAAC,GAAD;EAAgB,SAAAJ;EAAsB,SAAA;YACnCqC,MAAKC,KAAMF,EAAMG,SAAU,CAAC,CAAAL,KAAK7B,MAAA;GAAC,IAAA,CAAAd,GAAAiD,KAAAnC,GACjCoC,IAAmBJ,MAAKC,KAAME,EAAQE,QAAS,CAAC,CAAAC,OAC9CC,IACA,EACD,EACDf,IAAegB,KAAIC,IACjB,GACAxD,EAAmBC,GAASP,GAAaC,EAC3C,CAAC;AAAA,UAEC,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAASmC,IAAAA;cAAT,CACE,kBAAC,GAAD;KAAoB,SAAA;KAAmB,YAAA;eACpC1B,EAASH,EAAO;KAEnB,CAAA,EAAA,kBAAC,GAAD;KAAakD,OAAAA;KAAkB,OAAA;KAAa,MAAA;KAC9C,CAAA,CACC;OAAAJ,MAAKC,KAAME,EAAQD,SAAU,CAAC,CAAAL,KAAK5B,MAAA;IAAC,IAAA,CAAAyC,GAAAC,KAAA1C;AAAW,WAC9C,kBAAC,GAAD;KAAmBkB,IAAAA;eAAnB,CACE,kBAAC,GAAD;MACU,SAAA;MACF,OAAA;MACF,IAAA,EAAAyB,IAAM,IAAI;gBAEbF;MAEH,CAAA,EAAA,kBAAC,GAAD;MACQnB,MAAAA;MACEC;MACU3C;MAEtB,CAAA,CAAM;OAbI6D,EAaJ;KACP,CACG,EAAA,EAvBIxD,EAuBJ;IAET;EACK,CAAA,EAAAM,EAAA,KAAAb,GAAAa,EAAA,KAAAZ,GAAAY,EAAA,KAAAuC,GAAAvC,EAAA,KAAAX,GAAAW,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IArCRO;;AAPJ,SAAAwC,GAAAM,GAAAtB,GAAA;AAAA,QAUyBsB,IAAMtB,EAAIuB;;AAsCnC,SAAAC,GAAAxD,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAsB,EAAAsC,WAAApD,gBAAAC,gBAAAC,wBAAAU,GAKwCI;AAAA,CAAAH,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAE1CF,IAAA,kBAAC,GAAD,EAAW,CAAA,EAAAH,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CAAA,IAAAO;AAuCnB,QAvCmBP,EAAA,OAAAb,KAAAa,EAAA,OAAAZ,KAAAY,EAAA,OAAAuC,KAAAvC,EAAA,OAAAX,KAA3BkB,IAAA,kBAAC,GAAD;EAAgB,SAAAJ;EAAsB,SAAA;YACnCqC,MAAKC,KAAMF,EAAMG,SAAU,CAAC,CAAAL,KAAK7B,MAAA;GAAC,IAAA,CAAA0C,GAAAM,KAAAhD,GACjCoC,IAAmBJ,MAAKC,KAAMe,EAAOX,QAAS,CAAC,CAAAC,OAC7CW,IACA,EACD;AAAA,UAEC,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAASlC,IAAAA;cAAT,CACE,kBAAC,GAAD;KAAoB,SAAA;KAAmB,YAAA;eACpC2B;KAEH,CAAA,EAAA,kBAAC,GAAD;KAAaN,OAAAA;KAAkB,OAAA;KAAa,MAAA;KAC9C,CAAA,CACC;OAAAJ,MAAKC,KAAMe,EAAOd,SAAU,CAAC,CAAAL,KAAK5B,MAAA;IAAC,IAAA,CAAAf,GAAAyD,KAAA1C,GAClCuB,IAAegB,KAAIC,IACjB,GACAxD,EAAmBC,GAASP,GAAaC,EAC3C,CAAC;AAAA,WAEC,kBAAC,GAAD;KAAuBuC,IAAAA;eAAvB,CACE,kBAAC,GAAD;MACU,SAAA;MACF,OAAA;MACF,IAAA;OAAAyB,IAAM;OAAGM,WAAa;OAAS;gBAElC7D,EAASH,EAAO;MAEnB,CAAA,EAAA,kBAAC,GAAD;MACQqC,MAAAA;MACEC;MACU3C;MAEtB,CAAA,CAAM;OAbIK,EAaJ;KAET,CACG,EAAA,EA7BIwD,EA6BJ;IAET;EACK,CAAA,EAAAlD,EAAA,KAAAb,GAAAa,EAAA,KAAAZ,GAAAY,EAAA,KAAAuC,GAAAvC,EAAA,KAAAX,GAAAW,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAvCRO;;AAPJ,SAAAkD,GAAAJ,GAAAtB,GAAA;AAAA,QAUyBsB,IAAMtB,EAAIuB;;AAwCnC,IAAaK,MAAkB5D,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAf,cAAAC,gBAAAC,gBAAAC,qBAAAE,WAAAY,OAAAJ,GAK9BR,KAAAY,OAAAyD,KAAAA,IAAA,KAAAzD,IAEA,CAAA0D,IAAAC,MAAoCtF,EAAS,GAAM,EACnD,CAAAuF,GAAAC,MAA8BxF,EAAkB,MAAM,EAAAyF;AAAA,CAAAjE,EAAA,OAAAd,IAalD+E,IAAAjE,EAAA,MAVFiE,IAAkC,EAAE,EACpC/E,EAASgF,SAASC,GAAAxF,MAAA;EAChB,IAAAyF,IAAeD,EAAGE;AAClB,MAAID,MAAW,aAAaA,MAAW,UAAS;EAChD,IAAAtF,IAAgBsF,MAAW;AAC3BD,IAAGG,yBAAiCJ,SAACvB,GAAA/D,MAAA;AACnC+D,KAAQuB,SAASrF,MACfoF,EAAMM,KAAM;IAAA5F;IAAAC;IAAAC;IAAAC;IAA0C,CACxD,CAAC;IACD;GACF,EAAAkB,EAAA,KAAAd,GAAAc,EAAA,KAAAiE;CAXJ,IAAAO,IAYEP,GACa1B;AAAA,CAAAvC,EAAA,OAAAwE,IAUXjC,IAAAvC,EAAA,MANFuC,oBAAe,IAAIkC,KAAsC,EACzDD,EAASN,SAAS3D,MAAA;EAAC,IAAA,EAAA5B,UAAA+F,GAAA9F,YAAA+F,GAAA9F,SAAA+F,GAAA9F,SAAA+F,MAAAtE;AACjB,EAAKgC,EAAMuC,IAAKlG,EAAW,IAAE2D,EAAMwC,IAAKnG,mBAAY,IAAI6F,KAAK,CAAC;EAC9D,IAAAO,IAAiBzC,EAAM0C,IAAKrG,EAAW;AAEvCoG,EADKA,EAAQF,IAAKjG,EAAQ,IAAEmG,EAAQD,IAAKlG,GAAS,EAAE,CAAC,EACrDmG,EAAQC,IAAKpG,EAAQ,CAAA0F,KAAO;GAAA5F,UAAEA;GAAQG,SAAEA;GAAS,CAAC;GAClD,EAAAkB,EAAA,KAAAwE,GAAAxE,EAAA,KAAAuC;CAPJ,IAAA2C,KAQE3C,GACa4C;AAAA,CAAAnF,EAAA,OAAAwE,IAUXW,IAAAnF,EAAA,MANFmF,oBAAe,IAAIV,KAAsC,EACzDD,EAASN,SAAS3D,MAAA;EAAC,IAAA,EAAA5B,UAAAyG,GAAAxG,YAAAyG,GAAAxG,SAAAyG,GAAAxG,SAAAyG,MAAAhF;AACjB,EAAKgC,EAAMuC,IAAKjG,EAAQ,IAAE0D,EAAMwC,IAAKlG,mBAAS,IAAI4F,KAAK,CAAC;EACxD,IAAAe,IAAiBjD,EAAM0C,IAAKpG,EAAQ;AAEpC2G,EADKA,EAAQV,IAAKlG,EAAW,IAAE4G,EAAQT,IAAKnG,GAAY,EAAE,CAAC,EAC3D4G,EAAQP,IAAKrG,EAAW,CAAA2F,KAAO;GAAA5F,UAAEA;GAAQG,SAAEA;GAAS,CAAC;GACrD,EAAAkB,EAAA,KAAAwE,GAAAxE,EAAA,KAAAmF;CAPJ,IAAAM,IAQEN,GAGFO,IAAqB7B,MAAcW,EAASlB,SAAU,GAEtDqC,IAAmBnB,EAAS;AAE5B,KAAIjF,IAAS;EAAA,IAAAgB;AAkBH,SAlBGP,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAETE,IAAA,kBAAC,GAAD;GACM,IAAA;IAAA,GACCQ;IAAY6E,aACF;IAASC,iBACL;IAASC,IACtB;IAACxE,IACD;IAACE,SACI;IAAMC,YACH;IAAQC,KACf;IACP;aAVF,CAYE,kBAAC,GAAD;IAAsB,MAAA;IAAW,QAAA;IACjC,CAAA,EAAA,kBAAC,GAAD;IAAoB,SAAA;IAAc,OAAA;cAAiB;IAGrD,CAAA,CAAM;MAAA1B,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAhBNO;;AAoBJ,KAAIiE,EAASlB,WAAY,GAAC;EAAA,IAAA/C;AAchB,SAdgBP,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAEtBE,IAAA,kBAAC,GAAD;GACM,IAAA;IAAA,GACCQ;IAAY6E,aACF;IAAcC,iBACV;IAAcC,IAC3B;IAACxE,IACD;IACN;aAEA,kBAAC,GAAD;IAAoB,SAAA;IAAc,OAAA;cAAe;IAGnD,CAAA;GAAM,CAAA,EAAAtB,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAZNO;;CAcH,IAAAA;AAAA,CAAAP,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAIOE,IAAA;EAAA,GACCQ;EAAY6E,aACF;EAAYC,iBACR;EAClB,EAAA7F,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ,GAAAC;AAAA,CAAAT,EAAA,OAAAI,OAAAC,IAAA,4BAAA,IAIKG,IAAA;EAAAgB,SACO;EAAMC,YACH;EAAQqE,IAChB;EAACxE,IACD;EAACI,KACA;EACN,EAEDjB,IAAA,kBAAC,GAAD;EAAoB,SAAA;EAAmB,YAAA;YAAO;EAEjC,CAAA,EAAAT,EAAA,KAAAQ,GAAAR,EAAA,MAAAS,MAAAD,IAAAR,EAAA,IAAAS,IAAAT,EAAA;CAAA,IAAAU;AAAA,CAAAV,EAAA,QAAAwE,EAAAlB,SAC+C5C,IAAAV,EAAA,OAA5DU,IAAA,kBAAC,GAAD;EAAa,OAAA8D,EAASlB;EAAe,OAAA;EAAa,MAAA;EAAU,CAAA,EAAAtD,EAAA,MAAAwE,EAAAlB,QAAAtD,EAAA,MAAAU;CAAA,IAAAqF,GAAAC;AAAA,CAAAhG,EAAA,QAAAI,OAAAC,IAAA,4BAAA,IAIjD0F,UAAMjC,GAAcmC,GAAQ,EACjCD,IAAA;EAAAnF,QAAU;EAASqF,YAAc;EAAC5F,YAAc;EAAU,EAAAN,EAAA,MAAA+F,GAAA/F,EAAA,MAAAgG,MAAAD,IAAA/F,EAAA,KAAAgG,IAAAhG,EAAA;CAE7D,IAAAmG,IAAAT,IAAA,aAAA,UAAoCU;AAAA,CAAApG,EAAA,QAAAmG,IAChCC,IAAApG,EAAA,OAPPoG,IAAA,kBAAC,GAAD;EACY,WAAA;EACF,SAAA;EACC,SAAAL;EACL,IAAAC;YAEHG;EACI,CAAA,EAAAnG,EAAA,MAAAmG,GAAAnG,EAAA,MAAAoG;CAAA,IAAAC;AAAA,CAAArG,EAAA,QAAAb,KAAAa,EAAA,QAAAZ,KAAAY,EAAA,QAAA2F,KAAA3F,EAAA,QAAAX,KAAAW,EAAA,QAAA0F,KACNW,IAAA,CAACX,KACA,kBAAC,GAAD;EACY,WAAA;EACF,SAAA;EACF,OAAA;EACG,eACPrG,EACEsG,EAAUhH,UACVqE,KAAIC,IACF,GACAxD,EACEkG,EAAU/G,YACVO,GACAC,EAEJ,CACF,CAAA;EAEF,QAAA;EACI,IAAA;GAAAkH,WACS;GAAMC,IACb;GAAM,GACP5F;GAASyB,SACHuD,EAAU7G,UAAV,KAAA;GACX;YAEA,kBAAC,IAAD;GACc,YAAA6G,EAAU/G;GACb,SAAA+G,EAAU9G;GACT,UAAA8G,EAAUhH;GAExB,CAAA;EACD,CAAA,EAAAqB,EAAA,MAAAb,GAAAa,EAAA,MAAAZ,GAAAY,EAAA,MAAA2F,GAAA3F,EAAA,MAAAX,GAAAW,EAAA,MAAA0F,GAAA1F,EAAA,MAAAqG,KAAAA,IAAArG,EAAA;CAAA,IAAAwG;AAAA,CAAAxG,EAAA,QAAAqG,KAAArG,EAAA,QAAAU,KAAAV,EAAA,QAAAoG,KArDHI,IAAA,kBAAC,GAAD;EACM,IAAAhG;YADN;GASEC;GAGAC;GACA0F;GAQCC;GAiCG;KAAArG,EAAA,MAAAqG,GAAArG,EAAA,MAAAU,GAAAV,EAAA,MAAAoG,GAAApG,EAAA,MAAAwG,KAAAA,IAAAxG,EAAA;CAAA,IAAAyG;AAAA,CAAAzG,EAAA,QAAAI,OAAAC,IAAA,4BAAA,IAMQoG,KAAAC,GAAAC,MAAmB3C,GAAW2C,EAAE,EAAA3G,EAAA,MAAAyG,KAAAA,IAAAzG,EAAA;CAAA,IAAA4G,GAAAC,GAAAC,GAAAC,GAAAC;AAAA,CAAAhH,EAAA,QAAAI,OAAAC,IAAA,4BAAA,IAEtCuG,IAAA;EAAAd,IACE;EAACzE,WACM;EAAE4F,WACF;EAAWrB,aACT;EACd,EACkBiB,IAAA,EAAAK,OAAS,EAAAC,QAAU,GAAE,EAAG,EAE3CL,IAAA,kBAAC,GAAD;EAAW,OAAA;EAAe,OAAA;EAAU1F,IAAAA;EAAS,CAAA,EAC7C2F,IAAA,kBAAC,GAAD;EAAW,OAAA;EAAkB,OAAA;EAAa3F,IAAAA;EAAS,CAAA,EACnD4F,IAAA,kBAAC,GAAD;EAAW,OAAA;EAAmB,OAAA;EAAc5F,IAAAA;EAAS,CAAA,EAAApB,EAAA,MAAA4G,GAAA5G,EAAA,MAAA6G,GAAA7G,EAAA,MAAA8G,GAAA9G,EAAA,MAAA+G,GAAA/G,EAAA,MAAAgH,MAAAJ,IAAA5G,EAAA,KAAA6G,IAAA7G,EAAA,KAAA8G,IAAA9G,EAAA,KAAA+G,IAAA/G,EAAA,KAAAgH,IAAAhH,EAAA;CAAA,IAAAoH;AAAA,CAAApH,EAAA,QAAA+D,IAChDqD,IAAApH,EAAA,OAfPoH,IAAA,kBAAC,GAAD;EACSrD,OAAAA;EACG,UAAA0C;EACA,WAAA;EACN,IAAAG;EAMe,mBAAAC;YAVrB;GAYEC;GACAC;GACAC;GACK;KAAAhH,EAAA,MAAA+D,GAAA/D,EAAA,MAAAoH;CAAA,IAAAC;AAAA,CAAArH,EAAA,QAAAI,OAAAC,IAAA,4BAAA,IAEEgH,IAAA;EAAAvB,IAAM;EAACxE,IAAM;EAACgG,WAAa;EAAGC,WAAa;EAAQ,EAAAvH,EAAA,MAAAqH,KAAAA,IAAArH,EAAA;CAAA,IAAAwH;AAAA,CAAAxH,EAAA,QAAAwE,KAAAxE,EAAA,QAAAb,KAAAa,EAAA,QAAAZ,KAAAY,EAAA,QAAA+D,KAAA/D,EAAA,QAAAX,KAEzDmI,IAAAzD,MAAY,SACX,kBAAC,GAAD;EAAgB,SAAA,kBAAC,GAAD,EAAU,CAAA;YACvBS,EAASnC,KAAKoF,GAAA7H,MAAA;GACb,IAAAoC,IAAegB,KAAIC,IACjB,GACAxD,EACEgI,EAAK7I,YACLO,GACAC,EAEJ,CAAC;AAAA,UAEC,kBAAC,GAAD;IAEY,WAAA;IACF,SAAA;IACF,OAAA;IACG,eAAMC,EAAiBoI,EAAK9I,UAAWqD,EAAM;IAClD,IAAA;KAAAsE,WACS;KAAMhF,IACb;KAAG,GACJX;KAASyB,SACHqF,EAAK3I,UAAL,KAAA;KACX;cAEA,kBAAC,IAAD;KACc,YAAA2I,EAAK7I;KACR,SAAA6I,EAAK5I;KACJ,UAAA4I,EAAK9I;KAEnB,CAAA;IAAO,EAjBAiB,EAiBA;IAEV;EAEJ,CAAA,EAAAI,EAAA,MAAAwE,GAAAxE,EAAA,MAAAb,GAAAa,EAAA,MAAAZ,GAAAY,EAAA,MAAA+D,GAAA/D,EAAA,MAAAX,GAAAW,EAAA,MAAAwH,KAAAA,IAAAxH,EAAA;CAAA,IAAA0H;AAAA,CAAA1H,EAAA,QAAAkF,MAAAlF,EAAA,QAAAb,KAAAa,EAAA,QAAAZ,KAAAY,EAAA,QAAA+D,KAAA/D,EAAA,QAAAX,KAGAqI,IAAA3D,MAAY,YACX,kBAAC,IAAD;EACUmB,QAAAA;EACK/F;EACAC;EACKC;EAErB,CAAA,EAAAW,EAAA,MAAAkF,IAAAlF,EAAA,MAAAb,GAAAa,EAAA,MAAAZ,GAAAY,EAAA,MAAA+D,GAAA/D,EAAA,MAAAX,GAAAW,EAAA,MAAA0H,KAAAA,IAAA1H,EAAA;CAAA,IAAA2H;AAAA,CAAA3H,EAAA,QAAAyF,KAAAzF,EAAA,QAAAb,KAAAa,EAAA,QAAAZ,KAAAY,EAAA,QAAA+D,KAAA/D,EAAA,QAAAX,KAGAsI,IAAA5D,MAAY,aACX,kBAAC,IAAD;EACU0B,QAAAA;EACKtG;EACAC;EACKC;EAErB,CAAA,EAAAW,EAAA,MAAAyF,GAAAzF,EAAA,MAAAb,GAAAa,EAAA,MAAAZ,GAAAY,EAAA,MAAA+D,GAAA/D,EAAA,MAAAX,GAAAW,EAAA,MAAA2H,KAAAA,IAAA3H,EAAA;CAAA,IAAA4H;AAAA,CAAA5H,EAAA,QAAAwH,KAAAxH,EAAA,QAAA0H,KAAA1H,EAAA,QAAA2H,KAxDHC,IAAA,kBAAC,GAAD;EAAS,IAAAP;YAAT;GAEGG;GAqCAE;GAUAC;GAQG;KAAA3H,EAAA,MAAAwH,GAAAxH,EAAA,MAAA0H,GAAA1H,EAAA,MAAA2H,GAAA3H,EAAA,MAAA4H,KAAAA,IAAA5H,EAAA;CAAA,IAAA6H;AAAA,CAAA7H,EAAA,QAAA0F,KAAA1F,EAAA,QAAAoH,KAAApH,EAAA,QAAA4H,KA3ERC,IAAA,kBAAC,GAAD;EAAcnC,IAAAA;YAAd,CACE0B,GAiBAQ,EA0DS;KAAA5H,EAAA,MAAA0F,GAAA1F,EAAA,MAAAoH,GAAApH,EAAA,MAAA4H,GAAA5H,EAAA,MAAA6H,KAAAA,IAAA7H,EAAA;CAAA,IAAA8H;AACP,QADO9H,EAAA,QAAAwG,KAAAxG,EAAA,QAAA6H,KA7IbC,IAAA,kBAAC,GAAD;EACM,IAAAvH;YADN,CAQEiG,GAyDAqB,EA6EI;KAAA7H,EAAA,MAAAwG,GAAAxG,EAAA,MAAA6H,GAAA7H,EAAA,MAAA8H,KAAAA,IAAA9H,EAAA,KA9IN8H;;AA9F2B,SAAA7B,GAAA8B,GAAA;AAAA,QAsHa,CAACA"}
|
|
1
|
+
{"version":3,"file":"ValidationAlert.js","names":["DataGridRow","Box","Chip","Collapse","Divider","Link","Stack","Tab","Tabs","Typography","Fragment","useMemo","useState","SynapseSpinner","ValidationError","rowIndex","columnName","message","pending","RowEntry","GroupBy","ValidationAlertProps","rowValues","columnNames","columnOrder","onNavigateToCell","colIndex","isLoading","NavProps","getColDisplayIndex","colName","findIndex","i","colLabel","ErrorText","t0","$","_c","rowSuffix","t1","Symbol","for","fontWeight","t2","t3","t4","t5","rowLinkSx","textDecoration","cursor","const","bannerBaseSx","border","borderLeft","borderRadius","mb","tabSx","minHeight","py","groupSectionHeaderSx","display","alignItems","gap","groupSectionItemSx","pl","flexWrap","RowLinks","rows","navCol","j","color","userSelect","opacity","map","ByColumnTab","groups","Array","from","entries","messages","totalCount","values","reduce","_temp","Math","max","msg","rows_0","mr","sum","length","ByMessageTab","columns","_temp2","fontStyle","ValidationAlert","undefined","isExpanded","setIsExpanded","groupBy","setGroupBy","errors","forEach","row","status","__validationStatus","__cellValidationResults","push","allErrors","Map","rowIndex_0","columnName_0","message_0","pending_0","has","set","colGroup","get","byColumn","groups_0","rowIndex_1","columnName_1","message_1","pending_1","msgGroup","byMessage","shouldExpand","firstError","borderColor","borderLeftColor","px","t6","t7","_temp3","flexShrink","t8","t9","t10","textAlign","ml","t11","t12","_","v","t13","t14","t15","t16","t17","borderTop","style","height","t18","t19","maxHeight","overflowY","t20","error","t21","t22","t23","t24","t25","p"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import { DataGridRow } from '../DataGridTypes'\nimport {\n Box,\n Chip,\n Collapse,\n Divider,\n Link,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from '@mui/material'\nimport { Fragment, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\ntype ValidationError = {\n rowIndex: number\n columnName: string\n message: string\n pending: boolean\n}\n\ntype RowEntry = { rowIndex: number; pending: boolean }\n\ntype GroupBy = 'row' | 'column' | 'message'\n\ntype ValidationAlertProps = {\n rowValues: DataGridRow[]\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n isLoading?: boolean\n}\n\ntype NavProps = {\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}\n\nfunction getColDisplayIndex(\n colName: string,\n columnNames: string[],\n columnOrder: number[],\n): number {\n return columnOrder.findIndex(i => columnNames[i] === colName)\n}\n\n/** Column name for display — '_row' becomes 'Row-level'. */\nfunction colLabel(colName: string): string {\n return colName === '_row' ? 'Row-level' : colName\n}\n\n/** Renders a column name + message pair with distinct styles. */\nfunction ErrorText({\n columnName,\n message,\n rowIndex,\n}: {\n columnName: string\n message: string\n rowIndex: number\n}) {\n const rowSuffix = ` (Row ${rowIndex + 1})`\n if (columnName === '_row') {\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n }\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'bold' }}>\n {columnName}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {' — '}\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n}\n\nconst rowLinkSx = {\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': { textDecoration: 'underline' },\n} as const\n\nconst bannerBaseSx = {\n border: '1px solid',\n borderLeft: '4px solid',\n borderRadius: 1,\n mb: 1,\n} as const\n\nconst tabSx = { minHeight: 36, py: 0.5 } as const\n\nconst groupSectionHeaderSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n mb: 0.25,\n} as const\n\nconst groupSectionItemSx = {\n pl: 2,\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n gap: 0.5,\n py: 0.25,\n} as const\n\n/** Renders a list of row number links. The first shows \"Row N\"; subsequent\n * items show only the number, separated by a middle dot.\n * Pending entries are dimmed to signal unconfirmed validation state. */\nfunction RowLinks({\n rows,\n navCol,\n onNavigateToCell,\n}: {\n rows: RowEntry[]\n navCol: number\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}) {\n return (\n <>\n {rows.map(({ rowIndex, pending }, j) => (\n <Fragment key={rowIndex}>\n {j > 0 && (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ color: 'text.disabled', userSelect: 'none' }}\n >\n ·\n </Box>\n )}\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(rowIndex, navCol)}\n sx={{ ...rowLinkSx, opacity: pending ? 0.5 : 1 }}\n >\n {j === 0 ? `Row ${rowIndex + 1}` : rowIndex + 1}\n </Link>\n </Fragment>\n ))}\n </>\n )\n}\n\nfunction ByColumnTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([colName, messages]) => {\n const totalCount = Array.from(messages.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {colLabel(colName)}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(messages.entries()).map(([msg, rows]) => (\n <Box key={msg} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5 }}\n >\n {msg}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n ))}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nfunction ByMessageTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([msg, columns]) => {\n const totalCount = Array.from(columns.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n return (\n <Box key={msg}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {msg}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(columns.entries()).map(([colName, rows]) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5, fontStyle: 'italic' }}\n >\n {colLabel(colName)}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n )\n })}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nexport const ValidationAlert = ({\n rowValues,\n columnNames,\n columnOrder,\n onNavigateToCell,\n isLoading = false,\n}: ValidationAlertProps) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [groupBy, setGroupBy] = useState<GroupBy>('row')\n\n const allErrors = useMemo((): ValidationError[] => {\n const errors: ValidationError[] = []\n rowValues.forEach((row, rowIndex) => {\n const status = row.__validationStatus\n if (status !== 'invalid' && status !== 'pending') return\n const pending = status === 'pending'\n row.__cellValidationResults?.forEach((messages, columnName) => {\n messages.forEach(message =>\n errors.push({ rowIndex, columnName, message, pending }),\n )\n })\n })\n return errors\n }, [rowValues])\n\n // columnName → messageText → RowEntry[]\n const byColumn = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(columnName)) groups.set(columnName, new Map())\n const colGroup = groups.get(columnName)!\n if (!colGroup.has(message)) colGroup.set(message, [])\n colGroup.get(message)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n // messageText → columnName → RowEntry[]\n const byMessage = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(message)) groups.set(message, new Map())\n const msgGroup = groups.get(message)!\n if (!msgGroup.has(columnName)) msgGroup.set(columnName, [])\n msgGroup.get(columnName)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n const shouldExpand = isExpanded && allErrors.length > 0\n\n const firstError = allErrors[0]\n\n if (isLoading) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'divider',\n borderLeftColor: 'divider',\n px: 2,\n py: 2,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={14} margin=\"0\" />\n <Typography variant=\"body1\" color=\"text.secondary\">\n Loading validation errors…\n </Typography>\n </Box>\n )\n }\n\n if (allErrors.length === 0) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'success.main',\n borderLeftColor: 'success.main',\n px: 2,\n py: 2,\n }}\n >\n <Typography variant=\"body1\" color=\"success.main\">\n No validation errors\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'error.main',\n borderLeftColor: 'error.main',\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 2,\n gap: 1,\n }}\n >\n <Typography variant=\"body1\" fontWeight=\"bold\">\n Validation errors\n </Typography>\n <Chip label={allErrors.length} color=\"error\" size=\"small\" />\n <Link\n component=\"button\"\n variant=\"body1\"\n onClick={() => setIsExpanded(p => !p)}\n sx={{ cursor: 'pointer', flexShrink: 0, fontWeight: 'normal' }}\n >\n {shouldExpand ? 'Collapse' : 'Expand'}\n </Link>\n {!shouldExpand && (\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() =>\n onNavigateToCell(\n firstError.rowIndex,\n Math.max(\n 0,\n getColDisplayIndex(\n firstError.columnName,\n columnNames,\n columnOrder,\n ),\n ),\n )\n }\n noWrap\n sx={{\n textAlign: 'left',\n ml: 'auto',\n ...rowLinkSx,\n opacity: firstError.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={firstError.columnName}\n message={firstError.message}\n rowIndex={firstError.rowIndex}\n />\n </Link>\n )}\n </Box>\n\n {/* Expanded panel */}\n <Collapse in={shouldExpand}>\n <Tabs\n value={groupBy}\n onChange={(_, v: GroupBy) => setGroupBy(v)}\n textColor=\"inherit\"\n sx={{\n px: 2,\n minHeight: 36,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n TabIndicatorProps={{ style: { height: 2 } }}\n >\n <Tab label=\"By row\" value=\"row\" sx={tabSx} />\n <Tab label=\"By column\" value=\"column\" sx={tabSx} />\n <Tab label=\"By message\" value=\"message\" sx={tabSx} />\n </Tabs>\n\n <Box sx={{ px: 2, py: 1, maxHeight: 200, overflowY: 'auto' }}>\n {/* ── By row ─────────────────────────────────────────── */}\n {groupBy === 'row' && (\n <Stack divider={<Divider />}>\n {allErrors.map((error, i) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(\n error.columnName,\n columnNames,\n columnOrder,\n ),\n )\n return (\n <Link\n key={i}\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(error.rowIndex, navCol)}\n sx={{\n textAlign: 'left',\n py: 0.5,\n ...rowLinkSx,\n opacity: error.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={error.columnName}\n message={error.message}\n rowIndex={error.rowIndex}\n />\n </Link>\n )\n })}\n </Stack>\n )}\n\n {/* ── By column ──────────────────────────────────────── */}\n {groupBy === 'column' && (\n <ByColumnTab\n groups={byColumn}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n\n {/* ── By message ─────────────────────────────────────── */}\n {groupBy === 'message' && (\n <ByMessageTab\n groups={byMessage}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n </Box>\n </Collapse>\n </Box>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextMenu.js","names":["createAddRowsComponent","createContextMenuComponent","ContextMenuItem","DataSheetGrid","VIEW_ALLOWED_MENU_ITEMS","AddRowsComponent","renderContextMenuItem","item","type","undefined","BaseViewContextMenuComponent","RecordSetContextMenuComponent","ViewContextMenuComponent","React","FC","ComponentProps","props","$","_c","t0","items","filter","_temp","filteredItems","t1","renderAddRowsComponent","renderViewContextMenu","renderRecordSetContextMenu","includes"],"sources":["../../../../src/components/DataGrid/components/contextMenu.tsx"],"sourcesContent":["import {\n createAddRowsComponent,\n createContextMenuComponent,\n ContextMenuItem,\n DataSheetGrid,\n} from '@sage-bionetworks/react-datasheet-grid'\n\n// Define which context menu items are allowed for tables (a subset)\nconst VIEW_ALLOWED_MENU_ITEMS: ContextMenuItem['type'][] = [\n 'COPY',\n 'PASTE',\n 'CUT',\n]\n\n// Create components outside of render to avoid recreating on every render\nconst AddRowsComponent = createAddRowsComponent()\n\n// Shared render function for context menu items\nconst renderContextMenuItem = (item: ContextMenuItem) => {\n if (item.type === 'COPY') {\n return <>Copy</>\n }\n if (item.type === 'PASTE') {\n return <>Paste</>\n }\n if (item.type === 'CUT') {\n return <>Cut</>\n }\n if (item.type === 'INSERT_ROW_BELLOW') {\n return <>Insert row below</>\n }\n if (item.type === 'DELETE_ROW') {\n return <>Delete row</>\n }\n if (item.type === 'DUPLICATE_ROW') {\n return <>Duplicate row</>\n }\n if (item.type === 'DELETE_ROWS') {\n return <>Delete rows</>\n }\n if (item.type === 'DUPLICATE_ROWS') {\n return <>Duplicate rows</>\n }\n return undefined\n}\n\n// Create base context menus (copy/cut/paste for recordSet, default for views)\nconst BaseViewContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\nconst RecordSetContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\n// Create a wrapper component that filters items for views\nconst ViewContextMenuComponent: React.FC<\n React.ComponentProps<typeof BaseViewContextMenuComponent>\n> = props => {\n // Filter the items to only include allowed ones for views\n const filteredItems = props.items.filter(item =>\n VIEW_ALLOWED_MENU_ITEMS.includes(item.type),\n )\n\n return <BaseViewContextMenuComponent {...props} items={filteredItems} />\n}\n\n// Create stable render functions outside the component\nexport const renderAddRowsComponent: React.ComponentProps<\n typeof DataSheetGrid\n>['addRowsComponent'] = props => <AddRowsComponent {...props} />\n\nexport const renderViewContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => <ViewContextMenuComponent {...props} />\n\nexport const renderRecordSetContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => (\n <RecordSetContextMenuComponent {...props} />\n)\n"],"mappings":";;;;AAQA,IAAMI,IAAqD;CACzD;CACA;CACA;
|
|
1
|
+
{"version":3,"file":"contextMenu.js","names":["createAddRowsComponent","createContextMenuComponent","ContextMenuItem","DataSheetGrid","VIEW_ALLOWED_MENU_ITEMS","AddRowsComponent","renderContextMenuItem","item","type","undefined","BaseViewContextMenuComponent","RecordSetContextMenuComponent","ViewContextMenuComponent","React","FC","ComponentProps","props","$","_c","t0","items","filter","_temp","filteredItems","t1","renderAddRowsComponent","renderViewContextMenu","renderRecordSetContextMenu","includes"],"sources":["../../../../src/components/DataGrid/components/contextMenu.tsx"],"sourcesContent":["import {\n createAddRowsComponent,\n createContextMenuComponent,\n ContextMenuItem,\n DataSheetGrid,\n} from '@sage-bionetworks/react-datasheet-grid'\n\n// Define which context menu items are allowed for tables (a subset)\nconst VIEW_ALLOWED_MENU_ITEMS: ContextMenuItem['type'][] = [\n 'COPY',\n 'PASTE',\n 'CUT',\n]\n\n// Create components outside of render to avoid recreating on every render\nconst AddRowsComponent = createAddRowsComponent()\n\n// Shared render function for context menu items\nconst renderContextMenuItem = (item: ContextMenuItem) => {\n if (item.type === 'COPY') {\n return <>Copy</>\n }\n if (item.type === 'PASTE') {\n return <>Paste</>\n }\n if (item.type === 'CUT') {\n return <>Cut</>\n }\n if (item.type === 'INSERT_ROW_BELLOW') {\n return <>Insert row below</>\n }\n if (item.type === 'DELETE_ROW') {\n return <>Delete row</>\n }\n if (item.type === 'DUPLICATE_ROW') {\n return <>Duplicate row</>\n }\n if (item.type === 'DELETE_ROWS') {\n return <>Delete rows</>\n }\n if (item.type === 'DUPLICATE_ROWS') {\n return <>Duplicate rows</>\n }\n return undefined\n}\n\n// Create base context menus (copy/cut/paste for recordSet, default for views)\nconst BaseViewContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\nconst RecordSetContextMenuComponent = createContextMenuComponent(\n renderContextMenuItem,\n)\n\n// Create a wrapper component that filters items for views\nconst ViewContextMenuComponent: React.FC<\n React.ComponentProps<typeof BaseViewContextMenuComponent>\n> = props => {\n // Filter the items to only include allowed ones for views\n const filteredItems = props.items.filter(item =>\n VIEW_ALLOWED_MENU_ITEMS.includes(item.type),\n )\n\n return <BaseViewContextMenuComponent {...props} items={filteredItems} />\n}\n\n// Create stable render functions outside the component\nexport const renderAddRowsComponent: React.ComponentProps<\n typeof DataSheetGrid\n>['addRowsComponent'] = props => <AddRowsComponent {...props} />\n\nexport const renderViewContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => <ViewContextMenuComponent {...props} />\n\nexport const renderRecordSetContextMenu: React.ComponentProps<\n typeof DataSheetGrid\n>['contextMenuComponent'] = props => (\n <RecordSetContextMenuComponent {...props} />\n)\n"],"mappings":";;;;AAQA,IAAMI,IAAqD;CACzD;CACA;CACA;AAAK,GAIDC,IAAmBL,EAAuB,GAG1CM,KAAyBC,MAA0B;CACvD,IAAIA,EAAKC,SAAS,QAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,OAAI,CAAA;CAEf,IAAID,EAAKC,SAAS,SAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,QAAK,CAAA;CAEhB,IAAID,EAAKC,SAAS,OAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,MAAG,CAAA;CAEd,IAAID,EAAKC,SAAS,qBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,mBAAgB,CAAA;CAE3B,IAAID,EAAKC,SAAS,cAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,aAAU,CAAA;CAErB,IAAID,EAAKC,SAAS,iBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,gBAAa,CAAA;CAExB,IAAID,EAAKC,SAAS,eAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,cAAW,CAAA;CAEtB,IAAID,EAAKC,SAAS,kBAChB,OAAO,kBAAA,GAAA,EAAA,UAAE,iBAAc,CAAA;AAG3B,GAGME,IAA+BT,EACnCK,CACF,GAEMK,IAAgCV,EACpCK,CACF,GAGMM,KAEFI,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,EAAAI,QAIDD,IAAAF,EAAA,MAFqBE,IAAAH,EAAKI,MAAMC,OAAQC,CAEzC,GAACL,EAAA,KAAAD,EAAAI,OAAAH,EAAA,KAAAE;CAFD,IAAAI,IAAsBJ,GAErBK;CAEuE,OAFvEP,EAAA,OAAAM,KAAAN,EAAA,OAAAD,KAEMQ,IAAA,kBAAC,GAAD;EAA6B,GAAKR;EAAcO,OAAAA;CAAa,CAAA,GAAIN,EAAA,KAAAM,GAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAAjEO;AAAiE,GAI7DC,KAEWT,MAAS,kBAAC,GAAD,EAAkB,GAAIA,EAAM,CAAA,GAEhDU,KAEeV,MAAS,kBAAC,GAAD,EAA0B,GAAIA,EAAM,CAAA,GAE5DW,KAEeX,MAC1B,kBAAC,GAAD,EAA+B,GAAIA,EAAM,CAAA;AArBvC,SAAAM,EAAAf,GAAA;CAAA,OAGAH,EAAuBwB,SAAUrB,EAAIC,IAAK;AAAC"}
|
|
@@ -3,6 +3,8 @@ import { useResizeObserver as n } from "@react-hookz/web";
|
|
|
3
3
|
import { c as r } from "react/compiler-runtime";
|
|
4
4
|
//#region src/components/DataGrid/hooks/useColumnResizeHandles.ts
|
|
5
5
|
var i = class e {
|
|
6
|
+
colValues;
|
|
7
|
+
onColumnResize;
|
|
6
8
|
static COLUMN_MIN_WIDTH_PX = 50;
|
|
7
9
|
handlesMap = /* @__PURE__ */ new Map();
|
|
8
10
|
cleanupFunctions = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportDataGridToCsv.js","names":["useExportGridAsCsv","displayToast","useSynapseContext","getFileHandleByIdURL","UseExportDataGridToCsvOptions","gridSessionId","filename","useExportDataGridToCsv","options","$","_c","accessToken","t0","onSuccess","data","resultsFileHandleId","then","presignedUrl","fetch","_temp","blob","blobUrl","URL","createObjectURL","link","document","createElement","href","timestamp","Date","toISOString","replace","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","catch","_temp2","onError","_temp3","mutate","exportGrid","isPending","t1","sessionId","includeEtag","includeRowIdAndRowVersion","concreteType","exportToCsv","t2","isExporting","error","reason","err","Error","message","response"],"sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { displayToast } from '../../ToastMessage'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { getFileHandleByIdURL } from '@/synapse-client/SynapseClient'\n\nexport interface UseExportDataGridToCsvOptions {\n gridSessionId: string\n filename: string\n}\n\nexport function useExportDataGridToCsv(options: UseExportDataGridToCsvOptions) {\n const { gridSessionId, filename } = options\n const { accessToken } = useSynapseContext()\n\n const { mutate: exportGrid, isPending } = useExportGridAsCsv({\n onSuccess: data => {\n if (data?.resultsFileHandleId) {\n // Get presigned URL and trigger download\n getFileHandleByIdURL(data.resultsFileHandleId, accessToken)\n .then(presignedUrl => {\n // Fetch the file as a blob to control the filename\n return fetch(presignedUrl)\n .then(response => response.blob())\n .then(blob => {\n // Create a blob URL with our custom filename\n const blobUrl = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = blobUrl\n // Generate filename with timestamp\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\n link.setAttribute('download', `${filename}-${timestamp}.csv`)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n // Clean up the blob URL\n URL.revokeObjectURL(blobUrl)\n\n displayToast('CSV export completed successfully', 'success')\n })\n })\n .catch(err => {\n displayToast(\n `Failed to download CSV: ${\n err instanceof Error ? err.message : 'Unknown error'\n }`,\n 'danger',\n )\n })\n }\n },\n onError: error => {\n displayToast(\n `CSV export failed: ${error.reason || 'Unknown error'}`,\n 'danger',\n )\n },\n })\n\n const exportToCsv = () => {\n exportGrid({\n sessionId: gridSessionId,\n includeEtag: false,\n includeRowIdAndRowVersion: false,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n })\n }\n\n return {\n exportToCsv,\n isExporting: isPending,\n }\n}\n"],"mappings":";;;;;;;AAUA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,
|
|
1
|
+
{"version":3,"file":"useExportDataGridToCsv.js","names":["useExportGridAsCsv","displayToast","useSynapseContext","getFileHandleByIdURL","UseExportDataGridToCsvOptions","gridSessionId","filename","useExportDataGridToCsv","options","$","_c","accessToken","t0","onSuccess","data","resultsFileHandleId","then","presignedUrl","fetch","_temp","blob","blobUrl","URL","createObjectURL","link","document","createElement","href","timestamp","Date","toISOString","replace","setAttribute","body","appendChild","click","removeChild","revokeObjectURL","catch","_temp2","onError","_temp3","mutate","exportGrid","isPending","t1","sessionId","includeEtag","includeRowIdAndRowVersion","concreteType","exportToCsv","t2","isExporting","error","reason","err","Error","message","response"],"sources":["../../../../src/components/DataGrid/hooks/useExportDataGridToCsv.ts"],"sourcesContent":["import { useExportGridAsCsv } from '@/synapse-queries/grid/useExportGrid'\nimport { displayToast } from '../../ToastMessage'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { getFileHandleByIdURL } from '@/synapse-client/SynapseClient'\n\nexport interface UseExportDataGridToCsvOptions {\n gridSessionId: string\n filename: string\n}\n\nexport function useExportDataGridToCsv(options: UseExportDataGridToCsvOptions) {\n const { gridSessionId, filename } = options\n const { accessToken } = useSynapseContext()\n\n const { mutate: exportGrid, isPending } = useExportGridAsCsv({\n onSuccess: data => {\n if (data?.resultsFileHandleId) {\n // Get presigned URL and trigger download\n getFileHandleByIdURL(data.resultsFileHandleId, accessToken)\n .then(presignedUrl => {\n // Fetch the file as a blob to control the filename\n return fetch(presignedUrl)\n .then(response => response.blob())\n .then(blob => {\n // Create a blob URL with our custom filename\n const blobUrl = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = blobUrl\n // Generate filename with timestamp\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\n link.setAttribute('download', `${filename}-${timestamp}.csv`)\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n // Clean up the blob URL\n URL.revokeObjectURL(blobUrl)\n\n displayToast('CSV export completed successfully', 'success')\n })\n })\n .catch(err => {\n displayToast(\n `Failed to download CSV: ${\n err instanceof Error ? err.message : 'Unknown error'\n }`,\n 'danger',\n )\n })\n }\n },\n onError: error => {\n displayToast(\n `CSV export failed: ${error.reason || 'Unknown error'}`,\n 'danger',\n )\n },\n })\n\n const exportToCsv = () => {\n exportGrid({\n sessionId: gridSessionId,\n includeEtag: false,\n includeRowIdAndRowVersion: false,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.DownloadFromGridRequest',\n })\n }\n\n return {\n exportToCsv,\n isExporting: isPending,\n }\n}\n"],"mappings":";;;;;;;AAUA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAL,kBAAAC,gBAAoCE,GACpC,EAAAG,mBAAwBT,EAAkB,GAACU;CAAA,AAAAH,EAAA,OAAAE,KAAAF,EAAA,OAAAH,KAEkBM,IAAA;EAAAC,YAChDC,MAAA;GACT,AAAIA,GAAIC,uBAENZ,EAAqBW,EAAIC,qBAAsBJ,CAAW,EAACK,MACnDC,MAEGC,MAAMD,CAAY,EAACD,KAClBG,CAA2B,EAACH,MAC5BI,MAAA;IAEJ,IAAAC,IAAgBC,IAAGC,gBAAiBH,CAAI,GACxCI,IAAaC,SAAQC,cAAe,GAAG;IACvCF,EAAIG,OAAQN;IAEZ,IAAAO,qBAAkB,IAAIC,KAAK,GAACC,YAAa,EAACC,QAAS,SAAS,GAAG;IAQ/D9B,AAPAuB,EAAIQ,aAAc,YAAY,GAAG1B,EAAQ,GAAIsB,EAAS,KAAM,GAC5DH,SAAQQ,KAAKC,YAAaV,CAAI,GAC9BA,EAAIW,MAAO,GACXV,SAAQQ,KAAKG,YAAaZ,CAAI,GAE9BF,IAAGe,gBAAiBhB,CAAO,GAE3BpB,EAAa,qCAAqC,SAAS;GAAC,CAC7D,CACJ,EAACqC,MACKC,CAON;EACJ;EACFC,SACQC;CAMX,GAAChC,EAAA,KAAAE,GAAAF,EAAA,KAAAH,GAAAG,EAAA,KAAAG,KAAAA,IAAAH,EAAA;CA1CD,IAAA,EAAAiC,QAAAC,GAAAC,iBAA0C5C,EAAmBY,CA0C5D,GAACiC;CAAA,AAAApC,EAAA,OAAAkC,KAAAlC,EAAA,OAAAJ,KAEkBwC,UAAA;EAClBF,EAAW;GAAAG,WACEzC;GAAa0C,aACX;GAAKC,2BACS;GAAKC,cAE9B;EACJ,CAAC;CAAC,GACHxC,EAAA,KAAAkC,GAAAlC,EAAA,KAAAJ,GAAAI,EAAA,KAAAoC,KAAAA,IAAApC,EAAA;CARD,IAAAyC,IAAoBL,GAQnBM;CAKA,OALA1C,EAAA,OAAAyC,KAAAzC,EAAA,OAAAmC,KAEMO,IAAA;EAAAD;EAAAE,aAEQR;CACf,GAACnC,EAAA,KAAAyC,GAAAzC,EAAA,KAAAmC,GAAAnC,EAAA,KAAA0C,KAAAA,IAAA1C,EAAA,IAHM0C;AAGN;AA7DI,SAAAV,EAAAY,GAAA;CAyCDpD,EACE,sBAAsBoD,EAAKC,UAAL,mBACtB,QACF;AAAC;AA5CA,SAAAf,EAAAgB,GAAA;CA+BKtD,EACE,2BACEsD,aAAeC,QAAQD,EAAGE,UAA1B,mBAEF,QACF;AAAC;AApCN,SAAAtC,EAAAuC,GAAA;CAAA,OAYyBA,EAAQtC,KAAM;AAAC"}
|