synapse-react-client 4.0.2 → 4.0.3
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/assets/icons/AwardScroll.d.ts +5 -0
- package/dist/assets/icons/AwardScroll.d.ts.map +1 -0
- package/dist/assets/icons/AwardScroll.js +78 -0
- package/dist/assets/icons/AwardScroll.js.map +1 -0
- package/dist/assets/icons/Baseline.d.ts +5 -0
- package/dist/assets/icons/Baseline.d.ts.map +1 -0
- package/dist/assets/icons/Baseline.js +43 -0
- package/dist/assets/icons/Baseline.js.map +1 -0
- package/dist/assets/icons/Challenge.svg +13 -0
- package/dist/assets/icons/Challenge.svg.js +7 -0
- package/dist/assets/icons/Challenge.svg.js.map +1 -0
- package/dist/assets/icons/ClappingHands.d.ts +5 -0
- package/dist/assets/icons/ClappingHands.d.ts.map +1 -0
- package/dist/assets/icons/ClappingHands.js +106 -0
- package/dist/assets/icons/ClappingHands.js.map +1 -0
- package/dist/assets/icons/HandWithMoney.d.ts +5 -0
- package/dist/assets/icons/HandWithMoney.d.ts.map +1 -0
- package/dist/assets/icons/HandWithMoney.js +15 -0
- package/dist/assets/icons/HandWithMoney.js.map +1 -0
- package/dist/assets/icons/MultiFile.d.ts +5 -0
- package/dist/assets/icons/MultiFile.d.ts.map +1 -0
- package/dist/assets/icons/MultiFile.js +8 -0
- package/dist/assets/icons/MultiFile.js.map +1 -0
- package/dist/assets/icons/MultiFile.svg +4 -0
- package/dist/assets/icons/MultiFile.svg.js +7 -0
- package/dist/assets/icons/MultiFile.svg.js.map +1 -0
- package/dist/assets/icons/OpenBook.d.ts +5 -0
- package/dist/assets/icons/OpenBook.d.ts.map +1 -0
- package/dist/assets/icons/OpenBook.js +99 -0
- package/dist/assets/icons/OpenBook.js.map +1 -0
- package/dist/assets/icons/Podium.d.ts +5 -0
- package/dist/assets/icons/Podium.d.ts.map +1 -0
- package/dist/assets/icons/Podium.js +36 -0
- package/dist/assets/icons/Podium.js.map +1 -0
- package/dist/assets/icons/RosetteRibbon.d.ts +5 -0
- package/dist/assets/icons/RosetteRibbon.d.ts.map +1 -0
- package/dist/assets/icons/RosetteRibbon.js +36 -0
- package/dist/assets/icons/RosetteRibbon.js.map +1 -0
- package/dist/assets/icons/StarTrophy.d.ts +5 -0
- package/dist/assets/icons/StarTrophy.d.ts.map +1 -0
- package/dist/assets/icons/StarTrophy.js +99 -0
- package/dist/assets/icons/StarTrophy.js.map +1 -0
- package/dist/assets/icons/ThreeStars.d.ts +5 -0
- package/dist/assets/icons/ThreeStars.d.ts.map +1 -0
- package/dist/assets/icons/ThreeStars.js +71 -0
- package/dist/assets/icons/ThreeStars.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.d.ts +5 -0
- package/dist/assets/icons/UnpackagableFile.d.ts.map +1 -0
- package/dist/assets/icons/UnpackagableFile.js +8 -0
- package/dist/assets/icons/UnpackagableFile.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.svg +4 -0
- package/dist/assets/icons/UnpackagableFile.svg.js +7 -0
- package/dist/assets/icons/UnpackagableFile.svg.js.map +1 -0
- package/dist/assets/mui_components/PackagableFile.d.ts.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js +5 -4
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.svg +3 -0
- package/dist/assets/mui_components/PackagableFile.svg.js +7 -0
- package/dist/assets/mui_components/PackagableFile.svg.js.map +1 -0
- package/dist/assets/themed_icons/index.d.ts +1 -2
- package/dist/assets/themed_icons/index.d.ts.map +1 -1
- package/dist/assets/themed_icons/index.js +8 -10
- package/dist/assets/themed_icons/index.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +4 -4
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js +10 -10
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -2
- package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js +21 -28
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss +7 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +24 -24
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +5 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardContainerLogic/index.d.ts +1 -1
- package/dist/components/CardContainerLogic/index.d.ts.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js +12 -9
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +33 -33
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/ComponentCollapse.d.ts +6 -10
- package/dist/components/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +31 -35
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -9
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +8 -3
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +8 -3
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +8 -3
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.d.ts.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js +23 -23
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts +6 -2
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js +10 -8
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.css +1 -0
- package/dist/components/DownloadCart/CreatePackageV2.d.ts.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js +50 -46
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.module.scss +38 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js +14 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.css +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +316 -186
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.module.scss +217 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js +48 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadDetails.js +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +33 -33
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts +4 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js +156 -236
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js +5 -5
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +8 -3
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +20 -20
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +3 -3
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +6 -2
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +11 -8
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.d.ts +5 -5
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +117 -103
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts +10 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts.map +1 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js +33 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -0
- package/dist/components/GenericCard/SynapseCardLabel.d.ts +2 -1
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +86 -81
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +7 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +239 -202
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/HeaderCard.js +17 -13
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/Icon/Icon.js +52 -52
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +215 -171
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +103 -102
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +6 -3
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +76 -67
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +83 -58
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +16 -15
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +12 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +30 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -0
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.d.ts.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js +22 -16
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/index.d.ts +2 -0
- package/dist/components/SynapseChat/index.d.ts.map +1 -1
- package/dist/components/SynapseChat/index.js +5 -3
- package/dist/components/SynapseChat/index.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
- package/dist/components/SynapseChat/useChatState.js +10 -7
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +13 -13
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js +9 -9
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/TextToComponentCollapse.d.ts +16 -0
- package/dist/components/TextToComponentCollapse.d.ts.map +1 -0
- package/dist/components/TextToComponentCollapse.js +29 -0
- package/dist/components/TextToComponentCollapse.js.map +1 -0
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +8 -3
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.d.ts +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +22 -22
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +4 -4
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/index.js +85 -83
- package/dist/components/index.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js +12 -11
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.d.ts +1 -3
- package/dist/components/row_renderers/utils/CardFooter.d.ts.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js +31 -45
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +8 -3
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +8 -3
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js +8 -3
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +8 -3
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/index.js +137 -135
- package/dist/index.js.map +1 -1
- package/dist/style/components/_all.scss +0 -1
- package/dist/style/components/_cards.scss +22 -0
- package/dist/style/components/_download-list-v2.scss +1 -1
- package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
- package/dist/style/main.css +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js +9 -9
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/SynapseContext.d.ts.map +1 -1
- package/dist/utils/context/SynapseContext.js +1 -0
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts +4 -0
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +25 -23
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/package.json +5 -5
- package/dist/assets/themed_icons/Challenge.d.ts +0 -3
- package/dist/assets/themed_icons/Challenge.d.ts.map +0 -1
- package/dist/assets/themed_icons/Challenge.js +0 -25
- package/dist/assets/themed_icons/Challenge.js.map +0 -1
- package/dist/style/components/_download-cart-page.scss +0 -204
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as r, jsx as e, Fragment as l } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
2
|
+
import { useState as c } from "react";
|
|
3
3
|
import b from "./FeaturedDataPlots.js";
|
|
4
4
|
import "../../utils/functions/EntityTypeUtils.js";
|
|
5
5
|
import "../../assets/ArcusBioIcon.svg.js";
|
|
@@ -7,25 +7,28 @@ import "@mui/material/SvgIcon";
|
|
|
7
7
|
import "../../assets/icons/AccessPending.svg.js";
|
|
8
8
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
9
9
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
10
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
11
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
10
12
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
11
13
|
import "../../assets/icons/computationalTool.svg.js";
|
|
12
14
|
import "../../assets/icons/dataReuse.svg.js";
|
|
13
15
|
import { Box as x, Button as h, Paper as u } from "@mui/material";
|
|
14
16
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
15
17
|
import "../../assets/icons/modelSystem.svg.js";
|
|
18
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
16
19
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
17
20
|
import "@mui/icons-material";
|
|
18
21
|
import _ from "../Icon/Icon.js";
|
|
19
22
|
import T from "../SynapseTable/NoContentAvailable.js";
|
|
20
|
-
function
|
|
21
|
-
const [o, d] =
|
|
23
|
+
function E(p) {
|
|
24
|
+
const [o, d] = c(0), { configs: i, rgbIndex: m, sql: s } = p, t = i[o];
|
|
22
25
|
return /* @__PURE__ */ r(
|
|
23
26
|
x,
|
|
24
27
|
{
|
|
25
28
|
className: "FeaturedDataTabs",
|
|
26
29
|
sx: { padding: { xs: "40px", lg: "80px" } },
|
|
27
30
|
children: [
|
|
28
|
-
|
|
31
|
+
i.length > 1 && /* @__PURE__ */ e("div", { className: "FeaturedDataTabs__tabs", children: i.map((a, n) => /* @__PURE__ */ e(
|
|
29
32
|
"div",
|
|
30
33
|
{
|
|
31
34
|
className: `FeaturedDataTabs__tabs__tab ${n === o ? "FeaturedDataTabs__tabs__tab__selected" : ""}`,
|
|
@@ -47,12 +50,12 @@ function R(p) {
|
|
|
47
50
|
/* @__PURE__ */ e(
|
|
48
51
|
b,
|
|
49
52
|
{
|
|
50
|
-
sql:
|
|
51
|
-
rgbIndex:
|
|
53
|
+
sql: s,
|
|
54
|
+
rgbIndex: m,
|
|
52
55
|
explorePagePath: t.explorePagePath,
|
|
53
56
|
...t.plotsConfig
|
|
54
57
|
},
|
|
55
|
-
`${
|
|
58
|
+
`${s}-${o}`
|
|
56
59
|
),
|
|
57
60
|
t.explorePagePath && /* @__PURE__ */ e("div", { className: "FeaturedDataTabs__explore-all", children: /* @__PURE__ */ r(
|
|
58
61
|
h,
|
|
@@ -78,6 +81,6 @@ function R(p) {
|
|
|
78
81
|
);
|
|
79
82
|
}
|
|
80
83
|
export {
|
|
81
|
-
|
|
84
|
+
E as default
|
|
82
85
|
};
|
|
83
86
|
//# sourceMappingURL=FeaturedDataTabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeaturedDataTabs.js","sources":["../../../src/components/FeaturedDataTabs/FeaturedDataTabs.tsx"],"sourcesContent":["import { useState } from 'react'\nimport FeaturedDataPlots, { FeaturedDataPlotsProps } from './FeaturedDataPlots'\nimport { Icon } from '../row_renderers/utils'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport { Box, Button } from '@mui/material'\nimport { Paper } from '@mui/material'\n\nexport type FeatureDataTabProps = {\n title: string // type of data being shown, used for the tab title and explore all button\n icon?: string\n exploreObjectType?: string\n explorePagePath?: string\n plotsConfig: FeaturedDataPlotsProps\n}\n\nexport type FeaturedDataTabsProps = {\n configs: FeatureDataTabProps[]\n rgbIndex: number\n sql: string\n}\n\nfunction FeaturedDataTabs(props: FeaturedDataTabsProps) {\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const { configs, rgbIndex, sql } = props\n // explore all data button\n const selectedTabProps: FeatureDataTabProps = configs[selectedTabIndex]\n return (\n <Box\n className=\"FeaturedDataTabs\"\n sx={{ padding: { xs: '40px', lg: '80px' } }}\n >\n {/* tabs */}\n {configs.length > 1 && (\n <div className=\"FeaturedDataTabs__tabs\">\n {configs.map((config, index) => {\n const isSelectedTabIndex: boolean = index === selectedTabIndex\n return (\n <div\n className={`FeaturedDataTabs__tabs__tab ${\n isSelectedTabIndex\n ? 'FeaturedDataTabs__tabs__tab__selected'\n : ''\n }`}\n key={config.title}\n >\n <button\n className=\"SRC-centerAndJustifyContent\"\n onClick={() => setSelectedTabIndex(index)}\n >\n {config.icon && <Icon type={config.icon}></Icon>}\n <span>{config.title}</span>\n </button>\n </div>\n )\n })}\n </div>\n )}\n {/* tab content */}\n {selectedTabProps && (\n <>\n {selectedTabProps.plotsConfig.configs.length > 0 ? (\n <>\n <FeaturedDataPlots\n key={`${sql}-${selectedTabIndex}`}\n sql={sql}\n rgbIndex={rgbIndex}\n explorePagePath={selectedTabProps.explorePagePath}\n {...selectedTabProps.plotsConfig}\n />\n {selectedTabProps.explorePagePath && (\n <div className=\"FeaturedDataTabs__explore-all\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n href={selectedTabProps.explorePagePath}\n sx={theme => ({\n mb: '40px',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n })}\n >\n View All {selectedTabProps.exploreObjectType}\n </Button>\n </div>\n )}\n </>\n ) : (\n <Paper sx={{ p: 2 }}>\n <NoContentAvailable />\n </Paper>\n )}\n </>\n )}\n </Box>\n )\n}\n\nexport default FeaturedDataTabs\n"],"names":["FeaturedDataTabs","props","selectedTabIndex","setSelectedTabIndex","useState","configs","rgbIndex","sql","selectedTabProps","jsxs","Box","jsx","config","index","Icon","Fragment","FeaturedDataPlots","Button","theme","Paper","NoContentAvailable"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FeaturedDataTabs.js","sources":["../../../src/components/FeaturedDataTabs/FeaturedDataTabs.tsx"],"sourcesContent":["import { useState } from 'react'\nimport FeaturedDataPlots, { FeaturedDataPlotsProps } from './FeaturedDataPlots'\nimport { Icon } from '../row_renderers/utils'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport { Box, Button } from '@mui/material'\nimport { Paper } from '@mui/material'\n\nexport type FeatureDataTabProps = {\n title: string // type of data being shown, used for the tab title and explore all button\n icon?: string\n exploreObjectType?: string\n explorePagePath?: string\n plotsConfig: FeaturedDataPlotsProps\n}\n\nexport type FeaturedDataTabsProps = {\n configs: FeatureDataTabProps[]\n rgbIndex: number\n sql: string\n}\n\nfunction FeaturedDataTabs(props: FeaturedDataTabsProps) {\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const { configs, rgbIndex, sql } = props\n // explore all data button\n const selectedTabProps: FeatureDataTabProps = configs[selectedTabIndex]\n return (\n <Box\n className=\"FeaturedDataTabs\"\n sx={{ padding: { xs: '40px', lg: '80px' } }}\n >\n {/* tabs */}\n {configs.length > 1 && (\n <div className=\"FeaturedDataTabs__tabs\">\n {configs.map((config, index) => {\n const isSelectedTabIndex: boolean = index === selectedTabIndex\n return (\n <div\n className={`FeaturedDataTabs__tabs__tab ${\n isSelectedTabIndex\n ? 'FeaturedDataTabs__tabs__tab__selected'\n : ''\n }`}\n key={config.title}\n >\n <button\n className=\"SRC-centerAndJustifyContent\"\n onClick={() => setSelectedTabIndex(index)}\n >\n {config.icon && <Icon type={config.icon}></Icon>}\n <span>{config.title}</span>\n </button>\n </div>\n )\n })}\n </div>\n )}\n {/* tab content */}\n {selectedTabProps && (\n <>\n {selectedTabProps.plotsConfig.configs.length > 0 ? (\n <>\n <FeaturedDataPlots\n key={`${sql}-${selectedTabIndex}`}\n sql={sql}\n rgbIndex={rgbIndex}\n explorePagePath={selectedTabProps.explorePagePath}\n {...selectedTabProps.plotsConfig}\n />\n {selectedTabProps.explorePagePath && (\n <div className=\"FeaturedDataTabs__explore-all\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n href={selectedTabProps.explorePagePath}\n sx={theme => ({\n mb: '40px',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n })}\n >\n View All {selectedTabProps.exploreObjectType}\n </Button>\n </div>\n )}\n </>\n ) : (\n <Paper sx={{ p: 2 }}>\n <NoContentAvailable />\n </Paper>\n )}\n </>\n )}\n </Box>\n )\n}\n\nexport default FeaturedDataTabs\n"],"names":["FeaturedDataTabs","props","selectedTabIndex","setSelectedTabIndex","useState","configs","rgbIndex","sql","selectedTabProps","jsxs","Box","jsx","config","index","Icon","Fragment","FeaturedDataPlots","Button","theme","Paper","NoContentAvailable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,SAASA,EAAiBC,GAA8B;AACtD,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAiB,CAAC,GAC5D,EAAE,SAAAC,GAAS,UAAAC,GAAU,KAAAC,EAAA,IAAQN,GAE7BO,IAAwCH,EAAQH,CAAgB;AACtE,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI,EAAE,SAAS,EAAE,IAAI,QAAQ,IAAI,SAAO;AAAA,MAGvC,UAAA;AAAA,QAAAL,EAAQ,SAAS,KAChB,gBAAAM,EAAC,OAAA,EAAI,WAAU,0BACZ,UAAAN,EAAQ,IAAI,CAACO,GAAQC,MAGlB,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,+BAHqBE,MAAUX,IAKpC,0CACA,EACN;AAAA,YAGA,UAAA,gBAAAO;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS,MAAMN,EAAoBU,CAAK;AAAA,gBAEvC,UAAA;AAAA,kBAAAD,EAAO,QAAQ,gBAAAD,EAACG,GAAA,EAAK,MAAMF,EAAO,MAAM;AAAA,kBACzC,gBAAAD,EAAC,QAAA,EAAM,UAAAC,EAAO,MAAA,CAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACtB;AAAA,UARKA,EAAO;AAAA,QAAA,CAWjB,EAAA,CACH;AAAA,QAGDJ,KACC,gBAAAG,EAAAI,GAAA,EACG,UAAAP,EAAiB,YAAY,QAAQ,SAAS,IAC7C,gBAAAC,EAAAM,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAJ;AAAA,YAACK;AAAA,YAAA;AAAA,cAEC,KAAAT;AAAA,cACA,UAAAD;AAAA,cACA,iBAAiBE,EAAiB;AAAA,cACjC,GAAGA,EAAiB;AAAA,YAAA;AAAA,YAJhB,GAAGD,CAAG,IAAIL,CAAgB;AAAA,UAAA;AAAA,UAMhCM,EAAiB,mBAChB,gBAAAG,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA,gBAAAF;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,MAAMT,EAAiB;AAAA,cACvB,IAAI,CAAAU,OAAU;AAAA,gBACZ,IAAI;AAAA,gBACJ,CAACA,EAAM,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,kBAC9B,OAAO;AAAA,gBAAA;AAAA,cACT;AAAA,cAEH,UAAA;AAAA,gBAAA;AAAA,gBACWV,EAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,EAC7B,CACF;AAAA,QAAA,EAAA,CAEJ,IAEA,gBAAAG,EAACQ,GAAA,EAAM,IAAI,EAAE,GAAG,EAAA,GACd,UAAA,gBAAAR,EAACS,GAAA,CAAA,CAAmB,EAAA,CACtB,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -28,8 +28,8 @@ export interface FullWidthAlertProps {
|
|
|
28
28
|
globalAlertSx?: AlertProps['sx'];
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Nav bar item, displayed when files have been added to the Download
|
|
32
|
-
* This must be configured with the URL of a page dedicated to showing the Download
|
|
31
|
+
* Nav bar item, displayed when files have been added to the Download List.
|
|
32
|
+
* This must be configured with the URL of a page dedicated to showing the Download List.
|
|
33
33
|
*/
|
|
34
34
|
declare function FullWidthAlert(props: FullWidthAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
35
35
|
export default FullWidthAlert;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullWidthAlert.js","sources":["../../../src/components/FullWidthAlert/FullWidthAlert.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport {\n Alert,\n AlertProps,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Snackbar,\n Stack,\n Tooltip,\n} from '@mui/material'\nimport { MouseEventHandler, ReactNode, useEffect } from 'react'\nimport './FullWidthAlert.scss'\n\nexport type AlertButtonConfig = {\n text: string\n isDisabled?: boolean\n tooltipText?: string\n} & (\n | // \"onClick\" or \"href\", but not both\n {\n onClick?: MouseEventHandler<HTMLButtonElement>\n }\n | { href?: string }\n)\n\nexport type FullWidthAlertVariant = 'warning' | 'info' | 'danger' | 'success'\n\nexport interface FullWidthAlertProps {\n variant?: FullWidthAlertVariant\n show?: boolean\n title?: string\n description?: ReactNode\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n tertiaryButtonConfig?: AlertButtonConfig\n onClose?: () => void\n autoCloseAfterDelayInSeconds?: number\n isGlobal?: boolean\n icon?: ReactNode\n sx?: AlertProps['sx']\n globalAlertSx?: AlertProps['sx']\n}\n\nfunction variantToSeverity(variant: string | undefined) {\n return (variant === 'danger' ? 'error' : variant) as AlertProps['severity']\n}\n\nfunction ButtonFromConfig(props: {\n config?: AlertButtonConfig\n variant: ButtonProps['variant']\n}) {\n const { config, variant } = props\n if (config && ('onClick' in config || 'href' in config)) {\n return (\n <Tooltip title={config.tooltipText ?? ''} enterNextDelay={300}>\n <span // See https://github.com/wwayne/react-tooltip/issues/304\n data-tip-disable={false}\n >\n <Button\n variant={variant}\n sx={{\n width: { xs: '100%', md: 'initial' },\n }}\n color=\"primary\"\n disabled={config.isDisabled}\n onClick={e => {\n if ('onClick' in config) {\n e.preventDefault()\n config.onClick!(e)\n } else if ('href' in config) {\n e.preventDefault()\n window.open(config.href, '_blank', 'noopener')\n }\n }}\n >\n {config.text}\n </Button>\n </span>\n </Tooltip>\n )\n }\n return null\n}\n\n/**\n * Nav bar item, displayed when files have been added to the Download
|
|
1
|
+
{"version":3,"file":"FullWidthAlert.js","sources":["../../../src/components/FullWidthAlert/FullWidthAlert.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport {\n Alert,\n AlertProps,\n AlertTitle,\n Box,\n Button,\n ButtonProps,\n Snackbar,\n Stack,\n Tooltip,\n} from '@mui/material'\nimport { MouseEventHandler, ReactNode, useEffect } from 'react'\nimport './FullWidthAlert.scss'\n\nexport type AlertButtonConfig = {\n text: string\n isDisabled?: boolean\n tooltipText?: string\n} & (\n | // \"onClick\" or \"href\", but not both\n {\n onClick?: MouseEventHandler<HTMLButtonElement>\n }\n | { href?: string }\n)\n\nexport type FullWidthAlertVariant = 'warning' | 'info' | 'danger' | 'success'\n\nexport interface FullWidthAlertProps {\n variant?: FullWidthAlertVariant\n show?: boolean\n title?: string\n description?: ReactNode\n primaryButtonConfig?: AlertButtonConfig\n secondaryButtonConfig?: AlertButtonConfig\n tertiaryButtonConfig?: AlertButtonConfig\n onClose?: () => void\n autoCloseAfterDelayInSeconds?: number\n isGlobal?: boolean\n icon?: ReactNode\n sx?: AlertProps['sx']\n globalAlertSx?: AlertProps['sx']\n}\n\nfunction variantToSeverity(variant: string | undefined) {\n return (variant === 'danger' ? 'error' : variant) as AlertProps['severity']\n}\n\nfunction ButtonFromConfig(props: {\n config?: AlertButtonConfig\n variant: ButtonProps['variant']\n}) {\n const { config, variant } = props\n if (config && ('onClick' in config || 'href' in config)) {\n return (\n <Tooltip title={config.tooltipText ?? ''} enterNextDelay={300}>\n <span // See https://github.com/wwayne/react-tooltip/issues/304\n data-tip-disable={false}\n >\n <Button\n variant={variant}\n sx={{\n width: { xs: '100%', md: 'initial' },\n }}\n color=\"primary\"\n disabled={config.isDisabled}\n onClick={e => {\n if ('onClick' in config) {\n e.preventDefault()\n config.onClick!(e)\n } else if ('href' in config) {\n e.preventDefault()\n window.open(config.href, '_blank', 'noopener')\n }\n }}\n >\n {config.text}\n </Button>\n </span>\n </Tooltip>\n )\n }\n return null\n}\n\n/**\n * Nav bar item, displayed when files have been added to the Download List.\n * This must be configured with the URL of a page dedicated to showing the Download List.\n */\nfunction FullWidthAlert(props: FullWidthAlertProps) {\n const {\n title,\n description,\n primaryButtonConfig,\n secondaryButtonConfig,\n tertiaryButtonConfig,\n show = true,\n onClose,\n autoCloseAfterDelayInSeconds,\n variant = 'info',\n isGlobal = true,\n icon,\n sx,\n globalAlertSx,\n } = props\n\n useEffect(() => {\n let timer: NodeJS.Timeout\n if (onClose && autoCloseAfterDelayInSeconds) {\n timer = setTimeout(onClose, autoCloseAfterDelayInSeconds * 1000)\n }\n return () => {\n if (timer) {\n clearTimeout(timer)\n }\n }\n }, [onClose, autoCloseAfterDelayInSeconds])\n\n const alert = (\n <Alert\n severity={variantToSeverity(variant)}\n sx={spreadSx(\n {\n width: '100%',\n my: '10px',\n '.MuiAlert-message': {\n flexGrow: 1,\n },\n '.MuiAlert-icon': {\n display: { xs: 'none', sm: 'flex' },\n },\n },\n sx,\n )}\n className=\"FullWidthAlert\"\n onClose={onClose}\n icon={icon}\n >\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n spacing={{ xs: 1, sm: 2 }}\n sx={{\n alignItems: { xs: 'start', sm: 'center' },\n gap: { xs: '8px', sm: 'initial' },\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <Box>\n {title && <AlertTitle>{title}</AlertTitle>}\n <span className=\"FullWidthAlertDescription\">{description}</span>\n </Box>\n {(primaryButtonConfig ||\n secondaryButtonConfig ||\n tertiaryButtonConfig) && (\n <Stack\n spacing={{ xs: 1, lg: 2 }}\n direction={{ xs: 'row', sm: 'column', lg: 'row' }}\n sx={theme => ({\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n gap: { xs: '8px', sm: 'initial' },\n flexWrap: { xs: 'wrap', sm: 'nowrap' },\n width: { xs: '100%', sm: 'initial' },\n [theme.breakpoints.down('sm')]: {\n '& > *': {\n flexGrow: 1,\n },\n },\n })}\n >\n {tertiaryButtonConfig && (\n <ButtonFromConfig config={tertiaryButtonConfig} variant=\"text\" />\n )}\n {secondaryButtonConfig && (\n <ButtonFromConfig config={secondaryButtonConfig} variant=\"text\" />\n )}\n {primaryButtonConfig && (\n <ButtonFromConfig\n config={primaryButtonConfig}\n variant=\"contained\"\n />\n )}\n </Stack>\n )}\n </Stack>\n </Alert>\n )\n\n return (\n <>\n {isGlobal ? (\n <Snackbar\n open={show}\n className={isGlobal ? 'FullWidthAlertGlobal' : undefined}\n sx={{\n width: '96%',\n filter:\n 'drop-shadow(0px 8px 8px rgba(0, 0, 0, 0.05)) drop-shadow(0px 2px 2px rgba(0, 0, 0, 0.05)) drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.05))',\n ...globalAlertSx,\n }}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n slotProps={{\n transition: {\n appear: false,\n },\n }}\n >\n {alert}\n </Snackbar>\n ) : (\n show && alert\n )}\n </>\n )\n}\n\nexport default FullWidthAlert\n"],"names":["variantToSeverity","variant","ButtonFromConfig","props","config","Tooltip","jsx","Button","e","FullWidthAlert","title","description","primaryButtonConfig","secondaryButtonConfig","tertiaryButtonConfig","show","onClose","autoCloseAfterDelayInSeconds","isGlobal","icon","sx","globalAlertSx","useEffect","timer","alert","Alert","spreadSx","jsxs","Stack","Box","AlertTitle","theme","Snackbar"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CardLabel } from '@/components/row_renderers/utils/CardFooter';
|
|
2
2
|
import { FileHandleAssociation } from '@sage-bionetworks/synapse-types';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { DescriptionConfig } from '../CardContainerLogic';
|
|
5
5
|
import { HeaderCardVariant } from '../HeaderCard';
|
|
6
6
|
import { SustainabilityScorecardProps } from '../SustainabilityScorecard/SustainabilityScorecard';
|
|
7
7
|
/** Resolved CTA link configuration with actual href values (as opposed to CTACardLink which uses column names) */
|
|
@@ -58,10 +58,6 @@ export type GenericCardProps = {
|
|
|
58
58
|
* The initial number of labels to display in the footer of the card
|
|
59
59
|
*/
|
|
60
60
|
secondaryLabelLimit?: number;
|
|
61
|
-
/**
|
|
62
|
-
* Options for displaying icons with the labels in the card footer
|
|
63
|
-
*/
|
|
64
|
-
columnIconOptions?: ColumnIconConfigs;
|
|
65
61
|
/**
|
|
66
62
|
* Optional configuration for displaying CTA button(s) on the card. Accepts a single config or an array.
|
|
67
63
|
*/
|
|
@@ -78,6 +74,10 @@ export type GenericCardProps = {
|
|
|
78
74
|
* Optional ReactNode to be rendered next to the card type
|
|
79
75
|
*/
|
|
80
76
|
cardTypeAdornment?: React.ReactNode;
|
|
77
|
+
/**
|
|
78
|
+
* Optional content to render to the right of the title/subtitle/description area.
|
|
79
|
+
*/
|
|
80
|
+
titleAreaRightContent?: React.ReactNode;
|
|
81
81
|
/**
|
|
82
82
|
* Character count threshold for truncating description
|
|
83
83
|
* @default 400
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericCard.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"GenericCard.d.ts","sourceRoot":"","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAG7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAA;AAIjG,kHAAkH;AAClH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,sBAAsB,CAAC,EAAE;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,6FAA6F;IAC7F,kCAAkC,CAAC,EAAE;QACnC,sEAAsE;QACtE,qBAAqB,EAAE,qBAAqB,CAAA;QAC5C,gDAAgD;QAChD,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,qEAAqE;IACrE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;wBACoB;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAA;IAC/C;;OAEG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC;;OAEG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAID;;GAEG;AACH,eAAO,MAAM,WAAW,yFAyKtB,CAAA;AAEF,eAAe,WAAW,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as r, jsxs as
|
|
1
|
+
import { jsx as r, jsxs as t } from "react/jsx-runtime";
|
|
2
2
|
import { GenericCardTitle as H } from "./GenericCardTitle.js";
|
|
3
|
-
import { Box as
|
|
3
|
+
import { Box as l, Stack as I } from "@mui/material";
|
|
4
4
|
import { forwardRef as B } from "react";
|
|
5
5
|
import F from "../HeaderCard.js";
|
|
6
6
|
import G from "../row_renderers/utils/CardFooter.js";
|
|
@@ -17,80 +17,84 @@ import "../../assets/icons/study-complete.svg.js";
|
|
|
17
17
|
import "../../assets/icons/translational.svg.js";
|
|
18
18
|
import "../../assets/icons/tree_horizontal.svg.js";
|
|
19
19
|
import "../../assets/icons/standardDataModel.svg.js";
|
|
20
|
+
import "../../assets/icons/Challenge.svg.js";
|
|
20
21
|
import "@mui/material/SvgIcon";
|
|
21
22
|
import "../../utils/SynapseConstants.js";
|
|
22
23
|
import "../../assets/ArcusBioIcon.svg.js";
|
|
23
24
|
import "../../assets/icons/AccessPending.svg.js";
|
|
24
25
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
25
26
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
27
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
28
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
26
29
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
27
30
|
import "../../assets/icons/computationalTool.svg.js";
|
|
28
31
|
import "../../assets/icons/dataReuse.svg.js";
|
|
29
32
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
30
33
|
import "../../assets/icons/modelSystem.svg.js";
|
|
34
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
31
35
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
32
36
|
import "@mui/icons-material";
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
const M = [],
|
|
37
|
+
import { SmartLink as _ } from "../SmartLink/SmartLink.js";
|
|
38
|
+
import { FileHandleLink as j } from "../widgets/FileHandleLink.js";
|
|
39
|
+
import { CollapsibleDescription as E } from "./CollapsibleDescription.js";
|
|
40
|
+
const M = [], br = B(function(R, c) {
|
|
37
41
|
const {
|
|
38
|
-
icon:
|
|
39
|
-
type:
|
|
42
|
+
icon: f,
|
|
43
|
+
type: h,
|
|
40
44
|
title: n,
|
|
41
|
-
titleLinkConfiguration:
|
|
45
|
+
titleLinkConfiguration: o,
|
|
42
46
|
titleAsFileHandleLinkConfiguration: a,
|
|
43
|
-
subtitle:
|
|
44
|
-
description:
|
|
45
|
-
descriptionSubTitle:
|
|
46
|
-
descriptionConfig:
|
|
47
|
-
cardTopContent:
|
|
47
|
+
subtitle: s,
|
|
48
|
+
description: C,
|
|
49
|
+
descriptionSubTitle: S = "",
|
|
50
|
+
descriptionConfig: x,
|
|
51
|
+
cardTopContent: g,
|
|
48
52
|
cardTopButtons: p,
|
|
49
|
-
isHeader:
|
|
50
|
-
headerCardVariant:
|
|
53
|
+
isHeader: m = !1,
|
|
54
|
+
headerCardVariant: T,
|
|
51
55
|
useStylesForDisplayedImage: u = !1,
|
|
52
|
-
labels:
|
|
53
|
-
secondaryLabelLimit:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
renderedIconList: T,
|
|
56
|
+
labels: d = M,
|
|
57
|
+
secondaryLabelLimit: v,
|
|
58
|
+
ctaLinkConfig: i,
|
|
59
|
+
renderedIconList: L,
|
|
57
60
|
sustainabilityScorecard: b,
|
|
58
|
-
cardTypeAdornment:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
cardTypeAdornment: N,
|
|
62
|
+
titleAreaRightContent: y,
|
|
63
|
+
charCountCutoff: w
|
|
64
|
+
} = R, A = d.length > 0, D = {
|
|
61
65
|
// undefined, take default value from class
|
|
62
|
-
marginTop:
|
|
63
|
-
marginBottom:
|
|
64
|
-
paddingBottom:
|
|
66
|
+
marginTop: m ? "0px" : void 0,
|
|
67
|
+
marginBottom: m ? "0px" : void 0,
|
|
68
|
+
paddingBottom: A || u ? void 0 : "15px"
|
|
65
69
|
};
|
|
66
|
-
return
|
|
70
|
+
return m ? /* @__PURE__ */ r(
|
|
67
71
|
F,
|
|
68
72
|
{
|
|
69
|
-
ref:
|
|
70
|
-
headerCardVariant:
|
|
71
|
-
descriptionConfig:
|
|
72
|
-
charCountCutoff:
|
|
73
|
+
ref: c,
|
|
74
|
+
headerCardVariant: T,
|
|
75
|
+
descriptionConfig: x,
|
|
76
|
+
charCountCutoff: w,
|
|
73
77
|
title: n,
|
|
74
|
-
subTitle:
|
|
75
|
-
description:
|
|
76
|
-
type:
|
|
77
|
-
icon:
|
|
78
|
-
values:
|
|
79
|
-
href:
|
|
80
|
-
target:
|
|
81
|
-
ctaLinkConfig:
|
|
78
|
+
subTitle: s,
|
|
79
|
+
description: C,
|
|
80
|
+
type: h,
|
|
81
|
+
icon: f,
|
|
82
|
+
values: d,
|
|
83
|
+
href: o?.href,
|
|
84
|
+
target: o?.target,
|
|
85
|
+
ctaLinkConfig: i,
|
|
82
86
|
isAlignToLeftNav: !0,
|
|
83
|
-
secondaryLabelLimit:
|
|
87
|
+
secondaryLabelLimit: v,
|
|
84
88
|
cardTopButtons: p,
|
|
85
|
-
cardTopContent:
|
|
89
|
+
cardTopContent: g,
|
|
86
90
|
sustainabilityScorecard: b
|
|
87
91
|
}
|
|
88
|
-
) : /* @__PURE__ */
|
|
89
|
-
/* @__PURE__ */
|
|
90
|
-
|
|
91
|
-
/* @__PURE__ */
|
|
92
|
+
) : /* @__PURE__ */ t("div", { style: D, ref: c, className: "SRC-portalCard", children: [
|
|
93
|
+
/* @__PURE__ */ t("div", { className: "SRC-portalCardMain", children: [
|
|
94
|
+
f,
|
|
95
|
+
/* @__PURE__ */ t("div", { className: "SRC-cardContent", children: [
|
|
92
96
|
p && /* @__PURE__ */ r(
|
|
93
|
-
|
|
97
|
+
l,
|
|
94
98
|
{
|
|
95
99
|
sx: {
|
|
96
100
|
position: "absolute",
|
|
@@ -103,7 +107,7 @@ const M = [], Ar = B(function(S, d) {
|
|
|
103
107
|
children: p
|
|
104
108
|
}
|
|
105
109
|
),
|
|
106
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ t(
|
|
107
111
|
I,
|
|
108
112
|
{
|
|
109
113
|
sx: {
|
|
@@ -112,74 +116,84 @@ const M = [], Ar = B(function(S, d) {
|
|
|
112
116
|
gap: "10px"
|
|
113
117
|
},
|
|
114
118
|
children: [
|
|
115
|
-
/* @__PURE__ */ r("div", { className: "SRC-type", children:
|
|
116
|
-
|
|
119
|
+
/* @__PURE__ */ r("div", { className: "SRC-type", children: h }),
|
|
120
|
+
N
|
|
117
121
|
]
|
|
118
122
|
}
|
|
119
123
|
),
|
|
120
|
-
|
|
121
|
-
/* @__PURE__ */
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
124
|
+
L,
|
|
125
|
+
/* @__PURE__ */ t(l, { className: "SRC-cardTitleArea", children: [
|
|
126
|
+
/* @__PURE__ */ t(l, { sx: { flex: 1, minWidth: 0 }, children: [
|
|
127
|
+
/* @__PURE__ */ r("div", { children: /* @__PURE__ */ t(
|
|
128
|
+
"h3",
|
|
129
|
+
{
|
|
130
|
+
className: "SRC-boldText SRC-blackText",
|
|
131
|
+
style: { margin: "none" },
|
|
132
|
+
children: [
|
|
133
|
+
!a && /* @__PURE__ */ r(
|
|
134
|
+
H,
|
|
135
|
+
{
|
|
136
|
+
title: n,
|
|
137
|
+
href: o?.href,
|
|
138
|
+
target: o?.target
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
a && /* @__PURE__ */ r(
|
|
142
|
+
j,
|
|
143
|
+
{
|
|
144
|
+
fileHandleAssociation: a.fileHandleAssociation,
|
|
145
|
+
showDownloadIcon: a.showDownloadIcon,
|
|
146
|
+
displayValue: n
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
) }),
|
|
152
|
+
s && /* @__PURE__ */ r("div", { className: "SRC-author", children: s }),
|
|
153
|
+
/* @__PURE__ */ r(
|
|
154
|
+
E,
|
|
155
|
+
{
|
|
156
|
+
description: C,
|
|
157
|
+
descriptionSubTitle: S,
|
|
158
|
+
descriptionConfig: x
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
i && /* @__PURE__ */ r(
|
|
162
|
+
l,
|
|
163
|
+
{
|
|
164
|
+
sx: { mt: "20px", display: "flex", gap: 2, flexWrap: "wrap" },
|
|
165
|
+
children: (Array.isArray(i) ? i : [i]).map(
|
|
166
|
+
(e, k) => e.text && e.href && /* @__PURE__ */ r(
|
|
167
|
+
_,
|
|
168
|
+
{
|
|
169
|
+
href: e.href,
|
|
170
|
+
target: e.target,
|
|
171
|
+
children: e.text
|
|
172
|
+
},
|
|
173
|
+
k
|
|
174
|
+
)
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
] }),
|
|
179
|
+
y && /* @__PURE__ */ r("div", { className: "SRC-cardTitleAreaDetails", children: y })
|
|
180
|
+
] })
|
|
166
181
|
] })
|
|
167
182
|
] }),
|
|
168
|
-
|
|
183
|
+
A && /* @__PURE__ */ r(
|
|
169
184
|
G,
|
|
170
185
|
{
|
|
171
186
|
isHeader: !1,
|
|
172
|
-
secondaryLabelLimit:
|
|
173
|
-
values:
|
|
174
|
-
columnIconOptions: R,
|
|
187
|
+
secondaryLabelLimit: v,
|
|
188
|
+
values: d,
|
|
175
189
|
className: u ? void 0 : "hasIcon",
|
|
176
|
-
cardTopContent:
|
|
190
|
+
cardTopContent: g
|
|
177
191
|
}
|
|
178
192
|
)
|
|
179
193
|
] });
|
|
180
194
|
});
|
|
181
195
|
export {
|
|
182
|
-
|
|
183
|
-
|
|
196
|
+
br as GenericCard,
|
|
197
|
+
br as default
|
|
184
198
|
};
|
|
185
199
|
//# sourceMappingURL=GenericCard.js.map
|