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":"BarPlot.js","names":[],"sources":["../../../src/components/Plot/BarPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { BarPlotColors, GraphItem, PlotStyle } from './types'\n\nexport type BarPlotProps = {\n isTop: boolean\n style?: CSSProperties\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label: string\n xMax: number\n colors?: BarPlotColors\n plotStyle?: PlotStyle\n onClick?: (event: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isTop: boolean\n maxValue: number\n isLegend?: boolean\n backgroundColor?: string\n}\n\nfunction getBarPlotDataPoints(\n data: any[],\n filter?: string,\n colors?: BarPlotColors,\n): any[] {\n if (filter) {\n data = data.filter(item => item.y === filter)\n }\n const groups = uniq(data.map(item => item['group'])).
|
|
1
|
+
{"version":3,"file":"BarPlot.js","names":[],"sources":["../../../src/components/Plot/BarPlot.tsx"],"sourcesContent":["import cloneDeep from 'lodash-es/cloneDeep'\nimport noop from 'lodash-es/noop'\nimport uniq from 'lodash-es/uniq'\nimport Plotly from 'plotly.js-basic-dist'\nimport { CSSProperties } from 'react'\nimport Plot from './Plot'\nimport { BarPlotColors, GraphItem, PlotStyle } from './types'\n\nexport type BarPlotProps = {\n isTop: boolean\n style?: CSSProperties\n plotData: GraphItem[]\n layoutConfig: Partial<Plotly.Layout>\n optionsConfig: Partial<Plotly.Config>\n label: string\n xMax: number\n colors?: BarPlotColors\n plotStyle?: PlotStyle\n onClick?: (event: Readonly<Plotly.PlotMouseEvent>) => void\n}\n\ntype LayoutOptions = {\n isTop: boolean\n maxValue: number\n isLegend?: boolean\n backgroundColor?: string\n}\n\nfunction getBarPlotDataPoints(\n data: any[],\n filter?: string,\n colors?: BarPlotColors,\n): any[] {\n if (filter) {\n data = data.filter(item => item.y === filter)\n }\n const groups = uniq(data.map(item => item['group'] as string)).toSorted()\n const result: any[] = []\n const defaultColors = [`(28,118,175,1)`, `rgba(91,176,181,1)`]\n\n groups.forEach((group, i) => {\n const items = data.filter(item => item.group === group)\n result.push({\n x: items.map(item => item.x),\n y: items.map(item => item.y),\n name: group,\n orientation: 'h',\n marker: {\n color: colors ? colors[group] : defaultColors[i],\n width: 1,\n },\n text: [group],\n hovertemplate: `%{x} %{text}<extra></extra>`,\n textposition: 'none',\n type: 'bar',\n })\n })\n\n return result\n}\n\nfunction getLayout(\n layoutConfig: Partial<Plotly.Layout>,\n { isTop, maxValue, backgroundColor }: LayoutOptions,\n): Partial<Plotly.Layout> {\n const layout = cloneDeep(layoutConfig)\n layout.xaxis = {\n visible: false,\n range: [0, maxValue],\n }\n if (backgroundColor) {\n layout.plot_bgcolor = backgroundColor\n layout.paper_bgcolor = backgroundColor\n }\n if (!isTop) {\n layout.hoverlabel = {\n font: {\n size: 10,\n },\n }\n }\n layout.showlegend = false\n layout.height = isTop ? 40 : 20\n return layout\n}\n\nconst DEFAULT_BARPLOT_PLOTSTYLE: PlotStyle = { backgroundColor: 'transparent' }\nconst DEFAULT_BARPLOT_STYLE: CSSProperties = {\n width: '100%',\n height: '100%',\n}\n\nfunction BarPlot({\n plotData,\n optionsConfig,\n isTop,\n layoutConfig,\n label,\n xMax,\n colors,\n plotStyle = DEFAULT_BARPLOT_PLOTSTYLE,\n style = DEFAULT_BARPLOT_STYLE,\n onClick,\n}: BarPlotProps) {\n return (\n <Plot\n style={style}\n layout={getLayout(layoutConfig, {\n isTop,\n maxValue: xMax,\n backgroundColor: plotStyle.backgroundColor,\n })}\n config={optionsConfig}\n data={getBarPlotDataPoints(plotData, label, colors)}\n onClick={e => (onClick ? onClick(e) : noop)}\n />\n )\n}\n\nexport default BarPlot\n"],"mappings":";;;;;;AA4BA,SAAS,EACP,GACA,GACA,GACO;CACP,AAAI,MACF,IAAO,EAAK,QAAO,MAAQ,EAAK,MAAM,CAAM;CAE9C,IAAM,IAAS,EAAK,EAAK,KAAI,MAAQ,EAAK,KAAkB,CAAC,EAAE,SAAS,GAClE,IAAgB,CAAC,GACjB,IAAgB,CAAC,kBAAkB,oBAAoB;CAoB7D,OAlBA,EAAO,SAAS,GAAO,MAAM;EAC3B,IAAM,IAAQ,EAAK,QAAO,MAAQ,EAAK,UAAU,CAAK;EACtD,EAAO,KAAK;GACV,GAAG,EAAM,KAAI,MAAQ,EAAK,CAAC;GAC3B,GAAG,EAAM,KAAI,MAAQ,EAAK,CAAC;GAC3B,MAAM;GACN,aAAa;GACb,QAAQ;IACN,OAAO,IAAS,EAAO,KAAS,EAAc;IAC9C,OAAO;GACT;GACA,MAAM,CAAC,CAAK;GACZ,eAAe;GACf,cAAc;GACd,MAAM;EACR,CAAC;CACH,CAAC,GAEM;AACT;AAEA,SAAS,EACP,GACA,EAAE,UAAO,aAAU,sBACK;CACxB,IAAM,IAAS,EAAU,CAAY;CAkBrC,OAjBA,EAAO,QAAQ;EACb,SAAS;EACT,OAAO,CAAC,GAAG,CAAQ;CACrB,GACI,MACF,EAAO,eAAe,GACtB,EAAO,gBAAgB,IAEpB,MACH,EAAO,aAAa,EAClB,MAAM,EACJ,MAAM,GACR,EACF,IAEF,EAAO,aAAa,IACpB,EAAO,SAAS,IAAQ,KAAK,IACtB;AACT;AAEA,IAAM,IAAuC,EAAE,iBAAiB,cAAc,GACxE,IAAuC;CAC3C,OAAO;CACP,QAAQ;AACV;AAEA,SAAS,EAAQ,EACf,aACA,kBACA,UACA,iBACA,UACA,SACA,WACA,eAAY,GACZ,WAAQ,GACR,cACe;CACf,OACE,kBAAC,GAAD;EACS;EACP,QAAQ,EAAU,GAAc;GAC9B;GACA,UAAU;GACV,iBAAiB,EAAU;EAC7B,CAAC;EACD,QAAQ;EACR,MAAM,EAAqB,GAAU,GAAO,CAAM;EAClD,UAAS,MAAM,IAAU,EAAQ,CAAC,IAAI;CACvC,CAAA;AAEL"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnumerationFacet } from '@/utils/functions/enumerationFacet';
|
|
2
|
+
import { QueryResultBundle } from '@sage-bionetworks/synapse-types';
|
|
2
3
|
export type PlotPanelHeaderProps = {
|
|
3
4
|
data?: QueryResultBundle;
|
|
4
5
|
isLoading?: boolean;
|
|
5
6
|
title: string;
|
|
6
|
-
facetToPlot?:
|
|
7
|
+
facetToPlot?: EnumerationFacet;
|
|
7
8
|
onHide: () => void;
|
|
8
9
|
setShowModal?: (show: boolean) => void;
|
|
9
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotPanelHeader.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PlotPanelHeader.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAgClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotPanelHeader.js","names":[],"sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"sourcesContent":["import {\
|
|
1
|
+
{"version":3,"file":"PlotPanelHeader.js","names":[],"sources":["../../../src/components/Plot/PlotPanelHeader.tsx"],"sourcesContent":["import { EnumerationFacet } from '@/utils/functions/enumerationFacet'\nimport { QueryResultBundle } from '@sage-bionetworks/synapse-types'\nimport { SkeletonInlineBlock } from '../Skeleton/SkeletonInlineBlock'\nimport { EnumFacetFilter } from '../widgets/query-filter/EnumFacetFilter/EnumFacetFilter'\nimport { IconSvgButton } from '../IconSvgButton'\n\nexport type PlotPanelHeaderProps = {\n data?: QueryResultBundle\n isLoading?: boolean\n title: string\n facetToPlot?: EnumerationFacet\n onHide: () => void\n setShowModal?: (show: boolean) => void\n}\n\nexport default function PlotPanelHeader(props: PlotPanelHeaderProps) {\n const { data, isLoading, title, facetToPlot, onHide, setShowModal } = props\n return (\n <div className=\"FacetNavPanel__title\">\n {!data && isLoading ? (\n <SkeletonInlineBlock width={100} />\n ) : (\n <span className=\"FacetNavPanel__title__name\">{title}</span>\n )}\n <div role=\"toolbar\" className=\"FacetNavPanel__title__tools\">\n {facetToPlot && (\n <EnumFacetFilter facet={facetToPlot} containerAs=\"Dropdown\" />\n )}\n {setShowModal && (\n <IconSvgButton\n tooltipText=\"Expand to large graph\"\n tooltipPlacement=\"bottom\"\n onClick={() => setShowModal(true)}\n size=\"small\"\n icon=\"openInFull\"\n />\n )}\n <IconSvgButton\n tooltipText=\"Hide graph under Show More\"\n tooltipPlacement=\"bottom\"\n onClick={() => onHide()}\n size=\"small\"\n icon=\"close\"\n />\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;AAeA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EAAE,SAAM,cAAW,UAAO,gBAAa,WAAQ,oBAAiB;CACtE,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,CAAC,KAAQ,IACR,kBAAC,GAAD,EAAqB,OAAO,IAAM,CAAA,IAElC,kBAAC,QAAD;GAAM,WAAU;aAA8B;EAAY,CAAA,GAE5D,kBAAC,OAAD;GAAK,MAAK;GAAU,WAAU;aAA9B;IACG,KACC,kBAAC,GAAD;KAAiB,OAAO;KAAa,aAAY;IAAY,CAAA;IAE9D,KACC,kBAAC,GAAD;KACE,aAAY;KACZ,kBAAiB;KACjB,eAAe,EAAa,EAAI;KAChC,MAAK;KACL,MAAK;IACN,CAAA;IAEH,kBAAC,GAAD;KACE,aAAY;KACZ,kBAAiB;KACjB,eAAe,EAAO;KACtB,MAAK;KACL,MAAK;IACN,CAAA;GACE;IACF;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalCard.d.ts","sourceRoot":"","sources":["../../../src/components/PortalList/PortalCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"PortalCard.d.ts","sourceRoot":"","sources":["../../../src/components/PortalList/PortalCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAuBzD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,SAAS,CAyJvE;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -8,8 +8,9 @@ import a from "../PortalAclEditor/PortalAclEditorModal.js";
|
|
|
8
8
|
import { useState as o } from "react";
|
|
9
9
|
import { Box as s, Card as c, CardContent as l, IconButton as u, Link as d, Typography as f } from "@mui/material";
|
|
10
10
|
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
11
|
+
import g from "dayjs";
|
|
12
|
+
import _ from "@mui/icons-material/Settings";
|
|
13
|
+
import v from "@mui/icons-material/Delete";
|
|
13
14
|
//#region src/components/PortalList/PortalCard.tsx
|
|
14
15
|
var y = "1";
|
|
15
16
|
function b({ portal: b }) {
|
|
@@ -46,7 +47,7 @@ function b({ portal: b }) {
|
|
|
46
47
|
"aria-label": "Delete portal",
|
|
47
48
|
title: "Delete portal",
|
|
48
49
|
color: "error",
|
|
49
|
-
children: /* @__PURE__ */ m(
|
|
50
|
+
children: /* @__PURE__ */ m(v, { fontSize: "small" })
|
|
50
51
|
})]
|
|
51
52
|
})]
|
|
52
53
|
}), C && /* @__PURE__ */ m(d, {
|
|
@@ -85,7 +86,7 @@ function b({ portal: b }) {
|
|
|
85
86
|
T && /* @__PURE__ */ h(f, {
|
|
86
87
|
variant: "caption",
|
|
87
88
|
color: "text.secondary",
|
|
88
|
-
children: ["on ",
|
|
89
|
+
children: ["on ", g(T).format("MMMM D, YYYY")]
|
|
89
90
|
})
|
|
90
91
|
]
|
|
91
92
|
}),
|
|
@@ -106,7 +107,7 @@ function b({ portal: b }) {
|
|
|
106
107
|
D && /* @__PURE__ */ h(f, {
|
|
107
108
|
variant: "caption",
|
|
108
109
|
color: "text.secondary",
|
|
109
|
-
children: ["on ",
|
|
110
|
+
children: ["on ", g(D).format("MMMM D, YYYY")]
|
|
110
111
|
})
|
|
111
112
|
]
|
|
112
113
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalCard.js","names":[],"sources":["../../../src/components/PortalList/PortalCard.tsx"],"sourcesContent":["import { Portal } from '@sage-bionetworks/synapse-client'\nimport {\n Card,\n CardContent,\n Typography,\n Box,\n Link as MuiLink,\n IconButton,\n} from '@mui/material'\nimport styles from './PortalCard.module.scss'\nimport UserCard from '../UserCard/UserCard'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport PortalAclEditorModal from '../PortalAclEditor/PortalAclEditorModal'\nimport
|
|
1
|
+
{"version":3,"file":"PortalCard.js","names":[],"sources":["../../../src/components/PortalList/PortalCard.tsx"],"sourcesContent":["import { Portal } from '@sage-bionetworks/synapse-client'\nimport {\n Card,\n CardContent,\n Typography,\n Box,\n Link as MuiLink,\n IconButton,\n} from '@mui/material'\nimport styles from './PortalCard.module.scss'\nimport UserCard from '../UserCard/UserCard'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport PortalAclEditorModal from '../PortalAclEditor/PortalAclEditorModal'\nimport Settings from '@mui/icons-material/Settings'\nimport Delete from '@mui/icons-material/Delete'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { useDeletePortal } from '@/synapse-queries/portal/usePortal'\nimport { displayToast } from '../ToastMessage'\n\n// Synapse itself is portal ID 1 and should not have ACL management\nconst SYNAPSE_PORTAL_ID = '1'\n\nexport type PortalCardProps = {\n portal: Portal\n}\n\nexport function PortalCard({ portal }: PortalCardProps): React.ReactNode {\n const { id, name, url, createdBy, createdOn, modifiedBy, modifiedOn } = portal\n const [isAclEditorOpen, setIsAclEditorOpen] = useState(false)\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)\n const showAclEditor = id && id !== SYNAPSE_PORTAL_ID\n const showDeleteButton = id && id !== SYNAPSE_PORTAL_ID\n\n const { mutate: deletePortal } = useDeletePortal({\n onSuccess: () => {\n displayToast(`Portal \"${name}\" was successfully deleted`, 'success')\n setIsDeleteDialogOpen(false)\n },\n onError: error => {\n displayToast(`Failed to delete portal: ${error.reason}`, 'danger')\n },\n })\n\n return (\n <>\n <Card className={styles.portalCard}>\n <CardContent>\n <Box className={styles.header}>\n <Box className={styles.titleRow}>\n <Typography variant=\"h6\" component=\"h3\">\n {name}\n </Typography>\n <Box className={styles.actions}>\n {showAclEditor && (\n <IconButton\n size=\"small\"\n onClick={() => setIsAclEditorOpen(true)}\n aria-label=\"Manage portal permissions\"\n title=\"Manage portal permissions\"\n >\n <Settings fontSize=\"small\" />\n </IconButton>\n )}\n {showDeleteButton && (\n <IconButton\n size=\"small\"\n onClick={() => setIsDeleteDialogOpen(true)}\n aria-label=\"Delete portal\"\n title=\"Delete portal\"\n color=\"error\"\n >\n <Delete fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n </Box>\n {url && (\n <MuiLink\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.url}\n >\n {url}\n </MuiLink>\n )}\n </Box>\n\n <Box className={styles.metadata}>\n {id && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>ID:</strong> {id}\n </Typography>\n )}\n\n {createdBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Created by:</strong>\n </Typography>\n <UserCard\n ownerId={createdBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {createdOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(createdOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n\n {modifiedBy && (\n <Box className={styles.userInfo}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n <strong>Last modified by:</strong>\n </Typography>\n <UserCard\n ownerId={modifiedBy}\n size=\"SMALL USER CARD\"\n hideEmail\n disableLink={false}\n />\n {modifiedOn && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n on {dayjs(modifiedOn).format('MMMM D, YYYY')}\n </Typography>\n )}\n </Box>\n )}\n </Box>\n </CardContent>\n </Card>\n\n {showAclEditor && id && (\n <PortalAclEditorModal\n portalId={id}\n open={isAclEditorOpen}\n onClose={() => setIsAclEditorOpen(false)}\n />\n )}\n\n {id && (\n <ConfirmationDialog\n open={isDeleteDialogOpen}\n title=\"Delete Portal\"\n content={\n <Box>\n <Typography variant=\"body1\" sx={{ mb: 2 }}>\n Are you sure you want to delete this portal?\n </Typography>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n <strong>Name:</strong> {name}\n </Typography>\n {url && (\n <Typography variant=\"body2\">\n <strong>URL:</strong> {url}\n </Typography>\n )}\n </Box>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n variant: 'contained',\n }}\n onConfirm={() => {\n if (id) {\n deletePortal(id)\n }\n }}\n onCancel={() => setIsDeleteDialogOpen(false)}\n maxWidth=\"sm\"\n />\n )}\n </>\n )\n}\n\nexport default PortalCard\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAM,IAAoB;AAM1B,SAAgB,EAAW,EAAE,aAA4C;CACvE,IAAM,EAAE,OAAI,SAAM,QAAK,cAAW,cAAW,eAAY,kBAAe,GAClE,CAAC,GAAiB,KAAsB,EAAS,EAAK,GACtD,CAAC,GAAoB,KAAyB,EAAS,EAAK,GAC5D,IAAgB,KAAM,MAAO,GAC7B,IAAmB,KAAM,MAAO,GAEhC,EAAE,QAAQ,MAAiB,EAAgB;EAC/C,iBAAiB;GAEf,AADA,EAAa,WAAW,EAAK,6BAA6B,SAAS,GACnE,EAAsB,EAAK;EAC7B;EACA,UAAS,MAAS;GAChB,EAAa,4BAA4B,EAAM,UAAU,QAAQ;EACnE;CACF,CAAC;CAED,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAM,WAAW,EAAO;aACtB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,GAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,GAAD;MAAY,SAAQ;MAAK,WAAU;gBAChC;KACS,CAAA,GACZ,kBAAC,GAAD;MAAK,WAAW,EAAO;gBAAvB,CACG,KACC,kBAAC,GAAD;OACE,MAAK;OACL,eAAe,EAAmB,EAAI;OACtC,cAAW;OACX,OAAM;iBAEN,kBAAC,GAAD,EAAU,UAAS,QAAS,CAAA;MAClB,CAAA,GAEb,KACC,kBAAC,GAAD;OACE,MAAK;OACL,eAAe,EAAsB,EAAI;OACzC,cAAW;OACX,OAAM;OACN,OAAM;iBAEN,kBAAC,GAAD,EAAQ,UAAS,QAAS,CAAA;MAChB,CAAA,CAEX;OACF;QACJ,KACC,kBAAC,GAAD;KACE,MAAM;KACN,QAAO;KACP,KAAI;KACJ,WAAW,EAAO;eAEjB;IACM,CAAA,CAER;OAEL,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB;KACG,KACC,kBAAC,GAAD;MAAY,SAAQ;MAAQ,OAAM;gBAAlC;OACE,kBAAC,UAAD,EAAA,UAAQ,MAAW,CAAA;OAAC;OAAE;MACZ;;KAGb,KACC,kBAAC,GAAD;MAAK,WAAW,EAAO;gBAAvB;OACE,kBAAC,GAAD;QAAY,SAAQ;QAAQ,OAAM;kBAChC,kBAAC,UAAD,EAAA,UAAQ,cAAmB,CAAA;OACjB,CAAA;OACZ,kBAAC,GAAD;QACE,SAAS;QACT,MAAK;QACL,WAAA;QACA,aAAa;OACd,CAAA;OACA,KACC,kBAAC,GAAD;QAAY,SAAQ;QAAU,OAAM;kBAApC,CAAqD,OAC/C,EAAM,CAAS,EAAE,OAAO,cAAc,CAChC;;MAEX;;KAGN,KACC,kBAAC,GAAD;MAAK,WAAW,EAAO;gBAAvB;OACE,kBAAC,GAAD;QAAY,SAAQ;QAAQ,OAAM;kBAChC,kBAAC,UAAD,EAAA,UAAQ,oBAAyB,CAAA;OACvB,CAAA;OACZ,kBAAC,GAAD;QACE,SAAS;QACT,MAAK;QACL,WAAA;QACA,aAAa;OACd,CAAA;OACA,KACC,kBAAC,GAAD;QAAY,SAAQ;QAAU,OAAM;kBAApC,CAAqD,OAC/C,EAAM,CAAU,EAAE,OAAO,cAAc,CACjC;;MAEX;;IAEJ;KACM,EAAA,CAAA;EACT,CAAA;EAEL,KAAiB,KAChB,kBAAC,GAAD;GACE,UAAU;GACV,MAAM;GACN,eAAe,EAAmB,EAAK;EACxC,CAAA;EAGF,KACC,kBAAC,GAAD;GACE,MAAM;GACN,OAAM;GACN,SACE,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAQ,IAAI,EAAE,IAAI,EAAE;eAAG;IAE/B,CAAA;IACZ,kBAAC,GAAD;KAAY,SAAQ;KAAQ,IAAI,EAAE,IAAI,EAAE;eAAxC;MACE,kBAAC,UAAD,EAAA,UAAQ,QAAa,CAAA;MAAC;MAAE;KACd;;IACX,KACC,kBAAC,GAAD;KAAY,SAAQ;eAApB;MACE,kBAAC,UAAD,EAAA,UAAQ,OAAY,CAAA;MAAC;MAAE;KACb;;GAEX,EAAA,CAAA;GAEP,oBAAoB;IAClB,UAAU;IACV,OAAO;IACP,SAAS;GACX;GACA,iBAAiB;IACf,AAAI,KACF,EAAa,CAAE;GAEnB;GACA,gBAAgB,EAAsB,EAAK;GAC3C,UAAS;EACV,CAAA;CAEH,EAAA,CAAA;AAEN"}
|
|
@@ -5,11 +5,11 @@ import r from "./PortalList.module.js";
|
|
|
5
5
|
import { Fragment as i, useEffect as a, useState as o } from "react";
|
|
6
6
|
import { Alert as s, Box as c, Button as l, CircularProgress as u, Typography as d } from "@mui/material";
|
|
7
7
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
8
|
+
import { useInView as m } from "react-intersection-observer";
|
|
9
|
+
import h from "@mui/icons-material/Add";
|
|
10
10
|
//#region src/components/PortalList/PortalList.tsx
|
|
11
11
|
function g() {
|
|
12
|
-
let { ref: g, inView: _ } =
|
|
12
|
+
let { ref: g, inView: _ } = m(), [v, y] = o(!1), { data: b, status: x, error: S, isLoading: C, hasNextPage: w, isFetchingNextPage: T, fetchNextPage: E } = e({ throwOnError: !1 });
|
|
13
13
|
a(() => {
|
|
14
14
|
x === "success" && !T && w && E && _ && E();
|
|
15
15
|
}, [
|
|
@@ -37,7 +37,7 @@ function g() {
|
|
|
37
37
|
}), /* @__PURE__ */ f(l, {
|
|
38
38
|
variant: "contained",
|
|
39
39
|
color: "primary",
|
|
40
|
-
startIcon: /* @__PURE__ */ f(
|
|
40
|
+
startIcon: /* @__PURE__ */ f(h, {}),
|
|
41
41
|
onClick: () => y(!0),
|
|
42
42
|
children: "Create New Portal"
|
|
43
43
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalList.js","names":[],"sources":["../../../src/components/PortalList/PortalList.tsx"],"sourcesContent":["import { useListPortalsInfinite } from '@/synapse-queries/portal/useListPortals'\nimport { Box, Typography, CircularProgress, Alert, Button } from '@mui/material'\nimport { Fragment, useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport PortalCard from './PortalCard'\nimport CreatePortalModal from './CreatePortalModal'\nimport styles from './PortalList.module.scss'\nimport
|
|
1
|
+
{"version":3,"file":"PortalList.js","names":[],"sources":["../../../src/components/PortalList/PortalList.tsx"],"sourcesContent":["import { useListPortalsInfinite } from '@/synapse-queries/portal/useListPortals'\nimport { Box, Typography, CircularProgress, Alert, Button } from '@mui/material'\nimport { Fragment, useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport PortalCard from './PortalCard'\nimport CreatePortalModal from './CreatePortalModal'\nimport styles from './PortalList.module.scss'\nimport Add from '@mui/icons-material/Add'\n\nexport function PortalList(): React.ReactNode {\n const { ref, inView } = useInView()\n const [isCreateModalOpen, setIsCreateModalOpen] = useState(false)\n\n const {\n data,\n status,\n error,\n isLoading,\n hasNextPage,\n isFetchingNextPage,\n fetchNextPage,\n } = useListPortalsInfinite({\n throwOnError: false,\n })\n\n useEffect(() => {\n if (\n status === 'success' &&\n !isFetchingNextPage &&\n hasNextPage &&\n fetchNextPage &&\n inView\n ) {\n fetchNextPage()\n }\n }, [status, hasNextPage, isFetchingNextPage, fetchNextPage, inView])\n\n const allPortals = data?.pages.flatMap(page => page.page ?? []) ?? []\n\n if (error) {\n return (\n <Alert severity=\"error\" className={styles.errorAlert}>\n Error loading portals: {error.message}\n </Alert>\n )\n }\n\n return (\n <Box className={styles.portalListContainer}>\n <Box className={styles.header}>\n <Typography variant=\"h4\" component=\"h2\" className={styles.title}>\n Portals\n </Typography>\n <Button\n variant=\"contained\"\n color=\"primary\"\n startIcon={<Add />}\n onClick={() => setIsCreateModalOpen(true)}\n >\n Create New Portal\n </Button>\n </Box>\n\n {isLoading && (\n <Box className={styles.loadingContainer}>\n <CircularProgress />\n </Box>\n )}\n\n {!isLoading && allPortals.length === 0 && (\n <Typography variant=\"body1\" color=\"text.secondary\">\n No portals found.\n </Typography>\n )}\n\n {allPortals.length > 0 && (\n <Box className={styles.portalGrid}>\n {allPortals.map(portal => (\n <Fragment key={portal.id ?? JSON.stringify(portal)}>\n <PortalCard portal={portal} />\n </Fragment>\n ))}\n </Box>\n )}\n\n {/* Trigger for loading next page */}\n {hasNextPage && <div ref={ref} className={styles.loadMoreTrigger} />}\n\n {isFetchingNextPage && (\n <Box className={styles.loadingMoreContainer}>\n <CircularProgress size={32} />\n </Box>\n )}\n\n <CreatePortalModal\n open={isCreateModalOpen}\n onClose={() => setIsCreateModalOpen(false)}\n />\n </Box>\n )\n}\n\nexport default PortalList\n"],"mappings":";;;;;;;;;;AASA,SAAgB,IAA8B;CAC5C,IAAM,EAAE,QAAK,cAAW,EAAU,GAC5B,CAAC,GAAmB,KAAwB,EAAS,EAAK,GAE1D,EACJ,SACA,WACA,UACA,cACA,gBACA,uBACA,qBACE,EAAuB,EACzB,cAAc,GAChB,CAAC;CAED,QAAgB;EACd,AACE,MAAW,aACX,CAAC,KACD,KACA,KACA,KAEA,EAAc;CAElB,GAAG;EAAC;EAAQ;EAAa;EAAoB;EAAe;CAAM,CAAC;CAEnE,IAAM,IAAa,GAAM,MAAM,SAAQ,MAAQ,EAAK,QAAQ,CAAC,CAAC,KAAK,CAAC;CAUpE,OARI,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,WAAW,EAAO;YAA1C,CAAsD,2BAC5B,EAAM,OACzB;MAKT,kBAAC,GAAD;EAAK,WAAW,EAAO;YAAvB;GACE,kBAAC,GAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,GAAD;KAAY,SAAQ;KAAK,WAAU;KAAK,WAAW,EAAO;eAAO;IAErD,CAAA,GACZ,kBAAC,GAAD;KACE,SAAQ;KACR,OAAM;KACN,WAAW,kBAAC,GAAD,CAAM,CAAA;KACjB,eAAe,EAAqB,EAAI;eACzC;IAEO,CAAA,CACL;;GAEJ,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,CAAmB,CAAA;GAChB,CAAA;GAGN,CAAC,KAAa,EAAW,WAAW,KACnC,kBAAC,GAAD;IAAY,SAAQ;IAAQ,OAAM;cAAiB;GAEvC,CAAA;GAGb,EAAW,SAAS,KACnB,kBAAC,GAAD;IAAK,WAAW,EAAO;cACpB,EAAW,KAAI,MACd,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAS,CAAA,EACrB,GAFK,EAAO,MAAM,KAAK,UAAU,CAAM,CAEvC,CACX;GACE,CAAA;GAIN,KAAe,kBAAC,OAAD;IAAU;IAAK,WAAW,EAAO;GAAkB,CAAA;GAElE,KACC,kBAAC,GAAD;IAAK,WAAW,EAAO;cACrB,kBAAC,GAAD,EAAkB,MAAM,GAAK,CAAA;GAC1B,CAAA;GAGP,kBAAC,GAAD;IACE,MAAM;IACN,eAAe,EAAqB,EAAK;GAC1C,CAAA;EACE;;AAET"}
|
|
@@ -22,7 +22,7 @@ function d({ queryBundleRequest: d, onHide: f }) {
|
|
|
22
22
|
m(`SELECT * ${v.substring(e)}`);
|
|
23
23
|
}
|
|
24
24
|
}, [v, y]);
|
|
25
|
-
let b = a(() => p.
|
|
25
|
+
let b = a(() => p.replaceAll(/(["`])/g, String.raw`\$1`), [p]), x = a(() => p.replaceAll("\"", String.raw`\"`), [p]);
|
|
26
26
|
return /* @__PURE__ */ l(t, {
|
|
27
27
|
show: !0,
|
|
28
28
|
onClose: f,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgrammaticTableDownload.js","names":[],"sources":["../../../src/components/ProgrammaticTableDownload/ProgrammaticTableDownload.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { Link } from '@mui/material'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n PYTHON_CLIENT_IMPORT_AND_LOGIN,\n R_CLIENT_IMPORT_AND_LOGIN,\n} from '../DownloadCart/DirectProgrammaticDownload'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\n\nexport type ProgrammaticTableDownloadProps = {\n queryBundleRequest: QueryBundleRequest\n onHide: () => void\n}\n\nexport function ProgrammaticTableDownload({\n queryBundleRequest,\n onHide,\n}: ProgrammaticTableDownloadProps) {\n const [generatedSql, setGeneratedSql] = useState('...')\n\n const {\n data: asyncJobStatus,\n isLoading: queryIsLoading,\n isPlaceholderData: newQueryIsFetching,\n } = useGetQueryResultBundleWithAsyncStatus(\n {\n ...queryBundleRequest,\n partMask: SynapseConstants.BUNDLE_MASK_COMBINED_SQL,\n },\n {\n placeholderData: previousData => previousData,\n throwOnError: true,\n },\n )\n\n const combinedSql = asyncJobStatus?.responseBody?.combinedSql\n const isLoadingNewBundle = queryIsLoading || newQueryIsFetching\n\n useEffect(() => {\n if (combinedSql && !isLoadingNewBundle) {\n // SWC-5686: The ID column is required by the client, and this column may not have been selected!\n // Change the SQL to \"SELECT * ...\"\n const indexOfFrom = combinedSql.toUpperCase().indexOf('FROM SYN')\n const selectStarTransformedSql = `SELECT * ${combinedSql.substring(\n indexOfFrom,\n )}`\n setGeneratedSql(selectStarTransformedSql)\n }\n }, [combinedSql, isLoadingNewBundle])\n\n // Replace quotation marks with escaped quotations. For CLI, also escape backticks.\n const commandLineSql = useMemo(\n () => generatedSql.
|
|
1
|
+
{"version":3,"file":"ProgrammaticTableDownload.js","names":[],"sources":["../../../src/components/ProgrammaticTableDownload/ProgrammaticTableDownload.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { Link } from '@mui/material'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n PYTHON_CLIENT_IMPORT_AND_LOGIN,\n R_CLIENT_IMPORT_AND_LOGIN,\n} from '../DownloadCart/DirectProgrammaticDownload'\nimport { ProgrammaticInstructionsModal } from '../ProgrammaticInstructionsModal/ProgrammaticInstructionsModal'\n\nexport type ProgrammaticTableDownloadProps = {\n queryBundleRequest: QueryBundleRequest\n onHide: () => void\n}\n\nexport function ProgrammaticTableDownload({\n queryBundleRequest,\n onHide,\n}: ProgrammaticTableDownloadProps) {\n const [generatedSql, setGeneratedSql] = useState('...')\n\n const {\n data: asyncJobStatus,\n isLoading: queryIsLoading,\n isPlaceholderData: newQueryIsFetching,\n } = useGetQueryResultBundleWithAsyncStatus(\n {\n ...queryBundleRequest,\n partMask: SynapseConstants.BUNDLE_MASK_COMBINED_SQL,\n },\n {\n placeholderData: previousData => previousData,\n throwOnError: true,\n },\n )\n\n const combinedSql = asyncJobStatus?.responseBody?.combinedSql\n const isLoadingNewBundle = queryIsLoading || newQueryIsFetching\n\n useEffect(() => {\n if (combinedSql && !isLoadingNewBundle) {\n // SWC-5686: The ID column is required by the client, and this column may not have been selected!\n // Change the SQL to \"SELECT * ...\"\n const indexOfFrom = combinedSql.toUpperCase().indexOf('FROM SYN')\n const selectStarTransformedSql = `SELECT * ${combinedSql.substring(\n indexOfFrom,\n )}`\n setGeneratedSql(selectStarTransformedSql)\n }\n }, [combinedSql, isLoadingNewBundle])\n\n // Replace quotation marks with escaped quotations. For CLI, also escape backticks.\n const commandLineSql = useMemo(\n () => generatedSql.replaceAll(/([\"`])/g, String.raw`\\$1`),\n [generatedSql],\n )\n\n const clientSql = useMemo(\n () => generatedSql.replaceAll('\"', String.raw`\\\"`),\n [generatedSql],\n )\n\n return (\n <ProgrammaticInstructionsModal\n show={true}\n onClose={onHide}\n title=\"Download Programmatically\"\n cliNotes={\n <>\n This command line code will download Synapse files AND file\n annotations to your working directory.\n </>\n }\n cliCode={`synapse get -q \"${commandLineSql}\"`}\n rNotes={\n <>\n This R code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n synGet{'()'}\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n rCode={`${R_CLIENT_IMPORT_AND_LOGIN}\nquery ${'<-'} synTableQuery(\"${clientSql}\")${'\\n'}read.table(query$filepath, sep = \",\")`}\n pythonNotes={\n <>\n This Python code will download file annotations only. Use{' '}\n <Link\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles\"\n >\n syn.get\n </Link>{' '}\n to loop over the list of Synapse IDs from the file annotations to\n download files.\n </>\n }\n pythonCode={`${PYTHON_CLIENT_IMPORT_AND_LOGIN}\nquery = syn.tableQuery(\"${clientSql}\")${'\\n'}query.asDataFrame()`}\n />\n )\n}\n\nexport default ProgrammaticTableDownload\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,EAA0B,EACxC,uBACA,aACiC;CACjC,IAAM,CAAC,GAAc,KAAmB,EAAS,KAAK,GAEhD,EACJ,MAAM,GACN,WAAW,GACX,mBAAmB,MACjB,EACF;EACE,GAAG;EACH,UAAU;CACZ,GACA;EACE,kBAAiB,MAAgB;EACjC,cAAc;CAChB,CACF,GAEM,IAAc,GAAgB,cAAc,aAC5C,IAAqB,KAAkB;CAE7C,QAAgB;EACd,IAAI,KAAe,CAAC,GAAoB;GAGtC,IAAM,IAAc,EAAY,YAAY,EAAE,QAAQ,UAAU;GAIhE,EAAgB,YAH6B,EAAY,UACvD,CACF,GACwC;EAC1C;CACF,GAAG,CAAC,GAAa,CAAkB,CAAC;CAGpC,IAAM,IAAiB,QACf,EAAa,WAAW,WAAW,OAAO,GAAG,KAAK,GACxD,CAAC,CAAY,CACf,GAEM,IAAY,QACV,EAAa,WAAW,MAAK,OAAO,GAAG,IAAI,GACjD,CAAC,CAAY,CACf;CAEA,OACE,kBAAC,GAAD;EACE,MAAM;EACN,SAAS;EACT,OAAM;EACN,UACE,kBAAA,GAAA,EAAA,UAAE,qGAGA,CAAA;EAEJ,SAAS,mBAAmB,EAAe;EAC3C,QACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GACqD;GACrD,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cAHP,CAIC,UACQ,IACH;;GAAE;GAAI;EAGZ,EAAA,CAAA;EAEJ,OAAO,GAAG,EAA0B;0BACX,EAAU;;EACnC,aACE,kBAAA,GAAA,EAAA,UAAA;GAAE;GAC0D;GAC1D,kBAAC,GAAD;IACE,QAAO;IACP,KAAI;IACJ,MAAK;cACN;GAEK,CAAA;GAAE;GAAI;EAGZ,EAAA,CAAA;EAEJ,YAAY,GAAG,EAA+B;0BAC1B,EAAU;;CAC/B,CAAA;AAEL"}
|
|
@@ -4,9 +4,9 @@ import "../../synapse-queries/index.js";
|
|
|
4
4
|
import { getProjectVisibilityFromACL as n } from "./getProjectVisibilityFromACL.js";
|
|
5
5
|
import { Chip as r, Skeleton as i, Typography as a } from "@mui/material";
|
|
6
6
|
import { jsx as o } from "react/jsx-runtime";
|
|
7
|
-
import s from "@mui/icons-material/
|
|
8
|
-
import c from "@mui/icons-material/
|
|
9
|
-
import l from "@mui/icons-material/
|
|
7
|
+
import s from "@mui/icons-material/LockOutlined";
|
|
8
|
+
import c from "@mui/icons-material/VisibilityOutlined";
|
|
9
|
+
import l from "@mui/icons-material/LanguageOutlined";
|
|
10
10
|
//#region src/components/ProjectVisibilityChip/ProjectVisibilityChip.tsx
|
|
11
11
|
var u = {
|
|
12
12
|
fill: "var(--synapse-gray-900)",
|
|
@@ -15,17 +15,17 @@ var u = {
|
|
|
15
15
|
PRIVATE: {
|
|
16
16
|
label: "Private Project",
|
|
17
17
|
color: "#FAC3C3",
|
|
18
|
-
icon: /* @__PURE__ */ o(
|
|
18
|
+
icon: /* @__PURE__ */ o(s, { sx: u })
|
|
19
19
|
},
|
|
20
20
|
DISCOVERABLE: {
|
|
21
21
|
label: "Discoverable Project",
|
|
22
22
|
color: "#FDEFC1",
|
|
23
|
-
icon: /* @__PURE__ */ o(
|
|
23
|
+
icon: /* @__PURE__ */ o(c, { sx: u })
|
|
24
24
|
},
|
|
25
25
|
PUBLIC: {
|
|
26
26
|
label: "Public Project",
|
|
27
27
|
color: "#D4EFD4",
|
|
28
|
-
icon: /* @__PURE__ */ o(
|
|
28
|
+
icon: /* @__PURE__ */ o(l, { sx: u })
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
function f({ visibility: e }) {
|
|
@@ -4,7 +4,7 @@ import { jsx as t } from "react/jsx-runtime";
|
|
|
4
4
|
//#region src/components/ProvenanceGraph/ProvenanceExternalIcon.tsx
|
|
5
5
|
var n = /^(.+?\.)?github\.com$/, r = /^(.+?\.)?githubusercontent\.com$/, i = (i) => {
|
|
6
6
|
let { url: a } = i, o = "link", { hostname: s } = new URL(a);
|
|
7
|
-
return (
|
|
7
|
+
return (n.exec(s) || r.exec(s)) && (o = "github"), /* @__PURE__ */ t(e, { icon: o });
|
|
8
8
|
};
|
|
9
9
|
//#endregion
|
|
10
10
|
export { i as ProvenanceExternalIcon };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvenanceExternalIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceExternalIcon.tsx"],"sourcesContent":["import React from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nexport type ProvenanceExternalIconProps = {\n url: string\n}\nconst githubRegex = /^(.+?\\.)?github\\.com$/\nconst githubusercontentRegex = /^(.+?\\.)?githubusercontent\\.com$/\n\nexport const ProvenanceExternalIcon = (\n props: ProvenanceExternalIconProps,\n): React.ReactNode => {\n const { url } = props\n let icon: IconName = 'link'\n const parsedUrl = new URL(url)\n const { hostname } = parsedUrl\n\n if (
|
|
1
|
+
{"version":3,"file":"ProvenanceExternalIcon.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceExternalIcon.tsx"],"sourcesContent":["import React from 'react'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\n\nexport type ProvenanceExternalIconProps = {\n url: string\n}\nconst githubRegex = /^(.+?\\.)?github\\.com$/\nconst githubusercontentRegex = /^(.+?\\.)?githubusercontent\\.com$/\n\nexport const ProvenanceExternalIcon = (\n props: ProvenanceExternalIconProps,\n): React.ReactNode => {\n const { url } = props\n let icon: IconName = 'link'\n const parsedUrl = new URL(url)\n const { hostname } = parsedUrl\n\n if (githubRegex.exec(hostname) || githubusercontentRegex.exec(hostname)) {\n icon = 'github'\n }\n // else if (url.includes(\"genomespace.org\")) {\n // icon = 'genomespace'\n // }\n\n // return the default (File icon)\n return <IconSvg icon={icon} />\n}\n"],"mappings":";;;;AAMA,IAAM,IAAc,yBACd,IAAyB,oCAElB,KACX,MACoB;CACpB,IAAM,EAAE,WAAQ,GACZ,IAAiB,QAEf,EAAE,gBAAa,IADC,IAAI,CACL;CAUrB,QARI,EAAY,KAAK,CAAQ,KAAK,EAAuB,KAAK,CAAQ,OACpE,IAAO,WAOF,kBAAC,GAAD,EAAe,QAAO,CAAA;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvenanceGraph.d.ts","sourceRoot":"","sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"names":[],"mappings":"AAQA,OAAO,EAGL,aAAa,EAKd,MAAM,iCAAiC,CAAA;AAGxC,OAAkB,EAEhB,IAAI,EAEJ,IAAI,EAKL,MAAM,WAAW,CAAA;AAoBlB,OAAO,0BAA0B,CAAA;AAEjC,MAAM,MAAM,eAAe,GAAG;IAE5B,UAAU,EAAE,aAAa,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IAChD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IAChD,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAA;CACrC,CAAA;AAID,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"ProvenanceGraph.d.ts","sourceRoot":"","sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"names":[],"mappings":"AAQA,OAAO,EAGL,aAAa,EAKd,MAAM,iCAAiC,CAAA;AAGxC,OAAkB,EAEhB,IAAI,EAEJ,IAAI,EAKL,MAAM,WAAW,CAAA;AAoBlB,OAAO,0BAA0B,CAAA;AAEjC,MAAM,MAAM,eAAe,GAAG;IAE5B,UAAU,EAAE,aAAa,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAA;IACrB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IAChD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IAChD,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAA;CACrC,CAAA;AAID,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAA;AAsbvD,QAAA,MAAM,eAAe,GAAI,OAAO,eAAe,KAAG,KAAK,CAAC,SAQvD,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -16,12 +16,12 @@ import ce, { Controls as x, ReactFlowProvider as S, getConnectedEdges as C, useE
|
|
|
16
16
|
import "reactflow/dist/style.css";
|
|
17
17
|
//#region src/components/ProvenanceGraph/ProvenanceGraph.tsx
|
|
18
18
|
var E = 400, D = .85, O = "Edit Provenance", k = "No provenance data", ue = (e) => `We don’t have any provenance information for this ${e} yet.`, de = "rgba(255, 255, 255, 0.60)", A = (i) => {
|
|
19
|
-
let { entityRefs: S, containerHeight: O = "200px", initialNodes: A = [], initialEdges: j = [], onNodesChangedListener: M, onEdgesChangedListener: N, onEditProvenanceClicked: P } = i, { accessToken: F } = a(), [I, L] = _(A), [R, z] = _(j), [B, V] = w([]), [H, U] = le([]), [W, G] = _(), [fe, pe] = _(!1), K = se(), { data: q, isSuccess: me } = o(S, { throwOnError: !0 }), he = [
|
|
19
|
+
let { entityRefs: S, containerHeight: O = "200px", initialNodes: A = [], initialEdges: j = [], onNodesChangedListener: M, onEdgesChangedListener: N, onEditProvenanceClicked: P } = i, { accessToken: F } = a(), [I, L] = _(A), [R, z] = _(j), [B, V] = w([]), [H, U] = le([]), [W, G] = _(), [fe, pe] = _(!1), K = se(), { data: q, isSuccess: me } = o(S, { throwOnError: !0 }), he = new Set([
|
|
20
20
|
s.ENTITY_PLACEHOLDER,
|
|
21
21
|
s.EXTERNAL,
|
|
22
22
|
s.ACTIVITY,
|
|
23
23
|
s.EXPAND
|
|
24
|
-
], J = B.some((e) => he.
|
|
24
|
+
]), J = B.some((e) => he.has(e.data.type)), ge = fe && !J;
|
|
25
25
|
me && q?.totalNumberOfResults == 0 && K(`Unable to load provenance for the given Synapse IDs: ${S.map((e) => e.targetId).join(",")}`);
|
|
26
26
|
let Y = q?.results, _e = Y?.[0] ? n(r(Y[0])).toLowerCase() : "entity", [X, ve] = _(!1), Z = T(), ye = h((e, t) => {
|
|
27
27
|
G(t);
|
|
@@ -95,7 +95,7 @@ var E = 400, D = .85, O = "Edit Provenance", k = "No provenance data", ue = (e)
|
|
|
95
95
|
});
|
|
96
96
|
});
|
|
97
97
|
let { results: a } = await t.getEntityHeaders(n, F);
|
|
98
|
-
n.filter((e) => a.
|
|
98
|
+
n.filter((e) => !a.some((t) => t.id == e.targetId)).forEach((t) => {
|
|
99
99
|
d({
|
|
100
100
|
ref: t,
|
|
101
101
|
activity: e,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvenanceGraph.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetEntityHeaders } from '@/synapse-queries'\nimport {\n entityTypeToFriendlyName,\n getEntityTypeFromHeader,\n} from '@/utils/functions/EntityTypeUtils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { CircularProgress, Typography, Button, Stack } from '@mui/material'\nimport {\n Activity,\n EntityHeader,\n ReferenceList,\n Used,\n USED_ENTITY_CONCRETE_TYPE_VALUE,\n UsedEntity,\n UsedURL,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useCallback, useEffect, useState, WheelEvent } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport ReactFlow, {\n Controls,\n Edge,\n getConnectedEdges,\n Node,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n} from 'reactflow'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { ExpandGraphNodeDataProps } from './ExpandGraphNodeLabel'\nimport {\n addActivityNode,\n addEntityNode,\n addEntityPlaceholderNode,\n addExpandNode,\n addExternalNode,\n addUndefinedNode,\n findEntityNode,\n isRootEntity,\n} from './ProvenanceGraphUtils'\nimport {\n getLayoutedElements,\n isArrayEqual,\n NodeType,\n ProvenanceNodeData,\n} from './ProvenanceUtils'\nimport 'reactflow/dist/style.css'\n\nexport type ProvenanceProps = {\n // what entity nodes should we start with?\n entityRefs: ReferenceList\n containerHeight?: string\n initialNodes?: Node[]\n initialEdges?: Edge[]\n onNodesChangedListener?: (nodes: Node[]) => void\n onEdgesChangedListener?: (edges: Edge[]) => void\n onEditProvenanceClicked?: () => void\n}\n\nconst MAX_ACTIVITY_EXPAND_NODES = 400\nconst DEFAULT_ZOOM = 0.85\nexport const EDIT_PROVENANCE_TEXT = 'Edit Provenance'\nexport const NO_PROVENANCE_TITLE = 'No provenance data'\nconst NO_PROVENANCE_MESSAGE = (entityTypeName: string) =>\n `We don’t have any provenance information for this ${entityTypeName} yet.`\nconst EDIT_PROVENANCE_BUTTON_BACKGROUND_COLOR = 'rgba(255, 255, 255, 0.60)'\n\n/**\n * Renders a Provenance Graph for a set of entities.\n * New Nodes are added to tempNodes, and new Edges are added to tempEdges.\n * On change, these are fed into the dagre js graph library to figure out the node positions,\n * and the output stored in 'nodes' and 'edges'. The 'nodes' and 'edges' arrays are used by the\n * ReactFlow component.\n */\nconst ProvenanceReactFlow = (props: ProvenanceProps): React.ReactNode => {\n const {\n entityRefs: rootEntityRefs,\n containerHeight = '200px',\n initialNodes = [],\n initialEdges = [],\n onNodesChangedListener,\n onEdgesChangedListener,\n onEditProvenanceClicked,\n } = props\n const { accessToken } = useSynapseContext()\n const [tempNodes, setTempNodes] = useState<Node[]>(initialNodes)\n const [tempEdges, setTempEdges] = useState<Edge[]>(initialEdges)\n const [nodes, setNodes] = useNodesState([])\n const [edges, setEdges] = useEdgesState([])\n const [clickedNode, setClickedNode] = useState<Node>()\n const [initialBuildComplete, setInitialBuildComplete] =\n useState<boolean>(false)\n const handleError = useErrorHandler()\n\n const { data: rootEntityHeadersPage, isSuccess } = useGetEntityHeaders(\n rootEntityRefs,\n { throwOnError: true },\n )\n\n const PROVENANCE_NODE_TYPES = [\n NodeType.ENTITY_PLACEHOLDER,\n NodeType.EXTERNAL,\n NodeType.ACTIVITY,\n NodeType.EXPAND,\n ]\n const hasProvenanceNodes = nodes.some(node =>\n PROVENANCE_NODE_TYPES.includes((node.data as ProvenanceNodeData).type),\n )\n\n const showNoProvenance = initialBuildComplete && !hasProvenanceNodes\n\n if (isSuccess && rootEntityHeadersPage?.totalNumberOfResults == 0) {\n const synapseIds = rootEntityRefs.map(ref => ref.targetId).join(',')\n handleError(\n `Unable to load provenance for the given Synapse IDs: ${synapseIds}`,\n )\n }\n const rootEntityHeaders = rootEntityHeadersPage?.results\n const entityTypeName = rootEntityHeaders?.[0]\n ? entityTypeToFriendlyName(\n getEntityTypeFromHeader(rootEntityHeaders[0]),\n ).toLowerCase()\n : 'entity'\n const [initializedPosition, setInitializedPosition] = useState<boolean>(false)\n\n // Get the react flow instance so we attempt to properly center the view.\n const reactFlowInstance = useReactFlow()\n\n const onClickNode = useCallback((_event: MouseEvent, node: Node) => {\n setClickedNode(node)\n }, [])\n\n /**\n * Called when we have a new entity to add to the graph. This will result in adding\n * a new Entity Node to the nodesCopy, a link from the usedInActivity to the new Entity Node,\n * AND it will look for an Activity associated with the new entity. If an Activity is found,\n * it will add an Expand Node for the user to click (to expand to see this Activity!).\n * If this is a root node (starting entity node), then we automatically add the Activity Node\n * and process it.\n */\n const addEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n usedInActivity?: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy, usedInActivity } = params\n addEntityNode({\n entityHeader,\n activity: usedInActivity,\n nodesCopy,\n edgesCopy,\n })\n //look for Activity\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n // if this is not a root node (or there are too many items to show), add an expand node\n if (\n !isRootEntity({ entityHeader, rootEntityHeaders }) ||\n (activity.used && activity.used.length >= MAX_ACTIVITY_EXPAND_NODES)\n ) {\n addExpandNode({\n entityHeader,\n itemCount: activity.used?.length,\n nodesCopy,\n edgesCopy,\n })\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n if (\n isRootEntity({\n entityHeader,\n rootEntityHeaders,\n })\n ) {\n // add provenance undefined node\n addUndefinedNode({\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n }\n }\n },\n [accessToken, rootEntityHeaders],\n )\n\n /**\n * This effect attempts to center the graph on one of the root nodes.\n * Only initializes after after a root node has been added to the graph.\n */\n useEffect(() => {\n if (!initializedPosition && nodes.length > 0) {\n setTimeout(() => {\n if (rootEntityHeaders) {\n const rootEntityNode = findEntityNode(rootEntityHeaders[0], nodes)\n if (rootEntityNode) {\n const currentZoom = reactFlowInstance.getZoom()\n const zoom = currentZoom > DEFAULT_ZOOM ? DEFAULT_ZOOM : currentZoom\n reactFlowInstance?.setCenter(\n rootEntityNode.position.x + 150,\n rootEntityNode.position.y - 30,\n { zoom, duration: 0 },\n )\n }\n setInitializedPosition(true)\n }\n })\n }\n }, [initializedPosition, nodes, reactFlowInstance, rootEntityHeaders])\n\n /**\n * This is called when the user clicks on an Expand Node. It will add the associated Activity\n * and all \"used\" items (entities and urls) to the graph by adding items to the nodesCopy and edgesCopy arrays.\n */\n const onExpandEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n addActivityNode({\n activity,\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n // go through Activity.used array to add these nodes/edges\n if (activity.used && activity.used.length < MAX_ACTIVITY_EXPAND_NODES) {\n const usedEntityReferences: ReferenceList = []\n activity.used.forEach((usedItem: Used) => {\n if (usedItem.concreteType == USED_ENTITY_CONCRETE_TYPE_VALUE) {\n usedEntityReferences.push((usedItem as UsedEntity).reference)\n } else {\n // UsedURL\n const usedURL = usedItem as UsedURL\n addExternalNode({ usedURL, activity, nodesCopy, edgesCopy })\n }\n })\n const usedEntityHeadersPage = await SynapseClient.getEntityHeaders(\n usedEntityReferences,\n accessToken,\n )\n const { results: usedEntityHeaderPageResults } = usedEntityHeadersPage\n // find refs that were not returned by the entity header call\n const refsMissingEntityHeaders = usedEntityReferences.filter(ref => {\n return (\n usedEntityHeaderPageResults.find(header => {\n return header.id == ref.targetId\n }) == undefined\n )\n })\n refsMissingEntityHeaders.forEach(ref => {\n addEntityPlaceholderNode({ ref, activity, nodesCopy, edgesCopy })\n })\n const addEntityPromises: Promise<void>[] = []\n usedEntityHeaderPageResults.forEach(header => {\n addEntityPromises.push(\n addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n usedInActivity: activity,\n }),\n )\n })\n await Promise.allSettled(addEntityPromises)\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n }\n },\n [accessToken, addEntity],\n )\n\n /**\n * This effect code executes when no nodes have been added.\n * It will add the root nodes, and attempt to expand the root nodes.\n */\n useEffect(() => {\n if (rootEntityHeaders && tempNodes.length == 0) {\n const nodesCopy = [...tempNodes]\n const edgesCopy = [...tempEdges]\n const addAndExpandPromises: Promise<void>[] = []\n rootEntityHeaders.forEach(header => {\n const addEntityPromise = addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(addEntityPromise)\n\n const expandEntityPromise = onExpandEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(expandEntityPromise)\n })\n Promise.allSettled(addAndExpandPromises).finally(() => {\n setTempNodes(nodesCopy)\n setTempEdges(edgesCopy)\n setInitialBuildComplete(true)\n })\n }\n }, [\n addEntity,\n handleError,\n onExpandEntity,\n rootEntityHeaders,\n rootEntityRefs,\n tempEdges,\n tempNodes,\n ])\n\n /**\n * This effect code executes when a node is clicked.\n * We check to see if it is an expand node. If it is, then we remove the expand node (and associated edge)\n * and ask for the Activity and associated \"used\" nodes (entities and URLs)\n */\n useEffect(() => {\n const nodeData: ProvenanceNodeData = clickedNode?.data as ProvenanceNodeData\n if (clickedNode && nodeData?.type == NodeType.EXPAND) {\n const expandNodeDataProps = nodeData.props as ExpandGraphNodeDataProps\n if (expandNodeDataProps.itemCount > MAX_ACTIVITY_EXPAND_NODES) {\n displayToast(\n 'Web visualization does not support expanding this many items at this time.',\n 'danger',\n )\n return\n } else {\n // graph will be used outside of synapse, so show a non-branded spinner\n nodeData.label = <CircularProgress size={30} />\n // remove clicked node\n const nodesWithoutExpandNode = tempNodes.filter(\n node => node.id != clickedNode.id,\n )\n const edgeToRemove = getConnectedEdges([clickedNode], tempEdges)[0]\n const edgesWithoutExpandEdge = tempEdges.filter(\n edge => edge != edgeToRemove,\n )\n onExpandEntity({\n entityHeader: expandNodeDataProps.entityHeader,\n nodesCopy: nodesWithoutExpandNode,\n edgesCopy: edgesWithoutExpandEdge,\n }).finally(() => {\n setTempNodes(nodesWithoutExpandNode)\n setTempEdges(edgesWithoutExpandEdge)\n })\n }\n setClickedNode(undefined)\n }\n }, [clickedNode, tempNodes, tempEdges, onExpandEntity])\n\n /**\n * This effect code is run when the graph nodes or edges change.\n * It feeds the nodes and edges into our layout library to figure out where they should be positioned.\n * The result is saved in the state variable \"nodes\" and \"edges\".\n */\n useEffect(() => {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(\n tempNodes,\n tempEdges,\n 'TB',\n )\n // hack: ProvenanceUtils.getProvenanceNode() returns a new object every time, so check to see if\n // there were any real changes\n if (!isArrayEqual(layoutedNodes, nodes)) {\n setNodes(layoutedNodes)\n if (onNodesChangedListener) {\n onNodesChangedListener(layoutedNodes)\n }\n }\n if (!isArrayEqual(layoutedEdges, edges)) {\n setEdges(layoutedEdges)\n if (onEdgesChangedListener) {\n onEdgesChangedListener(layoutedEdges)\n }\n }\n }, [\n tempNodes,\n tempEdges,\n nodes,\n edges,\n setNodes,\n setEdges,\n initializedPosition,\n reactFlowInstance,\n rootEntityRefs,\n onNodesChangedListener,\n onEdgesChangedListener,\n ])\n\n const onPaneScrollFunction: (event?: WheelEvent) => void = useCallback(\n event => {\n // Cannot simply check the truthy value of event.deltaX (or Y) because the value might be 0 (or -0), which is falsy\n if (\n typeof event?.deltaX !== 'undefined' &&\n typeof event.deltaY !== 'undefined'\n ) {\n window.scrollTo(\n window.scrollX + event.deltaX,\n window.scrollY + event.deltaY,\n )\n }\n },\n [],\n )\n return (\n <div\n className=\"ProvenanceWidget\"\n role=\"graphics-doc\" //https://www.w3.org/wiki/SVG_Accessibility/ARIA_roles_for_charts#Document_Roles\n style={{\n width: '100%',\n height: containerHeight,\n }}\n >\n {showNoProvenance ? (\n <Stack\n sx={{\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n }}\n >\n <Typography\n sx={{\n color: 'greyV2.900',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 540,\n marginBottom: '12px',\n }}\n >\n {NO_PROVENANCE_TITLE}\n </Typography>\n <Typography\n sx={{\n color: 'greyV2.900',\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 440,\n }}\n >\n {NO_PROVENANCE_MESSAGE(entityTypeName)}\n </Typography>\n {onEditProvenanceClicked && (\n <Button\n variant=\"outlined\"\n sx={{\n borderRadius: '6px',\n border: '1px solid',\n borderColor: 'greyV2.400',\n background: EDIT_PROVENANCE_BUTTON_BACKGROUND_COLOR,\n color: 'greyV2.800',\n fontWeight: 540,\n lineHeight: '12px' /* 100% */,\n letterSpacing: '-0.24px',\n marginTop: '20px',\n height: '28px',\n padding: '8px',\n }}\n onClick={onEditProvenanceClicked}\n >\n {EDIT_PROVENANCE_TEXT}\n </Button>\n )}\n </Stack>\n ) : (\n <ReactFlow\n defaultViewport={{ x: 0, y: 0, zoom: DEFAULT_ZOOM }}\n nodes={nodes}\n edges={edges}\n onNodeClick={onClickNode}\n // onNodesChange={onNodesChange} // SWC-6804: When the nodes/edges are updated (expanded) the graph is already re-rendered.\n // onEdgesChange={onEdgesChange} // Specifying these callbacks causes an infinite re-rendering loop.\n attributionPosition=\"bottom-right\"\n onConnect={undefined}\n zoomOnScroll={false}\n onPaneScroll={onPaneScrollFunction}\n >\n <Controls />\n </ReactFlow>\n )}\n </div>\n )\n}\n\nconst ProvenanceGraph = (props: ProvenanceProps): React.ReactNode => {\n return (\n <SynapseErrorBoundary>\n <ReactFlowProvider>\n <ProvenanceReactFlow {...props} />\n </ReactFlowProvider>\n </SynapseErrorBoundary>\n )\n}\n\nexport default ProvenanceGraph\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProvenanceGraph.js","names":[],"sources":["../../../src/components/ProvenanceGraph/ProvenanceGraph.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetEntityHeaders } from '@/synapse-queries'\nimport {\n entityTypeToFriendlyName,\n getEntityTypeFromHeader,\n} from '@/utils/functions/EntityTypeUtils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { CircularProgress, Typography, Button, Stack } from '@mui/material'\nimport {\n Activity,\n EntityHeader,\n ReferenceList,\n Used,\n USED_ENTITY_CONCRETE_TYPE_VALUE,\n UsedEntity,\n UsedURL,\n} from '@sage-bionetworks/synapse-types'\nimport { MouseEvent, useCallback, useEffect, useState, WheelEvent } from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport ReactFlow, {\n Controls,\n Edge,\n getConnectedEdges,\n Node,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n} from 'reactflow'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport { ExpandGraphNodeDataProps } from './ExpandGraphNodeLabel'\nimport {\n addActivityNode,\n addEntityNode,\n addEntityPlaceholderNode,\n addExpandNode,\n addExternalNode,\n addUndefinedNode,\n findEntityNode,\n isRootEntity,\n} from './ProvenanceGraphUtils'\nimport {\n getLayoutedElements,\n isArrayEqual,\n NodeType,\n ProvenanceNodeData,\n} from './ProvenanceUtils'\nimport 'reactflow/dist/style.css'\n\nexport type ProvenanceProps = {\n // what entity nodes should we start with?\n entityRefs: ReferenceList\n containerHeight?: string\n initialNodes?: Node[]\n initialEdges?: Edge[]\n onNodesChangedListener?: (nodes: Node[]) => void\n onEdgesChangedListener?: (edges: Edge[]) => void\n onEditProvenanceClicked?: () => void\n}\n\nconst MAX_ACTIVITY_EXPAND_NODES = 400\nconst DEFAULT_ZOOM = 0.85\nexport const EDIT_PROVENANCE_TEXT = 'Edit Provenance'\nexport const NO_PROVENANCE_TITLE = 'No provenance data'\nconst NO_PROVENANCE_MESSAGE = (entityTypeName: string) =>\n `We don’t have any provenance information for this ${entityTypeName} yet.`\nconst EDIT_PROVENANCE_BUTTON_BACKGROUND_COLOR = 'rgba(255, 255, 255, 0.60)'\n\n/**\n * Renders a Provenance Graph for a set of entities.\n * New Nodes are added to tempNodes, and new Edges are added to tempEdges.\n * On change, these are fed into the dagre js graph library to figure out the node positions,\n * and the output stored in 'nodes' and 'edges'. The 'nodes' and 'edges' arrays are used by the\n * ReactFlow component.\n */\nconst ProvenanceReactFlow = (props: ProvenanceProps): React.ReactNode => {\n const {\n entityRefs: rootEntityRefs,\n containerHeight = '200px',\n initialNodes = [],\n initialEdges = [],\n onNodesChangedListener,\n onEdgesChangedListener,\n onEditProvenanceClicked,\n } = props\n const { accessToken } = useSynapseContext()\n const [tempNodes, setTempNodes] = useState<Node[]>(initialNodes)\n const [tempEdges, setTempEdges] = useState<Edge[]>(initialEdges)\n const [nodes, setNodes] = useNodesState([])\n const [edges, setEdges] = useEdgesState([])\n const [clickedNode, setClickedNode] = useState<Node>()\n const [initialBuildComplete, setInitialBuildComplete] =\n useState<boolean>(false)\n const handleError = useErrorHandler()\n\n const { data: rootEntityHeadersPage, isSuccess } = useGetEntityHeaders(\n rootEntityRefs,\n { throwOnError: true },\n )\n\n const PROVENANCE_NODE_TYPES = new Set([\n NodeType.ENTITY_PLACEHOLDER,\n NodeType.EXTERNAL,\n NodeType.ACTIVITY,\n NodeType.EXPAND,\n ])\n const hasProvenanceNodes = nodes.some(node =>\n PROVENANCE_NODE_TYPES.has((node.data as ProvenanceNodeData).type),\n )\n\n const showNoProvenance = initialBuildComplete && !hasProvenanceNodes\n\n if (isSuccess && rootEntityHeadersPage?.totalNumberOfResults == 0) {\n const synapseIds = rootEntityRefs.map(ref => ref.targetId).join(',')\n handleError(\n `Unable to load provenance for the given Synapse IDs: ${synapseIds}`,\n )\n }\n const rootEntityHeaders = rootEntityHeadersPage?.results\n const entityTypeName = rootEntityHeaders?.[0]\n ? entityTypeToFriendlyName(\n getEntityTypeFromHeader(rootEntityHeaders[0]),\n ).toLowerCase()\n : 'entity'\n const [initializedPosition, setInitializedPosition] = useState<boolean>(false)\n\n // Get the react flow instance so we attempt to properly center the view.\n const reactFlowInstance = useReactFlow()\n\n const onClickNode = useCallback((_event: MouseEvent, node: Node) => {\n setClickedNode(node)\n }, [])\n\n /**\n * Called when we have a new entity to add to the graph. This will result in adding\n * a new Entity Node to the nodesCopy, a link from the usedInActivity to the new Entity Node,\n * AND it will look for an Activity associated with the new entity. If an Activity is found,\n * it will add an Expand Node for the user to click (to expand to see this Activity!).\n * If this is a root node (starting entity node), then we automatically add the Activity Node\n * and process it.\n */\n const addEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n usedInActivity?: Activity\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy, usedInActivity } = params\n addEntityNode({\n entityHeader,\n activity: usedInActivity,\n nodesCopy,\n edgesCopy,\n })\n //look for Activity\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n // if this is not a root node (or there are too many items to show), add an expand node\n if (\n !isRootEntity({ entityHeader, rootEntityHeaders }) ||\n (activity.used && activity.used.length >= MAX_ACTIVITY_EXPAND_NODES)\n ) {\n addExpandNode({\n entityHeader,\n itemCount: activity.used?.length,\n nodesCopy,\n edgesCopy,\n })\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n if (\n isRootEntity({\n entityHeader,\n rootEntityHeaders,\n })\n ) {\n // add provenance undefined node\n addUndefinedNode({\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n }\n }\n },\n [accessToken, rootEntityHeaders],\n )\n\n /**\n * This effect attempts to center the graph on one of the root nodes.\n * Only initializes after after a root node has been added to the graph.\n */\n useEffect(() => {\n if (!initializedPosition && nodes.length > 0) {\n setTimeout(() => {\n if (rootEntityHeaders) {\n const rootEntityNode = findEntityNode(rootEntityHeaders[0], nodes)\n if (rootEntityNode) {\n const currentZoom = reactFlowInstance.getZoom()\n const zoom = currentZoom > DEFAULT_ZOOM ? DEFAULT_ZOOM : currentZoom\n reactFlowInstance?.setCenter(\n rootEntityNode.position.x + 150,\n rootEntityNode.position.y - 30,\n { zoom, duration: 0 },\n )\n }\n setInitializedPosition(true)\n }\n })\n }\n }, [initializedPosition, nodes, reactFlowInstance, rootEntityHeaders])\n\n /**\n * This is called when the user clicks on an Expand Node. It will add the associated Activity\n * and all \"used\" items (entities and urls) to the graph by adding items to the nodesCopy and edgesCopy arrays.\n */\n const onExpandEntity = useCallback(\n async (params: {\n entityHeader: EntityHeader\n nodesCopy: Node[]\n edgesCopy: Edge[]\n }) => {\n const { entityHeader, nodesCopy, edgesCopy } = params\n try {\n const activity = await SynapseClient.getActivityForEntity(\n entityHeader.id,\n entityHeader.versionNumber,\n accessToken,\n )\n addActivityNode({\n activity,\n entityHeader,\n nodesCopy,\n edgesCopy,\n })\n // go through Activity.used array to add these nodes/edges\n if (activity.used && activity.used.length < MAX_ACTIVITY_EXPAND_NODES) {\n const usedEntityReferences: ReferenceList = []\n activity.used.forEach((usedItem: Used) => {\n if (usedItem.concreteType == USED_ENTITY_CONCRETE_TYPE_VALUE) {\n usedEntityReferences.push((usedItem as UsedEntity).reference)\n } else {\n // UsedURL\n const usedURL = usedItem as UsedURL\n addExternalNode({ usedURL, activity, nodesCopy, edgesCopy })\n }\n })\n const usedEntityHeadersPage = await SynapseClient.getEntityHeaders(\n usedEntityReferences,\n accessToken,\n )\n const { results: usedEntityHeaderPageResults } = usedEntityHeadersPage\n // find refs that were not returned by the entity header call\n const refsMissingEntityHeaders = usedEntityReferences.filter(ref => {\n return !usedEntityHeaderPageResults.some(header => {\n return header.id == ref.targetId\n })\n })\n refsMissingEntityHeaders.forEach(ref => {\n addEntityPlaceholderNode({ ref, activity, nodesCopy, edgesCopy })\n })\n const addEntityPromises: Promise<void>[] = []\n usedEntityHeaderPageResults.forEach(header => {\n addEntityPromises.push(\n addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n usedInActivity: activity,\n }),\n )\n })\n await Promise.allSettled(addEntityPromises)\n }\n } catch (e) {\n // Activity is not accessible\n console.error(e)\n }\n },\n [accessToken, addEntity],\n )\n\n /**\n * This effect code executes when no nodes have been added.\n * It will add the root nodes, and attempt to expand the root nodes.\n */\n useEffect(() => {\n if (rootEntityHeaders && tempNodes.length == 0) {\n const nodesCopy = [...tempNodes]\n const edgesCopy = [...tempEdges]\n const addAndExpandPromises: Promise<void>[] = []\n rootEntityHeaders.forEach(header => {\n const addEntityPromise = addEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(addEntityPromise)\n\n const expandEntityPromise = onExpandEntity({\n entityHeader: header,\n nodesCopy,\n edgesCopy,\n })\n addAndExpandPromises.push(expandEntityPromise)\n })\n Promise.allSettled(addAndExpandPromises).finally(() => {\n setTempNodes(nodesCopy)\n setTempEdges(edgesCopy)\n setInitialBuildComplete(true)\n })\n }\n }, [\n addEntity,\n handleError,\n onExpandEntity,\n rootEntityHeaders,\n rootEntityRefs,\n tempEdges,\n tempNodes,\n ])\n\n /**\n * This effect code executes when a node is clicked.\n * We check to see if it is an expand node. If it is, then we remove the expand node (and associated edge)\n * and ask for the Activity and associated \"used\" nodes (entities and URLs)\n */\n useEffect(() => {\n const nodeData: ProvenanceNodeData = clickedNode?.data as ProvenanceNodeData\n if (clickedNode && nodeData?.type == NodeType.EXPAND) {\n const expandNodeDataProps = nodeData.props as ExpandGraphNodeDataProps\n if (expandNodeDataProps.itemCount > MAX_ACTIVITY_EXPAND_NODES) {\n displayToast(\n 'Web visualization does not support expanding this many items at this time.',\n 'danger',\n )\n return\n } else {\n // graph will be used outside of synapse, so show a non-branded spinner\n nodeData.label = <CircularProgress size={30} />\n // remove clicked node\n const nodesWithoutExpandNode = tempNodes.filter(\n node => node.id != clickedNode.id,\n )\n const edgeToRemove = getConnectedEdges([clickedNode], tempEdges)[0]\n const edgesWithoutExpandEdge = tempEdges.filter(\n edge => edge != edgeToRemove,\n )\n onExpandEntity({\n entityHeader: expandNodeDataProps.entityHeader,\n nodesCopy: nodesWithoutExpandNode,\n edgesCopy: edgesWithoutExpandEdge,\n }).finally(() => {\n setTempNodes(nodesWithoutExpandNode)\n setTempEdges(edgesWithoutExpandEdge)\n })\n }\n setClickedNode(undefined)\n }\n }, [clickedNode, tempNodes, tempEdges, onExpandEntity])\n\n /**\n * This effect code is run when the graph nodes or edges change.\n * It feeds the nodes and edges into our layout library to figure out where they should be positioned.\n * The result is saved in the state variable \"nodes\" and \"edges\".\n */\n useEffect(() => {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(\n tempNodes,\n tempEdges,\n 'TB',\n )\n // hack: ProvenanceUtils.getProvenanceNode() returns a new object every time, so check to see if\n // there were any real changes\n if (!isArrayEqual(layoutedNodes, nodes)) {\n setNodes(layoutedNodes)\n if (onNodesChangedListener) {\n onNodesChangedListener(layoutedNodes)\n }\n }\n if (!isArrayEqual(layoutedEdges, edges)) {\n setEdges(layoutedEdges)\n if (onEdgesChangedListener) {\n onEdgesChangedListener(layoutedEdges)\n }\n }\n }, [\n tempNodes,\n tempEdges,\n nodes,\n edges,\n setNodes,\n setEdges,\n initializedPosition,\n reactFlowInstance,\n rootEntityRefs,\n onNodesChangedListener,\n onEdgesChangedListener,\n ])\n\n const onPaneScrollFunction: (event?: WheelEvent) => void = useCallback(\n event => {\n // Cannot simply check the truthy value of event.deltaX (or Y) because the value might be 0 (or -0), which is falsy\n if (event?.deltaX !== undefined && event.deltaY !== undefined) {\n window.scrollTo(\n window.scrollX + event.deltaX,\n window.scrollY + event.deltaY,\n )\n }\n },\n [],\n )\n return (\n <div\n className=\"ProvenanceWidget\"\n role=\"graphics-doc\" //https://www.w3.org/wiki/SVG_Accessibility/ARIA_roles_for_charts#Document_Roles\n style={{\n width: '100%',\n height: containerHeight,\n }}\n >\n {showNoProvenance ? (\n <Stack\n sx={{\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n }}\n >\n <Typography\n sx={{\n color: 'greyV2.900',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 540,\n marginBottom: '12px',\n }}\n >\n {NO_PROVENANCE_TITLE}\n </Typography>\n <Typography\n sx={{\n color: 'greyV2.900',\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 440,\n }}\n >\n {NO_PROVENANCE_MESSAGE(entityTypeName)}\n </Typography>\n {onEditProvenanceClicked && (\n <Button\n variant=\"outlined\"\n sx={{\n borderRadius: '6px',\n border: '1px solid',\n borderColor: 'greyV2.400',\n background: EDIT_PROVENANCE_BUTTON_BACKGROUND_COLOR,\n color: 'greyV2.800',\n fontWeight: 540,\n lineHeight: '12px' /* 100% */,\n letterSpacing: '-0.24px',\n marginTop: '20px',\n height: '28px',\n padding: '8px',\n }}\n onClick={onEditProvenanceClicked}\n >\n {EDIT_PROVENANCE_TEXT}\n </Button>\n )}\n </Stack>\n ) : (\n <ReactFlow\n defaultViewport={{ x: 0, y: 0, zoom: DEFAULT_ZOOM }}\n nodes={nodes}\n edges={edges}\n onNodeClick={onClickNode}\n // onNodesChange={onNodesChange} // SWC-6804: When the nodes/edges are updated (expanded) the graph is already re-rendered.\n // onEdgesChange={onEdgesChange} // Specifying these callbacks causes an infinite re-rendering loop.\n attributionPosition=\"bottom-right\"\n onConnect={undefined}\n zoomOnScroll={false}\n onPaneScroll={onPaneScrollFunction}\n >\n <Controls />\n </ReactFlow>\n )}\n </div>\n )\n}\n\nconst ProvenanceGraph = (props: ProvenanceProps): React.ReactNode => {\n return (\n <SynapseErrorBoundary>\n <ReactFlowProvider>\n <ProvenanceReactFlow {...props} />\n </ReactFlowProvider>\n </SynapseErrorBoundary>\n )\n}\n\nexport default ProvenanceGraph\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterConditionRow.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/FilterConditionRow.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAA;AAEhE,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,WAAW,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"FilterConditionRow.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/FilterConditionRow.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAA;AAEhE,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,WAAW,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAqKhE;AAuJD,eAAO,MAAM,qBAAqB,KAAK,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { splitAndTrim as e } from "../../utils/functions/StringUtils.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { getEnumerationFacet as t } from "../../utils/functions/enumerationFacet.js";
|
|
3
|
+
import { defaultOpForColumnType as n } from "./queryBuilderOperations.js";
|
|
4
|
+
import { availableOpsForKind as r, classifyColumn as i, facetValueMatchesFilter as a, labelForOp as o } from "./queryBuilderMetadata.js";
|
|
4
5
|
import { useQueryBuilderInternalContext as s } from "./QueryBuilderInternalContext.js";
|
|
5
6
|
import c from "./FilterConditionRow.module.js";
|
|
6
7
|
import l from "./queryBuilderDrag.module.js";
|
|
@@ -8,16 +9,16 @@ import { QBDragHandle as u } from "./QBDragHandle.js";
|
|
|
8
9
|
import { useCallback as d, useMemo as f, useState as p } from "react";
|
|
9
10
|
import { Autocomplete as m, IconButton as h, InputLabel as g, MenuItem as _, Select as v, TextField as y, ToggleButton as b, ToggleButtonGroup as x, Tooltip as S } from "@mui/material";
|
|
10
11
|
import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
11
|
-
import
|
|
12
|
-
import D from "@
|
|
12
|
+
import E from "@mui/icons-material/DeleteOutline";
|
|
13
|
+
import { useSortable as D } from "@dnd-kit/react/sortable";
|
|
13
14
|
//#region src/components/QueryBuilder/FilterConditionRow.tsx
|
|
14
15
|
function O(e) {
|
|
15
|
-
let { condition:
|
|
16
|
-
id:
|
|
16
|
+
let { condition: a, parentGroupId: d, index: p } = e, { columnModels: b, facetResults: x, onlyFacetedColumns: O, getColumnDisplayName: A, updateConditionAt: j, removeConditionAt: P } = s(), { ref: F, handleRef: I, isDragSource: L } = D({
|
|
17
|
+
id: a.id,
|
|
17
18
|
index: p,
|
|
18
19
|
group: d,
|
|
19
20
|
disabled: { droppable: !0 }
|
|
20
|
-
}), R = f(() => new Set(x.filter(
|
|
21
|
+
}), R = f(() => new Set(x.filter((e) => t(e) !== void 0).map((e) => e.columnName)), [x]), z = f(() => (O ? b.filter((e) => R.has(e.name)) : b).map((e) => ({
|
|
21
22
|
name: e.name,
|
|
22
23
|
columnType: e.columnType,
|
|
23
24
|
label: A(e.name)
|
|
@@ -26,13 +27,13 @@ function O(e) {
|
|
|
26
27
|
R,
|
|
27
28
|
O,
|
|
28
29
|
A
|
|
29
|
-
]), B = z.find((e) => e.name ===
|
|
30
|
+
]), B = z.find((e) => e.name === a.columnName) ?? null, V = a.columnName != null && R.has(a.columnName), H = i(a.columnType, V), U = r(H), W = `qb-op-label-${a.id}`;
|
|
30
31
|
return /* @__PURE__ */ T("div", {
|
|
31
32
|
ref: F,
|
|
32
33
|
className: `${c.row}${L ? ` ${l.dragSource}` : ""}`,
|
|
33
34
|
role: "group",
|
|
34
|
-
"aria-label": `Filter condition${
|
|
35
|
-
"data-qb-node-id":
|
|
35
|
+
"aria-label": `Filter condition${a.columnName ? ` on ${a.columnName}` : ""}`,
|
|
36
|
+
"data-qb-node-id": a.id,
|
|
36
37
|
children: [
|
|
37
38
|
/* @__PURE__ */ w(u, {
|
|
38
39
|
handleRef: I,
|
|
@@ -44,8 +45,8 @@ function O(e) {
|
|
|
44
45
|
size: "small",
|
|
45
46
|
className: c.remove,
|
|
46
47
|
"aria-label": "Remove condition",
|
|
47
|
-
onClick: () => P(
|
|
48
|
-
children: /* @__PURE__ */ w(
|
|
48
|
+
onClick: () => P(a.id),
|
|
49
|
+
children: /* @__PURE__ */ w(E, { fontSize: "small" })
|
|
49
50
|
})
|
|
50
51
|
}),
|
|
51
52
|
/* @__PURE__ */ w(m, {
|
|
@@ -64,12 +65,12 @@ function O(e) {
|
|
|
64
65
|
"aria-label": "Property"
|
|
65
66
|
}
|
|
66
67
|
}),
|
|
67
|
-
onChange: (e,
|
|
68
|
-
if (
|
|
69
|
-
let o =
|
|
70
|
-
j(
|
|
71
|
-
columnName:
|
|
72
|
-
columnType:
|
|
68
|
+
onChange: (e, t) => {
|
|
69
|
+
if (t == null) return;
|
|
70
|
+
let o = r(i(t.columnType, N(x, t.name))), s = o.length > 0 ? o[0] : n(t.columnType);
|
|
71
|
+
j(a.id, {
|
|
72
|
+
columnName: t.name,
|
|
73
|
+
columnType: t.columnType,
|
|
73
74
|
op: s,
|
|
74
75
|
values: [],
|
|
75
76
|
rangeMin: null,
|
|
@@ -87,10 +88,10 @@ function O(e) {
|
|
|
87
88
|
size: "small",
|
|
88
89
|
labelId: W,
|
|
89
90
|
variant: "outlined",
|
|
90
|
-
value: U.includes(
|
|
91
|
+
value: U.includes(a.op) ? a.op : U[0],
|
|
91
92
|
onChange: (e) => {
|
|
92
93
|
let t = e.target.value;
|
|
93
|
-
j(
|
|
94
|
+
j(a.id, { op: t });
|
|
94
95
|
},
|
|
95
96
|
"aria-label": "Operator",
|
|
96
97
|
children: U.map((e) => /* @__PURE__ */ w(_, {
|
|
@@ -99,11 +100,11 @@ function O(e) {
|
|
|
99
100
|
}, e))
|
|
100
101
|
})] }),
|
|
101
102
|
/* @__PURE__ */ w(k, {
|
|
102
|
-
condition:
|
|
103
|
+
condition: a,
|
|
103
104
|
columnKind: H,
|
|
104
105
|
hasFacet: V,
|
|
105
|
-
facetValues: V &&
|
|
106
|
-
onChange: (e) => j(
|
|
106
|
+
facetValues: V && a.columnName != null ? M(x, a.columnName) : [],
|
|
107
|
+
onChange: (e) => j(a.id, e)
|
|
107
108
|
})
|
|
108
109
|
]
|
|
109
110
|
});
|
|
@@ -213,7 +214,7 @@ function k(t) {
|
|
|
213
214
|
}
|
|
214
215
|
var A = 40;
|
|
215
216
|
function j(e) {
|
|
216
|
-
let { columnName: t, facetValues: n, selectedValues: r, onChange:
|
|
217
|
+
let { columnName: t, facetValues: n, selectedValues: r, onChange: i } = e, { getValueDisplayName: o } = s(), [l, u] = p(""), m = n.length > 40, h = d((e) => o(t, e), [o, t]), g = f(() => [...n].toSorted((e, t) => h(e).localeCompare(h(t), void 0, { sensitivity: "base" })), [n, h]), _ = f(() => m ? g.filter((e) => a(e, h(e), l)) : g, [
|
|
217
218
|
g,
|
|
218
219
|
l,
|
|
219
220
|
m,
|
|
@@ -234,7 +235,7 @@ function j(e) {
|
|
|
234
235
|
children: /* @__PURE__ */ w(x, {
|
|
235
236
|
className: c.pillGroup,
|
|
236
237
|
value: r,
|
|
237
|
-
onChange: (e, t) =>
|
|
238
|
+
onChange: (e, t) => i(t),
|
|
238
239
|
"aria-label": "Selected values",
|
|
239
240
|
children: _.map((e) => /* @__PURE__ */ w(b, {
|
|
240
241
|
value: e,
|
|
@@ -244,12 +245,12 @@ function j(e) {
|
|
|
244
245
|
})]
|
|
245
246
|
});
|
|
246
247
|
}
|
|
247
|
-
function M(e,
|
|
248
|
-
let
|
|
249
|
-
return
|
|
248
|
+
function M(e, n) {
|
|
249
|
+
let r = e.find((e) => e.columnName === n);
|
|
250
|
+
return (r && t(r))?.facetValues.map((e) => e.value) ?? [];
|
|
250
251
|
}
|
|
251
|
-
function N(e,
|
|
252
|
-
return e.some((e) => e.columnName ===
|
|
252
|
+
function N(e, n) {
|
|
253
|
+
return e.some((e) => e.columnName === n && t(e) !== void 0);
|
|
253
254
|
}
|
|
254
255
|
//#endregion
|
|
255
256
|
export { O as FilterConditionRow, A as PILL_FILTER_THRESHOLD };
|