@gen3/frontend 0.11.17 → 0.11.18

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 (90) hide show
  1. package/dist/cjs/index.js +436 -296
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/dts/components/Content/TextContent.d.ts.map +1 -1
  4. package/dist/dts/components/Content/TextContent.js +7 -8
  5. package/dist/dts/components/Content/TextContent.js.map +1 -1
  6. package/dist/dts/components/Layout/TexturedSidePanel.js +1 -1
  7. package/dist/dts/components/Layout/TexturedSidePanel.js.map +1 -1
  8. package/dist/dts/components/Providers/Gen3Provider.d.ts +21 -21
  9. package/dist/dts/components/charts/utils.d.ts +16 -0
  10. package/dist/dts/components/charts/utils.d.ts.map +1 -1
  11. package/dist/dts/components/charts/utils.js +28 -1
  12. package/dist/dts/components/charts/utils.js.map +1 -1
  13. package/dist/dts/features/Analysis/AnalysisCardCompact.stories.d.ts +6 -6
  14. package/dist/dts/features/CohortBuilder/CohortBuilder.d.ts +2 -1
  15. package/dist/dts/features/CohortBuilder/CohortBuilder.d.ts.map +1 -1
  16. package/dist/dts/features/CohortBuilder/CohortBuilder.js +5 -3
  17. package/dist/dts/features/CohortBuilder/CohortBuilder.js.map +1 -1
  18. package/dist/dts/features/CohortBuilder/CohortPanel.d.ts.map +1 -1
  19. package/dist/dts/features/CohortBuilder/CohortPanel.js +24 -2
  20. package/dist/dts/features/CohortBuilder/CohortPanel.js.map +1 -1
  21. package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.d.ts +1 -1
  22. package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/QueryRowDetailsPanel.d.ts.map +1 -1
  23. package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/QueryRowDetailsPanel.js +58 -26
  24. package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/QueryRowDetailsPanel.js.map +1 -1
  25. package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.d.ts +3 -0
  26. package/dist/dts/features/CohortBuilder/ExplorerTable/ExploreTableDetails/types.d.ts.map +1 -1
  27. package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.d.ts.map +1 -1
  28. package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.js +39 -26
  29. package/dist/dts/features/CohortBuilder/ExplorerTable/ExplorerTable.js.map +1 -1
  30. package/dist/dts/features/CohortBuilder/index.d.ts +1 -1
  31. package/dist/dts/features/CohortBuilder/index.d.ts.map +1 -1
  32. package/dist/dts/features/CohortBuilder/index.js +1 -1
  33. package/dist/dts/features/CohortBuilder/index.js.map +1 -1
  34. package/dist/dts/features/CohortBuilder/types.d.ts +1 -0
  35. package/dist/dts/features/CohortBuilder/types.d.ts.map +1 -1
  36. package/dist/dts/features/CohortBuilder/types.js.map +1 -1
  37. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManager.d.ts +1 -1
  38. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManager.d.ts.map +1 -1
  39. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManager.js +21 -14
  40. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManager.js.map +1 -1
  41. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerMiddleware.d.ts.map +1 -1
  42. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerMiddleware.js +1 -0
  43. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerMiddleware.js.map +1 -1
  44. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSelectors.d.ts +11 -10
  45. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSelectors.d.ts.map +1 -1
  46. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSelectors.js +9 -5
  47. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSelectors.js.map +1 -1
  48. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSlice.d.ts +1 -0
  49. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSlice.d.ts.map +1 -1
  50. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSlice.js +21 -6
  51. package/dist/dts/features/CohortDiscovery/CohortManagment/CohortManagerSlice.js.map +1 -1
  52. package/dist/dts/features/CohortDiscovery/SavedCohorts/SavedCohortsTable.d.ts.map +1 -1
  53. package/dist/dts/features/CohortDiscovery/SavedCohorts/SavedCohortsTable.js +1 -1
  54. package/dist/dts/features/CohortDiscovery/SavedCohorts/SavedCohortsTable.js.map +1 -1
  55. package/dist/dts/features/CohortDiscovery/appApi.js +1 -1
  56. package/dist/dts/features/CohortDiscovery/appApi.js.map +1 -1
  57. package/dist/dts/features/CohortDiscovery/constants.d.ts +2 -0
  58. package/dist/dts/features/CohortDiscovery/constants.d.ts.map +1 -1
  59. package/dist/dts/features/CohortDiscovery/constants.js +11 -0
  60. package/dist/dts/features/CohortDiscovery/constants.js.map +1 -1
  61. package/dist/dts/features/Dictionary/metadata/MetadataDictionary.d.ts.map +1 -1
  62. package/dist/dts/features/Dictionary/metadata/MetadataDictionary.js +2 -1
  63. package/dist/dts/features/Dictionary/metadata/MetadataDictionary.js.map +1 -1
  64. package/dist/dts/features/Dictionary/metadata/types.d.ts +1 -0
  65. package/dist/dts/features/Dictionary/metadata/types.d.ts.map +1 -1
  66. package/dist/dts/features/Discovery/Discovery.d.ts.map +1 -1
  67. package/dist/dts/features/Discovery/Discovery.js +3 -2
  68. package/dist/dts/features/Discovery/Discovery.js.map +1 -1
  69. package/dist/dts/features/Discovery/types.d.ts +1 -0
  70. package/dist/dts/features/Discovery/types.d.ts.map +1 -1
  71. package/dist/dts/features/Discovery/types.js.map +1 -1
  72. package/dist/dts/features/StaticNotebook/StaticNotebookIFrame.d.ts.map +1 -1
  73. package/dist/dts/features/StaticNotebook/StaticNotebookIFrame.js +28 -1
  74. package/dist/dts/features/StaticNotebook/StaticNotebookIFrame.js.map +1 -1
  75. package/dist/dts/features/StaticNotebook/api/staticNotebookAPI.d.ts.map +1 -1
  76. package/dist/dts/features/StaticNotebook/api/staticNotebookAPI.js +7 -0
  77. package/dist/dts/features/StaticNotebook/api/staticNotebookAPI.js.map +1 -1
  78. package/dist/dts/lib/common/staticProps.d.ts.map +1 -1
  79. package/dist/dts/lib/common/staticProps.js +11 -23
  80. package/dist/dts/lib/common/staticProps.js.map +1 -1
  81. package/dist/dts/lib/content/filesystem.js +1 -1
  82. package/dist/dts/lib/content/filesystem.js.map +1 -1
  83. package/dist/dts/pages/Explorer/Explorer.d.ts.map +1 -1
  84. package/dist/dts/pages/Explorer/Explorer.js +4 -1
  85. package/dist/dts/pages/Explorer/Explorer.js.map +1 -1
  86. package/dist/esm/index.js +436 -297
  87. package/dist/esm/index.js.map +1 -1
  88. package/dist/index.d.ts +220 -200
  89. package/dist/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +3 -3
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import React__default, { createContext, useState, useMemo, useEffect, useCallback, useContext, useRef, createElement, forwardRef, useReducer } from 'react';
4
- import { useUserAuth, useCoreSelector, selectUserDetails, useGetAuthzMappingsQuery, fetchFence, isFetchError, WorkspaceStatus, useGetWorkspaceStatusQuery, useGetWorkspacePayModelsQuery, useTerminateWorkspaceMutation, selectRequestedWorkspaceStatus, selectRequestedWorkspaceStatusTimestamp, useCoreDispatch, setActiveWorkspaceStatus, RequestedWorkspaceStatus, setRequestedWorkspaceStatus, isTimeGreaterThan, useGetCSRFQuery, useLazyFetchUserDetailsQuery, selectUserAuthStatus, GEN3_REDIRECT_URL, GEN3_FENCE_API, showModal, Modals, isAuthenticated, useGetLoginProvidersQuery, hideModal, selectCurrentModal, fieldNameToTitle, isOperationWithField, selectShouldShareFilters, selectSharedFilters, updateCohortFilter as updateCohortFilter$1, selectIndexedFilterByName, isUnion, isOperatorWithFieldAndArrayOfOperands, extractEnumFilterValue, removeCohortFilter as removeCohortFilter$1, trimFirstFieldNameToTitle, selectAllCohortFiltersCollapsed, Accessibility, toggleCohortBuilderAllFilters, setShouldShareFilters, useIsUserLoggedIn, GEN3_DOMAIN, useDataLibrary, DataLibraryStoreMode, buildListItemsGroupedByDataset, extractFileDatasetsInRecords, useGetMDSQuery, selectAuthzMappingData, useGetAggMDSQuery, useAskQuestionMutation, useGetIndexAggMDSQuery, useGetTagsQuery, setCohortFilter as setCohortFilter$1, clearCohortFilters as clearCohortFilters$1, handleOperation, selectAvailableCohorts, selectCurrentCohortId as selectCurrentCohortId$1, selectCohortFilters, selectCurrentCohortModified, selectCurrentCohortSaved, setCohortIndexFilters, setActiveCohort, setCohortFilterCombineMode, selectCohortFilterCombineMode, toggleCohortBuilderCategoryFilter, selectCohortFilterExpanded, selectCurrentCohortName as selectCurrentCohortName$1, useGeneralGQLQuery, selectIndexFilters, useGetRawDataAndTotalCountsQuery, isJSONValue, downloadFromGuppyToBlob, downloadJSONDataFromGuppy, useGetAggsQuery, useGetAggsNoFilterSelfQuery, isIntersection, useGetCountsQuery, setSharedFilters, usePrevious, selectHeadersWithCSRFToken, GEN3_GUPPY_API, useLaunchWorkspaceMutation, selectActiveWorkspaceStatus, isFetchBaseQueryError, setActiveWorkspace, getCurrentTimestamp, selectWorkspaceStatusFromService, selectActiveWorkspaceId, useGetWorkspaceOptionsQuery, GEN3_WORKSPACE_API, useGetExternalLoginsQuery, useSetCurrentPayModelMutation, PodStatus, PodConditionType, isWorkspaceRunningOrStopping, GEN3_API, GEN3_COMMONS_NAME, getTimestamp, createAppStore, getRemoteSupportServiceRegistry, isHttpStatusError, MissingServiceConfigurationError, useLazyGetAggsNoFilterSelfQuery, useCreateRequestMutation, buildGetAggregationQuery, processHistogramResponse, roundHistogramResponse, selectCSRFToken, useUserRequestQuery, getGen3AppId, createGen3AppWithOwnStore, createAppApiForRTKQ, useGetDictionaryQuery, useGetMetadataByIdQuery, createGen3App, CoreProvider, fetchJSONDataFromURL, HttpMethod, groupSharedFields, useGetCredentialsQuery, useRemoveCredentialMutation, useAddNewCredentialMutation, useGetProjectsDetailsQuery, useGetSubmissionsQuery, isCohortItem, isFileItem, fetchFencePresignedURL, HTTPError, getFederatedLoginStatus, queryMultipleMDSRecords, GEN3_MANIFEST_API, extractIndexFromDataLibraryCohort, isFilterSet, getNumberOfItemsInDatalist, isAdditionalDataItem, useLazyGetCrosswalkDataQuery } from '@gen3/core';
4
+ import { useUserAuth, useCoreSelector, selectUserDetails, useGetAuthzMappingsQuery, fetchFence, isFetchError, WorkspaceStatus, useGetWorkspaceStatusQuery, useGetWorkspacePayModelsQuery, useTerminateWorkspaceMutation, selectRequestedWorkspaceStatus, selectRequestedWorkspaceStatusTimestamp, useCoreDispatch, setActiveWorkspaceStatus, RequestedWorkspaceStatus, setRequestedWorkspaceStatus, isTimeGreaterThan, useGetCSRFQuery, useLazyFetchUserDetailsQuery, selectUserAuthStatus, GEN3_REDIRECT_URL, GEN3_FENCE_API, showModal, Modals, isAuthenticated, useGetLoginProvidersQuery, hideModal, selectCurrentModal, fieldNameToTitle, isOperationWithField, extractEnumFilterValue, selectIndexedFilterByName, selectShouldShareFilters, selectSharedFilters, updateCohortFilter as updateCohortFilter$1, isOperatorWithFieldAndArrayOfOperands, isUnion, removeCohortFilter as removeCohortFilter$1, trimFirstFieldNameToTitle, selectAllCohortFiltersCollapsed, Accessibility, toggleCohortBuilderAllFilters, setShouldShareFilters, useIsUserLoggedIn, GEN3_DOMAIN, useDataLibrary, DataLibraryStoreMode, buildListItemsGroupedByDataset, extractFileDatasetsInRecords, useGetMDSQuery, selectAuthzMappingData, useGetAggMDSQuery, useAskQuestionMutation, useGetIndexAggMDSQuery, useGetTagsQuery, setCohortFilter as setCohortFilter$1, clearCohortFilters as clearCohortFilters$1, handleOperation, selectAvailableCohorts, selectCurrentCohortId as selectCurrentCohortId$1, selectCohortFilters, selectCurrentCohortModified, selectCurrentCohortSaved, setCohortIndexFilters, setActiveCohort, toggleCohortBuilderCategoryFilter, selectCohortFilterExpanded, setCohortFilterCombineMode, selectCohortFilterCombineMode, selectCurrentCohortName as selectCurrentCohortName$1, useGetRawDataAndTotalCountsQuery, selectIndexFilters, isJSONValue, downloadFromGuppyToBlob, downloadJSONDataFromGuppy, useGetAggsQuery, useGetAggsNoFilterSelfQuery, isIntersection, useGetCountsQuery, setSharedFilters, usePrevious, selectHeadersWithCSRFToken, GEN3_GUPPY_API, useLaunchWorkspaceMutation, selectActiveWorkspaceStatus, isFetchBaseQueryError, setActiveWorkspace, getCurrentTimestamp, selectWorkspaceStatusFromService, selectActiveWorkspaceId, useGetWorkspaceOptionsQuery, GEN3_WORKSPACE_API, useGetExternalLoginsQuery, useSetCurrentPayModelMutation, PodStatus, PodConditionType, isWorkspaceRunningOrStopping, GEN3_API, GEN3_COMMONS_NAME, getTimestamp, createAppStore, getRemoteSupportServiceRegistry, isHttpStatusError, MissingServiceConfigurationError, useLazyGetAggsNoFilterSelfQuery, useCreateRequestMutation, buildGetAggregationQuery, processHistogramResponse, roundHistogramResponse, selectCSRFToken, useUserRequestQuery, getGen3AppId, createGen3AppWithOwnStore, useGeneralGQLQuery, createAppApiForRTKQ, useGetDictionaryQuery, useGetMetadataByIdQuery, createGen3App, CoreProvider, fetchJSONDataFromURL, HttpMethod, groupSharedFields, useGetCredentialsQuery, useRemoveCredentialMutation, useAddNewCredentialMutation, useGetProjectsDetailsQuery, useGetSubmissionsQuery, isCohortItem, isFileItem, fetchFencePresignedURL, HTTPError, getFederatedLoginStatus, queryMultipleMDSRecords, GEN3_MANIFEST_API, extractIndexFromDataLibraryCohort, isFilterSet, getNumberOfItemsInDatalist, isAdditionalDataItem, useLazyGetCrosswalkDataQuery } from '@gen3/core';
5
5
  import { LoadingOverlay, Card, Group, Avatar, Text, Checkbox, Stack, Center, Loader, Tooltip, UnstyledButton, ThemeIcon, Box, Select, Button, Divider, Textarea, FileButton, Anchor, Modal, Grid, Table, ColorSwatch, useMantineTheme, Accordion, Switch, SegmentedControl as SegmentedControl$1, ActionIcon, Badge, TextInput, NumberInput, RangeSlider, MultiSelect, Tabs, SimpleGrid, Highlight, MantineProvider, Flex, Menu, Alert, Drawer, CopyButton, factory, useProps, getStyleObject, Paper, useCombobox, Combobox, ScrollArea, Autocomplete, Title, Transition, rem, Stepper, Spoiler, Image as Image$1, NavLink, List, createTheme, Pagination, FileInput, CloseButton } from '@mantine/core';
6
6
  import { useDeepCompareEffect, useDeepCompareMemo, useDeepCompareCallback } from 'use-deep-compare';
7
7
  import { useRouter } from 'next/router';
@@ -1285,11 +1285,11 @@ const LoginProvidersPanel = ({ handleLoginSelected })=>{
1285
1285
 
1286
1286
  const TexturedSidePanel = ({ url })=>{
1287
1287
  return /*#__PURE__*/ jsx("div", {
1288
- "aria-label": 'background image',
1288
+ "aria-hidden": "true",
1289
1289
  style: {
1290
1290
  backgroundImage: `url(${url})`
1291
1291
  },
1292
- className: "flex h-screen w-full bg-left bg-repeat-y last:-scale-x-100"
1292
+ className: "bg-contain flex h-full w-full bg-repeat-y last:-scale-x-100"
1293
1293
  });
1294
1294
  };
1295
1295
 
@@ -1459,8 +1459,7 @@ function hashCode(str) {
1459
1459
  className: className,
1460
1460
  dangerouslySetInnerHTML: {
1461
1461
  __html: textString
1462
- },
1463
- "aria-label": "HTML content"
1462
+ }
1464
1463
  });
1465
1464
  }
1466
1465
  case "textArray":
@@ -1468,22 +1467,29 @@ function hashCode(str) {
1468
1467
  const textArray = !Array.isArray(text) ? [
1469
1468
  text
1470
1469
  ] : text;
1471
- return /*#__PURE__*/ jsx("div", {
1470
+ return /*#__PURE__*/ jsxs("div", {
1472
1471
  className: className,
1473
1472
  role: "list",
1474
- "aria-label": "Text array",
1475
- children: textArray.map((item)=>/*#__PURE__*/ jsx("p", {
1476
- className: "my-2",
1477
- role: "listitem",
1478
- children: item
1479
- }, hashCode(item)))
1473
+ children: [
1474
+ /*#__PURE__*/ jsxs("style", {
1475
+ children: [
1476
+ "@source inline(",
1477
+ className,
1478
+ ");"
1479
+ ]
1480
+ }),
1481
+ textArray.map((item)=>/*#__PURE__*/ jsx("p", {
1482
+ className: "my-2",
1483
+ role: "listitem",
1484
+ children: item
1485
+ }, hashCode(item)))
1486
+ ]
1480
1487
  });
1481
1488
  }
1482
1489
  case "markdown":
1483
1490
  {
1484
1491
  const textString = Array.isArray(text) ? text.join('') : text;
1485
1492
  return /*#__PURE__*/ jsx("div", {
1486
- "aria-label": "Markdown content",
1487
1493
  children: /*#__PURE__*/ jsx(Markdown, {
1488
1494
  remarkPlugins: [
1489
1495
  remarkGfm
@@ -1527,21 +1533,29 @@ function hashCode(str) {
1527
1533
  const DEFAULT_STYLE = 'inline text-base-contrast-max font-medium margin-block-start-1 margin-block-end-1';
1528
1534
  const mergedClassname = className ? twMerge(DEFAULT_STYLE, className) : DEFAULT_STYLE;
1529
1535
  const textString = Array.isArray(text) ? text.join('') : text;
1530
- return /*#__PURE__*/ jsx("div", {
1536
+ return /*#__PURE__*/ jsxs("div", {
1531
1537
  className: mergedClassname,
1532
- children: /*#__PURE__*/ jsxs("span", {
1533
- children: [
1534
- textString,
1535
- email && /*#__PURE__*/ jsx(Anchor, {
1536
- classNames: {
1537
- root: mergedClassname
1538
- },
1539
- href: `mailto:${email}`,
1540
- "aria-label": `Send an email to ${email}`,
1541
- children: ` ${email}.`
1542
- })
1543
- ]
1544
- })
1538
+ children: [
1539
+ /*#__PURE__*/ jsxs("style", {
1540
+ children: [
1541
+ "@source inline(",
1542
+ className,
1543
+ ");"
1544
+ ]
1545
+ }),
1546
+ /*#__PURE__*/ jsxs("span", {
1547
+ children: [
1548
+ textString,
1549
+ email && /*#__PURE__*/ jsx(Anchor, {
1550
+ classNames: {
1551
+ root: mergedClassname
1552
+ },
1553
+ href: `mailto:${email}`,
1554
+ children: ` ${email}.`
1555
+ })
1556
+ ]
1557
+ })
1558
+ ]
1545
1559
  });
1546
1560
  }
1547
1561
  case "textWithLink":
@@ -1552,35 +1566,50 @@ function hashCode(str) {
1552
1566
  if (!link) {
1553
1567
  return /*#__PURE__*/ jsx("div", {
1554
1568
  className: mergedClassname,
1555
- "aria-label": "No link defined",
1556
1569
  children: "Link is not defined."
1557
1570
  });
1558
1571
  }
1559
- return /*#__PURE__*/ jsx("div", {
1572
+ return /*#__PURE__*/ jsxs("div", {
1560
1573
  className: mergedClassname,
1561
- children: /*#__PURE__*/ jsxs("span", {
1562
- children: [
1563
- textString,
1564
- link && /*#__PURE__*/ jsx(Anchor, {
1565
- classNames: {
1566
- root: mergedClassname
1567
- },
1568
- href: link,
1569
- "aria-label": `Visit the link: ${linkText || link}`,
1570
- children: ` ${linkText ?? link}.`
1571
- })
1572
- ]
1573
- })
1574
+ children: [
1575
+ /*#__PURE__*/ jsxs("style", {
1576
+ children: [
1577
+ "@source inline(",
1578
+ className,
1579
+ ");"
1580
+ ]
1581
+ }),
1582
+ /*#__PURE__*/ jsxs("span", {
1583
+ children: [
1584
+ textString,
1585
+ link && /*#__PURE__*/ jsx(Anchor, {
1586
+ classNames: {
1587
+ root: mergedClassname
1588
+ },
1589
+ href: link,
1590
+ children: ` ${linkText ?? link}.`
1591
+ })
1592
+ ]
1593
+ })
1594
+ ]
1574
1595
  });
1575
1596
  }
1576
1597
  case "text":
1577
1598
  default:
1578
- return /*#__PURE__*/ jsx("div", {
1599
+ return /*#__PURE__*/ jsxs("div", {
1579
1600
  className: className,
1580
- "aria-label": "Plain text content",
1581
- children: /*#__PURE__*/ jsx("p", {
1582
- children: text.toString()
1583
- })
1601
+ children: [
1602
+ /*#__PURE__*/ jsxs("style", {
1603
+ children: [
1604
+ "@source inline(",
1605
+ className,
1606
+ ");"
1607
+ ]
1608
+ }),
1609
+ /*#__PURE__*/ jsx("p", {
1610
+ children: text.toString()
1611
+ })
1612
+ ]
1584
1613
  });
1585
1614
  }
1586
1615
  };
@@ -2074,7 +2103,6 @@ const Gen3ModalsProvider = ({ config, children })=>{
2074
2103
  });
2075
2104
  };
2076
2105
 
2077
- // import { BinGuru } from 'binguru';
2078
2106
  const capitalize = (original)=>{
2079
2107
  if (original === undefined) {
2080
2108
  throw new Error('capitalize: original is undefined');
@@ -2113,6 +2141,30 @@ const processRangeKeyLabel = (key)=>{
2113
2141
  spans = spans.concat(new Array(numLastRow).fill(Math.floor(12 / numLastRow)));
2114
2142
  return spans;
2115
2143
  };
2144
+ /**
2145
+ * Filters the keys from the provided aggregation data based on a given list of keys to remove.
2146
+ *
2147
+ * This function processes an `AggregationsData` object by iterating through its properties.
2148
+ * It removes elements from the data that match any of the keys specified in the `keysToRemove` array.
2149
+ * The filtering applies specifically to elements with a valid `key` property of type == string.
2150
+ * If the `key` is empty or matches one of the `keysToRemove`, it is excluded from the resulting object.
2151
+ *
2152
+ * @param {AggregationsData} data - The aggregation data object to filter. Expected to have properties that
2153
+ * are arrays of items containing a `key` property.
2154
+ * @param {Array<string>} keysToRemove - Array of string keys that should be removed from the aggregation data.
2155
+ * @returns {AggregationsData} A new `AggregationsData` object with filtered entries,
2156
+ * omitting the specified keys.
2157
+ */ const filterAggregationsDataKeys = (data, keysToRemove)=>{
2158
+ if (!data || typeof data !== 'object') {
2159
+ return {};
2160
+ }
2161
+ return Object.entries(data).reduce((acc, [key, chartData])=>{
2162
+ if (Array.isArray(chartData)) {
2163
+ acc[key] = chartData.filter((x)=>x && typeof x.key === 'string' && !keysToRemove.includes(x.key));
2164
+ }
2165
+ return acc;
2166
+ }, {});
2167
+ };
2116
2168
 
2117
2169
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2118
2170
  function DefaultItemRenderer(_props) {
@@ -11301,160 +11353,6 @@ const CohortManager$1 = ({ index })=>{
11301
11353
  });
11302
11354
  };
11303
11355
 
11304
- function isQueryResponse(obj) {
11305
- // Considering that the data property can be optional
11306
- return typeof obj === 'object' && (obj.data === undefined || typeof obj.data === 'object');
11307
- }
11308
- const ExtractData = (data, index)=>{
11309
- if (data === undefined || data === null) return {};
11310
- if (data.data === undefined || data.data === null) return {};
11311
- return Array.isArray(data.data[index]) && data.data[index].length > 0 ? data.data[index][0] : {};
11312
- };
11313
- const QueryRowDetailsPanel = ({ id, index, tableConfig, accessibility })=>{
11314
- //const [queryGuppy, { data, isLoading, isError }] = useLazyGeneralGQLQuery();
11315
- const idField = tableConfig.detailsConfig?.idField;
11316
- const { data, isLoading, isError } = useGeneralGQLQuery({
11317
- query: `query ($filter: JSON) {
11318
- ${index} (filter: $filter, accessibility: all) {
11319
- ${tableConfig.fields}
11320
- }
11321
- }`,
11322
- variables: {
11323
- filter: {
11324
- AND: [
11325
- {
11326
- IN: {
11327
- [idField ?? 0]: [
11328
- id
11329
- ]
11330
- }
11331
- }
11332
- ]
11333
- }
11334
- }
11335
- });
11336
- if (!idField) {
11337
- return /*#__PURE__*/ jsx(ErrorCard, {
11338
- message: 'idField not configure in Tables Details Config'
11339
- });
11340
- }
11341
- if (isError) {
11342
- return /*#__PURE__*/ jsx(ErrorCard, {
11343
- message: 'Error occurred while fetching data'
11344
- });
11345
- }
11346
- const queryData = isQueryResponse(data) ? ExtractData(data, index) : {};
11347
- const rows = Object.entries(queryData).map(([field, value])=>/*#__PURE__*/ jsxs("tr", {
11348
- children: [
11349
- /*#__PURE__*/ jsx("td", {
11350
- children: /*#__PURE__*/ jsx(Text, {
11351
- fw: "bold",
11352
- children: field
11353
- })
11354
- }),
11355
- /*#__PURE__*/ jsx("td", {
11356
- children: /*#__PURE__*/ jsx(Text, {
11357
- children: value ? value : ''
11358
- })
11359
- })
11360
- ]
11361
- }, field));
11362
- return /*#__PURE__*/ jsxs(Stack, {
11363
- children: [
11364
- /*#__PURE__*/ jsx(LoadingOverlay, {
11365
- visible: isLoading
11366
- }),
11367
- /*#__PURE__*/ jsxs(Text, {
11368
- c: "primary.4",
11369
- children: [
11370
- "Results for ",
11371
- id
11372
- ]
11373
- }),
11374
- /*#__PURE__*/ jsxs(Table, {
11375
- withTableBorder: true,
11376
- withColumnBorders: true,
11377
- children: [
11378
- /*#__PURE__*/ jsx("thead", {
11379
- children: /*#__PURE__*/ jsxs("tr", {
11380
- children: [
11381
- /*#__PURE__*/ jsx("th", {
11382
- children: "Field"
11383
- }),
11384
- /*#__PURE__*/ jsx("th", {
11385
- children: "Value"
11386
- })
11387
- ]
11388
- })
11389
- }),
11390
- /*#__PURE__*/ jsx("tbody", {
11391
- children: rows
11392
- })
11393
- ]
11394
- })
11395
- ]
11396
- });
11397
- };
11398
-
11399
- const RowTableDetailsPanel = ({ row })=>{
11400
- const rowData = row?.original ?? {};
11401
- const rows = Object.entries(rowData).map(([field, value])=>/*#__PURE__*/ jsxs(Table.Tr, {
11402
- children: [
11403
- /*#__PURE__*/ jsx(Table.Td, {
11404
- children: /*#__PURE__*/ jsx(Text, {
11405
- fw: "bold",
11406
- children: field
11407
- })
11408
- }),
11409
- /*#__PURE__*/ jsx(Table.Td, {
11410
- children: /*#__PURE__*/ jsx(Text, {
11411
- children: value ? value : ''
11412
- })
11413
- })
11414
- ]
11415
- }, field));
11416
- return /*#__PURE__*/ jsxs(Table, {
11417
- striped: true,
11418
- highlightOnHover: true,
11419
- withTableBorder: true,
11420
- withColumnBorders: true,
11421
- children: [
11422
- /*#__PURE__*/ jsx(Table.Thead, {
11423
- children: /*#__PURE__*/ jsxs(Table.Tr, {
11424
- children: [
11425
- /*#__PURE__*/ jsx(Table.Th, {
11426
- children: "Field"
11427
- }),
11428
- /*#__PURE__*/ jsx(Table.Th, {
11429
- children: "Value"
11430
- })
11431
- ]
11432
- })
11433
- }),
11434
- /*#__PURE__*/ jsx(Table.Tbody, {
11435
- children: rows
11436
- })
11437
- ]
11438
- });
11439
- };
11440
-
11441
- let instance$2;
11442
- const DefaultRendererCatalog$1 = {
11443
- tableDetails: {
11444
- default: RowTableDetailsPanel,
11445
- queryRowDetails: QueryRowDetailsPanel
11446
- }
11447
- };
11448
- const ExplorerTableDetailsPanelFactory = ()=>{
11449
- if (!instance$2) {
11450
- instance$2 = new RenderFactoryTypedInstance();
11451
- }
11452
- return instance$2;
11453
- };
11454
- const registerCohortBuilderDefaultPreviewRenderers = ()=>{
11455
- ExplorerTableDetailsPanelFactory().registerRendererCatalog(DefaultRendererCatalog$1);
11456
- };
11457
-
11458
11356
  const DEFAULT_PROPS = {
11459
11357
  body: 'bg-base-max',
11460
11358
  header: '!bg-primary !pb-9 !mb-9',
@@ -11597,12 +11495,12 @@ const LinkCellFunctionCatalog = {
11597
11495
  default: RenderLinkCell,
11598
11496
  linkWithValueMap: RenderLinkCellUsingValueMap
11599
11497
  };
11600
- let instance$1;
11498
+ let instance$2;
11601
11499
  const ExplorerTableCellRendererFactory = ()=>{
11602
- if (!instance$1) {
11603
- instance$1 = new RenderFactoryTypedInstance();
11500
+ if (!instance$2) {
11501
+ instance$2 = new RenderFactoryTypedInstance();
11604
11502
  }
11605
- return instance$1;
11503
+ return instance$2;
11606
11504
  };
11607
11505
  // register default cell renderers
11608
11506
  const registerExplorerDefaultCellRenderers = ()=>{
@@ -11869,6 +11767,91 @@ const SubtableStack = ({ subTables, data })=>{
11869
11767
  });
11870
11768
  };
11871
11769
 
11770
+ function isQueryResponse(obj) {
11771
+ // Considering that the data property can be optional
11772
+ return typeof obj === 'object' && (obj.data === undefined || typeof obj.data === 'object');
11773
+ }
11774
+ const ExtractData = (data, index, path)=>{
11775
+ if (data === undefined || data === null) return {};
11776
+ if (data.data === undefined || data.data === null) return {};
11777
+ if (!isArray(data.data[index])) return {};
11778
+ let rowData = data.data[index][0];
11779
+ if (path) {
11780
+ const tmp = JSONPath({
11781
+ path: path,
11782
+ json: data.data[index][0]
11783
+ });
11784
+ if (!isArray(tmp)) {
11785
+ return {};
11786
+ }
11787
+ if (tmp.length > 0) {
11788
+ rowData = tmp[0];
11789
+ }
11790
+ }
11791
+ return rowData;
11792
+ };
11793
+ const QueryRowDetailsPanel = ({ id, index, tableConfig, accessibility })=>{
11794
+ //const [queryGuppy, { data, isLoading, isError }] = useLazyGeneralGQLQuery();
11795
+ const idField = tableConfig.detailsConfig?.idField;
11796
+ const simpleDetailsView = tableConfig.detailsConfig?.simpleDetailsView;
11797
+ const { setStudyDetails } = useStudyContext();
11798
+ const [opened, { open, close }] = useDisclosure(false);
11799
+ const { data, isError, isFetching } = useGetRawDataAndTotalCountsQuery({
11800
+ type: index,
11801
+ fields: tableConfig.fields,
11802
+ filters: {
11803
+ mode: 'and',
11804
+ root: {
11805
+ [idField]: buildNested(idField, {
11806
+ operator: '=',
11807
+ field: idField,
11808
+ operand: id
11809
+ })
11810
+ }
11811
+ },
11812
+ offset: 0,
11813
+ size: 1,
11814
+ accessibility: accessibility
11815
+ }, {
11816
+ skip: !idField || !id
11817
+ });
11818
+ const queryData = useMemo(()=>isQueryResponse(data) ? ExtractData(data, index, tableConfig?.detailsConfig?.dataPath) : {}, [
11819
+ data,
11820
+ index,
11821
+ tableConfig?.detailsConfig?.dataPath
11822
+ ]);
11823
+ useEffect(()=>{
11824
+ setStudyDetails(queryData);
11825
+ }, [
11826
+ queryData,
11827
+ setStudyDetails
11828
+ ]);
11829
+ if (!idField) {
11830
+ return /*#__PURE__*/ jsx(ErrorCard, {
11831
+ message: 'idField not configure in Tables Details Config'
11832
+ });
11833
+ }
11834
+ if (isError) {
11835
+ return /*#__PURE__*/ jsx(ErrorCard, {
11836
+ message: 'Error occurred while fetching data'
11837
+ });
11838
+ }
11839
+ // Inital attempt at using Study Details component
11840
+ return /*#__PURE__*/ jsxs(Stack, {
11841
+ children: [
11842
+ /*#__PURE__*/ jsx(LoadingOverlay, {
11843
+ visible: isFetching
11844
+ }),
11845
+ simpleDetailsView ? /*#__PURE__*/ jsx(SinglePageStudyDetailsPanel, {
11846
+ data: queryData ?? {},
11847
+ studyConfig: simpleDetailsView
11848
+ }) : /*#__PURE__*/ jsx("div", {
11849
+ children: "Study Details Panel not configured"
11850
+ })
11851
+ ]
11852
+ });
11853
+ };
11854
+
11872
11855
  const DEFAULT_PAGE_LIMIT_LABEL = 'Rows per Page (Limited to 10,0000):';
11873
11856
  const DEFAULT_PAGE_LIMIT = 10000;
11874
11857
  /**
@@ -11887,9 +11870,15 @@ const DEFAULT_PAGE_LIMIT = 10000;
11887
11870
  const [sorting, setSorting] = useState([]);
11888
11871
  const [rowSelection, setRowSelection] = useState({});
11889
11872
  const [selectedRow, setSelectedRow] = useState(undefined);
11890
- const DetailsPanel = useMemo(()=>ExplorerTableDetailsPanelFactory().getRenderer('tableDetails', tableConfig?.detailsConfig?.panel ?? 'default'), [
11891
- tableConfig?.detailsConfig?.panel
11892
- ]);
11873
+ // const DetailsPanel = useMemo(
11874
+ // () =>
11875
+ // ExplorerTableDetailsPanelFactory().getRenderer(
11876
+ // 'tableDetails',
11877
+ // tableConfig?.detailsConfig?.panel ?? 'default',
11878
+ // ),
11879
+ // [tableConfig?.detailsConfig?.panel],
11880
+ // );
11881
+ const DetailsPanel = useMemo(()=>QueryRowDetailsPanel, []);
11893
11882
  const tableColumns = useDeepCompareMemo(()=>{
11894
11883
  return createTableColumns(tableConfig);
11895
11884
  }, [
@@ -11902,7 +11891,18 @@ const DEFAULT_PAGE_LIMIT = 10000;
11902
11891
  const getRowId = useCallback((tableConfig)=>{
11903
11892
  const { detailsConfig } = tableConfig || {};
11904
11893
  const idField = detailsConfig?.idField;
11905
- return (originalRow)=>idField && Object.keys(originalRow).includes(idField) ? originalRow[idField] : undefined;
11894
+ if (!idField) return undefined;
11895
+ return (originalRow)=>{
11896
+ const id = JSONPath({
11897
+ json: originalRow,
11898
+ path: idField
11899
+ });
11900
+ if (id.length > 0) {
11901
+ return id[0];
11902
+ } else {
11903
+ return undefined;
11904
+ }
11905
+ };
11906
11906
  }, []);
11907
11907
  const cohortFilters = useCoreSelector((state)=>selectIndexFilters(state, index));
11908
11908
  const { data, isLoading, isError, isFetching } = useGetRawDataAndTotalCountsQuery({
@@ -12031,29 +12031,31 @@ const DEFAULT_PAGE_LIMIT = 10000;
12031
12031
  } else return null;
12032
12032
  } : undefined
12033
12033
  });
12034
- return /*#__PURE__*/ jsxs(React__default.Fragment, {
12035
- children: [
12036
- Object.keys(rowSelection).length > 0 ? /*#__PURE__*/ jsx(DetailsComponent, {
12037
- title: tableConfig?.detailsConfig?.title,
12038
- id: Object.keys(rowSelection).length > 0 ? Object.keys(rowSelection).at(0) : undefined,
12039
- row: selectedRow,
12040
- onClose: ()=>setRowSelection({}),
12041
- panel: DetailsPanel,
12042
- classNames: tableConfig?.detailsConfig?.classNames,
12043
- panelProps: {
12044
- index,
12045
- tableConfig,
12046
- ...tableConfig?.detailsConfig?.params ?? {},
12047
- accessibility
12048
- }
12049
- }) : null,
12050
- /*#__PURE__*/ jsx("div", {
12051
- className: "inline-block overflow-x-scroll",
12052
- children: /*#__PURE__*/ jsx(MantineReactTable, {
12053
- table: table
12034
+ return /*#__PURE__*/ jsx(React__default.Fragment, {
12035
+ children: /*#__PURE__*/ jsxs(StudyProvider, {
12036
+ children: [
12037
+ Object.keys(rowSelection).length > 0 ? /*#__PURE__*/ jsx(DetailsComponent, {
12038
+ title: tableConfig?.detailsConfig?.title,
12039
+ id: Object.keys(rowSelection).length > 0 ? Object.keys(rowSelection).at(0) : undefined,
12040
+ row: selectedRow,
12041
+ onClose: ()=>setRowSelection({}),
12042
+ panel: DetailsPanel,
12043
+ classNames: tableConfig?.detailsConfig?.classNames,
12044
+ panelProps: {
12045
+ index,
12046
+ tableConfig,
12047
+ ...tableConfig?.detailsConfig?.params ?? {},
12048
+ accessibility
12049
+ }
12050
+ }) : null,
12051
+ /*#__PURE__*/ jsx("div", {
12052
+ className: "inline-block overflow-x-scroll",
12053
+ children: /*#__PURE__*/ jsx(MantineReactTable, {
12054
+ table: table
12055
+ })
12054
12056
  })
12055
- })
12056
- ]
12057
+ ]
12058
+ })
12057
12059
  });
12058
12060
  };
12059
12061
 
@@ -12728,6 +12730,25 @@ const EmptyData = {};
12728
12730
  }, {
12729
12731
  skip: chartKeys.length === 0
12730
12732
  });
12733
+ const cleanChartData = useDeepCompareMemo(()=>{
12734
+ if (isChartSuccess && chartData) {
12735
+ const cleanedData = {};
12736
+ Object.keys(summaryCharts).forEach((key)=>{
12737
+ // remove empty keys
12738
+ cleanedData[key] = chartData[key].filter((x)=>typeof x.key !== 'string' ? true : x.key !== '');
12739
+ const facetDef = facetDefinitions?.[key];
12740
+ if (facetDef?.excludeValues) {
12741
+ cleanedData[key] = cleanedData[key].filter((x)=>typeof x.key !== 'string' ? true : facetDef?.excludeValues?.includes(String(x.key)) === false);
12742
+ }
12743
+ });
12744
+ return cleanedData;
12745
+ }
12746
+ return chartData;
12747
+ }, [
12748
+ chartData,
12749
+ isChartSuccess,
12750
+ summaryCharts
12751
+ ]);
12731
12752
  const getEnumFacetData = useDeepCompareCallback((field)=>{
12732
12753
  let filters = undefined;
12733
12754
  let combineMode = 'or';
@@ -12868,7 +12889,7 @@ const EmptyData = {};
12868
12889
  }); // TODO: replace with configurable message
12869
12890
  }
12870
12891
  return /*#__PURE__*/ jsxs("div", {
12871
- className: "flex flex-col mt-3 relative px-4 bg-base-light w-full",
12892
+ className: "flex flex-col mt-3 relative px-4 bg-base-lightest w-full",
12872
12893
  children: [
12873
12894
  /*#__PURE__*/ jsx(CohortManager$1, {
12874
12895
  index: index
@@ -12918,24 +12939,21 @@ const EmptyData = {};
12918
12939
  ...chartsSection,
12919
12940
  charts: summaryCharts
12920
12941
  },
12921
- data: chartData ?? EmptyData,
12942
+ data: cleanChartData ?? EmptyData,
12922
12943
  isSuccess: isChartSuccess
12923
12944
  }) : /*#__PURE__*/ jsx(Charts, {
12924
12945
  charts: summaryCharts,
12925
- data: chartData ?? EmptyData,
12946
+ data: cleanChartData ?? EmptyData,
12926
12947
  counts: counts,
12927
12948
  isSuccess: isChartSuccess,
12928
12949
  numCols: numCols
12929
12950
  }),
12930
12951
  table?.enabled && /*#__PURE__*/ jsx("div", {
12931
12952
  className: "mt-2 flex flex-col",
12932
- children: /*#__PURE__*/ jsx("div", {
12933
- className: "grid",
12934
- children: /*#__PURE__*/ jsx(ExplorerTable, {
12935
- index: index,
12936
- tableConfig: table,
12937
- accessibility: accessLevel
12938
- })
12953
+ children: /*#__PURE__*/ jsx(ExplorerTable, {
12954
+ index: index,
12955
+ tableConfig: table,
12956
+ accessibility: accessLevel
12939
12957
  })
12940
12958
  })
12941
12959
  ]
@@ -12970,16 +12988,20 @@ const TabsLayoutToComponentProp = (tabsLayout)=>{
12970
12988
  }
12971
12989
  };
12972
12990
 
12973
- const CohortBuilder = ({ explorerConfig, sharedFiltersMap = null, tabsLayout = 'left' })=>{
12991
+ const useGetCurrentCohort = ()=>{
12992
+ return useCoreSelector((state)=>selectCurrentCohortId$1(state));
12993
+ };
12994
+ const CohortBuilder$1 = ({ explorerConfig, sharedFiltersMap = null, tabsLayout = 'left' })=>{
12974
12995
  const dispatch = useCoreDispatch();
12975
12996
  dispatch(setSharedFilters(sharedFiltersMap ?? {}));
12976
12997
  const configuration = useDeepCompareMemo(()=>explorerConfig, [
12977
12998
  explorerConfig
12978
12999
  ]);
12979
13000
  return /*#__PURE__*/ jsx("div", {
12980
- className: "w-full",
13001
+ className: "w-full mt-2",
12981
13002
  children: /*#__PURE__*/ jsxs(Tabs, {
12982
13003
  color: "primary.4",
13004
+ variant: explorerConfig[0]?.tabType,
12983
13005
  keepMounted: true,
12984
13006
  defaultValue: explorerConfig[0].tabTitle,
12985
13007
  children: [
@@ -13010,6 +13032,71 @@ const CohortBuilder = ({ explorerConfig, sharedFiltersMap = null, tabsLayout = '
13010
13032
  });
13011
13033
  };
13012
13034
 
13035
+ var CohortBuilder$2 = /*#__PURE__*/Object.freeze({
13036
+ __proto__: null,
13037
+ default: CohortBuilder$1,
13038
+ useGetCurrentCohort: useGetCurrentCohort
13039
+ });
13040
+
13041
+ const RowTableDetailsPanel = ({ row })=>{
13042
+ const rowData = row?.original ?? {};
13043
+ const rows = Object.entries(rowData).map(([field, value])=>/*#__PURE__*/ jsxs(Table.Tr, {
13044
+ children: [
13045
+ /*#__PURE__*/ jsx(Table.Td, {
13046
+ children: /*#__PURE__*/ jsx(Text, {
13047
+ fw: "bold",
13048
+ children: field
13049
+ })
13050
+ }),
13051
+ /*#__PURE__*/ jsx(Table.Td, {
13052
+ children: /*#__PURE__*/ jsx(Text, {
13053
+ children: value ? value : ''
13054
+ })
13055
+ })
13056
+ ]
13057
+ }, field));
13058
+ return /*#__PURE__*/ jsxs(Table, {
13059
+ striped: true,
13060
+ highlightOnHover: true,
13061
+ withTableBorder: true,
13062
+ withColumnBorders: true,
13063
+ children: [
13064
+ /*#__PURE__*/ jsx(Table.Thead, {
13065
+ children: /*#__PURE__*/ jsxs(Table.Tr, {
13066
+ children: [
13067
+ /*#__PURE__*/ jsx(Table.Th, {
13068
+ children: "Field"
13069
+ }),
13070
+ /*#__PURE__*/ jsx(Table.Th, {
13071
+ children: "Value"
13072
+ })
13073
+ ]
13074
+ })
13075
+ }),
13076
+ /*#__PURE__*/ jsx(Table.Tbody, {
13077
+ children: rows
13078
+ })
13079
+ ]
13080
+ });
13081
+ };
13082
+
13083
+ let instance$1;
13084
+ const DefaultRendererCatalog$1 = {
13085
+ tableDetails: {
13086
+ default: RowTableDetailsPanel,
13087
+ queryRowDetails: QueryRowDetailsPanel
13088
+ }
13089
+ };
13090
+ const ExplorerTableDetailsPanelFactory = ()=>{
13091
+ if (!instance$1) {
13092
+ instance$1 = new RenderFactoryTypedInstance();
13093
+ }
13094
+ return instance$1;
13095
+ };
13096
+ const registerCohortBuilderDefaultPreviewRenderers = ()=>{
13097
+ ExplorerTableDetailsPanelFactory().registerRendererCatalog(DefaultRendererCatalog$1);
13098
+ };
13099
+
13013
13100
  const useCustomFacets = ()=>({
13014
13101
  data: [],
13015
13102
  isSuccess: true
@@ -14514,12 +14601,39 @@ const StaticNotebookViewer = ({ notebook })=>{
14514
14601
 
14515
14602
  const StaticNotebookIFrame = ({ notebook })=>{
14516
14603
  const router = useRouter$1();
14604
+ const iframeRef = useRef(null);
14605
+ useEffect(()=>{
14606
+ const iframe = iframeRef.current;
14607
+ const handleLoad = ()=>{
14608
+ try {
14609
+ // Access iframe document
14610
+ if (iframe) {
14611
+ const iframeDoc = iframe.contentDocument || iframe?.contentWindow?.document;
14612
+ // Find all anchor tags and add target="_blank"
14613
+ const links = iframeDoc?.querySelectorAll('a');
14614
+ links?.forEach((link)=>{
14615
+ link.setAttribute('target', '_blank');
14616
+ link.setAttribute('rel', 'noreferrer');
14617
+ });
14618
+ }
14619
+ } catch (error) {
14620
+ console.error('Cannot access iframe content:', error);
14621
+ }
14622
+ };
14623
+ if (iframe) {
14624
+ iframe.addEventListener('load', handleLoad);
14625
+ return ()=>iframe.removeEventListener('load', handleLoad);
14626
+ }
14627
+ }, []);
14517
14628
  return /*#__PURE__*/ jsx("div", {
14518
14629
  className: "flex w-full h-full",
14519
14630
  children: /*#__PURE__*/ jsx("div", {
14520
14631
  className: "flex justify-items-center w-full",
14521
14632
  children: /*#__PURE__*/ jsx("iframe", {
14522
- allow: "cross-origin",
14633
+ ref: iframeRef,
14634
+ sandbox: "allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox",
14635
+ referrerPolicy: "strict-origin-when-cross-origin",
14636
+ allow: "geolocation 'none'; microphone 'none'; camera 'none'",
14523
14637
  src: `${router.basePath}/${GEN3_STATIC_NOTEBOOK_DIR}/${notebook}`,
14524
14638
  width: "100%",
14525
14639
  height: "100%",
@@ -14553,7 +14667,7 @@ class FilesystemContent {
14553
14667
  try {
14554
14668
  const files = myGlob(path.join(this.rootPath, filepath), filter);
14555
14669
  return Promise.all(files.map((file)=>this.get(path.join(filepath, file))));
14556
- } catch (err) {
14670
+ } catch (_err) {
14557
14671
  throw new Error(`getAllCannot process ${path.join(this.rootPath, filepath)}/${filter}`);
14558
14672
  }
14559
14673
  }
@@ -14608,12 +14722,18 @@ var ContentSource$1 = ContentSource.getInstance();
14608
14722
  * @returns A Promise resolving to an object containing header and footer props.
14609
14723
  */ const getNavPageLayoutPropsFromConfig = async ()=>{
14610
14724
  const navigationConfigJSON = await ContentSource$1.getContentDatabase().get(`${GEN3_COMMONS_NAME}/navigation.json`);
14611
- let bannerConfigJSON = [];
14612
- try {
14613
- bannerConfigJSON = await ContentSource$1.getContentDatabase().get(`${GEN3_COMMONS_NAME}/banner.json`);
14614
- } catch (error) {
14615
- console.warn('No banner config found at: ', `${GEN3_COMMONS_NAME}/banner.json`);
14616
- }
14725
+ const bannerConfigJSON = [];
14726
+ // TODO: enable later
14727
+ // try {
14728
+ // bannerConfigJSON = await ContentSource.getContentDatabase().get(
14729
+ // `${GEN3_COMMONS_NAME}/banner.json`,
14730
+ // );
14731
+ // } catch (error: unknown) {
14732
+ // console.warn(
14733
+ // 'No banner config found at: ',
14734
+ // `${GEN3_COMMONS_NAME}/banner.json`,
14735
+ // );
14736
+ // }
14617
14737
  const { topBar, navigation, type = 'original' } = navigationConfigJSON;
14618
14738
  let headerMetadata = {
14619
14739
  title: 'Gen3 Frontend Framework Page',
@@ -15199,8 +15319,9 @@ const cohortsAdapter = createEntityAdapter({
15199
15319
  const DEFAULT_COHORT_NAME = 'Default';
15200
15320
  const loadCohortsFromStorage = createAsyncThunk('cohorts/loadFromStorage', async ()=>{
15201
15321
  try {
15202
- const cohortsMap = await cohortStorage.getAllCohorts();
15203
- return Object(cohortsMap).values();
15322
+ const results = await cohortStorage.getAllCohorts();
15323
+ if (results.data) return Object.values(results.data);
15324
+ else return [];
15204
15325
  } catch (error) {
15205
15326
  console.error('Failed to load cohorts:', error);
15206
15327
  return [];
@@ -15242,11 +15363,13 @@ const deleteCohortFromStorage = createAsyncThunk('cohorts/deleteFromStorage', as
15242
15363
  return cohortId;
15243
15364
  });
15244
15365
  const emptyInitialState = cohortsAdapter.getInitialState({
15245
- currentCohortId: 'empty',
15366
+ currentCohortId: 'uninitialized',
15246
15367
  loading: false,
15368
+ uninitialized: true,
15247
15369
  error: null,
15248
15370
  autoSaveInProgress: []
15249
15371
  });
15372
+ // const initialState = emptyInitialState;
15250
15373
  const initialState = cohortsAdapter.addOne(emptyInitialState, createDefaultCohort());
15251
15374
  const updateAutoSave = (cohortId, state)=>{
15252
15375
  // Add to auto-save queue if not already present
@@ -15427,16 +15550,24 @@ const cohortManagerSlice = createSlice({
15427
15550
  extraReducers: (builder)=>{
15428
15551
  builder.addCase(loadCohortsFromStorage.pending, (state)=>{
15429
15552
  state.loading = true;
15553
+ state.uninitialized = false;
15430
15554
  state.error = null;
15555
+ console.log('loadCohortsFromStorage.pending');
15431
15556
  }).addCase(loadCohortsFromStorage.fulfilled, (state, action)=>{
15432
15557
  state.loading = false;
15558
+ console.log('loadCohortsFromStorage.fulfilled', action.payload);
15433
15559
  if (action.payload.length > 0) {
15434
- if (Object.keys(state.entities).length === 1) {
15435
- cohortsAdapter.removeOne(state, state.entities[0].id);
15560
+ if (Object.keys(state.entities).length >= 0) {
15561
+ cohortsAdapter.removeAll(state);
15436
15562
  }
15437
15563
  cohortsAdapter.addMany(state, action.payload);
15438
15564
  const sortedCohorts = action.payload.sort((a, b)=>b.modifiedDatetime.localeCompare(a.modifiedDatetime));
15439
15565
  state.currentCohortId = sortedCohorts[0].id;
15566
+ } else {
15567
+ // No cohorts in storage, create default cohort
15568
+ const defaultCohort = createDefaultCohort();
15569
+ cohortsAdapter.addOne(state, defaultCohort);
15570
+ state.currentCohortId = defaultCohort.id;
15440
15571
  }
15441
15572
  }).addCase(loadCohortsFromStorage.rejected, (state, action)=>{
15442
15573
  state.loading = false;
@@ -15493,6 +15624,7 @@ const cohortManagerReducer = cohortManagerSlice.reducer;
15493
15624
  const getCurrentCohort = (state)=>{
15494
15625
  const cohort = state.entities[state.currentCohortId];
15495
15626
  if (!cohort) {
15627
+ console.log('creating default cohort');
15496
15628
  return createDefaultCohort();
15497
15629
  }
15498
15630
  return cohort;
@@ -15602,7 +15734,6 @@ const reducers = combineReducers({
15602
15734
  filtersExpandedState: filtersExpandedReducer,
15603
15735
  facetDefinitionState: facetDefinitionsReducer,
15604
15736
  cohorts: cohortManagerReducer,
15605
- // savedCohorts: saveCohortPersistenceReducer,
15606
15737
  dataAccessRequests: dataAccessRequestsReducer
15607
15738
  });
15608
15739
  const persistedReducers = persistReducer(persistConfig, reducers);
@@ -15613,6 +15744,10 @@ const { id, AppStore, AppContext, useAppSelector, useAppDispatch } = createAppSt
15613
15744
  version: '0.0.1'
15614
15745
  });
15615
15746
 
15747
+ process.env.GEN3_COHORT_DISCOVERY_API || `${GEN3_API}/api/auth/analysis/cohortDiscovery`;
15748
+ const UninitializeCohort = {
15749
+ filters: {}};
15750
+
15616
15751
  // Selectors
15617
15752
  const { selectAll: selectAllCohorts, selectTotal: selectTotalCohorts, selectById: selectCohortById, selectIds: selectCohortIds } = cohortsAdapter.getSelectors((state)=>state.cohorts);
15618
15753
  const selectCurrentCohortId = (state)=>state.cohorts.currentCohortId;
@@ -15620,7 +15755,7 @@ const selectCurrentCohort = (state)=>{
15620
15755
  const { currentCohortId, entities } = state.cohorts;
15621
15756
  const cohort = entities[currentCohortId];
15622
15757
  if (!cohort) {
15623
- return createDefaultCohort();
15758
+ return null;
15624
15759
  }
15625
15760
  return cohort;
15626
15761
  };
@@ -15642,15 +15777,15 @@ createSelector([
15642
15777
  ], (autoSaveArray, cohortId)=>autoSaveArray.includes(cohortId));
15643
15778
  const selectCurrentCohortName = createSelector([
15644
15779
  selectCurrentCohort
15645
- ], (cohort)=>cohort.name);
15780
+ ], (cohort)=>cohort?.name ?? 'No Cohort Defined');
15646
15781
  const selectCurrentCohortFilters = createSelector([
15647
15782
  selectCurrentCohort
15648
- ], (cohort)=>cohort.filters);
15783
+ ], (cohort)=>cohort ? cohort.filters : UninitializeCohort.filters);
15649
15784
  const selectCurrentCohortIndexFilters = createSelector([
15650
15785
  selectCurrentCohort,
15651
15786
  (state, index)=>index
15652
15787
  ], (cohort, index)=>{
15653
- return cohort.filters?.[index] ?? EmptyFilterSet;
15788
+ return cohort?.filters?.[index] ?? EmptyFilterSet;
15654
15789
  });
15655
15790
  createSelector([
15656
15791
  selectAllCohorts,
@@ -15662,7 +15797,6 @@ createSelector([
15662
15797
  const trimmedName = params.name.trim().toLowerCase();
15663
15798
  return cohorts.some((cohort)=>cohort.id !== params.excludeId && cohort.name.trim().toLowerCase() === trimmedName);
15664
15799
  });
15665
- const selectCohortManagerLoading = (state)=>state.cohorts.loading;
15666
15800
  const selectCohortIdToNameMap = createSelector([
15667
15801
  selectAllCohorts
15668
15802
  ], (cohorts)=>{
@@ -16129,14 +16263,12 @@ const submitCohortRequestAction = async (cohort, values, user, indexResources, r
16129
16263
  }
16130
16264
  };
16131
16265
 
16132
- const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16133
- const dispatch = useAppDispatch();
16266
+ const CohortManagerPanel = ({ indexResources, remoteSupportService, size = 'md' })=>{
16267
+ const appDispatch = useAppDispatch();
16134
16268
  const [isEditing, setIsEditing] = useState(false);
16135
16269
  const [editingLabel, setEditingLabel] = useState('');
16136
16270
  const allCohorts = useAppSelector(selectAllCohorts);
16137
16271
  const currentCohort = useAppSelector(selectCurrentCohort);
16138
- const loading = useAppSelector(selectCohortManagerLoading);
16139
- const appDispatch = useAppDispatch();
16140
16272
  const [getGetAggs] = useLazyGetAggsNoFilterSelfQuery();
16141
16273
  const [requestQuery] = useCreateRequestMutation();
16142
16274
  const user = useCoreSelector(selectUserDetails);
@@ -16153,7 +16285,7 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16153
16285
  };
16154
16286
  const saveEdit = ()=>{
16155
16287
  if (editingLabel.trim() === '' || !currentCohort.name) return;
16156
- dispatch(updateCohortName({
16288
+ appDispatch(updateCohortName({
16157
16289
  id: currentCohort.id,
16158
16290
  name: editingLabel
16159
16291
  }));
@@ -16161,7 +16293,7 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16161
16293
  setEditingLabel('');
16162
16294
  };
16163
16295
  const handleCreateNew = ()=>{
16164
- dispatch(createNewCohort({
16296
+ appDispatch(createNewCohort({
16165
16297
  name: 'New Cohort'
16166
16298
  }));
16167
16299
  };
@@ -16173,22 +16305,26 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16173
16305
  }, [
16174
16306
  allCohorts
16175
16307
  ]);
16308
+ useDeepCompareEffect(()=>{
16309
+ if (!currentCohort) {
16310
+ setCurrentCohortId(allCohorts[0].id);
16311
+ }
16312
+ }, [
16313
+ allCohorts,
16314
+ currentCohort,
16315
+ setCurrentCohortId
16316
+ ]);
16176
16317
  const onSelectCohort = useCallback((_value, option)=>{
16177
16318
  if (option) {
16178
- dispatch(setCurrentCohortId(option.value));
16319
+ appDispatch(setCurrentCohortId(option.value));
16179
16320
  }
16180
16321
  }, [
16181
- dispatch
16322
+ appDispatch
16182
16323
  ]);
16183
16324
  const handleCohortAccessRequest = async (cohortId, values)=>{
16184
16325
  const cohort = allCohorts.find((obj)=>obj.id === cohortId);
16185
16326
  if (cohort) await submitCohortRequestAction(cohort, values, user, indexResources, remoteSupportService, appDispatch, getGetAggs, requestQuery);
16186
16327
  };
16187
- if (loading) {
16188
- return /*#__PURE__*/ jsx("div", {
16189
- children: "Loading cohorts..."
16190
- });
16191
- }
16192
16328
  return /*#__PURE__*/ jsxs(Group, {
16193
16329
  gap: "xs",
16194
16330
  className: "flex pt-4 pl-2",
@@ -16246,7 +16382,7 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16246
16382
  onClick: saveEdit,
16247
16383
  "data-testid": "completeCohortRenameButton",
16248
16384
  "aria-label": "Complete rename cohort",
16249
- disabled: editingLabel.trim() === '' || editingLabel.trim() === currentCohort.name,
16385
+ disabled: editingLabel.trim() === '' || editingLabel.trim() === currentCohort?.name,
16250
16386
  size: `compact-${size}`,
16251
16387
  children: /*#__PURE__*/ jsx(Icon, {
16252
16388
  icon: "gen3:check",
@@ -16321,7 +16457,7 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16321
16457
  color: theme.colors.accent[4]
16322
16458
  },
16323
16459
  onConfirm: ()=>{
16324
- dispatch(removeCohort(currentCohort.id));
16460
+ appDispatch(removeCohort(currentCohort.id));
16325
16461
  }
16326
16462
  });
16327
16463
  },
@@ -16363,8 +16499,15 @@ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16363
16499
  ]
16364
16500
  });
16365
16501
  };
16366
-
16367
- process.env.GEN3_COHORT_DISCOVERY_API || `${GEN3_API}/api/auth/analysis/cohortDiscovery`;
16502
+ const CohortManager = ({ indexResources, remoteSupportService, size = 'md' })=>{
16503
+ // TODO: initialize and load cohorts from cohort storage
16504
+ // as right now the redux-persist is handling cohorts
16505
+ return /*#__PURE__*/ jsx(CohortManagerPanel, {
16506
+ indexResources: indexResources,
16507
+ remoteSupportService: remoteSupportService,
16508
+ size: size
16509
+ });
16510
+ };
16368
16511
 
16369
16512
  const useGraphQLData = (url, body, skip)=>{
16370
16513
  // Create a fetcher function that handles the GraphQL POST request
@@ -16833,22 +16976,6 @@ const SavedCohortsTable = ({ indexResources, remoteSupportService, size = 'md' }
16833
16976
  })
16834
16977
  })
16835
16978
  }),
16836
- /*#__PURE__*/ jsx(Tooltip, {
16837
- label: "Select Cohort",
16838
- withArrow: true,
16839
- children: /*#__PURE__*/ jsx(ActionIcon, {
16840
- color: "accent.4",
16841
- variant: "transparent",
16842
- "aria-label": "Select cohort",
16843
- onClick: ()=>{},
16844
- children: /*#__PURE__*/ jsx(Icon, {
16845
- icon: "gen3:cohort",
16846
- height: iconSize,
16847
- width: iconSize,
16848
- color: theme.colors.secondary[4]
16849
- })
16850
- })
16851
- }),
16852
16979
  /*#__PURE__*/ jsx(Tooltip, {
16853
16980
  label: "Delete Cohort",
16854
16981
  withArrow: true,
@@ -19376,6 +19503,7 @@ const MetadataDictionary = ({ schemas })=>{
19376
19503
  }
19377
19504
  return /*#__PURE__*/ jsxs(Tabs, {
19378
19505
  defaultValue: schemas[0].schemaID,
19506
+ variant: schemas[0]?.tabType,
19379
19507
  className: "w-full",
19380
19508
  keepMounted: false,
19381
19509
  children: [
@@ -19715,6 +19843,7 @@ const Discovery = ({ discoveryConfig })=>{
19715
19843
  children: /*#__PURE__*/ jsxs(Tabs, {
19716
19844
  className: "w-full",
19717
19845
  defaultValue: metadataIndex,
19846
+ variant: discoveryConfig.metadataConfig[0]?.tabType,
19718
19847
  onChange: (v)=>{
19719
19848
  setMetadataIndex(v ?? '0');
19720
19849
  },
@@ -20016,6 +20145,9 @@ const LandingPageGetServerSideProps = async ()=>{
20016
20145
  };
20017
20146
  };
20018
20147
 
20148
+ const CohortBuilder = dynamic(()=>Promise.resolve().then(function () { return CohortBuilder$2; }), {
20149
+ ssr: false
20150
+ });
20019
20151
  const ExplorerPage = ({ headerProps, footerProps, explorerConfig, headerMetadata, tabsLayout, sharedFiltersMap })=>{
20020
20152
  if (explorerConfig === undefined) {
20021
20153
  return /*#__PURE__*/ jsx(Center, {
@@ -25913,6 +26045,13 @@ const staticNotebookAPI = async (req, res)=>{
25913
26045
  });
25914
26046
  }
25915
26047
  const rawContent = fs.readFileSync(fullPath, 'utf8');
26048
+ DOMPurify.addHook('afterSanitizeAttributes', function(node) {
26049
+ if (node.tagName === 'a' || node.tagName === 'A') {
26050
+ // Check for anchor tags and target attribute
26051
+ node.setAttribute('target', '_blank');
26052
+ node.setAttribute('rel', 'noopener'); // Prevent window.opener vulnerability
26053
+ }
26054
+ });
25916
26055
  const sanitizedContent = DOMPurify.sanitize(rawContent, {
25917
26056
  ALLOWED_TAGS: [
25918
26057
  'p',
@@ -25961,5 +26100,5 @@ const staticNotebookAPI = async (req, res)=>{
25961
26100
  });
25962
26101
  };
25963
26102
 
25964
- export { AISearchPageGetServerSideProps, AccessLevel, AccordionPanel, ActionBar, ActionButton, AdminAuthZPageGetServerSideProps, AiSearch, AISearchPage as AiSearchPage, AnalysisCenter, AnalysisCenterWithSections, AnalysisEditorPage, AnalysisEditorPageGetServerSideProps, AnalysisPage, AnalysisPageGetServerSideProps, AuthzPage, BAD_DATA_MESSAGE, Banner, BaseModal, Charts, CohortBuilder, CohortManager$1 as CohortManager, CollapsableCharts, CollapsableSidebar, ColorThemePage, ColorThemePageGetServerSideProps, ContentSource$1 as ContentSource, CreateCredentialsAPIKeyModal, CrosswalkPage, CrosswalkPageGetServerSideProps, Custom404Page, DAYS_IN_YEAR, DEFAULT_MAXIMUM, DEFAULT_MINIMUM, DEFAULT_VISIBLE_ITEMS$1 as DEFAULT_VISIBLE_ITEMS, DataLibraryPage, DataLibraryPageGetServerSideProps, DictionaryPage, DictionaryPageGetServerSideProps, DiscoveryCellRendererFactory, DiscoveryProvider as DiscoveryConfigProvider, DiscoveryIndexPanel, DiscoveryPage, DiscoveryPageGetServerSideProps, DiscoveryRowRendererFactory, DropdownButton, DropdownPanel, DropdownWithIcon, EnumFacet, EnumFacetChart, ErrorCard, ExactValueFacet, ExplorerPage, ExplorerPageGetServerSideProps, ExplorerPageGetServerSidePropsForConfigId, ExplorerTableCellRendererFactory, ExplorerTableDetailsPanelFactory, FacetControlsHeader, FacetExpander, FacetSelector, FacetSortPanel, FacetTabs, FiltersPanel, FirstTimeModal, Footer, Gen3Button, Gen3ButtonReverse, Gen3Link, Gen3ModalsProvider, Gen3Provider, GqlQueryEditor$1 as GqlQueryEditor, Header$1 as Header, HoverLink, LandingPage, LandingPageGetServerSideProps, LoginButton$1 as LoginButton, LoginPage, LoginPageGetServerSideProps, LoginPanel, LoginProvidersPanel, MinutesToMilliseconds, MultiSelectValueFacet, NavPageLayout, NavigationBar, NavigationButton, NoAccessModal, NotebookLitePage, NotebookLitePageGetStaticProps, ProfilePage, ProfilePageGetServerSideProps, ProfileProvider, ProtectedContent, QueryExpression, QueryExpressionContext, QueryExpressionSection, QueryPage, QueryPageGetServerSideProps, RangeFacet, ReactECharts, ResourcesFilters, SPECIAL_CASE_FIELDS, SegmentedControl, SessionExpiredModal, SinglePageStudyDetailsPanel, StaticNotebookIFrame, StaticNotebookViewer, StudyDetailsPanel, StudyGroup, StudyGroupPanel, StudyProvider, SubmissionPage, SubmissionPageGetServerSideProps, TabbedCohortBuilder, TabbedCohortBuilderPage, TabbedCohortBuilderPageGetServerSideProps, TabbedPanel, TagCloud, TailwindConfig, TopBar, UploadJSONButton, User, Workspace, WorkspaceNoAccessPage, WorkspaceNoAccessPageServerSideProps, WorkspacePage, WorkspacePageGetServerSideProps, accessibleFieldName, addIntersectionToIncludes, addUnion, analysisApiCohortDiscovery, buildNested, capitalize, classifyFacets, compareKeysAscending, compareKeysDescending, computeRowSpan, convertMinutesToMilliseconds, convertPathsToTree, convertSecondsToMilliseconds, convertToStringArray, create10ColorAccessibleContrast, create10ColorPallet, createMantineTheme, credentialsLogin, credentialsLogout, extractObjectKey, extractRangeValues, focusStyles, getAllFieldsFromFilterConfigs, getCurrentUnixTimestamp, getNavPageLayoutPropsFromConfig, getParamsValueAsString, getTagInfo, hasOwnProperty, isArrayOfString, isEnumFacetResponse, isHeaderMetadata, isPropertyKey, isTextTransform$1 as isTextTransform, mapFacetSortToSortType, processBucketData, processLabel$1 as processLabel, processRangeData, processRangeKeyLabel, registerCohortBuilderDefaultPreviewRenderers, registerCohortDiscoveryApp, registerCohortSimilarityApp, registerDefaultDiscoveryDataLoaders, registerDiscoveryDefaultCellRenderers, registerDiscoveryDefaultStudyPreviewRenderers, registerExplorerDefaultCellRenderers, registerMetadataSchemaApp, removeIntersectionFromEnum, removeKey$1 as removeKey, removeUnion, resourcePathFromProjectID, sessionLogout, sessionToken, staticNotebookAPI, stripTrailingSlash, toCountsString, toDisplayName, truncateString, unixTimeToString, updateFacetEnum, useClearFilters$1 as useClearFilters, useDiscoveryContext, useExtractEnumFilterValues, useExtractRangeFilterValues, useFieldNameToTitle, useGetFacetFilters$1 as useGetFacetFilters, useUpdateFilters$1 as useUpdateFilters, userHasMethodForServiceOnResource$1 as userHasMethodForServiceOnResource };
26103
+ export { AISearchPageGetServerSideProps, AccessLevel, AccordionPanel, ActionBar, ActionButton, AdminAuthZPageGetServerSideProps, AiSearch, AISearchPage as AiSearchPage, AnalysisCenter, AnalysisCenterWithSections, AnalysisEditorPage, AnalysisEditorPageGetServerSideProps, AnalysisPage, AnalysisPageGetServerSideProps, AuthzPage, BAD_DATA_MESSAGE, Banner, BaseModal, Charts, CohortBuilder$1 as CohortBuilder, CohortManager$1 as CohortManager, CollapsableCharts, CollapsableSidebar, ColorThemePage, ColorThemePageGetServerSideProps, ContentSource$1 as ContentSource, CreateCredentialsAPIKeyModal, CrosswalkPage, CrosswalkPageGetServerSideProps, Custom404Page, DAYS_IN_YEAR, DEFAULT_MAXIMUM, DEFAULT_MINIMUM, DEFAULT_VISIBLE_ITEMS$1 as DEFAULT_VISIBLE_ITEMS, DataLibraryPage, DataLibraryPageGetServerSideProps, DictionaryPage, DictionaryPageGetServerSideProps, DiscoveryCellRendererFactory, DiscoveryProvider as DiscoveryConfigProvider, DiscoveryIndexPanel, DiscoveryPage, DiscoveryPageGetServerSideProps, DiscoveryRowRendererFactory, DropdownButton, DropdownPanel, DropdownWithIcon, EnumFacet, EnumFacetChart, ErrorCard, ExactValueFacet, ExplorerPage, ExplorerPageGetServerSideProps, ExplorerPageGetServerSidePropsForConfigId, ExplorerTableCellRendererFactory, ExplorerTableDetailsPanelFactory, FacetControlsHeader, FacetExpander, FacetSelector, FacetSortPanel, FacetTabs, FiltersPanel, FirstTimeModal, Footer, Gen3Button, Gen3ButtonReverse, Gen3Link, Gen3ModalsProvider, Gen3Provider, GqlQueryEditor$1 as GqlQueryEditor, Header$1 as Header, HoverLink, LandingPage, LandingPageGetServerSideProps, LoginButton$1 as LoginButton, LoginPage, LoginPageGetServerSideProps, LoginPanel, LoginProvidersPanel, MinutesToMilliseconds, MultiSelectValueFacet, NavPageLayout, NavigationBar, NavigationButton, NoAccessModal, NotebookLitePage, NotebookLitePageGetStaticProps, ProfilePage, ProfilePageGetServerSideProps, ProfileProvider, ProtectedContent, QueryExpression, QueryExpressionContext, QueryExpressionSection, QueryPage, QueryPageGetServerSideProps, RangeFacet, ReactECharts, ResourcesFilters, SPECIAL_CASE_FIELDS, SegmentedControl, SessionExpiredModal, SinglePageStudyDetailsPanel, StaticNotebookIFrame, StaticNotebookViewer, StudyDetailsPanel, StudyGroup, StudyGroupPanel, StudyProvider, SubmissionPage, SubmissionPageGetServerSideProps, TabbedCohortBuilder, TabbedCohortBuilderPage, TabbedCohortBuilderPageGetServerSideProps, TabbedPanel, TagCloud, TailwindConfig, TopBar, UploadJSONButton, User, Workspace, WorkspaceNoAccessPage, WorkspaceNoAccessPageServerSideProps, WorkspacePage, WorkspacePageGetServerSideProps, accessibleFieldName, addIntersectionToIncludes, addUnion, analysisApiCohortDiscovery, buildNested, capitalize, classifyFacets, compareKeysAscending, compareKeysDescending, computeRowSpan, convertMinutesToMilliseconds, convertPathsToTree, convertSecondsToMilliseconds, convertToStringArray, create10ColorAccessibleContrast, create10ColorPallet, createMantineTheme, credentialsLogin, credentialsLogout, extractObjectKey, extractRangeValues, filterAggregationsDataKeys, focusStyles, getAllFieldsFromFilterConfigs, getCurrentUnixTimestamp, getNavPageLayoutPropsFromConfig, getParamsValueAsString, getTagInfo, hasOwnProperty, isArrayOfString, isEnumFacetResponse, isHeaderMetadata, isPropertyKey, isTextTransform$1 as isTextTransform, mapFacetSortToSortType, processBucketData, processLabel$1 as processLabel, processRangeData, processRangeKeyLabel, registerCohortBuilderDefaultPreviewRenderers, registerCohortDiscoveryApp, registerCohortSimilarityApp, registerDefaultDiscoveryDataLoaders, registerDiscoveryDefaultCellRenderers, registerDiscoveryDefaultStudyPreviewRenderers, registerExplorerDefaultCellRenderers, registerMetadataSchemaApp, removeIntersectionFromEnum, removeKey$1 as removeKey, removeUnion, resourcePathFromProjectID, sessionLogout, sessionToken, staticNotebookAPI, stripTrailingSlash, toCountsString, toDisplayName, truncateString, unixTimeToString, updateFacetEnum, useClearFilters$1 as useClearFilters, useDiscoveryContext, useExtractEnumFilterValues, useExtractRangeFilterValues, useFieldNameToTitle, useGetFacetFilters$1 as useGetFacetFilters, useUpdateFilters$1 as useUpdateFilters, userHasMethodForServiceOnResource$1 as userHasMethodForServiceOnResource };
25965
26104
  //# sourceMappingURL=index.js.map