synapse-react-client 4.0.45 → 4.0.47
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.js +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +1 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
- package/dist/aridhia-queries/index.d.ts +1 -0
- package/dist/aridhia-queries/index.d.ts.map +1 -1
- package/dist/aridhia-queries/index.js +11 -10
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.js +2 -2
- package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
- package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js +3 -3
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +3 -3
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/index.d.ts +6 -6
- package/dist/components/Authentication/index.d.ts.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +7 -7
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
- package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
- package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
- package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +2 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +231 -219
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
- package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.js +3 -3
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js +14 -12
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
- package/dist/components/DataGrid/hooks/useStack.js +2 -2
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +47 -42
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js +22 -13
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +3 -2
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js +4 -4
- package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
- package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.js +15 -10
- package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
- package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +46 -46
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +38 -38
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js +1 -1
- package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.d.ts +3 -1
- package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid/HexGrid.js +14 -13
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +154 -47
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/IconSvg/index.d.ts +1 -1
- package/dist/components/IconSvg/index.d.ts.map +1 -1
- package/dist/components/IconSvg/index.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
- package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +3 -1
- package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/widget/index.d.ts +1 -1
- package/dist/components/Markdown/widget/index.d.ts.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js +2 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/Plot/BarPlot.js +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
- package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
- package/dist/components/PortalList/PortalCard.js +6 -5
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js +4 -4
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +31 -30
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
- package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
- package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QuerySortSelector.js +5 -5
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
- package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
- package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
- package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js +26 -21
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
- package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
- package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
- package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js +25 -8
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
- package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.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/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
- package/dist/components/SynapseTable/SqlEditor.js +7 -7
- package/dist/components/SynapseTable/SynapseTable.js +8 -8
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +6 -6
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +2 -2
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +59 -59
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TotalQueryResults.js +14 -14
- package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js +3 -3
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
- package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/FormTemplateTable.js +6 -6
- package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
- package/dist/components/download_list/DownloadDetails.js +12 -10
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/error/ErrorBanner.d.ts.map +1 -1
- package/dist/components/error/ErrorBanner.js +49 -46
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/error/ErrorChip.d.ts.map +1 -1
- package/dist/components/error/ErrorChip.js +2 -1
- package/dist/components/error/ErrorChip.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
- package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
- package/dist/components/row_renderers/Dataset.js +6 -6
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js +22 -14
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
- package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +17 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +62 -42
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js +4 -2
- package/dist/mocks/msw/server.js.map +1 -1
- package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
- package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
- package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
- package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
- package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
- package/dist/stories/ColorPaletteInspector.js +2 -2
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +2 -2
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js +2 -2
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +8 -8
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
- package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
- package/dist/synapse-queries/download/index.js +2 -2
- package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
- package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js +14 -13
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js +20 -20
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js +6 -6
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js +14 -14
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js +4 -4
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/index.js +177 -176
- package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js +7 -7
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js +4 -4
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js +2 -2
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js +3 -3
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js +8 -8
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js +4 -4
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js +4 -4
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js +10 -10
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/theme/DefaultTheme.d.ts.map +1 -1
- package/dist/theme/DefaultTheme.js +4 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +1 -1
- package/dist/utils/AppUtils/AppUtils.js.map +1 -1
- package/dist/utils/ContentTypeUtils.js +4 -4
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js +3 -3
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +2 -2
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/StringUtils.d.ts.map +1 -1
- package/dist/utils/functions/StringUtils.js +1 -2
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js +2 -2
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/enumerationFacet.d.ts +26 -0
- package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
- package/dist/utils/functions/enumerationFacet.js +27 -0
- package/dist/utils/functions/enumerationFacet.js.map +1 -0
- package/dist/utils/functions/facetCountUtils.d.ts +12 -0
- package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
- package/dist/utils/functions/facetCountUtils.js +9 -0
- package/dist/utils/functions/facetCountUtils.js.map +1 -0
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getUserData.js +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.d.ts +1 -1
- package/dist/utils/functions/queryUtils.d.ts.map +1 -1
- package/dist/utils/functions/queryUtils.js +26 -22
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js +17 -26
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useLogin.d.ts.map +1 -1
- package/dist/utils/hooks/useLogin.js +5 -5
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/submissionContext.js +2 -2
- package/dist/utils/jsonschema/submissionContext.js.map +1 -1
- package/package.json +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/StringUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAM,UAK1E;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/StringUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAM,UAK1E;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,UAa3C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAc9D;AAID,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,sPAqBnD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASlE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAczD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAY,GAAG,MAAM,EAAE,CAEvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.js","names":[],"sources":["../../../src/utils/functions/StringUtils.ts"],"sourcesContent":["import { parseSynId, SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\n\n/**\n * Truncates a string to be a specified length, then optionally append a suffix.\n */\nexport function truncateString(str: string, maxLength: number, suffix = '…') {\n if (str.length <= maxLength) {\n return str\n }\n return str.substring(0, maxLength) + suffix\n}\n\nexport function hex2ascii(inputString: string): string {\n const hex: string = inputString.toString()\n let str: string = ''\n for (let n = 0; n < hex.length; n += 2) {\n str += String.fromCharCode(parseInt(hex.substring(n, n + 2), 16))\n }\n return str\n}\n\n/**\n * Returns a hash code from a string. Uses Java's String.hashCode() algorithm: https://devdocs.io/openjdk~8/java/lang/string#hashCode--\n * @param {String} str The string to hash.\n * @return {Number} A 32bit integer\n * @see https://stackoverflow.com/a/8831937\n */\nexport function hashCode(str?: string | null) {\n if (str == null) {\n str = ''\n }\n let hash = 0\n for (let i = 0, len = str.length; i < len; i++) {\n const chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return hash\n}\n\nexport function normalizeNumericId(id: string | number): number {\n if (id == null) {\n return NaN\n }\n if (typeof id === 'number') {\n return id\n }\n if (id.match(SYNAPSE_ENTITY_ID_REGEX)) {\n // parse the ID to remove a possible version suffix ('syn123.4' -> 'syn123')\n const entityId = parseSynId(id)!.targetId\n return parseInt(entityId.substring('syn'.length))\n } else {\n return parseInt(id)\n }\n}\n\n// Used for client-side validation. Note, the server has the final say. Integration tested in ChangePassword.integration.test.tsx\n// See https://github.com/Sage-Bionetworks/Synapse-Repository-Services/blob/develop/services/repository-managers/src/main/java/org/sagebionetworks/repo/manager/password/PasswordValidatorImpl.java#L47 for rules\nexport function validatePassword(newPassword: string) {\n if (newPassword.trim().length < 8) {\n return 'A valid password must be at least 8 characters long'\n }\n const hasLetter = /[a-zA-Z]/.test(newPassword) // Checks for at least one letter\n if (!hasLetter) {\n return 'A valid password must include letters'\n }\n\n const hasNumber = /\\d/.test(newPassword) // Checks for at least one number\n if (!hasNumber) {\n return 'A valid password must include digits (0-9)'\n }\n\n const hasSpecialChar = /[~!@#$%^&*_\\-+=`|\\\\(){}[\\]:;\"'<>,.?/]/.test(\n newPassword,\n ) // Checks for at least one special character\n if (!hasSpecialChar) {\n return 'A valid password must include special characters ~!@#$%^&*_-+=`|\\\\(){}[]:;\"\\'<>,.?/'\n }\n return undefined\n}\n\nexport function copyStringToClipboard(value: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // PORTALS-3571: setTimeout necessary on Safari\n setTimeout(() => {\n // use the Clipboard API\n // https://caniuse.com/mdn-api_clipboard_writetext\n navigator.clipboard.writeText(value).then(resolve).catch(reject)\n }, 0)\n })\n}\n\nexport function replaceFileExtension(\n filePath: string,\n extension: string,\n): string {\n const pathParts = filePath.split(/[\\\\/]/) // split on both '/' and '\\'\n const filename = pathParts
|
|
1
|
+
{"version":3,"file":"StringUtils.js","names":[],"sources":["../../../src/utils/functions/StringUtils.ts"],"sourcesContent":["import { parseSynId, SYNAPSE_ENTITY_ID_REGEX } from './RegularExpressions'\n\n/**\n * Truncates a string to be a specified length, then optionally append a suffix.\n */\nexport function truncateString(str: string, maxLength: number, suffix = '…') {\n if (str.length <= maxLength) {\n return str\n }\n return str.substring(0, maxLength) + suffix\n}\n\nexport function hex2ascii(inputString: string): string {\n const hex: string = inputString.toString()\n let str: string = ''\n for (let n = 0; n < hex.length; n += 2) {\n // Each pair is a single byte; fromCodePoint would throw on the NaN that malformed hex produces\n // oxlint-disable-next-line unicorn/prefer-code-point\n str += String.fromCharCode(parseInt(hex.substring(n, n + 2), 16))\n }\n return str\n}\n\n/**\n * Returns a hash code from a string. Uses Java's String.hashCode() algorithm: https://devdocs.io/openjdk~8/java/lang/string#hashCode--\n * @param {String} str The string to hash.\n * @return {Number} A 32bit integer\n * @see https://stackoverflow.com/a/8831937\n */\nexport function hashCode(str?: string | null) {\n if (str == null) {\n str = ''\n }\n let hash = 0\n for (let i = 0, len = str.length; i < len; i++) {\n // Java's String.hashCode() sums UTF-16 code units, so astral characters must not be read as one code point\n // oxlint-disable-next-line unicorn/prefer-code-point\n const chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return hash\n}\n\nexport function normalizeNumericId(id: string | number): number {\n if (id == null) {\n return NaN\n }\n if (typeof id === 'number') {\n return id\n }\n if (id.match(SYNAPSE_ENTITY_ID_REGEX)) {\n // parse the ID to remove a possible version suffix ('syn123.4' -> 'syn123')\n const entityId = parseSynId(id)!.targetId\n return parseInt(entityId.substring('syn'.length))\n } else {\n return parseInt(id)\n }\n}\n\n// Used for client-side validation. Note, the server has the final say. Integration tested in ChangePassword.integration.test.tsx\n// See https://github.com/Sage-Bionetworks/Synapse-Repository-Services/blob/develop/services/repository-managers/src/main/java/org/sagebionetworks/repo/manager/password/PasswordValidatorImpl.java#L47 for rules\nexport function validatePassword(newPassword: string) {\n if (newPassword.trim().length < 8) {\n return 'A valid password must be at least 8 characters long'\n }\n const hasLetter = /[a-zA-Z]/.test(newPassword) // Checks for at least one letter\n if (!hasLetter) {\n return 'A valid password must include letters'\n }\n\n const hasNumber = /\\d/.test(newPassword) // Checks for at least one number\n if (!hasNumber) {\n return 'A valid password must include digits (0-9)'\n }\n\n const hasSpecialChar = /[~!@#$%^&*_\\-+=`|\\\\(){}[\\]:;\"'<>,.?/]/.test(\n newPassword,\n ) // Checks for at least one special character\n if (!hasSpecialChar) {\n return 'A valid password must include special characters ~!@#$%^&*_-+=`|\\\\(){}[]:;\"\\'<>,.?/'\n }\n return undefined\n}\n\nexport function copyStringToClipboard(value: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // PORTALS-3571: setTimeout necessary on Safari\n setTimeout(() => {\n // use the Clipboard API\n // https://caniuse.com/mdn-api_clipboard_writetext\n navigator.clipboard.writeText(value).then(resolve).catch(reject)\n }, 0)\n })\n}\n\nexport function replaceFileExtension(\n filePath: string,\n extension: string,\n): string {\n const pathParts = filePath.split(/[\\\\/]/) // split on both '/' and '\\'\n const filename = pathParts.at(-1)! // last part of path\n const baseName = filename.replace(/\\.[^/.]+$/, '') // remove extension\n return `${baseName}.${extension}`\n}\n\nexport function stringListToArray(input: string): string[] {\n let inputArray: string[]\n\n if (Array.isArray(input)) {\n inputArray = input.map(String)\n } else {\n try {\n const parsed = JSON.parse(input ?? '[]')\n inputArray = Array.isArray(parsed) ? parsed.map(String) : [String(parsed)]\n } catch {\n inputArray = input ? [String(input)] : []\n }\n }\n return inputArray\n}\n\n// Split a value by a separator and remove leading/trailing spaces\nexport function splitAndTrim(value: string, sep: string = ','): string[] {\n return value?.split(sep).map(v => v.trim()) ?? []\n}\n"],"mappings":";;AAKA,SAAgB,EAAe,GAAa,GAAmB,IAAS,KAAK;CAI3E,OAHI,EAAI,UAAU,IACT,IAEF,EAAI,UAAU,GAAG,CAAS,IAAI;AACvC;AAEA,SAAgB,EAAU,GAA6B;CACrD,IAAM,IAAc,EAAY,SAAS,GACrC,IAAc;CAClB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAI,QAAQ,KAAK,GAGnC,KAAO,OAAO,aAAa,SAAS,EAAI,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;CAElE,OAAO;AACT;AAQA,SAAgB,EAAS,GAAqB;CAC5C,AACE,MAAM;CAER,IAAI,IAAO;CACX,KAAK,IAAI,IAAI,GAAG,IAAM,EAAI,QAAQ,IAAI,GAAK,KAAK;EAG9C,IAAM,IAAM,EAAI,WAAW,CAAC;EAE5B,AADA,KAAQ,KAAQ,KAAK,IAAO,GAC5B,KAAQ;CACV;CACA,OAAO;AACT;AAEA,SAAgB,EAAmB,GAA6B;CAC9D,IAAI,KAAM,MACR,OAAO;CAET,IAAI,OAAO,KAAO,UAChB,OAAO;CAET,IAAI,EAAG,MAAM,CAAuB,GAAG;EAErC,IAAM,IAAW,EAAW,CAAE,EAAG;EACjC,OAAO,SAAS,EAAS,UAAU,CAAY,CAAC;CAClD,OACE,OAAO,SAAS,CAAE;AAEtB;AAIA,SAAgB,EAAiB,GAAqB;CACpD,IAAI,EAAY,KAAK,EAAE,SAAS,GAC9B,OAAO;CAGT,IAAI,CADc,WAAW,KAAK,CAC7B,GACH,OAAO;CAIT,IAAI,CADc,KAAK,KAAK,CACvB,GACH,OAAO;CAMT,IAAI,CAHmB,wCAAwC,KAC7D,CAEG,GACH,OAAO;AAGX;AAEA,SAAgB,EAAsB,GAA8B;CAClE,OAAO,IAAI,SAAS,GAAS,MAAW;EAEtC,iBAAiB;GAGf,UAAU,UAAU,UAAU,CAAK,EAAE,KAAK,CAAO,EAAE,MAAM,CAAM;EACjE,GAAG,CAAC;CACN,CAAC;AACH;AAEA,SAAgB,EACd,GACA,GACQ;CAIR,OAAO,GAHW,EAAS,MAAM,OAChB,EAAU,GAAG,EACb,EAAS,QAAQ,aAAa,EACrC,EAAS,GAAG;AACxB;AAEA,SAAgB,EAAkB,GAAyB;CACzD,IAAI;CAEJ,IAAI,MAAM,QAAQ,CAAK,GACrB,IAAa,EAAM,IAAI,MAAM;MAE7B,IAAI;EACF,IAAM,IAAS,KAAK,MAAM,KAAS,IAAI;EACvC,IAAa,MAAM,QAAQ,CAAM,IAAI,EAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAM,CAAC;CAC3E,QAAQ;EACN,IAAa,IAAQ,CAAC,OAAO,CAAK,CAAC,IAAI,CAAC;CAC1C;CAEF,OAAO;AACT;AAGA,SAAgB,EAAa,GAAe,IAAc,KAAe;CACvE,OAAO,GAAO,MAAM,CAAG,EAAE,KAAI,MAAK,EAAE,KAAK,CAAC,KAAK,CAAC;AAClD"}
|
|
@@ -5,12 +5,12 @@ async function n(e) {
|
|
|
5
5
|
let t = new TextEncoder().encode(e), n = new CompressionStream("gzip"), r = n.writable.getWriter(), i = new Response(n.readable).arrayBuffer();
|
|
6
6
|
await r.write(t), await r.close();
|
|
7
7
|
let a = await i, o = new Uint8Array(a), s = "";
|
|
8
|
-
for (let e
|
|
8
|
+
for (let e of o) s += String.fromCodePoint(e);
|
|
9
9
|
return btoa(s);
|
|
10
10
|
}
|
|
11
11
|
async function r(e) {
|
|
12
12
|
let t = atob(e), n = new Uint8Array(t.length);
|
|
13
|
-
for (let e = 0; e < t.length; e++) n[e] = t.
|
|
13
|
+
for (let e = 0; e < t.length; e++) n[e] = t.codePointAt(e);
|
|
14
14
|
let r = new DecompressionStream("gzip"), i = r.writable.getWriter(), a = new Response(r.readable).arrayBuffer();
|
|
15
15
|
await i.write(n), await i.close();
|
|
16
16
|
let o = await a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepLinkingUtils.js","names":[],"sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n window.history.state,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"mappings":";;;AASA,eAAe,EAAe,GAA8B;CAE1D,IAAM,IAAO,IADO,YACP,EAAQ,OAAO,CAAG,GAEzB,IAAoB,IAAI,kBAAkB,MAAM,GAChD,IAAS,EAAkB,SAAS,UAAU,GAG9C,IAAc,IAAI,SAAS,EAAkB,QAAQ,EAAE,YAAY;CAGzE,AADA,MAAM,EAAO,MAAM,CAAI,GACvB,MAAM,EAAO,MAAM;CAEnB,IAAM,IAAwB,MAAM,GAG9B,IAAQ,IAAI,WAAW,CAAqB,GAC9C,IAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAChC,KAAU,OAAO,aAAa,EAAM,EAAE;CAExC,OAAO,KAAK,CAAM;AACpB;AAOA,eAAe,EAAiB,GAAoC;CAElE,IAAM,IAAS,KAAK,CAAS,GACvB,IAAQ,IAAI,WAAW,EAAO,MAAM;CAC1C,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KACjC,EAAM,KAAK,EAAO,WAAW,CAAC;CAGhC,IAAM,IAAsB,IAAI,oBAAoB,MAAM,GACpD,IAAS,EAAoB,SAAS,UAAU,GAGhD,IAAc,IAAI,SAAS,EAAoB,QAAQ,EAAE,YAAY;CAG3E,AADA,MAAM,EAAO,MAAM,CAAK,GACxB,MAAM,EAAO,MAAM;CAEnB,IAAM,IAA0B,MAAM;CAGtC,OAAO,IADa,YACb,EAAQ,OAAO,CAAuB;AAC/C;AAGA,SAAS,EACP,GACA,GACQ;CACR,OAAO,GAAG,IAAgB;AAC5B;AAUA,SAAS,EACP,GACA,GACuB;CACvB,IAAI,EAAQ,GAAc,CAAS,GACjC,OAAO;CAGT,IAAM,IAAuB,CAAC,GAIxB,IAAU,IAAI,IAAI,CACtB,GAAG,OAAO,KAAK,CAAY,GAC3B,GAAG,OAAO,KAAK,CAAS,CAC1B,CAAC;CAED,KAAK,IAAM,KAAO,GAChB,AAAK,EAAQ,EAAa,IAAM,EAAU,EAAI,MAG3C,EAAc,KAAO,EAAa;CAIvC,OAAO,OAAO,KAAK,CAAI,EAAE,SAAS,IAAI,IAAO;AAC/C;AAQA,SAAS,EAAe,GAAkB,GAA6B;CACrE,OAAO;EACL,GAAG;EACH,GAAG;CACL;AACF;AAWA,eAAsB,EACpB,GACA,GACA,GACA,GACe;CACf,IAAM,IACJ,MAAmB,KAAA,IAEf,IADA,EAAyB,GAAe,CAAc,GAGtD,IAAgB,IAAI,gBAAgB,OAAO,SAAS,MAAM;CAEhE,IAAI,KAAgB,GAAW;EAC7B,IAAM,IAAO,EAAiB,GAAc,CAAS;EACrD,IAAI,GAAM;GAGR,IAAM,IAAa,MAAM,EADN,KAAK,UAAU,CACM,CAAU;GAClD,EAAc,IAAI,GAAuB,CAAU;EACrD,OAEE,EAAc,OAAO,CAAqB;CAE9C,OAEE,EAAc,OAAO,CAAqB;CAG5C,IAAM,IAAe,EAAc,SAAS;CAC5C,OAAO,QAAQ,aACb,OAAO,QAAQ,OACf,IACA,OAAO,SAAS,YACb,MAAM,KAAK,CAAa,EAAE,SAAS,IAChC,IAAI,EAAa,SAAS,MAC1B,GACR;AACF;AAQA,eAAsB,EACpB,GACA,GACkD;CAClD,IAAM,IAAW,EAAyB,MAAM,CAAc,GACxD,IAAmB,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IACnE,CACF,GAEI;CACJ,IAAI,GACF,IAAI;EAEF,IAAM,IAAa,MAAM,EAAiB,CAAgB,GAGpD,IAAQ,EAAe,GAFhB,KAAK,MAAM,CAEgB,CAAI;EAC5C,AAAI,EAAM,QACR,IAAe;GACb,cACE;GACF,UAAU,EAA8B,EAAM,GAAG;GACjD;EACF;CAEJ,SAAS,GAAO;EACd,QAAQ,MAAM,wCAAwC,CAAK;CAC7D;CAIF,IAAM,IAAiB,EACrB,gBACA,CACF,GACM,IAAyB,IAAI,gBACjC,OAAO,SAAS,MAClB,EAAE,IAAI,CAAc;CACpB,IAAI,KAA0B,CAAC,GAC7B,IAAI;EACF,IAAM,IAAQ,KAAK,MAAM,CAAsB;EAC/C,AAAI,EAAM,QACR,IAAe;GACb,cACE;GACF,UAAU,EAA8B,EAAM,GAAG;GACjD;EACF;CAEJ,SAAS,GAAO;EACd,QAAQ,MAAM,0CAA0C,CAAK;CAC/D;CAEF,OAAO;AACT;AAUA,eAAsB,EACpB,GACA,GACA,GACA,GACiB;CACjB,IAAM,IAAO,EAAiB,GAAc,CAAS;CACrD,IAAI,CAAC,GAEH,OAAO;CAIT,IAAM,IAAa,MAAM,EADN,KAAK,UAAU,CACM,CAAU;CAGlD,OAAO,GAAG,EAAK,GAFE,EAAyB,MAAM,CAE9B,EAAS,GAAG,mBAAmB,CAAU;AAC7D"}
|
|
1
|
+
{"version":3,"file":"deepLinkingUtils.js","names":[],"sources":["../../../src/utils/functions/deepLinkingUtils.ts"],"sourcesContent":["import { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { isEqual } from 'lodash-es'\nimport { parseEntityIdFromSqlStatement } from './SqlFunctions'\n\n/**\n * Compresses a string using the browser's CompressionStream API and returns base64.\n * @param str - The string to compress\n * @returns Base64-encoded compressed string\n */\nasync function compressString(str: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(str)\n\n const compressionStream = new CompressionStream('gzip')\n const writer = compressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(compressionStream.readable).arrayBuffer()\n\n await writer.write(data)\n await writer.close()\n\n const compressedArrayBuffer = await readPromise\n\n // Convert to base64\n const bytes = new Uint8Array(compressedArrayBuffer)\n let binary = ''\n for (const byte of bytes) {\n binary += String.fromCodePoint(byte)\n }\n return btoa(binary)\n}\n\n/**\n * Decompresses a base64-encoded gzip string using the browser's DecompressionStream API.\n * @param base64Str - The base64-encoded compressed string\n * @returns The decompressed string\n */\nasync function decompressString(base64Str: string): Promise<string> {\n // Convert from base64 to Uint8Array\n const binary = atob(base64Str)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.codePointAt(i)!\n }\n\n const decompressionStream = new DecompressionStream('gzip')\n const writer = decompressionStream.writable.getWriter()\n\n // Start consuming from the readable side immediately to prevent backpressure deadlock\n const readPromise = new Response(decompressionStream.readable).arrayBuffer()\n\n await writer.write(bytes)\n await writer.close()\n\n const decompressedArrayBuffer = await readPromise\n\n const decoder = new TextDecoder()\n return decoder.decode(decompressedArrayBuffer)\n}\n\n//id consists of a component class/function name and it's index\nfunction getComponentSearchHashId(\n componentName: string,\n componentIndex: number,\n): string {\n return `${componentName}${componentIndex}`\n}\n\n/**\n * Computes the difference between the current query and the initial query.\n * Returns only the fields that differ from the initial query.\n * Dynamically handles all fields in the Query type, making it safe for future changes.\n * @param currentQuery - The current query state\n * @param initQuery - The initial query state\n * @returns A partial Query object containing only the differences, or null if queries are equal\n */\nfunction computeQueryDiff(\n currentQuery: Query,\n initQuery: Query,\n): Partial<Query> | null {\n if (isEqual(currentQuery, initQuery)) {\n return null\n }\n\n const diff: Partial<Query> = {}\n\n // Get the union of keys from both currentQuery and initQuery to handle\n // both additions/changes and removals/omissions\n const allKeys = new Set([\n ...Object.keys(currentQuery),\n ...Object.keys(initQuery),\n ]) as Set<keyof Query>\n\n for (const key of allKeys) {\n if (!isEqual(currentQuery[key], initQuery[key])) {\n // Type assertion needed for dynamic key assignment\n // Include currentQuery[key] even if undefined to represent removals\n ;(diff as any)[key] = currentQuery[key]\n }\n }\n\n return Object.keys(diff).length > 0 ? diff : null\n}\n\n/**\n * Applies a query diff to the initial query to reconstruct the current query.\n * @param initQuery - The initial query state\n * @param diff - The partial query containing only the differences\n * @returns The reconstructed query\n */\nfunction applyQueryDiff(initQuery: Query, diff: Partial<Query>): Query {\n return {\n ...initQuery,\n ...diff,\n }\n}\n\n/**\n * Updates the url with the components' new search params. Stores only the\n * differences between currentQuery and initQuery, compressed with gzip and base64-encoded.\n * If the queries are equal, the search param will be removed.\n * @param componentName\n * @param componentIndex\n * @param currentQuery - The current query state, or null to remove the param\n * @param initQuery - The initial query state to compute diff against\n */\nexport async function updateUrlWithNewSearchParam(\n componentName: string,\n componentIndex: number | undefined,\n currentQuery: Query | null,\n initQuery: Query | null,\n): Promise<void> {\n const componentSearchHashId =\n componentIndex !== undefined\n ? getComponentSearchHashId(componentName, componentIndex)\n : componentName\n\n const currentSearch = new URLSearchParams(window.location.search)\n\n if (currentQuery && initQuery) {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (diff) {\n // Compress the diff and encode as base64\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n currentSearch.set(componentSearchHashId, compressed)\n } else {\n // Queries are equal, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n } else {\n // No current query or no init query, remove the param\n currentSearch.delete(componentSearchHashId)\n }\n\n const searchString = currentSearch.toString()\n window.history.replaceState(\n window.history.state,\n '',\n window.location.pathname +\n (Array.from(currentSearch).length > 0\n ? `?${searchString.toString()}`\n : ''),\n )\n}\n\n/**\n * Retrieves a query request from the URL by applying the stored diff to the initial query.\n * @param componentIndex\n * @param initQuery - The initial query to apply the diff to\n * @returns A partial QueryBundleRequest with the reconstructed query, or undefined if no diff is stored\n */\nexport async function getQueryRequestFromLink(\n componentIndex: number,\n initQuery: Query,\n): Promise<Partial<QueryBundleRequest> | undefined> {\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n const searchParamValue = new URLSearchParams(window.location.search).get(\n paramKey,\n )\n\n let queryRequest: Partial<QueryBundleRequest> | undefined = undefined\n if (searchParamValue) {\n try {\n // Decompress and parse the diff from the URL\n const jsonString = await decompressString(searchParamValue)\n const diff = JSON.parse(jsonString) as Partial<Query>\n // Apply the diff to the init query to reconstruct the current query\n const query = applyQueryDiff(initQuery, diff)\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse query diff from URL:', error)\n }\n }\n\n // check for legacy search param for backward compatibility, but prioritize the new format if both are present\n const legacyParamKey = getComponentSearchHashId(\n 'QueryWrapper',\n componentIndex,\n )\n const legacySearchParamValue = new URLSearchParams(\n window.location.search,\n ).get(legacyParamKey)\n if (legacySearchParamValue && !queryRequest) {\n try {\n const query = JSON.parse(legacySearchParamValue) as Query\n if (query.sql) {\n queryRequest = {\n concreteType:\n 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: parseEntityIdFromSqlStatement(query.sql),\n query,\n }\n }\n } catch (error) {\n console.error('Failed to parse legacy query from URL:', error)\n }\n }\n return queryRequest\n}\n\n/**\n * Generates a URL with a compressed query diff parameter.\n * @param path - The base path for the URL\n * @param componentIndex - The component index (e.g., 0)\n * @param currentQuery - The query to encode\n * @param initQuery - The initial/default query to compute the diff against\n * @returns A Promise that resolves to the full URL with compressed query parameter\n */\nexport async function generateCompressedQueryURL(\n path: string,\n componentIndex: number,\n currentQuery: Query,\n initQuery: Query,\n): Promise<string> {\n const diff = computeQueryDiff(currentQuery, initQuery)\n if (!diff) {\n // Queries are equal, no need for a parameter\n return path\n }\n\n const jsonString = JSON.stringify(diff)\n const compressed = await compressString(jsonString)\n const paramKey = getComponentSearchHashId('qw', componentIndex)\n\n return `${path}?${paramKey}=${encodeURIComponent(compressed)}`\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FacetColumnResult, FacetColumnResultValueCount } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
/**
|
|
3
|
+
* An enumeration facet as the UI lists it, whether the server returned exact counts (FacetColumnResultValues) or
|
|
4
|
+
* binned counts (FacetColumnResultBinnedValues, from the ROUNDING post-processing algorithm).
|
|
5
|
+
*/
|
|
6
|
+
export type EnumerationFacet = {
|
|
7
|
+
columnName: string;
|
|
8
|
+
/** When present, the facet is for the sub-column of `columnName` at this JSON path. */
|
|
9
|
+
jsonPath?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Every returned value. For a binned facet, each count is the midpoint of the value's bin, so a value whose exact
|
|
12
|
+
* count is 0 still has a positive count.
|
|
13
|
+
*/
|
|
14
|
+
facetValues: FacetColumnResultValueCount[];
|
|
15
|
+
/** Set for a binned facet: each value's exact count lies within count ± (binSize - 1) / 2. */
|
|
16
|
+
binSize?: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Returns the facet as an EnumerationFacet, or undefined for a range facet.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getEnumerationFacet(facet: FacetColumnResult): EnumerationFacet | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The enumeration facets in a list of facets, each as an EnumerationFacet.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getEnumerationFacets(facets: readonly FacetColumnResult[] | undefined): EnumerationFacet[];
|
|
26
|
+
//# sourceMappingURL=enumerationFacet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerationFacet.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/enumerationFacet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,iCAAiC,CAAA;AAExC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,WAAW,EAAE,2BAA2B,EAAE,CAAA;IAC1C,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,GACvB,gBAAgB,GAAG,SAAS,CAuB9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAC/C,gBAAgB,EAAE,CAEpB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/utils/functions/enumerationFacet.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
switch (e.concreteType) {
|
|
4
|
+
case "org.sagebionetworks.repo.model.table.FacetColumnResultValues": return e;
|
|
5
|
+
case "org.sagebionetworks.repo.model.table.FacetColumnResultBinnedValues": {
|
|
6
|
+
let t = (e.binSize - 1) / 2;
|
|
7
|
+
return {
|
|
8
|
+
columnName: e.columnName,
|
|
9
|
+
jsonPath: e.jsonPath,
|
|
10
|
+
binSize: e.binSize,
|
|
11
|
+
facetValues: e.binnedValues.map(({ value: e, binMin: n, isSelected: r }) => ({
|
|
12
|
+
value: e,
|
|
13
|
+
count: n + t,
|
|
14
|
+
isSelected: r
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
case "org.sagebionetworks.repo.model.table.FacetColumnResultRange": return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function t(t) {
|
|
22
|
+
return (t ?? []).flatMap((t) => e(t) ?? []);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { e as getEnumerationFacet, t as getEnumerationFacets };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=enumerationFacet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerationFacet.js","names":[],"sources":["../../../src/utils/functions/enumerationFacet.ts"],"sourcesContent":["import {\n FacetColumnResult,\n FacetColumnResultValueCount,\n} from '@sage-bionetworks/synapse-types'\n\n/**\n * An enumeration facet as the UI lists it, whether the server returned exact counts (FacetColumnResultValues) or\n * binned counts (FacetColumnResultBinnedValues, from the ROUNDING post-processing algorithm).\n */\nexport type EnumerationFacet = {\n columnName: string\n /** When present, the facet is for the sub-column of `columnName` at this JSON path. */\n jsonPath?: string\n /**\n * Every returned value. For a binned facet, each count is the midpoint of the value's bin, so a value whose exact\n * count is 0 still has a positive count.\n */\n facetValues: FacetColumnResultValueCount[]\n /** Set for a binned facet: each value's exact count lies within count ± (binSize - 1) / 2. */\n binSize?: number\n}\n\n/**\n * Returns the facet as an EnumerationFacet, or undefined for a range facet.\n */\nexport function getEnumerationFacet(\n facet: FacetColumnResult,\n): EnumerationFacet | undefined {\n switch (facet.concreteType) {\n case 'org.sagebionetworks.repo.model.table.FacetColumnResultValues':\n return facet\n case 'org.sagebionetworks.repo.model.table.FacetColumnResultBinnedValues': {\n // The midpoint of [binMin, binMin + binSize - 1]: counts, plot lengths and sorting err neither high nor low.\n const halfBinWidth = (facet.binSize - 1) / 2\n return {\n columnName: facet.columnName,\n jsonPath: facet.jsonPath,\n binSize: facet.binSize,\n facetValues: facet.binnedValues.map(\n ({ value, binMin, isSelected }) => ({\n value,\n count: binMin + halfBinWidth,\n isSelected,\n }),\n ),\n }\n }\n case 'org.sagebionetworks.repo.model.table.FacetColumnResultRange':\n return undefined\n }\n}\n\n/**\n * The enumeration facets in a list of facets, each as an EnumerationFacet.\n */\nexport function getEnumerationFacets(\n facets: readonly FacetColumnResult[] | undefined,\n): EnumerationFacet[] {\n return (facets ?? []).flatMap(facet => getEnumerationFacet(facet) ?? [])\n}\n"],"mappings":";AAyBA,SAAgB,EACd,GAC8B;CAC9B,QAAQ,EAAM,cAAd;EACE,KAAK,gEACH,OAAO;EACT,KAAK,sEAAsE;GAEzE,IAAM,KAAgB,EAAM,UAAU,KAAK;GAC3C,OAAO;IACL,YAAY,EAAM;IAClB,UAAU,EAAM;IAChB,SAAS,EAAM;IACf,aAAa,EAAM,aAAa,KAC7B,EAAE,UAAO,WAAQ,qBAAkB;KAClC;KACA,OAAO,IAAS;KAChB;IACF,EACF;GACF;EACF;EACA,KAAK,+DACH;CACJ;AACF;AAKA,SAAgB,EACd,GACoB;CACpB,QAAQ,KAAU,CAAC,GAAG,SAAQ,MAAS,EAAoB,CAAK,KAAK,CAAC,CAAC;AACzE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EnumerationFacet } from './enumerationFacet';
|
|
2
|
+
/**
|
|
3
|
+
* Formats a facet value's count for display. Post-processed counts show as approximate, e.g. `≈ 1,202`: a rounded
|
|
4
|
+
* count (a facet with `binSize`, whose counts are bin midpoints; see `getEnumerationFacet`) or a noised count. Exact
|
|
5
|
+
* counts, including counts rounded to a bin size of 1, show as-is.
|
|
6
|
+
*
|
|
7
|
+
* @param count the facet value's count (the bin midpoint for a binned facet)
|
|
8
|
+
* @param facet the facet that the value belongs to
|
|
9
|
+
* @param facetPostProcessingApplied the QueryResultBundle's `facetPostProcessingApplied`
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatFacetValueCount(count: number, facet: Pick<EnumerationFacet, 'binSize'>, facetPostProcessingApplied: boolean | undefined): string;
|
|
12
|
+
//# sourceMappingURL=facetCountUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facetCountUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/facetCountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EACxC,0BAA0B,EAAE,OAAO,GAAG,SAAS,GAC9C,MAAM,CAKR"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/utils/functions/facetCountUtils.ts
|
|
2
|
+
function e(e, t, n) {
|
|
3
|
+
let { binSize: r } = t;
|
|
4
|
+
return (r === void 0 ? n : r > 1) ? `≈ ${e.toLocaleString()}` : e.toLocaleString();
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { e as formatFacetValueCount };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=facetCountUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facetCountUtils.js","names":[],"sources":["../../../src/utils/functions/facetCountUtils.ts"],"sourcesContent":["import { EnumerationFacet } from './enumerationFacet'\n\n/**\n * Formats a facet value's count for display. Post-processed counts show as approximate, e.g. `≈ 1,202`: a rounded\n * count (a facet with `binSize`, whose counts are bin midpoints; see `getEnumerationFacet`) or a noised count. Exact\n * counts, including counts rounded to a bin size of 1, show as-is.\n *\n * @param count the facet value's count (the bin midpoint for a binned facet)\n * @param facet the facet that the value belongs to\n * @param facetPostProcessingApplied the QueryResultBundle's `facetPostProcessingApplied`\n */\nexport function formatFacetValueCount(\n count: number,\n facet: Pick<EnumerationFacet, 'binSize'>,\n facetPostProcessingApplied: boolean | undefined,\n): string {\n const { binSize } = facet\n const isApproximate =\n binSize === undefined ? Boolean(facetPostProcessingApplied) : binSize > 1\n return isApproximate ? `≈ ${count.toLocaleString()}` : count.toLocaleString()\n}\n"],"mappings":";AAWA,SAAgB,EACd,GACA,GACA,GACQ;CACR,IAAM,EAAE,eAAY;CAGpB,QADE,MAAY,KAAA,IAAoB,IAA8B,IAAU,KACnD,KAAK,EAAM,eAAe,MAAM,EAAM,eAAe;AAC9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEndpoint.js","names":[],"sources":["../../../src/utils/functions/getEndpoint.ts"],"sourcesContent":["import {\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport enum BackendDestinationEnum {\n REPO_ENDPOINT,\n PORTAL_ENDPOINT,\n}\n\n// Encodes the portal and repo service destinations\nexport type EndpointObject = {\n REPO: string\n PORTAL: string\n}\n\nexport const KNOWN_SYNAPSE_ORG_URLS = [\n 'www.synapse.org',\n 'staging.synapse.org',\n 'tst.synapse.org',\n 'dev.synapse.org',\n '127.0.0.1',\n]\n\nexport const getSynapsePortalEndpoint = (hostname: string): string => {\n return KNOWN_SYNAPSE_ORG_URLS.includes(hostname.toLowerCase())\n ? '/'\n : 'https://www.synapse.org/'\n}\nfunction getDefaultSynapsePortal(): string {\n if (typeof window === 'undefined') return getSynapsePortalEndpoint('')\n return getSynapsePortalEndpoint(window.location.hostname)\n}\n\nexport const PRODUCTION_ENDPOINT_CONFIG: EndpointObject = {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n // Computed lazily via a getter so this object can be imported in Node.js (SSR/pre-render)\n // without crashing on the `window.location.hostname` access.\n get PORTAL() {\n return getDefaultSynapsePortal()\n },\n}\n\n// Given an endpoint will return the specific stack object\nexport const getEndpoint = (endpoint: BackendDestinationEnum): string => {\n let endpoint_config = PRODUCTION_ENDPOINT_CONFIG\n if (typeof window !== 'undefined') {\n // @ts-expect-error if overriding endpoint config\n if (window.SRC_OVERRIDE_ENDPOINT_CONFIG) {\n // @ts-expect-error\n endpoint_config = window.SRC_OVERRIDE_ENDPOINT_CONFIG\n }\n }\n const { PORTAL, REPO } = endpoint_config\n if (!PORTAL || !REPO) {\n throw Error('Error failed to specify endpoints, cannot make call')\n }\n if (endpoint === BackendDestinationEnum.PORTAL_ENDPOINT) {\n return PORTAL\n }\n return REPO\n}\n\nexport type SynapseStack =\n | 'production'\n | 'staging'\n | 'development'\n | 'mock'\n | 'local'\n\nexport const MOCK_REPO_ORIGIN =\n 'https://mock-repo.sagebase.org' satisfies string\nexport const MOCK_PORTAL_ORIGIN =\n 'https://mock-portal.sagebase.org/' satisfies string\n\nexport const STACK_MAP: Record<SynapseStack, EndpointObject> = {\n production: {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n PORTAL: 'https://www.synapse.org/',\n },\n staging: {\n REPO: SYNAPSE_BACKEND_STAGING_URL,\n PORTAL: 'https://staging.synapse.org/',\n },\n development: {\n REPO: SYNAPSE_BACKEND_DEV_URL,\n PORTAL: 'https://dev.synapse.org/',\n },\n mock: {\n REPO: MOCK_REPO_ORIGIN,\n PORTAL: MOCK_PORTAL_ORIGIN,\n },\n local: {\n REPO: 'http://localhost:8080/services-repository-develop-SNAPSHOT',\n PORTAL: 'http://localhost:8888/',\n },\n}\n"],"mappings":";;AAMA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,gBAAA,KAAA,iBACA,EAAA,EAAA,kBAAA,KAAA;AACF,EAAA,CAAA,CAAA,GAQa,IAAyB;CACpC;CACA;CACA;CACA;CACA;AACF,GAEa,KAA4B,MAChC,EAAuB,SAAS,EAAS,YAAY,CAAC,IACzD,MACA;AAEN,SAAS,IAAkC;CAEzC,OAD0C,EAAtC,OAAO,SAAW,MAA6C,KACnC,OAAO,SAAS,QADqB;AAEvE;AAEA,IAAa,IAA6C;CACxD,MAAM;CAGN,IAAI,SAAS;EACX,OAAO,EAAwB;CACjC;AACF,GAGa,KAAe,MAA6C;CACvE,IAAI,IAAkB;CACtB,AAAI,OAAO,SAAW,OAEhB,OAAO,iCAET,IAAkB,OAAO;CAG7B,IAAM,EAAE,WAAQ,YAAS;CACzB,IAAI,CAAC,KAAU,CAAC,GACd,
|
|
1
|
+
{"version":3,"file":"getEndpoint.js","names":[],"sources":["../../../src/utils/functions/getEndpoint.ts"],"sourcesContent":["import {\n SYNAPSE_BACKEND_DEV_URL,\n SYNAPSE_BACKEND_PRODUCTION_URL,\n SYNAPSE_BACKEND_STAGING_URL,\n} from '../SynapseConstants'\n\nexport enum BackendDestinationEnum {\n REPO_ENDPOINT,\n PORTAL_ENDPOINT,\n}\n\n// Encodes the portal and repo service destinations\nexport type EndpointObject = {\n REPO: string\n PORTAL: string\n}\n\nexport const KNOWN_SYNAPSE_ORG_URLS = [\n 'www.synapse.org',\n 'staging.synapse.org',\n 'tst.synapse.org',\n 'dev.synapse.org',\n '127.0.0.1',\n]\n\nexport const getSynapsePortalEndpoint = (hostname: string): string => {\n return KNOWN_SYNAPSE_ORG_URLS.includes(hostname.toLowerCase())\n ? '/'\n : 'https://www.synapse.org/'\n}\nfunction getDefaultSynapsePortal(): string {\n if (typeof window === 'undefined') return getSynapsePortalEndpoint('')\n return getSynapsePortalEndpoint(window.location.hostname)\n}\n\nexport const PRODUCTION_ENDPOINT_CONFIG: EndpointObject = {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n // Computed lazily via a getter so this object can be imported in Node.js (SSR/pre-render)\n // without crashing on the `window.location.hostname` access.\n get PORTAL() {\n return getDefaultSynapsePortal()\n },\n}\n\n// Given an endpoint will return the specific stack object\nexport const getEndpoint = (endpoint: BackendDestinationEnum): string => {\n let endpoint_config = PRODUCTION_ENDPOINT_CONFIG\n if (typeof window !== 'undefined') {\n // @ts-expect-error if overriding endpoint config\n if (window.SRC_OVERRIDE_ENDPOINT_CONFIG) {\n // @ts-expect-error\n endpoint_config = window.SRC_OVERRIDE_ENDPOINT_CONFIG\n }\n }\n const { PORTAL, REPO } = endpoint_config\n if (!PORTAL || !REPO) {\n throw new Error('Error failed to specify endpoints, cannot make call')\n }\n if (endpoint === BackendDestinationEnum.PORTAL_ENDPOINT) {\n return PORTAL\n }\n return REPO\n}\n\nexport type SynapseStack =\n | 'production'\n | 'staging'\n | 'development'\n | 'mock'\n | 'local'\n\nexport const MOCK_REPO_ORIGIN =\n 'https://mock-repo.sagebase.org' satisfies string\nexport const MOCK_PORTAL_ORIGIN =\n 'https://mock-portal.sagebase.org/' satisfies string\n\nexport const STACK_MAP: Record<SynapseStack, EndpointObject> = {\n production: {\n REPO: SYNAPSE_BACKEND_PRODUCTION_URL,\n PORTAL: 'https://www.synapse.org/',\n },\n staging: {\n REPO: SYNAPSE_BACKEND_STAGING_URL,\n PORTAL: 'https://staging.synapse.org/',\n },\n development: {\n REPO: SYNAPSE_BACKEND_DEV_URL,\n PORTAL: 'https://dev.synapse.org/',\n },\n mock: {\n REPO: MOCK_REPO_ORIGIN,\n PORTAL: MOCK_PORTAL_ORIGIN,\n },\n local: {\n REPO: 'http://localhost:8080/services-repository-develop-SNAPSHOT',\n PORTAL: 'http://localhost:8888/',\n },\n}\n"],"mappings":";;AAMA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,EAAA,gBAAA,KAAA,iBACA,EAAA,EAAA,kBAAA,KAAA;AACF,EAAA,CAAA,CAAA,GAQa,IAAyB;CACpC;CACA;CACA;CACA;CACA;AACF,GAEa,KAA4B,MAChC,EAAuB,SAAS,EAAS,YAAY,CAAC,IACzD,MACA;AAEN,SAAS,IAAkC;CAEzC,OAD0C,EAAtC,OAAO,SAAW,MAA6C,KACnC,OAAO,SAAS,QADqB;AAEvE;AAEA,IAAa,IAA6C;CACxD,MAAM;CAGN,IAAI,SAAS;EACX,OAAO,EAAwB;CACjC;AACF,GAGa,KAAe,MAA6C;CACvE,IAAI,IAAkB;CACtB,AAAI,OAAO,SAAW,OAEhB,OAAO,iCAET,IAAkB,OAAO;CAG7B,IAAM,EAAE,WAAQ,YAAS;CACzB,IAAI,CAAC,KAAU,CAAC,GACd,MAAU,MAAM,qDAAqD;CAKvE,OAHI,MAAA,IACK,IAEF;AACT,GASa,IACX,kCACW,IACX,qCAEW,IAAkD;CAC7D,YAAY;EACV,MAAM;EACN,QAAQ;CACV;CACA,SAAS;EACP,MAAM;EACN,QAAQ;CACV;CACA,aAAa;EACX,MAAM;EACN,QAAQ;CACV;CACA,MAAM;EACJ,MAAM;EACN,QAAQ;CACV;CACA,OAAO;EACL,MAAM;EACN,QAAQ;CACV;AACF"}
|
|
@@ -25,7 +25,7 @@ var i = [
|
|
|
25
25
|
"orangered",
|
|
26
26
|
"blueviolet"
|
|
27
27
|
], a = (e) => {
|
|
28
|
-
let t = e.split("").reduce((e, t) => (e << 5) - e + t.
|
|
28
|
+
let t = e.split("").reduce((e, t) => (e << 5) - e + t.codePointAt(0) | 0, 0);
|
|
29
29
|
return Math.abs(t);
|
|
30
30
|
}, o = (e) => i[a(e) % i.length];
|
|
31
31
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserData.js","names":[],"sources":["../../../src/utils/functions/getUserData.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { BackendDestinationEnum, getEndpoint } from './getEndpoint'\n\n/*\n Utility functions for UserCards\n*/\n\nexport async function getUserProfileWithProfilePicAttached(\n principalIds: string[],\n) {\n const userProfiles = await SynapseClient.getUserProfiles(principalIds)\n const profilesWithPictures = userProfiles.list.map(profile => {\n if (profile.profilePicureFileHandleId) {\n return {\n ...profile,\n clientPreSignedURL: `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/userProfile/${profile.ownerId}/image/preview?redirect=true`,\n }\n } else {\n return profile\n }\n })\n return { list: profilesWithPictures }\n}\n\nconst COLORS: string[] = [\n 'chocolate',\n 'black',\n 'firebrick',\n 'maroon',\n 'olive',\n 'green',\n 'forestgreen',\n 'darkturquoise',\n 'teal',\n 'blue',\n 'navy',\n 'darkmagenta',\n 'purple',\n 'blue',\n 'orangered',\n 'blueviolet',\n]\n\nconst hash = (userName: string) => {\n const val = userName\n .split('')\n .reduce(\n (prevHash, currVal) =>\n ((prevHash << 5) - prevHash + currVal.
|
|
1
|
+
{"version":3,"file":"getUserData.js","names":[],"sources":["../../../src/utils/functions/getUserData.ts"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { BackendDestinationEnum, getEndpoint } from './getEndpoint'\n\n/*\n Utility functions for UserCards\n*/\n\nexport async function getUserProfileWithProfilePicAttached(\n principalIds: string[],\n) {\n const userProfiles = await SynapseClient.getUserProfiles(principalIds)\n const profilesWithPictures = userProfiles.list.map(profile => {\n if (profile.profilePicureFileHandleId) {\n return {\n ...profile,\n clientPreSignedURL: `${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/userProfile/${profile.ownerId}/image/preview?redirect=true`,\n }\n } else {\n return profile\n }\n })\n return { list: profilesWithPictures }\n}\n\nconst COLORS: string[] = [\n 'chocolate',\n 'black',\n 'firebrick',\n 'maroon',\n 'olive',\n 'green',\n 'forestgreen',\n 'darkturquoise',\n 'teal',\n 'blue',\n 'navy',\n 'darkmagenta',\n 'purple',\n 'blue',\n 'orangered',\n 'blueviolet',\n]\n\nconst hash = (userName: string) => {\n const val = userName\n .split('')\n .reduce(\n (prevHash, currVal) =>\n ((prevHash << 5) - prevHash + currVal.codePointAt(0)!) | 0,\n 0,\n )\n return Math.abs(val)\n}\n\nexport const getColor = (userName: string) => {\n const hashedUserName = hash(userName)\n return COLORS[hashedUserName % COLORS.length]\n}\n"],"mappings":";;;AAOA,eAAsB,EACpB,GACA;CAcA,OAAO,EAAE,OAZoB,MADF,EAAc,gBAAgB,CAAY,GAC3B,KAAK,KAAI,MAC7C,EAAQ,4BACH;EACL,GAAG;EACH,oBAAoB,GAAG,EACrB,EAAuB,aACzB,EAAE,uBAAuB,EAAQ,QAAQ;CAC3C,IAEO,CAGI,EAAqB;AACtC;AAEA,IAAM,IAAmB;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAEM,KAAQ,MAAqB;CACjC,IAAM,IAAM,EACT,MAAM,EAAE,EACR,QACE,GAAU,OACP,KAAY,KAAK,IAAW,EAAQ,YAAY,CAAC,IAAM,GAC3D,CACF;CACF,OAAO,KAAK,IAAI,CAAG;AACrB,GAEa,KAAY,MAEhB,EADgB,EAAK,CACd,IAAiB,EAAO"}
|
|
@@ -56,7 +56,7 @@ export declare function removeEmptyQueryParams(q: Query): Query;
|
|
|
56
56
|
* @param facet
|
|
57
57
|
* @param columnModels
|
|
58
58
|
*/
|
|
59
|
-
export declare function getCorrespondingColumnForFacet(facet:
|
|
59
|
+
export declare function getCorrespondingColumnForFacet(facet: UniqueFacetIdentifier, columnModels: ColumnModel[]): ColumnModel | JsonSubColumnModel | undefined;
|
|
60
60
|
/**
|
|
61
61
|
* Given a set of FacetColumnRequests, return the FacetColumnRequest that matches the given UniqueFacetIdentifier.
|
|
62
62
|
* @param facetDefinition
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/queryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,qBAAqB,EACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACN,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"queryUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/queryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,qBAAqB,EACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACN,MAAM,iCAAiC,CAAA;AAaxC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,SAAS,iBAAiB,WAStE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,QAAQ,iBAAiB,GAAG,SAAS,WAQtC,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,cAAc,EAC1B,aAAa,GAAE,YAAY,EAAO,GACjC,MAAM,EAAE,CAOV;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,iBAAiB,EAAE,EAC5B,gBAAgB,YAAY,EAAE,KAC7B,OAuBF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,iBAAiB,KAAG,OAM9D,CAAA;AAGD,wBAAgB,+BAA+B,CAC7C,IAAI,CAAC,EAAE,iBAAiB,EACxB,YAAY,CAAC,EAAE,YAAY,GAC1B,iBAAiB,GAAG,SAAS,CAc/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAmBT;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EACxE,MAAM,CAAC,EAAE,CAAC,EACV,cAAc,CAAC,EAAE,MAAM,WAiBxB;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,WAiBhB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,SAuB9C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,WAAW,EAAE,GAC1B,WAAW,GAAG,kBAAkB,GAAG,SAAS,CAS9C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,qBAAqB,EACtC,cAAc,CAAC,EAAE,kBAAkB,EAAE,GACpC,kBAAkB,GAAG,SAAS,CAIhC;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EACX,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,EACrB,WAAW,EAAE,qBAAqB,GAAG,kBAAkB,GAAG,iBAAiB,WAS5E;AAED,wBAAgB,8CAA8C,CAC5D,kBAAkB,EAAE,kBAAkB,GACrC;IACD,cAAc,EAAE,kBAAkB,CAAA;IAClC,oBAAoB,EAAE,kBAAkB,CAAA;CACzC,CAwBA"}
|
|
@@ -2,49 +2,53 @@ import "../SynapseConstants.js";
|
|
|
2
2
|
import { isColumnMultiValueFunctionQueryFilter as e, isColumnSingleValueQueryFilter as t } from "../types/IsType.js";
|
|
3
3
|
import { hasFilesInView as n, isDataset as r, isDatasetCollection as i, isEntityView as a, isFileView as o } from "./EntityTypeUtils.js";
|
|
4
4
|
import "../types/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { getEnumerationFacet as s } from "./enumerationFacet.js";
|
|
6
|
+
import { cloneDeep as c, isEqual as l, isEqualWith as u, isMatch as d, isNil as f } from "lodash-es";
|
|
6
7
|
//#region src/utils/functions/queryUtils.ts
|
|
7
|
-
var
|
|
8
|
+
var p = (e, t) => e == null ? -1 : t?.selectColumns?.findIndex((t) => t.name === e) ?? -1, m = (e, t) => {
|
|
8
9
|
let n = e.toLowerCase();
|
|
9
10
|
return t?.queryResult?.queryResults.headers.findIndex((e) => e.name.toLowerCase() === n) ?? -1;
|
|
10
11
|
};
|
|
11
|
-
function
|
|
12
|
+
function h(e, t = []) {
|
|
12
13
|
return t.reduce((t, n, r) => n.columnType === e ? [...t, r] : t, []);
|
|
13
14
|
}
|
|
14
|
-
var
|
|
15
|
-
|
|
15
|
+
var g = (e, t) => e == null || t == null || e.length === 0 || t.length === 0 ? !1 : e.filter((e) => !_(e) && t.find((t) => t.name === e.columnName)).length > 0, _ = (e) => {
|
|
16
|
+
let t = s(e)?.facetValues;
|
|
17
|
+
return t?.length == 1 && t[0].value == "org.sagebionetworks.UNDEFINED_NULL_NOTSET";
|
|
18
|
+
};
|
|
19
|
+
function v(e, t) {
|
|
16
20
|
let n = t?.columnName;
|
|
17
21
|
if (n && e) {
|
|
18
|
-
let t =
|
|
22
|
+
let t = c(e);
|
|
19
23
|
return t.facets = t.facets?.filter((e) => e.columnName.toLowerCase() !== n.toLowerCase()), t;
|
|
20
24
|
} else return e;
|
|
21
25
|
}
|
|
22
|
-
function
|
|
23
|
-
let i = Array.isArray(n.selectedFacets) && n.selectedFacets.
|
|
26
|
+
function y(n, r) {
|
|
27
|
+
let i = Array.isArray(n.selectedFacets) && n.selectedFacets.some((e) => e.columnName.toLowerCase() !== r?.columnName?.toLowerCase()), a = Array.isArray(n.additionalFilters) && n.additionalFilters.some((n) => t(n) || e(n) ? n.columnName.toLowerCase() !== r?.columnName?.toLowerCase() : !0);
|
|
24
28
|
return i || a;
|
|
25
29
|
}
|
|
26
|
-
function
|
|
30
|
+
function b(e, t) {
|
|
27
31
|
return e && a(e) && !n(e) || e && i(e) ? !1 : !!(t || e && (a(e) && o(e) || r(e)));
|
|
28
32
|
}
|
|
29
|
-
function
|
|
30
|
-
let n =
|
|
33
|
+
function x(e, t) {
|
|
34
|
+
let n = c(e);
|
|
31
35
|
delete n.limit, delete n.offset, delete n.sort;
|
|
32
|
-
let r =
|
|
33
|
-
return delete r.limit, delete r.offset, delete r.sort,
|
|
36
|
+
let r = c(t);
|
|
37
|
+
return delete r.limit, delete r.offset, delete r.sort, u(n, r, (e, t) => f(e) && f(t) ? !0 : l(e, t));
|
|
34
38
|
}
|
|
35
|
-
function
|
|
36
|
-
let t =
|
|
39
|
+
function S(e) {
|
|
40
|
+
let t = c(e);
|
|
37
41
|
return t.limit ?? delete t.limit, (t.offset == null || t.offset == 0) && delete t.offset, (t.sort == null || t.sort.length == 0) && delete t.sort, (t.selectedFacets == null || t.selectedFacets.length == 0) && delete t.selectedFacets, (t.additionalFilters == null || t.additionalFilters.length == 0) && delete t.additionalFilters, t;
|
|
38
42
|
}
|
|
39
|
-
function
|
|
43
|
+
function C(e, t) {
|
|
40
44
|
let n = t.find((t) => t.name === e.columnName);
|
|
41
45
|
return e.jsonPath && n?.jsonSubColumns && (n = n.jsonSubColumns.find((t) => t.jsonPath === e.jsonPath)), n;
|
|
42
46
|
}
|
|
43
|
-
function C(e, t) {
|
|
44
|
-
return t?.find((t) => w(e, t));
|
|
45
|
-
}
|
|
46
47
|
function w(e, t) {
|
|
47
|
-
return
|
|
48
|
+
return t?.find((t) => T(e, t));
|
|
49
|
+
}
|
|
50
|
+
function T(e, t) {
|
|
51
|
+
return d({
|
|
48
52
|
columnName: e.columnName,
|
|
49
53
|
jsonPath: e.jsonPath
|
|
50
54
|
}, {
|
|
@@ -52,7 +56,7 @@ function w(e, t) {
|
|
|
52
56
|
jsonPath: t.jsonPath
|
|
53
57
|
});
|
|
54
58
|
}
|
|
55
|
-
function
|
|
59
|
+
function E(e) {
|
|
56
60
|
return {
|
|
57
61
|
rowDataRequest: {
|
|
58
62
|
...e,
|
|
@@ -71,6 +75,6 @@ function T(e) {
|
|
|
71
75
|
};
|
|
72
76
|
}
|
|
73
77
|
//#endregion
|
|
74
|
-
export {
|
|
78
|
+
export { b as canTableQueryBeAddedToDownloadList, T as facetObjectMatchesDefinition, C as getCorrespondingColumnForFacet, w as getCorrespondingSelectedFacet, p as getFieldIndex, m as getHeaderIndex, h as getTypeIndices, g as hasFacetedSelectColumn, y as hasResettableFilters, _ as isSingleNotSetValue, E as partitionQueryBundleRequestIntoRowsAndMetadata, x as queryRequestsHaveSameTotalResults, S as removeEmptyQueryParams, v as removeLockedColumnFromFacetData };
|
|
75
79
|
|
|
76
80
|
//# sourceMappingURL=queryUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryUtils.js","names":[],"sources":["../../../src/utils/functions/queryUtils.ts"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n UniqueFacetIdentifier,\n} from '@/utils/types'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetColumnRequest,\n FacetColumnResult,\n JsonSubColumnModel,\n Query,\n QueryBundleRequest,\n QueryResultBundle,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport { cloneDeep, isEqual, isEqualWith, isMatch, isNil } from 'lodash-es'\nimport * as SynapseConstants from '../SynapseConstants'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport {\n hasFilesInView,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isFileView,\n} from './EntityTypeUtils'\n\n/**\n * Retrieve the index of a column using the column name\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getFieldIndex = (name?: string, result?: QueryResultBundle) => {\n if (name == undefined) {\n return -1\n }\n return (\n result?.selectColumns?.findIndex(el => {\n return el.name === name\n }) ?? -1\n )\n}\n\n/**\n * Retrieve the index of a column using the header column name found inthe query results.\n * Ignores case.\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getHeaderIndex = (\n name: string,\n result: QueryResultBundle | undefined,\n) => {\n const nameLowercase = name.toLowerCase()\n return (\n result?.queryResult?.queryResults.headers.findIndex(el => {\n return el.name.toLowerCase() === nameLowercase\n }) ?? -1\n )\n}\n\n/**\n * Returns the indices of the selectColumns with the specified type\n * @param columnType\n * @param selectColumns\n */\nexport function getTypeIndices(\n columnType: ColumnTypeEnum,\n selectColumns: SelectColumn[] = [],\n): number[] {\n return selectColumns.reduce((prev: number[], curr, index) => {\n if (curr.columnType === columnType) {\n return [...prev, index]\n }\n return prev\n }, [])\n}\n\nexport const hasFacetedSelectColumn = (\n facets?: FacetColumnResult[],\n selectColumns?: SelectColumn[],\n): boolean => {\n /**\n * Facets are available iff\n * * there is at least one facet AND\n * * each facet has a corresponding columnModel in the selectColumns AND\n * * each facets has a valid value other than the null/not set value\n */\n if (facets == null || selectColumns == null) {\n return false\n }\n\n if (facets.length === 0 || selectColumns.length === 0) {\n return false\n }\n\n const facetsWithValuesAndColumnModels = facets.filter(facet => {\n return (\n !isSingleNotSetValue(facet) &&\n selectColumns.find(model => model.name === facet.columnName)\n )\n })\n\n return facetsWithValuesAndColumnModels.length > 0\n}\n\nexport const isSingleNotSetValue = (facet: FacetColumnResult): boolean => {\n return (\n facet.facetType === 'enumeration' &&\n facet.facetValues.length == 1 &&\n facet.facetValues[0].value == SynapseConstants.VALUE_NOT_SET\n )\n}\n\n// TODO Instead of removing the facet from the data, the facet renderers should just be aware of what to hide\nexport function removeLockedColumnFromFacetData(\n data?: QueryResultBundle,\n lockedColumn?: LockedColumn,\n): QueryResultBundle | undefined {\n const lockedColumnName = lockedColumn?.columnName\n if (lockedColumnName && data) {\n // for details page, return data without the \"locked\" facet\n const dataCopy: QueryResultBundle = cloneDeep(data)\n const facets = dataCopy.facets?.filter(\n item => item.columnName.toLowerCase() !== lockedColumnName.toLowerCase(),\n )\n dataCopy.facets = facets\n return dataCopy\n } else {\n // for other pages, just return the data\n return data\n }\n}\n\n/**\n * Returns true iff the query has filters applied that can be reset.\n * This includes facet filters and additional filters that are not applied to a locked column.\n */\nexport function hasResettableFilters(\n query: Query,\n lockedColumn?: LockedColumn,\n): boolean {\n const hasFacetFilters =\n Array.isArray(query.selectedFacets) &&\n query.selectedFacets.filter(\n facet =>\n facet.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase(),\n ).length > 0\n const hasAdditionalFilters =\n Array.isArray(query.additionalFilters) &&\n query.additionalFilters.filter(queryFilter =>\n isColumnSingleValueQueryFilter(queryFilter) ||\n isColumnMultiValueFunctionQueryFilter(queryFilter)\n ? queryFilter.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase()\n : true,\n ).length > 0\n\n return hasFacetFilters || hasAdditionalFilters\n}\n\n/**\n * Returns true iff a table query can be added to the download list.\n * @param entity\n * @param entityColumnId\n */\nexport function canTableQueryBeAddedToDownloadList<T extends Table = Table>(\n entity?: T,\n entityColumnId?: string,\n) {\n const viewCannotIncludeFiles =\n // EntityViews without the file bit mask cannot contain files\n (entity && isEntityView(entity) && !hasFilesInView(entity)) ||\n // DatasetCollections cannot contain files\n (entity && isDatasetCollection(entity))\n\n if (viewCannotIncludeFiles) {\n return false\n }\n\n return Boolean(\n entityColumnId ||\n (entity &&\n ((isEntityView(entity) && isFileView(entity)) || isDataset(entity))),\n )\n}\n\n/**\n * Returns true if the queries necessarily return the same result set, i.e. if they have identical parameters other than\n * limit, offset, sort.\n *\n * Note that this does not query the actual tables, so this only captures the semantic equivalence of the queries.\n */\nexport function queryRequestsHaveSameTotalResults(\n request1: Query,\n request2: Query,\n) {\n const clone1 = cloneDeep(request1)\n delete clone1.limit\n delete clone1.offset\n delete clone1.sort\n const clone2 = cloneDeep(request2)\n delete clone2.limit\n delete clone2.offset\n delete clone2.sort\n return isEqualWith(clone1, clone2, (value1, value2) => {\n if (isNil(value1) && isNil(value2)) {\n // Consider all nil (e.g. undefined/null) values equal\n return true\n }\n return isEqual(value1, value2)\n })\n}\n\n/**\n * Remove null/empty values from the query parameters where an undefined value is equivalent.\n *\n * This will ensure a query object is as simple as possible for URL search parameters and also increases the\n * likelihood of a cache hit.\n * @param q\n */\nexport function removeEmptyQueryParams(q: Query) {\n const query = cloneDeep(q)\n\n if (query.limit == null) {\n delete query.limit\n }\n if (query.offset == null || query.offset == 0) {\n delete query.offset\n }\n\n if (query.sort == null || query.sort.length == 0) {\n delete query.sort\n }\n\n if (query.selectedFacets == null || query.selectedFacets.length == 0) {\n delete query.selectedFacets\n }\n\n if (query.additionalFilters == null || query.additionalFilters.length == 0) {\n delete query.additionalFilters\n }\n\n return query\n}\n\n/**\n * Given a FacetColumnResult and a set of ColumnModels, return the ColumnModel that\n * matches the FacetColumnResult.\n * @param facet\n * @param columnModels\n */\nexport function getCorrespondingColumnForFacet(\n facet: FacetColumnResult,\n columnModels: ColumnModel[],\n): ColumnModel | JsonSubColumnModel | undefined {\n let columnModel: ColumnModel | JsonSubColumnModel | undefined =\n columnModels.find(model => model.name === facet.columnName)\n if (facet.jsonPath && columnModel?.jsonSubColumns) {\n columnModel = columnModel.jsonSubColumns.find(\n cm => cm.jsonPath === facet.jsonPath,\n )\n }\n return columnModel\n}\n\n/**\n * Given a set of FacetColumnRequests, return the FacetColumnRequest that matches the given UniqueFacetIdentifier.\n * @param facetDefinition\n * @param selectedFacets\n */\nexport function getCorrespondingSelectedFacet(\n facetDefinition: UniqueFacetIdentifier,\n selectedFacets?: FacetColumnRequest[],\n): FacetColumnRequest | undefined {\n return selectedFacets?.find(selectedFacet =>\n facetObjectMatchesDefinition(facetDefinition, selectedFacet),\n )\n}\n\nexport function facetObjectMatchesDefinition(\n facetDefinition:\n | UniqueFacetIdentifier\n | FacetColumnRequest\n | FacetColumnResult,\n facetObject: UniqueFacetIdentifier | FacetColumnRequest | FacetColumnResult,\n) {\n return isMatch(\n {\n columnName: facetDefinition.columnName,\n jsonPath: facetDefinition.jsonPath,\n },\n { columnName: facetObject.columnName, jsonPath: facetObject.jsonPath },\n )\n}\n\nexport function partitionQueryBundleRequestIntoRowsAndMetadata(\n queryBundleRequest: QueryBundleRequest,\n): {\n rowDataRequest: QueryBundleRequest\n queryMetadataRequest: QueryBundleRequest\n} {\n const rowDataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n // Get just the rows (if they were originally requested)\n partMask: queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS,\n }\n\n const queryMetadataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n // Remove query fields that don't affect the results.\n offset: undefined,\n limit: undefined,\n sort: undefined,\n },\n // Bitwise remove the query result flag from the mask\n partMask: queryBundleRequest.partMask & ~BUNDLE_MASK_QUERY_RESULTS,\n }\n\n return {\n rowDataRequest,\n queryMetadataRequest,\n }\n}\n"],"mappings":";;;;;;AAmCA,IAAa,KAAiB,GAAe,MACvC,KAAQ,OACH,KAGP,GAAQ,eAAe,WAAU,MACxB,EAAG,SAAS,CACpB,KAAK,IAWG,KACX,GACA,MACG;CACH,IAAM,IAAgB,EAAK,YAAY;CACvC,OACE,GAAQ,aAAa,aAAa,QAAQ,WAAU,MAC3C,EAAG,KAAK,YAAY,MAAM,CAClC,KAAK;AAEV;AAOA,SAAgB,EACd,GACA,IAAgC,CAAC,GACvB;CACV,OAAO,EAAc,QAAQ,GAAgB,GAAM,MAC7C,EAAK,eAAe,IACf,CAAC,GAAG,GAAM,CAAK,IAEjB,GACN,CAAC,CAAC;AACP;AAEA,IAAa,KACX,GACA,MAQI,KAAU,QAAQ,KAAiB,QAInC,EAAO,WAAW,KAAK,EAAc,WAAW,IAC3C,KAG+B,EAAO,QAAO,MAElD,CAAC,EAAoB,CAAK,KAC1B,EAAc,MAAK,MAAS,EAAM,SAAS,EAAM,UAAU,CAIxD,EAAgC,SAAS,GAGrC,KAAuB,MAEhC,EAAM,cAAc,iBACpB,EAAM,YAAY,UAAU,KAC5B,EAAM,YAAY,GAAG,SAAS;AAKlC,SAAgB,EACd,GACA,GAC+B;CAC/B,IAAM,IAAmB,GAAc;CACvC,IAAI,KAAoB,GAAM;EAE5B,IAAM,IAA8B,EAAU,CAAI;EAKlD,OADA,EAAS,SAHM,EAAS,QAAQ,QAC9B,MAAQ,EAAK,WAAW,YAAY,MAAM,EAAiB,YAAY,CACzE,GAEO;CACT,OAEE,OAAO;AAEX;AAMA,SAAgB,EACd,GACA,GACS;CACT,IAAM,IACJ,MAAM,QAAQ,EAAM,cAAc,KAClC,EAAM,eAAe,QACnB,MACE,EAAM,WAAW,YAAY,MAC7B,GAAc,YAAY,YAAY,CAC1C,EAAE,SAAS,GACP,IACJ,MAAM,QAAQ,EAAM,iBAAiB,KACrC,EAAM,kBAAkB,QAAO,MAC7B,EAA+B,CAAW,KAC1C,EAAsC,CAAW,IAC7C,EAAY,WAAW,YAAY,MACnC,GAAc,YAAY,YAAY,IACtC,EACN,EAAE,SAAS;CAEb,OAAO,KAAmB;AAC5B;AAOA,SAAgB,EACd,GACA,GACA;CAWA,OARG,KAAU,EAAa,CAAM,KAAK,CAAC,EAAe,CAAM,KAExD,KAAU,EAAoB,CAAM,IAG9B,KAGF,GACL,KACC,MACG,EAAa,CAAM,KAAK,EAAW,CAAM,KAAM,EAAU,CAAM;AAEvE;AAQA,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAS,EAAU,CAAQ;CAGjC,AAFA,OAAO,EAAO,OACd,OAAO,EAAO,QACd,OAAO,EAAO;CACd,IAAM,IAAS,EAAU,CAAQ;CAIjC,OAHA,OAAO,EAAO,OACd,OAAO,EAAO,QACd,OAAO,EAAO,MACP,EAAY,GAAQ,IAAS,GAAQ,MACtC,EAAM,CAAM,KAAK,EAAM,CAAM,IAExB,KAEF,EAAQ,GAAQ,CAAM,CAC9B;AACH;AASA,SAAgB,EAAuB,GAAU;CAC/C,IAAM,IAAQ,EAAU,CAAC;CAqBzB,OAnBI,EAAM,SACR,OAAO,EAAM,QAEX,EAAM,UAAU,QAAQ,EAAM,UAAU,MAC1C,OAAO,EAAM,SAGX,EAAM,QAAQ,QAAQ,EAAM,KAAK,UAAU,MAC7C,OAAO,EAAM,OAGX,EAAM,kBAAkB,QAAQ,EAAM,eAAe,UAAU,MACjE,OAAO,EAAM,iBAGX,EAAM,qBAAqB,QAAQ,EAAM,kBAAkB,UAAU,MACvE,OAAO,EAAM,mBAGR;AACT;AAQA,SAAgB,EACd,GACA,GAC8C;CAC9C,IAAI,IACF,EAAa,MAAK,MAAS,EAAM,SAAS,EAAM,UAAU;CAM5D,OALI,EAAM,YAAY,GAAa,mBACjC,IAAc,EAAY,eAAe,MACvC,MAAM,EAAG,aAAa,EAAM,QAC9B,IAEK;AACT;AAOA,SAAgB,EACd,GACA,GACgC;CAChC,OAAO,GAAgB,MAAK,MAC1B,EAA6B,GAAiB,CAAa,CAC7D;AACF;AAEA,SAAgB,EACd,GAIA,GACA;CACA,OAAO,EACL;EACE,YAAY,EAAgB;EAC5B,UAAU,EAAgB;CAC5B,GACA;EAAE,YAAY,EAAY;EAAY,UAAU,EAAY;CAAS,CACvE;AACF;AAEA,SAAgB,EACd,GAIA;CAoBA,OAAO;EACL,gBAAA;GAnBA,GAAG;GAEH,UAAU,EAAmB,WAAA;EAiB7B;EACA,sBAAA;GAdA,GAAG;GACH,OAAO;IACL,GAAG,EAAmB;IAEtB,QAAQ,KAAA;IACR,OAAO,KAAA;IACP,MAAM,KAAA;GACR;GAEA,UAAU,EAAmB,WAAW;EAKxC;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"queryUtils.js","names":[],"sources":["../../../src/utils/functions/queryUtils.ts"],"sourcesContent":["import {\n isColumnMultiValueFunctionQueryFilter,\n isColumnSingleValueQueryFilter,\n LockedColumn,\n UniqueFacetIdentifier,\n} from '@/utils/types'\nimport {\n ColumnModel,\n ColumnTypeEnum,\n FacetColumnRequest,\n FacetColumnResult,\n JsonSubColumnModel,\n Query,\n QueryBundleRequest,\n QueryResultBundle,\n SelectColumn,\n Table,\n} from '@sage-bionetworks/synapse-types'\nimport { cloneDeep, isEqual, isEqualWith, isMatch, isNil } from 'lodash-es'\nimport * as SynapseConstants from '../SynapseConstants'\nimport { BUNDLE_MASK_QUERY_RESULTS } from '../SynapseConstants'\nimport {\n hasFilesInView,\n isDataset,\n isDatasetCollection,\n isEntityView,\n isFileView,\n} from './EntityTypeUtils'\nimport { getEnumerationFacet } from './enumerationFacet'\n\n/**\n * Retrieve the index of a column using the column name\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getFieldIndex = (name?: string, result?: QueryResultBundle) => {\n if (name == undefined) {\n return -1\n }\n return (\n result?.selectColumns?.findIndex(el => {\n return el.name === name\n }) ?? -1\n )\n}\n\n/**\n * Retrieve the index of a column using the header column name found inthe query results.\n * Ignores case.\n * @param name the column name\n * @param result the QueryResultBundle containing the columns\n * @returns The index of the column, or -1 if the column doesn't exist in the result\n */\nexport const getHeaderIndex = (\n name: string,\n result: QueryResultBundle | undefined,\n) => {\n const nameLowercase = name.toLowerCase()\n return (\n result?.queryResult?.queryResults.headers.findIndex(el => {\n return el.name.toLowerCase() === nameLowercase\n }) ?? -1\n )\n}\n\n/**\n * Returns the indices of the selectColumns with the specified type\n * @param columnType\n * @param selectColumns\n */\nexport function getTypeIndices(\n columnType: ColumnTypeEnum,\n selectColumns: SelectColumn[] = [],\n): number[] {\n return selectColumns.reduce((prev: number[], curr, index) => {\n if (curr.columnType === columnType) {\n return [...prev, index]\n }\n return prev\n }, [])\n}\n\nexport const hasFacetedSelectColumn = (\n facets?: FacetColumnResult[],\n selectColumns?: SelectColumn[],\n): boolean => {\n /**\n * Facets are available iff\n * * there is at least one facet AND\n * * each facet has a corresponding columnModel in the selectColumns AND\n * * each facets has a valid value other than the null/not set value\n */\n if (facets == null || selectColumns == null) {\n return false\n }\n\n if (facets.length === 0 || selectColumns.length === 0) {\n return false\n }\n\n const facetsWithValuesAndColumnModels = facets.filter(facet => {\n return (\n !isSingleNotSetValue(facet) &&\n selectColumns.find(model => model.name === facet.columnName)\n )\n })\n\n return facetsWithValuesAndColumnModels.length > 0\n}\n\nexport const isSingleNotSetValue = (facet: FacetColumnResult): boolean => {\n const facetValues = getEnumerationFacet(facet)?.facetValues\n return (\n facetValues?.length == 1 &&\n facetValues[0].value == SynapseConstants.VALUE_NOT_SET\n )\n}\n\n// TODO Instead of removing the facet from the data, the facet renderers should just be aware of what to hide\nexport function removeLockedColumnFromFacetData(\n data?: QueryResultBundle,\n lockedColumn?: LockedColumn,\n): QueryResultBundle | undefined {\n const lockedColumnName = lockedColumn?.columnName\n if (lockedColumnName && data) {\n // for details page, return data without the \"locked\" facet\n const dataCopy: QueryResultBundle = cloneDeep(data)\n const facets = dataCopy.facets?.filter(\n item => item.columnName.toLowerCase() !== lockedColumnName.toLowerCase(),\n )\n dataCopy.facets = facets\n return dataCopy\n } else {\n // for other pages, just return the data\n return data\n }\n}\n\n/**\n * Returns true iff the query has filters applied that can be reset.\n * This includes facet filters and additional filters that are not applied to a locked column.\n */\nexport function hasResettableFilters(\n query: Query,\n lockedColumn?: LockedColumn,\n): boolean {\n const hasFacetFilters =\n Array.isArray(query.selectedFacets) &&\n query.selectedFacets.some(\n facet =>\n facet.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase(),\n )\n const hasAdditionalFilters =\n Array.isArray(query.additionalFilters) &&\n query.additionalFilters.some(queryFilter =>\n isColumnSingleValueQueryFilter(queryFilter) ||\n isColumnMultiValueFunctionQueryFilter(queryFilter)\n ? queryFilter.columnName.toLowerCase() !==\n lockedColumn?.columnName?.toLowerCase()\n : true,\n )\n\n return hasFacetFilters || hasAdditionalFilters\n}\n\n/**\n * Returns true iff a table query can be added to the download list.\n * @param entity\n * @param entityColumnId\n */\nexport function canTableQueryBeAddedToDownloadList<T extends Table = Table>(\n entity?: T,\n entityColumnId?: string,\n) {\n const viewCannotIncludeFiles =\n // EntityViews without the file bit mask cannot contain files\n (entity && isEntityView(entity) && !hasFilesInView(entity)) ||\n // DatasetCollections cannot contain files\n (entity && isDatasetCollection(entity))\n\n if (viewCannotIncludeFiles) {\n return false\n }\n\n return Boolean(\n entityColumnId ||\n (entity &&\n ((isEntityView(entity) && isFileView(entity)) || isDataset(entity))),\n )\n}\n\n/**\n * Returns true if the queries necessarily return the same result set, i.e. if they have identical parameters other than\n * limit, offset, sort.\n *\n * Note that this does not query the actual tables, so this only captures the semantic equivalence of the queries.\n */\nexport function queryRequestsHaveSameTotalResults(\n request1: Query,\n request2: Query,\n) {\n const clone1 = cloneDeep(request1)\n delete clone1.limit\n delete clone1.offset\n delete clone1.sort\n const clone2 = cloneDeep(request2)\n delete clone2.limit\n delete clone2.offset\n delete clone2.sort\n return isEqualWith(clone1, clone2, (value1, value2) => {\n if (isNil(value1) && isNil(value2)) {\n // Consider all nil (e.g. undefined/null) values equal\n return true\n }\n return isEqual(value1, value2)\n })\n}\n\n/**\n * Remove null/empty values from the query parameters where an undefined value is equivalent.\n *\n * This will ensure a query object is as simple as possible for URL search parameters and also increases the\n * likelihood of a cache hit.\n * @param q\n */\nexport function removeEmptyQueryParams(q: Query) {\n const query = cloneDeep(q)\n\n if (query.limit == null) {\n delete query.limit\n }\n if (query.offset == null || query.offset == 0) {\n delete query.offset\n }\n\n if (query.sort == null || query.sort.length == 0) {\n delete query.sort\n }\n\n if (query.selectedFacets == null || query.selectedFacets.length == 0) {\n delete query.selectedFacets\n }\n\n if (query.additionalFilters == null || query.additionalFilters.length == 0) {\n delete query.additionalFilters\n }\n\n return query\n}\n\n/**\n * Given a FacetColumnResult and a set of ColumnModels, return the ColumnModel that\n * matches the FacetColumnResult.\n * @param facet\n * @param columnModels\n */\nexport function getCorrespondingColumnForFacet(\n facet: UniqueFacetIdentifier,\n columnModels: ColumnModel[],\n): ColumnModel | JsonSubColumnModel | undefined {\n let columnModel: ColumnModel | JsonSubColumnModel | undefined =\n columnModels.find(model => model.name === facet.columnName)\n if (facet.jsonPath && columnModel?.jsonSubColumns) {\n columnModel = columnModel.jsonSubColumns.find(\n cm => cm.jsonPath === facet.jsonPath,\n )\n }\n return columnModel\n}\n\n/**\n * Given a set of FacetColumnRequests, return the FacetColumnRequest that matches the given UniqueFacetIdentifier.\n * @param facetDefinition\n * @param selectedFacets\n */\nexport function getCorrespondingSelectedFacet(\n facetDefinition: UniqueFacetIdentifier,\n selectedFacets?: FacetColumnRequest[],\n): FacetColumnRequest | undefined {\n return selectedFacets?.find(selectedFacet =>\n facetObjectMatchesDefinition(facetDefinition, selectedFacet),\n )\n}\n\nexport function facetObjectMatchesDefinition(\n facetDefinition:\n | UniqueFacetIdentifier\n | FacetColumnRequest\n | FacetColumnResult,\n facetObject: UniqueFacetIdentifier | FacetColumnRequest | FacetColumnResult,\n) {\n return isMatch(\n {\n columnName: facetDefinition.columnName,\n jsonPath: facetDefinition.jsonPath,\n },\n { columnName: facetObject.columnName, jsonPath: facetObject.jsonPath },\n )\n}\n\nexport function partitionQueryBundleRequestIntoRowsAndMetadata(\n queryBundleRequest: QueryBundleRequest,\n): {\n rowDataRequest: QueryBundleRequest\n queryMetadataRequest: QueryBundleRequest\n} {\n const rowDataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n // Get just the rows (if they were originally requested)\n partMask: queryBundleRequest.partMask & BUNDLE_MASK_QUERY_RESULTS,\n }\n\n const queryMetadataRequest: QueryBundleRequest = {\n ...queryBundleRequest,\n query: {\n ...queryBundleRequest.query,\n // Remove query fields that don't affect the results.\n offset: undefined,\n limit: undefined,\n sort: undefined,\n },\n // Bitwise remove the query result flag from the mask\n partMask: queryBundleRequest.partMask & ~BUNDLE_MASK_QUERY_RESULTS,\n }\n\n return {\n rowDataRequest,\n queryMetadataRequest,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testDownloadSpeed.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"testDownloadSpeed.d.ts","sourceRoot":"","sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,KAClB,OAAO,CAAC,MAAM,CAqDhB,CAAA"}
|
|
@@ -1,32 +1,23 @@
|
|
|
1
1
|
import { getEntity as e, getFileHandleContent as t, getFiles as n } from "../../synapse-client/SynapseClient.js";
|
|
2
2
|
import { FileHandleAssociateType as r } from "@sage-bionetworks/synapse-types";
|
|
3
3
|
//#region src/utils/functions/testDownloadSpeed.ts
|
|
4
|
-
var i = 200, a = "ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME", o = "ESTIMATED_DOWNLOAD_SPEED", s = "syn12600511", c = (c) =>
|
|
5
|
-
let
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}, c).then((e) => {
|
|
22
|
-
let n = e.requestedFiles[0].preSignedURL, r = e.requestedFiles[0].fileHandle, s = (/* @__PURE__ */ new Date()).getTime();
|
|
23
|
-
return t(r, n).then(() => {
|
|
24
|
-
let e = r.contentSize / (((/* @__PURE__ */ new Date()).getTime() - s - i) / 1e3), t = (/* @__PURE__ */ new Date()).getTime();
|
|
25
|
-
localStorage.setItem(a, (t + 1e3 * 60 * 5).toString()), localStorage.setItem(o, e.toString()), l(e);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
}).catch((e) => u(e));
|
|
29
|
-
});
|
|
4
|
+
var i = 200, a = "ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME", o = "ESTIMATED_DOWNLOAD_SPEED", s = "syn12600511", c = async (c) => {
|
|
5
|
+
let l = localStorage.getItem(a), u = localStorage.getItem(o);
|
|
6
|
+
if (l && u && Date.now() < Number(l)) return Number(u);
|
|
7
|
+
let d = await e(c, s), f = await n({
|
|
8
|
+
includeFileHandles: !0,
|
|
9
|
+
includePreSignedURLs: !0,
|
|
10
|
+
includePreviewPreSignedURLs: !1,
|
|
11
|
+
requestedFiles: [{
|
|
12
|
+
associateObjectId: d.id,
|
|
13
|
+
associateObjectType: r.FileEntity,
|
|
14
|
+
fileHandleId: d.dataFileHandleId
|
|
15
|
+
}]
|
|
16
|
+
}, c), p = f.requestedFiles[0].preSignedURL, m = f.requestedFiles[0].fileHandle, h = Date.now();
|
|
17
|
+
await t(m, p);
|
|
18
|
+
let g = m.contentSize / ((Date.now() - h - i) / 1e3), _ = Date.now();
|
|
19
|
+
return localStorage.setItem(a, (_ + 1e3 * 60 * 5).toString()), localStorage.setItem(o, g.toString()), g;
|
|
20
|
+
};
|
|
30
21
|
//#endregion
|
|
31
22
|
export { c as testDownloadSpeed };
|
|
32
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testDownloadSpeed.js","names":[],"sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"sourcesContent":["import {\n getEntity,\n getFileHandleContent,\n getFiles,\n} from '@/synapse-client/SynapseClient'\nimport {\n BatchFileRequest,\n BatchFileResult,\n Entity,\n FileEntity,\n FileHandle,\n FileHandleAssociateType,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nconst ESTIMATED_CORS_TIME_MS: number = 200\nconst ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY: string =\n 'ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME'\nconst ESTIMATED_DOWNLOAD_SPEED_KEY: string = 'ESTIMATED_DOWNLOAD_SPEED'\nconst TEST_FILE_ENTITY_ID: string = 'syn12600511'\n/**\n * Return the estimated download speed (bytes/second). Result is cached.\n * Result is crude estimate since it's a single test file (small sample, only ~2MB), but is a valid test (since it's a Synapse file on s3).\n * The intent is to let the user know if the package download will take many hours to download.\n * @param accessToken\n */\nexport const testDownloadSpeed = (accessToken: string): Promise<number> => {\n
|
|
1
|
+
{"version":3,"file":"testDownloadSpeed.js","names":[],"sources":["../../../src/utils/functions/testDownloadSpeed.ts"],"sourcesContent":["import {\n getEntity,\n getFileHandleContent,\n getFiles,\n} from '@/synapse-client/SynapseClient'\nimport {\n BatchFileRequest,\n BatchFileResult,\n Entity,\n FileEntity,\n FileHandle,\n FileHandleAssociateType,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nconst ESTIMATED_CORS_TIME_MS: number = 200\nconst ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY: string =\n 'ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME'\nconst ESTIMATED_DOWNLOAD_SPEED_KEY: string = 'ESTIMATED_DOWNLOAD_SPEED'\nconst TEST_FILE_ENTITY_ID: string = 'syn12600511'\n/**\n * Return the estimated download speed (bytes/second). Result is cached.\n * Result is crude estimate since it's a single test file (small sample, only ~2MB), but is a valid test (since it's a Synapse file on s3).\n * The intent is to let the user know if the package download will take many hours to download.\n * @param accessToken\n */\nexport const testDownloadSpeed = async (\n accessToken: string,\n): Promise<number> => {\n // check cache\n const cachedSpeedExpireTime = localStorage.getItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n )\n const cachedSpeed = localStorage.getItem(ESTIMATED_DOWNLOAD_SPEED_KEY)\n if (cachedSpeedExpireTime && cachedSpeed) {\n // is this value expired?\n const now: number = Date.now()\n if (now < Number(cachedSpeedExpireTime)) {\n return Number(cachedSpeed)\n }\n }\n\n /**\n * 1. Get the test File Entity\n * 2. Get the file handle and presigned URL associated to the latest version of the test File Entity\n * 3. Start the timer and fetch the file content using that presigned URL\n */\n const entity: Entity = await getEntity(accessToken, TEST_FILE_ENTITY_ID)\n const fileEntity: FileEntity = entity as FileEntity\n const fileHandleAssociationList: FileHandleAssociation[] = [\n {\n associateObjectId: fileEntity.id!,\n associateObjectType: FileHandleAssociateType.FileEntity,\n fileHandleId: fileEntity.dataFileHandleId,\n },\n ]\n const request: BatchFileRequest = {\n includeFileHandles: true,\n includePreSignedURLs: true,\n includePreviewPreSignedURLs: false,\n requestedFiles: fileHandleAssociationList,\n }\n const data: BatchFileResult = await getFiles(request, accessToken)\n const presignedUrl: string = data.requestedFiles[0].preSignedURL!\n // we know this file exists\n const fileHandle: FileHandle = data.requestedFiles[0].fileHandle!\n // start test!\n const startMs = Date.now()\n await getFileHandleContent(fileHandle, presignedUrl)\n // bytes/second\n const result =\n fileHandle.contentSize /\n ((Date.now() - startMs - ESTIMATED_CORS_TIME_MS) / 1000)\n // save result in cache (for 5 minutes)\n const now: number = Date.now()\n localStorage.setItem(\n ESTIMATED_DOWNLOAD_SPEED_EXPIRE_TIME_KEY,\n (now + 1000 * 60 * 5).toString(),\n )\n localStorage.setItem(ESTIMATED_DOWNLOAD_SPEED_KEY, result.toString())\n return result\n}\n"],"mappings":";;;AAeA,IAAM,IAAiC,KACjC,IACJ,wCACI,IAAuC,4BACvC,IAA8B,eAOvB,IAAoB,OAC/B,MACoB;CAEpB,IAAM,IAAwB,aAAa,QACzC,CACF,GACM,IAAc,aAAa,QAAQ,CAA4B;CACrE,IAAI,KAAyB,KAEP,KAAK,IACrB,IAAM,OAAO,CAAqB,GACpC,OAAO,OAAO,CAAW;CAU7B,IAAM,IAAyB,MADF,EAAU,GAAa,CAAmB,GAejE,IAAwB,MAAM,EAAS;EAL3C,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;EAC7B,gBAAgB,CAVhB;GACE,mBAAmB,EAAW;GAC9B,qBAAqB,EAAwB;GAC7C,cAAc,EAAW;EAC3B,CAMgB;CAE2B,GAAS,CAAW,GAC3D,IAAuB,EAAK,eAAe,GAAG,cAE9C,IAAyB,EAAK,eAAe,GAAG,YAEhD,IAAU,KAAK,IAAI;CACzB,MAAM,EAAqB,GAAY,CAAY;CAEnD,IAAM,IACJ,EAAW,gBACT,KAAK,IAAI,IAAI,IAAU,KAA0B,MAE/C,IAAc,KAAK,IAAI;CAM7B,OALA,aAAa,QACX,IACC,IAAM,MAAO,KAAK,GAAG,SAAS,CACjC,GACA,aAAa,QAAQ,GAA8B,EAAO,SAAS,CAAC,GAC7D;AACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/utils/functions/unCamelCase.ts
|
|
2
|
-
var e = (e) => e.
|
|
2
|
+
var e = (e) => e.replaceAll(/([a-z])([A-Z])/g, "$1 $2").replace(/\b([A-Z]+)([A-Z])([a-z])/, "$1 $2$3").replace(/^./, (e) => e.toUpperCase());
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as unCamelCase };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unCamelCase.js","names":[],"sources":["../../../src/utils/functions/unCamelCase.ts"],"sourcesContent":["export const unCamelCase = (str: string): string => {\n // https://stackoverflow.com/questions/4149276/how-to-convert-camelcase-to-camel-case\n return (\n str\n // insert a space between lower & upper\n .
|
|
1
|
+
{"version":3,"file":"unCamelCase.js","names":[],"sources":["../../../src/utils/functions/unCamelCase.ts"],"sourcesContent":["export const unCamelCase = (str: string): string => {\n // https://stackoverflow.com/questions/4149276/how-to-convert-camelcase-to-camel-case\n return (\n str\n // insert a space between lower & upper\n .replaceAll(/([a-z])([A-Z])/g, '$1 $2')\n // space before last upper in a sequence followed by lower\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\n // uppercase the first character\n .replace(/^./, (str: string) => {\n return str.toUpperCase()\n })\n )\n}\n"],"mappings":";AAAA,IAAa,KAAe,MAGxB,EAEG,WAAW,mBAAmB,OAAO,EAErC,QAAQ,4BAA4B,SAAS,EAE7C,QAAQ,OAAO,MACP,EAAI,YAAY,CACxB"}
|
|
@@ -36,21 +36,21 @@ var m = {
|
|
|
36
36
|
submissionInstructionsMessage: "Unknown",
|
|
37
37
|
submissionReceiptMessage: "Unknown"
|
|
38
38
|
}, _ = async (e, t) => {
|
|
39
|
-
let n = await i(e, t), r = e.filter((e) => n.results.map((e) => e.id).
|
|
39
|
+
let n = await i(e, t), r = e.filter((e) => !n.results.map((e) => e.id).includes(e.targetId)).map((e) => ({
|
|
40
40
|
...h,
|
|
41
41
|
id: e.targetId,
|
|
42
42
|
name: `${e.targetId}`
|
|
43
43
|
}));
|
|
44
44
|
return [...n.results, ...r];
|
|
45
45
|
}, v = async (e, t) => {
|
|
46
|
-
let n = (await o(e, t)).children, r = e.filter((e) => n.map((e) => e.ownerId).
|
|
46
|
+
let n = (await o(e, t)).children, r = e.filter((e) => !n.map((e) => e.ownerId).includes(e)).map((e) => ({
|
|
47
47
|
...m,
|
|
48
48
|
ownerId: e,
|
|
49
49
|
name: `Unknown User (${e})`
|
|
50
50
|
}));
|
|
51
51
|
return [...n, ...r];
|
|
52
52
|
}, y = async (e, t) => {
|
|
53
|
-
let n = await a({ evaluationIds: e }, t), r = e.filter((e) => n.results.map((e) => e.id).
|
|
53
|
+
let n = await a({ evaluationIds: e }, t), r = e.filter((e) => !n.results.map((e) => e.id).includes(e)).map((e) => ({
|
|
54
54
|
...g,
|
|
55
55
|
id: e,
|
|
56
56
|
name: e
|
|
@@ -71,8 +71,8 @@ function b(i) {
|
|
|
71
71
|
if (!e.length) return;
|
|
72
72
|
let t = sessionStorage.getItem(x);
|
|
73
73
|
try {
|
|
74
|
-
let n = t ? JSON.parse(t) : [], r = n.map((e) => e[b]);
|
|
75
|
-
for (let t of e) r.
|
|
74
|
+
let n = t ? JSON.parse(t) : [], r = new Set(n.map((e) => e[b]));
|
|
75
|
+
for (let t of e) r.has(t[b]) || n.push(t);
|
|
76
76
|
sessionStorage.setItem(x, JSON.stringify(n));
|
|
77
77
|
} catch {
|
|
78
78
|
sessionStorage.setItem(x, JSON.stringify(e));
|