synapse-react-client 4.0.19 → 4.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.d.ts +1 -1
- package/dist/SWC.index.js +1 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/assets/DefaultColorfulPortalCardBackground.js.map +1 -1
- package/dist/assets/GoogleIcon.js.map +1 -1
- package/dist/assets/GoogleIcon24.js.map +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.d.ts +1 -1
- package/dist/assets/homepage/BlinkingLiveIcon.js.map +1 -1
- package/dist/assets/homepage/aacr.js.map +1 -1
- package/dist/assets/homepage/cri.js.map +1 -1
- package/dist/assets/homepage/ctf.js.map +1 -1
- package/dist/assets/homepage/egress.js.map +1 -1
- package/dist/assets/homepage/facebook.js.map +1 -1
- package/dist/assets/homepage/fisma.js.map +1 -1
- package/dist/assets/homepage/gff.js.map +1 -1
- package/dist/assets/homepage/github.js.map +1 -1
- package/dist/assets/homepage/gray.js.map +1 -1
- package/dist/assets/homepage/hipaa-compliant.js.map +1 -1
- package/dist/assets/homepage/instagram.js.map +1 -1
- package/dist/assets/homepage/linkedin.js.map +1 -1
- package/dist/assets/homepage/ml-commons.js.map +1 -1
- package/dist/assets/homepage/nih-aging.js.map +1 -1
- package/dist/assets/homepage/nih-heart.js.map +1 -1
- package/dist/assets/homepage/nih-nci.js.map +1 -1
- package/dist/assets/homepage/nih-nimh.js.map +1 -1
- package/dist/assets/homepage/ntap.js.map +1 -1
- package/dist/assets/homepage/plan-item.js.map +1 -1
- package/dist/assets/homepage/powered-by-synapse-feature.js.map +1 -1
- package/dist/assets/homepage/precision-governance-feature.js.map +1 -1
- package/dist/assets/homepage/python.js.map +1 -1
- package/dist/assets/homepage/r.js.map +1 -1
- package/dist/assets/homepage/research-credit-feature.js.map +1 -1
- package/dist/assets/homepage/seamless-integration-feature.js.map +1 -1
- package/dist/assets/homepage/sloan.js.map +1 -1
- package/dist/assets/homepage/twitter.js.map +1 -1
- package/dist/assets/homepage/users.js.map +1 -1
- package/dist/assets/homepage/youtube.js.map +1 -1
- package/dist/assets/icons/AccessDataAnywhere.js.map +1 -1
- package/dist/assets/icons/AccessPending.js.map +1 -1
- package/dist/assets/icons/AccessPendingCloud.js.map +1 -1
- package/dist/assets/icons/AddAd.js.map +1 -1
- package/dist/assets/icons/AddToList.js.map +1 -1
- package/dist/assets/icons/Alert.js.map +1 -1
- package/dist/assets/icons/Arrow.js.map +1 -1
- package/dist/assets/icons/AwardScroll.js.map +1 -1
- package/dist/assets/icons/Baseline.js.map +1 -1
- package/dist/assets/icons/Cavatica.js.map +1 -1
- package/dist/assets/icons/CertifiedUser.js.map +1 -1
- package/dist/assets/icons/Challenge.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Checked2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate.js.map +1 -1
- package/dist/assets/icons/Checkbox/Indeterminate2.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked.js.map +1 -1
- package/dist/assets/icons/Checkbox/Unchecked2.js.map +1 -1
- package/dist/assets/icons/ClappingHands.js.map +1 -1
- package/dist/assets/icons/CloudWarning.js.map +1 -1
- package/dist/assets/icons/CommunicateFindings.js.map +1 -1
- package/dist/assets/icons/CreateVersion.js.map +1 -1
- package/dist/assets/icons/DNA_Two.js.map +1 -1
- package/dist/assets/icons/Data2.js.map +1 -1
- package/dist/assets/icons/DoubleQuotes.js.map +1 -1
- package/dist/assets/icons/EmailAddressAdornment.js.map +1 -1
- package/dist/assets/icons/FileWithShield.js.map +1 -1
- package/dist/assets/icons/FileWithShield2.js.map +1 -1
- package/dist/assets/icons/FrontHand.js.map +1 -1
- package/dist/assets/icons/HandWithMoney.js.map +1 -1
- package/dist/assets/icons/IconCopy.js.map +1 -1
- package/dist/assets/icons/IconMinus.js.map +1 -1
- package/dist/assets/icons/IconPlus.js.map +1 -1
- package/dist/assets/icons/Java.js.map +1 -1
- package/dist/assets/icons/MintDoi.js.map +1 -1
- package/dist/assets/icons/MultiFile.js.map +1 -1
- package/dist/assets/icons/MultiFile2.js.map +1 -1
- package/dist/assets/icons/NoData.js.map +1 -1
- package/dist/assets/icons/NoSearchResults.js.map +1 -1
- package/dist/assets/icons/ORCIDIcon.js.map +1 -1
- package/dist/assets/icons/OpenBook.js.map +1 -1
- package/dist/assets/icons/Podium.js.map +1 -1
- package/dist/assets/icons/Python.js.map +1 -1
- package/dist/assets/icons/QueryStructuredData.js.map +1 -1
- package/dist/assets/icons/RLogo.js.map +1 -1
- package/dist/assets/icons/RecordProvenance.js.map +1 -1
- package/dist/assets/icons/RosetteRibbon.js.map +1 -1
- package/dist/assets/icons/SageFullLogo.js.map +1 -1
- package/dist/assets/icons/SearchImage.js.map +1 -1
- package/dist/assets/icons/ShareYourResearch.js.map +1 -1
- package/dist/assets/icons/Sort.js.map +1 -1
- package/dist/assets/icons/StarTrophy.js.map +1 -1
- package/dist/assets/icons/SynapseFullLogo.js.map +1 -1
- package/dist/assets/icons/SynapseIconWhite.js.map +1 -1
- package/dist/assets/icons/SynapseLogoName.js.map +1 -1
- package/dist/assets/icons/TasksIcon.js.map +1 -1
- package/dist/assets/icons/Terminal.js.map +1 -1
- package/dist/assets/icons/ThreeStars.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile.js.map +1 -1
- package/dist/assets/icons/UnpackagableFile2.js.map +1 -1
- package/dist/assets/icons/ValidatedProfile.js.map +1 -1
- package/dist/assets/icons/account-certified.js.map +1 -1
- package/dist/assets/icons/account-enabled-mfa.js.map +1 -1
- package/dist/assets/icons/account-validated.js.map +1 -1
- package/dist/assets/icons/bioChemicalPhysical.js.map +1 -1
- package/dist/assets/icons/chart2.js.map +1 -1
- package/dist/assets/icons/columns.js.map +1 -1
- package/dist/assets/icons/columnsDarkTheme.js.map +1 -1
- package/dist/assets/icons/computationalTool.js.map +1 -1
- package/dist/assets/icons/dataReuse.js.map +1 -1
- package/dist/assets/icons/emailAddressAdornment2.js.map +1 -1
- package/dist/assets/icons/emailWithNotification.js.map +1 -1
- package/dist/assets/icons/error_page/maintenance.js.map +1 -1
- package/dist/assets/icons/error_page/no-access.js.map +1 -1
- package/dist/assets/icons/error_page/unavailable.js.map +1 -1
- package/dist/assets/icons/file.js.map +1 -1
- package/dist/assets/icons/inSilicoModel.js.map +1 -1
- package/dist/assets/icons/institution.js.map +1 -1
- package/dist/assets/icons/json-form-tool-no-submissions.js.map +1 -1
- package/dist/assets/icons/modelSystem.js.map +1 -1
- package/dist/assets/icons/mouse.js.map +1 -1
- package/dist/assets/icons/organizations.js.map +1 -1
- package/dist/assets/icons/person.js.map +1 -1
- package/dist/assets/icons/spatialProfiling.js.map +1 -1
- package/dist/assets/icons/standardDataModel.js.map +1 -1
- package/dist/assets/icons/study-active.js.map +1 -1
- package/dist/assets/icons/study-complete.js.map +1 -1
- package/dist/assets/icons/subscribe_plus.js.map +1 -1
- package/dist/assets/icons/synapse-logo.js.map +1 -1
- package/dist/assets/icons/terms/CheckIcon.js.map +1 -1
- package/dist/assets/icons/translational.js.map +1 -1
- package/dist/assets/icons/tree_horizontal.js.map +1 -1
- package/dist/assets/illustrations/acknowledgement_statements_illustration.js.map +1 -1
- package/dist/assets/illustrations/challenges_illustration.js.map +1 -1
- package/dist/assets/illustrations/cohort_builder_illustration.js.map +1 -1
- package/dist/assets/illustrations/data_access_management_illustration.js.map +1 -1
- package/dist/assets/illustrations/datasets_illustration.js.map +1 -1
- package/dist/assets/illustrations/diagonalLinePattern.js.map +1 -1
- package/dist/assets/illustrations/discussions_illustration.js.map +1 -1
- package/dist/assets/illustrations/docker_illustration.js.map +1 -1
- package/dist/assets/illustrations/donation_illustration.js.map +1 -1
- package/dist/assets/illustrations/favorites_illustration.js.map +1 -1
- package/dist/assets/illustrations/files_illustration.js.map +1 -1
- package/dist/assets/illustrations/following_illustration.js.map +1 -1
- package/dist/assets/illustrations/index.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/left_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/projects_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_dark_illustration.js.map +1 -1
- package/dist/assets/illustrations/right_dot_blob_illustration.js.map +1 -1
- package/dist/assets/illustrations/tables_illustration.js.map +1 -1
- package/dist/assets/illustrations/teams_illustration.js.map +1 -1
- package/dist/assets/illustrations/trash_can_illustration.js.map +1 -1
- package/dist/assets/illustrations/underconstruction_illustration.js.map +1 -1
- package/dist/assets/illustrations/wikis_illustration.js.map +1 -1
- package/dist/assets/logos/other/ad-workbench-logo.js.map +1 -1
- package/dist/assets/logos/other/cavatica-logo.js.map +1 -1
- package/dist/assets/logos/other/pluto-logo.js.map +1 -1
- package/dist/assets/logos/other/terra-logo.js.map +1 -1
- package/dist/assets/mui_components/AccessManagement.js.map +1 -1
- package/dist/assets/mui_components/AccountCertified.js.map +1 -1
- package/dist/assets/mui_components/AccountRegistered.js.map +1 -1
- package/dist/assets/mui_components/AccountValidated.js.map +1 -1
- package/dist/assets/mui_components/ActionKey.js.map +1 -1
- package/dist/assets/mui_components/BioChemicalPhysical.js.map +1 -1
- package/dist/assets/mui_components/Chromatin.js.map +1 -1
- package/dist/assets/mui_components/Clinical.js.map +1 -1
- package/dist/assets/mui_components/ComputationalTool.js.map +1 -1
- package/dist/assets/mui_components/Data.js.map +1 -1
- package/dist/assets/mui_components/DataLocked.js.map +1 -1
- package/dist/assets/mui_components/DataReuse.js.map +1 -1
- package/dist/assets/mui_components/Dataset.js.map +1 -1
- package/dist/assets/mui_components/DatasetCollection.js.map +1 -1
- package/dist/assets/mui_components/Docker.js.map +1 -1
- package/dist/assets/mui_components/GeneExpression.js.map +1 -1
- package/dist/assets/mui_components/GeneVariants.js.map +1 -1
- package/dist/assets/mui_components/HelpChatBubble.js.map +1 -1
- package/dist/assets/mui_components/Imaging.js.map +1 -1
- package/dist/assets/mui_components/InSilicoModel.js.map +1 -1
- package/dist/assets/mui_components/Kinomics.js.map +1 -1
- package/dist/assets/mui_components/LineGraph.js.map +1 -1
- package/dist/assets/mui_components/ModelSystem.js.map +1 -1
- package/dist/assets/mui_components/Other.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile2.js.map +1 -1
- package/dist/assets/mui_components/Proteomics.js.map +1 -1
- package/dist/assets/mui_components/Rat.js.map +1 -1
- package/dist/assets/mui_components/SpatialProfiling.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition1.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition2.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition3.js.map +1 -1
- package/dist/assets/sustainability/darkDialPosition4.js.map +1 -1
- package/dist/assets/sustainability/dialPosition1.js.map +1 -1
- package/dist/assets/sustainability/dialPosition2.js.map +1 -1
- package/dist/assets/sustainability/dialPosition3.js.map +1 -1
- package/dist/assets/sustainability/dialPosition4.js.map +1 -1
- package/dist/assets/themed_icons/Active.js.map +1 -1
- package/dist/assets/themed_icons/Chart.js.map +1 -1
- package/dist/assets/themed_icons/Close.js.map +1 -1
- package/dist/assets/themed_icons/Collapse.js.map +1 -1
- package/dist/assets/themed_icons/Columns.js.map +1 -1
- package/dist/assets/themed_icons/ColumnsDark.js.map +1 -1
- package/dist/assets/themed_icons/Database.js.map +1 -1
- package/dist/assets/themed_icons/Download.js.map +1 -1
- package/dist/assets/themed_icons/Expand.js.map +1 -1
- package/dist/assets/themed_icons/Explore.js.map +1 -1
- package/dist/assets/themed_icons/ExternalLink.js.map +1 -1
- package/dist/assets/themed_icons/Filter.js.map +1 -1
- package/dist/assets/themed_icons/Program.js.map +1 -1
- package/dist/assets/themed_icons/Project.js.map +1 -1
- package/dist/assets/themed_icons/Publication.js.map +1 -1
- package/dist/assets/themed_icons/Search.js.map +1 -1
- package/dist/assets/themed_icons/Settings.js.map +1 -1
- package/dist/assets/themed_icons/SortDown.js.map +1 -1
- package/dist/assets/themed_icons/SortUp.js.map +1 -1
- package/dist/assets/themed_icons/SqlEditorIcon.js.map +1 -1
- package/dist/assets/themed_icons/Study.js.map +1 -1
- package/dist/assets/themed_icons/ToolClinical.js.map +1 -1
- package/dist/assets/themed_icons/ToolComputational.js.map +1 -1
- package/dist/assets/themed_icons/ToolExperimental.js.map +1 -1
- package/dist/assets/themed_icons/VerticalDots.js.map +1 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +1 -1
- package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +10 -11
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +73 -76
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/AuthenticatedRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/CertificationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/LockAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/TwoFactorAuthEnabledRequirement.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/ValidationRequirement.js.map +1 -1
- package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadge/AccountLevelBadge.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgement.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/AclEditor/AclEditorSkeleton.js.map +1 -1
- package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
- package/dist/components/AclEditor/ReadOnlyPermissionLevel.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js +2 -4
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessItem.js.map +1 -1
- package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
- package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
- package/dist/components/AdaptiveTwoColumnLayout/AdaptiveTwoColumnLayout.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/LoginFlowBackButton.js.map +1 -1
- package/dist/components/Authentication/LoginForm.js.map +1 -1
- package/dist/components/Authentication/LoginMethod.js.map +1 -1
- package/dist/components/Authentication/LoginMethodButton.js.map +1 -1
- package/dist/components/Authentication/Logout.js.map +1 -1
- package/dist/components/Authentication/OneTimePasswordForm.js.map +1 -1
- package/dist/components/Authentication/PasswordField.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorAuthSettingsPanel.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorSecretDialog.js.map +1 -1
- package/dist/components/Authentication/UsernamePasswordForm.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/CTASectionWrapper/CTASectionWrapper.js.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
- package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +3 -3
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.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 -1
- package/dist/components/DataExplorer/DataExplorer.js +28 -31
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +2 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +9 -10
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/StartGridSession.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts +3 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +219 -211
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/GridAutocompleteChip.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
- package/dist/components/DataGrid/components/GridSessionSelectionField.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +3 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +2 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +12 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/MessageCounter.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/calculateColumnWidth.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +1 -0
- 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.d.ts +2 -0
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +76 -64
- 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.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
- 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.css +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts +54 -0
- package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.js +359 -0
- package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
- package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/Plot/index.d.ts +3 -1
- package/dist/components/Plot/index.d.ts.map +1 -1
- package/dist/components/Plot/index.js +2 -1
- package/dist/components/Plot/safe-react-plotly-factory.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js.map +1 -1
- package/dist/components/PortalFeatureHighlights/PortalFeatureHighlights.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js +4 -6
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/PortalSectionHeader/PortalSectionHeader.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js +69 -69
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Desktop.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ActivityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/EntityPlaceholderNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExpandGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ExternalGraphNodeLabel.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceEntityIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js +13 -13
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/UndefinedNodeLabel.js.map +1 -1
- package/dist/components/QueryContext/QueryContext.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QuerySortSelector.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/NoContentPlaceholder.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js +27 -27
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapperLoadingScreen.js.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
- package/dist/components/QueryWrapper/ViewMoreQueryResultsButton.js.map +1 -1
- package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
- package/dist/components/QueryWrapper/useComputeRowSelectionPrimaryKey.js.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
- package/dist/components/QueryWrapper/useHasFacetedSelectColumn.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RORInstitutionField/RORInstitutionField.js.map +1 -1
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js +6 -8
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
- package/dist/components/RegisterPageLogoutPrompt/RegisterPageLogoutPrompt.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCard.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardMedium.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
- package/dist/components/RenderIfInView/RenderIfInView.js.map +1 -1
- package/dist/components/ResizableContainer/ResizableContainer.js.map +1 -1
- package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js.map +1 -1
- package/dist/components/Resources/Resources.Mobile.js.map +1 -1
- package/dist/components/Resources/Resources.js +8 -11
- package/dist/components/Resources/Resources.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/SynapseAnnotationsWrapIfAdditionalTemplate.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/widget/TextWidget.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementTextInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/ShowMore/ShowMore.js.map +1 -1
- package/dist/components/SignInButton.js.map +1 -1
- package/dist/components/SignInRequiredModal/SignInRequiredModal.js.map +1 -1
- package/dist/components/Skeleton/SkeletonButton.js.map +1 -1
- package/dist/components/Skeleton/SkeletonInlineBlock.js.map +1 -1
- package/dist/components/Skeleton/SkeletonParagraph.js.map +1 -1
- package/dist/components/Skeleton/SkeletonTable.js.map +1 -1
- package/dist/components/SmartLink/SmartButton.js.map +1 -1
- package/dist/components/SmartLink/SmartLink.js.map +1 -1
- package/dist/components/SmartLink/useSmartLink.js.map +1 -1
- package/dist/components/SourceAppImage.js.map +1 -1
- package/dist/components/SpinnerButton/SpinnerButton.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditor.js.map +1 -1
- package/dist/components/SqlDefinedTableEditor/SqlDefinedTableEditorModal.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/StepperDialog/StepperDialog.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditor.js.map +1 -1
- package/dist/components/SubmissionViewScopeEditor/SubmissionViewScopeEditorModal.js.map +1 -1
- package/dist/components/SubscriptionPage/ForumTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionItem.js.map +1 -1
- package/dist/components/SubscriptionPage/SubscriptionPage.js.map +1 -1
- package/dist/components/SubscriptionPage/ThreadTopic.js.map +1 -1
- package/dist/components/SubscriptionPage/Topic.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
- package/dist/components/SustainabilityScorecard/Dial.js.map +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardUtils.js.map +1 -1
- package/dist/components/SynapseChat/AccessLevelMenu.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseLinksColumn.js.map +1 -1
- package/dist/components/SynapseForm/DataDebug.js.map +1 -1
- package/dist/components/SynapseForm/Header.js.map +1 -1
- package/dist/components/SynapseForm/NavButtons.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormCheckboxesWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormRadioWidget.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormUtils.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseForm/types.js.map +1 -1
- package/dist/components/SynapseForm/useGetFormPropsFromSearchParams.js.map +1 -1
- package/dist/components/SynapseHomepageV2/FloatingBlobsBackground.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HomepageStyles.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbers.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasets.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatures.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +18 -21
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageV2.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdrops.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHotdropsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInAction.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePartners.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlan.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlanContent.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlansPage.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +78 -78
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageRouter.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/chipStyles.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlButton.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControlPanel.js.map +1 -1
- package/dist/components/SynapseTable/CustomControls/CustomControls.js.map +1 -1
- package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
- package/dist/components/SynapseTable/ExpandCollapseButton.js.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
- package/dist/components/SynapseTable/NoContentAvailable.js.map +1 -1
- package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +4 -4
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
- package/dist/components/SynapseTable/SearchResultsNotFound.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js.map +1 -1
- package/dist/components/SynapseTable/SqlEditor.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EntityIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/EvaluationIdRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/ComplexJSONRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONArrayRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONObjectRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONPrimitiveRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONRendererUtils.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/JSON/JSONTableCellRenderer.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/UserIdList.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableConstants.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableContext.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TableIsEmpty.js.map +1 -1
- package/dist/components/SynapseTable/TablePagination.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
- 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.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/FieldWithRecommendedMinimum.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/MultiValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +10 -10
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.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.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
- package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.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.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
- package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TeamBadge.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TemplateComponent.js.map +1 -1
- package/dist/components/TemporaryBanner/TemporaryBanner.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextFieldWithWordLimit.js.map +1 -1
- package/dist/components/TextToComponentCollapse.js.map +1 -1
- package/dist/components/ThemeGallery/ThemeGallery.js.map +1 -1
- package/dist/components/TimelinePlot/TimelineLegendItem.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/TimelinePlot/phasesQueryResponseData.js.map +1 -1
- package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
- package/dist/components/TotalQueryResults.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCard/UserBadge.js.map +1 -1
- package/dist/components/UserCard/UserCard.js.map +1 -1
- package/dist/components/UserCard/UserCardContextMenu.js.map +1 -1
- package/dist/components/UserCard/UserCardLarge.js.map +1 -1
- package/dist/components/UserCard/UserCardMedium.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Desktop.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/UserOrTeamBadge.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserChallenges.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProfileLinks.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserProfileLinks/UserTeams.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/Webhook/WebhookVerificationDialog.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonDescription.js.map +1 -1
- package/dist/components/WizardChoiceButton/WizardChoiceButtonGroup.js.map +1 -1
- package/dist/components/WordPress/WordPressLatestPostChip.js.map +1 -1
- package/dist/components/WordPress/useWordPressCategories.js.map +1 -1
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementSearchBox/AccessRequirementSearchBox.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/RejectDataAccessRequestModal.js.map +1 -1
- package/dist/components/dataaccess/RejectProfileValidationRequestModal.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/SubmissionSortStateTranslator.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/doi/DoiFormSchemas.js.map +1 -1
- package/dist/components/doi/PrivateEntityDoiWarning.js.map +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +30 -32
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/download_list/index.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/metadata/EntityAnnotationKey.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js.map +1 -1
- package/dist/components/entity/metadata/MetadataTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/entity/page/title_bar/CitationsDialog.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js.map +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/error/ErrorPage.js +24 -24
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/error/RouteErrorBoundary.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js.map +1 -1
- package/dist/components/error/SynapseObjectDOIInfo.js.map +1 -1
- package/dist/components/favorites/FavoriteButton.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js.map +1 -1
- package/dist/components/file/upload/UploadFilePanel.js.map +1 -1
- package/dist/components/form/RadioGroupWithOtherString.js.map +1 -1
- package/dist/components/home_page/ExpandableContent.js.map +1 -1
- package/dist/components/index.js +48 -47
- package/dist/components/layout/InfiniteTableLayout.js.map +1 -1
- package/dist/components/layout/SWCHeader.js.map +1 -1
- package/dist/components/layout/SWCPageLayout.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/HoverPopover.js.map +1 -1
- package/dist/components/styled/InlineBadge.js.map +1 -1
- package/dist/components/styled/InputSizedButton.js.map +1 -1
- package/dist/components/styled/LargeButton.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/styled/LightTooltip.js.map +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/styled/StyledTableContainer.js.map +1 -1
- package/dist/components/styled/WideButton.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +39 -42
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvUploadPreviewContent.js.map +1 -1
- package/dist/components/table/CsvPreview/UpdateTableWithCsvDialog.js.map +1 -1
- package/dist/components/table/CsvPreview/useCreateTableFromCsv.js.map +1 -1
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js +11 -11
- package/dist/components/table/CsvPreview/useCsvUploadPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/useUploadCsvToExistingTable.js.map +1 -1
- package/dist/components/table/CsvTableDescriptorForm/CsvTableDescriptorForm.js.map +1 -1
- package/dist/components/trash/TrashCanList.js.map +1 -1
- package/dist/components/utils/Blocker.js.map +1 -1
- package/dist/components/utils/ConditionalWrapper.js.map +1 -1
- package/dist/components/utils/VisibilityObserver.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/EntityColumnImage.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/components/widgets/ImageFileHandle.js.map +1 -1
- package/dist/components/widgets/LoginAwareButton.js.map +1 -1
- package/dist/components/widgets/Range.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/SynapseVideo.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainerSkeleton.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterDropdown.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetChip.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterHeader.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterSkeleton.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +3 -3
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +41 -41
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageRouter.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts +5 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +227 -181
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +3 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +2 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getLatestGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- package/dist/index.js +54 -53
- package/dist/index.js.map +1 -1
- package/dist/mocks/MockAccessApprovals.js.map +1 -1
- package/dist/mocks/MockSynapseContext.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirementAcls.js.map +1 -1
- package/dist/mocks/accessRequirement/mockAccessRequirements.js.map +1 -1
- package/dist/mocks/applicationSessionContext/MockApplicationSessionContext.js.map +1 -1
- package/dist/mocks/challenge/mockChallenge.js.map +1 -1
- package/dist/mocks/chat/mockChat.js.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
- package/dist/mocks/dataaccess/MockResearchProject.js.map +1 -1
- package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
- package/dist/mocks/dataaccess/mockAccessRequest.js.map +1 -1
- package/dist/mocks/discussion/mock_discussion.js.map +1 -1
- package/dist/mocks/doi/MockDoi.js.map +1 -1
- package/dist/mocks/entity/index.js.map +1 -1
- package/dist/mocks/entity/mockDataset.js.map +1 -1
- package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
- package/dist/mocks/entity/mockEntity.js.map +1 -1
- package/dist/mocks/entity/mockEvaluationQueue.js.map +1 -1
- package/dist/mocks/entity/mockFileEntity.js.map +1 -1
- package/dist/mocks/entity/mockFileEntityACLVariants.js.map +1 -1
- package/dist/mocks/entity/mockFileView.js.map +1 -1
- package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
- package/dist/mocks/entity/mockProject.js.map +1 -1
- package/dist/mocks/entity/mockProjectView.js.map +1 -1
- package/dist/mocks/entity/mockReleaseCardsTable.js.map +1 -1
- package/dist/mocks/entity/mockRootEntity.js.map +1 -1
- package/dist/mocks/entity/mockTableEntity.js.map +1 -1
- package/dist/mocks/faker/fakerUtils.js.map +1 -1
- package/dist/mocks/faker/generateDiscussion.js.map +1 -1
- package/dist/mocks/faker/generateEvaluation.js.map +1 -1
- package/dist/mocks/faker/generateFakeEntity.js.map +1 -1
- package/dist/mocks/faker/generateSubscription.js.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/mockCertificationQuiz.js.map +1 -1
- package/dist/mocks/mockDataCatalogQuery.js.map +1 -1
- package/dist/mocks/mockFileViewQuery.js.map +1 -1
- package/dist/mocks/mockOAuthClientAcls.js.map +1 -1
- package/dist/mocks/mockQueryResponseData.js.map +1 -1
- package/dist/mocks/mockQueryResponseDataWithManyEnumFacets.js.map +1 -1
- package/dist/mocks/mockSchema.js.map +1 -1
- package/dist/mocks/mockSearchQueryData.js +2 -2
- 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.d.ts +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
- 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.d.ts +13 -0
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
- package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
- 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/style/components/_cards.scss +10 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +7 -1
- package/dist/style/main.css +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 +499 -505
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/SynapseClientUtils.js.map +1 -1
- package/dist/synapse-queries/InfiniteQueryUtils.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryFilterUtils.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/asynchronous/usePollAsynchronousJob.js.map +1 -1
- package/dist/synapse-queries/auth/useChangePassword.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useResetPassword.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/croissant/useGetCroissantUrl.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -0
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +12 -2
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessApprovals.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useGetApprovedSubmissionInfo.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/docker/useGetDockerTag.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useActionsRequiredForTableQuery.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityActionsRequired.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChallenge.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityChildren.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityForum.js.map +1 -1
- package/dist/synapse-queries/entity/useGetEntityHeaders.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useProjectStorage.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/evaluation/useEvaluation.js.map +1 -1
- package/dist/synapse-queries/featureflags/useGetFeatureFlag.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/file/useSynapseMultipartUpload.js.map +1 -1
- package/dist/synapse-queries/file/useUploadDestination.js.map +1 -1
- package/dist/synapse-queries/forum/useForum.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/github/useGithub.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridPresignedUrl.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/message/useMessage.js.map +1 -1
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/useListPortals.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/provenance/useGetActivityForEntity.js.map +1 -1
- package/dist/synapse-queries/realm/useRealmPrincipals.js.map +1 -1
- package/dist/synapse-queries/ror/index.js.map +1 -1
- package/dist/synapse-queries/search/useSearch.js.map +1 -1
- package/dist/synapse-queries/search/useSuggestion.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useColumnModel.js.map +1 -1
- package/dist/synapse-queries/table/useDefiningSql.js.map +1 -1
- package/dist/synapse-queries/table/useDownloadTable.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserProjects.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserTeams.js.map +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js.map +1 -1
- package/dist/synapse-queries/user/useProjects.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/synapse-queries/verificationSubmission/useVerificationSubmission.js.map +1 -1
- package/dist/synapse-queries/webhook/useWebhook.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/testutils/ComponentToBePassedPropsCustomMatcher.js.map +1 -1
- package/dist/testutils/IsEditingStoreTestUtils.js +17 -0
- package/dist/testutils/IsEditingStoreTestUtils.js.map +1 -0
- package/dist/testutils/LocationTracker.js.map +1 -1
- package/dist/testutils/MarkdownSynapseUtils.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/TestingLibraryUtils.js +18 -16
- package/dist/testutils/TestingLibraryUtils.js.map +1 -1
- package/dist/testutils/muiDatePickerMock.js.map +1 -1
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/mergeTheme.js.map +1 -1
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/theme/spreadSx.js.map +1 -1
- package/dist/theme/typography/Link.js.map +1 -1
- package/dist/theme/typography/Typography.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.d.ts.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +11 -11
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionContext.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/AuthenticationGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/OrientationBannerConstants.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/analytics/sendAnalyticsEvent.js.map +1 -1
- package/dist/utils/analytics/sendSearchEvent.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/AridhiaContext.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/GlobalIsEditingContext.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/DateFormatter.js.map +1 -1
- package/dist/utils/functions/DateTimeUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/IsEqualTreatUndefinedAsMissing.js.map +1 -1
- package/dist/utils/functions/IsExternalLink.js.map +1 -1
- package/dist/utils/functions/ObjectUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/ResolveLinkEntity.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/TableColumnSchemaUtils.js.map +1 -1
- package/dist/utils/functions/calculateFriendlyFileSize.js.map +1 -1
- package/dist/utils/functions/colorPalette.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/dispatchDownloadListChangeEvent.js.map +1 -1
- package/dist/utils/functions/generateCsrfToken.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js +3 -3
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getPrincipalDisplayName.js.map +1 -1
- package/dist/utils/functions/getSynapseEntityUrl.js.map +1 -1
- package/dist/utils/functions/getSynapseWebClientLink.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.d.ts.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js +24 -23
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetEntityMetadata.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js +2 -4
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useGetIsAllSelectedInfiniteList.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useJsonLdScriptElement.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMediaPrintOnly.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useShowDesktop.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useTraceUpdate.js.map +1 -1
- package/dist/utils/hooks/useTrackTransientListItems.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getActiveUploadCount.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/getFileEntityIdWithSameName.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/dist/utils/jsonschema/getEnumeratedValues.js.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getRequiredAttributes.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaForProperty.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/searchDefaults.js.map +1 -1
- package/dist/utils/slots/SlotUtils.js.map +1 -1
- package/dist/utils/types/IsType.js.map +1 -1
- package/package.json +68 -65
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseForm.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseForm.tsx"],"sourcesContent":["import Blocker from '@/components/utils/Blocker'\nimport Form from '@rjsf/core'\nimport { ErrorListProps, RJSFValidationError, UiSchema } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { Engine, EngineResult } from 'json-rules-engine'\nimport cloneDeep from 'lodash-es/cloneDeep'\nimport find from 'lodash-es/find'\nimport findIndex from 'lodash-es/findIndex'\nimport first from 'lodash-es/first'\nimport get from 'lodash-es/get'\nimport isEqual from 'lodash-es/isEqual'\nimport isUndefined from 'lodash-es/isUndefined'\nimport keys from 'lodash-es/keys'\nimport pick from 'lodash-es/pick'\nimport remove from 'lodash-es/remove'\nimport set from 'lodash-es/set'\nimport trimStart from 'lodash-es/trimStart'\nimport { Component, createRef, ReactNode, RefObject } from 'react'\nimport Switch from 'react-switch'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport DataDebug from './DataDebug'\nimport Header from './Header'\nimport { NavButtons, NextStepLink } from './NavButtons'\nimport StepsSideNav from './StepsSideNav'\nimport SummaryTable from './SummaryTable'\nimport SynapseFormCheckboxesWidget from './SynapseFormCheckboxesWidget'\nimport SynapseFormCheckboxWidget from './SynapseFormCheckboxWidget'\nimport SynapseFormRadioWidget from './SynapseFormRadioWidget'\nimport {\n FormSchema,\n IRulesNavigationEvent,\n IRulesValidationEvent,\n NavActionEnum,\n StatusEnum,\n Step,\n StepStateEnum,\n} from './types'\nimport WarningDialog from './WarningDialog'\n\nexport interface IFormData {\n [key: string]: {\n included?: boolean\n [key: string]: any\n }\n}\n\nexport type SynapseFormProps = {\n schema: FormSchema\n uiSchema: UiSchema\n navSchema: {\n steps: any[]\n }\n formData: IFormData\n onSubmit: (formData: IFormData) => void\n onSave: (formData: IFormData) => void\n formTitle: string\n formClass?: string\n isWizardMode?: boolean\n callbackStatus?: StatusEnum\n isSubmitted?: boolean\n}\n\ntype SynapseFormState = {\n formData: IFormData // form data that prepopulates the form\n currentStep: Step\n nextStep?: Step\n steps: Step[]\n previousStepIds: string[]\n hasValidated?: boolean //validation has been called and it passed\n doShowErrors: boolean //if we should show error summary at the top of the page\n doShowHelp: boolean\n modalContext?: { action: (...args: any[]) => void; arguments: any[] }\n hasUnsavedChanges: boolean\n isSubmitted?: boolean\n isLoadingSaved: boolean\n}\n\nexport interface SummaryFormat {\n label: string\n value: string\n}\n\nexport default class SynapseForm extends Component<\n SynapseFormProps,\n SynapseFormState\n> {\n excludeWarningText = (\n <div>\n <p>\n This action will clear any entered data on this page and remove this\n form from your submission. You can include it again at anytime. Only\n this page will be affected.\n </p>\n <p>Are you sure you want to skip this step and clear any entered data?</p>\n </div>\n )\n excludeWarningHeader = 'Skip This Step?'\n unsavedDataWarning = `You might have some unsaved data. Are you sure you want to leave?`\n formRef: RefObject<Form<IFormData> | null> //ref to form for submission\n submitButtonRef: RefObject<HTMLButtonElement | null>\n formDivRef: any // ref to the div containing form (for scrolling on validation failure)\n navAction: NavActionEnum = NavActionEnum.NONE\n uiSchema: UiSchema\n nextStep: Step | undefined\n extraErrors: RJSFValidationError[] = []\n\n isNewForm = (formData: IFormData): boolean => {\n return (\n (Object.keys(formData).length == 1 &&\n Object.keys(formData)[0] === 'metadata') ||\n Object.keys(formData).length == 0\n )\n }\n\n getFirstStep = (steps: Step[], formData: IFormData): Step => {\n if (!this.isNewForm(formData)) {\n return steps.find(step => step.final === true) || steps[0]\n } else {\n return steps[0]\n }\n }\n\n constructor(props: SynapseFormProps) {\n super(props)\n\n //will modify the ui:help to render html vs text\n this.uiSchema = stringToElementForProp(\n cloneDeep(props.uiSchema),\n 'ui:help',\n ) as UiSchema\n //create steps array from the navSchema\n const steps = props.navSchema.steps\n .map((step, i) => {\n return {\n ...step,\n inProgress: i === 0 ? true : false,\n }\n })\n .sort((a, b) => a.order - b.order)\n\n this.formRef = createRef()\n this.formDivRef = createRef()\n this.submitButtonRef = createRef()\n const currentStep = this.getFirstStep(steps, props.formData)\n this.state = {\n currentStep,\n steps,\n previousStepIds: [],\n formData: props.formData,\n doShowErrors: false,\n doShowHelp: true,\n hasUnsavedChanges: false,\n isSubmitted: props.isSubmitted,\n isLoadingSaved: !this.isNewForm(this.props.formData),\n }\n }\n\n onUnload = (ev: any) => {\n {\n if (this.state.hasUnsavedChanges) {\n ev.preventDefault()\n return (ev.returnValue = this.unsavedDataWarning)\n }\n return\n }\n }\n // Setup the `beforeunload` event listener\n setupBeforeUnloadListener = () => {\n window.addEventListener('beforeunload', this.onUnload)\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.onUnload)\n }\n\n componentDidUpdate(prevProps: SynapseFormProps) {\n const shouldUpdate = this.props.callbackStatus !== prevProps.callbackStatus\n const isSuccess =\n this.props.callbackStatus === StatusEnum.SAVE_SUCCESS ||\n this.props.callbackStatus === StatusEnum.SUBMIT_SUCCESS\n if (shouldUpdate && isSuccess) {\n this.setState({ hasUnsavedChanges: false })\n if (this.props.callbackStatus === StatusEnum.SUBMIT_SUCCESS) {\n this.setState({ isSubmitted: true })\n window.history.back()\n }\n }\n }\n\n _setIncludedPropInFormDataNonWizard = (\n currentState: SynapseFormState,\n schemaScreens: any,\n ): IFormData => {\n const result = {}\n const currentStateFormData = currentState.formData\n //if there is a top level 'included' property in schema - update the form.\n Object.keys(schemaScreens).forEach((key: string) => {\n if (get(schemaScreens[key], `properties.included`)) {\n set(result, `${key}.included`, true)\n }\n })\n return { ...currentStateFormData, ...result }\n }\n\n _setIncludedPropInFormDataWizard = (\n currentState: SynapseFormState,\n ): IFormData => {\n const firstStepId = currentState.currentStep.id\n const newStateData = cloneDeep(currentState.formData)\n set(newStateData, `${firstStepId}.included`, true)\n return newStateData\n }\n\n componentDidMount() {\n this.setupBeforeUnloadListener()\n const isNewForm = this.isNewForm(this.state.formData)\n if (!isNewForm) {\n //when loading saved form - validate to see the steps status\n this.triggerAction(NavActionEnum.VALIDATE)\n } else {\n // for validation of optional forms. Validation is enforced only if included property is set.\n this.setState(prevState => {\n const newFormData = this.props.isWizardMode\n ? this._setIncludedPropInFormDataWizard(prevState)\n : this._setIncludedPropInFormDataNonWizard(\n prevState,\n this.props.schema,\n )\n return {\n formData: newFormData,\n }\n })\n }\n }\n\n // get the schema slice for the current screen/step\n getSchema = ({ id, final }: Step): FormSchema => {\n if (final) {\n return this.props.schema\n }\n //only get schema for current step. Only the portion of entire form is shown\n\n const currentStepSlice = pick(this.props.schema, [\n 'title',\n 'type',\n `properties.${id}`,\n ])\n return currentStepSlice\n }\n\n // find the next step\n getNextStepId = async (\n currentStep: Step,\n formData: any,\n nextStepId?: string,\n ): Promise<string> => {\n if (nextStepId) {\n return nextStepId\n }\n if (!currentStep.rules || currentStep.rules.length === 0) {\n return currentStep.default\n }\n\n // if there are rules - run the engine and go to the first next step\n const engine = new Engine(currentStep.rules)\n\n try {\n const result: EngineResult = await engine.run(formData)\n if (result.events.length > 0) {\n return (result.events[0] as IRulesNavigationEvent).params.next\n } else {\n return currentStep.default\n }\n } catch (error) {\n return currentStep.default\n }\n }\n\n // called when going next, previous or a given step\n moveStep = async (\n formData: any,\n nextStepId: string | undefined,\n isError: boolean,\n previousStack = [...this.state.previousStepIds],\n ) => {\n const currentStep = this.state.currentStep\n let currentStepState: StepStateEnum\n //we don't wnat to display errors on the page - this will be done explicitly in validation\n if (this.formRef?.current) {\n this.formRef.current.setState({ errorSchema: {} })\n }\n //in wizard mode we can only move forwards (don't know next step yet) or backwards (do know next step)\n const isMoveForwardInWizardMode = this.props.isWizardMode && !nextStepId\n\n //previousStack is used for 'back' navigation is wizard mode.\n //only need to do it if moving forward i.e. nextStepId is undefined\n if (isMoveForwardInWizardMode) {\n previousStack.push(currentStep.id)\n }\n\n if (!isError) {\n currentStepState = StepStateEnum.COMPLETED\n\n if (!isMoveForwardInWizardMode && this.props.isWizardMode) {\n currentStepState = StepStateEnum.TODO\n }\n } else {\n currentStepState = StepStateEnum.ERROR\n }\n // determine next step\n nextStepId = await this.getNextStepId(currentStep, formData, nextStepId)\n\n const steps = this.state.steps.map(step => {\n if (step.id === currentStep.id) {\n return {\n ...step,\n ...{ state: currentStepState, inProgress: false },\n }\n } else if (step.id === nextStepId) {\n return { ...step, ...{ inProgress: true } }\n }\n return step\n })\n //if we are in wizard mode we want to make sure that we include the step we are about to go to\n if (isMoveForwardInWizardMode) {\n set(formData, `${nextStepId}.included`, true)\n }\n\n //at this point the form is valid and submitted and the data reflects the latest\n const nextStep = this.state.steps.find(step => step.id === nextStepId)!\n // clean up unused screens in wizard before getting to submit\n if (this.props.isWizardMode && nextStep.final) {\n Object.keys(formData).forEach(key => {\n if (formData[key].included === undefined) {\n formData[key] = {}\n }\n })\n }\n\n this.saveStepState(previousStack, steps, nextStep, formData)\n }\n\n //save the state of the current screen\n saveStepState = (\n previousStepIds: string[],\n steps: Step[],\n currentStep: Step,\n formData: any,\n ) => {\n this.setState({\n previousStepIds,\n steps,\n currentStep,\n formData,\n hasValidated: false,\n doShowErrors: false,\n })\n }\n\n //--------- fns to support navigation --------------------//\n goPrevious = async (formData: any, isError: boolean) => {\n let previousStepId: string | undefined\n const previousStack: string[] = [...this.state.previousStepIds]\n // in wizard mode we go to the previously visited screen.\n // In regular mode go to the screen with previous index\n if (this.props.isWizardMode) {\n previousStepId = previousStack.pop()\n if (!this.isSubmitScreen()) {\n //since we don't know if we'll get back to that step again - exclude it. We will include it again if we\n // get to it.\n set(formData, `${this.state.currentStep.id}.included`, undefined)\n }\n } else {\n const currentIndex = findIndex(this.state.steps, {\n id: this.state.currentStep.id,\n })\n if (currentIndex > 0) {\n previousStepId = this.state.steps[currentIndex - 1].id\n }\n }\n if (!isUndefined(previousStepId)) {\n return this.moveStep(formData, previousStepId, isError, previousStack)\n }\n }\n\n triggerAction = async (navAction: NavActionEnum) => {\n // we don't need to validate on save so bypassing submit\n if (navAction === NavActionEnum.SAVE) {\n return this.props.onSave(this.state.formData)\n } else {\n this.navAction = navAction\n // first run whatever custom validaton we have\n this.extraErrors = await this.runCustomValidation(\n this.state.formData,\n this.state.currentStep,\n this.state.steps,\n )\n if (this.submitButtonRef.current) {\n this.submitButtonRef.current.click()\n }\n }\n }\n\n // triggered when we click on the step name in left nav (doesn't happen in wizard mode)\n triggerStepChange = (step: Step) => {\n this.nextStep = step\n this.triggerAction(NavActionEnum.GO_TO_STEP)\n }\n\n onError = (args: any) => {\n this.setState({\n doShowErrors: true,\n hasValidated: false,\n })\n if (this.navAction === NavActionEnum.VALIDATE) {\n const modifiedSteps = this.setStepStatusForFailedValidation(\n args.props,\n this.state.steps,\n !!this.props.isWizardMode,\n this.state.formData,\n this.getSchema(this.state.currentStep).properties ||\n this.getSchema(this.state.currentStep),\n )\n this.setState({ steps: modifiedSteps })\n this.formDivRef.current.scrollTo(0, 0)\n if (this.state.isLoadingSaved) {\n this.moveStep(this.state.formData, modifiedSteps[0].id, true)\n this.setState({ isLoadingSaved: false })\n }\n }\n }\n\n setStepStatusForFailedValidation = (\n errors: RJSFValidationError[],\n steps: Step[],\n isWizard: boolean,\n formData: IFormData,\n currentSchemaProperties: any,\n ): Step[] => {\n //error property is in the format: step.somevalue.etc .welcome.submission_name example\n //find all the steps where there is an error\n const stepsWithError = errors.map(\n error => trimStart(error.property, '.').split('.')[0],\n )\n //find all steps in current schema\n const stepsInCurrentSchema = Object.keys(currentSchemaProperties)\n const updatedSteps: Step[] = steps.map(step => {\n //if there is an error in this step\n if (stepsWithError.indexOf(step.id) > -1) {\n return {\n ...step,\n state: StepStateEnum.ERROR,\n }\n //if no error and included in schema\n } else if (stepsInCurrentSchema.indexOf(step.id) > -1) {\n let state = StepStateEnum.COMPLETED\n //if we are in wizard and possibly have not visited this step\n if (isWizard && !get(formData[step.id], 'included')) {\n state = step.state\n }\n\n return {\n ...step,\n state: state,\n }\n } else {\n return step\n }\n })\n return updatedSteps\n }\n\n //we are constantly saving form data. Needed to overwrite on-error behavior\n handleOnChange({ formData }: any) {\n //this is just for form updates. submit screen goes different route\n if (!this.isSubmitScreen() && !this.state.currentStep.excluded) {\n const hasUnsavedChanges = !isEqual(this.state.formData, formData)\n this.setState({ formData, hasUnsavedChanges })\n }\n }\n\n performAction(navAction: NavActionEnum, hasError: boolean) {\n const formData = this.state.formData\n\n switch (navAction) {\n case NavActionEnum.NEXT: {\n return this.moveStep(formData, undefined, hasError)\n }\n case NavActionEnum.PREVIOUS: {\n return this.goPrevious(formData, hasError)\n }\n case NavActionEnum.GO_TO_STEP: {\n //nextStep is returned when clicked on the Steps left nav\n if (!this.nextStep) {\n return\n }\n return this.moveStep(formData, this.nextStep.id, hasError)\n }\n\n case NavActionEnum.SUBMIT: {\n this.props.onSubmit(formData)\n return\n }\n case NavActionEnum.VALIDATE: {\n //we get here is we clicked validate and the data is valid.\n // if it's not valid we handle it in onError fn\n const steps = this.setStepStatusForFailedValidation(\n [],\n this.state.steps,\n !!this.props.isWizardMode,\n this.state.formData,\n this.getSchema(this.state.currentStep).properties ||\n this.getSchema(this.state.currentStep),\n )\n const currentStep = {\n ...this.state.currentStep,\n state: StepStateEnum.COMPLETED,\n }\n\n this.setState({ hasValidated: true, currentStep, steps })\n if (this.state.isLoadingSaved) {\n this.moveStep(this.state.formData, steps[0].id, false)\n this.setState({ isLoadingSaved: false })\n }\n return\n }\n default:\n return\n }\n }\n\n //we need to route things through submit - otherwise validation does not kick in\n // it triggers internal library validation and calls the performAction with the params for action\n onSubmit: () => any = () => {\n this.performAction(\n this.navAction,\n this.state.currentStep.state === StepStateEnum.ERROR,\n )\n }\n\n isSubmitScreen = (): boolean => {\n return this.state.currentStep.final === true && !this.state.isLoadingSaved\n }\n\n showExcludeStateWarningDialog = (\n stepId: string,\n isUpdateFlattenedData: boolean = false,\n ): void => {\n this.setState({\n modalContext: {\n action: this.toggleExcludeStep,\n arguments: [stepId, true, isUpdateFlattenedData],\n },\n })\n }\n\n toggleExcludeStep = (stepId: string, isExclude: boolean): void => {\n this.setState((prevState, props) => {\n const steps = prevState.steps.map(stp => {\n if (stp.id === stepId) {\n return { ...stp, ...{ excluded: isExclude } }\n }\n return stp\n })\n\n const formDataUpdated = cloneDeep(prevState.formData)\n const currentStep = cloneDeep(prevState.currentStep)\n //we need this because you can exclude on the ifnal screen so the currentStep.id\n //is not always the one we need to exclude\n if (currentStep.id === stepId) {\n currentStep.excluded = isExclude\n }\n //if exluding - blow away the data for the step\n if (isExclude) {\n formDataUpdated[stepId] = {}\n //set(formDataUpdated, `${stepId}.included`, false);\n } else {\n set(formDataUpdated, `${stepId}.included`, true)\n }\n return {\n steps,\n formData: formDataUpdated,\n modalContext: undefined,\n currentStep,\n }\n })\n }\n\n private renderNotification = (status?: StatusEnum) => {\n if (status === StatusEnum.SAVE_SUCCESS) {\n return <div className=\"notification-area\"> Successfully saved </div>\n }\n if (status === StatusEnum.SUBMIT_SUCCESS) {\n return <div className=\"notification-area\"> Successfully submitted </div>\n }\n if (status === StatusEnum.PROGRESS) {\n return <div className=\"notification-area\"> working on it ....</div>\n }\n return <></>\n }\n\n // displays the text for screens that don't have any form data\n private renderTextForStaticScreen = () => {\n if (!this.state.currentStep.copy) {\n return <></>\n }\n const copy = this.state.currentStep.copy\n return (\n <div\n className=\"static-screen\"\n dangerouslySetInnerHTML={{ __html: copy }}\n />\n )\n }\n\n //displays subheader for forms that can be excluded\n renderOptionalFormSubheader = (isWizard: boolean = false) => {\n if (isWizard) {\n return <></>\n }\n const currentStep = this.state.currentStep\n\n if (currentStep.excluded === true) {\n return (\n <div className=\"step-exclude-directions\">\n This form is currently not included in the submission.\n <button\n className=\"btn btn-link\"\n onClick={() => this.toggleExcludeStep(currentStep.id, false)}\n >\n Include\n </button>\n </div>\n )\n } else if (currentStep.excluded === false) {\n return (\n <div className=\"step-exclude-directions\">\n This form is currently included in the submission. Enter some data if\n you have it, or click "Skip".\n <button\n className=\"btn btn-link\"\n onClick={() =>\n this.showExcludeStateWarningDialog(this.state.currentStep.id)\n }\n >\n Skip\n </button>\n </div>\n )\n }\n return <></>\n }\n\n renderHelpToggle = (\n currentStep: Step,\n showHelp: boolean,\n callbackFn: () => void,\n ) => {\n if (currentStep.static || currentStep.final) {\n return <></>\n }\n return (\n <>\n <label className=\"pull-right toggle-help-label\">\n <span>Hide help</span>\n <Switch\n checkedIcon={false}\n uncheckedIcon={false}\n height={20}\n width={45}\n className=\"toggle-help\"\n offColor=\"#ccc\"\n onChange={() => callbackFn()}\n checked={showHelp}\n />\n <span>Show help</span>\n </label>\n </>\n )\n }\n\n runCustomValidation = async (\n formData: IFormData,\n currentStep: Step,\n allSteps: Step[],\n ): Promise<RJSFValidationError[]> => {\n const errors: RJSFValidationError[] = []\n\n //default - running on current step\n let rules = currentStep.validationRules || []\n let data = {\n [currentStep.id]: formData[currentStep.id],\n }\n\n // for final step -- concatenate all rules and run on all data\n if (currentStep.final) {\n rules = allSteps.reduce((acc: any, value: Step) => {\n return value.validationRules && value.validationRules.length > 0\n ? acc.concat(value.validationRules)\n : acc\n }, [])\n data = cloneDeep(formData)\n }\n\n if (rules.length === 0) {\n return []\n }\n\n //this is a workaround for inability to define a rule to run on all members of the data array\n // we define the generic rule with path e.g.\"path\": \".experiments[*].dose_range.dose_range_min\",\n const allRules: any[] = []\n rules.forEach(rule => {\n //take a rule\n const paramProp = rule.event.params.property\n // if it's just a normal rule - add it\n if (paramProp.indexOf('[*]') === -1) {\n allRules.push(rule)\n } else {\n const path = paramProp.split('[*]')[0].substring(1)\n const data = get(formData, path)\n // generate a rule for each item in the data array by substituting [*] w/ appropriate index\n if (Array.isArray(data) && typeof data !== 'string') {\n for (let i = 0; i < data.length; i++) {\n const newRule = JSON.parse(\n JSON.stringify(rule).replace(/\\[\\*\\]/g, `[${i}]`),\n )\n allRules.push(newRule)\n }\n } else {\n allRules.push(rule)\n }\n }\n })\n // no we run all the rules through the engine\n const engine = new Engine(allRules, {\n allowUndefinedFacts: true,\n })\n\n try {\n const result: EngineResult = await engine.run(data)\n const validationEvents = result.events as IRulesValidationEvent[]\n validationEvents.forEach(event => {\n const err: RJSFValidationError = {\n ...event.params,\n ...{\n params: {},\n stack: `${event.params.property} ${event.params.message}`,\n },\n }\n errors.push(err)\n })\n } catch (error) {\n console.log(error)\n }\n\n return errors\n }\n\n transformErrors = (errors: RJSFValidationError[]): RJSFValidationError[] => {\n // if we are not in wizard mode and not trying to submit or validate we just want to skip\n // over the errors and just set the step status\n // https://github.com/rjsf-team/react-jsonschema-form/issues/1263\n this.extraErrors.forEach(extraError => {\n if (!errors.find(error => error.stack === extraError.stack)) {\n errors.push(extraError)\n }\n })\n\n if (\n this.navAction !== NavActionEnum.SUBMIT &&\n this.navAction !== NavActionEnum.VALIDATE &&\n (!this.props.isWizardMode || this.state.currentStep.final)\n ) {\n const currentStep = {\n ...this.state.currentStep,\n }\n if (errors.length > 0) {\n currentStep.state = StepStateEnum.ERROR\n } else {\n currentStep.state = StepStateEnum.COMPLETED\n }\n\n this.setState({ currentStep })\n\n return []\n }\n\n // there is an odd behavior in the lib that in cases when we have additional fields depending on enum\n // value if it's required and not entered we get 3 error: enum, required, and oneOf\n // so if there is an error Oneof on a parent - ignore it and enum on a child. and just output 'required'\n // if there is an enum error and there is required with the same prefix remove it\n\n const reqErrors = errors.filter(error => error.name === 'required')\n reqErrors.forEach(error => {\n if (error.property) {\n const parentPath = error.property.substring(\n 0,\n error.property.lastIndexOf('.'),\n )\n remove(errors, (error: RJSFValidationError) => {\n return (\n (error.property || '').indexOf(parentPath) > -1 &&\n (error.name === 'enum' || error.name === 'oneOf')\n )\n })\n }\n })\n\n return errors.map(error => {\n if (error.message) {\n error.message = error.message.replace('property', 'field')\n }\n return error\n })\n }\n\n renderErrorListTemplate = (props: ErrorListProps) => {\n const { errors } = props\n const currentLis = errors\n .map((error, i) => {\n return renderTransformedErrorObject(\n this.state.steps,\n error,\n this.uiSchema,\n i,\n this.props.schema,\n )\n })\n .sort((a, b) => a.order - b.order)\n .map(li => li.element)\n\n return (\n <div className=\"form-error-summary\">\n <ul className=\"error-detail\">{currentLis}</ul>\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"outter-wrap\">\n <Blocker\n shouldBlock={({ currentLocation, nextLocation }) =>\n this.state.hasUnsavedChanges &&\n currentLocation.pathname !== nextLocation.pathname\n }\n >\n {blocker => (\n <ConfirmationDialog\n open={blocker.state == 'blocked'}\n title=\"Unsaved Changes\"\n content={this.unsavedDataWarning}\n onConfirm={() => {\n if (blocker.proceed) {\n blocker.proceed()\n }\n }}\n onCancel={() => {\n if (blocker.reset) {\n blocker.reset()\n }\n }}\n />\n )}\n </Blocker>\n <Header\n isSubmitted={this.state.isSubmitted}\n bodyText={this.state.currentStep.description}\n title={this.props.formTitle}\n ></Header>\n <div>\n <div className=\"inner-wrap\">\n <StepsSideNav\n stepList={this.state.steps}\n isWizardMode={this.props.isWizardMode}\n onStepChange={this.triggerStepChange}\n ></StepsSideNav>\n {this.state.isLoadingSaved && (\n <div className=\"text-center\">\n <span className={'spinner'} />\n </div>\n )}\n <div className=\"form-wrap\">\n <div className=\"form-title\">{this.state.currentStep.title}</div>\n {this.renderNotification(this.props.callbackStatus)}\n <div\n className={`right-top-actions ${\n this.state.isSubmitted ? 'hide' : ''\n }`}\n >\n {!this.state.currentStep.static && (\n <button\n type=\"button\"\n className=\"btn btn-action save pull-right\"\n onClick={() => {\n this.triggerAction(NavActionEnum.VALIDATE)\n }}\n >\n VALIDATE\n </button>\n )}\n {this.renderHelpToggle(\n this.state.currentStep,\n this.state.doShowHelp,\n () =>\n this.setState({\n doShowHelp: !this.state.doShowHelp,\n }),\n )}\n {this.isSubmitScreen() && (\n <button\n type=\"button\"\n className=\"btn btn-action save pull-right\"\n disabled={this.state.isSubmitted}\n onClick={() => {\n this.triggerAction(NavActionEnum.SUBMIT)\n }}\n >\n SUBMIT\n </button>\n )}\n </div>\n {this.renderOptionalFormSubheader(this.props.isWizardMode)}\n <div\n className={\n this.isSubmitScreen() || this.state.currentStep.static\n ? 'hide-form-only'\n : 'wrap'\n }\n >\n {this.state.hasValidated && (\n <div className=\"notification-area\">\n Great! All required data on this form has been entered.\n </div>\n )}\n <div\n ref={this.formDivRef}\n className={`scroll-area ${\n this.state.currentStep.excluded ? 'disabled' : ' '\n } `}\n >\n <Form\n validator={validator}\n noHtml5Validate\n className={\n this.state.doShowHelp\n ? 'submissionInputForm'\n : 'submissionInputForm no-help'\n }\n liveValidate={false}\n formData={this.state.formData}\n schema={this.getSchema(this.state.currentStep)}\n uiSchema={this.uiSchema}\n onSubmit={this.onSubmit}\n onChange={args => this.handleOnChange(args)}\n onError={args =>\n this.onError({\n props: args,\n form: this.formRef,\n })\n }\n showErrorList={\n this.state.doShowErrors || this.props.isWizardMode\n ? 'top'\n : false\n }\n templates={{\n ErrorListTemplate: this.renderErrorListTemplate,\n }}\n transformErrors={this.transformErrors}\n ref={this.formRef}\n disabled={\n this.state.currentStep.excluded || this.state.isSubmitted\n }\n widgets={{\n CheckboxWidget: SynapseFormCheckboxWidget,\n CheckboxesWidget: SynapseFormCheckboxesWidget,\n RadioWidget: SynapseFormRadioWidget,\n }}\n >\n <div style={{ display: 'none' }}>\n <button type=\"submit\" ref={this.submitButtonRef}></button>\n </div>\n </Form>\n {this.renderTextForStaticScreen()}\n {!this.props.isWizardMode && (\n <NextStepLink\n steps={this.state.steps}\n nextStepId={this.state.currentStep.default}\n onNavAction={(step: Step) => this.triggerStepChange(step)}\n ></NextStepLink>\n )}\n </div>\n </div>\n\n {this.isSubmitScreen() && (\n <SummaryTable\n formData={this.state.formData}\n steps={this.state.steps}\n callbackFn={(screenId: string) =>\n this.showExcludeStateWarningDialog(screenId, true)\n }\n uiSchema={this.props.uiSchema}\n schema={this.props.schema}\n ></SummaryTable>\n )}\n\n <NavButtons\n currentStep={this.state.currentStep}\n steps={this.state.steps}\n previousStepIds={this.state.previousStepIds}\n isFormSubmitted={this.state.isSubmitted}\n onNavAction={(e: NavActionEnum) => {\n this.triggerAction(e)\n }}\n ></NavButtons>\n </div>\n </div>\n </div>\n {this.state.modalContext && (\n <WarningDialog\n open={true}\n title={this.excludeWarningHeader}\n content={this.excludeWarningText}\n className={`theme-${this.props.formClass}`}\n onConfirmCallbackArgs={this.state.modalContext.arguments}\n onCancel={() => this.setState({ modalContext: undefined })}\n onConfirm={(stepId: string, isExclude: boolean) =>\n this.toggleExcludeStep(stepId, isExclude)\n }\n />\n )}\n <DataDebug formData={this.state.formData} hidden={true}></DataDebug>\n </div>\n )\n }\n}\n\n// takes in a single validation error and and displays it in more readable manner\n// used by renderErrorListTemplate\nfunction renderTransformedErrorObject(\n steps: Step[],\n error: RJSFValidationError,\n uiSchema: UiSchema,\n i: number,\n schema: any,\n): { order: number; element: ReactNode } {\n const propPath = trimStart(error.property, '.')\n const propArr = propPath.split('.')\n\n // some things require labels in schema (e.g. checkboxes) so this is preferred\n const labelFromSchema = `${propArr.join('.properties.')}.title`\n //can be overriden by label in UI\n const labelFromUi = `${propPath}.ui:title`\n //for array fields we need to change the property e.g.\n // ld50.experiments[0].species_other should look like 'ld50.experiments.items.species_other'\n const arrayLabelFromSchema = labelFromSchema.replace(/\\[.*?\\]/, '.items')\n const arrayLabelFromUI = labelFromUi.replace(/\\[.*?\\]/, '.items')\n const indexMatch = labelFromSchema.match(/\\[.*?\\]/)\n\n let index = first(indexMatch)\n\n if (index) {\n index = index.substring(1, index.length - 1)\n index = !isNaN(parseInt(index)) ? ` [${parseInt(index) + 1}]` : ''\n }\n\n const label =\n get(uiSchema, labelFromUi) ||\n get(schema.properties, labelFromSchema) ||\n get(uiSchema, arrayLabelFromUI) ||\n get(schema.properties, arrayLabelFromSchema) ||\n error.property\n\n const screen = find(steps, { id: propArr[0] }) || {\n title: propArr[0],\n order: 0,\n }\n const element = (\n <li key={i} className=\"\">\n <span>\n <strong>\n {screen.title}\n {index}:\n </strong>\n {label} {error.message}\n </span>\n </li>\n )\n return { order: screen.order, element }\n}\n\n//recursively sets property value to dangerouslySetInnerHTML of that value\nfunction stringToElementForProp(srcObject: any, key: string): object {\n keys(srcObject).some(k => {\n if (k === key) {\n const value = srcObject[k]\n srcObject[k] = <span dangerouslySetInnerHTML={{ __html: value }}></span>\n\n return srcObject\n }\n if (srcObject[k] && typeof srcObject[k] === 'object') {\n stringToElementForProp(srcObject[k], key)\n }\n })\n return srcObject\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SynapseForm.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseForm.tsx"],"sourcesContent":["import Blocker from '@/components/utils/Blocker'\nimport Form from '@rjsf/core'\nimport { ErrorListProps, RJSFValidationError, UiSchema } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { Engine, EngineResult } from 'json-rules-engine'\nimport cloneDeep from 'lodash-es/cloneDeep'\nimport find from 'lodash-es/find'\nimport findIndex from 'lodash-es/findIndex'\nimport first from 'lodash-es/first'\nimport get from 'lodash-es/get'\nimport isEqual from 'lodash-es/isEqual'\nimport isUndefined from 'lodash-es/isUndefined'\nimport keys from 'lodash-es/keys'\nimport pick from 'lodash-es/pick'\nimport remove from 'lodash-es/remove'\nimport set from 'lodash-es/set'\nimport trimStart from 'lodash-es/trimStart'\nimport { Component, createRef, ReactNode, RefObject } from 'react'\nimport Switch from 'react-switch'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport DataDebug from './DataDebug'\nimport Header from './Header'\nimport { NavButtons, NextStepLink } from './NavButtons'\nimport StepsSideNav from './StepsSideNav'\nimport SummaryTable from './SummaryTable'\nimport SynapseFormCheckboxesWidget from './SynapseFormCheckboxesWidget'\nimport SynapseFormCheckboxWidget from './SynapseFormCheckboxWidget'\nimport SynapseFormRadioWidget from './SynapseFormRadioWidget'\nimport {\n FormSchema,\n IRulesNavigationEvent,\n IRulesValidationEvent,\n NavActionEnum,\n StatusEnum,\n Step,\n StepStateEnum,\n} from './types'\nimport WarningDialog from './WarningDialog'\n\nexport interface IFormData {\n [key: string]: {\n included?: boolean\n [key: string]: any\n }\n}\n\nexport type SynapseFormProps = {\n schema: FormSchema\n uiSchema: UiSchema\n navSchema: {\n steps: any[]\n }\n formData: IFormData\n onSubmit: (formData: IFormData) => void\n onSave: (formData: IFormData) => void\n formTitle: string\n formClass?: string\n isWizardMode?: boolean\n callbackStatus?: StatusEnum\n isSubmitted?: boolean\n}\n\ntype SynapseFormState = {\n formData: IFormData // form data that prepopulates the form\n currentStep: Step\n nextStep?: Step\n steps: Step[]\n previousStepIds: string[]\n hasValidated?: boolean //validation has been called and it passed\n doShowErrors: boolean //if we should show error summary at the top of the page\n doShowHelp: boolean\n modalContext?: { action: (...args: any[]) => void; arguments: any[] }\n hasUnsavedChanges: boolean\n isSubmitted?: boolean\n isLoadingSaved: boolean\n}\n\nexport interface SummaryFormat {\n label: string\n value: string\n}\n\nexport default class SynapseForm extends Component<\n SynapseFormProps,\n SynapseFormState\n> {\n excludeWarningText = (\n <div>\n <p>\n This action will clear any entered data on this page and remove this\n form from your submission. You can include it again at anytime. Only\n this page will be affected.\n </p>\n <p>Are you sure you want to skip this step and clear any entered data?</p>\n </div>\n )\n excludeWarningHeader = 'Skip This Step?'\n unsavedDataWarning = `You might have some unsaved data. Are you sure you want to leave?`\n formRef: RefObject<Form<IFormData> | null> //ref to form for submission\n submitButtonRef: RefObject<HTMLButtonElement | null>\n formDivRef: any // ref to the div containing form (for scrolling on validation failure)\n navAction: NavActionEnum = NavActionEnum.NONE\n uiSchema: UiSchema\n nextStep: Step | undefined\n extraErrors: RJSFValidationError[] = []\n\n isNewForm = (formData: IFormData): boolean => {\n return (\n (Object.keys(formData).length == 1 &&\n Object.keys(formData)[0] === 'metadata') ||\n Object.keys(formData).length == 0\n )\n }\n\n getFirstStep = (steps: Step[], formData: IFormData): Step => {\n if (!this.isNewForm(formData)) {\n return steps.find(step => step.final === true) || steps[0]\n } else {\n return steps[0]\n }\n }\n\n constructor(props: SynapseFormProps) {\n super(props)\n\n //will modify the ui:help to render html vs text\n this.uiSchema = stringToElementForProp(\n cloneDeep(props.uiSchema),\n 'ui:help',\n ) as UiSchema\n //create steps array from the navSchema\n const steps = props.navSchema.steps\n .map((step, i) => {\n return {\n ...step,\n inProgress: i === 0 ? true : false,\n }\n })\n .sort((a, b) => a.order - b.order)\n\n this.formRef = createRef()\n this.formDivRef = createRef()\n this.submitButtonRef = createRef()\n const currentStep = this.getFirstStep(steps, props.formData)\n this.state = {\n currentStep,\n steps,\n previousStepIds: [],\n formData: props.formData,\n doShowErrors: false,\n doShowHelp: true,\n hasUnsavedChanges: false,\n isSubmitted: props.isSubmitted,\n isLoadingSaved: !this.isNewForm(this.props.formData),\n }\n }\n\n onUnload = (ev: any) => {\n {\n if (this.state.hasUnsavedChanges) {\n ev.preventDefault()\n return (ev.returnValue = this.unsavedDataWarning)\n }\n return\n }\n }\n // Setup the `beforeunload` event listener\n setupBeforeUnloadListener = () => {\n window.addEventListener('beforeunload', this.onUnload)\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.onUnload)\n }\n\n componentDidUpdate(prevProps: SynapseFormProps) {\n const shouldUpdate = this.props.callbackStatus !== prevProps.callbackStatus\n const isSuccess =\n this.props.callbackStatus === StatusEnum.SAVE_SUCCESS ||\n this.props.callbackStatus === StatusEnum.SUBMIT_SUCCESS\n if (shouldUpdate && isSuccess) {\n this.setState({ hasUnsavedChanges: false })\n if (this.props.callbackStatus === StatusEnum.SUBMIT_SUCCESS) {\n this.setState({ isSubmitted: true })\n window.history.back()\n }\n }\n }\n\n _setIncludedPropInFormDataNonWizard = (\n currentState: SynapseFormState,\n schemaScreens: any,\n ): IFormData => {\n const result = {}\n const currentStateFormData = currentState.formData\n //if there is a top level 'included' property in schema - update the form.\n Object.keys(schemaScreens).forEach((key: string) => {\n if (get(schemaScreens[key], `properties.included`)) {\n set(result, `${key}.included`, true)\n }\n })\n return { ...currentStateFormData, ...result }\n }\n\n _setIncludedPropInFormDataWizard = (\n currentState: SynapseFormState,\n ): IFormData => {\n const firstStepId = currentState.currentStep.id\n const newStateData = cloneDeep(currentState.formData)\n set(newStateData, `${firstStepId}.included`, true)\n return newStateData\n }\n\n componentDidMount() {\n this.setupBeforeUnloadListener()\n const isNewForm = this.isNewForm(this.state.formData)\n if (!isNewForm) {\n //when loading saved form - validate to see the steps status\n this.triggerAction(NavActionEnum.VALIDATE)\n } else {\n // for validation of optional forms. Validation is enforced only if included property is set.\n this.setState(prevState => {\n const newFormData = this.props.isWizardMode\n ? this._setIncludedPropInFormDataWizard(prevState)\n : this._setIncludedPropInFormDataNonWizard(\n prevState,\n this.props.schema,\n )\n return {\n formData: newFormData,\n }\n })\n }\n }\n\n // get the schema slice for the current screen/step\n getSchema = ({ id, final }: Step): FormSchema => {\n if (final) {\n return this.props.schema\n }\n //only get schema for current step. Only the portion of entire form is shown\n\n const currentStepSlice = pick(this.props.schema, [\n 'title',\n 'type',\n `properties.${id}`,\n ])\n return currentStepSlice\n }\n\n // find the next step\n getNextStepId = async (\n currentStep: Step,\n formData: any,\n nextStepId?: string,\n ): Promise<string> => {\n if (nextStepId) {\n return nextStepId\n }\n if (!currentStep.rules || currentStep.rules.length === 0) {\n return currentStep.default\n }\n\n // if there are rules - run the engine and go to the first next step\n const engine = new Engine(currentStep.rules)\n\n try {\n const result: EngineResult = await engine.run(formData)\n if (result.events.length > 0) {\n return (result.events[0] as IRulesNavigationEvent).params.next\n } else {\n return currentStep.default\n }\n } catch (error) {\n return currentStep.default\n }\n }\n\n // called when going next, previous or a given step\n moveStep = async (\n formData: any,\n nextStepId: string | undefined,\n isError: boolean,\n previousStack = [...this.state.previousStepIds],\n ) => {\n const currentStep = this.state.currentStep\n let currentStepState: StepStateEnum\n //we don't wnat to display errors on the page - this will be done explicitly in validation\n if (this.formRef?.current) {\n this.formRef.current.setState({ errorSchema: {} })\n }\n //in wizard mode we can only move forwards (don't know next step yet) or backwards (do know next step)\n const isMoveForwardInWizardMode = this.props.isWizardMode && !nextStepId\n\n //previousStack is used for 'back' navigation is wizard mode.\n //only need to do it if moving forward i.e. nextStepId is undefined\n if (isMoveForwardInWizardMode) {\n previousStack.push(currentStep.id)\n }\n\n if (!isError) {\n currentStepState = StepStateEnum.COMPLETED\n\n if (!isMoveForwardInWizardMode && this.props.isWizardMode) {\n currentStepState = StepStateEnum.TODO\n }\n } else {\n currentStepState = StepStateEnum.ERROR\n }\n // determine next step\n nextStepId = await this.getNextStepId(currentStep, formData, nextStepId)\n\n const steps = this.state.steps.map(step => {\n if (step.id === currentStep.id) {\n return {\n ...step,\n ...{ state: currentStepState, inProgress: false },\n }\n } else if (step.id === nextStepId) {\n return { ...step, ...{ inProgress: true } }\n }\n return step\n })\n //if we are in wizard mode we want to make sure that we include the step we are about to go to\n if (isMoveForwardInWizardMode) {\n set(formData, `${nextStepId}.included`, true)\n }\n\n //at this point the form is valid and submitted and the data reflects the latest\n const nextStep = this.state.steps.find(step => step.id === nextStepId)!\n // clean up unused screens in wizard before getting to submit\n if (this.props.isWizardMode && nextStep.final) {\n Object.keys(formData).forEach(key => {\n if (formData[key].included === undefined) {\n formData[key] = {}\n }\n })\n }\n\n this.saveStepState(previousStack, steps, nextStep, formData)\n }\n\n //save the state of the current screen\n saveStepState = (\n previousStepIds: string[],\n steps: Step[],\n currentStep: Step,\n formData: any,\n ) => {\n this.setState({\n previousStepIds,\n steps,\n currentStep,\n formData,\n hasValidated: false,\n doShowErrors: false,\n })\n }\n\n //--------- fns to support navigation --------------------//\n goPrevious = async (formData: any, isError: boolean) => {\n let previousStepId: string | undefined\n const previousStack: string[] = [...this.state.previousStepIds]\n // in wizard mode we go to the previously visited screen.\n // In regular mode go to the screen with previous index\n if (this.props.isWizardMode) {\n previousStepId = previousStack.pop()\n if (!this.isSubmitScreen()) {\n //since we don't know if we'll get back to that step again - exclude it. We will include it again if we\n // get to it.\n set(formData, `${this.state.currentStep.id}.included`, undefined)\n }\n } else {\n const currentIndex = findIndex(this.state.steps, {\n id: this.state.currentStep.id,\n })\n if (currentIndex > 0) {\n previousStepId = this.state.steps[currentIndex - 1].id\n }\n }\n if (!isUndefined(previousStepId)) {\n return this.moveStep(formData, previousStepId, isError, previousStack)\n }\n }\n\n triggerAction = async (navAction: NavActionEnum) => {\n // we don't need to validate on save so bypassing submit\n if (navAction === NavActionEnum.SAVE) {\n return this.props.onSave(this.state.formData)\n } else {\n this.navAction = navAction\n // first run whatever custom validaton we have\n this.extraErrors = await this.runCustomValidation(\n this.state.formData,\n this.state.currentStep,\n this.state.steps,\n )\n if (this.submitButtonRef.current) {\n this.submitButtonRef.current.click()\n }\n }\n }\n\n // triggered when we click on the step name in left nav (doesn't happen in wizard mode)\n triggerStepChange = (step: Step) => {\n this.nextStep = step\n this.triggerAction(NavActionEnum.GO_TO_STEP)\n }\n\n onError = (args: any) => {\n this.setState({\n doShowErrors: true,\n hasValidated: false,\n })\n if (this.navAction === NavActionEnum.VALIDATE) {\n const modifiedSteps = this.setStepStatusForFailedValidation(\n args.props,\n this.state.steps,\n !!this.props.isWizardMode,\n this.state.formData,\n this.getSchema(this.state.currentStep).properties ||\n this.getSchema(this.state.currentStep),\n )\n this.setState({ steps: modifiedSteps })\n this.formDivRef.current.scrollTo(0, 0)\n if (this.state.isLoadingSaved) {\n this.moveStep(this.state.formData, modifiedSteps[0].id, true)\n this.setState({ isLoadingSaved: false })\n }\n }\n }\n\n setStepStatusForFailedValidation = (\n errors: RJSFValidationError[],\n steps: Step[],\n isWizard: boolean,\n formData: IFormData,\n currentSchemaProperties: any,\n ): Step[] => {\n //error property is in the format: step.somevalue.etc .welcome.submission_name example\n //find all the steps where there is an error\n const stepsWithError = errors.map(\n error => trimStart(error.property, '.').split('.')[0],\n )\n //find all steps in current schema\n const stepsInCurrentSchema = Object.keys(currentSchemaProperties)\n const updatedSteps: Step[] = steps.map(step => {\n //if there is an error in this step\n if (stepsWithError.indexOf(step.id) > -1) {\n return {\n ...step,\n state: StepStateEnum.ERROR,\n }\n //if no error and included in schema\n } else if (stepsInCurrentSchema.indexOf(step.id) > -1) {\n let state = StepStateEnum.COMPLETED\n //if we are in wizard and possibly have not visited this step\n if (isWizard && !get(formData[step.id], 'included')) {\n state = step.state\n }\n\n return {\n ...step,\n state: state,\n }\n } else {\n return step\n }\n })\n return updatedSteps\n }\n\n //we are constantly saving form data. Needed to overwrite on-error behavior\n handleOnChange({ formData }: any) {\n //this is just for form updates. submit screen goes different route\n if (!this.isSubmitScreen() && !this.state.currentStep.excluded) {\n const hasUnsavedChanges = !isEqual(this.state.formData, formData)\n this.setState({ formData, hasUnsavedChanges })\n }\n }\n\n performAction(navAction: NavActionEnum, hasError: boolean) {\n const formData = this.state.formData\n\n switch (navAction) {\n case NavActionEnum.NEXT: {\n return this.moveStep(formData, undefined, hasError)\n }\n case NavActionEnum.PREVIOUS: {\n return this.goPrevious(formData, hasError)\n }\n case NavActionEnum.GO_TO_STEP: {\n //nextStep is returned when clicked on the Steps left nav\n if (!this.nextStep) {\n return\n }\n return this.moveStep(formData, this.nextStep.id, hasError)\n }\n\n case NavActionEnum.SUBMIT: {\n this.props.onSubmit(formData)\n return\n }\n case NavActionEnum.VALIDATE: {\n //we get here is we clicked validate and the data is valid.\n // if it's not valid we handle it in onError fn\n const steps = this.setStepStatusForFailedValidation(\n [],\n this.state.steps,\n !!this.props.isWizardMode,\n this.state.formData,\n this.getSchema(this.state.currentStep).properties ||\n this.getSchema(this.state.currentStep),\n )\n const currentStep = {\n ...this.state.currentStep,\n state: StepStateEnum.COMPLETED,\n }\n\n this.setState({ hasValidated: true, currentStep, steps })\n if (this.state.isLoadingSaved) {\n this.moveStep(this.state.formData, steps[0].id, false)\n this.setState({ isLoadingSaved: false })\n }\n return\n }\n default:\n return\n }\n }\n\n //we need to route things through submit - otherwise validation does not kick in\n // it triggers internal library validation and calls the performAction with the params for action\n onSubmit: () => any = () => {\n this.performAction(\n this.navAction,\n this.state.currentStep.state === StepStateEnum.ERROR,\n )\n }\n\n isSubmitScreen = (): boolean => {\n return this.state.currentStep.final === true && !this.state.isLoadingSaved\n }\n\n showExcludeStateWarningDialog = (\n stepId: string,\n isUpdateFlattenedData: boolean = false,\n ): void => {\n this.setState({\n modalContext: {\n action: this.toggleExcludeStep,\n arguments: [stepId, true, isUpdateFlattenedData],\n },\n })\n }\n\n toggleExcludeStep = (stepId: string, isExclude: boolean): void => {\n this.setState((prevState, props) => {\n const steps = prevState.steps.map(stp => {\n if (stp.id === stepId) {\n return { ...stp, ...{ excluded: isExclude } }\n }\n return stp\n })\n\n const formDataUpdated = cloneDeep(prevState.formData)\n const currentStep = cloneDeep(prevState.currentStep)\n //we need this because you can exclude on the ifnal screen so the currentStep.id\n //is not always the one we need to exclude\n if (currentStep.id === stepId) {\n currentStep.excluded = isExclude\n }\n //if exluding - blow away the data for the step\n if (isExclude) {\n formDataUpdated[stepId] = {}\n //set(formDataUpdated, `${stepId}.included`, false);\n } else {\n set(formDataUpdated, `${stepId}.included`, true)\n }\n return {\n steps,\n formData: formDataUpdated,\n modalContext: undefined,\n currentStep,\n }\n })\n }\n\n private renderNotification = (status?: StatusEnum) => {\n if (status === StatusEnum.SAVE_SUCCESS) {\n return <div className=\"notification-area\"> Successfully saved </div>\n }\n if (status === StatusEnum.SUBMIT_SUCCESS) {\n return <div className=\"notification-area\"> Successfully submitted </div>\n }\n if (status === StatusEnum.PROGRESS) {\n return <div className=\"notification-area\"> working on it ....</div>\n }\n return <></>\n }\n\n // displays the text for screens that don't have any form data\n private renderTextForStaticScreen = () => {\n if (!this.state.currentStep.copy) {\n return <></>\n }\n const copy = this.state.currentStep.copy\n return (\n <div\n className=\"static-screen\"\n dangerouslySetInnerHTML={{ __html: copy }}\n />\n )\n }\n\n //displays subheader for forms that can be excluded\n renderOptionalFormSubheader = (isWizard: boolean = false) => {\n if (isWizard) {\n return <></>\n }\n const currentStep = this.state.currentStep\n\n if (currentStep.excluded === true) {\n return (\n <div className=\"step-exclude-directions\">\n This form is currently not included in the submission.\n <button\n className=\"btn btn-link\"\n onClick={() => this.toggleExcludeStep(currentStep.id, false)}\n >\n Include\n </button>\n </div>\n )\n } else if (currentStep.excluded === false) {\n return (\n <div className=\"step-exclude-directions\">\n This form is currently included in the submission. Enter some data if\n you have it, or click "Skip".\n <button\n className=\"btn btn-link\"\n onClick={() =>\n this.showExcludeStateWarningDialog(this.state.currentStep.id)\n }\n >\n Skip\n </button>\n </div>\n )\n }\n return <></>\n }\n\n renderHelpToggle = (\n currentStep: Step,\n showHelp: boolean,\n callbackFn: () => void,\n ) => {\n if (currentStep.static || currentStep.final) {\n return <></>\n }\n return (\n <>\n <label className=\"pull-right toggle-help-label\">\n <span>Hide help</span>\n <Switch\n checkedIcon={false}\n uncheckedIcon={false}\n height={20}\n width={45}\n className=\"toggle-help\"\n offColor=\"#ccc\"\n onChange={() => callbackFn()}\n checked={showHelp}\n />\n <span>Show help</span>\n </label>\n </>\n )\n }\n\n runCustomValidation = async (\n formData: IFormData,\n currentStep: Step,\n allSteps: Step[],\n ): Promise<RJSFValidationError[]> => {\n const errors: RJSFValidationError[] = []\n\n //default - running on current step\n let rules = currentStep.validationRules || []\n let data = {\n [currentStep.id]: formData[currentStep.id],\n }\n\n // for final step -- concatenate all rules and run on all data\n if (currentStep.final) {\n rules = allSteps.reduce((acc: any, value: Step) => {\n return value.validationRules && value.validationRules.length > 0\n ? acc.concat(value.validationRules)\n : acc\n }, [])\n data = cloneDeep(formData)\n }\n\n if (rules.length === 0) {\n return []\n }\n\n //this is a workaround for inability to define a rule to run on all members of the data array\n // we define the generic rule with path e.g.\"path\": \".experiments[*].dose_range.dose_range_min\",\n const allRules: any[] = []\n rules.forEach(rule => {\n //take a rule\n const paramProp = rule.event.params.property\n // if it's just a normal rule - add it\n if (paramProp.indexOf('[*]') === -1) {\n allRules.push(rule)\n } else {\n const path = paramProp.split('[*]')[0].substring(1)\n const data = get(formData, path)\n // generate a rule for each item in the data array by substituting [*] w/ appropriate index\n if (Array.isArray(data) && typeof data !== 'string') {\n for (let i = 0; i < data.length; i++) {\n const newRule = JSON.parse(\n JSON.stringify(rule).replace(/\\[\\*\\]/g, `[${i}]`),\n )\n allRules.push(newRule)\n }\n } else {\n allRules.push(rule)\n }\n }\n })\n // no we run all the rules through the engine\n const engine = new Engine(allRules, {\n allowUndefinedFacts: true,\n })\n\n try {\n const result: EngineResult = await engine.run(data)\n const validationEvents = result.events as IRulesValidationEvent[]\n validationEvents.forEach(event => {\n const err: RJSFValidationError = {\n ...event.params,\n ...{\n params: {},\n stack: `${event.params.property} ${event.params.message}`,\n },\n }\n errors.push(err)\n })\n } catch (error) {\n console.log(error)\n }\n\n return errors\n }\n\n transformErrors = (errors: RJSFValidationError[]): RJSFValidationError[] => {\n // if we are not in wizard mode and not trying to submit or validate we just want to skip\n // over the errors and just set the step status\n // https://github.com/rjsf-team/react-jsonschema-form/issues/1263\n this.extraErrors.forEach(extraError => {\n if (!errors.find(error => error.stack === extraError.stack)) {\n errors.push(extraError)\n }\n })\n\n if (\n this.navAction !== NavActionEnum.SUBMIT &&\n this.navAction !== NavActionEnum.VALIDATE &&\n (!this.props.isWizardMode || this.state.currentStep.final)\n ) {\n const currentStep = {\n ...this.state.currentStep,\n }\n if (errors.length > 0) {\n currentStep.state = StepStateEnum.ERROR\n } else {\n currentStep.state = StepStateEnum.COMPLETED\n }\n\n this.setState({ currentStep })\n\n return []\n }\n\n // there is an odd behavior in the lib that in cases when we have additional fields depending on enum\n // value if it's required and not entered we get 3 error: enum, required, and oneOf\n // so if there is an error Oneof on a parent - ignore it and enum on a child. and just output 'required'\n // if there is an enum error and there is required with the same prefix remove it\n\n const reqErrors = errors.filter(error => error.name === 'required')\n reqErrors.forEach(error => {\n if (error.property) {\n const parentPath = error.property.substring(\n 0,\n error.property.lastIndexOf('.'),\n )\n remove(errors, (error: RJSFValidationError) => {\n return (\n (error.property || '').indexOf(parentPath) > -1 &&\n (error.name === 'enum' || error.name === 'oneOf')\n )\n })\n }\n })\n\n return errors.map(error => {\n if (error.message) {\n error.message = error.message.replace('property', 'field')\n }\n return error\n })\n }\n\n renderErrorListTemplate = (props: ErrorListProps) => {\n const { errors } = props\n const currentLis = errors\n .map((error, i) => {\n return renderTransformedErrorObject(\n this.state.steps,\n error,\n this.uiSchema,\n i,\n this.props.schema,\n )\n })\n .sort((a, b) => a.order - b.order)\n .map(li => li.element)\n\n return (\n <div className=\"form-error-summary\">\n <ul className=\"error-detail\">{currentLis}</ul>\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"outter-wrap\">\n <Blocker\n shouldBlock={({ currentLocation, nextLocation }) =>\n this.state.hasUnsavedChanges &&\n currentLocation.pathname !== nextLocation.pathname\n }\n >\n {blocker => (\n <ConfirmationDialog\n open={blocker.state == 'blocked'}\n title=\"Unsaved Changes\"\n content={this.unsavedDataWarning}\n onConfirm={() => {\n if (blocker.proceed) {\n blocker.proceed()\n }\n }}\n onCancel={() => {\n if (blocker.reset) {\n blocker.reset()\n }\n }}\n />\n )}\n </Blocker>\n <Header\n isSubmitted={this.state.isSubmitted}\n bodyText={this.state.currentStep.description}\n title={this.props.formTitle}\n ></Header>\n <div>\n <div className=\"inner-wrap\">\n <StepsSideNav\n stepList={this.state.steps}\n isWizardMode={this.props.isWizardMode}\n onStepChange={this.triggerStepChange}\n ></StepsSideNav>\n {this.state.isLoadingSaved && (\n <div className=\"text-center\">\n <span className={'spinner'} />\n </div>\n )}\n <div className=\"form-wrap\">\n <div className=\"form-title\">{this.state.currentStep.title}</div>\n {this.renderNotification(this.props.callbackStatus)}\n <div\n className={`right-top-actions ${\n this.state.isSubmitted ? 'hide' : ''\n }`}\n >\n {!this.state.currentStep.static && (\n <button\n type=\"button\"\n className=\"btn btn-action save pull-right\"\n onClick={() => {\n this.triggerAction(NavActionEnum.VALIDATE)\n }}\n >\n VALIDATE\n </button>\n )}\n {this.renderHelpToggle(\n this.state.currentStep,\n this.state.doShowHelp,\n () =>\n this.setState({\n doShowHelp: !this.state.doShowHelp,\n }),\n )}\n {this.isSubmitScreen() && (\n <button\n type=\"button\"\n className=\"btn btn-action save pull-right\"\n disabled={this.state.isSubmitted}\n onClick={() => {\n this.triggerAction(NavActionEnum.SUBMIT)\n }}\n >\n SUBMIT\n </button>\n )}\n </div>\n {this.renderOptionalFormSubheader(this.props.isWizardMode)}\n <div\n className={\n this.isSubmitScreen() || this.state.currentStep.static\n ? 'hide-form-only'\n : 'wrap'\n }\n >\n {this.state.hasValidated && (\n <div className=\"notification-area\">\n Great! All required data on this form has been entered.\n </div>\n )}\n <div\n ref={this.formDivRef}\n className={`scroll-area ${\n this.state.currentStep.excluded ? 'disabled' : ' '\n } `}\n >\n <Form\n validator={validator}\n noHtml5Validate\n className={\n this.state.doShowHelp\n ? 'submissionInputForm'\n : 'submissionInputForm no-help'\n }\n liveValidate={false}\n formData={this.state.formData}\n schema={this.getSchema(this.state.currentStep)}\n uiSchema={this.uiSchema}\n onSubmit={this.onSubmit}\n onChange={args => this.handleOnChange(args)}\n onError={args =>\n this.onError({\n props: args,\n form: this.formRef,\n })\n }\n showErrorList={\n this.state.doShowErrors || this.props.isWizardMode\n ? 'top'\n : false\n }\n templates={{\n ErrorListTemplate: this.renderErrorListTemplate,\n }}\n transformErrors={this.transformErrors}\n ref={this.formRef}\n disabled={\n this.state.currentStep.excluded || this.state.isSubmitted\n }\n widgets={{\n CheckboxWidget: SynapseFormCheckboxWidget,\n CheckboxesWidget: SynapseFormCheckboxesWidget,\n RadioWidget: SynapseFormRadioWidget,\n }}\n >\n <div style={{ display: 'none' }}>\n <button type=\"submit\" ref={this.submitButtonRef}></button>\n </div>\n </Form>\n {this.renderTextForStaticScreen()}\n {!this.props.isWizardMode && (\n <NextStepLink\n steps={this.state.steps}\n nextStepId={this.state.currentStep.default}\n onNavAction={(step: Step) => this.triggerStepChange(step)}\n ></NextStepLink>\n )}\n </div>\n </div>\n\n {this.isSubmitScreen() && (\n <SummaryTable\n formData={this.state.formData}\n steps={this.state.steps}\n callbackFn={(screenId: string) =>\n this.showExcludeStateWarningDialog(screenId, true)\n }\n uiSchema={this.props.uiSchema}\n schema={this.props.schema}\n ></SummaryTable>\n )}\n\n <NavButtons\n currentStep={this.state.currentStep}\n steps={this.state.steps}\n previousStepIds={this.state.previousStepIds}\n isFormSubmitted={this.state.isSubmitted}\n onNavAction={(e: NavActionEnum) => {\n this.triggerAction(e)\n }}\n ></NavButtons>\n </div>\n </div>\n </div>\n {this.state.modalContext && (\n <WarningDialog\n open={true}\n title={this.excludeWarningHeader}\n content={this.excludeWarningText}\n className={`theme-${this.props.formClass}`}\n onConfirmCallbackArgs={this.state.modalContext.arguments}\n onCancel={() => this.setState({ modalContext: undefined })}\n onConfirm={(stepId: string, isExclude: boolean) =>\n this.toggleExcludeStep(stepId, isExclude)\n }\n />\n )}\n <DataDebug formData={this.state.formData} hidden={true}></DataDebug>\n </div>\n )\n }\n}\n\n// takes in a single validation error and and displays it in more readable manner\n// used by renderErrorListTemplate\nfunction renderTransformedErrorObject(\n steps: Step[],\n error: RJSFValidationError,\n uiSchema: UiSchema,\n i: number,\n schema: any,\n): { order: number; element: ReactNode } {\n const propPath = trimStart(error.property, '.')\n const propArr = propPath.split('.')\n\n // some things require labels in schema (e.g. checkboxes) so this is preferred\n const labelFromSchema = `${propArr.join('.properties.')}.title`\n //can be overriden by label in UI\n const labelFromUi = `${propPath}.ui:title`\n //for array fields we need to change the property e.g.\n // ld50.experiments[0].species_other should look like 'ld50.experiments.items.species_other'\n const arrayLabelFromSchema = labelFromSchema.replace(/\\[.*?\\]/, '.items')\n const arrayLabelFromUI = labelFromUi.replace(/\\[.*?\\]/, '.items')\n const indexMatch = labelFromSchema.match(/\\[.*?\\]/)\n\n let index = first(indexMatch)\n\n if (index) {\n index = index.substring(1, index.length - 1)\n index = !isNaN(parseInt(index)) ? ` [${parseInt(index) + 1}]` : ''\n }\n\n const label =\n get(uiSchema, labelFromUi) ||\n get(schema.properties, labelFromSchema) ||\n get(uiSchema, arrayLabelFromUI) ||\n get(schema.properties, arrayLabelFromSchema) ||\n error.property\n\n const screen = find(steps, { id: propArr[0] }) || {\n title: propArr[0],\n order: 0,\n }\n const element = (\n <li key={i} className=\"\">\n <span>\n <strong>\n {screen.title}\n {index}:\n </strong>\n {label} {error.message}\n </span>\n </li>\n )\n return { order: screen.order, element }\n}\n\n//recursively sets property value to dangerouslySetInnerHTML of that value\nfunction stringToElementForProp(srcObject: any, key: string): object {\n keys(srcObject).some(k => {\n if (k === key) {\n const value = srcObject[k]\n srcObject[k] = <span dangerouslySetInnerHTML={{ __html: value }}></span>\n\n return srcObject\n }\n if (srcObject[k] && typeof srcObject[k] === 'object') {\n stringToElementForProp(srcObject[k], key)\n }\n })\n return srcObject\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormCheckboxWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormCheckboxWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormCheckboxWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.CheckboxWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;
|
|
1
|
+
{"version":3,"file":"SynapseFormCheckboxWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormCheckboxWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormCheckboxWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.CheckboxWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;CACpB,OAAO,kBAAC,EAAQ,gBAAT;EAAwB,GAAI;EAAO,WAAA;CAAW,CAAA;AACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormCheckboxesWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormCheckboxesWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormCheckboxesWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.CheckboxesWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;
|
|
1
|
+
{"version":3,"file":"SynapseFormCheckboxesWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormCheckboxesWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormCheckboxesWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.CheckboxesWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;CACpB,OAAO,kBAAC,EAAQ,kBAAT;EAA0B,GAAI;EAAO,WAAA;CAAW,CAAA;AACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormRadioWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormRadioWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormRadioWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.RadioWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;
|
|
1
|
+
{"version":3,"file":"SynapseFormRadioWidget.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormRadioWidget.tsx"],"sourcesContent":["import { Widgets } from '@rjsf/mui'\nimport { RJSFSchema, WidgetProps } from '@rjsf/utils'\n\n// See PORTALS-3246\nexport default function SynapseFormRadioWidget<\n T = any,\n S = RJSFSchema,\n F = any,\n>(props: WidgetProps) {\n return <Widgets.RadioWidget {...props} hideLabel />\n}\n"],"mappings":";;;AAIA,SAAwB,EAItB,GAAoB;CACpB,OAAO,kBAAC,EAAQ,aAAT;EAAqB,GAAI;EAAO,WAAA;CAAW,CAAA;AACpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormSubmissionGrid.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormSubmissionGrid.tsx"],"sourcesContent":["import { ReactComponent as NoSubmissionsIcon } from '@/assets/icons/json-form-tool-no-submissions.svg'\nimport WideButton from '@/components/styled/WideButton'\n\nimport SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport DeleteTwoToneIcon from '@mui/icons-material/DeleteTwoTone'\nimport PhoneTwoToneIcon from '@mui/icons-material/PhoneTwoTone'\nimport { Box, Button, IconButton, Link, Typography } from '@mui/material'\nimport {\n FormData,\n ListRequest,\n ListResponse,\n StatusEnum,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport calendar from 'dayjs/plugin/calendar'\nimport { Component } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport WarningDialog from './WarningDialog'\n\ndayjs.extend(calendar)\n/**\n * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken\n *\n * This wasn't done because Enzyme's shallow renderer is not currently\n * compatible with the `contextType` field in the React 16+ context API.\n *\n * This can be fixed by rewriting tests to not rely on the shallow renderer.\n *\n * See here: https://github.com/enzymejs/enzyme/issues/1553\n */\n\nexport type SynapseFormSubmissionGridProps = {\n token?: string\n isAuthenticated?: boolean\n formGroupId: string\n pathpart: string\n formClass?: string\n itemNoun: string\n}\n\ntype FileListType = 'IN_PROGRESS' | 'SUBMITTED'\n\ntype SynapseFormSubmissionGridState = {\n inProgress: {\n fileList: FormData[]\n nextPageToken?: string\n }\n submitted: {\n fileList: FormData[]\n nextPageToken?: string\n }\n isLoading: boolean\n isShowInfoModal: boolean\n modalContext?: { action: (...args: any[]) => void; arguments: any[] }\n}\n\nclass _SynapseFormSubmissionGrid extends Component<\n SynapseFormSubmissionGridProps,\n SynapseFormSubmissionGridState\n> {\n modalTitle = 'Trash Submission?'\n listingText = {\n inProgress: {\n subhead: 'In Progress',\n noRecords: `You don't have submissions in progress`,\n },\n submitted: {\n subhead: 'Submitted',\n noRecords: `You don't have anything submitted`,\n },\n }\n modalCopy = (\n <>\n <p>\n This submission is currently incomplete and has not been submitted. If\n you trash this submission, you won't be able to recover the data.\n </p>\n <p>Are you sure you want to trash this submission?</p>\n </>\n )\n static requestFilter = {\n IN_PROGRESS: [StatusEnum.WAITING_FOR_SUBMISSION],\n SUBMITTED: [\n StatusEnum.SUBMITTED_WAITING_FOR_REVIEW,\n StatusEnum.ACCEPTED,\n StatusEnum.REJECTED,\n ],\n }\n\n constructor(props: SynapseFormSubmissionGridProps) {\n super(props)\n this.state = {\n isLoading: true,\n isShowInfoModal: false,\n inProgress: {\n fileList: [],\n },\n submitted: {\n fileList: [],\n },\n }\n }\n\n componentDidMount() {\n this.refresh(this.props.isAuthenticated)\n }\n\n componentDidUpdate(prevProps: SynapseFormSubmissionGridProps) {\n const shouldUpdate = this.props.token !== prevProps.token\n if (shouldUpdate) {\n this.refresh(this.props.isAuthenticated)\n }\n }\n\n async refresh(isAuthenticated?: boolean) {\n if (isAuthenticated) {\n await this.getUserFileListing().catch(error => {\n this.onError(error)\n })\n }\n }\n\n getTypeFileListing = async (\n filter: StatusEnum[],\n nextPageToken?: string,\n ): Promise<{ fileList: FormData[]; nextPageToken?: string }> => {\n this.setState({\n isLoading: true,\n })\n const token = this.props.token\n const groupId = this.props.formGroupId\n try {\n const cleanUpName = (item: FormData): FormData => {\n item = { ...item, ...{ name: item.name.replace('.json', '') } }\n return item\n }\n const request: ListRequest = {\n filterByState: filter,\n groupId,\n nextPageToken: nextPageToken,\n }\n\n const response: ListResponse = await SynapseClient.listFormData(\n request,\n token,\n )\n const fileList = response.page\n ? response.page.map(item => cleanUpName(item))\n : []\n\n return {\n fileList,\n nextPageToken: response.nextPageToken,\n }\n } catch (error) {\n this.onError(error)\n return Promise.reject(error as Error)\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n getMore = async (fileListType: FileListType, nextPageToken: string) => {\n const statusList =\n fileListType === 'SUBMITTED'\n ? _SynapseFormSubmissionGrid.requestFilter.SUBMITTED\n : _SynapseFormSubmissionGrid.requestFilter.IN_PROGRESS\n const result = await this.getTypeFileListing(statusList, nextPageToken)\n if (fileListType === 'SUBMITTED') {\n this.setState(prevState => ({\n submitted: {\n fileList: [...prevState.submitted.fileList, ...result.fileList],\n nextPageToken: result.nextPageToken,\n },\n }))\n } else {\n this.setState(prevState => ({\n inProgress: {\n fileList: [...prevState.inProgress.fileList, ...result.fileList],\n nextPageToken: result.nextPageToken,\n },\n }))\n }\n }\n\n getUserFileListing = async (): Promise<void> => {\n const inProgress = await this.getTypeFileListing(\n _SynapseFormSubmissionGrid.requestFilter.IN_PROGRESS,\n this.state.inProgress.nextPageToken,\n )\n const submitted = await this.getTypeFileListing(\n _SynapseFormSubmissionGrid.requestFilter.SUBMITTED,\n this.state.submitted.nextPageToken,\n )\n\n this.setState({\n inProgress: inProgress,\n submitted: submitted,\n })\n\n return\n }\n onError = (args: any) => {\n console.log(args)\n }\n\n deleteFile = async (token: string, formDataId: string): Promise<any> => {\n this.setState({\n isLoading: true,\n modalContext: undefined,\n })\n try {\n await SynapseClient.deleteFormData(formDataId, token)\n //await this.getUserFileListing(token, this.props.formGroupId)\n this.setState((prevState, props) => ({\n inProgress: {\n fileList: prevState.inProgress.fileList.filter(\n item => item.formDataId !== formDataId,\n ),\n nextPageToken: prevState.inProgress.nextPageToken,\n },\n }))\n } catch (error) {\n this.onError(error)\n return []\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n setModalConfirmationState = (token: string, formDataId: string) => {\n this.setState({\n modalContext: {\n action: (...args) => {\n this.deleteFile(args[0], args[1])\n },\n arguments: [token, formDataId],\n },\n })\n }\n /* ------------------------------------------ rendering fns ------------------------------------------------*/\n\n renderLoading = (\n isAuthenticated: boolean | undefined,\n isLoading: boolean,\n ) => {\n if (isAuthenticated && isLoading) {\n return (\n <div className=\"text-center\">\n <span>Loading…</span>\n <span style={{ marginLeft: '2px' }} className={'spinner'} />\n </div>\n )\n } else {\n return <></>\n }\n }\n\n renderUnauthenticatedView = (isAuthenticated: boolean | undefined) => {\n if (isAuthenticated) {\n return <></>\n } else {\n return (\n <div className=\"file-grid\">\n <Typography variant=\"h3\">Your Submissions</Typography>\n <div className=\"panel padding-full unauthenticated text-center\">\n <p className=\"padding-full\">\n Please sign in or register to initiate or continue your submission\n </p>\n <WideButton\n className={`${SRC_SIGN_IN_CLASS}`}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Sign In\n </WideButton>\n </div>\n </div>\n )\n }\n }\n\n renderSubmissionsTable = (\n fileList: FormData[],\n pathpart: string,\n formGroupId: string,\n fileListType: FileListType,\n nextPageToken?: string,\n ) => {\n if (!formGroupId) {\n this.onError('Form Group ID is undefined')\n return <></>\n }\n const isInProgress = fileListType === 'IN_PROGRESS'\n const textSource = isInProgress\n ? this.listingText.inProgress\n : this.listingText.submitted\n\n const subhead = <h4>{textSource.subhead}</h4>\n const tableTitleRow = isInProgress ? (\n <tr>\n <th>Submission Name</th>\n <th>Edited On</th>\n <th></th>\n <th></th>\n </tr>\n ) : (\n <tr>\n <th>Submission Name</th>\n <th>Submitted On</th>\n <th>Status</th>\n <th></th>\n </tr>\n )\n\n let content = (\n <h5 className=\"text-center no-submissions padding-full\">\n {textSource.noRecords}\n </h5>\n )\n const viewMore = nextPageToken ? (\n <Box sx={{ textAlign: 'right', paddingTop: '5px' }}>\n <Button\n variant=\"text\"\n onClick={() => {\n this.getMore(fileListType, nextPageToken)\n }}\n >\n More...\n </Button>\n </Box>\n ) : (\n <></>\n )\n if (fileList.length > 0) {\n content = (\n <div className=\"file-table\" key={`table${fileListType}`}>\n <table className=\"table\">\n <thead>{tableTitleRow}</thead>\n <tbody>\n {fileList.map((dataFileRecord, key) => {\n if (isInProgress) {\n return (\n <tr\n key={`${dataFileRecord.formDataId}-${key}-${fileListType}`}\n >\n <td>\n <Link\n href={`${pathpart}?formGroupId=${formGroupId}&formDataId=${dataFileRecord.formDataId}&dataFileHandleId=${dataFileRecord.dataFileHandleId}`}\n >\n {dataFileRecord.name}\n </Link>\n </td>\n <td>{dayjs(dataFileRecord.modifiedOn).calendar()}</td>\n <td> </td>\n <td className=\"text-right\">\n <IconButton\n aria-label=\"delete\"\n color=\"primary\"\n onClick={() =>\n this.setModalConfirmationState(\n this.props.token!,\n dataFileRecord.formDataId,\n )\n }\n >\n <DeleteTwoToneIcon />\n </IconButton>\n </td>\n </tr>\n )\n } else {\n return (\n <tr key={`${dataFileRecord.formDataId}-${key}`}>\n <td>\n <Link\n href={`${pathpart}?formGroupId=${formGroupId}&formDataId=${dataFileRecord.formDataId}&dataFileHandleId=${dataFileRecord.dataFileHandleId}&submitted=1`}\n >\n {dataFileRecord.name}\n </Link>\n </td>\n <td>{dayjs(dataFileRecord.modifiedOn).calendar()}</td>\n <td>{dataFileRecord.submissionStatus.state}</td>\n <td className=\"text-right\">\n <IconButton\n color=\"primary\"\n aria-label=\"information\"\n onClick={() =>\n this.setState({ isShowInfoModal: true })\n }\n >\n <PhoneTwoToneIcon />\n </IconButton>\n </td>\n </tr>\n )\n }\n })}\n </tbody>\n </table>\n {viewMore}\n </div>\n )\n }\n return (\n <div key={`grid-${fileListType}`}>\n {subhead} {content}\n </div>\n )\n }\n\n renderSubmissionsTables = (\n inProgress: { fileList: FormData[]; nextPageToken?: string },\n submitted: { fileList: FormData[]; nextPageToken?: string },\n pathpart: string,\n formGroupId: string,\n ) => {\n if (inProgress.fileList.length === 0 && submitted.fileList.length === 0) {\n return (\n <div className=\"text-center\">\n <NoSubmissionsIcon title=\"no submissions\" />\n <p className=\"padding-full\">You have no submissions</p>\n </div>\n )\n } else {\n return [\n this.renderSubmissionsTable(\n inProgress.fileList,\n pathpart,\n formGroupId,\n 'IN_PROGRESS',\n inProgress.nextPageToken,\n ),\n\n this.renderSubmissionsTable(\n submitted.fileList,\n pathpart,\n formGroupId,\n 'SUBMITTED',\n submitted.nextPageToken,\n ),\n ]\n }\n }\n\n render() {\n return (\n <div className={`theme-${this.props.formClass}`}>\n <div className=\"SRC-ReactJsonForm\">\n {this.renderLoading(this.props.isAuthenticated, this.state.isLoading)}\n {this.renderUnauthenticatedView(this.props.isAuthenticated)}\n\n {this.props.isAuthenticated && !this.state.isLoading && (\n <div className=\"file-grid \">\n <Typography variant=\"h3\">Your Submissions</Typography>\n <div className=\"panel panel-default padding-full\">\n {this.renderSubmissionsTables(\n this.state.inProgress,\n this.state.submitted,\n this.props.pathpart,\n this.props.formGroupId,\n )}\n\n <Box\n sx={{\n textAlign: 'center',\n }}\n >\n <WideButton\n variant=\"contained\"\n color=\"primary\"\n sx={{\n padding: '0.75rem 1.5rem',\n }}\n href={`${this.props.pathpart}?formGroupId=${this.props.formGroupId}`}\n >\n Add new {this.props.itemNoun}\n </WideButton>\n </Box>\n </div>\n </div>\n )}\n {this.state.modalContext && (\n <WarningDialog\n className={`theme-${this.props.formClass}`}\n open={typeof this.state.modalContext !== 'undefined'}\n title={this.modalTitle}\n content={this.modalCopy}\n onConfirmCallbackArgs={this.state.modalContext.arguments}\n onCancel={() => this.setState({ modalContext: undefined })}\n onConfirm={(token: string, formDataId: string) =>\n this.deleteFile(token, formDataId)\n }\n />\n )}\n <ConfirmationDialog\n open={this.state.isShowInfoModal}\n title=\"More Information\"\n content={\n <>\n Please <Link href=\"mailto:ModelAD@iu.edu\">contact us</Link> for\n more information about your submission\n </>\n }\n className={`theme-${this.props.formClass}`}\n hasCloseButton={false}\n hasCancelButton={false}\n confirmButtonProps={{\n color: 'success',\n }}\n onCancel={() => this.setState({ isShowInfoModal: false })}\n onConfirm={() => this.setState({ isShowInfoModal: false })}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function SynapseFormSubmissionGrid(\n props: SynapseFormSubmissionGridProps,\n) {\n const { accessToken, isAuthenticated } = useSynapseContext()\n return (\n <_SynapseFormSubmissionGrid\n {...props}\n token={accessToken}\n isAuthenticated={isAuthenticated}\n />\n )\n}\n\nexport default SynapseFormSubmissionGrid\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SynapseFormSubmissionGrid.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormSubmissionGrid.tsx"],"sourcesContent":["import { ReactComponent as NoSubmissionsIcon } from '@/assets/icons/json-form-tool-no-submissions.svg'\nimport WideButton from '@/components/styled/WideButton'\n\nimport SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport DeleteTwoToneIcon from '@mui/icons-material/DeleteTwoTone'\nimport PhoneTwoToneIcon from '@mui/icons-material/PhoneTwoTone'\nimport { Box, Button, IconButton, Link, Typography } from '@mui/material'\nimport {\n FormData,\n ListRequest,\n ListResponse,\n StatusEnum,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport calendar from 'dayjs/plugin/calendar'\nimport { Component } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport WarningDialog from './WarningDialog'\n\ndayjs.extend(calendar)\n/**\n * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken\n *\n * This wasn't done because Enzyme's shallow renderer is not currently\n * compatible with the `contextType` field in the React 16+ context API.\n *\n * This can be fixed by rewriting tests to not rely on the shallow renderer.\n *\n * See here: https://github.com/enzymejs/enzyme/issues/1553\n */\n\nexport type SynapseFormSubmissionGridProps = {\n token?: string\n isAuthenticated?: boolean\n formGroupId: string\n pathpart: string\n formClass?: string\n itemNoun: string\n}\n\ntype FileListType = 'IN_PROGRESS' | 'SUBMITTED'\n\ntype SynapseFormSubmissionGridState = {\n inProgress: {\n fileList: FormData[]\n nextPageToken?: string\n }\n submitted: {\n fileList: FormData[]\n nextPageToken?: string\n }\n isLoading: boolean\n isShowInfoModal: boolean\n modalContext?: { action: (...args: any[]) => void; arguments: any[] }\n}\n\nclass _SynapseFormSubmissionGrid extends Component<\n SynapseFormSubmissionGridProps,\n SynapseFormSubmissionGridState\n> {\n modalTitle = 'Trash Submission?'\n listingText = {\n inProgress: {\n subhead: 'In Progress',\n noRecords: `You don't have submissions in progress`,\n },\n submitted: {\n subhead: 'Submitted',\n noRecords: `You don't have anything submitted`,\n },\n }\n modalCopy = (\n <>\n <p>\n This submission is currently incomplete and has not been submitted. If\n you trash this submission, you won't be able to recover the data.\n </p>\n <p>Are you sure you want to trash this submission?</p>\n </>\n )\n static requestFilter = {\n IN_PROGRESS: [StatusEnum.WAITING_FOR_SUBMISSION],\n SUBMITTED: [\n StatusEnum.SUBMITTED_WAITING_FOR_REVIEW,\n StatusEnum.ACCEPTED,\n StatusEnum.REJECTED,\n ],\n }\n\n constructor(props: SynapseFormSubmissionGridProps) {\n super(props)\n this.state = {\n isLoading: true,\n isShowInfoModal: false,\n inProgress: {\n fileList: [],\n },\n submitted: {\n fileList: [],\n },\n }\n }\n\n componentDidMount() {\n this.refresh(this.props.isAuthenticated)\n }\n\n componentDidUpdate(prevProps: SynapseFormSubmissionGridProps) {\n const shouldUpdate = this.props.token !== prevProps.token\n if (shouldUpdate) {\n this.refresh(this.props.isAuthenticated)\n }\n }\n\n async refresh(isAuthenticated?: boolean) {\n if (isAuthenticated) {\n await this.getUserFileListing().catch(error => {\n this.onError(error)\n })\n }\n }\n\n getTypeFileListing = async (\n filter: StatusEnum[],\n nextPageToken?: string,\n ): Promise<{ fileList: FormData[]; nextPageToken?: string }> => {\n this.setState({\n isLoading: true,\n })\n const token = this.props.token\n const groupId = this.props.formGroupId\n try {\n const cleanUpName = (item: FormData): FormData => {\n item = { ...item, ...{ name: item.name.replace('.json', '') } }\n return item\n }\n const request: ListRequest = {\n filterByState: filter,\n groupId,\n nextPageToken: nextPageToken,\n }\n\n const response: ListResponse = await SynapseClient.listFormData(\n request,\n token,\n )\n const fileList = response.page\n ? response.page.map(item => cleanUpName(item))\n : []\n\n return {\n fileList,\n nextPageToken: response.nextPageToken,\n }\n } catch (error) {\n this.onError(error)\n return Promise.reject(error as Error)\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n getMore = async (fileListType: FileListType, nextPageToken: string) => {\n const statusList =\n fileListType === 'SUBMITTED'\n ? _SynapseFormSubmissionGrid.requestFilter.SUBMITTED\n : _SynapseFormSubmissionGrid.requestFilter.IN_PROGRESS\n const result = await this.getTypeFileListing(statusList, nextPageToken)\n if (fileListType === 'SUBMITTED') {\n this.setState(prevState => ({\n submitted: {\n fileList: [...prevState.submitted.fileList, ...result.fileList],\n nextPageToken: result.nextPageToken,\n },\n }))\n } else {\n this.setState(prevState => ({\n inProgress: {\n fileList: [...prevState.inProgress.fileList, ...result.fileList],\n nextPageToken: result.nextPageToken,\n },\n }))\n }\n }\n\n getUserFileListing = async (): Promise<void> => {\n const inProgress = await this.getTypeFileListing(\n _SynapseFormSubmissionGrid.requestFilter.IN_PROGRESS,\n this.state.inProgress.nextPageToken,\n )\n const submitted = await this.getTypeFileListing(\n _SynapseFormSubmissionGrid.requestFilter.SUBMITTED,\n this.state.submitted.nextPageToken,\n )\n\n this.setState({\n inProgress: inProgress,\n submitted: submitted,\n })\n\n return\n }\n onError = (args: any) => {\n console.log(args)\n }\n\n deleteFile = async (token: string, formDataId: string): Promise<any> => {\n this.setState({\n isLoading: true,\n modalContext: undefined,\n })\n try {\n await SynapseClient.deleteFormData(formDataId, token)\n //await this.getUserFileListing(token, this.props.formGroupId)\n this.setState((prevState, props) => ({\n inProgress: {\n fileList: prevState.inProgress.fileList.filter(\n item => item.formDataId !== formDataId,\n ),\n nextPageToken: prevState.inProgress.nextPageToken,\n },\n }))\n } catch (error) {\n this.onError(error)\n return []\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n setModalConfirmationState = (token: string, formDataId: string) => {\n this.setState({\n modalContext: {\n action: (...args) => {\n this.deleteFile(args[0], args[1])\n },\n arguments: [token, formDataId],\n },\n })\n }\n /* ------------------------------------------ rendering fns ------------------------------------------------*/\n\n renderLoading = (\n isAuthenticated: boolean | undefined,\n isLoading: boolean,\n ) => {\n if (isAuthenticated && isLoading) {\n return (\n <div className=\"text-center\">\n <span>Loading…</span>\n <span style={{ marginLeft: '2px' }} className={'spinner'} />\n </div>\n )\n } else {\n return <></>\n }\n }\n\n renderUnauthenticatedView = (isAuthenticated: boolean | undefined) => {\n if (isAuthenticated) {\n return <></>\n } else {\n return (\n <div className=\"file-grid\">\n <Typography variant=\"h3\">Your Submissions</Typography>\n <div className=\"panel padding-full unauthenticated text-center\">\n <p className=\"padding-full\">\n Please sign in or register to initiate or continue your submission\n </p>\n <WideButton\n className={`${SRC_SIGN_IN_CLASS}`}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Sign In\n </WideButton>\n </div>\n </div>\n )\n }\n }\n\n renderSubmissionsTable = (\n fileList: FormData[],\n pathpart: string,\n formGroupId: string,\n fileListType: FileListType,\n nextPageToken?: string,\n ) => {\n if (!formGroupId) {\n this.onError('Form Group ID is undefined')\n return <></>\n }\n const isInProgress = fileListType === 'IN_PROGRESS'\n const textSource = isInProgress\n ? this.listingText.inProgress\n : this.listingText.submitted\n\n const subhead = <h4>{textSource.subhead}</h4>\n const tableTitleRow = isInProgress ? (\n <tr>\n <th>Submission Name</th>\n <th>Edited On</th>\n <th></th>\n <th></th>\n </tr>\n ) : (\n <tr>\n <th>Submission Name</th>\n <th>Submitted On</th>\n <th>Status</th>\n <th></th>\n </tr>\n )\n\n let content = (\n <h5 className=\"text-center no-submissions padding-full\">\n {textSource.noRecords}\n </h5>\n )\n const viewMore = nextPageToken ? (\n <Box sx={{ textAlign: 'right', paddingTop: '5px' }}>\n <Button\n variant=\"text\"\n onClick={() => {\n this.getMore(fileListType, nextPageToken)\n }}\n >\n More...\n </Button>\n </Box>\n ) : (\n <></>\n )\n if (fileList.length > 0) {\n content = (\n <div className=\"file-table\" key={`table${fileListType}`}>\n <table className=\"table\">\n <thead>{tableTitleRow}</thead>\n <tbody>\n {fileList.map((dataFileRecord, key) => {\n if (isInProgress) {\n return (\n <tr\n key={`${dataFileRecord.formDataId}-${key}-${fileListType}`}\n >\n <td>\n <Link\n href={`${pathpart}?formGroupId=${formGroupId}&formDataId=${dataFileRecord.formDataId}&dataFileHandleId=${dataFileRecord.dataFileHandleId}`}\n >\n {dataFileRecord.name}\n </Link>\n </td>\n <td>{dayjs(dataFileRecord.modifiedOn).calendar()}</td>\n <td> </td>\n <td className=\"text-right\">\n <IconButton\n aria-label=\"delete\"\n color=\"primary\"\n onClick={() =>\n this.setModalConfirmationState(\n this.props.token!,\n dataFileRecord.formDataId,\n )\n }\n >\n <DeleteTwoToneIcon />\n </IconButton>\n </td>\n </tr>\n )\n } else {\n return (\n <tr key={`${dataFileRecord.formDataId}-${key}`}>\n <td>\n <Link\n href={`${pathpart}?formGroupId=${formGroupId}&formDataId=${dataFileRecord.formDataId}&dataFileHandleId=${dataFileRecord.dataFileHandleId}&submitted=1`}\n >\n {dataFileRecord.name}\n </Link>\n </td>\n <td>{dayjs(dataFileRecord.modifiedOn).calendar()}</td>\n <td>{dataFileRecord.submissionStatus.state}</td>\n <td className=\"text-right\">\n <IconButton\n color=\"primary\"\n aria-label=\"information\"\n onClick={() =>\n this.setState({ isShowInfoModal: true })\n }\n >\n <PhoneTwoToneIcon />\n </IconButton>\n </td>\n </tr>\n )\n }\n })}\n </tbody>\n </table>\n {viewMore}\n </div>\n )\n }\n return (\n <div key={`grid-${fileListType}`}>\n {subhead} {content}\n </div>\n )\n }\n\n renderSubmissionsTables = (\n inProgress: { fileList: FormData[]; nextPageToken?: string },\n submitted: { fileList: FormData[]; nextPageToken?: string },\n pathpart: string,\n formGroupId: string,\n ) => {\n if (inProgress.fileList.length === 0 && submitted.fileList.length === 0) {\n return (\n <div className=\"text-center\">\n <NoSubmissionsIcon title=\"no submissions\" />\n <p className=\"padding-full\">You have no submissions</p>\n </div>\n )\n } else {\n return [\n this.renderSubmissionsTable(\n inProgress.fileList,\n pathpart,\n formGroupId,\n 'IN_PROGRESS',\n inProgress.nextPageToken,\n ),\n\n this.renderSubmissionsTable(\n submitted.fileList,\n pathpart,\n formGroupId,\n 'SUBMITTED',\n submitted.nextPageToken,\n ),\n ]\n }\n }\n\n render() {\n return (\n <div className={`theme-${this.props.formClass}`}>\n <div className=\"SRC-ReactJsonForm\">\n {this.renderLoading(this.props.isAuthenticated, this.state.isLoading)}\n {this.renderUnauthenticatedView(this.props.isAuthenticated)}\n\n {this.props.isAuthenticated && !this.state.isLoading && (\n <div className=\"file-grid \">\n <Typography variant=\"h3\">Your Submissions</Typography>\n <div className=\"panel panel-default padding-full\">\n {this.renderSubmissionsTables(\n this.state.inProgress,\n this.state.submitted,\n this.props.pathpart,\n this.props.formGroupId,\n )}\n\n <Box\n sx={{\n textAlign: 'center',\n }}\n >\n <WideButton\n variant=\"contained\"\n color=\"primary\"\n sx={{\n padding: '0.75rem 1.5rem',\n }}\n href={`${this.props.pathpart}?formGroupId=${this.props.formGroupId}`}\n >\n Add new {this.props.itemNoun}\n </WideButton>\n </Box>\n </div>\n </div>\n )}\n {this.state.modalContext && (\n <WarningDialog\n className={`theme-${this.props.formClass}`}\n open={typeof this.state.modalContext !== 'undefined'}\n title={this.modalTitle}\n content={this.modalCopy}\n onConfirmCallbackArgs={this.state.modalContext.arguments}\n onCancel={() => this.setState({ modalContext: undefined })}\n onConfirm={(token: string, formDataId: string) =>\n this.deleteFile(token, formDataId)\n }\n />\n )}\n <ConfirmationDialog\n open={this.state.isShowInfoModal}\n title=\"More Information\"\n content={\n <>\n Please <Link href=\"mailto:ModelAD@iu.edu\">contact us</Link> for\n more information about your submission\n </>\n }\n className={`theme-${this.props.formClass}`}\n hasCloseButton={false}\n hasCancelButton={false}\n confirmButtonProps={{\n color: 'success',\n }}\n onCancel={() => this.setState({ isShowInfoModal: false })}\n onConfirm={() => this.setState({ isShowInfoModal: false })}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function SynapseFormSubmissionGrid(\n props: SynapseFormSubmissionGridProps,\n) {\n const { accessToken, isAuthenticated } = useSynapseContext()\n return (\n <_SynapseFormSubmissionGrid\n {...props}\n token={accessToken}\n isAuthenticated={isAuthenticated}\n />\n )\n}\n\nexport default SynapseFormSubmissionGrid\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormUtils.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormUtils.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { FileEntity } from '@sage-bionetworks/synapse-types'\n\n//gets a file entity with content\nexport async function getFileEntityData(\n token: string,\n entityId: string,\n versionNumber?: string,\n onError?: (error: { message: string }) => void,\n): Promise<{ version?: number; content: JSON }> {\n try {\n const entity: FileEntity = await SynapseClient.getEntity(\n token,\n entityId,\n versionNumber,\n )\n const fileHandleContent = await SynapseClient.getFileResult(\n entity,\n token,\n true,\n true,\n )\n const fileContent = await SynapseClient.getFileHandleContent(\n fileHandleContent.fileHandle!,\n fileHandleContent.preSignedURL!,\n )\n const content = JSON.parse(fileContent)\n return {\n version: entity.versionNumber,\n content: content,\n }\n } catch (error) {\n const newError = new Error(\n `${error.message}: configuration data for ${entityId} failed to load`,\n )\n if (onError) {\n onError(newError)\n }\n return Promise.reject(newError)\n }\n}\n"],"mappings":";;AAIA,eAAsB,EACpB,GACA,GACA,GACA,GAC8C;
|
|
1
|
+
{"version":3,"file":"SynapseFormUtils.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormUtils.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { FileEntity } from '@sage-bionetworks/synapse-types'\n\n//gets a file entity with content\nexport async function getFileEntityData(\n token: string,\n entityId: string,\n versionNumber?: string,\n onError?: (error: { message: string }) => void,\n): Promise<{ version?: number; content: JSON }> {\n try {\n const entity: FileEntity = await SynapseClient.getEntity(\n token,\n entityId,\n versionNumber,\n )\n const fileHandleContent = await SynapseClient.getFileResult(\n entity,\n token,\n true,\n true,\n )\n const fileContent = await SynapseClient.getFileHandleContent(\n fileHandleContent.fileHandle!,\n fileHandleContent.preSignedURL!,\n )\n const content = JSON.parse(fileContent)\n return {\n version: entity.versionNumber,\n content: content,\n }\n } catch (error) {\n const newError = new Error(\n `${error.message}: configuration data for ${entityId} failed to load`,\n )\n if (onError) {\n onError(newError)\n }\n return Promise.reject(newError)\n }\n}\n"],"mappings":";;AAIA,eAAsB,EACpB,GACA,GACA,GACA,GAC8C;CAC9C,IAAI;EACF,IAAM,IAAqB,MAAM,EAAc,UAC7C,GACA,GACA,CACF,GACM,IAAoB,MAAM,EAAc,cAC5C,GACA,GACA,IACA,EACF,GACM,IAAc,MAAM,EAAc,qBACtC,EAAkB,YAClB,EAAkB,YACpB,GACM,IAAU,KAAK,MAAM,CAAW;EACtC,OAAO;GACL,SAAS,EAAO;GACP;EACX;CACF,SAAS,GAAO;EACd,IAAM,IAAW,gBAAI,MACnB,GAAG,EAAM,QAAQ,4BAA4B,EAAS,gBACxD;EAIA,OAHI,KACF,EAAQ,CAAQ,GAEX,QAAQ,OAAO,CAAQ;CAChC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseFormWrapper.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormWrapper.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport $RefParser from '@apidevtools/json-schema-ref-parser'\nimport { Button } from '@mui/material'\nimport { UiSchema } from '@rjsf/utils'\nimport { FormData } from '@sage-bionetworks/synapse-types'\nimport { get, includes } from 'lodash-es'\nimport { Component } from 'react'\nimport FullWidthAlert from '../FullWidthAlert'\nimport SynapseForm from './SynapseForm'\nimport { getFileEntityData } from './SynapseFormUtils'\nimport { StatusEnum } from './types'\n\n/**\n * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken\n *\n * This wasn't done because Enzyme's shallow renderer is not currently\n * compatible with the `contextType` field in the React 16+ context API.\n *\n * This can be fixed by rewriting tests to not rely on the shallow renderer.\n *\n * See here: https://github.com/enzymejs/enzyme/issues/1553\n */\n\nexport type SynapseFormWrapperProps = {\n // Provide the parent container (folder/project), that should contain a folder (named <user_id>) that this user can write to.\n formSchemaEntityId: string // Synapse file that contains the form schema.\n formUiSchemaEntityId: string // Synapse file that contains the form ui schema.\n formNavSchemaEntityId: string //Synapse file that consists screen nav schema\n token?: string // user's access token\n isWizardMode?: boolean // if we are displaying the form in wizard mode\n fileNamePath: string // path in data to specify the name of saved file\n formTitle: string //for UI customization\n formClass?: string // to support potential theming\n\n formDataId?: string //formDataId for user data form data\n dataFileHandleId?: string //fileHandle to get userData\n submitted?: boolean // if the file has been submitted\n formGroupId: string\n}\n\ntype SynapseFormWrapperState = {\n notification?: Notification\n isLoading?: boolean\n formDataId?: string // file holding user form data\n formData?: any // form data that prepopulates the form\n formSchema?: any // schema that drives the form\n formUiSchema?: UiSchema // ui schema that directs how to render the form elements\n formNavSchema?: any // drives the steps left panel\n\n status?: StatusEnum\n}\n\ntype Error = {\n name?: string\n message?: string\n}\n\ninterface Notification extends Error {\n type: StatusEnum\n}\n\nclass _SynapseFormWrapper extends Component<\n SynapseFormWrapperProps,\n SynapseFormWrapperState\n> {\n constructor(props: SynapseFormWrapperProps) {\n super(props)\n this.state = {\n isLoading: true,\n formDataId: this.props?.formDataId,\n }\n }\n\n componentDidMount() {\n this.getData(this.props.token)\n }\n\n componentDidUpdate(prevProps: SynapseFormWrapperProps) {\n const shouldUpdate = this.props.token !== prevProps.token\n if (shouldUpdate) {\n this.getData(this.props.token)\n }\n }\n\n //same as above but also uses $RefParser to convert json $refs to regular json\n getFileEntityDataDereferenced = async (\n token: string,\n entityId: string,\n versionNumber?: string,\n ): Promise<{ version?: number; content: JSON }> => {\n const { version, content } = await getFileEntityData(\n token,\n entityId,\n versionNumber,\n this.onError,\n )\n const derefContent = await $RefParser.dereference<JSON>(content)\n return {\n version: version,\n content: derefContent,\n }\n }\n\n getData = async (token?: string): Promise<void> => {\n if (!token) {\n return\n }\n try {\n let formData: Record<string, any> = {}\n const dataFileHandleId = this.props.dataFileHandleId\n const submitted = this.props.submitted\n let formSchemaVersion = undefined\n let uiSchemaVersion = undefined\n let navSchemaVersion = undefined\n\n //for not new form we need to get the data\n //and if it is submitted form we need to pull appropriate schema versions\n //for new form (no dataFileHandleId) we need to populate schema versions\n\n if (dataFileHandleId) {\n const fileData = await SynapseClient.getFileHandleContentFromID(\n dataFileHandleId,\n token,\n )\n formData = JSON.parse(fileData)\n if (submitted && formData && formData['metadata']) {\n ;({ formSchemaVersion, uiSchemaVersion, navSchemaVersion } =\n formData['metadata'])\n }\n }\n\n const promises = [\n this.getFileEntityDataDereferenced(\n token,\n this.props.formSchemaEntityId,\n formSchemaVersion,\n ),\n getFileEntityData(\n token,\n this.props.formUiSchemaEntityId,\n uiSchemaVersion,\n this.onError,\n ),\n getFileEntityData(\n token,\n this.props.formNavSchemaEntityId,\n navSchemaVersion,\n this.onError,\n ),\n ]\n const configData = await Promise.all(promises)\n\n if (!dataFileHandleId) {\n //if we are creating a new file - store the versions\n formData = {\n metadata: {\n formSchemaVersion: configData[0].version,\n uiSchemaVersion: configData[1].version,\n navSchemaVersion: configData[2].version,\n },\n }\n }\n this.setState({\n formData: formData,\n formSchema: configData[0].content,\n formUiSchema: configData[1].content as unknown as UiSchema,\n formNavSchema: configData[2].content,\n isLoading: false,\n })\n } catch (error) {\n this.onError({ message: error })\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n finishedProcessing = (status: StatusEnum, message?: string) => {\n this.setState({\n isLoading: false,\n notification: { type: status, message: message },\n status: status,\n })\n //this will show the update message for 7 seconds\n setTimeout(() => {\n this.setState({ status: undefined })\n }, 7000)\n }\n\n onError = (error: Error) => {\n this.setState({\n notification: {\n type: StatusEnum.ERROR,\n message: error.message,\n name: error.name,\n },\n status: StatusEnum.ERROR,\n isLoading: false,\n })\n }\n\n submitForm = async (formData: any) => {\n await this.saveToFile(formData)\n\n this.setState({\n isLoading: true,\n })\n\n await SynapseClient.submitFormData(this.state.formDataId!, this.props.token)\n this.finishedProcessing(StatusEnum.SUBMIT_SUCCESS, 'File Submitted')\n }\n\n createOrUpdateFormDataFile = async (\n fileName: string,\n fileContentsBlob: Blob,\n ): Promise<FormData> => {\n fileName = `${fileName}.json`\n const fileUploadComplete = await SynapseClient.uploadFile(\n this.props.token,\n fileName,\n fileContentsBlob,\n )\n const formGroupId = this.props.formGroupId\n if (!formGroupId) {\n console.error('formGroupId must be defined')\n throw new Error('formGroupId must be defined')\n }\n try {\n // do we need to create a new file entity, or update an existing file entity?\n const newFileHandleId = fileUploadComplete.fileHandleId\n\n let formData\n if (this.state.formDataId) {\n formData = await SynapseClient.updateFormData(\n this.state.formDataId,\n fileName,\n newFileHandleId,\n this.props.token!,\n )\n } else {\n formData = await SynapseClient.createFormData(\n formGroupId,\n fileName,\n newFileHandleId,\n this.props.token!,\n )\n }\n\n return formData\n } catch (error) {\n this.onError(error)\n throw error\n }\n }\n\n saveToFile = async (data: any) => {\n const fileName = get(data, this.props.fileNamePath)\n this.setState({\n status: StatusEnum.PROGRESS,\n notification: { type: StatusEnum.PROGRESS, message: 'Progress' },\n isLoading: true,\n })\n\n if (!fileName) {\n // try to find corresponding property. By convention it should be first level property\n // and follow pattern screen.prop\n let errorTitle = 'File Name'\n try {\n // get it to the schema format\n const searchString = `${this.props.fileNamePath.replace(\n '.',\n '.properties.',\n )}.title`\n errorTitle = get(\n this.state.formSchema.properties,\n searchString,\n errorTitle,\n )\n } finally {\n const error = new Error(\n `Please Provide the ${errorTitle} before saving`,\n )\n this.onError(error)\n }\n return\n }\n\n try {\n const fileContent: Blob = new Blob([JSON.stringify(data)], {\n type: 'text/json',\n })\n\n const formData = await this.createOrUpdateFormDataFile(\n fileName,\n fileContent,\n )\n this.setState({\n formDataId: formData.formDataId,\n })\n\n this.finishedProcessing(StatusEnum.SAVE_SUCCESS, 'File Saved')\n } catch (error) {\n this.onError(error)\n }\n }\n\n isReadyToDisplayForm = (state: SynapseFormWrapperState): boolean => {\n return (\n this.state.status !== StatusEnum.ERROR_CRITICAL &&\n state.formSchema &&\n state.formUiSchema &&\n state.formNavSchema &&\n state.formData\n )\n }\n\n renderLoader = (\n state: SynapseFormWrapperState,\n props: SynapseFormWrapperProps,\n ) => {\n if (\n includes([StatusEnum.ERROR, StatusEnum.ERROR_CRITICAL], state.status) &&\n props.token &&\n state.isLoading\n ) {\n return (\n <div className=\"text-center\">\n <span className={'spinner'} />\n </div>\n )\n } else {\n return <></>\n }\n }\n\n renderNotification = (notification?: Notification) => {\n if (!notification) {\n return <></>\n }\n if (notification.type === StatusEnum.ERROR) {\n return (\n <FullWidthAlert\n variant=\"danger\"\n title=\"Error\"\n isGlobal={false}\n description={\n <>\n {notification.name} {notification.message}\n </>\n }\n onClose={() => this.setState({ status: undefined })}\n />\n )\n }\n\n return <></>\n }\n\n renderUnauthenticatedView = (token: string | undefined) => {\n if (token) {\n return <></>\n } else {\n return (\n <div className=\"panel padding-full unauthenticated text-center\">\n Please\n <Button\n variant=\"text\"\n color=\"primary\"\n sx={{\n mx: 1,\n fontSize: '1.4rem',\n verticalAlign: 'baseline',\n textTransform: 'none',\n }}\n className={`${SRC_SIGN_IN_CLASS}`}\n >\n sign in\n </Button>\n to initiate or continue your submission\n </div>\n )\n }\n }\n\n render() {\n return (\n <div className={`theme-${this.props.formClass}`}>\n <div className=\"SRC-ReactJsonForm\">\n {this.renderNotification(this.state.notification)}\n {this.renderLoader(this.state, this.props)}\n {this.renderUnauthenticatedView(this.props.token)}\n\n {this.isReadyToDisplayForm(this.state) && (\n <div>\n <SynapseForm\n schema={this.state.formSchema}\n uiSchema={this.state.formUiSchema!}\n formData={this.state.formData}\n navSchema={this.state.formNavSchema}\n isWizardMode={this.props.isWizardMode}\n formTitle={this.props.formTitle}\n formClass={this.props.formClass}\n callbackStatus={this.state.status}\n onSave={(data: any) => {\n this.saveToFile(data)\n }}\n onSubmit={(data: any) => {\n this.submitForm(data)\n }}\n isSubmitted={this.props.submitted}\n />\n </div>\n )}\n </div>\n </div>\n )\n }\n}\n\nexport function SynapseFormWrapper(props: SynapseFormWrapperProps) {\n const synapseContext = useSynapseContext()\n\n return <_SynapseFormWrapper {...props} token={synapseContext.accessToken} />\n}\n\nexport default SynapseFormWrapper\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SynapseFormWrapper.js","names":[],"sources":["../../../src/components/SynapseForm/SynapseFormWrapper.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport $RefParser from '@apidevtools/json-schema-ref-parser'\nimport { Button } from '@mui/material'\nimport { UiSchema } from '@rjsf/utils'\nimport { FormData } from '@sage-bionetworks/synapse-types'\nimport { get, includes } from 'lodash-es'\nimport { Component } from 'react'\nimport FullWidthAlert from '../FullWidthAlert'\nimport SynapseForm from './SynapseForm'\nimport { getFileEntityData } from './SynapseFormUtils'\nimport { StatusEnum } from './types'\n\n/**\n * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken\n *\n * This wasn't done because Enzyme's shallow renderer is not currently\n * compatible with the `contextType` field in the React 16+ context API.\n *\n * This can be fixed by rewriting tests to not rely on the shallow renderer.\n *\n * See here: https://github.com/enzymejs/enzyme/issues/1553\n */\n\nexport type SynapseFormWrapperProps = {\n // Provide the parent container (folder/project), that should contain a folder (named <user_id>) that this user can write to.\n formSchemaEntityId: string // Synapse file that contains the form schema.\n formUiSchemaEntityId: string // Synapse file that contains the form ui schema.\n formNavSchemaEntityId: string //Synapse file that consists screen nav schema\n token?: string // user's access token\n isWizardMode?: boolean // if we are displaying the form in wizard mode\n fileNamePath: string // path in data to specify the name of saved file\n formTitle: string //for UI customization\n formClass?: string // to support potential theming\n\n formDataId?: string //formDataId for user data form data\n dataFileHandleId?: string //fileHandle to get userData\n submitted?: boolean // if the file has been submitted\n formGroupId: string\n}\n\ntype SynapseFormWrapperState = {\n notification?: Notification\n isLoading?: boolean\n formDataId?: string // file holding user form data\n formData?: any // form data that prepopulates the form\n formSchema?: any // schema that drives the form\n formUiSchema?: UiSchema // ui schema that directs how to render the form elements\n formNavSchema?: any // drives the steps left panel\n\n status?: StatusEnum\n}\n\ntype Error = {\n name?: string\n message?: string\n}\n\ninterface Notification extends Error {\n type: StatusEnum\n}\n\nclass _SynapseFormWrapper extends Component<\n SynapseFormWrapperProps,\n SynapseFormWrapperState\n> {\n constructor(props: SynapseFormWrapperProps) {\n super(props)\n this.state = {\n isLoading: true,\n formDataId: this.props?.formDataId,\n }\n }\n\n componentDidMount() {\n this.getData(this.props.token)\n }\n\n componentDidUpdate(prevProps: SynapseFormWrapperProps) {\n const shouldUpdate = this.props.token !== prevProps.token\n if (shouldUpdate) {\n this.getData(this.props.token)\n }\n }\n\n //same as above but also uses $RefParser to convert json $refs to regular json\n getFileEntityDataDereferenced = async (\n token: string,\n entityId: string,\n versionNumber?: string,\n ): Promise<{ version?: number; content: JSON }> => {\n const { version, content } = await getFileEntityData(\n token,\n entityId,\n versionNumber,\n this.onError,\n )\n const derefContent = await $RefParser.dereference<JSON>(content)\n return {\n version: version,\n content: derefContent,\n }\n }\n\n getData = async (token?: string): Promise<void> => {\n if (!token) {\n return\n }\n try {\n let formData: Record<string, any> = {}\n const dataFileHandleId = this.props.dataFileHandleId\n const submitted = this.props.submitted\n let formSchemaVersion = undefined\n let uiSchemaVersion = undefined\n let navSchemaVersion = undefined\n\n //for not new form we need to get the data\n //and if it is submitted form we need to pull appropriate schema versions\n //for new form (no dataFileHandleId) we need to populate schema versions\n\n if (dataFileHandleId) {\n const fileData = await SynapseClient.getFileHandleContentFromID(\n dataFileHandleId,\n token,\n )\n formData = JSON.parse(fileData)\n if (submitted && formData && formData['metadata']) {\n ;({ formSchemaVersion, uiSchemaVersion, navSchemaVersion } =\n formData['metadata'])\n }\n }\n\n const promises = [\n this.getFileEntityDataDereferenced(\n token,\n this.props.formSchemaEntityId,\n formSchemaVersion,\n ),\n getFileEntityData(\n token,\n this.props.formUiSchemaEntityId,\n uiSchemaVersion,\n this.onError,\n ),\n getFileEntityData(\n token,\n this.props.formNavSchemaEntityId,\n navSchemaVersion,\n this.onError,\n ),\n ]\n const configData = await Promise.all(promises)\n\n if (!dataFileHandleId) {\n //if we are creating a new file - store the versions\n formData = {\n metadata: {\n formSchemaVersion: configData[0].version,\n uiSchemaVersion: configData[1].version,\n navSchemaVersion: configData[2].version,\n },\n }\n }\n this.setState({\n formData: formData,\n formSchema: configData[0].content,\n formUiSchema: configData[1].content as unknown as UiSchema,\n formNavSchema: configData[2].content,\n isLoading: false,\n })\n } catch (error) {\n this.onError({ message: error })\n } finally {\n this.setState({\n isLoading: false,\n })\n }\n }\n\n finishedProcessing = (status: StatusEnum, message?: string) => {\n this.setState({\n isLoading: false,\n notification: { type: status, message: message },\n status: status,\n })\n //this will show the update message for 7 seconds\n setTimeout(() => {\n this.setState({ status: undefined })\n }, 7000)\n }\n\n onError = (error: Error) => {\n this.setState({\n notification: {\n type: StatusEnum.ERROR,\n message: error.message,\n name: error.name,\n },\n status: StatusEnum.ERROR,\n isLoading: false,\n })\n }\n\n submitForm = async (formData: any) => {\n await this.saveToFile(formData)\n\n this.setState({\n isLoading: true,\n })\n\n await SynapseClient.submitFormData(this.state.formDataId!, this.props.token)\n this.finishedProcessing(StatusEnum.SUBMIT_SUCCESS, 'File Submitted')\n }\n\n createOrUpdateFormDataFile = async (\n fileName: string,\n fileContentsBlob: Blob,\n ): Promise<FormData> => {\n fileName = `${fileName}.json`\n const fileUploadComplete = await SynapseClient.uploadFile(\n this.props.token,\n fileName,\n fileContentsBlob,\n )\n const formGroupId = this.props.formGroupId\n if (!formGroupId) {\n console.error('formGroupId must be defined')\n throw new Error('formGroupId must be defined')\n }\n try {\n // do we need to create a new file entity, or update an existing file entity?\n const newFileHandleId = fileUploadComplete.fileHandleId\n\n let formData\n if (this.state.formDataId) {\n formData = await SynapseClient.updateFormData(\n this.state.formDataId,\n fileName,\n newFileHandleId,\n this.props.token!,\n )\n } else {\n formData = await SynapseClient.createFormData(\n formGroupId,\n fileName,\n newFileHandleId,\n this.props.token!,\n )\n }\n\n return formData\n } catch (error) {\n this.onError(error)\n throw error\n }\n }\n\n saveToFile = async (data: any) => {\n const fileName = get(data, this.props.fileNamePath)\n this.setState({\n status: StatusEnum.PROGRESS,\n notification: { type: StatusEnum.PROGRESS, message: 'Progress' },\n isLoading: true,\n })\n\n if (!fileName) {\n // try to find corresponding property. By convention it should be first level property\n // and follow pattern screen.prop\n let errorTitle = 'File Name'\n try {\n // get it to the schema format\n const searchString = `${this.props.fileNamePath.replace(\n '.',\n '.properties.',\n )}.title`\n errorTitle = get(\n this.state.formSchema.properties,\n searchString,\n errorTitle,\n )\n } finally {\n const error = new Error(\n `Please Provide the ${errorTitle} before saving`,\n )\n this.onError(error)\n }\n return\n }\n\n try {\n const fileContent: Blob = new Blob([JSON.stringify(data)], {\n type: 'text/json',\n })\n\n const formData = await this.createOrUpdateFormDataFile(\n fileName,\n fileContent,\n )\n this.setState({\n formDataId: formData.formDataId,\n })\n\n this.finishedProcessing(StatusEnum.SAVE_SUCCESS, 'File Saved')\n } catch (error) {\n this.onError(error)\n }\n }\n\n isReadyToDisplayForm = (state: SynapseFormWrapperState): boolean => {\n return (\n this.state.status !== StatusEnum.ERROR_CRITICAL &&\n state.formSchema &&\n state.formUiSchema &&\n state.formNavSchema &&\n state.formData\n )\n }\n\n renderLoader = (\n state: SynapseFormWrapperState,\n props: SynapseFormWrapperProps,\n ) => {\n if (\n includes([StatusEnum.ERROR, StatusEnum.ERROR_CRITICAL], state.status) &&\n props.token &&\n state.isLoading\n ) {\n return (\n <div className=\"text-center\">\n <span className={'spinner'} />\n </div>\n )\n } else {\n return <></>\n }\n }\n\n renderNotification = (notification?: Notification) => {\n if (!notification) {\n return <></>\n }\n if (notification.type === StatusEnum.ERROR) {\n return (\n <FullWidthAlert\n variant=\"danger\"\n title=\"Error\"\n isGlobal={false}\n description={\n <>\n {notification.name} {notification.message}\n </>\n }\n onClose={() => this.setState({ status: undefined })}\n />\n )\n }\n\n return <></>\n }\n\n renderUnauthenticatedView = (token: string | undefined) => {\n if (token) {\n return <></>\n } else {\n return (\n <div className=\"panel padding-full unauthenticated text-center\">\n Please\n <Button\n variant=\"text\"\n color=\"primary\"\n sx={{\n mx: 1,\n fontSize: '1.4rem',\n verticalAlign: 'baseline',\n textTransform: 'none',\n }}\n className={`${SRC_SIGN_IN_CLASS}`}\n >\n sign in\n </Button>\n to initiate or continue your submission\n </div>\n )\n }\n }\n\n render() {\n return (\n <div className={`theme-${this.props.formClass}`}>\n <div className=\"SRC-ReactJsonForm\">\n {this.renderNotification(this.state.notification)}\n {this.renderLoader(this.state, this.props)}\n {this.renderUnauthenticatedView(this.props.token)}\n\n {this.isReadyToDisplayForm(this.state) && (\n <div>\n <SynapseForm\n schema={this.state.formSchema}\n uiSchema={this.state.formUiSchema!}\n formData={this.state.formData}\n navSchema={this.state.formNavSchema}\n isWizardMode={this.props.isWizardMode}\n formTitle={this.props.formTitle}\n formClass={this.props.formClass}\n callbackStatus={this.state.status}\n onSave={(data: any) => {\n this.saveToFile(data)\n }}\n onSubmit={(data: any) => {\n this.submitForm(data)\n }}\n isSubmitted={this.props.submitted}\n />\n </div>\n )}\n </div>\n </div>\n )\n }\n}\n\nexport function SynapseFormWrapper(props: SynapseFormWrapperProps) {\n const synapseContext = useSynapseContext()\n\n return <_SynapseFormWrapper {...props} token={synapseContext.accessToken} />\n}\n\nexport default SynapseFormWrapper\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarningDialog.js","names":[],"sources":["../../../src/components/SynapseForm/WarningDialog.tsx"],"sourcesContent":["import { ButtonProps } from '@mui/material'\nimport { ReactNode } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\n\nexport type WarningDialogProps<T = any> = {\n title: string\n content: string | ReactNode\n confirmButtonText?: string\n className?: string\n open: boolean\n onConfirm: (...args: T[]) => unknown\n onConfirmCallbackArgs?: Parameters<WarningDialogProps['onConfirm']>\n confirmButtonColor?: ButtonProps['color']\n confirmButtonDisabled?: boolean\n onCancel: () => void\n}\n\nexport function WarningDialog(props: WarningDialogProps) {\n const {\n title,\n content,\n confirmButtonText = 'OK',\n className,\n open,\n onConfirm,\n confirmButtonColor = 'primary',\n confirmButtonDisabled,\n onCancel,\n onConfirmCallbackArgs,\n } = props\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n className={className}\n confirmButtonProps={{\n children: confirmButtonText,\n color: confirmButtonColor,\n disabled: confirmButtonDisabled,\n }}\n onCancel={onCancel}\n onConfirm={() => onConfirm(...(onConfirmCallbackArgs ?? []))}\n />\n )\n}\n\nexport default WarningDialog\n"],"mappings":";;;AAiBA,SAAgB,EAAc,GAA2B;CACvD,IAAM,EACJ,UACA,YACA,uBAAoB,MACpB,cACA,SACA,cACA,wBAAqB,WACrB,0BACA,aACA,6BACE;
|
|
1
|
+
{"version":3,"file":"WarningDialog.js","names":[],"sources":["../../../src/components/SynapseForm/WarningDialog.tsx"],"sourcesContent":["import { ButtonProps } from '@mui/material'\nimport { ReactNode } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\n\nexport type WarningDialogProps<T = any> = {\n title: string\n content: string | ReactNode\n confirmButtonText?: string\n className?: string\n open: boolean\n onConfirm: (...args: T[]) => unknown\n onConfirmCallbackArgs?: Parameters<WarningDialogProps['onConfirm']>\n confirmButtonColor?: ButtonProps['color']\n confirmButtonDisabled?: boolean\n onCancel: () => void\n}\n\nexport function WarningDialog(props: WarningDialogProps) {\n const {\n title,\n content,\n confirmButtonText = 'OK',\n className,\n open,\n onConfirm,\n confirmButtonColor = 'primary',\n confirmButtonDisabled,\n onCancel,\n onConfirmCallbackArgs,\n } = props\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n content={content}\n className={className}\n confirmButtonProps={{\n children: confirmButtonText,\n color: confirmButtonColor,\n disabled: confirmButtonDisabled,\n }}\n onCancel={onCancel}\n onConfirm={() => onConfirm(...(onConfirmCallbackArgs ?? []))}\n />\n )\n}\n\nexport default WarningDialog\n"],"mappings":";;;AAiBA,SAAgB,EAAc,GAA2B;CACvD,IAAM,EACJ,UACA,YACA,uBAAoB,MACpB,cACA,SACA,cACA,wBAAqB,WACrB,0BACA,aACA,6BACE;CACJ,OACE,kBAAC,GAAD;EACQ;EACC;EACE;EACE;EACX,oBAAoB;GAClB,UAAU;GACV,OAAO;GACP,UAAU;EACZ;EACU;EACV,iBAAiB,EAAU,GAAI,KAAyB,CAAC,CAAE;CAC5D,CAAA;AAEL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/SynapseForm/types.ts"],"sourcesContent":["export enum StepStateEnum {\n TODO,\n PROGRESS,\n COMPLETED,\n EXCLUDED,\n ERROR,\n}\n\nexport type Step = {\n id: string\n title: string\n order: number\n state: StepStateEnum\n inProgress: boolean\n rules?: any[]\n validationRules?: any[]\n default: string\n excluded?: boolean\n final?: boolean\n description?: string\n copy?: string\n static?: boolean\n child?: boolean\n children?: string[]\n}\n\nexport enum NavActionEnum {\n PREVIOUS,\n NEXT,\n GO_TO_STEP,\n SAVE,\n SUBMIT,\n VALIDATE,\n NONE,\n}\n\nexport enum StatusEnum {\n PROGRESS,\n ERROR,\n SAVE_SUCCESS,\n SUBMIT_SUCCESS,\n ERROR_CRITICAL,\n}\n\nexport interface SummaryFormat {\n screen: Step\n label: string\n value: string\n}\n\nexport type FormSchema = {\n properties?: any\n definitions?: any\n}\n\nexport interface IRulesEvent {\n type: string\n params: any\n}\nexport interface IRulesNavigationEvent extends IRulesEvent {\n params: {\n next: string\n }\n}\n\nexport interface IRulesValidationEvent extends IRulesEvent {\n params: {\n message: string\n name: string\n property: string\n }\n}\n\nexport interface IAdditionalError {\n screen: string\n field: string\n message: string\n}\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,OAAA,KAAA,QACA,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,YAAA,KAAA,aACA,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,QAAA,KAAA;
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/SynapseForm/types.ts"],"sourcesContent":["export enum StepStateEnum {\n TODO,\n PROGRESS,\n COMPLETED,\n EXCLUDED,\n ERROR,\n}\n\nexport type Step = {\n id: string\n title: string\n order: number\n state: StepStateEnum\n inProgress: boolean\n rules?: any[]\n validationRules?: any[]\n default: string\n excluded?: boolean\n final?: boolean\n description?: string\n copy?: string\n static?: boolean\n child?: boolean\n children?: string[]\n}\n\nexport enum NavActionEnum {\n PREVIOUS,\n NEXT,\n GO_TO_STEP,\n SAVE,\n SUBMIT,\n VALIDATE,\n NONE,\n}\n\nexport enum StatusEnum {\n PROGRESS,\n ERROR,\n SAVE_SUCCESS,\n SUBMIT_SUCCESS,\n ERROR_CRITICAL,\n}\n\nexport interface SummaryFormat {\n screen: Step\n label: string\n value: string\n}\n\nexport type FormSchema = {\n properties?: any\n definitions?: any\n}\n\nexport interface IRulesEvent {\n type: string\n params: any\n}\nexport interface IRulesNavigationEvent extends IRulesEvent {\n params: {\n next: string\n }\n}\n\nexport interface IRulesValidationEvent extends IRulesEvent {\n params: {\n message: string\n name: string\n property: string\n }\n}\n\nexport interface IAdditionalError {\n screen: string\n field: string\n message: string\n}\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,OAAA,KAAA,QACA,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,YAAA,KAAA,aACA,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,QAAA,KAAA;AACF,EAAA,CAAA,CAAA,GAoBY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,OAAA,KAAA,QACA,EAAA,EAAA,aAAA,KAAA,cACA,EAAA,EAAA,OAAA,KAAA,QACA,EAAA,EAAA,SAAA,KAAA,UACA,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,OAAA,KAAA;AACF,EAAA,CAAA,CAAA,GAEY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,WAAA,KAAA,YACA,EAAA,EAAA,QAAA,KAAA,SACA,EAAA,EAAA,eAAA,KAAA,gBACA,EAAA,EAAA,iBAAA,KAAA,kBACA,EAAA,EAAA,iBAAA,KAAA;AACF,EAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetFormPropsFromSearchParams.js","names":[],"sources":["../../../src/components/SynapseForm/useGetFormPropsFromSearchParams.ts"],"sourcesContent":["import { useSearchParams } from 'react-router'\n\nexport function useGetFormPropsFromSearchParams() {\n const [searchParams] = useSearchParams()\n\n const formGroupId = searchParams.get('formGroupId')!\n const formDataId = searchParams.get('formDataId') ?? undefined\n const dataFileHandleId = searchParams.get('dataFileHandleId') ?? undefined\n const submittedParam = searchParams.get('submitted')\n const submitted = Boolean(submittedParam) && submittedParam !== 'false'\n\n return { formGroupId, formDataId, dataFileHandleId, submitted }\n}\n"],"mappings":";;AAEA,SAAgB,IAAkC;CAChD,IAAM,CAAC,KAAgB,
|
|
1
|
+
{"version":3,"file":"useGetFormPropsFromSearchParams.js","names":[],"sources":["../../../src/components/SynapseForm/useGetFormPropsFromSearchParams.ts"],"sourcesContent":["import { useSearchParams } from 'react-router'\n\nexport function useGetFormPropsFromSearchParams() {\n const [searchParams] = useSearchParams()\n\n const formGroupId = searchParams.get('formGroupId')!\n const formDataId = searchParams.get('formDataId') ?? undefined\n const dataFileHandleId = searchParams.get('dataFileHandleId') ?? undefined\n const submittedParam = searchParams.get('submitted')\n const submitted = Boolean(submittedParam) && submittedParam !== 'false'\n\n return { formGroupId, formDataId, dataFileHandleId, submitted }\n}\n"],"mappings":";;AAEA,SAAgB,IAAkC;CAChD,IAAM,CAAC,KAAgB,EAAgB,GAEjC,IAAc,EAAa,IAAI,aAAa,GAC5C,IAAa,EAAa,IAAI,YAAY,KAAK,KAAA,GAC/C,IAAmB,EAAa,IAAI,kBAAkB,KAAK,KAAA,GAC3D,IAAiB,EAAa,IAAI,WAAW;CAGnD,OAAO;EAAE;EAAa;EAAY;EAAkB,WAFlC,EAAQ,KAAmB,MAAmB;CAEF;AAChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingBlobsBackground.js","names":[],"sources":["../../../src/components/SynapseHomepageV2/FloatingBlobsBackground.tsx"],"sourcesContent":["import React from 'react'\nimport { Box } from '@mui/material'\nimport styles from './FloatingBlobsBackground.module.scss'\n\nexport type FloatingBlobsBackgroundProps = {\n color1: string\n color2: string\n}\n\nconst FloatingBlobsBackground = ({\n color1: stopColor1,\n color2: stopColor2,\n}: FloatingBlobsBackgroundProps): React.ReactNode => {\n return (\n <Box className={styles.background}>\n <svg\n width=\"600\"\n height=\"700\"\n viewBox=\"0 0 525 450\"\n preserveAspectRatio=\"xMidYMid meet\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Small circle top-left */}\n <circle\n className={styles.layer3}\n cx=\"17.5\"\n cy=\"182\"\n r=\"17\"\n fill=\"url(#wp_grad2)\"\n />\n {/* Medium circle top-right */}\n <circle\n className={styles.layer5}\n cx=\"178.5\"\n cy=\"68.5\"\n r=\"31\"\n fill=\"url(#wp_grad4)\"\n />\n {/* Large blob center */}\n <path\n className={styles.layer1}\n d=\"M150.75 346L159.125 359.375L170.5 378.75L181.5 392.75L191.625 401.25L201 407.25L212.75 413L224.25 416H236.625L247.75 414.875L261.125 411.25L273.5 406.125L284.375 400.75L295.625 393.625L308.25 382.875L326.625 365.25L341.875 349.5L357 335.375L370.75 325.5L386.375 318.125L397.875 315H405.5L417.125 318.125L425.875 322.375L436.5 329.25L448 338L459.5 344.75L468.875 349.125L478.125 350.375L486.25 349.125L493.625 346.25L503.5 340.375L511.25 331.75L518.25 319.625L522.125 309.75L523.625 303.125V294.125L522.875 287.125L519.125 273.25L512.375 255.625L502 238.125L492.75 224.5L481.375 207.75L472.125 194.125L463.125 177L456.75 162.25L453.625 147.125L452.5 137.5V125.25L453.625 98.875V87.5L452.5 75.125L449.125 62L443.75 49.875L436 37.75L426.25 26.875L411.875 15.375L400 9.25L388 4.375L372.375 0.625H358.625L346.375 1.625L331.25 6.375L316.75 13.125L301 23.125L287.5 34.25L274.5 45.75L260.625 59.375L245.375 74.75L228.75 88.625L215.125 98.375L200.125 107.25L184.375 113.125L169.875 115.625L153.5 116.375L138.875 114.75L125.625 114L117.375 114.75L108.75 117L100.5 121.125L91.375 127.875L85.875 133.75L75.625 149.25L67.75 166.125L63.75 179.875L61.875 196.5V205.625V219.125L63.75 228L65.625 236.25L69.75 246L73.5 252.875L79.5 259.875L86.25 267.125L95.75 276.125L105.625 285.875L113.625 294.625L121.875 305.25L132.25 317.5L141.25 330.375L150.75 346Z\"\n fill=\"url(#wp_grad0)\"\n />\n {/* Small circle bottom-right */}\n <circle\n className={styles.layer4}\n cx=\"418\"\n cy=\"364\"\n r=\"17\"\n fill=\"url(#wp_grad3)\"\n />\n {/* Medium circle bottom-left */}\n <circle\n className={styles.layer2}\n cx=\"84.5\"\n cy=\"309.75\"\n r=\"74.25\"\n fill=\"url(#wp_grad1)\"\n />\n\n <defs>\n <linearGradient\n id=\"wp_grad0\"\n x1=\"460\"\n y1=\"80\"\n x2=\"100\"\n y2=\"360\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad1\"\n x1=\"100\"\n y1=\"318\"\n x2=\"10\"\n y2=\"390\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad2\"\n x1=\"35\"\n y1=\"165\"\n x2=\"0\"\n y2=\"199\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad3\"\n x1=\"435\"\n y1=\"347\"\n x2=\"401\"\n y2=\"381\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad4\"\n x1=\"210\"\n y1=\"37\"\n x2=\"147\"\n y2=\"100\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n </defs>\n </svg>\n </Box>\n )\n}\n\nexport default FloatingBlobsBackground\n"],"mappings":";;;;;AASA,IAAM,KAA2B,EAC/B,QAAQ,GACR,QAAQ,QAGN,kBAAC,GAAD;CAAK,WAAW,EAAO;WACrB,kBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,qBAAoB;EACpB,MAAK;EACL,OAAM;YANR;GASE,kBAAC,UAAD;IACE,WAAW,EAAO;IAClB,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;
|
|
1
|
+
{"version":3,"file":"FloatingBlobsBackground.js","names":[],"sources":["../../../src/components/SynapseHomepageV2/FloatingBlobsBackground.tsx"],"sourcesContent":["import React from 'react'\nimport { Box } from '@mui/material'\nimport styles from './FloatingBlobsBackground.module.scss'\n\nexport type FloatingBlobsBackgroundProps = {\n color1: string\n color2: string\n}\n\nconst FloatingBlobsBackground = ({\n color1: stopColor1,\n color2: stopColor2,\n}: FloatingBlobsBackgroundProps): React.ReactNode => {\n return (\n <Box className={styles.background}>\n <svg\n width=\"600\"\n height=\"700\"\n viewBox=\"0 0 525 450\"\n preserveAspectRatio=\"xMidYMid meet\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Small circle top-left */}\n <circle\n className={styles.layer3}\n cx=\"17.5\"\n cy=\"182\"\n r=\"17\"\n fill=\"url(#wp_grad2)\"\n />\n {/* Medium circle top-right */}\n <circle\n className={styles.layer5}\n cx=\"178.5\"\n cy=\"68.5\"\n r=\"31\"\n fill=\"url(#wp_grad4)\"\n />\n {/* Large blob center */}\n <path\n className={styles.layer1}\n d=\"M150.75 346L159.125 359.375L170.5 378.75L181.5 392.75L191.625 401.25L201 407.25L212.75 413L224.25 416H236.625L247.75 414.875L261.125 411.25L273.5 406.125L284.375 400.75L295.625 393.625L308.25 382.875L326.625 365.25L341.875 349.5L357 335.375L370.75 325.5L386.375 318.125L397.875 315H405.5L417.125 318.125L425.875 322.375L436.5 329.25L448 338L459.5 344.75L468.875 349.125L478.125 350.375L486.25 349.125L493.625 346.25L503.5 340.375L511.25 331.75L518.25 319.625L522.125 309.75L523.625 303.125V294.125L522.875 287.125L519.125 273.25L512.375 255.625L502 238.125L492.75 224.5L481.375 207.75L472.125 194.125L463.125 177L456.75 162.25L453.625 147.125L452.5 137.5V125.25L453.625 98.875V87.5L452.5 75.125L449.125 62L443.75 49.875L436 37.75L426.25 26.875L411.875 15.375L400 9.25L388 4.375L372.375 0.625H358.625L346.375 1.625L331.25 6.375L316.75 13.125L301 23.125L287.5 34.25L274.5 45.75L260.625 59.375L245.375 74.75L228.75 88.625L215.125 98.375L200.125 107.25L184.375 113.125L169.875 115.625L153.5 116.375L138.875 114.75L125.625 114L117.375 114.75L108.75 117L100.5 121.125L91.375 127.875L85.875 133.75L75.625 149.25L67.75 166.125L63.75 179.875L61.875 196.5V205.625V219.125L63.75 228L65.625 236.25L69.75 246L73.5 252.875L79.5 259.875L86.25 267.125L95.75 276.125L105.625 285.875L113.625 294.625L121.875 305.25L132.25 317.5L141.25 330.375L150.75 346Z\"\n fill=\"url(#wp_grad0)\"\n />\n {/* Small circle bottom-right */}\n <circle\n className={styles.layer4}\n cx=\"418\"\n cy=\"364\"\n r=\"17\"\n fill=\"url(#wp_grad3)\"\n />\n {/* Medium circle bottom-left */}\n <circle\n className={styles.layer2}\n cx=\"84.5\"\n cy=\"309.75\"\n r=\"74.25\"\n fill=\"url(#wp_grad1)\"\n />\n\n <defs>\n <linearGradient\n id=\"wp_grad0\"\n x1=\"460\"\n y1=\"80\"\n x2=\"100\"\n y2=\"360\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad1\"\n x1=\"100\"\n y1=\"318\"\n x2=\"10\"\n y2=\"390\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad2\"\n x1=\"35\"\n y1=\"165\"\n x2=\"0\"\n y2=\"199\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad3\"\n x1=\"435\"\n y1=\"347\"\n x2=\"401\"\n y2=\"381\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n <linearGradient\n id=\"wp_grad4\"\n x1=\"210\"\n y1=\"37\"\n x2=\"147\"\n y2=\"100\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor={stopColor1} />\n <stop offset=\"1\" stopColor={stopColor2} />\n </linearGradient>\n </defs>\n </svg>\n </Box>\n )\n}\n\nexport default FloatingBlobsBackground\n"],"mappings":";;;;;AASA,IAAM,KAA2B,EAC/B,QAAQ,GACR,QAAQ,QAGN,kBAAC,GAAD;CAAK,WAAW,EAAO;WACrB,kBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,qBAAoB;EACpB,MAAK;EACL,OAAM;YANR;GASE,kBAAC,UAAD;IACE,WAAW,EAAO;IAClB,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;GACN,CAAA;GAED,kBAAC,UAAD;IACE,WAAW,EAAO;IAClB,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;GACN,CAAA;GAED,kBAAC,QAAD;IACE,WAAW,EAAO;IAClB,GAAE;IACF,MAAK;GACN,CAAA;GAED,kBAAC,UAAD;IACE,WAAW,EAAO;IAClB,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;GACN,CAAA;GAED,kBAAC,UAAD;IACE,WAAW,EAAO;IAClB,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;GACN,CAAA;GAED,kBAAC,QAAD,EAAA,UAAA;IACE,kBAAC,kBAAD;KACE,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,eAAc;eANhB,CAQE,kBAAC,QAAD,EAAM,WAAW,EAAa,CAAA,GAC9B,kBAAC,QAAD;MAAM,QAAO;MAAI,WAAW;KAAa,CAAA,CAC3B;;IAChB,kBAAC,kBAAD;KACE,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,eAAc;eANhB,CAQE,kBAAC,QAAD,EAAM,WAAW,EAAa,CAAA,GAC9B,kBAAC,QAAD;MAAM,QAAO;MAAI,WAAW;KAAa,CAAA,CAC3B;;IAChB,kBAAC,kBAAD;KACE,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,eAAc;eANhB,CAQE,kBAAC,QAAD,EAAM,WAAW,EAAa,CAAA,GAC9B,kBAAC,QAAD;MAAM,QAAO;MAAI,WAAW;KAAa,CAAA,CAC3B;;IAChB,kBAAC,kBAAD;KACE,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,eAAc;eANhB,CAQE,kBAAC,QAAD,EAAM,WAAW,EAAa,CAAA,GAC9B,kBAAC,QAAD;MAAM,QAAO;MAAI,WAAW;KAAa,CAAA,CAC3B;;IAChB,kBAAC,kBAAD;KACE,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;KACH,eAAc;eANhB,CAQE,kBAAC,QAAD,EAAM,WAAW,EAAa,CAAA,GAC9B,kBAAC,QAAD;MAAM,QAAO;MAAI,WAAW;KAAa,CAAA,CAC3B;;GACZ,EAAA,CAAA;EACH;;AACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomepageStyles.js","names":[],"sources":["../../../src/components/SynapseHomepageV2/HomepageStyles.ts"],"sourcesContent":["import { SxProps } from '@mui/material/styles'\n\nexport const darkTextColor = '#22252A'\nexport const homepageBodyText: SxProps = {\n fontSize: '24px',\n fontWeight: 400,\n lineHeight: '34px',\n color: darkTextColor,\n}\n\nexport const h2Sx: SxProps = {\n fontSize: {\n xs: '36px',\n md: '52px',\n },\n fontWeight: 600,\n lineHeight: '52px',\n color: darkTextColor,\n}\n\nexport const defaultHomepageText: SxProps = {\n color: darkTextColor,\n fontWeight: 600,\n}\n\nexport const titleSx: SxProps = {\n ...defaultHomepageText,\n fontWeight: 300,\n fontSize: {\n xs: '48px',\n md: '72px',\n },\n lineHeight: {\n xs: '120%',\n md: '82px',\n },\n color: 'white',\n}\n\nexport const sidePadding: SxProps = {\n pl: {\n xs: '15px',\n sm: '50px',\n },\n pr: {\n xs: '15px',\n sm: '50px',\n },\n}\n\n/**\n * Visually hides content while keeping it accessible to screen readers.\n * Use this for content that provides context to assistive technologies\n * but should not be visible on screen.\n */\nexport const visuallyHidden: SxProps = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n}\n"],"mappings":";AAEA,IAAa,IAAgB,WAChB,IAA4B;CACvC,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO;
|
|
1
|
+
{"version":3,"file":"HomepageStyles.js","names":[],"sources":["../../../src/components/SynapseHomepageV2/HomepageStyles.ts"],"sourcesContent":["import { SxProps } from '@mui/material/styles'\n\nexport const darkTextColor = '#22252A'\nexport const homepageBodyText: SxProps = {\n fontSize: '24px',\n fontWeight: 400,\n lineHeight: '34px',\n color: darkTextColor,\n}\n\nexport const h2Sx: SxProps = {\n fontSize: {\n xs: '36px',\n md: '52px',\n },\n fontWeight: 600,\n lineHeight: '52px',\n color: darkTextColor,\n}\n\nexport const defaultHomepageText: SxProps = {\n color: darkTextColor,\n fontWeight: 600,\n}\n\nexport const titleSx: SxProps = {\n ...defaultHomepageText,\n fontWeight: 300,\n fontSize: {\n xs: '48px',\n md: '72px',\n },\n lineHeight: {\n xs: '120%',\n md: '82px',\n },\n color: 'white',\n}\n\nexport const sidePadding: SxProps = {\n pl: {\n xs: '15px',\n sm: '50px',\n },\n pr: {\n xs: '15px',\n sm: '50px',\n },\n}\n\n/**\n * Visually hides content while keeping it accessible to screen readers.\n * Use this for content that provides context to assistive technologies\n * but should not be visible on screen.\n */\nexport const visuallyHidden: SxProps = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n}\n"],"mappings":";AAEA,IAAa,IAAgB,WAChB,IAA4B;CACvC,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO;AACT,GAEa,IAAgB;CAC3B,UAAU;EACR,IAAI;EACJ,IAAI;CACN;CACA,YAAY;CACZ,YAAY;CACZ,OAAO;AACT,GAEa,IAA+B;CAC1C,OAAO;CACP,YAAY;AACd,GAEa,IAAmB;CAC9B,GAAG;CACH,YAAY;CACZ,UAAU;EACR,IAAI;EACJ,IAAI;CACN;CACA,YAAY;EACV,IAAI;EACJ,IAAI;CACN;CACA,OAAO;AACT,GAEa,IAAuB;CAClC,IAAI;EACF,IAAI;EACJ,IAAI;CACN;CACA,IAAI;EACF,IAAI;EACJ,IAAI;CACN;AACF,GAOa,IAA0B;CACrC,UAAU;CACV,OAAO;CACP,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,UAAU;CACV,MAAM;CACN,YAAY;CACZ,QAAQ;AACV"}
|