@cdc/core 4.25.7 → 4.25.8

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.
@@ -52,9 +52,9 @@ export type DataTableProps = {
52
52
  vizTitle?: string
53
53
  // determines if columns should be wrapped in the table
54
54
  wrapColumns?: boolean
55
+ interactionLabel?: string
55
56
  }
56
57
 
57
- /* eslint-disable jsx-a11y/no-noninteractive-tabindex, jsx-a11y/no-static-element-interactions */
58
58
  const DataTable = (props: DataTableProps) => {
59
59
  const {
60
60
  columns,
@@ -71,7 +71,8 @@ const DataTable = (props: DataTableProps) => {
71
71
  tableTitle,
72
72
  viewport,
73
73
  vizTitle,
74
- wrapColumns
74
+ wrapColumns,
75
+ interactionLabel = ''
75
76
  } = props
76
77
  const runtimeData = useMemo(() => {
77
78
  const data = removeNullColumns(parentRuntimeData)
@@ -135,23 +136,23 @@ const DataTable = (props: DataTableProps) => {
135
136
  const rows =
136
137
  isVertical && sortBy.column
137
138
  ? rawRows.sort((a, b) => {
138
- let dataA
139
- let dataB
140
- if (config.type === 'map' && config.columns) {
141
- const sortByColName = config.columns[sortBy.column].name
142
- dataA = runtimeData[a][sortByColName]
143
- dataB = runtimeData[b][sortByColName]
144
- }
145
- if (['chart', 'dashboard', 'table'].includes(config.type)) {
146
- dataA = runtimeData[a][sortBy.column]
147
- dataB = runtimeData[b][sortBy.column]
148
- }
149
- if (!dataA && !dataB && config.type === 'chart' && config.xAxis && config.xAxis.type === 'date-time') {
150
- dataA = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[a][config.xAxis.dataKey])
151
- dataB = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[b][config.xAxis.dataKey])
152
- }
153
- return dataA || dataB ? customSort(dataA, dataB, sortBy, config) : 0
154
- })
139
+ let dataA
140
+ let dataB
141
+ if (config.type === 'map' && config.columns) {
142
+ const sortByColName = config.columns[sortBy.column].name
143
+ dataA = runtimeData[a][sortByColName]
144
+ dataB = runtimeData[b][sortByColName]
145
+ }
146
+ if (['chart', 'dashboard', 'table'].includes(config.type)) {
147
+ dataA = runtimeData[a][sortBy.column]
148
+ dataB = runtimeData[b][sortBy.column]
149
+ }
150
+ if (!dataA && !dataB && config.type === 'chart' && config.xAxis && config.xAxis.type === 'date-time') {
151
+ dataA = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[a][config.xAxis.dataKey])
152
+ dataB = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[b][config.xAxis.dataKey])
153
+ }
154
+ return dataA || dataB ? customSort(dataA, dataB, sortBy, config) : 0
155
+ })
155
156
  : rawRows
156
157
 
157
158
  const limitHeight = {
@@ -230,17 +231,17 @@ const DataTable = (props: DataTableProps) => {
230
231
  const visibleData =
231
232
  config.type === 'map'
232
233
  ? getMapRowData(
233
- rows,
234
- columns,
235
- config,
236
- formatLegendLocation,
237
- runtimeData as Record<string, Object>,
238
- displayGeoName,
239
- filterColumns
240
- )
234
+ rows,
235
+ columns,
236
+ config,
237
+ formatLegendLocation,
238
+ runtimeData as Record<string, Object>,
239
+ displayGeoName,
240
+ filterColumns
241
+ )
241
242
  : runtimeData.map(d => {
242
- return _.pick(d, [...filterColumns, ...dataSeriesColumns])
243
- })
243
+ return _.pick(d, [...filterColumns, ...dataSeriesColumns])
244
+ })
244
245
  const csvData = config.table?.downloadVisibleDataOnly ? visibleData : rawData
245
246
 
246
247
  // only use fullGeoName on County maps and no other
@@ -279,27 +280,31 @@ const DataTable = (props: DataTableProps) => {
279
280
  ? mapCellMatrix({ ...props, rows, wrapColumns, runtimeData, viewport })
280
281
  : chartCellMatrix({ rows, ...props, runtimeData, isVertical, sortBy, hasRowType, viewport })
281
282
 
283
+ const useBottomExpandCollapse = config.table.showBottomCollapse && expanded && Array.isArray(childrenMatrix)
284
+
282
285
  // If every value in a column is a number, record the column index so the header and cells can be right-aligned
283
286
  const rightAlignedCols = childrenMatrix.length
284
287
  ? Object.fromEntries(
285
- Object.keys(childrenMatrix[0])
286
- .filter(
287
- i => childrenMatrix.filter(row => isRightAlignedTableValue(row[i])).length === childrenMatrix.length
288
- )
289
- .map(x => [x, true])
290
- )
288
+ Object.keys(childrenMatrix[0])
289
+ .filter(
290
+ i => childrenMatrix.filter(row => isRightAlignedTableValue(row[i])).length === childrenMatrix.length
291
+ )
292
+ .map(x => [x, true])
293
+ )
291
294
  : {}
292
295
 
296
+ const showCollapseButton = config.table.collapsible !== false && useBottomExpandCollapse
293
297
  const TableMediaControls = ({ belowTable }) => {
294
298
  const hasDownloadLink = config.table.download
295
299
  return (
296
300
  <MediaControls.Section classes={getMediaControlsClasses(belowTable, hasDownloadLink)}>
297
- <MediaControls.Link config={config} dashboardDataConfig={dataConfig} />
301
+ <MediaControls.Link config={config} dashboardDataConfig={dataConfig} interactionLabel={interactionLabel} />
298
302
  {hasDownloadLink && (
299
303
  <DownloadButton
300
304
  rawData={getDownloadData()}
301
305
  fileName={`${vizTitle || 'data-table'}.csv`}
302
306
  headerColor={headerColor}
307
+ interactionLabel={interactionLabel}
303
308
  />
304
309
  )}
305
310
  </MediaControls.Section>
@@ -308,11 +313,21 @@ const DataTable = (props: DataTableProps) => {
308
313
 
309
314
  return (
310
315
  <ErrorBoundary component='DataTable'>
311
- {!config.table.showDownloadLinkBelow && <TableMediaControls />}
316
+ {!config.table.showDownloadLinkBelow && (
317
+ <div className='w-100 d-flex justify-content-end'>
318
+ <TableMediaControls />
319
+ </div>
320
+ )}
312
321
  <section id={tabbingId.replace('#', '')} className={getClassNames()} aria-label={accessibilityLabel}>
313
322
  <SkipTo skipId={skipId} skipMessage='Skip Data Table' />
314
323
  {config.table.collapsible !== false && (
315
- <ExpandCollapse expanded={expanded} setExpanded={setExpanded} tableTitle={tableTitle} viewport={viewport} />
324
+ <ExpandCollapse
325
+ expanded={expanded}
326
+ setExpanded={setExpanded}
327
+ tableTitle={tableTitle}
328
+ config={config}
329
+ interactionLabel={interactionLabel}
330
+ />
316
331
  )}
317
332
  <div className='table-container' style={limitHeight}>
318
333
  <Table
@@ -333,6 +348,7 @@ const DataTable = (props: DataTableProps) => {
333
348
  sortBy={sortBy}
334
349
  setSortBy={setSortBy}
335
350
  rightAlignedCols={rightAlignedCols}
351
+ interactionLabel={interactionLabel}
336
352
  />
337
353
  ) : (
338
354
  <ChartHeader
@@ -344,12 +360,14 @@ const DataTable = (props: DataTableProps) => {
344
360
  setSortBy={setSortBy}
345
361
  viewport={viewport}
346
362
  rightAlignedCols={rightAlignedCols}
363
+ interactionLabel={interactionLabel}
347
364
  />
348
365
  )
349
366
  }
350
367
  tableOptions={{
351
- className: `table table-striped table-width-unset ${expanded ? 'data-table' : 'data-table cdcdataviz-sr-only'}${isVertical ? '' : ' horizontal'
352
- }`,
368
+ className: `table table-striped table-width-unset ${
369
+ expanded ? 'data-table' : 'data-table cdcdataviz-sr-only'
370
+ }${isVertical ? '' : ' horizontal'}`,
353
371
  'aria-live': 'assertive',
354
372
  'aria-rowcount': config?.data?.length ? config.data.length : -1,
355
373
  hidden: !expanded,
@@ -382,7 +400,18 @@ const DataTable = (props: DataTableProps) => {
382
400
  )}
383
401
  </div>
384
402
  </section>
385
- {config.table.showDownloadLinkBelow && <TableMediaControls belowTable={true} />}
403
+ <div className={`w-100 d-flex ${showCollapseButton ? 'justify-content-between' : 'justify-content-end'}`}>
404
+ {showCollapseButton && (
405
+ <button
406
+ className='border-0 bg-transparent text-decoration-underline mt-2'
407
+ style={{ color: 'var(--colors-link-blue)', fontSize: '0.772rem', textUnderlineOffset: '6px' }}
408
+ onClick={() => setExpanded(false)}
409
+ >
410
+ - Collapse table
411
+ </button>
412
+ )}
413
+ {config.table.showDownloadLinkBelow && <TableMediaControls belowTable={true} />}
414
+ </div>
386
415
  <div id={skipId} className='cdcdataviz-sr-only'>
387
416
  Skipped data table.
388
417
  </div>
@@ -394,7 +423,12 @@ const DataTable = (props: DataTableProps) => {
394
423
  <ErrorBoundary component='DataTable'>
395
424
  <section id={tabbingId.replace('#', '')} className={getClassNames()} aria-label={accessibilityLabel}>
396
425
  <SkipTo skipId={skipId} skipMessage='Skip Data Table' />
397
- <ExpandCollapse expanded={expanded} setExpanded={setExpanded} tableTitle={tableTitle} />
426
+ <ExpandCollapse
427
+ expanded={expanded}
428
+ setExpanded={setExpanded}
429
+ tableTitle={tableTitle}
430
+ interactionLabel={interactionLabel}
431
+ />
398
432
  <div className='table-container' style={limitHeight}>
399
433
  <Table
400
434
  viewport={viewport}
@@ -18,6 +18,7 @@ type StandAloneProps = {
18
18
  isEditor?: boolean
19
19
  updateConfig?: (Visualization) => void
20
20
  datasets?: Datasets
21
+ interactionLabel?: string
21
22
  }
22
23
 
23
24
  const DataTableStandAlone: React.FC<StandAloneProps> = ({
@@ -26,7 +27,8 @@ const DataTableStandAlone: React.FC<StandAloneProps> = ({
26
27
  updateConfig,
27
28
  viewport,
28
29
  isEditor,
29
- datasets
30
+ datasets,
31
+ interactionLabel = ''
30
32
  }) => {
31
33
  const [filteredData, setFilteredData] = useState<Record<string, any>[]>(
32
34
  filterVizData(config.filters, config.formattedData || config.data)
@@ -69,6 +71,7 @@ const DataTableStandAlone: React.FC<StandAloneProps> = ({
69
71
  tabbingId={visualizationKey}
70
72
  tableTitle={config.table.label}
71
73
  viewport={viewport || 'lg'}
74
+ interactionLabel={interactionLabel}
72
75
  />
73
76
  <FootnotesStandAlone config={config.footnotes} filters={config.filters?.filter(f => f.filterFootnotes)} />
74
77
  </>
@@ -6,8 +6,19 @@ import { SortIcon } from './SortIcon'
6
6
  import { getNewSortBy } from '../helpers/getNewSortBy'
7
7
  import parse from 'html-react-parser'
8
8
  import { ChartConfig } from '@cdc/chart/src/types/ChartConfig'
9
+ import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
9
10
 
10
- type ChartHeaderProps = { data; isVertical; config; setSortBy; sortBy; hasRowType?; viewport; rightAlignedCols }
11
+ type ChartHeaderProps = {
12
+ data
13
+ isVertical
14
+ config
15
+ setSortBy
16
+ sortBy
17
+ hasRowType?
18
+ viewport
19
+ rightAlignedCols
20
+ interactionLabel: string
21
+ }
11
22
 
12
23
  const ChartHeader = ({
13
24
  data,
@@ -17,7 +28,8 @@ const ChartHeader = ({
17
28
  sortBy,
18
29
  hasRowType,
19
30
  viewport,
20
- rightAlignedCols
31
+ rightAlignedCols,
32
+ interactionLabel
21
33
  }: ChartHeaderProps) => {
22
34
  const groupBy = config.table?.groupBy
23
35
  if (!data) return
@@ -104,6 +116,13 @@ const ChartHeader = ({
104
116
  scope='col'
105
117
  onClick={() => {
106
118
  if (hasRowType) return
119
+ publishAnalyticsEvent(
120
+ `data_table_sort_by|${newSortBy.column}|${
121
+ newSortBy.asc === true ? 'asc' : newSortBy.asc === false ? 'desc' : 'undefined'
122
+ }`,
123
+ 'click',
124
+ interactionLabel
125
+ )
107
126
  setSortBy(newSortBy)
108
127
  }}
109
128
  onKeyDown={e => {
@@ -1,12 +1,23 @@
1
+ import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
2
+ import { Visualization } from '../../../types/Visualization'
1
3
  import Icon from '../../ui/Icon'
2
4
  import parse from 'html-react-parser'
3
5
 
4
- const ExpandCollapse = ({ expanded, setExpanded, tableTitle, fontSize, viewport }) => {
6
+ interface ExpandCollapseProps {
7
+ expanded: boolean
8
+ setExpanded: (expanded: boolean) => void
9
+ tableTitle: string
10
+ config?: Visualization
11
+ interactionLabel?: string
12
+ }
13
+
14
+ const ExpandCollapse = ({ expanded, setExpanded, tableTitle, config, interactionLabel = '' }: ExpandCollapseProps) => {
5
15
  return (
6
16
  <div
7
17
  role='button'
8
18
  className={expanded ? 'data-table-heading p-3' : 'collapsed data-table-heading p-3'}
9
19
  onClick={() => {
20
+ publishAnalyticsEvent('data_table_toggled', 'click', interactionLabel, config.type || 'unknown')
10
21
  setExpanded(!expanded)
11
22
  }}
12
23
  tabIndex={0}
@@ -2,10 +2,12 @@ import { DataTableProps } from '../DataTable'
2
2
  import ScreenReaderText from '../../elements/ScreenReaderText'
3
3
  import { SortIcon } from './SortIcon'
4
4
  import { getNewSortBy } from '../helpers/getNewSortBy'
5
+ import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
5
6
 
6
7
  type MapHeaderProps = DataTableProps & {
7
8
  sortBy: { column; asc }
8
9
  setSortBy: Function
10
+ interactionLabel: string
9
11
  }
10
12
 
11
13
  const ColumnHeadingText = ({ text, config }) => {
@@ -16,7 +18,15 @@ const ColumnHeadingText = ({ text, config }) => {
16
18
  return text
17
19
  }
18
20
 
19
- const MapHeader = ({ columns, config, indexTitle, sortBy, setSortBy, rightAlignedCols }: MapHeaderProps) => {
21
+ const MapHeader = ({
22
+ columns,
23
+ config,
24
+ indexTitle,
25
+ sortBy,
26
+ setSortBy,
27
+ rightAlignedCols,
28
+ interactionLabel = ''
29
+ }: MapHeaderProps) => {
20
30
  return (
21
31
  <tr>
22
32
  {Object.keys(columns)
@@ -46,6 +56,13 @@ const MapHeader = ({ columns, config, indexTitle, sortBy, setSortBy, rightAligne
46
56
  role='columnheader'
47
57
  scope='col'
48
58
  onClick={() => {
59
+ publishAnalyticsEvent(
60
+ `data_table_sort_by|${newSortBy.column}|${
61
+ newSortBy.asc === true ? 'asc' : newSortBy.asc === false ? 'desc' : 'undefined'
62
+ }`,
63
+ 'click',
64
+ interactionLabel
65
+ )
49
66
  setSortBy(newSortBy)
50
67
  }}
51
68
  onKeyDown={e => {
@@ -1,13 +1,15 @@
1
1
  import Papa from 'papaparse'
2
+ import { publishAnalyticsEvent } from '../helpers/metrics/helpers'
2
3
 
3
4
  type DownloadButtonProps = {
4
5
  rawData: Object
5
6
  fileName: string
6
7
  headerColor: string
7
8
  skipId: string | number
9
+ configUrl?: string
8
10
  }
9
11
 
10
- const DownloadButton = ({ rawData, fileName, headerColor, skipId }: DownloadButtonProps) => {
12
+ const DownloadButton = ({ rawData, fileName, headerColor, skipId, configUrl }: DownloadButtonProps) => {
11
13
  const csvData = Papa.unparse(rawData)
12
14
  // Prepend a Byte Order Mark (BOM) to the CSV data.
13
15
  // The BOM is a special marker that helps applications like Excel recognize the file as UTF-8 encoded.
@@ -22,6 +24,7 @@ const DownloadButton = ({ rawData, fileName, headerColor, skipId }: DownloadButt
22
24
  //@ts-ignore
23
25
  navigator.msSaveBlob(blob, fileName)
24
26
  }
27
+ publishAnalyticsEvent('data_downloaded', 'click', configUrl)
25
28
  }
26
29
 
27
30
  return (
@@ -216,7 +216,7 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
216
216
  section='table'
217
217
  updateField={updateField}
218
218
  />
219
- {config.table.collapsible !== false && (
219
+ {config.table.collapsible && (
220
220
  <CheckBox
221
221
  value={config.table.expanded}
222
222
  fieldName='expanded'
@@ -225,6 +225,15 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
225
225
  updateField={updateField}
226
226
  />
227
227
  )}
228
+ {config.table.collapsible && (
229
+ <CheckBox
230
+ value={config.table.showBottomCollapse}
231
+ fieldName='showBottomCollapse'
232
+ label='Show collapse below table'
233
+ section='table'
234
+ updateField={updateField}
235
+ />
236
+ )}
228
237
  <CheckBox
229
238
  value={config.table.download}
230
239
  fieldName='download'
@@ -14,10 +14,12 @@ import { getNestedOptions } from './helpers/getNestedOptions'
14
14
  import { getWrappingStatuses } from './helpers/filterWrapping'
15
15
  import { handleSorting } from './helpers/handleSorting'
16
16
  import { getChangedFilters } from './helpers/getChangedFilters'
17
+ import { getUniqueValues } from '@cdc/map/src/helpers'
17
18
  import { getQueryParams, updateQueryString } from '../../helpers/queryStringUtils'
18
19
  import { applyQueuedActive } from './helpers/applyQueuedActive'
19
20
  import Tabs from './components/Tabs'
20
21
  import Dropdown from './components/Dropdown'
22
+ import { publishAnalyticsEvent } from '../../helpers/metrics/helpers'
21
23
 
22
24
  export const VIZ_FILTER_STYLE = {
23
25
  dropdown: 'dropdown',
@@ -33,18 +35,13 @@ export type VizFilterStyle = (typeof VIZ_FILTER_STYLE)[keyof typeof VIZ_FILTER_S
33
35
 
34
36
  export const filterStyleOptions = Object.values(VIZ_FILTER_STYLE)
35
37
 
36
- const BUTTON_TEXT = {
37
- apply: 'Apply',
38
- resetText: 'Clear Filters'
39
- }
40
-
41
38
  type FilterProps = {
42
39
  dimensions?: DimensionsType
43
40
  config: Visualization
44
41
  setFilters: Function
45
42
  standaloneMap?: boolean
46
43
  excludedData?: Object[]
47
- getUniqueValues?: Function
44
+ interactionLabel?: string
48
45
  }
49
46
 
50
47
  const Filters: React.FC<FilterProps> = ({
@@ -53,7 +50,7 @@ const Filters: React.FC<FilterProps> = ({
53
50
  standaloneMap,
54
51
  setFilters,
55
52
  excludedData,
56
- getUniqueValues
53
+ interactionLabel = ''
57
54
  }) => {
58
55
  const { filters, general, theme, filterBehavior } = visualizationConfig
59
56
  const [showApplyButton, setShowApplyButton] = useState(false)
@@ -89,6 +86,13 @@ const Filters: React.FC<FilterProps> = ({
89
86
 
90
87
  const newFilters = getChangedFilters([...filters], index, value, filterBehavior)
91
88
  setFilters(newFilters)
89
+
90
+ publishAnalyticsEvent(
91
+ `${visualizationConfig.type}_filter_changed`,
92
+ 'click',
93
+ `${interactionLabel}|key_${newFilters?.[index]?.columnName}|value_${newFilters?.[index]?.active}`,
94
+ visualizationConfig.type
95
+ )
92
96
  }
93
97
 
94
98
  const handleApplyButton = newFilters => {
@@ -109,6 +113,13 @@ const Filters: React.FC<FilterProps> = ({
109
113
 
110
114
  setFilters(newFilters)
111
115
 
116
+ publishAnalyticsEvent(
117
+ `${visualizationConfig.type}_filter_applied`,
118
+ 'click',
119
+ `${interactionLabel}|${newFilters.map(f => f.active)}`,
120
+ visualizationConfig.type
121
+ )
122
+
112
123
  setShowApplyButton(false)
113
124
  }
114
125
 
@@ -137,6 +148,12 @@ const Filters: React.FC<FilterProps> = ({
137
148
  }
138
149
 
139
150
  setFilters(newFilters)
151
+ publishAnalyticsEvent(
152
+ `${visualizationConfig.type}_filter_reset`,
153
+ 'click',
154
+ `${interactionLabel}`,
155
+ visualizationConfig.type
156
+ )
140
157
  }
141
158
 
142
159
  const mobileFilterStyle = useMemo(() => {
@@ -269,10 +286,10 @@ const Filters: React.FC<FilterProps> = ({
269
286
  disabled={!showApplyButton}
270
287
  className={[general?.headerColor ? general.headerColor : theme, 'apply', 'me-2'].join(' ')}
271
288
  >
272
- {BUTTON_TEXT.apply}
289
+ Apply
273
290
  </Button>
274
291
  <Button secondary disabled={initialFiltersActive} onClick={handleReset}>
275
- {BUTTON_TEXT.resetText}
292
+ Clear Filters
276
293
  </Button>
277
294
  </div>
278
295
  ) : (
@@ -14,7 +14,8 @@ const FootnotesStandAlone: React.FC<StandAloneProps> = ({ config, filters }) =>
14
14
  if (!config) return null
15
15
  // get the api footnotes from the config
16
16
  const apiFootnotes = useMemo(() => {
17
- const configData = filterVizData(filters, config.data)
17
+ // If filters exist and should filter footnotes, apply them, otherwise use data as-is
18
+ const configData = filters && filters.length > 0 ? filterVizData(filters, config.data) : config.data
18
19
  if (configData && config.dataKey && config.dynamicFootnotes) {
19
20
  const { symbolColumn, textColumn, orderColumn } = config.dynamicFootnotes
20
21
  const _data = configData.map(row => _.pick(row, [symbolColumn, textColumn, orderColumn]))
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
2
  // import html2pdf from 'html2pdf.js'
3
+ import { publishAnalyticsEvent } from '@cdc/core/helpers/metrics/helpers'
3
4
 
4
5
  const buttonText = {
5
6
  pdf: 'Download PDF',
@@ -33,7 +34,7 @@ const saveImageAs = (uri, filename) => {
33
34
  }
34
35
  }
35
36
 
36
- const generateMedia = (state, type, elementToCapture) => {
37
+ const generateMedia = (state, type, elementToCapture, interactionLabel) => {
37
38
  // Identify Selector
38
39
  const baseSvg = document.querySelector(`[data-download-id=${elementToCapture}]`)
39
40
 
@@ -75,20 +76,30 @@ const generateMedia = (state, type, elementToCapture) => {
75
76
 
76
77
  switch (type) {
77
78
  case 'image':
79
+ const container = document.createElement('div')
80
+ // On screenshots without a title (like some charts), add padding around the chart svg
81
+ if (!state.showTitle) {
82
+ container.style.padding = '35px'
83
+ }
84
+ container.appendChild(baseSvg.cloneNode(true)) // Clone baseSvg to avoid modifying the original
85
+
78
86
  const downloadImage = async () => {
87
+ document.body.appendChild(container) // Append container to the DOM
79
88
  import(/* webpackChunkName: "html2canvas" */ 'html2canvas').then(mod => {
80
89
  mod
81
- .default(baseSvg, {
90
+ .default(container, {
82
91
  ignoreElements: el =>
83
92
  el.className?.indexOf &&
84
93
  el.className.search(/download-buttons|download-links|data-table-container/) !== -1
85
94
  })
86
95
  .then(canvas => {
87
96
  saveImageAs(canvas.toDataURL(), filename + '.png')
97
+ publishAnalyticsEvent(`${state.type}_image_downloaded`, 'click', interactionLabel, `${state.type}`)
88
98
  })
89
99
  })
90
100
  }
91
101
  downloadImage()
102
+
92
103
  return
93
104
  case 'pdf':
94
105
  // let opt = {
@@ -115,22 +126,13 @@ const generateMedia = (state, type, elementToCapture) => {
115
126
  }
116
127
  }
117
128
 
118
- // Handles different state theme locations between components
119
- // Apparently some packages use state.headerColor where others use state.theme
120
- const handleTheme = state => {
121
- if (state?.headerColor) return state.headerColor // ie. maps
122
- if (state?.theme) return state.theme // ie. charts
123
- return 'theme-notFound'
124
- }
125
-
126
- // Download CSV
127
- const Button = ({ state, text, type, title, elementToCapture }) => {
129
+ const Button = ({ state, text, type, title, elementToCapture, interactionLabel = '' }) => {
128
130
  const buttonClasses = ['btn', 'btn-primary']
129
131
  return (
130
132
  <button
131
133
  className={buttonClasses.join(' ')}
132
134
  title={title}
133
- onClick={() => generateMedia(state, type, elementToCapture)}
135
+ onClick={() => generateMedia(state, type, elementToCapture, interactionLabel)}
134
136
  style={{ lineHeight: '1.4em' }}
135
137
  >
136
138
  {buttonText[type]}
@@ -139,12 +141,19 @@ const Button = ({ state, text, type, title, elementToCapture }) => {
139
141
  }
140
142
 
141
143
  // Link to CSV/JSON data
142
- const Link = ({ config, dashboardDataConfig }) => {
144
+ const Link = ({ config, dashboardDataConfig, interactionLabel }) => {
143
145
  let dataConfig = dashboardDataConfig || config
144
146
  // Handles Maps & Charts
145
147
  if (dataConfig.dataFileSourceType === 'url' && dataConfig.dataFileName && config.table.showDownloadUrl) {
146
148
  return (
147
- <a href={dataConfig.dataFileName} title={buttonText.link} target='_blank'>
149
+ <a
150
+ href={dataConfig.dataFileName}
151
+ title={buttonText.link}
152
+ target='_blank'
153
+ onClick={() => {
154
+ publishAnalyticsEvent('data_viewed', 'click', `${unknown}`)
155
+ }}
156
+ >
148
157
  {buttonText.link}
149
158
  </a>
150
159
  )
@@ -152,7 +161,14 @@ const Link = ({ config, dashboardDataConfig }) => {
152
161
 
153
162
  // Handles Dashboards
154
163
  return config?.table?.showDownloadUrl && dataConfig.dataUrl ? (
155
- <a href={dataConfig.dataUrl} title='Link to view full data set' target='_blank'>
164
+ <a
165
+ href={dataConfig.dataUrl}
166
+ title='Link to view full data set'
167
+ target='_blank'
168
+ onClick={() => {
169
+ publishAnalyticsEvent('data_viewed', 'click', `${interactionLabel}`)
170
+ }}
171
+ >
156
172
  {buttonText.link}
157
173
  </a>
158
174
  ) : null
@@ -549,9 +549,7 @@ body.post-type-cdc_visualization .cdc-editor .configure .editor-panel {
549
549
  float: unset;
550
550
  }
551
551
  .cdc-open-viz-module .download-links {
552
- display: flex;
553
552
  justify-content: flex-end;
554
- width: 100%;
555
553
  line-height: 1;
556
554
  }
557
555
  .cdc-open-viz-module .download-links.brush-active {
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../styles/_reset.scss","../styles/_global-variables.scss","../styles/filters.scss","../styles/base.scss","../styles/_global.scss","../styles/_variables.scss","../styles/_button-section.scss","../styles/_series-list.scss","../styles/heading-colors.scss","../styles/v2/themes/_color-definitions.scss","../styles/v2/components/ui/tooltip.scss","../styles/v2/utils/_align.scss","../styles/v2/utils/_animations.scss","../styles/v2/utils/_grid.scss","../styles/v2/main.scss","../styles/v2/base/_general.scss","../styles/v2/base/_heading.scss","../styles/v2/base/_file-selector.scss","../styles/v2/layout/_alert.scss","../styles/v2/layout/_component.scss","../styles/v2/layout/_progression.scss","../styles/v2/utils/_mixins.scss","../styles/v2/layout/_tooltip.scss","../styles/v2/utils/_breakpoints.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAoEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAEE;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;;AAGF;AACE;EACA;;AAGF;AACE;AAAA;EAEA;;;AC9CF;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAON;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC7GA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AAKF;EACE;EACA;;AAIA;EACE;EACA;;AAGJ;EAEE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;;AAMF;EACE;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AC9FN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAWA;EACA;EACA;;AChFF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;EAIA;EACA;;AAJA;EAHF;IAII;;;AAIF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGJ;EACE,kBClEE;EDmEF;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA,YC5HG;ED6HH;EACA;EACA;EACA;;AAEF;EACE,YClIW;EDmIX;EACA;;AAEF;EACE;;AAEF;EACE;EACA,OC5IG;ED6IH;;AACA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE,kBCtKK;EDuKL,cCvKK;;ADwKL;EACE;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAC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GF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AC3KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOA;AAAA;EACE;;AAKA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAKJ;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAGE;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;EACE;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;EACA;EACA;;;AAGF;EACE;EACA;;AAGE;EACE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;;AChJJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACJN;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AC1BJ;EACE;EACA;;;AA5BE;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAeJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;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;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EAC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AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AM1KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ONwKU;EMvKV;;AAEA;EACE;EACA;EACA;EACA,ONqKS;;AMlKX;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AC/BJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AClBF;EACE;EACA;EACA;EACA,ORkLW;EQjLX;EACA;EACA;EACA;;AAEA;EACE,kBRyKW;;AQtKb;EACE;EACA,ORmKG;EQlKH;;AHDF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AIlDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AClCJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,YVsKW;;AUlKf;EACE;;AClBF;ECAE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDRA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AEzER;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,OAhBmB;EAiBnB,kBAlBgB;EAmBhB;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAMJ;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;ACxFA;ETeA","file":"cove-main.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../styles/_reset.scss","../styles/_global-variables.scss","../styles/filters.scss","../styles/base.scss","../styles/_global.scss","../styles/_variables.scss","../styles/_button-section.scss","../styles/_series-list.scss","../styles/heading-colors.scss","../styles/v2/themes/_color-definitions.scss","../styles/v2/components/ui/tooltip.scss","../styles/v2/utils/_align.scss","../styles/v2/utils/_animations.scss","../styles/v2/utils/_grid.scss","../styles/v2/main.scss","../styles/v2/base/_general.scss","../styles/v2/base/_heading.scss","../styles/v2/base/_file-selector.scss","../styles/v2/layout/_alert.scss","../styles/v2/layout/_component.scss","../styles/v2/layout/_progression.scss","../styles/v2/utils/_mixins.scss","../styles/v2/layout/_tooltip.scss","../styles/v2/utils/_breakpoints.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAoEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAEE;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;;AAGF;AACE;EACA;;AAGF;AACE;AAAA;EAEA;;;AC9CF;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAON;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC7GA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AAKF;EACE;EACA;;AAIA;EACE;EACA;;AAGJ;EAEE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;;AAMF;EACE;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AC9FN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAWA;EACA;EACA;;AChFF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;EAIA;EACA;;AAJA;EAHF;IAII;;;AAIF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGJ;EACE,kBClEE;EDmEF;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA,YC5HG;ED6HH;EACA;EACA;EACA;;AAEF;EACE,YClIW;EDmIX;EACA;;AAEF;EACE;;AAEF;EACE;EACA,OC5IG;ED6IH;;AACA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE,kBCtKK;EDuKL,cCvKK;;ADwKL;EACE;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AEjMF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAKJ;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;;AAMF;EACE;EACA;;AAEF;EACE;;ACpCJ;EAEE;EACA;;AAIS;EACP,YAHO;;;AAMA;EACP,eAPO;;;AAUT;EACE;;AAEA;EACE;;AAIJ;EACE,aAnBO;EAoBP,cApBO;EAqBP;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA,cA3CO;EA4CP,aA5CO;EA6CP;EACA;;AAEA;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAIF;EACE;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;;AJfJ;EACE;;AA8EF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;;AKxOF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;AAEF;AAAA;EACE;EACA;;;ACuCA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AC3KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOA;AAAA;EACE;;AAKA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAKJ;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAGE;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;EACE;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;EACA;EACA;;;AAGF;EACE;EACA;;AAGE;EACE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;;AChJJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACJN;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AC1BJ;EACE;EACA;;;AA5BE;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAeJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF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;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EA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AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AM1KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ONwKU;EMvKV;;AAEA;EACE;EACA;EACA;EACA,ONqKS;;AMlKX;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AC/BJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AClBF;EACE;EACA;EACA;EACA,ORkLW;EQjLX;EACA;EACA;EACA;;AAEA;EACE,kBRyKW;;AQtKb;EACE;EACA,ORmKG;EQlKH;;AHDF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AIlDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AClCJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,YVsKW;;AUlKf;EACE;;AClBF;ECAE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDRA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AEzER;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,OAhBmB;EAiBnB,kBAlBgB;EAmBhB;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAMJ;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;ACxFA;ETeA","file":"cove-main.css"}
@@ -1,5 +1,3 @@
1
- import { VisualizationType } from './../../../../node_modules/@cdc/chart/src/types/ChartConfig'
2
- import { Visualization } from '@cdc/core/types/Visualization'
3
1
  import numberFromString from '@cdc/core/helpers/numberFromString'
4
2
 
5
3
  const abbreviateNumber = num => {
@@ -193,6 +191,12 @@ const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addCol
193
191
  result += bottomSuffix
194
192
  }
195
193
  }
194
+ if (config.visualizationType === 'Pie') {
195
+ // add default suffix
196
+ if (!suffix) {
197
+ result += '%'
198
+ }
199
+ }
196
200
  if (isNegative) {
197
201
  result = '-' + result
198
202
  }
@@ -16,6 +16,7 @@ import update_4_25_3 from './ver/4.25.3'
16
16
  import update_4_25_4 from './ver/4.25.4'
17
17
  import update_4_25_6 from './ver/4.25.6'
18
18
  import update_4_25_7 from './ver/4.25.7'
19
+ import update_4_25_8 from './ver/4.25.8'
19
20
 
20
21
  export const coveUpdateWorker = (config, multiDashboardVersion?) => {
21
22
  let genConfig = config
@@ -34,7 +35,8 @@ export const coveUpdateWorker = (config, multiDashboardVersion?) => {
34
35
  ['4.25.3', update_4_25_3],
35
36
  ['4.25.4', update_4_25_4],
36
37
  ['4.25.6', update_4_25_6],
37
- ['4.25.7', update_4_25_7]
38
+ ['4.25.7', update_4_25_7],
39
+ ['4.25.8', update_4_25_8]
38
40
  ]
39
41
 
40
42
  versions.forEach(([version, updateFunction, alwaysRun]: [string, UpdateFunction, boolean?]) => {
@@ -0,0 +1,32 @@
1
+
2
+ /**
3
+ * Subscribes a listener function to a custom event on the document.
4
+ * @param eventName - The name of the event to listen for.
5
+ * @param listener - The callback function to invoke when the event is triggered.
6
+ */
7
+ function subscribe(eventName: string, listener: EventListenerOrEventListenerObject): void {
8
+ document.addEventListener(eventName, listener)
9
+ }
10
+
11
+
12
+ /**
13
+ * Unsubscribes a listener function from a custom event on the document.
14
+ * @param eventName - The name of the event to stop listening for.
15
+ * @param listener - The callback function to remove.
16
+ */
17
+ function unsubscribe(eventName: string, listener: EventListenerOrEventListenerObject): void {
18
+ document.removeEventListener(eventName, listener)
19
+ }
20
+
21
+
22
+ /**
23
+ * Publishes (dispatches) a custom event with optional data payload on the document.
24
+ * @param eventName - The name of the event to dispatch.
25
+ * @param data - Optional data to include in the event's detail property.
26
+ */
27
+ function publish(eventName: string, data?: any): void {
28
+ const event = new CustomEvent(eventName, { detail: data })
29
+ document.dispatchEvent(event)
30
+ }
31
+
32
+ export { publish, subscribe, unsubscribe }
@@ -0,0 +1,52 @@
1
+ import { publish } from '../events'
2
+ import packageJson from '../../package.json'
3
+ import {
4
+ COVE_VISUALIZATION_TYPES,
5
+ ANALYTICS_EVENT_ACTIONS,
6
+ ANALYTICS_EVENT_TYPES
7
+ } from './types'
8
+ import { GetLabelForEvent } from './getLabelForEvent'
9
+
10
+ /**
11
+ * Retrieves the version of the package from its package.json file.
12
+ * @returns {string} The version of the package.
13
+ */
14
+ export const getPackageVersion = () => {
15
+ try {
16
+ return packageJson.version
17
+ } catch (e) {
18
+ console.error('Error loading package version:', e)
19
+ return 'unknown'
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Publishes an analytics event with the specified parameters.
25
+ * @param {ANALYTICS_EVENT_TYPES} eventType - The type of the event
26
+ * @param {ANALYTICS_EVENT_ACTIONS} [eventAction='unknown'] - The action associated with the event
27
+ * @param {ANALYTICS_EVENT_LABEL} [eventLabel='unknown'] - The label for the event
28
+ * @param {COVE_VISUALIZATION_TYPES} [visualizationType] - The type of visualization associated with the event
29
+ * @param {Object} [additionalDetails] - Additional details to include in the event
30
+ * @returns {void}
31
+ * @description This function is used to publish analytics events for various user interactions and system states.
32
+ */
33
+ export const publishAnalyticsEvent = <T extends ANALYTICS_EVENT_TYPES>(
34
+ eventType: T,
35
+ eventAction: ANALYTICS_EVENT_ACTIONS = 'unknown',
36
+ eventLabel: GetLabelForEvent<T>,
37
+ visualizationType?: COVE_VISUALIZATION_TYPES,
38
+ additionalDetails?: Object
39
+ ) => {
40
+ // Added check if we ever need to disable analytics
41
+ const ANALYTICS_POWERED_ON = true
42
+ if (!ANALYTICS_POWERED_ON) return
43
+
44
+ return publish('cove:analytics', {
45
+ eventType,
46
+ eventAction,
47
+ eventLabel,
48
+ component: visualizationType || 'unknown',
49
+ version: getPackageVersion() || 'unknown',
50
+ ...(additionalDetails || {})
51
+ })
52
+ }
@@ -0,0 +1,43 @@
1
+ export type COVE_VISUALIZATION_TYPES =
2
+ | 'map'
3
+ | 'chart'
4
+ | 'data-table'
5
+ | 'markup-include'
6
+ | 'waffle-chart'
7
+ | 'dashboard'
8
+ | 'filtered-text'
9
+ | 'table-filter'
10
+ | 'data-bite'
11
+ | 'unknown'
12
+
13
+ export type ANALYTICS_EVENT_ACTIONS =
14
+ | 'click'
15
+ | 'drag'
16
+ | 'toggle'
17
+ | 'none'
18
+ | 'keydown'
19
+ | 'load'
20
+ | 'submit'
21
+ | 'change'
22
+ | 'unknown'
23
+
24
+ export type LEGEND_TOGGLE_MODES = 'highlight' | 'isolate'
25
+
26
+ export type ANALYTICS_EVENT_TYPES =
27
+ | 'data_downloaded'
28
+ | 'data_table_toggled' // expand/collapse
29
+ | 'data_viewed'
30
+ | `${COVE_VISUALIZATION_TYPES}_filter_reset`
31
+ | `${COVE_VISUALIZATION_TYPES}_filter_applied`
32
+ | `${COVE_VISUALIZATION_TYPES}_filter_changed`
33
+ | `${COVE_VISUALIZATION_TYPES}_image_downloaded`
34
+ | `${COVE_VISUALIZATION_TYPES}_legend_item_toggled--${LEGEND_TOGGLE_MODES}-mode`
35
+ | `${COVE_VISUALIZATION_TYPES}_legend_reset`
36
+ | `${COVE_VISUALIZATION_TYPES}_loaded`
37
+ | `${COVE_VISUALIZATION_TYPES}_navigation_menu`
38
+ | `${COVE_VISUALIZATION_TYPES}_panned`
39
+ | `${COVE_VISUALIZATION_TYPES}_reset_zoom_level`
40
+ | `${COVE_VISUALIZATION_TYPES}_zoomed_in`
41
+ | `${COVE_VISUALIZATION_TYPES}_zoomed_out`
42
+ | `data_table_sort_by|${string}|${'asc' | 'desc' | 'undefined'}`
43
+ | 'link_to_data_table_click'
@@ -0,0 +1,61 @@
1
+ import _ from 'lodash'
2
+
3
+ export const updateAxisColors = config => {
4
+ if (config.type === 'chart') {
5
+ if (config.xAxis) {
6
+ ;['labelColor', 'tickLabelColor', 'tickColor'].forEach(k => {
7
+ if (config.xAxis[k] === '#333') {
8
+ config.xAxis[k] = '#1c1d1f'
9
+ }
10
+ })
11
+ }
12
+ if (config.yAxis) {
13
+ ;[
14
+ 'labelColor',
15
+ 'tickLabelColor',
16
+ 'tickColor',
17
+ 'rightAxisLabelColor',
18
+ 'rightAxisTickLabelColor',
19
+ 'rightAxisTickColor'
20
+ ].forEach(k => {
21
+ if (config.yAxis[k] === '#333') {
22
+ config.yAxis[k] = '#1c1d1f'
23
+ }
24
+ })
25
+ }
26
+ } else if (config.type === 'dashboard') {
27
+ Object.values(config.visualizations).forEach(visualization => {
28
+ updateAxisColors(visualization)
29
+ })
30
+ }
31
+ }
32
+
33
+ export const updateStatePickedToStatesPicked = config => {
34
+ if (config.type === 'map') {
35
+ if (config.general?.statePicked) {
36
+ config.general.statesPicked = [{ ...config.general.statePicked }]
37
+ delete config.general.statePicked
38
+ }
39
+ // Also migrate the property name for filter controls
40
+ if (config.general?.filterControlsStatePicked) {
41
+ config.general.filterControlsStatesPicked = config.general.filterControlsStatePicked
42
+ delete config.general.filterControlsStatePicked
43
+ }
44
+ }
45
+ if (config.type === 'dashboard') {
46
+ Object.values(config.visualizations).forEach(visualization => {
47
+ updateStatePickedToStatesPicked(visualization)
48
+ })
49
+ }
50
+ }
51
+
52
+ const update_4_25_8 = config => {
53
+ const ver = '4.25.8'
54
+ const newConfig = _.cloneDeep(config)
55
+ updateAxisColors(newConfig)
56
+ updateStatePickedToStatesPicked(newConfig)
57
+ newConfig.version = ver
58
+ return newConfig
59
+ }
60
+
61
+ export default update_4_25_8
@@ -0,0 +1,86 @@
1
+ import { updateStatePickedToStatesPicked } from '../4.25.8'
2
+ import { coveUpdateWorker } from '../../coveUpdateWorker'
3
+ import { expect, describe, it } from 'vitest'
4
+
5
+ describe('4.25.8 update worker', () => {
6
+ describe('updateStatePickedToStatesPicked', () => {
7
+ it('converts statePicked to statesPicked for map config', () => {
8
+ const mockConfig = {
9
+ type: 'map',
10
+ general: {
11
+ statePicked: { fipsCode: '12', stateName: 'Florida' }
12
+ }
13
+ } as any
14
+
15
+ updateStatePickedToStatesPicked(mockConfig)
16
+
17
+ expect(mockConfig.general.statePicked).toBeUndefined()
18
+ expect(mockConfig.general.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
19
+ })
20
+
21
+ it('converts filterControlsStatePicked to filterControlsStatesPicked for map config', () => {
22
+ const mockConfig = {
23
+ type: 'map',
24
+ general: {
25
+ filterControlsStatePicked: 'State',
26
+ statePicked: { fipsCode: '12', stateName: 'Florida' }
27
+ }
28
+ } as any
29
+
30
+ updateStatePickedToStatesPicked(mockConfig)
31
+
32
+ expect(mockConfig.general.filterControlsStatePicked).toBeUndefined()
33
+ expect(mockConfig.general.filterControlsStatesPicked).toBe('State')
34
+ expect(mockConfig.general.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
35
+ })
36
+
37
+ it('handles dashboard with map visualizations', () => {
38
+ const mockConfig = {
39
+ type: 'dashboard',
40
+ visualizations: {
41
+ map1: {
42
+ type: 'map',
43
+ general: {
44
+ filterControlsStatePicked: 'State',
45
+ statePicked: { fipsCode: '01', stateName: 'Alabama' }
46
+ }
47
+ }
48
+ }
49
+ } as any
50
+
51
+ updateStatePickedToStatesPicked(mockConfig)
52
+
53
+ const mapViz = mockConfig.visualizations.map1.general
54
+ expect(mapViz.filterControlsStatePicked).toBeUndefined()
55
+ expect(mapViz.filterControlsStatesPicked).toBe('State')
56
+ expect(mapViz.statePicked).toBeUndefined()
57
+ expect(mapViz.statesPicked).toEqual([{ fipsCode: '01', stateName: 'Alabama' }])
58
+ })
59
+
60
+ it('works with full update worker integration', () => {
61
+ const mockConfig = {
62
+ type: 'dashboard',
63
+ version: '4.24.9',
64
+ rows: [], // Add missing rows property
65
+ visualizations: {
66
+ map1: {
67
+ type: 'map',
68
+ general: {
69
+ filterControlsStatePicked: 'State',
70
+ statePicked: { fipsCode: '12', stateName: 'Florida' }
71
+ }
72
+ }
73
+ }
74
+ } as any
75
+
76
+ const updatedConfig = coveUpdateWorker(mockConfig)
77
+
78
+ expect(updatedConfig.version).toBe('4.25.8')
79
+ const mapViz = updatedConfig.visualizations.map1.general
80
+ expect(mapViz.filterControlsStatePicked).toBeUndefined()
81
+ expect(mapViz.filterControlsStatesPicked).toBe('State')
82
+ expect(mapViz.statePicked).toBeUndefined()
83
+ expect(mapViz.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
84
+ })
85
+ })
86
+ })
@@ -12,3 +12,5 @@ export const isMobileHeightViewport = currentViewport => isBelowBreakpoint('sm',
12
12
  export const isMobileStateLabelViewport = currentViewport => isBelowBreakpoint('md', currentViewport)
13
13
 
14
14
  export const isMobileTerritoryViewport = currentViewport => isBelowBreakpoint('sm', currentViewport)
15
+
16
+ export const isMobileFontViewport = currentViewport => isBelowBreakpoint('sm', currentViewport)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdc/core",
3
- "version": "4.25.7",
3
+ "version": "4.25.8",
4
4
  "description": "Core components, styles, hooks, and helpers, for the CDC Open Visualization project",
5
5
  "moduleName": "CdcCore",
6
6
  "main": "dist/cdccore",
@@ -37,7 +37,7 @@
37
37
  "react": "^18.2.0",
38
38
  "react-dom": "^18.2.0"
39
39
  },
40
- "gitHead": "9062881d50c824ee6cdd71868bafd016a5e5694d",
40
+ "gitHead": "e369994230b5e3facff224e1d89d5937528ac5a0",
41
41
  "devDependencies": {
42
42
  "sass": "^1.79.4"
43
43
  }
@@ -14,9 +14,7 @@
14
14
 
15
15
  // links that appear above data tables
16
16
  .download-links {
17
- display: flex;
18
17
  justify-content: flex-end;
19
- width: 100%;
20
18
  line-height: 1;
21
19
  &.brush-active {
22
20
  margin-top: 2em;
@@ -6,7 +6,6 @@ export type ForecastingSeriesKey = {
6
6
  confidenceIntervals: {
7
7
  high: string
8
8
  low: string
9
- showInTooltip: boolean
10
9
  }[]
11
10
  stageColumn: string
12
11
  stages: {
package/types/Series.ts CHANGED
@@ -5,4 +5,8 @@ export type Series = {
5
5
  type: string
6
6
  tooltip: boolean
7
7
  dynamicCategory?: string
8
+ confidenceIntervals?: {
9
+ high: string
10
+ low: string
11
+ }[]
8
12
  }[]
package/types/Table.ts CHANGED
@@ -23,6 +23,7 @@ export type Table = {
23
23
  pivot?: Pivot
24
24
  show?: boolean
25
25
  sharedFilterColumns?: string[] // added at runtime by Dashboard
26
+ showBottomCollapse?: boolean // if true, the table will have a button to collapse at bottom of the expanded table
26
27
  showDataTableLink?: boolean
27
28
  showDownloadImgButton?: boolean
28
29
  showDownloadLinkBelow?: boolean
package/helpers/events.js DELETED
@@ -1,14 +0,0 @@
1
- function subscribe(eventName, listener) {
2
- document.addEventListener(eventName, listener)
3
- }
4
-
5
- function unsubscribe(eventName, listener) {
6
- document.removeEventListener(eventName, listener)
7
- }
8
-
9
- function publish(eventName, data) {
10
- const event = new CustomEvent(eventName, { detail: data })
11
- document.dispatchEvent(event)
12
- }
13
-
14
- export { publish, subscribe, unsubscribe }