@gen3/frontend 0.12.55 → 0.12.56

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.
Files changed (49) hide show
  1. package/dist/dts/components/PanelErrorBoundary.d.ts +1 -1
  2. package/dist/dts/components/Providers/Gen3Provider.d.ts +1 -1
  3. package/dist/dts/components/SegmentedControl.stories.d.ts +4 -4
  4. package/dist/dts/components/facets/EnumFacet.d.ts +1 -1
  5. package/dist/dts/components/facets/EnumFacet.d.ts.map +1 -1
  6. package/dist/dts/components/facets/EnumFacet.js +2 -2
  7. package/dist/dts/components/facets/EnumFacet.js.map +1 -1
  8. package/dist/dts/components/facets/createFacetCard.d.ts.map +1 -1
  9. package/dist/dts/components/facets/createFacetCard.js +1 -1
  10. package/dist/dts/components/facets/createFacetCard.js.map +1 -1
  11. package/dist/dts/components/facets/types.d.ts +3 -2
  12. package/dist/dts/components/facets/types.d.ts.map +1 -1
  13. package/dist/dts/components/facets/types.js.map +1 -1
  14. package/dist/dts/components/facets/utils.d.ts.map +1 -1
  15. package/dist/dts/components/facets/utils.js +13 -10
  16. package/dist/dts/components/facets/utils.js.map +1 -1
  17. package/dist/dts/components/facets/utils.unit.test.d.ts +2 -0
  18. package/dist/dts/components/facets/utils.unit.test.d.ts.map +1 -0
  19. package/dist/dts/components/facets/utils.unit.test.js +44 -0
  20. package/dist/dts/components/facets/utils.unit.test.js.map +1 -0
  21. package/dist/dts/features/Analysis/AnalysisCardCompact.stories.d.ts +16 -16
  22. package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.d.ts +1 -1
  23. package/dist/index/cjs/QueryPanel-C91LP5A0.js +39 -0
  24. package/dist/index/cjs/QueryPanel-C91LP5A0.js.map +1 -0
  25. package/dist/index/cjs/index-BusS3DRY.js +39303 -0
  26. package/dist/index/cjs/index-BusS3DRY.js.map +1 -0
  27. package/dist/index/cjs/index.js +1 -1
  28. package/dist/index/esm/QueryPanel-mwAD2gzq.js +37 -0
  29. package/dist/index/esm/QueryPanel-mwAD2gzq.js.map +1 -0
  30. package/dist/index/esm/index-DVdnLWTC.js +39044 -0
  31. package/dist/index/esm/index-DVdnLWTC.js.map +1 -0
  32. package/dist/index/esm/index.js +1 -1
  33. package/dist/index.d.ts +6 -5
  34. package/dist/pages/cjs/CohortBuilder-Dg14APGn.js +581 -0
  35. package/dist/pages/cjs/CohortBuilder-Dg14APGn.js.map +1 -0
  36. package/dist/pages/cjs/QueryPanel-PvEBQTDr.js +39 -0
  37. package/dist/pages/cjs/QueryPanel-PvEBQTDr.js.map +1 -0
  38. package/dist/pages/cjs/index-B-g3hd_n.js +30378 -0
  39. package/dist/pages/cjs/index-B-g3hd_n.js.map +1 -0
  40. package/dist/pages/cjs/index.js +1 -1
  41. package/dist/pages/esm/CohortBuilder-A2czSsp-.js +578 -0
  42. package/dist/pages/esm/CohortBuilder-A2czSsp-.js.map +1 -0
  43. package/dist/pages/esm/QueryPanel-B6WUr-YD.js +37 -0
  44. package/dist/pages/esm/QueryPanel-B6WUr-YD.js.map +1 -0
  45. package/dist/pages/esm/index-tvLx0_Ch.js +30292 -0
  46. package/dist/pages/esm/index-tvLx0_Ch.js.map +1 -0
  47. package/dist/pages/esm/index.js +1 -1
  48. package/dist/pages.d.ts +2 -2
  49. package/package.json +7 -7
@@ -1,4 +1,4 @@
1
- export { A as ACTIVITY_CHANNEL, a as AISearchPageGetServerSideProps, b as AccessLevel, c as AccordionPanel, d as ActionBar, e as ActionButton, f as AdminAuthZPageGetServerSideProps, g as AiSearch, h as AiSearchPage, i as AnalysisCenter, j as AnalysisCenterWithSections, k as AnalysisEditorPage, l as AnalysisEditorPageGetServerSideProps, m as AnalysisPage, n as AnalysisPageGetServerSideProps, o as AnalysisWithCloseButton, p as AuthzPage, B as BAD_DATA_MESSAGE, q as Banner, r as BaseModal, C as CardContainer, s as Charts, t as ClinicalDataAnalysisPage, u as ClinicalDataAnalysisServerSideProps, v as CohortActionButton, w as CohortBuilder, x as CohortDropdownActionButton, y as CohortManager, z as CohortManagerAndExpression, D as CollapsableCharts, E as CollapsableSidebar, F as ColorThemePage, G as ColorThemePageGetServerSideProps, H as ContentSource, I as CountsValue, J as CreateCredentialsAPIKeyModal, K as CrosswalkPage, L as CrosswalkPageGetServerSideProps, M as Custom403Page, N as Custom403PageGetServerSideProps, O as Custom404Page, P as Custom404PageGetServerSideProps, Q as DAYS_IN_YEAR, R as DEFAULT_MAXIMUM, S as DEFAULT_MINIMUM, T as DEFAULT_VISIBLE_ITEMS, U as DataDictionaryPage, V as DataLibraryPage, W as DataLibraryPageGetServerSideProps, X as DefaultAuthorizedRoutesConfig, Y as DictionaryPageGetServerSideProps, Z as DictionaryWithContext, _ as DiscoveryCellRendererFactory, $ as DiscoveryConfigProvider, a0 as DiscoveryIndexPanel, a1 as DiscoveryPage, a2 as DiscoveryPageGetServerSideProps, a3 as DownloadButton, a4 as DownloadsPanel, a5 as DropdownButton, a6 as DropdownPanel, a7 as DropdownWithIcon, a8 as EmptyTableMessage, a9 as EnumFacet, aa as EnumFacetChart, ab as ErrorCard, ac as ExactValueFacet, ad as ExplorerPage, ae as ExplorerPageGetServerSideProps, af as ExplorerPageGetServerSidePropsForConfigId, ag as ExplorerTable, ah as ExplorerTableCellRendererFactory, ai as ExplorerTableDetailsPanelFactory, aj as FacetControlsHeader, ak as FacetExpander, al as FacetSelector, am as FacetSortPanel, an as FacetTabs, ao as FileSummary, ap as FiltersPanel, aq as FirstTimeModal, ar as FixedNavPageLayout, as as Footer, at as Gen3Button, au as Gen3ButtonReverse, av as Gen3Link, aw as Gen3ModalsProvider, ax as Gen3Provider, ay as GqlQueryEditor, az as Header, aA as HoverLink, aB as IconButton, aC as InfoRolloverButton, aD as JSONObjectDownloadButton, aE as LandingPage, aF as LandingPageGetServerSideProps, aG as LoginButton, aH as LoginPage, aI as LoginPageGetServerSideProps, aJ as LoginPanel, aK as LoginProvidersPanel, aL as MessageCard, aM as MessagePage, aN as MetadataDictionary, aO as MinutesToMilliseconds, aP as MultiSelectValueFacet, aQ as NavPageLayout, aR as NavigationBar, aS as NavigationButton, aT as NavigationRail, aU as NoAccessModal, aV as NotebookLitePage, aW as NotebookLitePageGetStaticProps, aX as OverflowTooltippedLabel, aY as PanelErrorBoundary, aZ as Profile, a_ as ProfilePage, a$ as ProfilePageGetServerSideProps, b0 as ProfileProvider, b1 as ProtectedContent, b2 as ProtectedContentUI, b3 as ProtectedOverlay, b4 as QueryExpression, b5 as QueryExpressionContext, b6 as QueryExpressionSection, b7 as QueryPage, b8 as QueryPageGetServerSideProps, b9 as RangeFacet, ba as ReactECharts, bb as Repository, bc as RepositoryPage, bd as RepositoryPageGetServerSideProps, be as ResourcesFilters, bf as SPECIAL_CASE_FIELDS, bg as SegmentedControl, bh as SessionExpiredModal, bi as SinglePageStudyDetailsPanel, bj as StaticNotebookIFrame, bk as StudyDetailsPanel, bl as StudyGroup, bm as StudyGroupPanel, bn as StudyProvider, bo as SubmissionPage, bp as SubmissionPageGetServerSideProps, bq as TabbedCohortBuilder, br as TabbedCohortBuilderPage, bs as TabbedCohortBuilderPageGetServerSideProps, bt as TabbedPanel, bu as TableXPositionContext, bv as TagCloud, bw as TailwindConfig, bx as TopBar, by as UploadJSONButton, bz as User, bA as WarningCard, bB as Workspace, bC as WorkspaceNoAccessPage, bD as WorkspaceNoAccessPageServerSideProps, bE as WorkspacePage, bF as WorkspacePageGetServerSideProps, bG as accessibleFieldName, bH as addIntersectionToIncludes, bI as addUnion, bJ as analysisApiCohortDiscovery, bK as capitalize, bL as classifyFacets, bM as compareKeysAscending, bN as compareKeysDescending, bO as computeRowSpan, bP as convertMinutesToMilliseconds, bQ as convertPathsToTree, bR as convertSecondsToMilliseconds, bS as convertToStringArray, bT as createCSSVariables, bU as createLabelFromHistogramData, bV as createMantineTheme, bW as credentialsLogin, bX as credentialsLogout, bY as extractObjectKey, bZ as extractRangeValues, b_ as filterAggregationsDataKeys, b$ as focusStyles, c0 as gen3Modals, c1 as getAllFieldsFromFilterConfigs, c2 as getByPath, c3 as getCurrentUnixTimestamp, c4 as getFormattedTimestamp, c5 as getHighResolutionTimestamp, c6 as getNavPageLayoutPropsFromConfig, c7 as getParamsValueAsString, c8 as getTagInfo, c9 as hasOwnProperty, ca as isArrayOfString, cb as isEnumFacetResponse, cc as isHeaderMetadata, cd as isPropertyKey, ce as isTextTransform, cf as isTimeGreaterThan, cg as itemsInCart, ch as mapFacetSortToSortType, ci as measureExecutionTime, cj as mergeDefaultTailwindClassnames, ck as processBucketData, cl as processDefinedRangeData, cm as processLabel, cn as processRangeData, co as processRangeKeyLabel, cp as registerCohortBuilderDefaultPreviewRenderers, cq as registerCohortDiscoveryApp, cr as registerCohortSimilarityApp, cs as registerDefaultDiscoveryDataLoaders, ct as registerDiscoveryDefaultCellRenderers, cu as registerDownloadButtonAction, cv as registerExplorerDefaultCellRenderers, cw as registerIGVApp, cx as registerMetadataSchemaApp, cy as removeIntersectionFromEnum, cz as removeKey, cA as removeMultipleSlashes, cB as removeUnion, cC as resourcePathFromProjectID, cD as sessionLogout, cE as sessionToken, cF as stripTrailingSlash, cG as toDisplayName, cH as truncateString, cI as unixTimeToString, cJ as updateFacetEnum, cK as useClearFilters, cL as useDiscoveryContext, cM as useExtractEnumFilterValues, cN as useExtractRangeFilterValues, cO as useFieldNameToLabel, cP as useGetFacetFilters, cQ as useGuppyActionButton, cR as useUpdateFilters, cS as useUpdateFiltersFlat, cT as userHasMethodForServiceOnResource, cU as validateObjectHasRequiredFields } from './index-CmCRwb9I.js';
1
+ export { A as ACTIVITY_CHANNEL, a as AISearchPageGetServerSideProps, b as AccessLevel, c as AccordionPanel, d as ActionBar, e as ActionButton, f as AdminAuthZPageGetServerSideProps, g as AiSearch, h as AiSearchPage, i as AnalysisCenter, j as AnalysisCenterWithSections, k as AnalysisEditorPage, l as AnalysisEditorPageGetServerSideProps, m as AnalysisPage, n as AnalysisPageGetServerSideProps, o as AnalysisWithCloseButton, p as AuthzPage, B as BAD_DATA_MESSAGE, q as Banner, r as BaseModal, C as CardContainer, s as Charts, t as ClinicalDataAnalysisPage, u as ClinicalDataAnalysisServerSideProps, v as CohortActionButton, w as CohortBuilder, x as CohortDropdownActionButton, y as CohortManager, z as CohortManagerAndExpression, D as CollapsableCharts, E as CollapsableSidebar, F as ColorThemePage, G as ColorThemePageGetServerSideProps, H as ContentSource, I as CountsValue, J as CreateCredentialsAPIKeyModal, K as CrosswalkPage, L as CrosswalkPageGetServerSideProps, M as Custom403Page, N as Custom403PageGetServerSideProps, O as Custom404Page, P as Custom404PageGetServerSideProps, Q as DAYS_IN_YEAR, R as DEFAULT_MAXIMUM, S as DEFAULT_MINIMUM, T as DEFAULT_VISIBLE_ITEMS, U as DataDictionaryPage, V as DataLibraryPage, W as DataLibraryPageGetServerSideProps, X as DefaultAuthorizedRoutesConfig, Y as DictionaryPageGetServerSideProps, Z as DictionaryWithContext, _ as DiscoveryCellRendererFactory, $ as DiscoveryConfigProvider, a0 as DiscoveryIndexPanel, a1 as DiscoveryPage, a2 as DiscoveryPageGetServerSideProps, a3 as DownloadButton, a4 as DownloadsPanel, a5 as DropdownButton, a6 as DropdownPanel, a7 as DropdownWithIcon, a8 as EmptyTableMessage, a9 as EnumFacet, aa as EnumFacetChart, ab as ErrorCard, ac as ExactValueFacet, ad as ExplorerPage, ae as ExplorerPageGetServerSideProps, af as ExplorerPageGetServerSidePropsForConfigId, ag as ExplorerTable, ah as ExplorerTableCellRendererFactory, ai as ExplorerTableDetailsPanelFactory, aj as FacetControlsHeader, ak as FacetExpander, al as FacetSelector, am as FacetSortPanel, an as FacetTabs, ao as FileSummary, ap as FiltersPanel, aq as FirstTimeModal, ar as FixedNavPageLayout, as as Footer, at as Gen3Button, au as Gen3ButtonReverse, av as Gen3Link, aw as Gen3ModalsProvider, ax as Gen3Provider, ay as GqlQueryEditor, az as Header, aA as HoverLink, aB as IconButton, aC as InfoRolloverButton, aD as JSONObjectDownloadButton, aE as LandingPage, aF as LandingPageGetServerSideProps, aG as LoginButton, aH as LoginPage, aI as LoginPageGetServerSideProps, aJ as LoginPanel, aK as LoginProvidersPanel, aL as MessageCard, aM as MessagePage, aN as MetadataDictionary, aO as MinutesToMilliseconds, aP as MultiSelectValueFacet, aQ as NavPageLayout, aR as NavigationBar, aS as NavigationButton, aT as NavigationRail, aU as NoAccessModal, aV as NotebookLitePage, aW as NotebookLitePageGetStaticProps, aX as OverflowTooltippedLabel, aY as PanelErrorBoundary, aZ as Profile, a_ as ProfilePage, a$ as ProfilePageGetServerSideProps, b0 as ProfileProvider, b1 as ProtectedContent, b2 as ProtectedContentUI, b3 as ProtectedOverlay, b4 as QueryExpression, b5 as QueryExpressionContext, b6 as QueryExpressionSection, b7 as QueryPage, b8 as QueryPageGetServerSideProps, b9 as RangeFacet, ba as ReactECharts, bb as Repository, bc as RepositoryPage, bd as RepositoryPageGetServerSideProps, be as ResourcesFilters, bf as SPECIAL_CASE_FIELDS, bg as SegmentedControl, bh as SessionExpiredModal, bi as SinglePageStudyDetailsPanel, bj as StaticNotebookIFrame, bk as StudyDetailsPanel, bl as StudyGroup, bm as StudyGroupPanel, bn as StudyProvider, bo as SubmissionPage, bp as SubmissionPageGetServerSideProps, bq as TabbedCohortBuilder, br as TabbedCohortBuilderPage, bs as TabbedCohortBuilderPageGetServerSideProps, bt as TabbedPanel, bu as TableXPositionContext, bv as TagCloud, bw as TailwindConfig, bx as TopBar, by as UploadJSONButton, bz as User, bA as WarningCard, bB as Workspace, bC as WorkspaceNoAccessPage, bD as WorkspaceNoAccessPageServerSideProps, bE as WorkspacePage, bF as WorkspacePageGetServerSideProps, bG as accessibleFieldName, bH as addIntersectionToIncludes, bI as addUnion, bJ as analysisApiCohortDiscovery, bK as capitalize, bL as classifyFacets, bM as compareKeysAscending, bN as compareKeysDescending, bO as computeRowSpan, bP as convertMinutesToMilliseconds, bQ as convertPathsToTree, bR as convertSecondsToMilliseconds, bS as convertToStringArray, bT as createCSSVariables, bU as createLabelFromHistogramData, bV as createMantineTheme, bW as credentialsLogin, bX as credentialsLogout, bY as extractObjectKey, bZ as extractRangeValues, b_ as filterAggregationsDataKeys, b$ as focusStyles, c0 as gen3Modals, c1 as getAllFieldsFromFilterConfigs, c2 as getByPath, c3 as getCurrentUnixTimestamp, c4 as getFormattedTimestamp, c5 as getHighResolutionTimestamp, c6 as getNavPageLayoutPropsFromConfig, c7 as getParamsValueAsString, c8 as getTagInfo, c9 as hasOwnProperty, ca as isArrayOfString, cb as isEnumFacetResponse, cc as isHeaderMetadata, cd as isPropertyKey, ce as isTextTransform, cf as isTimeGreaterThan, cg as itemsInCart, ch as mapFacetSortToSortType, ci as measureExecutionTime, cj as mergeDefaultTailwindClassnames, ck as processBucketData, cl as processDefinedRangeData, cm as processLabel, cn as processRangeData, co as processRangeKeyLabel, cp as registerCohortBuilderDefaultPreviewRenderers, cq as registerCohortDiscoveryApp, cr as registerCohortSimilarityApp, cs as registerDefaultDiscoveryDataLoaders, ct as registerDiscoveryDefaultCellRenderers, cu as registerDownloadButtonAction, cv as registerExplorerDefaultCellRenderers, cw as registerIGVApp, cx as registerMetadataSchemaApp, cy as removeIntersectionFromEnum, cz as removeKey, cA as removeMultipleSlashes, cB as removeUnion, cC as resourcePathFromProjectID, cD as sessionLogout, cE as sessionToken, cF as stripTrailingSlash, cG as toDisplayName, cH as truncateString, cI as unixTimeToString, cJ as updateFacetEnum, cK as useClearFilters, cL as useDiscoveryContext, cM as useExtractEnumFilterValues, cN as useExtractRangeFilterValues, cO as useFieldNameToLabel, cP as useGetFacetFilters, cQ as useGuppyActionButton, cR as useUpdateFilters, cS as useUpdateFiltersFlat, cT as userHasMethodForServiceOnResource, cU as validateObjectHasRequiredFields } from './index-DVdnLWTC.js';
2
2
  import '@gen3/core';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import React__default, { ReactElement, PropsWithChildren, ComponentType, JSX as JSX$1, ReactNode, Dispatch, SetStateAction, CSSProperties, FC, RefObject, Component } from 'react';
4
- import { JSONObject, FacetDefinition, Modals, ServiceAndMethod, CartItem, HistogramDataArray, DataLibraryStoreMode, ExportDatasetFields, HistogramData, AggregationsData, EnumFilterValue, Accessibility, RawDataAndTotalCountsParams, useGetRawDataAndTotalCountsQuery, Operation, CombineMode, NumericFromTo, DataFetchingResult, IndexAndField, SharedFieldMapping, FilterSet, RemoteSupportConfiguration, CohortItem, FileItem, Includes, Intersection, OperatorWithFieldAndArrayOfOperands, FacetType } from '@gen3/core';
4
+ import { JSONObject, FacetDefinition, Modals, ServiceAndMethod, CartItem, HistogramDataArray, DataLibraryStoreMode, ExportDatasetFields, HistogramData, AggregationsData, EnumFilterValue, Accessibility, RawDataAndTotalCountsParams, useGetRawDataAndTotalCountsQuery, FacetSortType as FacetSortType$1, Operation, CombineMode, NumericFromTo, DataFetchingResult, IndexAndField, SharedFieldMapping, FilterSet, RemoteSupportConfiguration, CohortItem, FileItem, Includes, Intersection, OperatorWithFieldAndArrayOfOperands, FacetType } from '@gen3/core';
5
5
  import * as _mantine_core from '@mantine/core';
6
6
  import { ButtonProps, BoxProps, FloatingPosition, SegmentedControlProps as SegmentedControlProps$1, TitleOrder, ButtonVariant, TooltipProps } from '@mantine/core';
7
7
  import Link from 'next/link';
@@ -1190,7 +1190,7 @@ declare const createMantineTheme: (fonts: Fonts, colors: Record<string, TenStrin
1190
1190
  xl?: string | undefined;
1191
1191
  } | undefined;
1192
1192
  respectReducedMotion?: boolean | undefined;
1193
- cursorType?: "default" | "pointer" | undefined;
1193
+ cursorType?: "pointer" | "default" | undefined;
1194
1194
  defaultGradient?: {
1195
1195
  from?: string | undefined;
1196
1196
  to?: string | undefined;
@@ -1803,6 +1803,7 @@ interface FacetCardProps<T extends FacetCommonHooks> {
1803
1803
  readonly queryOptions?: QueryOptions;
1804
1804
  readonly moveValuesToBottom?: Array<string>;
1805
1805
  readonly excludeValues?: Array<string>;
1806
+ readonly defaultSort?: FacetSortType;
1806
1807
  readonly header?: {
1807
1808
  readonly Panel: ComponentType<{
1808
1809
  children: ReactNode;
@@ -1929,7 +1930,7 @@ type NumericFacetCardProps = FacetCardProps<NumericRangeFacetHooks> & {
1929
1930
  readonly step?: number;
1930
1931
  readonly clearValues?: boolean;
1931
1932
  };
1932
- type FacetSortType = 'value-asc' | 'value-dsc' | 'label-asc' | 'label-desc';
1933
+ type FacetSortType = FacetSortType$1;
1933
1934
  /**
1934
1935
  * Sort type for enum buckets
1935
1936
  */
@@ -2906,7 +2907,7 @@ declare class PanelErrorBoundary extends Component<{
2906
2907
  static getDerivedStateFromError(error: Error): {
2907
2908
  error: Error;
2908
2909
  };
2909
- render(): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | null | undefined;
2910
+ render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
2910
2911
  }
2911
2912
 
2912
2913
  type NavigationRailItem = {
@@ -3085,7 +3086,7 @@ declare const DropdownPanel: <T extends FacetType = FacetType>({ filters, tabTit
3085
3086
 
3086
3087
  declare const TabbedPanel: ({ filters, tabTitle, facetDefinitions, facetDataHooks, }: TabbablePanelProps) => react_jsx_runtime.JSX.Element;
3087
3088
 
3088
- declare const EnumFacet: ({ field, hooks, valueLabel, description, facetName, showPercent, hideIfEmpty, showSearch, showFlip, showSettings, startShowingData, dismissCallback, width, sharedWithIndices, moveValuesToBottom, excludeValues, header, }: FacetCardProps<EnumFacetDataHooks>) => react_jsx_runtime.JSX.Element;
3089
+ declare const EnumFacet: ({ field, hooks, valueLabel, description, facetName, showPercent, hideIfEmpty, showSearch, showFlip, showSettings, startShowingData, dismissCallback, width, sharedWithIndices, moveValuesToBottom, excludeValues, defaultSort, header, }: FacetCardProps<EnumFacetDataHooks>) => react_jsx_runtime.JSX.Element;
3089
3090
 
3090
3091
  type ExactValueProps$1 = Omit<FacetCardProps<FacetHooks>, 'showSearch' | 'showFlip' | 'showPercent' | 'valueLabel'>;
3091
3092
  /**
@@ -0,0 +1,581 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var useDeepCompare = require('use-deep-compare');
6
+ var core$1 = require('@mantine/core');
7
+ var _ = require('lodash');
8
+ var core = require('@gen3/core');
9
+ var index = require('./index-B-g3hd_n.js');
10
+ require('echarts');
11
+ var hooks = require('@mantine/hooks');
12
+ require('victory');
13
+ require('react-icons/bs');
14
+ require('react-icons/io');
15
+ require('@mantine/form');
16
+ require('react-icons/md');
17
+ require('react-icons/ri');
18
+ require('react-icons/fa');
19
+ require('react-icons/pi');
20
+ require('@iconify-icon/react');
21
+ require('@mantine/modals');
22
+ require('tailwind-merge');
23
+ require('next/navigation');
24
+ require('next/image');
25
+ require('next/link');
26
+ require('next/router');
27
+ require('cookies-next');
28
+ require('swr');
29
+ require('jose');
30
+ require('cookie');
31
+ require('@gen3/core/server');
32
+ require('@mantine/notifications');
33
+ require('react-markdown');
34
+ require('react-icons/ai');
35
+ require('next/head');
36
+ require('remark-gfm');
37
+ require('rehype-sanitize');
38
+ require('fs');
39
+ require('path');
40
+ require('tailwind-styled-components');
41
+ require('file-saver');
42
+ require('@tanstack/react-table');
43
+ require('mantine-react-table-open');
44
+ require('react-icons/ti');
45
+ require('react-icons/fi');
46
+ require('@theothergothamdev/pluralize-ts');
47
+ require('jsonpath-plus');
48
+ require('redux-persist/integration/react');
49
+ require('redux-persist');
50
+ require('redux');
51
+ require('@reduxjs/toolkit');
52
+ require('redux-persist/lib/storage/createWebStorage');
53
+ require('filesize');
54
+ require('react-icons/lu');
55
+ require('react-dom');
56
+ require('react-minisearch');
57
+ require('minisearch');
58
+ require('lodash/uniq');
59
+ require('lodash/sum');
60
+ require('react-icons/fa6');
61
+ require('@dnd-kit/core');
62
+ require('@dnd-kit/sortable');
63
+ require('@dnd-kit/utilities');
64
+ require('@dnd-kit/modifiers');
65
+ require('universal-cookie');
66
+ require('next/dist/client/router');
67
+ require('react-cookie');
68
+ require('default-composer');
69
+ require('next/dynamic');
70
+ require('yaml');
71
+ require('@hello-pangea/dnd');
72
+ require('tailwindcss/plugin');
73
+ require('@tabler/icons-react');
74
+ require('graphiql/setup-workers/webpack');
75
+
76
+ const toDisplayName = (field)=>{
77
+ const parsed = field.split('.');
78
+ const fieldName = parsed.at(-1);
79
+ if (!fieldName) return 'NotSet';
80
+ return fieldName.split('_').map((w)=>_.capitalize(w)).join(' ');
81
+ };
82
+
83
+ /**
84
+ * Hook that sets up an event bus for components to subscribe to and fire off events
85
+ * when an active Sower job is completed.
86
+ */ const useSowerJobEventBus = ()=>{
87
+ const [listeners, setListeners] = React.useState({});
88
+ const [pollers, setPollers] = React.useState(new Set());
89
+ const [trigger, statusResult] = core.useLazyGetMultipleSowerJobStatusQuery({
90
+ pollingInterval: 10000,
91
+ skipPollingIfUnfocused: true
92
+ });
93
+ /**
94
+ * Function for component to subscribe to sower job updates
95
+ * @param listenerKey unique key for component
96
+ * @param newPollers list of jobs to poll the status of
97
+ * @param callback function to call when a job completes
98
+ */ const on = (listenerKey, newPollers, callback)=>{
99
+ setListeners({
100
+ ...listeners,
101
+ [listenerKey]: callback
102
+ });
103
+ setPollers(new Set([
104
+ ...pollers,
105
+ ...newPollers
106
+ ]));
107
+ };
108
+ /**
109
+ * Function for component to unsubscribe to updates
110
+ * @param listenerKey unique key for component
111
+ */ const off = (listenerKey)=>{
112
+ setListeners(Object.fromEntries(Object.entries(listeners).filter(([key])=>key === listenerKey)));
113
+ };
114
+ /**
115
+ * Function to update the jobs that are polling
116
+ * @param job new job to add to pollers
117
+ */ const update = (job)=>{
118
+ setPollers(new Set([
119
+ ...pollers,
120
+ job
121
+ ]));
122
+ };
123
+ React.useEffect(()=>{
124
+ trigger(Array.from(pollers));
125
+ }, [
126
+ pollers
127
+ ]);
128
+ React.useEffect(()=>{
129
+ if (statusResult.isSuccess) {
130
+ Object.entries(statusResult.currentData || {}).map(([job, response])=>{
131
+ if (response.status === 'Completed') {
132
+ Object.values(listeners).forEach((callback)=>callback(job));
133
+ // Remove job from pollers after it has completed
134
+ setPollers(new Set([
135
+ ...pollers
136
+ ].filter((poller)=>poller !== job)));
137
+ }
138
+ });
139
+ }
140
+ }, [
141
+ statusResult
142
+ ]);
143
+ return {
144
+ on,
145
+ off,
146
+ update
147
+ };
148
+ };
149
+
150
+ const EmptyData = {};
151
+ /**
152
+ * CohortPanel is a React component that provides an interactive interface for cohort exploration and filtering.
153
+ * It integrates with data services and facilitates visualization, filtering, and analysis tasks.
154
+ *
155
+ * @param {Object} props The properties required to configure the CohortPanel component.
156
+ * @param {Object} props.guppyConfig Configuration object for Guppy, including field mappings and data type information.
157
+ * @param {Object} props.filters Configuration for filter tabs, including filter fields and layout.
158
+ * @param {Object} [props.charts={}] Optional set of chart configuration objects for rendering summaries.
159
+ * @param {Object} [props.chartsSection] Optional configuration for an additional section of charts.
160
+ * @param {Object} props.table Reference to the table configuration or component for displaying data.
161
+ * @param {string} props.tabTitle Title for the filter tab section.
162
+ * @param {Object[]|undefined} props.dropdowns Dropdown menu configuration, allowing for additional filter options or actions.
163
+ * @param {Object[]|undefined} props.buttons List of button configurations for actions such as downloads.
164
+ * @param {boolean} props.loginForDownload Determines whether login is required to enable download functionality.
165
+ * @param {boolean} [props.showAccessLevel=false] Indicates if the user access level should be displayed on the panel.
166
+ *
167
+ * @returns {JSX.Element} Returns a JSX element rendering the CohortPanel. This includes filter options,
168
+ * summary charts, cohort manager, and data display components.
169
+ */ const CohortPanel = ({ guppyConfig, filters, charts = {}, chartsSection = undefined, table, tabTitle, dropdowns, buttons, loginForDownload, showAccessLevel = false })=>{
170
+ const isSm = hooks.useMediaQuery('(min-width: 639px)');
171
+ const isMd = hooks.useMediaQuery('(min-width: 1373px)');
172
+ const isXl = hooks.useMediaQuery('(min-width: 1600px)');
173
+ const [accessLevel, setAccessLevel] = React.useState(core.Accessibility.ALL);
174
+ const sharedFiltersMap = core.useCoreSelector((state)=>core.selectSharedFilters(state));
175
+ const defaultDropdowns = React.useMemo(()=>dropdowns ?? {}, [
176
+ dropdowns
177
+ ]);
178
+ const defaultButtons = React.useMemo(()=>buttons ?? [], [
179
+ buttons
180
+ ]);
181
+ const numCols = React.useMemo(()=>{
182
+ if (isSm) return 1;
183
+ if (isMd) return 2;
184
+ if (isXl) return 4;
185
+ return 3;
186
+ }, [
187
+ isSm,
188
+ isMd,
189
+ isXl
190
+ ]);
191
+ const index$1 = guppyConfig.dataType;
192
+ const indexPrefix = guppyConfig?.indexPrefix ?? '';
193
+ const fields = React.useMemo(()=>index.getAllFieldsFromFilterConfigs(filters?.tabs ?? []), [
194
+ filters?.tabs
195
+ ]);
196
+ const coreDispatch = core.useCoreDispatch();
197
+ const [facetDefinitions, setFacetDefinitions] = React.useState({});
198
+ const [summaryCharts, setSummaryCharts] = React.useState({});
199
+ const cohortFilters = core.useCoreSelector((state)=>core.selectIndexFilters(state, index$1));
200
+ const cohortId = core.useCoreSelector((state)=>core.selectCurrentCohortId(state));
201
+ const allFiltersCollapsed = core.useCoreSelector((state)=>core.selectAllCohortFiltersCollapsed(state, index$1));
202
+ const toggleAllFiltersExpanded = (expand)=>{
203
+ coreDispatch(core.toggleCohortBuilderAllFilters({
204
+ expand,
205
+ index: index$1
206
+ }));
207
+ };
208
+ const clearAllFilters = React.useCallback(()=>{
209
+ coreDispatch(core.clearCohortFilters({
210
+ index: index$1
211
+ }));
212
+ }, [
213
+ coreDispatch,
214
+ index$1
215
+ ]);
216
+ const { data, isSuccess, isFetching: isAggsQueryFetching, isError: isAggsQueryError } = core.useGetAggsQuery({
217
+ type: index$1,
218
+ fields: fields,
219
+ filters: cohortFilters,
220
+ accessibility: accessLevel,
221
+ queryId: cohortId,
222
+ indexPrefix: indexPrefix
223
+ });
224
+ const chartKeys = useDeepCompare.useDeepCompareMemo(()=>[
225
+ ...Object.keys(chartsSection?.charts ?? {}),
226
+ ...Object.keys(charts)
227
+ ], [
228
+ chartsSection?.charts,
229
+ charts
230
+ ]);
231
+ const { data: chartData, isSuccess: isChartSuccess, isFetching: isChartFetching, isError: isChartError } = core.useGetAggsQuery({
232
+ type: index$1,
233
+ fields: chartKeys,
234
+ filters: cohortFilters,
235
+ accessibility: accessLevel,
236
+ filterSelf: true,
237
+ queryId: cohortId,
238
+ indexPrefix: indexPrefix
239
+ }, {
240
+ skip: chartKeys.length === 0
241
+ });
242
+ const cleanChartData = useDeepCompare.useDeepCompareMemo(()=>{
243
+ if (isChartSuccess && chartData) {
244
+ const cleanedData = {};
245
+ const totalCount = chartData._totalCount[0]?.count;
246
+ Object.keys(summaryCharts).forEach((key)=>{
247
+ if (!(key in chartData)) {
248
+ return;
249
+ } // handle missing key in data
250
+ // remove empty keys
251
+ cleanedData[key] = chartData[key].filter((x)=>typeof x.key !== 'string' ? true : x.key !== '');
252
+ const facetDef = facetDefinitions?.[key];
253
+ if (facetDef?.excludeValues) {
254
+ cleanedData[key] = cleanedData[key].filter((x)=>typeof x.key !== 'string' ? true : facetDef?.excludeValues?.includes(String(x.key)) === false);
255
+ }
256
+ if (cleanedData[key].length === 0 && totalCount) {
257
+ // if no keys adds back no data
258
+ cleanedData[key] = [
259
+ {
260
+ key: 'no data',
261
+ count: totalCount
262
+ }
263
+ ];
264
+ }
265
+ });
266
+ return cleanedData;
267
+ }
268
+ return chartData;
269
+ }, [
270
+ chartData,
271
+ isChartSuccess,
272
+ summaryCharts
273
+ ]);
274
+ const getEnumFacetData = useDeepCompare.useDeepCompareCallback((field)=>{
275
+ let filters = undefined;
276
+ let combineMode = 'or';
277
+ if (field in cohortFilters.root) {
278
+ if (core.isIntersection(cohortFilters.root[field])) {
279
+ const intersectionFilters = index.removeIntersectionFromEnum(cohortFilters.root[field]);
280
+ if (intersectionFilters) {
281
+ filters = core.extractEnumFilterValue(intersectionFilters);
282
+ combineMode = 'and';
283
+ }
284
+ } else {
285
+ filters = core.extractEnumFilterValue(cohortFilters.root[field]);
286
+ }
287
+ }
288
+ return {
289
+ data: index.processBucketData(data?.[field]),
290
+ enumFilters: filters,
291
+ combineMode: combineMode,
292
+ isSuccess: isSuccess
293
+ };
294
+ }, [
295
+ cohortFilters.root,
296
+ data,
297
+ isSuccess
298
+ ]);
299
+ const getRangeFacetData = useDeepCompare.useDeepCompareCallback((field)=>{
300
+ return {
301
+ data: index.processRangeData(data?.[field]),
302
+ filters: index.extractRangeValues(cohortFilters.root[field]),
303
+ isSuccess: isSuccess
304
+ };
305
+ }, [
306
+ data,
307
+ cohortFilters.root,
308
+ isSuccess
309
+ ]);
310
+ // Set up the hooks for the facet components to use based on the required index
311
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
312
+ // @ts-ignore
313
+ const facetDataHooks = useDeepCompare.useDeepCompareMemo(()=>{
314
+ return {
315
+ // TODO: see if there a better way to do this
316
+ enum: {
317
+ useGetFacetData: getEnumFacetData,
318
+ useUpdateFacetFilters: _.partial(index.useUpdateFilters, index$1),
319
+ useGetFacetFilters: _.partial(index.useGetFacetFilters, index$1),
320
+ useClearFilter: _.partial(index.useClearFilters, index$1),
321
+ useFilterExpanded: _.partial(index.useFilterExpandedState, index$1),
322
+ useToggleExpandFilter: _.partial(index.useToggleExpandFilter, index$1),
323
+ useGetCombineMode: _.partial(index.useCohortFilterCombineState, index$1),
324
+ useSetCombineMode: _.partial(index.useSetCohortFilterCombineState, index$1),
325
+ useFieldNameToLabel: index.useFieldNameToLabel,
326
+ useTotalCounts: undefined
327
+ },
328
+ exact: {
329
+ useGetFacetData: getEnumFacetData,
330
+ useUpdateFacetFilters: _.partial(index.useUpdateFilters, index$1),
331
+ useGetFacetFilters: _.partial(index.useGetFacetFilters, index$1),
332
+ useClearFilter: _.partial(index.useClearFilters, index$1),
333
+ useFilterExpanded: _.partial(index.useFilterExpandedState, index$1),
334
+ useToggleExpandFilter: _.partial(index.useToggleExpandFilter, index$1),
335
+ useFieldNameToLabel: index.useFieldNameToLabel,
336
+ useTotalCounts: undefined
337
+ },
338
+ multiselect: {
339
+ useGetFacetData: getEnumFacetData,
340
+ useUpdateFacetFilters: _.partial(index.useUpdateFilters, index$1),
341
+ useGetFacetFilters: _.partial(index.useGetFacetFilters, index$1),
342
+ useClearFilter: _.partial(index.useClearFilters, index$1),
343
+ useFilterExpanded: _.partial(index.useFilterExpandedState, index$1),
344
+ useToggleExpandFilter: _.partial(index.useToggleExpandFilter, index$1),
345
+ useFieldNameToLabel: index.useFieldNameToLabel,
346
+ useTotalCounts: undefined
347
+ },
348
+ range: {
349
+ useGetFacetData: getRangeFacetData,
350
+ useUpdateFacetFilters: _.partial(index.useUpdateFilters, index$1),
351
+ useGetFacetFilters: _.partial(index.useGetFacetFilters, index$1),
352
+ useClearFilter: _.partial(index.useClearFilters, index$1),
353
+ useFilterExpanded: _.partial(index.useFilterExpandedState, index$1),
354
+ useToggleExpandFilter: _.partial(index.useToggleExpandFilter, index$1),
355
+ useFieldNameToLabel: index.useFieldNameToLabel,
356
+ useTotalCounts: undefined
357
+ }
358
+ };
359
+ }, [
360
+ getEnumFacetData,
361
+ getRangeFacetData,
362
+ index$1
363
+ ]);
364
+ // Set the facet definitions based on the data only the first time the data is loaded
365
+ useDeepCompare.useDeepCompareEffect(()=>{
366
+ if (isSuccess && Object.keys(facetDefinitions).length === 0) {
367
+ const configFacetDefs = filters?.tabs.reduce((acc, tab)=>{
368
+ return {
369
+ ...tab.fieldsConfig,
370
+ ...acc
371
+ };
372
+ }, {});
373
+ const facetDefs = index.classifyFacets(data, index$1, guppyConfig?.fieldMapping ?? [], configFacetDefs ?? {}, sharedFiltersMap);
374
+ setFacetDefinitions(facetDefs);
375
+ // setup summary charts since nested fields can be listed by the split field name
376
+ const chartDefinitions = chartsSection?.charts ?? charts;
377
+ const summaryCharts = Object.keys(chartDefinitions).reduce((acc, field)=>{
378
+ let chartField = field;
379
+ if (facetDefs?.[field] === undefined) {
380
+ const res = Object.values(facetDefs).filter((def)=>{
381
+ return def.dataField === field;
382
+ });
383
+ if (res.length > 0) {
384
+ chartField = res[0].field;
385
+ }
386
+ }
387
+ return {
388
+ ...acc,
389
+ [chartField]: chartDefinitions[field]
390
+ };
391
+ }, {});
392
+ setSummaryCharts(summaryCharts);
393
+ }
394
+ }, [
395
+ isSuccess,
396
+ data,
397
+ facetDefinitions,
398
+ index$1,
399
+ guppyConfig.fieldMapping,
400
+ charts,
401
+ chartsSection
402
+ ]);
403
+ const { data: counts, isFetching: isCountsFetching, isError: isCountsError } = core.useGetCountsQuery({
404
+ type: index$1,
405
+ filters: cohortFilters,
406
+ accessibility: accessLevel,
407
+ queryId: cohortId
408
+ });
409
+ const [submitJob, result] = core.useSubmitSowerJobMutation();
410
+ const { update } = useSowerJobEventBus();
411
+ React.useEffect(()=>{
412
+ if (result?.data) {
413
+ update(result.data?.uid);
414
+ }
415
+ }, [
416
+ result
417
+ ]);
418
+ if (isCountsError || isAggsQueryError) {
419
+ return /*#__PURE__*/ jsxRuntime.jsx(index.ErrorCard, {
420
+ message: "Unable to fetch data from server"
421
+ }); // TODO: replace with configurable message
422
+ }
423
+ return /*#__PURE__*/ jsxRuntime.jsxs("div", {
424
+ className: "flex flex-col mt-3 relative px-4 bg-base-lightest w-full",
425
+ children: [
426
+ /*#__PURE__*/ jsxRuntime.jsx(index.QueryExpression, {
427
+ index: index$1
428
+ }),
429
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
430
+ className: "flex w-full",
431
+ children: [
432
+ /*#__PURE__*/ jsxRuntime.jsx("div", {
433
+ id: "cohort-builder-filters",
434
+ className: "flex-shrink-0 md:w-1/4 lg:w-1/5",
435
+ children: filters?.tabs && /*#__PURE__*/ jsxRuntime.jsx(index.DropdownPanel, {
436
+ filters: filters,
437
+ tabTitle: tabTitle,
438
+ facetDefinitions: facetDefinitions,
439
+ facetDataHooks: facetDataHooks,
440
+ onAccessChange: setAccessLevel,
441
+ accessLevel: accessLevel,
442
+ showAccessLevel: showAccessLevel,
443
+ allFiltersCollapsed: allFiltersCollapsed,
444
+ toggleAllFiltersExpanded: toggleAllFiltersExpanded,
445
+ clearAllFilters: clearAllFilters
446
+ })
447
+ }),
448
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
449
+ id: "cohort-builder-content",
450
+ className: "flex flex-col md:w-3/4 lg:w-4/5 pl-4",
451
+ children: [
452
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
453
+ className: "flex justify-between mb-2 ml-2",
454
+ children: [
455
+ /*#__PURE__*/ jsxRuntime.jsx(index.DownloadsPanel, {
456
+ dropdowns: defaultDropdowns,
457
+ buttons: defaultButtons,
458
+ loginForDownload: loginForDownload,
459
+ index: index$1,
460
+ totalCount: counts ?? 0,
461
+ fields: table?.fields ?? [],
462
+ filter: cohortFilters
463
+ }),
464
+ /*#__PURE__*/ jsxRuntime.jsx(index.CountsValue, {
465
+ label: guppyConfig?.nodeCountTitle || toDisplayName(index$1),
466
+ counts: counts,
467
+ isFetching: isCountsFetching,
468
+ isError: isCountsError
469
+ })
470
+ ]
471
+ }),
472
+ chartsSection?.enabled ? /*#__PURE__*/ jsxRuntime.jsx(index.CollapsableCharts, {
473
+ config: {
474
+ ...chartsSection,
475
+ charts: summaryCharts
476
+ },
477
+ data: cleanChartData ?? EmptyData,
478
+ isSuccess: isChartSuccess,
479
+ isFetching: isChartFetching,
480
+ isError: isChartError
481
+ }) : /*#__PURE__*/ jsxRuntime.jsx(index.Charts, {
482
+ charts: summaryCharts,
483
+ data: cleanChartData ?? EmptyData,
484
+ counts: counts,
485
+ isSuccess: isChartSuccess,
486
+ isError: isChartError,
487
+ numCols: numCols
488
+ }),
489
+ table?.enabled && /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
490
+ children: /*#__PURE__*/ jsxRuntime.jsx("div", {
491
+ className: "mt-2 flex flex-col",
492
+ children: /*#__PURE__*/ jsxRuntime.jsx(index.ExplorerTable, {
493
+ index: index$1,
494
+ tableConfig: table,
495
+ accessibility: accessLevel
496
+ })
497
+ })
498
+ })
499
+ ]
500
+ })
501
+ ]
502
+ })
503
+ ]
504
+ });
505
+ };
506
+
507
+ const TabsLayoutToComponentProp = (tabsLayout)=>{
508
+ if (!tabsLayout) {
509
+ return 'flex-start';
510
+ }
511
+ switch(tabsLayout){
512
+ case 'left':
513
+ {
514
+ return 'flex-start';
515
+ }
516
+ case 'right':
517
+ {
518
+ return 'flex-end';
519
+ }
520
+ case 'center':
521
+ {
522
+ return 'center';
523
+ }
524
+ default:
525
+ {
526
+ return 'flex-start';
527
+ }
528
+ }
529
+ };
530
+
531
+ const useGetCurrentCohort = ()=>{
532
+ return core.useCoreSelector((state)=>core.selectCurrentCohortId(state));
533
+ };
534
+ const CohortBuilder = ({ explorerConfig, sharedFiltersMap = null, tabsLayout = 'left', enableCohortManager = true, activeTab })=>{
535
+ const dispatch = core.useCoreDispatch();
536
+ dispatch(core.setSharedFilters(sharedFiltersMap ?? {}));
537
+ const configuration = useDeepCompare.useDeepCompareMemo(()=>explorerConfig, [
538
+ explorerConfig
539
+ ]);
540
+ return /*#__PURE__*/ jsxRuntime.jsxs("div", {
541
+ className: "flex flex-col w-full mt-2",
542
+ children: [
543
+ enableCohortManager ? /*#__PURE__*/ jsxRuntime.jsx(index.CohortManager, {}) : null,
544
+ /*#__PURE__*/ jsxRuntime.jsxs(core$1.Tabs, {
545
+ color: "primary.5",
546
+ variant: explorerConfig[0]?.tabType,
547
+ keepMounted: true,
548
+ defaultValue: activeTab ?? explorerConfig[0].tabTitle,
549
+ children: [
550
+ /*#__PURE__*/ jsxRuntime.jsx(core$1.Tabs.List, {
551
+ className: "w-full",
552
+ justify: TabsLayoutToComponentProp(tabsLayout),
553
+ children: configuration.map((panelConfig)=>/*#__PURE__*/ jsxRuntime.jsx(core$1.Tabs.Tab, {
554
+ value: panelConfig.tabTitle,
555
+ children: panelConfig.tabTitle
556
+ }, `${panelConfig.tabTitle}-tabList`))
557
+ }),
558
+ configuration.map((panelConfig)=>/*#__PURE__*/ jsxRuntime.jsx(core$1.Tabs.Panel, {
559
+ value: panelConfig.tabTitle,
560
+ children: /*#__PURE__*/ jsxRuntime.jsx(CohortPanel, {
561
+ guppyConfig: panelConfig.guppyConfig,
562
+ chartsSection: panelConfig?.chartsSection,
563
+ charts: panelConfig?.charts,
564
+ filters: panelConfig.filters,
565
+ tabTitle: panelConfig.tabTitle,
566
+ table: panelConfig.table,
567
+ dropdowns: panelConfig.dropdowns,
568
+ buttons: panelConfig.buttons,
569
+ loginForDownload: panelConfig.loginForDownload,
570
+ sharedFiltersMap: panelConfig.sharedFiltersMap
571
+ }, `${panelConfig.tabTitle}-CohortPanel`)
572
+ }, `${panelConfig.tabTitle}-tabPanel`))
573
+ ]
574
+ })
575
+ ]
576
+ });
577
+ };
578
+
579
+ exports.default = CohortBuilder;
580
+ exports.useGetCurrentCohort = useGetCurrentCohort;
581
+ //# sourceMappingURL=CohortBuilder-Dg14APGn.js.map