synapse-react-client 4.0.46 → 4.0.48
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/useSubmitAridhiaDar.js +2 -2
- package/dist/aridhia-queries/useSubmitAridhiaDar.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/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/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/Authentication/LastLoginInfo.js +2 -2
- 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/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.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/ChallengeTeamWizard/SelectChallengeTeam.js +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.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/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.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/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 +9 -7
- 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/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/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.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/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/EntityHeaderTable/EntityHeaderTable.js +4 -4
- 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/Evaluation/EvaluationRoundEditor.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/FormStructurePanel.js +7 -7
- package/dist/components/FormTemplateEditor/StepCard.js +9 -9
- 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 +1 -1
- 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/TableRowGenericCard.js +37 -37
- package/dist/components/GoalsV3/GoalsV3.js +1 -1
- package/dist/components/GoalsV3/GoalsV3.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/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/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/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/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/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- 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 +28 -27
- 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/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/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/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
- package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.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/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/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 +142 -142
- 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 +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.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.js +2 -2
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +60 -60
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.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/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/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 +2 -2
- package/dist/components/Webhook/WebhookDashboard.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/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/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/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/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 +9 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +24 -15
- 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/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/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/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/tsconfig.build.tsbuildinfo +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/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 +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotLegendList.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendList.tsx"],"sourcesContent":["import { Box, Tooltip, Typography } from '@mui/material'\nimport { FacetPlotLegendProps } from './FacetPlotLegendUtils'\n\nexport function FacetPlotLegendList(props: FacetPlotLegendProps) {\n const { labels, colors = [], isExpanded } = props\n if (!labels) {\n return <></>\n }\n const numLegendItems = isExpanded\n ? Math.min(labels.length, 9)\n : Math.min(labels.length, 4)\n if (numLegendItems === 0) {\n return <></>\n }\n return (\n <div\n className={`FacetNavPanel__body__legend${isExpanded ? '--expanded' : ''}`}\n >\n {labels.slice(0, numLegendItems).map((facetValue, index) => {\n return (\n <Tooltip\n title={facetValue.label}\n placement={'top'}\n key={facetValue.label}\n >\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: '20px auto 60px',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n cursor: 'default',\n backgroundColor: colors[index],\n }}\n key={`legendLabel_${index}`}\n style={{ cursor: 'default' }}\n />\n <Typography\n variant=\"body2\"\n sx={{\n display: 'block',\n width: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontSize: '14px',\n }}\n >\n {facetValue.label}\n </Typography>\n <Typography\n variant=\"body2\"\n sx={{
|
|
1
|
+
{"version":3,"file":"FacetPlotLegendList.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendList.tsx"],"sourcesContent":["import { Box, Tooltip, Typography } from '@mui/material'\nimport { FacetPlotLegendProps } from './FacetPlotLegendUtils'\n\nexport function FacetPlotLegendList(props: FacetPlotLegendProps) {\n const { labels, colors = [], isExpanded } = props\n if (!labels) {\n return <></>\n }\n const numLegendItems = isExpanded\n ? Math.min(labels.length, 9)\n : Math.min(labels.length, 4)\n if (numLegendItems === 0) {\n return <></>\n }\n return (\n <div\n className={`FacetNavPanel__body__legend${isExpanded ? '--expanded' : ''}`}\n >\n {labels.slice(0, numLegendItems).map((facetValue, index) => {\n return (\n <Tooltip\n title={facetValue.label}\n placement={'top'}\n key={facetValue.label}\n >\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: '20px auto 60px',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n cursor: 'default',\n backgroundColor: colors[index],\n }}\n key={`legendLabel_${index}`}\n style={{ cursor: 'default' }}\n />\n <Typography\n variant=\"body2\"\n sx={{\n display: 'block',\n width: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontSize: '14px',\n }}\n >\n {facetValue.label}\n </Typography>\n <Typography\n variant=\"body2\"\n sx={{\n color: 'grey.600',\n fontSize: '14px',\n whiteSpace: 'nowrap',\n flexShrink: 0,\n }}\n >\n {facetValue.countText}\n </Typography>\n </Box>\n </Tooltip>\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;AAGA,SAAgB,EAAoB,GAA6B;CAC/D,IAAM,EAAE,WAAQ,YAAS,CAAC,GAAG,kBAAe;CAC5C,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,IAAM,IAAiB,IACnB,KAAK,IAAI,EAAO,QAAQ,CAAC,IACzB,KAAK,IAAI,EAAO,QAAQ,CAAC;CAI7B,OAHI,MAAmB,IACd,kBAAA,GAAA,CAAI,CAAA,IAGX,kBAAC,OAAD;EACE,WAAW,8BAA8B,IAAa,eAAe;YAEpE,EAAO,MAAM,GAAG,CAAc,EAAE,KAAK,GAAY,MAE9C,kBAAC,GAAD;GACE,OAAO,EAAW;GAClB,WAAW;aAGX,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,qBAAqB;KACrB,YAAY;KACZ,KAAK;IACP;cANF;KAQE,kBAAC,GAAD;MACE,IAAI;OACF,OAAO;OACP,QAAQ;OACR,QAAQ;OACR,iBAAiB,EAAO;MAC1B;MAEA,OAAO,EAAE,QAAQ,UAAU;KAC5B,GAFM,eAAe,GAErB;KACD,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OACF,SAAS;OACT,OAAO;OACP,UAAU;OACV,cAAc;OACd,YAAY;OACZ,UAAU;MACZ;gBAEC,EAAW;KACF,CAAA;KACZ,kBAAC,GAAD;MACE,SAAQ;MACR,IAAI;OACF,OAAO;OACP,UAAU;OACV,YAAY;OACZ,YAAY;MACd;gBAEC,EAAW;KACF,CAAA;IACT;;EACE,GA7CF,EAAW,KA6CT,CAEZ;CACE,CAAA;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotLegendTable.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendTable.tsx"],"sourcesContent":["import { Box, Link, Typography } from '@mui/material'\nimport {\n FacetPlotLegendProps,\n MAX_LEGEND_LENGTH,\n truncate,\n} from './FacetPlotLegendUtils'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\n\ntype FacetPlotLegendTableProps = FacetPlotLegendProps & {\n facetName?: string\n linkToFullQuery?: string\n}\n\nexport function FacetPlotLegendTable(props: FacetPlotLegendTableProps) {\n const { facetName, labels, colors = [], isExpanded, linkToFullQuery } = props\n\n const { unitDescription } = useQueryVisualizationContext()\n\n if (!labels) {\n return <></>\n }\n const numLegendItems = isExpanded\n ? Math.min(labels.length, 9)\n : Math.min(labels.length, 4)\n if (numLegendItems === 0) {\n return <></>\n }\n return (\n <>\n <Box\n component={'table'}\n className={`FacetNavPanel__body__legend${\n isExpanded ? '--expanded' : ''\n }`}\n sx={{ width: '100%', color: 'grey.800', 'td,th': { py: 0.5 } }}\n >\n <thead>\n <Box\n component={'tr'}\n sx={{ borderBottom: '1px solid', borderBottomColor: 'grey.300' }}\n >\n <th>\n <Typography\n variant={'body1'}\n sx={{\n fontWeight: 700,\n size: '14px',\n }}\n >\n {facetName}\n </Typography>\n </th>\n <th style={{ textAlign: 'right', marginRight: '16px' }}>\n <Typography\n variant={'body1'}\n sx={{\n size: '14px',\n fontWeight: 700,\n textAlign: 'right',\n }}\n >\n {unitDescription}\n </Typography>\n </th>\n </Box>\n </thead>\n <tbody>\n {labels.slice(0, numLegendItems).map((facetValue, index) => {\n const labelDisplay = truncate(facetValue.label, MAX_LEGEND_LENGTH)\n return (\n <tr key={facetValue.label}>\n <td>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n cursor: 'default',\n backgroundColor: colors[index],\n }}\n key={`legendLabel_${index}`}\n style={{ cursor: 'default' }}\n />\n <Typography variant=\"body1\" sx={{ fontSize: '14px' }}>\n {labelDisplay}\n </Typography>\n </Box>\n </td>\n <td>\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '14px',\n color: 'grey.600',\n textAlign: 'right',\n }}\n >\n {facetValue.
|
|
1
|
+
{"version":3,"file":"FacetPlotLegendTable.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendTable.tsx"],"sourcesContent":["import { Box, Link, Typography } from '@mui/material'\nimport {\n FacetPlotLegendProps,\n MAX_LEGEND_LENGTH,\n truncate,\n} from './FacetPlotLegendUtils'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\n\ntype FacetPlotLegendTableProps = FacetPlotLegendProps & {\n facetName?: string\n linkToFullQuery?: string\n}\n\nexport function FacetPlotLegendTable(props: FacetPlotLegendTableProps) {\n const { facetName, labels, colors = [], isExpanded, linkToFullQuery } = props\n\n const { unitDescription } = useQueryVisualizationContext()\n\n if (!labels) {\n return <></>\n }\n const numLegendItems = isExpanded\n ? Math.min(labels.length, 9)\n : Math.min(labels.length, 4)\n if (numLegendItems === 0) {\n return <></>\n }\n return (\n <>\n <Box\n component={'table'}\n className={`FacetNavPanel__body__legend${\n isExpanded ? '--expanded' : ''\n }`}\n sx={{ width: '100%', color: 'grey.800', 'td,th': { py: 0.5 } }}\n >\n <thead>\n <Box\n component={'tr'}\n sx={{ borderBottom: '1px solid', borderBottomColor: 'grey.300' }}\n >\n <th>\n <Typography\n variant={'body1'}\n sx={{\n fontWeight: 700,\n size: '14px',\n }}\n >\n {facetName}\n </Typography>\n </th>\n <th style={{ textAlign: 'right', marginRight: '16px' }}>\n <Typography\n variant={'body1'}\n sx={{\n size: '14px',\n fontWeight: 700,\n textAlign: 'right',\n }}\n >\n {unitDescription}\n </Typography>\n </th>\n </Box>\n </thead>\n <tbody>\n {labels.slice(0, numLegendItems).map((facetValue, index) => {\n const labelDisplay = truncate(facetValue.label, MAX_LEGEND_LENGTH)\n return (\n <tr key={facetValue.label}>\n <td>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: '14px',\n height: '14px',\n cursor: 'default',\n backgroundColor: colors[index],\n }}\n key={`legendLabel_${index}`}\n style={{ cursor: 'default' }}\n />\n <Typography variant=\"body1\" sx={{ fontSize: '14px' }}>\n {labelDisplay}\n </Typography>\n </Box>\n </td>\n <td>\n <Typography\n variant=\"body1\"\n sx={{\n fontSize: '14px',\n color: 'grey.600',\n textAlign: 'right',\n }}\n >\n {facetValue.countText}\n </Typography>\n </td>\n </tr>\n )\n })}\n </tbody>\n </Box>\n {linkToFullQuery && (\n <Box sx={{ my: 2 }}>\n <Link href={linkToFullQuery}>\n View {labels.length} {facetName} options\n </Link>\n </Box>\n )}\n </>\n )\n}\n"],"mappings":";;;;;;AAaA,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,cAAW,WAAQ,YAAS,CAAC,GAAG,eAAY,uBAAoB,GAElE,EAAE,uBAAoB,EAA6B;CAEzD,IAAI,CAAC,GACH,OAAO,kBAAA,GAAA,CAAI,CAAA;CAEb,IAAM,IAAiB,IACnB,KAAK,IAAI,EAAO,QAAQ,CAAC,IACzB,KAAK,IAAI,EAAO,QAAQ,CAAC;CAI7B,OAHI,MAAmB,IACd,kBAAA,GAAA,CAAI,CAAA,IAGX,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,WAAW;EACX,WAAW,8BACT,IAAa,eAAe;EAE9B,IAAI;GAAE,OAAO;GAAQ,OAAO;GAAY,SAAS,EAAE,IAAI,GAAI;EAAE;YAL/D,CAOE,kBAAC,SAAD,EAAA,UACE,kBAAC,GAAD;GACE,WAAW;GACX,IAAI;IAAE,cAAc;IAAa,mBAAmB;GAAW;aAFjE,CAIE,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;IACE,SAAS;IACT,IAAI;KACF,YAAY;KACZ,MAAM;IACR;cAEC;GACS,CAAA,EACV,CAAA,GACJ,kBAAC,MAAD;IAAI,OAAO;KAAE,WAAW;KAAS,aAAa;IAAO;cACnD,kBAAC,GAAD;KACE,SAAS;KACT,IAAI;MACF,MAAM;MACN,YAAY;MACZ,WAAW;KACb;eAEC;IACS,CAAA;GACV,CAAA,CACD;KACA,CAAA,GACP,kBAAC,SAAD,EAAA,UACG,EAAO,MAAM,GAAG,CAAc,EAAE,KAAK,GAAY,MAAU;GAC1D,IAAM,IAAe,EAAS,EAAW,OAAA,EAAwB;GACjE,OACE,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;IACE,IAAI;KACF,SAAS;KACT,YAAY;KACZ,KAAK;IACP;cALF,CAOE,kBAAC,GAAD;KACE,IAAI;MACF,OAAO;MACP,QAAQ;MACR,QAAQ;MACR,iBAAiB,EAAO;KAC1B;KAEA,OAAO,EAAE,QAAQ,UAAU;IAC5B,GAFM,eAAe,GAErB,GACD,kBAAC,GAAD;KAAY,SAAQ;KAAQ,IAAI,EAAE,UAAU,OAAO;eAChD;IACS,CAAA,CACT;MACH,CAAA,GACJ,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;IACE,SAAQ;IACR,IAAI;KACF,UAAU;KACV,OAAO;KACP,WAAW;IACb;cAEC,EAAW;GACF,CAAA,EACV,CAAA,CACF,EAAA,GApCK,EAAW,KAoChB;EAER,CAAC,EACI,CAAA,CACJ;KACJ,KACC,kBAAC,GAAD;EAAK,IAAI,EAAE,IAAI,EAAE;YACf,kBAAC,GAAD;GAAM,MAAM;aAAZ;IAA6B;IACrB,EAAO;IAAO;IAAE;IAAU;GAC5B;;CACH,CAAA,CAEP,EAAA,CAAA;AAEN"}
|
|
@@ -3,6 +3,8 @@ export declare function truncate(str: string | undefined, n: number): string | u
|
|
|
3
3
|
export type FacetWithLabel = {
|
|
4
4
|
label: string;
|
|
5
5
|
count: number;
|
|
6
|
+
/** The count as displayed: localized, or a range/approximation for post-processed facet counts. */
|
|
7
|
+
countText: string;
|
|
6
8
|
};
|
|
7
9
|
export type FacetPlotLegendProps = {
|
|
8
10
|
labels?: FacetWithLabel[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotLegendUtils.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAE,MAAW,CAAA;AAE3C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,sBAM1D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"FacetPlotLegendUtils.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAE,MAAW,CAAA;AAE3C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,sBAM1D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,mGAAmG;IACnG,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotLegendUtils.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendUtils.ts"],"sourcesContent":["export const MAX_LEGEND_LENGTH: number = 30\n\nexport function truncate(str: string | undefined, n: number) {\n if (!str) {\n return str\n }\n const trimmedStr: string = str.trim()\n return trimmedStr.length > n ? trimmedStr.substring(0, n - 1) + '…' : str\n}\n\nexport type FacetWithLabel = {\n label: string\n count: number\n}\n\nexport type FacetPlotLegendProps = {\n labels?: FacetWithLabel[]\n colors?: string[]\n isExpanded: boolean\n}\n"],"mappings":";AAAA,IAAa,IAA4B;AAEzC,SAAgB,EAAS,GAAyB,GAAW;CAC3D,IAAI,CAAC,GACH,OAAO;CAET,IAAM,IAAqB,EAAI,KAAK;CACpC,OAAO,EAAW,SAAS,IAAI,EAAW,UAAU,GAAG,IAAI,CAAC,IAAI,MAAM;AACxE"}
|
|
1
|
+
{"version":3,"file":"FacetPlotLegendUtils.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/FacetPlotLegendUtils.ts"],"sourcesContent":["export const MAX_LEGEND_LENGTH: number = 30\n\nexport function truncate(str: string | undefined, n: number) {\n if (!str) {\n return str\n }\n const trimmedStr: string = str.trim()\n return trimmedStr.length > n ? trimmedStr.substring(0, n - 1) + '…' : str\n}\n\nexport type FacetWithLabel = {\n label: string\n count: number\n /** The count as displayed: localized, or a range/approximation for post-processed facet counts. */\n countText: string\n}\n\nexport type FacetPlotLegendProps = {\n labels?: FacetWithLabel[]\n colors?: string[]\n isExpanded: boolean\n}\n"],"mappings":";AAAA,IAAa,IAA4B;AAEzC,SAAgB,EAAS,GAAyB,GAAW;CAC3D,IAAI,CAAC,GACH,OAAO;CAET,IAAM,IAAqB,EAAI,KAAK;CACpC,OAAO,EAAW,SAAS,IAAI,EAAW,UAAU,GAAG,IAAI,CAAC,IAAI,MAAM;AACxE"}
|
|
@@ -5,6 +5,13 @@ export type PlotsContainerProps = {
|
|
|
5
5
|
facetsToPlot?: string[];
|
|
6
6
|
customPlots?: QueryWrapperSynapsePlotProps[];
|
|
7
7
|
initialPlotTypeByFacetColumnName?: Record<string, PlotType>;
|
|
8
|
+
/** Chart type of facet plots without an entry in `initialPlotTypeByFacetColumnName`. Defaults to a pie chart. */
|
|
9
|
+
defaultPlotType?: PlotType;
|
|
10
|
+
/**
|
|
11
|
+
* When true, the facet plots cannot change the query: slices can't be clicked and the filter
|
|
12
|
+
* dropdowns are hidden. Set while the Query Builder owns the filters.
|
|
13
|
+
*/
|
|
14
|
+
disableFiltering?: boolean;
|
|
8
15
|
};
|
|
9
16
|
type CustomPlotIdentifier = {
|
|
10
17
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotsContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/PlotsContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAO/C,OAAgC,EAC9B,4BAA4B,EAC7B,MAAM,mDAAmD,CAAA;AAC1D,OAAsB,EAEpB,QAAQ,EACT,MAAM,4BAA4B,CAAA;AAMnC,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAA;IAC5C,gCAAgC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"PlotsContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/PlotsContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAO/C,OAAgC,EAC9B,4BAA4B,EAC7B,MAAM,mDAAmD,CAAA;AAC1D,OAAsB,EAEpB,QAAQ,EACT,MAAM,4BAA4B,CAAA;AAMnC,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAA;IAC5C,gCAAgC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3D,iHAAiH;IACjH,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AACD,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,IAAI,CAAA;CACf,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA0UD,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,2CAO5E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useQueryVisualizationContext as e } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
2
|
+
import { facetObjectMatchesDefinition as t } from "../../../utils/functions/queryUtils.js";
|
|
3
|
+
import { useSuspenseGetQueryMetadata as n } from "../../QueryWrapper/useGetQueryMetadata.js";
|
|
4
4
|
import "../../QueryVisualizationWrapper/index.js";
|
|
5
5
|
import r from "./FacetNavPanel.js";
|
|
6
6
|
import i, { getFacets as a } from "./useFacetPlots.js";
|
|
@@ -10,92 +10,94 @@ import { Suspense as c, useEffect as l, useMemo as u, useState as d } from "reac
|
|
|
10
10
|
import { Box as f, Button as p } from "@mui/material";
|
|
11
11
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
12
12
|
//#region src/components/widgets/facet-nav/PlotsContainer.tsx
|
|
13
|
-
var _ = 2, v = (
|
|
13
|
+
var _ = 2, v = (e, n) => "__custom" in n && "__custom" in e ? e.title == n.title : !("__custom" in n) && !("__custom" in e) ? t(e, n) : !1;
|
|
14
14
|
function y(e) {
|
|
15
15
|
return e === "bar" ? "BAR" : "PIE";
|
|
16
16
|
}
|
|
17
|
-
var b = (e) => "__custom" in e.plotId ? `custom-${e.plotId.title}` : `facet-${e.plotId.columnName}-${e.plotId.jsonPath}`, x = (e, t) =>
|
|
17
|
+
var b = (e) => "__custom" in e.plotId ? `custom-${e.plotId.title}` : `facet-${e.plotId.columnName}-${e.plotId.jsonPath}`, x = (e, t) => t.some((t) => v(t.plotId, e)), S = (e) => ({
|
|
18
18
|
__custom: !0,
|
|
19
19
|
title: e.title ?? ""
|
|
20
|
-
}), C = (e = [], t = [], n) => [...e.map((e, t) => ({
|
|
20
|
+
}), C = (e = [], t = [], n, r) => [...e.map((e, t) => ({
|
|
21
21
|
plotId: S(e),
|
|
22
22
|
isHidden: t >= _,
|
|
23
23
|
plotType: y(e.type)
|
|
24
|
-
})), ...t.map((t,
|
|
24
|
+
})), ...t.map((t, i) => ({
|
|
25
25
|
plotId: t.facetToPlot,
|
|
26
|
-
isHidden:
|
|
27
|
-
plotType: n?.[t.facetToPlot.columnName] ??
|
|
26
|
+
isHidden: i + e.length >= _,
|
|
27
|
+
plotType: n?.[t.facetToPlot.columnName] ?? r
|
|
28
28
|
}))], w = (e, t, n) => t.some((t) => v(S(t), e.plotId)) || n.some((t) => v(t.facetToPlot, e.plotId)), T = "PIE", E = [], D = [];
|
|
29
|
-
function O(
|
|
30
|
-
let { facetsToPlot: s = E, customPlots: c = D, initialPlotTypeByFacetColumnName: y } =
|
|
29
|
+
function O(t) {
|
|
30
|
+
let { facetsToPlot: s = E, customPlots: c = D, initialPlotTypeByFacetColumnName: y, defaultPlotType: O = T, disableFiltering: k } = t, { data: A } = n(), { showPlots: j } = e(), [M, N] = d([]), P = i(s), F = (e) => M.find((t) => v(e, t.plotId))?.plotType ?? O;
|
|
31
31
|
l(() => {
|
|
32
|
-
let e = C(c,
|
|
33
|
-
|
|
32
|
+
let e = C(c, P, y, O);
|
|
33
|
+
N((t) => {
|
|
34
34
|
let n = e.filter((e) => !x(e.plotId, t));
|
|
35
|
-
return [...t.filter((e) => w(e, c,
|
|
35
|
+
return [...t.filter((e) => w(e, c, P)), ...n];
|
|
36
36
|
});
|
|
37
37
|
}, [
|
|
38
38
|
c,
|
|
39
|
-
|
|
40
|
-
y
|
|
39
|
+
P,
|
|
40
|
+
y,
|
|
41
|
+
O
|
|
41
42
|
]);
|
|
42
|
-
let
|
|
43
|
-
|
|
43
|
+
let I = (e) => {
|
|
44
|
+
N((t) => t.map((t, n) => e ? {
|
|
44
45
|
...t,
|
|
45
46
|
isHidden: !1
|
|
46
47
|
} : {
|
|
47
48
|
...t,
|
|
48
49
|
isHidden: n >= _
|
|
49
50
|
}));
|
|
50
|
-
},
|
|
51
|
+
}, L = (e) => M.find((t) => v(e, t.plotId) && t.isHidden === !0) !== void 0, R = u(() => M.some((e) => e.isHidden === !0) ? "MORE" : M.length <= _ ? "NONE" : "LESS", [M]);
|
|
51
52
|
l(() => {
|
|
52
|
-
|
|
53
|
+
R === "LESS" && requestAnimationFrame(() => {
|
|
53
54
|
window.dispatchEvent(new Event("resize"));
|
|
54
55
|
});
|
|
55
|
-
}, [
|
|
56
|
-
let
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
},
|
|
61
|
-
|
|
56
|
+
}, [R]);
|
|
57
|
+
let z = (e) => {
|
|
58
|
+
V(e, "isHidden", !0);
|
|
59
|
+
}, B = (e, t) => {
|
|
60
|
+
V(e, "plotType", t);
|
|
61
|
+
}, V = (e, t, n) => {
|
|
62
|
+
N((r) => r.map((r) => v(e, r.plotId) ? {
|
|
62
63
|
...r,
|
|
63
64
|
[t]: n
|
|
64
65
|
} : r));
|
|
65
|
-
},
|
|
66
|
+
}, H = a(A, s).map((e, t) => ({
|
|
66
67
|
facet: {
|
|
67
68
|
columnName: e.columnName,
|
|
68
69
|
jsonPath: e.jsonPath
|
|
69
70
|
},
|
|
70
71
|
colorIndex: t
|
|
71
72
|
}));
|
|
72
|
-
return /* @__PURE__ */ h(m, { children:
|
|
73
|
-
className: `PlotsContainer ${
|
|
73
|
+
return /* @__PURE__ */ h(m, { children: M.length > 0 && /* @__PURE__ */ g("div", {
|
|
74
|
+
className: `PlotsContainer ${j ? "" : "hidden"} ${R === "LESS" ? "less" : ""}`,
|
|
74
75
|
children: [/* @__PURE__ */ h("div", {
|
|
75
76
|
className: "PlotsContainer__row",
|
|
76
77
|
role: "list",
|
|
77
|
-
children:
|
|
78
|
-
let t = "__custom" in e.plotId, n = c.find((t) => v(S(t), e.plotId)), i =
|
|
78
|
+
children: M.map((e) => {
|
|
79
|
+
let t = "__custom" in e.plotId, n = c.find((t) => v(S(t), e.plotId)), i = P.find((t) => v(t.facetToPlot, e.plotId));
|
|
79
80
|
return /* @__PURE__ */ g("div", {
|
|
80
81
|
className: [t ? "PlotsContainer__row__item--custom" : void 0, t && n?.fullWidth ? "PlotsContainer__row__item--full-width" : void 0].filter(Boolean).join(" ") || void 0,
|
|
81
82
|
style: {
|
|
82
83
|
minWidth: "435px",
|
|
83
|
-
display:
|
|
84
|
+
display: L(e.plotId) ? "none" : "block"
|
|
84
85
|
},
|
|
85
86
|
children: [t && n && /* @__PURE__ */ h(o, {
|
|
86
87
|
...n,
|
|
87
|
-
onHide: () =>
|
|
88
|
+
onHide: () => z(e.plotId)
|
|
88
89
|
}), !t && i && /* @__PURE__ */ h(r, {
|
|
89
|
-
index:
|
|
90
|
-
onHide: () =>
|
|
91
|
-
plotType:
|
|
92
|
-
onSetPlotType: (t) =>
|
|
90
|
+
index: H.find((t) => v(t.facet, e.plotId))?.colorIndex,
|
|
91
|
+
onHide: () => z(e.plotId),
|
|
92
|
+
plotType: F(e.plotId),
|
|
93
|
+
onSetPlotType: (t) => B(e.plotId, t),
|
|
93
94
|
isModalView: !1,
|
|
95
|
+
disableFiltering: k,
|
|
94
96
|
...i
|
|
95
97
|
})]
|
|
96
98
|
}, b(e));
|
|
97
99
|
})
|
|
98
|
-
}),
|
|
100
|
+
}), R !== "NONE" && /* @__PURE__ */ h(f, {
|
|
99
101
|
sx: {
|
|
100
102
|
display: "flex",
|
|
101
103
|
justifyContent: "center",
|
|
@@ -106,18 +108,18 @@ function O(e) {
|
|
|
106
108
|
children: /* @__PURE__ */ h(p, {
|
|
107
109
|
variant: "contained",
|
|
108
110
|
color: "secondary",
|
|
109
|
-
onClick: () =>
|
|
111
|
+
onClick: () => I(R === "MORE"),
|
|
110
112
|
sx: { width: "150px" },
|
|
111
|
-
children:
|
|
113
|
+
children: R === "LESS" ? "Hide Charts" : "View All Charts"
|
|
112
114
|
})
|
|
113
115
|
})]
|
|
114
116
|
}) });
|
|
115
117
|
}
|
|
116
|
-
function k(
|
|
117
|
-
let { showPlots:
|
|
118
|
+
function k(t) {
|
|
119
|
+
let { showPlots: n } = e();
|
|
118
120
|
return /* @__PURE__ */ h(c, {
|
|
119
|
-
fallback:
|
|
120
|
-
children: /* @__PURE__ */ h(O, { ...
|
|
121
|
+
fallback: n ? /* @__PURE__ */ h(s, {}) : null,
|
|
122
|
+
children: /* @__PURE__ */ h(O, { ...t })
|
|
121
123
|
});
|
|
122
124
|
}
|
|
123
125
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotsContainer.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/PlotsContainer.tsx"],"sourcesContent":["import { UniqueFacetIdentifier } from '@/utils'\nimport { facetObjectMatchesDefinition } from '@/utils/functions/queryUtils'\nimport { Box, Button } from '@mui/material'\nimport type { PlotType as PlotlyPlotType } from 'plotly.js-basic-dist'\nimport { Suspense, useEffect, useMemo, useState } from 'react'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport QueryWrapperSynapsePlot, {\n QueryWrapperSynapsePlotProps,\n} from '../../QueryWrapperPlotNav/QueryWrapperSynapsePlot'\nimport FacetNavPanel, {\n FacetNavPanelProps,\n PlotType,\n} from '../facet-nav/FacetNavPanel'\nimport { PlotsContainerSkeleton } from './PlotsContainerSkeleton'\nimport useFacetPlots, { getFacets } from './useFacetPlots'\n\nconst DEFAULT_VISIBLE_PLOTS = 2\ntype ShowMoreState = 'MORE' | 'LESS' | 'NONE'\nexport type PlotsContainerProps = {\n facetsToPlot?: string[]\n customPlots?: QueryWrapperSynapsePlotProps[]\n initialPlotTypeByFacetColumnName?: Record<string, PlotType>\n}\ntype CustomPlotIdentifier = {\n title: string\n __custom: true\n}\nexport type PlotIdentifier = UniqueFacetIdentifier | CustomPlotIdentifier\n\nexport type UiPlotState = {\n plotId: PlotIdentifier\n isHidden: boolean\n plotType: PlotType\n index?: number\n}\nconst plotMatchesDefinition = (\n definition: PlotIdentifier,\n plotId: PlotIdentifier,\n) => {\n if ('__custom' in plotId && '__custom' in definition) {\n return definition.title == plotId.title\n } else if (!('__custom' in plotId) && !('__custom' in definition)) {\n return facetObjectMatchesDefinition(definition, plotId)\n } else {\n return false\n }\n}\n\nfunction convertPlotlyPlotTypeToFacetNavPlotType(\n plotlyPlotType: PlotlyPlotType,\n): PlotType {\n if (plotlyPlotType === 'bar') {\n return 'BAR'\n } else if (plotlyPlotType === 'pie') {\n return 'PIE'\n }\n return 'PIE'\n}\n\nconst generatePlotKey = (plotUiState: UiPlotState) => {\n if ('__custom' in plotUiState.plotId) {\n // For custom plots\n return `custom-${plotUiState.plotId.title}`\n } else {\n // For facet plots\n return `facet-${plotUiState.plotId.columnName}-${plotUiState.plotId.jsonPath}`\n }\n}\n\nconst isPlotInState = (\n plotId: PlotIdentifier,\n plotUiStateArray: UiPlotState[],\n): boolean => {\n return !!plotUiStateArray.find(plot => {\n return plotMatchesDefinition(plot.plotId, plotId)\n })\n}\n\nconst getCustomPlotIdentifier = (\n customPlot: QueryWrapperSynapsePlotProps,\n): PlotIdentifier => {\n return { __custom: true, title: customPlot.title ?? '' }\n}\n\nconst getCombinedNewPlots = (\n customPlots: QueryWrapperSynapsePlotProps[] = [],\n facetNavPanelPropsArray: Pick<\n FacetNavPanelProps,\n 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'\n >[] = [],\n initialPlotTypeByFacetColumnName?: Record<string, PlotType>,\n): UiPlotState[] => [\n ...customPlots.map((plotProps, index) => ({\n plotId: getCustomPlotIdentifier(plotProps),\n isHidden: index >= DEFAULT_VISIBLE_PLOTS,\n plotType: convertPlotlyPlotTypeToFacetNavPlotType(plotProps.type),\n })),\n ...facetNavPanelPropsArray.map((facetPlotProps, index) => ({\n plotId: facetPlotProps.facetToPlot,\n isHidden: index + customPlots.length >= DEFAULT_VISIBLE_PLOTS,\n plotType:\n initialPlotTypeByFacetColumnName?.[\n facetPlotProps.facetToPlot.columnName\n ] ?? DEFAULT_PLOT_TYPE,\n })),\n]\n\n// Remove plots that are no longer in props from prevPlots\nconst isPlotStillPresent = (\n prevPlot: UiPlotState,\n customPlots: QueryWrapperSynapsePlotProps[],\n facetNavPanelProps: Pick<\n FacetNavPanelProps,\n 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'\n >[],\n): boolean => {\n return (\n customPlots.some(customPlot =>\n plotMatchesDefinition(\n getCustomPlotIdentifier(customPlot),\n prevPlot.plotId,\n ),\n ) ||\n facetNavPanelProps.some(facetPlot =>\n plotMatchesDefinition(facetPlot.facetToPlot, prevPlot.plotId),\n )\n )\n} // fn returns true iff the plot id is in customPlots or facetNavPanelPropsArray\n\nconst DEFAULT_PLOT_TYPE: PlotType = 'PIE'\n\nconst DEFAULT_FACETS_TO_PLOT: string[] = []\nconst DEFAULT_CUSTOM_PLOTS: QueryWrapperSynapsePlotProps[] = []\n\nfunction PlotsContainer(props: PlotsContainerProps) {\n const {\n facetsToPlot = DEFAULT_FACETS_TO_PLOT,\n customPlots = DEFAULT_CUSTOM_PLOTS,\n initialPlotTypeByFacetColumnName,\n } = props\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { showPlots: showPlotVisualization } = useQueryVisualizationContext()\n const [plotUiStateArray, setPlotUiStateArray] = useState<UiPlotState[]>([])\n const facetNavPanelPropsArray = useFacetPlots(facetsToPlot)\n\n const getPlotType = (plotId: PlotIdentifier): PlotType => {\n const plotType = plotUiStateArray.find(item =>\n plotMatchesDefinition(plotId, item.plotId),\n )?.plotType\n return plotType ?? DEFAULT_PLOT_TYPE\n }\n\n useEffect(() => {\n const combinedNewPlots = getCombinedNewPlots(\n customPlots,\n facetNavPanelPropsArray,\n initialPlotTypeByFacetColumnName,\n )\n\n // Update the state with new plots\n setPlotUiStateArray(prevPlots => {\n // Filter to only include new plots\n const newPlots = combinedNewPlots.filter(plot => {\n const inState = isPlotInState(plot.plotId, prevPlots)\n return !inState\n })\n\n const updatedPlots = prevPlots.filter(prevPlot =>\n isPlotStillPresent(prevPlot, customPlots, facetNavPanelPropsArray),\n )\n\n // Append new plots\n const combinedPlots = [...updatedPlots, ...newPlots]\n return combinedPlots\n })\n }, [customPlots, facetNavPanelPropsArray, initialPlotTypeByFacetColumnName])\n\n // when 'show more/less' is clicked\n const onShowMoreClick = (shouldShowMore: boolean) => {\n setPlotUiStateArray(plotUiStateArray => {\n return plotUiStateArray.map((item, index) => {\n if (shouldShowMore) {\n // show everything\n return { ...item, isHidden: false }\n }\n // otherwise hide everything except the first few items\n return { ...item, isHidden: index >= DEFAULT_VISIBLE_PLOTS }\n })\n })\n }\n\n const isPlotHiddenInGrid = (plotId: PlotIdentifier) => {\n const itemHidden = plotUiStateArray.find(\n item =>\n plotMatchesDefinition(plotId, item.plotId) && item.isHidden === true,\n )\n const result = itemHidden !== undefined\n return result\n }\n\n const showMoreButtonState = useMemo<ShowMoreState>(() => {\n if (\n // if at least one item is hidden\n plotUiStateArray.find(item => item.isHidden === true)\n ) {\n return 'MORE'\n } else if (plotUiStateArray.length <= DEFAULT_VISIBLE_PLOTS) {\n return 'NONE'\n } else {\n return 'LESS'\n }\n }, [plotUiStateArray])\n\n // When all charts become visible (transition to 'LESS'), trigger a resize event so\n // Plotly recalculates dimensions for charts that were previously hidden (display: none).\n useEffect(() => {\n if (showMoreButtonState === 'LESS') {\n requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'))\n })\n }\n }, [showMoreButtonState])\n\n // hides plot graph\n const hidePlotInGrid = (plotId: PlotIdentifier) => {\n setUiPropertyForPlot(plotId, 'isHidden', true)\n }\n\n const setPlotType = (plotId: PlotIdentifier, plotType: PlotType) => {\n setUiPropertyForPlot(plotId, 'plotType', plotType)\n }\n\n const setUiPropertyForPlot = (\n plotId: PlotIdentifier,\n propName: keyof UiPlotState,\n value: boolean | PlotType, // 'the possible values of the above type' (currently can't be specified in TS using symbols)\n ) => {\n setPlotUiStateArray(plotUiStateArray =>\n plotUiStateArray.map(item =>\n plotMatchesDefinition(plotId, item.plotId)\n ? { ...item, [propName]: value }\n : item,\n ),\n )\n }\n\n const colorTracker: { facet: PlotIdentifier; colorIndex: number }[] =\n // TODO: customPlots should use the color index\n // additionally, it is unclear why this object is created\n // We can probably just pass the index from `plotUiStateArray.map)\n getFacets(queryMetadata, facetsToPlot).map((el, index) => {\n return {\n facet: { columnName: el.columnName, jsonPath: el.jsonPath },\n colorIndex: index,\n }\n })\n\n return (\n <>\n {plotUiStateArray.length > 0 && (\n <div\n className={`PlotsContainer ${showPlotVisualization ? '' : 'hidden'} ${\n showMoreButtonState === 'LESS' ? 'less' : ''\n }`}\n >\n <div className=\"PlotsContainer__row\" role=\"list\">\n {plotUiStateArray.map(plotUiState => {\n const isCustomPlot = '__custom' in plotUiState.plotId\n const customPlotProps = customPlots.find(customPlot =>\n plotMatchesDefinition(\n getCustomPlotIdentifier(customPlot),\n plotUiState.plotId,\n ),\n )\n const facetNavPanelProps = facetNavPanelPropsArray.find(props =>\n plotMatchesDefinition(props.facetToPlot, plotUiState.plotId),\n )\n\n return (\n <div\n className={\n [\n isCustomPlot\n ? 'PlotsContainer__row__item--custom'\n : undefined,\n isCustomPlot && customPlotProps?.fullWidth\n ? 'PlotsContainer__row__item--full-width'\n : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n }\n style={{\n minWidth: '435px',\n display: isPlotHiddenInGrid(plotUiState.plotId)\n ? 'none'\n : 'block',\n }}\n key={generatePlotKey(plotUiState)}\n >\n {isCustomPlot && customPlotProps && (\n <QueryWrapperSynapsePlot\n {...customPlotProps}\n onHide={() => hidePlotInGrid(plotUiState.plotId)}\n />\n )}\n {!isCustomPlot && facetNavPanelProps && (\n <FacetNavPanel\n index={\n colorTracker.find(el =>\n plotMatchesDefinition(el.facet, plotUiState.plotId),\n )?.colorIndex!\n }\n onHide={() => hidePlotInGrid(plotUiState.plotId)}\n plotType={getPlotType(plotUiState.plotId)}\n onSetPlotType={(plotType: PlotType) =>\n setPlotType(plotUiState.plotId, plotType)\n }\n isModalView={false}\n {...facetNavPanelProps}\n />\n )}\n </div>\n )\n })}\n </div>\n {showMoreButtonState !== 'NONE' && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: 'grey.100',\n p: 2,\n mt: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => onShowMoreClick(showMoreButtonState === 'MORE')}\n sx={{ width: '150px' }}\n >\n {showMoreButtonState === 'LESS'\n ? 'Hide Charts'\n : 'View All Charts'}\n </Button>\n </Box>\n )}\n </div>\n )}\n </>\n )\n}\n\nexport default function PlotsContainerWithSuspense(props: PlotsContainerProps) {\n const { showPlots } = useQueryVisualizationContext()\n return (\n <Suspense fallback={showPlots ? <PlotsContainerSkeleton /> : null}>\n <PlotsContainer {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlotsContainer.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/PlotsContainer.tsx"],"sourcesContent":["import { UniqueFacetIdentifier } from '@/utils'\nimport { facetObjectMatchesDefinition } from '@/utils/functions/queryUtils'\nimport { Box, Button } from '@mui/material'\nimport type { PlotType as PlotlyPlotType } from 'plotly.js-basic-dist'\nimport { Suspense, useEffect, useMemo, useState } from 'react'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport QueryWrapperSynapsePlot, {\n QueryWrapperSynapsePlotProps,\n} from '../../QueryWrapperPlotNav/QueryWrapperSynapsePlot'\nimport FacetNavPanel, {\n FacetNavPanelProps,\n PlotType,\n} from '../facet-nav/FacetNavPanel'\nimport { PlotsContainerSkeleton } from './PlotsContainerSkeleton'\nimport useFacetPlots, { getFacets } from './useFacetPlots'\n\nconst DEFAULT_VISIBLE_PLOTS = 2\ntype ShowMoreState = 'MORE' | 'LESS' | 'NONE'\nexport type PlotsContainerProps = {\n facetsToPlot?: string[]\n customPlots?: QueryWrapperSynapsePlotProps[]\n initialPlotTypeByFacetColumnName?: Record<string, PlotType>\n /** Chart type of facet plots without an entry in `initialPlotTypeByFacetColumnName`. Defaults to a pie chart. */\n defaultPlotType?: PlotType\n /**\n * When true, the facet plots cannot change the query: slices can't be clicked and the filter\n * dropdowns are hidden. Set while the Query Builder owns the filters.\n */\n disableFiltering?: boolean\n}\ntype CustomPlotIdentifier = {\n title: string\n __custom: true\n}\nexport type PlotIdentifier = UniqueFacetIdentifier | CustomPlotIdentifier\n\nexport type UiPlotState = {\n plotId: PlotIdentifier\n isHidden: boolean\n plotType: PlotType\n index?: number\n}\nconst plotMatchesDefinition = (\n definition: PlotIdentifier,\n plotId: PlotIdentifier,\n) => {\n if ('__custom' in plotId && '__custom' in definition) {\n return definition.title == plotId.title\n } else if (!('__custom' in plotId) && !('__custom' in definition)) {\n return facetObjectMatchesDefinition(definition, plotId)\n } else {\n return false\n }\n}\n\nfunction convertPlotlyPlotTypeToFacetNavPlotType(\n plotlyPlotType: PlotlyPlotType,\n): PlotType {\n if (plotlyPlotType === 'bar') {\n return 'BAR'\n } else if (plotlyPlotType === 'pie') {\n return 'PIE'\n }\n return 'PIE'\n}\n\nconst generatePlotKey = (plotUiState: UiPlotState) => {\n if ('__custom' in plotUiState.plotId) {\n // For custom plots\n return `custom-${plotUiState.plotId.title}`\n } else {\n // For facet plots\n return `facet-${plotUiState.plotId.columnName}-${plotUiState.plotId.jsonPath}`\n }\n}\n\nconst isPlotInState = (\n plotId: PlotIdentifier,\n plotUiStateArray: UiPlotState[],\n): boolean => {\n return plotUiStateArray.some(plot => {\n return plotMatchesDefinition(plot.plotId, plotId)\n })\n}\n\nconst getCustomPlotIdentifier = (\n customPlot: QueryWrapperSynapsePlotProps,\n): PlotIdentifier => {\n return { __custom: true, title: customPlot.title ?? '' }\n}\n\nconst getCombinedNewPlots = (\n customPlots: QueryWrapperSynapsePlotProps[] = [],\n facetNavPanelPropsArray: Pick<\n FacetNavPanelProps,\n 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'\n >[] = [],\n initialPlotTypeByFacetColumnName: Record<string, PlotType> | undefined,\n defaultPlotType: PlotType,\n): UiPlotState[] => [\n ...customPlots.map((plotProps, index) => ({\n plotId: getCustomPlotIdentifier(plotProps),\n isHidden: index >= DEFAULT_VISIBLE_PLOTS,\n plotType: convertPlotlyPlotTypeToFacetNavPlotType(plotProps.type),\n })),\n ...facetNavPanelPropsArray.map((facetPlotProps, index) => ({\n plotId: facetPlotProps.facetToPlot,\n isHidden: index + customPlots.length >= DEFAULT_VISIBLE_PLOTS,\n plotType:\n initialPlotTypeByFacetColumnName?.[\n facetPlotProps.facetToPlot.columnName\n ] ?? defaultPlotType,\n })),\n]\n\n// Remove plots that are no longer in props from prevPlots\nconst isPlotStillPresent = (\n prevPlot: UiPlotState,\n customPlots: QueryWrapperSynapsePlotProps[],\n facetNavPanelProps: Pick<\n FacetNavPanelProps,\n 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'\n >[],\n): boolean => {\n return (\n customPlots.some(customPlot =>\n plotMatchesDefinition(\n getCustomPlotIdentifier(customPlot),\n prevPlot.plotId,\n ),\n ) ||\n facetNavPanelProps.some(facetPlot =>\n plotMatchesDefinition(facetPlot.facetToPlot, prevPlot.plotId),\n )\n )\n} // fn returns true iff the plot id is in customPlots or facetNavPanelPropsArray\n\nconst DEFAULT_PLOT_TYPE: PlotType = 'PIE'\n\nconst DEFAULT_FACETS_TO_PLOT: string[] = []\nconst DEFAULT_CUSTOM_PLOTS: QueryWrapperSynapsePlotProps[] = []\n\nfunction PlotsContainer(props: PlotsContainerProps) {\n const {\n facetsToPlot = DEFAULT_FACETS_TO_PLOT,\n customPlots = DEFAULT_CUSTOM_PLOTS,\n initialPlotTypeByFacetColumnName,\n defaultPlotType = DEFAULT_PLOT_TYPE,\n disableFiltering,\n } = props\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { showPlots: showPlotVisualization } = useQueryVisualizationContext()\n const [plotUiStateArray, setPlotUiStateArray] = useState<UiPlotState[]>([])\n const facetNavPanelPropsArray = useFacetPlots(facetsToPlot)\n\n const getPlotType = (plotId: PlotIdentifier): PlotType => {\n const plotType = plotUiStateArray.find(item =>\n plotMatchesDefinition(plotId, item.plotId),\n )?.plotType\n return plotType ?? defaultPlotType\n }\n\n useEffect(() => {\n const combinedNewPlots = getCombinedNewPlots(\n customPlots,\n facetNavPanelPropsArray,\n initialPlotTypeByFacetColumnName,\n defaultPlotType,\n )\n\n // Update the state with new plots\n setPlotUiStateArray(prevPlots => {\n // Filter to only include new plots\n const newPlots = combinedNewPlots.filter(plot => {\n const inState = isPlotInState(plot.plotId, prevPlots)\n return !inState\n })\n\n const updatedPlots = prevPlots.filter(prevPlot =>\n isPlotStillPresent(prevPlot, customPlots, facetNavPanelPropsArray),\n )\n\n // Append new plots\n const combinedPlots = [...updatedPlots, ...newPlots]\n return combinedPlots\n })\n }, [\n customPlots,\n facetNavPanelPropsArray,\n initialPlotTypeByFacetColumnName,\n defaultPlotType,\n ])\n\n // when 'show more/less' is clicked\n const onShowMoreClick = (shouldShowMore: boolean) => {\n setPlotUiStateArray(plotUiStateArray => {\n return plotUiStateArray.map((item, index) => {\n if (shouldShowMore) {\n // show everything\n return { ...item, isHidden: false }\n }\n // otherwise hide everything except the first few items\n return { ...item, isHidden: index >= DEFAULT_VISIBLE_PLOTS }\n })\n })\n }\n\n const isPlotHiddenInGrid = (plotId: PlotIdentifier) => {\n const itemHidden = plotUiStateArray.find(\n item =>\n plotMatchesDefinition(plotId, item.plotId) && item.isHidden === true,\n )\n const result = itemHidden !== undefined\n return result\n }\n\n const showMoreButtonState = useMemo<ShowMoreState>(() => {\n if (\n // if at least one item is hidden\n plotUiStateArray.some(item => item.isHidden === true)\n ) {\n return 'MORE'\n } else if (plotUiStateArray.length <= DEFAULT_VISIBLE_PLOTS) {\n return 'NONE'\n } else {\n return 'LESS'\n }\n }, [plotUiStateArray])\n\n // When all charts become visible (transition to 'LESS'), trigger a resize event so\n // Plotly recalculates dimensions for charts that were previously hidden (display: none).\n useEffect(() => {\n if (showMoreButtonState === 'LESS') {\n requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'))\n })\n }\n }, [showMoreButtonState])\n\n // hides plot graph\n const hidePlotInGrid = (plotId: PlotIdentifier) => {\n setUiPropertyForPlot(plotId, 'isHidden', true)\n }\n\n const setPlotType = (plotId: PlotIdentifier, plotType: PlotType) => {\n setUiPropertyForPlot(plotId, 'plotType', plotType)\n }\n\n const setUiPropertyForPlot = (\n plotId: PlotIdentifier,\n propName: keyof UiPlotState,\n value: boolean | PlotType, // 'the possible values of the above type' (currently can't be specified in TS using symbols)\n ) => {\n setPlotUiStateArray(plotUiStateArray =>\n plotUiStateArray.map(item =>\n plotMatchesDefinition(plotId, item.plotId)\n ? { ...item, [propName]: value }\n : item,\n ),\n )\n }\n\n const colorTracker: { facet: PlotIdentifier; colorIndex: number }[] =\n // TODO: customPlots should use the color index\n // additionally, it is unclear why this object is created\n // We can probably just pass the index from `plotUiStateArray.map)\n getFacets(queryMetadata, facetsToPlot).map((el, index) => {\n return {\n facet: { columnName: el.columnName, jsonPath: el.jsonPath },\n colorIndex: index,\n }\n })\n\n return (\n <>\n {plotUiStateArray.length > 0 && (\n <div\n className={`PlotsContainer ${showPlotVisualization ? '' : 'hidden'} ${\n showMoreButtonState === 'LESS' ? 'less' : ''\n }`}\n >\n <div className=\"PlotsContainer__row\" role=\"list\">\n {plotUiStateArray.map(plotUiState => {\n const isCustomPlot = '__custom' in plotUiState.plotId\n const customPlotProps = customPlots.find(customPlot =>\n plotMatchesDefinition(\n getCustomPlotIdentifier(customPlot),\n plotUiState.plotId,\n ),\n )\n const facetNavPanelProps = facetNavPanelPropsArray.find(props =>\n plotMatchesDefinition(props.facetToPlot, plotUiState.plotId),\n )\n\n return (\n <div\n className={\n [\n isCustomPlot\n ? 'PlotsContainer__row__item--custom'\n : undefined,\n isCustomPlot && customPlotProps?.fullWidth\n ? 'PlotsContainer__row__item--full-width'\n : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n }\n style={{\n minWidth: '435px',\n display: isPlotHiddenInGrid(plotUiState.plotId)\n ? 'none'\n : 'block',\n }}\n key={generatePlotKey(plotUiState)}\n >\n {isCustomPlot && customPlotProps && (\n <QueryWrapperSynapsePlot\n {...customPlotProps}\n onHide={() => hidePlotInGrid(plotUiState.plotId)}\n />\n )}\n {!isCustomPlot && facetNavPanelProps && (\n <FacetNavPanel\n index={\n colorTracker.find(el =>\n plotMatchesDefinition(el.facet, plotUiState.plotId),\n )?.colorIndex!\n }\n onHide={() => hidePlotInGrid(plotUiState.plotId)}\n plotType={getPlotType(plotUiState.plotId)}\n onSetPlotType={(plotType: PlotType) =>\n setPlotType(plotUiState.plotId, plotType)\n }\n isModalView={false}\n disableFiltering={disableFiltering}\n {...facetNavPanelProps}\n />\n )}\n </div>\n )\n })}\n </div>\n {showMoreButtonState !== 'NONE' && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: 'grey.100',\n p: 2,\n mt: 2,\n }}\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => onShowMoreClick(showMoreButtonState === 'MORE')}\n sx={{ width: '150px' }}\n >\n {showMoreButtonState === 'LESS'\n ? 'Hide Charts'\n : 'View All Charts'}\n </Button>\n </Box>\n )}\n </div>\n )}\n </>\n )\n}\n\nexport default function PlotsContainerWithSuspense(props: PlotsContainerProps) {\n const { showPlots } = useQueryVisualizationContext()\n return (\n <Suspense fallback={showPlots ? <PlotsContainerSkeleton /> : null}>\n <PlotsContainer {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FRIENDLY_VALUE_NOT_SET as e } from "../../../utils/SynapseConstants.js";
|
|
2
2
|
import { isColumnMultiValueFunctionQueryFilter as t, isColumnSingleValueQueryFilter as n, isFacetColumnRangeRequest as r, isFacetColumnValuesRequest as i, isTextMatchesQueryFilter as a } from "../../../utils/types/IsType.js";
|
|
3
|
+
import { useQueryVisualizationContext as o } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
3
4
|
import "../../../utils/index.js";
|
|
4
|
-
import { useQueryContext as
|
|
5
|
+
import { useQueryContext as s } from "../../QueryContext/QueryContext.js";
|
|
5
6
|
import "../../QueryContext/index.js";
|
|
6
|
-
import { useGetQueryMetadata as
|
|
7
|
-
import { useQueryVisualizationContext as c } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
7
|
+
import { useGetQueryMetadata as c } from "../../QueryWrapper/useGetQueryMetadata.js";
|
|
8
8
|
import "../../QueryVisualizationWrapper/index.js";
|
|
9
9
|
import l from "./SelectionCriteriaPill.js";
|
|
10
10
|
import { getSearchTextFromBooleanModeSearchExpression as u } from "../../FullTextSearch/FullTextSearchUtils.js";
|
|
@@ -120,7 +120,7 @@ function b(e, t, n, a, o) {
|
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
function x() {
|
|
123
|
-
let e =
|
|
123
|
+
let e = s(), t = e.lockedColumn, n = o(), { lockTextMatchesQueryFilterPill: r } = n, { currentQueryRequest: i } = e, { data: a } = c(), u = v(i.query?.additionalFilters ?? [], e, a?.columnModels || [], n, t, r), m = b(i.query.selectedFacets ?? [], e, a?.columnModels || [], n, t);
|
|
124
124
|
return /* @__PURE__ */ p(f, { children: [...u, ...m].map((e) => {
|
|
125
125
|
let t = encodeURIComponent(e.key);
|
|
126
126
|
return /* @__PURE__ */ d(l, {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnumerationFacet } from '@/utils/functions/enumerationFacet';
|
|
2
|
+
import { QueryResultBundle } from '@sage-bionetworks/synapse-types';
|
|
2
3
|
import { FacetNavPanelProps } from './FacetNavPanel';
|
|
3
4
|
export default function useFacetPlots(facetsToPlot: string[]): Pick<FacetNavPanelProps, 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'>[];
|
|
4
|
-
export declare function getFacets(data: QueryResultBundle | undefined, facetsToPlot?: string[]):
|
|
5
|
+
export declare function getFacets(data: QueryResultBundle | undefined, facetsToPlot?: string[]): EnumerationFacet[];
|
|
5
6
|
//# sourceMappingURL=useFacetPlots.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFacetPlots.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/useFacetPlots.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFacetPlots.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/facet-nav/useFacetPlots.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEjB,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAGL,iBAAiB,EAClB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGpD,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CACL,kBAAkB,EAClB,2BAA2B,GAAG,0BAA0B,GAAG,aAAa,CACzE,EAAE,CAqDF;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,gBAAgB,EAAE,CAgBpB"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getEnumerationFacets as e } from "../../../utils/functions/enumerationFacet.js";
|
|
2
|
+
import { isSingleNotSetValue as t } from "../../../utils/functions/queryUtils.js";
|
|
3
|
+
import { useQueryContext as n } from "../../QueryContext/QueryContext.js";
|
|
3
4
|
import "../../QueryContext/index.js";
|
|
4
|
-
import { useSuspenseGetQueryMetadata as
|
|
5
|
-
import { applyChangesToValuesColumn as
|
|
6
|
-
import { useCallback as
|
|
5
|
+
import { useSuspenseGetQueryMetadata as r } from "../../QueryWrapper/useGetQueryMetadata.js";
|
|
6
|
+
import { applyChangesToValuesColumn as i } from "../query-filter/FacetFilterControls.js";
|
|
7
|
+
import { useCallback as a, useMemo as o } from "react";
|
|
7
8
|
//#region src/components/widgets/facet-nav/useFacetPlots.ts
|
|
8
|
-
function
|
|
9
|
-
let { getCurrentQueryRequest:
|
|
10
|
-
|
|
11
|
-
}, [
|
|
12
|
-
return
|
|
9
|
+
function s(e) {
|
|
10
|
+
let { getCurrentQueryRequest: t, executeQueryRequest: s } = n(), { data: l } = r(), u = o(() => t(), [t]), d = o(() => c(l, e), [l, e]), f = a((e) => {
|
|
11
|
+
s((t) => (t.query.selectedFacets = e, t.query.offset = 0, t), { debounce: !0 });
|
|
12
|
+
}, [s]);
|
|
13
|
+
return o(() => d.map((e) => ({
|
|
13
14
|
facetToPlot: e,
|
|
14
15
|
applyChangesToFacetFilter: f,
|
|
15
|
-
applyChangesToGraphSlice: (e, t, n) =>
|
|
16
|
+
applyChangesToGraphSlice: (e, t, n) => i(u, e, f, t?.value, n)
|
|
16
17
|
})), [
|
|
17
18
|
d,
|
|
18
19
|
f,
|
|
19
20
|
u
|
|
20
21
|
]);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
let
|
|
24
|
-
return
|
|
23
|
+
function c(n, r) {
|
|
24
|
+
let i = e(n?.facets?.filter((e) => !t(e))).filter((e) => (!r?.length || r.includes(e.columnName)) && e.facetValues.length > 0);
|
|
25
|
+
return r?.length && i.sort((e, t) => r.indexOf(e.columnName) - r.indexOf(t.columnName)), i;
|
|
25
26
|
}
|
|
26
27
|
//#endregion
|
|
27
|
-
export {
|
|
28
|
+
export { s as default, c as getFacets };
|
|
28
29
|
|
|
29
30
|
//# sourceMappingURL=useFacetPlots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFacetPlots.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/useFacetPlots.ts"],"sourcesContent":["import { isSingleNotSetValue } from '@/utils/functions/queryUtils'\nimport {\n FacetColumnRequest,\n
|
|
1
|
+
{"version":3,"file":"useFacetPlots.js","names":[],"sources":["../../../../src/components/widgets/facet-nav/useFacetPlots.ts"],"sourcesContent":["import {\n EnumerationFacet,\n getEnumerationFacets,\n} from '@/utils/functions/enumerationFacet'\nimport { isSingleNotSetValue } from '@/utils/functions/queryUtils'\nimport {\n FacetColumnRequest,\n FacetColumnResultValueCount,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { useCallback, useMemo } from 'react'\nimport { useQueryContext } from '../../QueryContext'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { applyChangesToValuesColumn } from '../query-filter/FacetFilterControls'\nimport { FacetNavPanelProps } from './FacetNavPanel'\n\n// Custom hook for generating properties for FacetNavPanel components with filter controls based on the given facets\nexport default function useFacetPlots(\n facetsToPlot: string[],\n): Pick<\n FacetNavPanelProps,\n 'applyChangesToFacetFilter' | 'applyChangesToGraphSlice' | 'facetToPlot'\n>[] {\n const { getCurrentQueryRequest, executeQueryRequest } = useQueryContext()\n\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n const facets = useMemo(\n () => getFacets(queryMetadata, facetsToPlot),\n [queryMetadata, facetsToPlot],\n )\n\n const applyChangesFromQueryFilter = useCallback(\n (facets: FacetColumnRequest[]) => {\n executeQueryRequest(\n lastQueryRequest => {\n lastQueryRequest.query.selectedFacets = facets\n lastQueryRequest.query.offset = 0\n return lastQueryRequest\n },\n { debounce: true },\n )\n },\n [executeQueryRequest],\n )\n\n const facetNavPanelProps = useMemo(\n () =>\n facets.map(facet => {\n return {\n facetToPlot: facet,\n\n applyChangesToFacetFilter: applyChangesFromQueryFilter,\n\n applyChangesToGraphSlice: (\n facet: EnumerationFacet,\n value: FacetColumnResultValueCount | undefined,\n isSelected: boolean,\n ) =>\n applyChangesToValuesColumn(\n lastQueryRequest,\n facet,\n applyChangesFromQueryFilter,\n value?.value,\n isSelected,\n ),\n }\n }),\n [facets, applyChangesFromQueryFilter, lastQueryRequest],\n )\n return facetNavPanelProps\n}\n\nexport function getFacets(\n data: QueryResultBundle | undefined,\n facetsToPlot?: string[],\n): EnumerationFacet[] {\n const result = getEnumerationFacets(\n data?.facets?.filter(facet => !isSingleNotSetValue(facet)),\n ).filter(\n facet =>\n (!facetsToPlot?.length || facetsToPlot.includes(facet.columnName)) &&\n // PORTALS-1993: only plot if the facet has count data\n facet.facetValues.length > 0,\n )\n if (facetsToPlot?.length) {\n result.sort(\n (a, b) =>\n facetsToPlot.indexOf(a.columnName) - facetsToPlot.indexOf(b.columnName),\n )\n }\n return result\n}\n"],"mappings":";;;;;;;;AAiBA,SAAwB,EACtB,GAIE;CACF,IAAM,EAAE,2BAAwB,2BAAwB,EAAgB,GAElE,EAAE,MAAM,MAAkB,EAA4B,GAEtD,IAAmB,QACjB,EAAuB,GAC7B,CAAC,CAAsB,CACzB,GACM,IAAS,QACP,EAAU,GAAe,CAAY,GAC3C,CAAC,GAAe,CAAY,CAC9B,GAEM,IAA8B,GACjC,MAAiC;EAChC,GACE,OACE,EAAiB,MAAM,iBAAiB,GACxC,EAAiB,MAAM,SAAS,GACzB,IAET,EAAE,UAAU,GAAK,CACnB;CACF,GACA,CAAC,CAAmB,CACtB;CA0BA,OAxB2B,QAEvB,EAAO,KAAI,OACF;EACL,aAAa;EAEb,2BAA2B;EAE3B,2BACE,GACA,GACA,MAEA,EACE,GACA,GACA,GACA,GAAO,OACP,CACF;CACJ,EACD,GACH;EAAC;EAAQ;EAA6B;CAAgB,CAEjD;AACT;AAEA,SAAgB,EACd,GACA,GACoB;CACpB,IAAM,IAAS,EACb,GAAM,QAAQ,QAAO,MAAS,CAAC,EAAoB,CAAK,CAAC,CAC3D,EAAE,QACA,OACG,CAAC,GAAc,UAAU,EAAa,SAAS,EAAM,UAAU,MAEhE,EAAM,YAAY,SAAS,CAC/B;CAOA,OANI,GAAc,UAChB,EAAO,MACJ,GAAG,MACF,EAAa,QAAQ,EAAE,UAAU,IAAI,EAAa,QAAQ,EAAE,UAAU,CAC1E,GAEK;AACT"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { VALUE_NOT_SET as e } from "../../../utils/SynapseConstants.js";
|
|
2
|
+
import { useQueryVisualizationContext as t } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
2
3
|
import "../../../utils/index.js";
|
|
3
|
-
import { useGetQueryResultBundleWithAsyncStatus as
|
|
4
|
+
import { useGetQueryResultBundleWithAsyncStatus as n } from "../../../synapse-queries/entity/useGetQueryResultBundle.js";
|
|
4
5
|
import "../../../synapse-queries/index.js";
|
|
5
|
-
import { useQueryContext as
|
|
6
|
+
import { useQueryContext as r } from "../../QueryContext/QueryContext.js";
|
|
6
7
|
import "../../QueryContext/index.js";
|
|
7
|
-
import { useQueryVisualizationContext as r } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
8
8
|
import "../../QueryVisualizationWrapper/index.js";
|
|
9
9
|
import { RangeFacetFilterUI as i } from "./RangeFacetFilterUI.js";
|
|
10
10
|
import { useMemo as a } from "react";
|
|
@@ -13,7 +13,7 @@ import { Skeleton as s } from "@mui/material";
|
|
|
13
13
|
import { jsx as c } from "react/jsx-runtime";
|
|
14
14
|
//#region src/components/widgets/query-filter/CombinedRangeFacetFilter.tsx
|
|
15
15
|
function l({ facetResults: l, label: u, columnType: d }) {
|
|
16
|
-
let { getCurrentQueryRequest: f, setRangeFacetValue: p, removeSelectedFacet: m } =
|
|
16
|
+
let { getCurrentQueryRequest: f, setRangeFacetValue: p, removeSelectedFacet: m } = r(), { getColumnDisplayName: h } = t(), { columnName: g, selectedMax: _ } = l[0], { columnName: v, selectedMin: y } = l[1], { data: b, isLoading: x } = n(a(() => {
|
|
17
17
|
let e = f();
|
|
18
18
|
e.partMask = 32;
|
|
19
19
|
let { selectedFacets: t } = e.query;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnumerationFacet } from '@/utils/functions/enumerationFacet';
|
|
2
2
|
export type EnumFacetFilterProps = {
|
|
3
3
|
labelId?: string;
|
|
4
|
-
facet:
|
|
4
|
+
facet: EnumerationFacet;
|
|
5
5
|
containerAs?: 'Collapsible' | 'Dropdown';
|
|
6
6
|
dropdownType?: 'Icon' | 'SelectBox';
|
|
7
7
|
hideCollapsible?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumFacetFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EnumFacetFilter.d.ts","sourceRoot":"","sources":["../../../../../src/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAqBrE,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,gBAAgB,CAAA;IACvB,WAAW,CAAC,EAAE,aAAa,GAAG,UAAU,CAAA;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAiND,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAc1D"}
|