@cdc/chart 4.26.1 → 4.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/CLAUDE.local.md +79 -0
  2. package/LICENSE +201 -0
  3. package/dist/{cdcchart-dgT_1dIT.es.js → cdcchart-DQ00cQCm.es.js} +1 -20
  4. package/dist/cdcchart.js +54742 -49796
  5. package/examples/data/data-with-metadata.json +10 -0
  6. package/examples/default.json +378 -0
  7. package/examples/feature/__data__/horizon-chart-data.json +373 -0
  8. package/examples/feature/annotations/index.json +3 -6
  9. package/examples/feature/horizon/horizon-chart.json +395 -0
  10. package/examples/feature/pie/planet-pie-example-config.json +2 -1
  11. package/examples/line-chart-states.json +1085 -0
  12. package/examples/metadata-variables.json +58 -0
  13. package/examples/private/123.json +694 -0
  14. package/examples/private/anchor-issue.json +4094 -0
  15. package/examples/private/backwards-slider.json +10430 -0
  16. package/examples/private/georgia.csv +160 -0
  17. package/examples/private/timeline-data.json +1 -0
  18. package/examples/private/timeline.json +389 -0
  19. package/examples/radar-chart-simple.json +133 -0
  20. package/examples/radar-chart.json +148 -0
  21. package/index.html +1 -31
  22. package/package.json +57 -59
  23. package/src/CdcChart.tsx +8 -4
  24. package/src/CdcChartComponent.tsx +398 -284
  25. package/src/_stories/Chart.Anchors.stories.tsx +10 -0
  26. package/src/_stories/Chart.BoxPlot.stories.tsx +7 -0
  27. package/src/_stories/Chart.CI.stories.tsx +13 -0
  28. package/src/_stories/Chart.Combo.stories.tsx +17 -0
  29. package/src/_stories/Chart.CustomColors.stories.tsx +78 -0
  30. package/src/_stories/Chart.Defaults.stories.tsx +95 -0
  31. package/src/_stories/Chart.DynamicSeries.stories.tsx +19 -0
  32. package/src/_stories/Chart.Filters.stories.tsx +4 -0
  33. package/src/_stories/Chart.Forecast.stories.tsx +4 -0
  34. package/src/_stories/Chart.HTMLInDataTable.stories.tsx +22 -0
  35. package/src/_stories/Chart.Legend.Gradient.stories.tsx +28 -0
  36. package/src/_stories/Chart.Patterns.stories.tsx +4 -0
  37. package/src/_stories/Chart.PreserveDecimals.stories.tsx +25 -0
  38. package/src/_stories/Chart.Regions.Categorical.stories.tsx +13 -0
  39. package/src/_stories/Chart.Regions.DateScale.stories.tsx +19 -0
  40. package/src/_stories/Chart.Regions.DateTimeScale.stories.tsx +25 -10
  41. package/src/_stories/Chart.ScatterPlot.stories.tsx +4 -0
  42. package/src/_stories/Chart.SmallMultiples.stories.tsx +16 -0
  43. package/src/_stories/Chart.SmallestLeftAxisMax.stories.tsx +64 -0
  44. package/src/_stories/Chart.stories.tsx +72 -1
  45. package/src/_stories/Chart.tooltip.stories.tsx +7 -0
  46. package/src/_stories/ChartAnnotation.stories.tsx +10 -0
  47. package/src/_stories/ChartAxisLabels.stories.tsx +4 -0
  48. package/src/_stories/ChartAxisTitles.stories.tsx +10 -0
  49. package/src/_stories/ChartBar.Editor.stories.tsx +97 -38
  50. package/src/_stories/ChartBrush.Editor.stories.tsx +11 -25
  51. package/src/_stories/ChartBrush.Matrix.Continuous.stories.tsx +41 -0
  52. package/src/_stories/ChartBrush.Matrix.Date.stories.tsx +114 -0
  53. package/src/_stories/ChartBrush.Matrix.DateTime.stories.tsx +78 -0
  54. package/src/_stories/ChartBrush.stories.tsx +7 -0
  55. package/src/_stories/ChartEditor.Editor.stories.tsx +1 -1
  56. package/src/_stories/ChartEditor.stories.tsx +7 -0
  57. package/src/_stories/ChartLine.QuadrantAngles.stories.tsx +89 -0
  58. package/src/_stories/ChartLine.Suppression.stories.tsx +7 -0
  59. package/src/_stories/ChartLine.Symbols.stories.tsx +4 -0
  60. package/src/_stories/ChartPrefixSuffix.stories.tsx +46 -1
  61. package/src/_stories/TechAdoptionWithLinks.stories.tsx +7 -0
  62. package/src/_stories/_mock/brush_continuous.json +86 -0
  63. package/src/_stories/_mock/brush_date_large.json +176 -0
  64. package/src/_stories/_mock/line_chart_angle_near_zero_fall.json +195 -0
  65. package/src/_stories/_mock/line_chart_angle_near_zero_rise.json +195 -0
  66. package/src/_stories/_mock/line_chart_angle_q1_steep_upward.json +195 -0
  67. package/src/_stories/_mock/line_chart_angle_q2_gentle_downward.json +195 -0
  68. package/src/_stories/_mock/line_chart_angle_q3_steep_downward.json +195 -0
  69. package/src/_stories/_mock/line_chart_angle_q4_gentle_upward.json +195 -0
  70. package/src/_stories/_mock/line_chart_quadrant_angles.json +264 -0
  71. package/src/_stories/_mock/paired-bar-abbr.json +421 -0
  72. package/src/_stories/_mock/pie_custom_colors.json +268 -0
  73. package/src/_stories/_mock/smallest_left_axis_max.json +104 -0
  74. package/src/components/Annotations/components/AnnotationDraggable.styles.css +14 -20
  75. package/src/components/Annotations/components/AnnotationDraggable.tsx +240 -116
  76. package/src/components/Annotations/components/AnnotationDropdown.styles.css +1 -2
  77. package/src/components/Annotations/components/AnnotationDropdown.tsx +8 -12
  78. package/src/components/Annotations/components/AnnotationList.styles.css +12 -18
  79. package/src/components/Annotations/components/AnnotationList.tsx +5 -4
  80. package/src/components/Annotations/components/findNearestDatum.ts +75 -85
  81. package/src/components/Annotations/helpers/getVisibleAnnotations.ts +38 -0
  82. package/src/components/Axis/BottomAxis.tsx +277 -0
  83. package/src/components/Axis/LeftAxis.tsx +404 -0
  84. package/src/components/Axis/LeftAxisGridlines.tsx +77 -0
  85. package/src/components/Axis/PairedBarAxis.tsx +192 -0
  86. package/src/components/Axis/README.md +94 -0
  87. package/src/components/Axis/RightAxis.tsx +108 -0
  88. package/src/components/Axis/axis.constants.ts +21 -0
  89. package/src/components/Axis/index.ts +7 -0
  90. package/src/components/BarChart/components/BarChart.Horizontal.tsx +12 -28
  91. package/src/components/BarChart/components/BarChart.StackedHorizontal.tsx +12 -30
  92. package/src/components/BarChart/components/BarChart.StackedVertical.tsx +12 -31
  93. package/src/components/BarChart/components/BarChart.Vertical.tsx +12 -28
  94. package/src/components/BarChart/components/BarChart.tsx +7 -1
  95. package/src/components/BarChart/helpers/getPatternUrl.ts +94 -0
  96. package/src/components/BarChart/helpers/tests/getPatternUrl.test.ts +134 -0
  97. package/src/components/BarChart/helpers/useBarChart.ts +3 -0
  98. package/src/components/Brush/BrushSelector.tsx +155 -22
  99. package/src/components/Brush/MiniChartPreview.tsx +133 -21
  100. package/src/components/EditorPanel/EditorPanel.tsx +81 -54
  101. package/src/components/EditorPanel/components/Panels/Panel.Annotate.tsx +67 -29
  102. package/src/components/EditorPanel/components/Panels/Panel.ForestPlotSettings.tsx +0 -78
  103. package/src/components/EditorPanel/components/Panels/Panel.General.tsx +120 -2
  104. package/src/components/EditorPanel/components/Panels/Panel.PatternSettings.tsx +25 -43
  105. package/src/components/EditorPanel/components/Panels/Panel.Radar.tsx +353 -0
  106. package/src/components/EditorPanel/components/Panels/Panel.Series.tsx +83 -3
  107. package/src/components/EditorPanel/components/Panels/Panel.Visual.tsx +66 -43
  108. package/src/components/EditorPanel/components/Panels/index.tsx +2 -0
  109. package/src/components/EditorPanel/editor-panel.scss +1 -1
  110. package/src/components/EditorPanel/useEditorPermissions.ts +55 -26
  111. package/src/components/ForestPlot/ForestPlot.tsx +26 -22
  112. package/src/components/HorizonChart/HorizonChart.tsx +131 -0
  113. package/src/components/HorizonChart/components/HorizonBand.tsx +160 -0
  114. package/src/components/HorizonChart/helpers/calculateHorizonBands.ts +27 -0
  115. package/src/components/HorizonChart/helpers/getHorizonLayerColors.ts +40 -0
  116. package/src/components/HorizonChart/index.tsx +3 -0
  117. package/src/components/Legend/Legend.Component.tsx +52 -4
  118. package/src/components/Legend/Legend.tsx +1 -1
  119. package/src/components/Legend/LegendGroup/LegendGroup.styles.css +4 -4
  120. package/src/components/Legend/LegendValueRange.tsx +77 -0
  121. package/src/components/Legend/helpers/createFormatLabels.tsx +16 -2
  122. package/src/components/Legend/helpers/generateValueRanges.ts +92 -0
  123. package/src/components/LineChart/helpers/README.md +292 -0
  124. package/src/components/LineChart/helpers/labelPositioning.test.ts +245 -0
  125. package/src/components/LineChart/helpers/labelPositioning.ts +304 -0
  126. package/src/components/LineChart/index.tsx +44 -8
  127. package/src/components/LinearChart/README.md +109 -0
  128. package/src/components/LinearChart/VisualizationRenderer.tsx +267 -0
  129. package/src/components/LinearChart/linearChart.constants.ts +84 -0
  130. package/src/components/LinearChart/tests/LinearChart.test.tsx +278 -0
  131. package/src/components/LinearChart/tests/mockConfigContext.ts +131 -0
  132. package/src/components/LinearChart/utils/tickFormatting.ts +146 -0
  133. package/src/components/LinearChart.tsx +268 -1057
  134. package/src/components/PieChart/PieChart.tsx +20 -5
  135. package/src/components/RadarChart/RadarAxis.tsx +78 -0
  136. package/src/components/RadarChart/RadarChart.tsx +298 -0
  137. package/src/components/RadarChart/RadarGrid.tsx +64 -0
  138. package/src/components/RadarChart/RadarPolygon.tsx +91 -0
  139. package/src/components/RadarChart/helpers.ts +83 -0
  140. package/src/components/RadarChart/index.tsx +3 -0
  141. package/src/components/Regions/components/Regions.tsx +6 -6
  142. package/src/components/Sankey/components/Sankey.tsx +3 -3
  143. package/src/components/Sankey/sankey.scss +1 -1
  144. package/src/components/SmallMultiples/SmallMultiples.css +5 -5
  145. package/src/components/Sparkline/index.scss +4 -2
  146. package/src/components/WarmingStripes/WarmingStripes.tsx +95 -25
  147. package/src/components/WarmingStripes/WarmingStripesGradientLegend.css +8 -8
  148. package/src/data/initial-state.js +37 -15
  149. package/src/data/legacy-defaults.ts +18 -0
  150. package/src/helpers/abbreviateNumber.ts +24 -17
  151. package/src/helpers/getChartPatternId.ts +17 -0
  152. package/src/helpers/getExcludedData.ts +4 -0
  153. package/src/helpers/getMinMax.ts +16 -2
  154. package/src/helpers/handleChartAriaLabels.ts +19 -19
  155. package/src/helpers/handleLineType.ts +22 -18
  156. package/src/helpers/seriesColumnSettings.ts +114 -0
  157. package/src/helpers/tests/countNumOfTicks.test.ts +77 -0
  158. package/src/helpers/tests/seriesColumnSettings.test.ts +84 -0
  159. package/src/hooks/useProgrammaticTooltip.ts +23 -2
  160. package/src/hooks/useRightAxis.ts +14 -0
  161. package/src/hooks/useScales.ts +99 -56
  162. package/src/hooks/useTooltip.tsx +23 -3
  163. package/src/scss/main.scss +157 -79
  164. package/src/selectors/README.md +68 -0
  165. package/src/store/chart.reducer.ts +2 -0
  166. package/src/test/CdcChart.test.jsx +2 -2
  167. package/src/types/ChartConfig.ts +22 -0
  168. package/src/types/ChartContext.ts +1 -0
  169. package/src/types/Horizon.ts +64 -0
  170. package/tests/fixtures/chart-config-with-metadata.json +29 -0
  171. package/tests/fixtures/data-with-metadata.json +10 -0
  172. package/preview.html +0 -1616
  173. package/src/components/Annotations/components/helpers/index.tsx +0 -46
package/package.json CHANGED
@@ -1,84 +1,82 @@
1
1
  {
2
2
  "name": "@cdc/chart",
3
- "version": "4.26.1",
3
+ "version": "4.26.3",
4
4
  "description": "React component for visualizing tabular data in various types of charts",
5
- "moduleName": "CdcChart",
6
- "main": "dist/cdcchart",
7
- "type": "module",
8
- "scripts": {
9
- "start": "vite --open",
10
- "build": "vite build",
11
- "preview": "vite preview",
12
- "graph": "nx graph",
13
- "prepublishOnly": "lerna run --scope @cdc/chart build",
14
- "test": "vitest run --reporter verbose",
15
- "test-watch": "vitest watch --reporter verbose",
16
- "test-watch:ui": "vitest --ui"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/CDCgov/cdc-open-viz",
21
- "directory": "packages/chart"
22
- },
23
- "author": "Matthew Pallansch <mpallansch@adittech.com>",
24
- "bugs": {
25
- "url": "https://github.com/CDCgov/cdc-open-viz/issues"
26
- },
27
5
  "license": "Apache-2.0",
6
+ "author": "Matthew Pallansch <mpallansch@adittech.com>",
7
+ "bugs": "https://github.com/CDCgov/cdc-open-viz/issues",
28
8
  "dependencies": {
29
- "@cdc/core": "^4.26.1",
9
+ "@cdc/core": "^4.26.3",
30
10
  "@hello-pangea/dnd": "^16.2.0",
31
11
  "@react-spring/web": "^9.7.5",
32
12
  "@rollup/plugin-dsv": "^3.0.2",
33
- "@visx/annotation": "^3.3.0",
34
- "@visx/axis": "3.12.0",
13
+ "@visx/annotation": "^3.12.0",
14
+ "@visx/axis": "^3.12.0",
35
15
  "@visx/brush": "^3.12.0",
36
- "@visx/curve": "3.12.0",
16
+ "@visx/curve": "^3.12.0",
37
17
  "@visx/drag": "^3.12.0",
38
- "@visx/event": "3.12.0",
39
- "@visx/glyph": "3.12.0",
40
- "@visx/gradient": "3.12.0",
41
- "@visx/legend": "3.12.0",
42
- "@visx/marker": "3.12.0",
43
- "@visx/mock-data": "3.12.0",
44
- "@visx/pattern": "^3.0.0",
45
- "@visx/responsive": "^2.10.0",
46
- "@visx/scale": "3.12.0",
47
- "@visx/shape": "3.12.0",
48
- "@visx/stats": "3.12.0",
49
- "@visx/text": "3.12.0",
50
- "@visx/tooltip": "3.12.0",
51
- "@vitejs/plugin-react": "^4.3.4",
52
- "chroma-js": "3.1.2",
53
- "d3-array": "3.2.4",
54
- "d3-format": "^3.1.0",
18
+ "@visx/event": "^3.12.0",
19
+ "@visx/glyph": "^3.12.0",
20
+ "@visx/gradient": "^3.12.0",
21
+ "@visx/legend": "^3.12.0",
22
+ "@visx/marker": "^3.12.0",
23
+ "@visx/mock-data": "^3.12.0",
24
+ "@visx/pattern": "^3.12.0",
25
+ "@visx/responsive": "^3.12.0",
26
+ "@visx/scale": "^3.12.0",
27
+ "@visx/shape": "^3.12.0",
28
+ "@visx/stats": "^3.12.0",
29
+ "@visx/text": "^3.12.0",
30
+ "@visx/tooltip": "^3.12.0",
31
+ "@vitejs/plugin-react": "^5.1.2",
32
+ "chroma-js": "^3.1.2",
33
+ "d3-array": "^3.2.4",
34
+ "d3-format": "^3.1.2",
55
35
  "d3-sankey": "^0.12.3",
56
- "d3-time-format": "4.1.0",
57
- "dompurify": "^3.1.5",
58
- "html-react-parser": "5.2.3",
36
+ "d3-time-format": "^4.1.0",
37
+ "dompurify": "^3.3.1",
38
+ "html-react-parser": "^5.2.3",
59
39
  "js-base64": "^2.5.2",
60
- "lodash": "^4.17.21",
61
- "papaparse": "5.5.2",
40
+ "lodash": "^4.17.23",
41
+ "papaparse": "^5.5.2",
62
42
  "react-accessible-accordion": "^5.0.1",
63
- "react-icons": "5.5.0",
43
+ "react-icons": "^5.5.0",
64
44
  "react-tooltip": "5.8.2-beta.3",
65
45
  "resize-observer-polyfill": "^1.5.1",
66
46
  "sass": "^1.89.2",
67
- "use-debounce": "^6.0.1",
68
- "vite": "^5.4.21",
47
+ "use-debounce": "^10.1.0",
48
+ "vite": "^7.3.1",
69
49
  "vite-plugin-css-injected-by-js": "^2.4.0",
70
50
  "vite-plugin-svgr": "^4.2.0",
71
- "whatwg-fetch": "3.6.20"
72
- },
73
- "peerDependencies": {
74
- "react": "^18.2.0",
75
- "react-dom": "^18.2.0"
51
+ "whatwg-fetch": "^3.6.20"
76
52
  },
77
- "gitHead": "7e3b27098c4eb7a24bc9c3654ad53f88d6419f16",
78
53
  "devDependencies": {
79
54
  "@types/d3-array": "^3.2.1",
80
55
  "@types/d3-format": "^3.0.4",
81
56
  "@types/d3-sankey": "^0.12.4",
82
57
  "@types/d3-time-format": "^4.0.3"
83
- }
58
+ },
59
+ "gitHead": "d50e45a074fbefa56cac904917e707d57f237737",
60
+ "main": "dist/cdcchart",
61
+ "moduleName": "CdcChart",
62
+ "peerDependencies": {
63
+ "react": "^18.2.0",
64
+ "react-dom": "^18.2.0"
65
+ },
66
+ "repository": {
67
+ "type": "git",
68
+ "url": "git+https://github.com/CDCgov/cdc-open-viz",
69
+ "directory": "packages/chart"
70
+ },
71
+ "scripts": {
72
+ "build": "vite build",
73
+ "graph": "nx graph",
74
+ "prepublishOnly": "lerna run --scope @cdc/chart build",
75
+ "preview": "vite preview",
76
+ "start": "vite --open",
77
+ "test": "vitest run --reporter verbose",
78
+ "test-watch": "vitest watch --reporter verbose",
79
+ "test-watch:ui": "vitest --ui"
80
+ },
81
+ "type": "module"
84
82
  }
package/src/CdcChart.tsx CHANGED
@@ -5,6 +5,7 @@ import { getFileExtension } from '@cdc/core/helpers/getFileExtension'
5
5
  import { isSolrCsv, isSolrJson } from '@cdc/core/helpers/isSolr'
6
6
  import { parseCsvWithQuotes } from '@cdc/core/helpers/parseCsvWithQuotes'
7
7
  import cacheBustingString from '@cdc/core/helpers/cacheBustingString'
8
+ import { extractDataAndMetadata } from '@cdc/core/helpers/extractDataAndMetadata'
8
9
  import Loading from '@cdc/core/components/Loading'
9
10
  import _ from 'lodash'
10
11
  import EditorContext from '@cdc/core/contexts/EditorContext'
@@ -60,11 +61,12 @@ const CdcChartWrapper: React.FC<CdcChartProps> = ({
60
61
 
61
62
  const finalUrl = `${dataUrl.origin}${dataUrl.pathname}${new URLSearchParams(qsParams)}`
62
63
  const ext = getFileExtension(finalUrl)
63
- const data = await fetchAndParseData(finalUrl, ext)
64
+ const { data, dataMetadata } = await fetchAndParseData(finalUrl, ext)
64
65
 
65
66
  setConfig(prev => ({
66
67
  ...prev,
67
68
  data: { ...data, urlFiltered: true },
69
+ dataMetadata,
68
70
  runtimeDataUrl: finalUrl,
69
71
  formattedData: { ...data, urlFiltered: true }
70
72
  }))
@@ -113,12 +115,14 @@ const fetchAndParseData = async (url: string, ext: string) => {
113
115
  const response = await fetch(url)
114
116
  if (ext === 'csv' || isSolrCsv(url)) {
115
117
  const responseText = await response.text()
116
- return parseCsv(responseText)
118
+ return { data: parseCsv(responseText), dataMetadata: {} }
117
119
  } else if (ext === 'json' || isSolrJson(url)) {
118
- return await response.json()
120
+ const json = await response.json()
121
+ return extractDataAndMetadata(json)
119
122
  }
120
123
  } catch (error) {
121
124
  console.error(`Error parsing URL: ${url}`, error)
122
- return []
125
+ return { data: [], dataMetadata: {} }
123
126
  }
127
+ return { data: [], dataMetadata: {} }
124
128
  }