@cdc/core 4.25.8 → 4.25.10

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 (117) hide show
  1. package/components/AdvancedEditor/AdvancedEditor.tsx +29 -8
  2. package/components/DataTable/DataTable.tsx +56 -38
  3. package/components/DataTable/components/ChartHeader.tsx +44 -14
  4. package/components/DataTable/components/ExpandCollapse.tsx +10 -1
  5. package/components/DataTable/components/MapHeader.tsx +24 -13
  6. package/components/DataTable/data-table.css +6 -0
  7. package/components/DataTable/helpers/chartCellMatrix.tsx +11 -8
  8. package/components/DataTable/helpers/mapCellMatrix.tsx +19 -1
  9. package/components/DownloadButton.tsx +40 -14
  10. package/components/EditorPanel/components/MarkupHighlightedTextField.tsx +227 -0
  11. package/components/EditorPanel/components/MarkupVariablesEditor.tsx +411 -0
  12. package/components/EditorPanel/components/PanelMarkup.tsx +59 -0
  13. package/components/ErrorBoundary.jsx +3 -1
  14. package/components/Filters/Filters.tsx +27 -20
  15. package/components/Filters/components/Tabs.tsx +1 -0
  16. package/components/Legend/Legend.Gradient.tsx +3 -6
  17. package/components/LegendShape.tsx +121 -3
  18. package/components/MediaControls.tsx +51 -3
  19. package/components/PaletteConversionModal.tsx +87 -0
  20. package/components/PaletteSelector/DeveloperPaletteRollback.tsx +114 -0
  21. package/components/PaletteSelector/PaletteSelector.css +51 -0
  22. package/components/PaletteSelector/PaletteSelector.tsx +112 -0
  23. package/components/PaletteSelector/index.ts +2 -0
  24. package/components/RichTooltip/RichTooltip.tsx +1 -0
  25. package/components/Table/Table.tsx +3 -1
  26. package/components/_stories/BlurStrokeTest.stories.tsx +1 -1
  27. package/components/_stories/DataTable.stories.tsx +1 -1
  28. package/components/_stories/Filters.stories.tsx +1 -1
  29. package/components/_stories/Footnotes.stories.tsx +1 -1
  30. package/components/_stories/Inputs.stories.tsx +1 -1
  31. package/components/_stories/MultiSelect.stories.tsx +3 -3
  32. package/components/_stories/NestedDropdown.stories.tsx +1 -1
  33. package/components/_stories/Table.stories.tsx +1 -1
  34. package/components/elements/_stories/Button.stories.tsx +1 -1
  35. package/components/elements/_stories/Card.stories.tsx +1 -1
  36. package/components/inputs/InputToggle.tsx +2 -0
  37. package/components/managers/DataDesigner.tsx +10 -9
  38. package/components/managers/_stories/DataDesigner.stories.tsx +1 -1
  39. package/components/ui/Tooltip.tsx +2 -1
  40. package/components/ui/_stories/Accordion.stories.tsx +1 -1
  41. package/components/ui/_stories/ColorPaletteMigration.stories.mdx +275 -0
  42. package/components/ui/_stories/Colors.stories.tsx +330 -0
  43. package/components/ui/_stories/IconGallery.stories.tsx +316 -0
  44. package/components/ui/_stories/Title.stories.tsx +1 -1
  45. package/contexts/EditorContext.ts +18 -0
  46. package/contexts/editor.actions.ts +28 -0
  47. package/contexts/editor.reducer.ts +94 -0
  48. package/data/chartColorPalettes.ts +118 -0
  49. package/data/colorPalettes.ts +9 -0
  50. package/data/mapColorPalettes.ts +45 -0
  51. package/data/sharedPalettes.ts +50 -0
  52. package/dist/cove-main.css +14 -11
  53. package/dist/cove-main.css.map +1 -1
  54. package/generateViteConfig.js +80 -0
  55. package/helpers/addValuesToFilters.ts +2 -3
  56. package/helpers/cloneConfig.ts +31 -0
  57. package/helpers/configDataHelpers.ts +128 -0
  58. package/helpers/configHelpers.ts +27 -0
  59. package/helpers/constants.ts +5 -2
  60. package/helpers/coveUpdateWorker.ts +13 -3
  61. package/helpers/filterColorPalettes.ts +152 -0
  62. package/helpers/generateColorsArray.ts +13 -0
  63. package/helpers/getColorPaletteVersion.ts +33 -0
  64. package/helpers/getPaletteAccessor.ts +18 -0
  65. package/helpers/markupProcessor.ts +205 -0
  66. package/helpers/metrics/helpers.ts +42 -19
  67. package/helpers/metrics/types.ts +48 -9
  68. package/helpers/metrics/utils.ts +34 -0
  69. package/helpers/palettes/colorDistributions.ts +56 -0
  70. package/helpers/palettes/migratePaletteName.ts +150 -0
  71. package/helpers/palettes/standardizePaletteNames.ts +77 -0
  72. package/helpers/palettes/utils.ts +267 -0
  73. package/helpers/queryStringUtils.ts +13 -0
  74. package/helpers/testing.ts +345 -0
  75. package/helpers/tests/addValuesToFilters.test.ts +1 -2
  76. package/helpers/tests/generateColorsArray.test.ts +24 -0
  77. package/helpers/tests/markupProcessor.test.ts +538 -0
  78. package/helpers/tests/testStandaloneBuild.ts +44 -0
  79. package/helpers/useMarkupVariables.ts +31 -0
  80. package/helpers/vegaConfig.ts +0 -1
  81. package/helpers/ver/4.24.10.ts +2 -1
  82. package/helpers/ver/4.24.11.ts +2 -1
  83. package/helpers/ver/4.24.3.ts +2 -1
  84. package/helpers/ver/4.24.4.ts +2 -1
  85. package/helpers/ver/4.24.5.ts +2 -1
  86. package/helpers/ver/4.24.7.ts +2 -1
  87. package/helpers/ver/4.24.9.ts +2 -1
  88. package/helpers/ver/4.25.1.ts +2 -1
  89. package/helpers/ver/4.25.10.ts +36 -0
  90. package/helpers/ver/4.25.3.ts +2 -1
  91. package/helpers/ver/4.25.4.ts +2 -1
  92. package/helpers/ver/4.25.6.ts +2 -1
  93. package/helpers/ver/4.25.7.ts +2 -1
  94. package/helpers/ver/4.25.8.ts +2 -1
  95. package/helpers/ver/4.25.9.ts +293 -0
  96. package/helpers/ver/tests/4.25.10.test.ts +204 -0
  97. package/helpers/ver/tests/4.25.8.test.ts +1 -1
  98. package/helpers/ver/tests/4.25.9.test.ts +51 -0
  99. package/hooks/useColorPalette.ts +79 -0
  100. package/package.json +12 -4
  101. package/styles/_global.scss +7 -5
  102. package/styles/base.scss +8 -5
  103. package/styles/v2/components/button.scss +4 -3
  104. package/styles/v2/components/editor.scss +2 -1
  105. package/styles/v2/layout/_data-table.scss +3 -2
  106. package/styles/v2/themes/_color-definitions.scss +18 -17
  107. package/testBuild.js +0 -0
  108. package/testing-setup.js +32 -0
  109. package/types/MarkupInclude.ts +6 -1
  110. package/types/MarkupVariable.ts +19 -0
  111. package/types/VizFilter.ts +1 -0
  112. package/vitest.config.ts +16 -0
  113. package/components/ui/_stories/Colors.stories.mdx +0 -220
  114. package/components/ui/_stories/IconGallery.stories.mdx +0 -14
  115. package/data/colorPalettes.js +0 -171
  116. package/helpers/formatConfigBeforeSave.ts +0 -135
  117. package/helpers/tests/formatConfigBeforeSave.test.ts +0 -68
@@ -3,7 +3,8 @@ import packageJson from '../../package.json'
3
3
  import {
4
4
  COVE_VISUALIZATION_TYPES,
5
5
  ANALYTICS_EVENT_ACTIONS,
6
- ANALYTICS_EVENT_TYPES
6
+ ANALYTICS_EVENT_TYPES,
7
+ EventSpecifics
7
8
  } from './types'
8
9
  import { GetLabelForEvent } from './getLabelForEvent'
9
10
 
@@ -22,31 +23,53 @@ export const getPackageVersion = () => {
22
23
 
23
24
  /**
24
25
  * 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
26
+ * Format: APP|VIZTYPE_VIZSUBTYPE|VIZ_TITLE|INTERACTION_EVENT_NAME|INTERACTION_TYPE|SPECIFICS
27
+ *
28
+ * @param {Object} params - The parameters for the analytics event
29
+ * @param {string} params.app - The application name (e.g., 'COVE')
30
+ * @param {COVE_VISUALIZATION_TYPES} params.vizType - The visualization type (e.g., 'map', 'chart')
31
+ * @param {string} [params.vizSubType] - The visualization subtype (e.g., 'county', 'state', 'bar', 'line')
32
+ * @param {string} [params.vizTitle] - The title of the visualization
33
+ * @param {ANALYTICS_EVENT_TYPES} params.eventType - The interaction event name
34
+ * @param {ANALYTICS_EVENT_ACTIONS} [params.eventAction='unknown'] - The interaction type (e.g., 'click', 'hover')
35
+ * @param {string} [params.eventLabel] - The event label (typically config URL or interaction label)
36
+ * @param {string} [params.specifics] - Additional specifics about the event (structured as "key: value, key2: value2")
37
+ * @param {string} [params.version] - The version of the package (defaults to package.json version)
30
38
  * @returns {void}
31
39
  * @description This function is used to publish analytics events for various user interactions and system states.
32
40
  */
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
- ) => {
41
+ export const publishAnalyticsEvent = <T extends ANALYTICS_EVENT_TYPES>({
42
+ app = 'cove',
43
+ vizType,
44
+ vizSubType,
45
+ vizTitle,
46
+ eventType,
47
+ eventAction = 'unknown',
48
+ eventLabel,
49
+ specifics,
50
+ version,
51
+ ...additionalDetails
52
+ }: {
53
+ app?: string
54
+ vizType: COVE_VISUALIZATION_TYPES
55
+ vizSubType?: string
56
+ vizTitle?: string
57
+ eventType: T
58
+ eventAction?: ANALYTICS_EVENT_ACTIONS
59
+ eventLabel?: GetLabelForEvent<T>
60
+ specifics?: T extends keyof EventSpecifics ? EventSpecifics[T] : string
61
+ version?: string
62
+ [key: string]: any
63
+ }) => {
40
64
  // Added check if we ever need to disable analytics
41
65
  const ANALYTICS_POWERED_ON = true
42
66
  if (!ANALYTICS_POWERED_ON) return
43
67
 
68
+ // Format: APP|VIZTYPE_VIZSUBTYPE|VIZ_TITLE|INTERACTION_EVENT_NAME|INTERACTION_TYPE|SPECIFICS
69
+ const vizTypeSubType = vizSubType ? `${vizType}_${vizSubType}` : vizType
70
+ const formattedEvent = `${app}|${vizTypeSubType}|${vizTitle || 'unknown'}|${eventType}|${eventAction}|${specifics || 'no details'}`
44
71
  return publish('cove:analytics', {
45
- eventType,
46
- eventAction,
47
- eventLabel,
48
- component: visualizationType || 'unknown',
49
- version: getPackageVersion() || 'unknown',
50
- ...(additionalDetails || {})
72
+ formattedEvent,
73
+ eventLabel
51
74
  })
52
75
  }
@@ -2,12 +2,14 @@ export type COVE_VISUALIZATION_TYPES =
2
2
  | 'map'
3
3
  | 'chart'
4
4
  | 'data-table'
5
+ | 'table'
5
6
  | 'markup-include'
6
7
  | 'waffle-chart'
7
8
  | 'dashboard'
8
9
  | 'filtered-text'
9
10
  | 'table-filter'
10
11
  | 'data-bite'
12
+ | 'navigation'
11
13
  | 'unknown'
12
14
 
13
15
  export type ANALYTICS_EVENT_ACTIONS =
@@ -16,28 +18,65 @@ export type ANALYTICS_EVENT_ACTIONS =
16
18
  | 'toggle'
17
19
  | 'none'
18
20
  | 'keydown'
21
+ | 'keyboard'
19
22
  | 'load'
20
23
  | 'submit'
21
24
  | 'change'
25
+ | 'hover'
22
26
  | 'unknown'
23
27
 
24
28
  export type LEGEND_TOGGLE_MODES = 'highlight' | 'isolate'
25
29
 
30
+ /**
31
+ * Type-safe specifics for different event types
32
+ * The specifics field should contain structured key-value pairs formatted as strings
33
+ * Format: "key1: value1, key2: value2"
34
+ */
35
+ export type EventSpecifics = {
36
+ // Map events
37
+ map_hover: `location: ${string}`
38
+ zoom_in: `zoom_level: ${number}` | `location: ${string}` | `zoom_level: ${number}, location: ${string}`
39
+ zoom_out: `zoom_level: ${number}` | `location: ${string}` | `zoom_level: ${number}, location: ${string}`
40
+
41
+ // Legend events
42
+ map_legend_item_toggled: `mode: ${LEGEND_TOGGLE_MODES}` | `mode: ${LEGEND_TOGGLE_MODES}, item: ${string}`
43
+ chart_legend_item_toggled: `mode: ${LEGEND_TOGGLE_MODES}` | `mode: ${LEGEND_TOGGLE_MODES}, item: ${string}`
44
+
45
+ // Table events
46
+ data_table_sort: `column: ${string}, order: ${'asc' | 'desc' | 'none'}`
47
+
48
+ // Filter events
49
+ dashboard_filter_changed: `key: ${string}, value: ${string}`
50
+
51
+ // Generic fallback for any event
52
+ [key: string]: string
53
+ }
54
+
26
55
  export type ANALYTICS_EVENT_TYPES =
56
+ // Data actions
27
57
  | 'data_downloaded'
28
- | 'data_table_toggled' // expand/collapse
58
+ | 'expand_collapse_toggled' // alternative name for data_table_toggled
59
+ | 'data_table_sort'
29
60
  | 'data_viewed'
61
+ | 'clicked_data_link_to_view'
62
+ | 'link_to_data_table_click'
63
+
64
+ // Filter events
30
65
  | `${COVE_VISUALIZATION_TYPES}_filter_reset`
31
66
  | `${COVE_VISUALIZATION_TYPES}_filter_applied`
32
67
  | `${COVE_VISUALIZATION_TYPES}_filter_changed`
33
- | `${COVE_VISUALIZATION_TYPES}_image_downloaded`
34
- | `${COVE_VISUALIZATION_TYPES}_legend_item_toggled--${LEGEND_TOGGLE_MODES}-mode`
68
+
69
+ // Legend events
70
+ | `${COVE_VISUALIZATION_TYPES}_legend_item_toggled` // simplified with specifics for mode
35
71
  | `${COVE_VISUALIZATION_TYPES}_legend_reset`
36
- | `${COVE_VISUALIZATION_TYPES}_loaded`
37
- | `${COVE_VISUALIZATION_TYPES}_navigation_menu`
72
+
73
+ // Map-specific events
74
+ | `${COVE_VISUALIZATION_TYPES}_hover` // simplified with specifics for location
38
75
  | `${COVE_VISUALIZATION_TYPES}_panned`
39
76
  | `${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'
77
+ | `zoom_in` // simplified with specifics for zoom level and location
78
+ | `zoom_out` // simplified with specifics for zoom level and location
79
+ | `${COVE_VISUALIZATION_TYPES}_navigation_menu`
80
+
81
+ // Image/export events
82
+ | 'image_download' // generic image download event
@@ -0,0 +1,34 @@
1
+ const getVizTitle = (config) => {
2
+ if (config?.type === 'dashboard') {
3
+ return String(config?.dashboard?.title).toLowerCase()
4
+ }
5
+ if (config?.title) {
6
+ return String(config.title).toLowerCase()
7
+ } else if (config?.general?.title) {
8
+ return String(config.general.title).toLowerCase()
9
+ } else {
10
+ return 'no title'
11
+ }
12
+ }
13
+
14
+ const getVizSubType = config => {
15
+ if (config?.type === 'markup-include') {
16
+ return `${config?.contentEditor?.title}`
17
+ }
18
+ if (config?.general?.geoType) {
19
+ return `${config.general.geoType}`
20
+ }
21
+
22
+ if (config?.type === 'chart' && config?.visualizationType) {
23
+ // Convert chart visualization type to format: chart_subtype
24
+ // e.g., "Bar" -> "chart_bar", "Line" -> "chart_line"
25
+ const subtype = String(config.visualizationType).toLowerCase().replace(/\s+/g, '_')
26
+ return `${subtype}`
27
+ }
28
+
29
+ if (config?.type === 'chart') {
30
+ return 'chart'
31
+ }
32
+ }
33
+
34
+ export { getVizTitle, getVizSubType }
@@ -0,0 +1,56 @@
1
+ // Chart color distributions for v2 9-color sequential palettes to improve contrast
2
+ // Similar to map distributions but optimized for chart legends
3
+ export const v2ColorDistribution = {
4
+ 1: [4], // Middle color for single item
5
+ 2: [0, 8], // First and middle
6
+ 3: [0, 4, 8], // First, middle, last
7
+ 4: [0, 2, 6, 8], // Evenly spaced
8
+ 5: [0, 2, 4, 6, 8], // Well-distributed
9
+ 6: [0, 1, 3, 5, 7, 8], // Good spacing
10
+ 7: [0, 1, 2, 4, 6, 7, 8], // Skip middle-adjacent
11
+ 8: [0, 1, 2, 3, 5, 6, 7, 8], // Skip one in middle
12
+ 9: [0, 1, 2, 3, 4, 5, 6, 7, 8] // Use all colors
13
+ }
14
+
15
+ // Enhanced color distributions for divergent palettes to maximize contrast
16
+ // Prioritizes endpoints and avoids the neutral middle region
17
+ export const divergentColorDistribution = {
18
+ 1: [4], // Neutral middle for single item
19
+ 2: [1, 7], // Strong contrast from each end
20
+ 3: [0, 4, 8], // Maximum endpoints plus neutral
21
+ 4: [0, 2, 6, 8], // Well-spaced with emphasis on extremes
22
+ 5: [0, 1, 4, 7, 8], // Skip adjacent to middle, emphasize ends
23
+ 6: [0, 1, 3, 5, 7, 8], // Avoid immediate middle area
24
+ 7: [0, 1, 2, 4, 6, 7, 8], // Skip one middle-adjacent
25
+ 8: [0, 1, 2, 3, 5, 6, 7, 8], // Skip one in middle
26
+ 9: [0, 1, 2, 3, 4, 5, 6, 7, 8] // Use all colors
27
+ }
28
+
29
+ // Color distribution optimized for colorblind-safe palette accessibility
30
+ // Maximizes perceptual differences for color vision deficiency
31
+ export const colorblindColorDistribution = {
32
+ 1: [0], // Start with strongest color
33
+ 2: [0, 4], // High contrast pair (orange, blue)
34
+ 3: [0, 2, 4], // Orange, green, blue - maximum differentiation
35
+ 4: [0, 1, 2, 4], // Add cyan for more separation
36
+ 5: [0, 1, 2, 4, 5], // Add dark blue for depth
37
+ 6: [0, 1, 2, 4, 5, 6], // Add pink for additional distinction
38
+ 7: [0, 1, 2, 4, 5, 6, 8], // Add brown, skip black temporarily
39
+ 8: [0, 1, 2, 4, 5, 6, 7, 8], // Add black for maximum contrast
40
+ 9: [0, 1, 2, 3, 4, 5, 6, 7, 8] // Use all colors
41
+ }
42
+
43
+ // Basic color distribution for map v1 compatibility
44
+ // Simple distribution pattern for any palette length up to 10 items
45
+ export const mapV1ColorDistribution = {
46
+ 1: [1],
47
+ 2: [1, 3],
48
+ 3: [1, 3, 5],
49
+ 4: [0, 2, 4, 6],
50
+ 5: [0, 2, 4, 6, 7],
51
+ 6: [0, 2, 3, 4, 5, 7],
52
+ 7: [0, 2, 3, 4, 5, 6, 7],
53
+ 8: [0, 2, 3, 4, 5, 6, 7, 8],
54
+ 9: [0, 1, 2, 3, 4, 5, 6, 7, 8],
55
+ 10: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
56
+ }
@@ -0,0 +1,150 @@
1
+ // Chart palette migration map
2
+ export const chartPaletteMigrationMap: Record<string, string> = {
3
+ yelloworangered: 'sequential_orange',
4
+ yelloworangebrown: 'sequential_orange',
5
+ orangered: 'sequential_orange',
6
+ yellowpurple: 'sequential_orange',
7
+ red: 'sequential_orange',
8
+ 'Sequential Orange': 'sequential_orange',
9
+ 'Sequential Orange Two': 'sequential_orange',
10
+ 'sequential-orange(MPX)': 'sequential_orange',
11
+ 'sequential-orange-(MPX)': 'sequential_orange',
12
+ pinkpurple: 'sequential_purple',
13
+ bluegreen: 'sequential_blue',
14
+ 'sequential-blue': 'sequential_blue',
15
+ 'sequential-blue-2-(MPX)': 'sequential_blue',
16
+ 'sequential-blue-2(MPX)': 'sequential_blue',
17
+ 'Sequential Blue': 'sequential_blue',
18
+ 'sequential Blue Two': 'sequential_blue',
19
+ 'sequential Blue Three': 'sequential_blue',
20
+ greenblue: 'sequential_green',
21
+ 'Sequential Green': 'sequential_green',
22
+ qualitative1: 'qualitative_standard',
23
+ qualitative2: 'qualitative_standard',
24
+ qualitative3: 'qualitative_standard',
25
+ qualitative4: 'qualitative_standard',
26
+ colorblindsafe: 'qualitative_standard',
27
+ 'qualitative-bold': 'qualitative_standard',
28
+ 'qualitative-soft': 'qualitative_standard',
29
+ // Reverse palette migrations
30
+ yelloworangeredreverse: 'sequential_orangereverse',
31
+ yelloworangebrownreverse: 'sequential_orangereverse',
32
+ orangeredreverse: 'sequential_orangereverse',
33
+ yellowpurplereverse: 'sequential_orangereverse',
34
+ redreverse: 'sequential_orangereverse',
35
+ 'Sequential Orangereverse': 'sequential_orangereverse',
36
+ 'Sequential Orange Tworeverse': 'sequential_orangereverse',
37
+ 'sequential-orange(MPX)reverse': 'sequential_orangereverse',
38
+ 'sequential-orange-(MPX)reverse': 'sequential_orangereverse',
39
+ pinkpurplereverse: 'sequential_purplereverse',
40
+ bluegreenreverse: 'sequential_bluereverse',
41
+ 'sequential-bluereverse': 'sequential_bluereverse',
42
+ 'sequential-blue-2-(MPX)reverse': 'sequential_bluereverse',
43
+ 'sequential-blue-2(MPX)reverse': 'sequential_bluereverse',
44
+ 'Sequential Bluereverse': 'sequential_bluereverse',
45
+ 'sequential Blue Tworeverse': 'sequential_bluereverse',
46
+ 'sequential Blue Threereverse': 'sequential_bluereverse',
47
+ greenbluereverse: 'sequential_greenreverse',
48
+ 'Sequential Greenreverse': 'sequential_greenreverse',
49
+ qualitative1reverse: 'qualitative_standardreverse',
50
+ qualitative2reverse: 'qualitative_standardreverse',
51
+ qualitative3reverse: 'qualitative_standardreverse',
52
+ qualitative4reverse: 'qualitative_standardreverse',
53
+ colorblindsafereverse: 'qualitative_standardreverse',
54
+ 'qualitative-boldreverse': 'qualitative_standardreverse',
55
+ 'qualitative-softreverse': 'qualitative_standardreverse'
56
+ }
57
+
58
+ // Map palette migration map
59
+ export const mapPaletteMigrationMap: Record<string, string> = {
60
+ sequential_yellow_orange_red: 'sequential_orange',
61
+ sequential_yellow_orange_brown: 'sequential_orange',
62
+ sequential_orange_red: 'sequential_orange',
63
+ sequential_orange_extended: 'sequential_orange',
64
+ sequential_pink_purple: 'sequential_purple',
65
+ divergent_yellow_purple: 'divergent_blue_purple',
66
+ sequential_blue_green: 'sequential_blue',
67
+ sequential_blue_extended: 'sequential_blue',
68
+ sequential_green_blue: 'sequential_teal',
69
+ sequential_red: 'sequential_orange',
70
+ qualitative_earth_tones: 'qualitative',
71
+ // Reverse palette migrations
72
+ sequential_yellow_orange_redreverse: 'sequential_orangereverse',
73
+ sequential_yellow_orange_brownreverse: 'sequential_orangereverse',
74
+ sequential_orange_redreverse: 'sequential_orangereverse',
75
+ sequential_orange_extendedreverse: 'sequential_orangereverse',
76
+ sequential_pink_purplereverse: 'sequential_purplereverse',
77
+ divergent_yellow_purplereverse: 'divergent_blue_purplereverse',
78
+ sequential_blue_greenreverse: 'sequential_bluereverse',
79
+ sequential_blue_extendedreverse: 'sequential_bluereverse',
80
+ sequential_green_bluereverse: 'sequential_tealreverse',
81
+ sequential_redreverse: 'sequential_orangereverse',
82
+ qualitative_earth_tonesreverse: 'qualitativereverse',
83
+ 'qualitative_bold': 'qualitative_standard',
84
+ 'qualitative_soft': 'qualitative_standard',
85
+ 'qualitative_boldreverse': 'qualitative_standardreverse',
86
+ 'qualitative_softreverse': 'qualitative_standardreverse',
87
+ 'qualitative1': 'qualitative_standard',
88
+ 'qualitative2': 'qualitative_standard',
89
+ 'qualitative3': 'qualitative_standard',
90
+ 'qualitative4': 'qualitative_standard',
91
+ 'colorblindsafe': 'qualitative_standard',
92
+ 'qualitative1reverse': 'qualitative_standardreverse',
93
+ 'qualitative2reverse': 'qualitative_standardreverse',
94
+ 'qualitative3reverse': 'qualitative_standardreverse',
95
+ 'qualitative4reverse': 'qualitative_standardreverse',
96
+ }
97
+
98
+ // Two-color palette migration map (v1 to v2)
99
+ export const twoColorPaletteMigrationMap: Record<string, string> = {
100
+ // Monochrome palettes → divergent_blue_purple
101
+ 'monochrome-1': 'divergent_blue_purple',
102
+ 'monochrome-2': 'divergent_blue_purple',
103
+ 'monochrome-3': 'divergent_blue_purple',
104
+ 'monochrome-4': 'divergent_blue_purple',
105
+
106
+ // Warm palettes → divergent_green_orange
107
+ 'monochrome-5': 'divergent_green_orange',
108
+ 'warm-1': 'divergent_green_orange',
109
+
110
+ // Cool palettes → divergent_blue_cyan
111
+ 'cool-1': 'divergent_blue_cyan',
112
+ 'cool-2': 'divergent_blue_cyan',
113
+ 'cool-3': 'divergent_blue_cyan',
114
+ 'cool-4': 'divergent_blue_cyan',
115
+ 'cool-5': 'divergent_blue_cyan',
116
+
117
+ // Complementary palettes → divergent_blue_orange
118
+ 'complementary-1': 'divergent_blue_orange',
119
+ 'complementary-2': 'divergent_blue_orange',
120
+ 'complementary-3': 'divergent_blue_orange',
121
+ 'complementary-4': 'divergent_blue_orange',
122
+ 'complementary-5': 'divergent_blue_orange',
123
+
124
+ // Reverse palette migrations
125
+ 'monochrome-1reverse': 'divergent_blue_purplereverse',
126
+ 'monochrome-2reverse': 'divergent_blue_purplereverse',
127
+ 'monochrome-3reverse': 'divergent_blue_purplereverse',
128
+ 'monochrome-4reverse': 'divergent_blue_purplereverse',
129
+ 'monochrome-5reverse': 'divergent_green_orangereverse',
130
+ 'warm-1reverse': 'divergent_green_orangereverse',
131
+ 'cool-1reverse': 'divergent_blue_cyanreverse',
132
+ 'cool-2reverse': 'divergent_blue_cyanreverse',
133
+ 'cool-3reverse': 'divergent_blue_cyanreverse',
134
+ 'cool-4reverse': 'divergent_blue_cyanreverse',
135
+ 'cool-5reverse': 'divergent_blue_cyanreverse',
136
+ 'complementary-1reverse': 'divergent_blue_orangereverse',
137
+ 'complementary-2reverse': 'divergent_blue_orangereverse',
138
+ 'complementary-3reverse': 'divergent_blue_orangereverse',
139
+ 'complementary-4reverse': 'divergent_blue_orangereverse',
140
+ 'complementary-5reverse': 'divergent_blue_orangereverse'
141
+ }
142
+
143
+ // Combined palette migration map for backward compatibility
144
+ export const paletteMigrationMap: Record<string, string> = {
145
+ ...chartPaletteMigrationMap,
146
+ ...mapPaletteMigrationMap,
147
+ ...twoColorPaletteMigrationMap
148
+ }
149
+
150
+
@@ -0,0 +1,77 @@
1
+ // Rename Palettes
2
+ export const newMapPaletteNames = {
3
+ 'yelloworangered': 'sequential_yellow_orange_red',
4
+ 'yelloworangebrown': 'sequential_yellow_orange_brown',
5
+ 'yelloworangebrownreverse': 'sequential_yellow_orange_brownreverse',
6
+ 'pinkpurple': 'sequential_pink_purple',
7
+ 'pinkpurplereverse': 'sequential_pink_purplereverse',
8
+ 'bluegreen': 'sequential_blue_green',
9
+ 'bluegreenreverse': 'sequential_blue_greenreverse',
10
+ 'orangered': 'sequential_orange_red',
11
+ 'orangeredreverse': 'sequential_orange_redreverse',
12
+ 'red': 'sequential_red',
13
+ 'redreverse': 'sequential_red_reverse',
14
+ 'greenblue': 'sequential_green_blue',
15
+ 'greenbluereverse': 'sequential_green_bluereverse',
16
+ 'yelloworangeredreverse': 'sequential_yellow_orange_redreverse',
17
+ 'yellowpurple': 'divergent_yellow_purple',
18
+ 'yellowpurplereverse': 'divergent_yellow_purplereverse',
19
+ 'qualitative1': 'qualitative1',
20
+ 'qualitative2': 'qualitative2',
21
+ 'qualitative3': 'qualitative3',
22
+ 'qualitative4': 'qualitative4',
23
+ 'qualitative9': 'qualitative9',
24
+ 'sequential-blue-2(MPX)': 'sequential_blue_extended',
25
+ 'sequential-blue-2(MPX)reverse': 'sequential_blue_extendedreverse',
26
+ 'sequential-orange(MPX)': 'sequential_orange_extended',
27
+ 'sequential-orange(MPX)reverse': 'sequential_orange_extendedreverse',
28
+ 'colorblindsafe': 'colorblindsafe',
29
+ 'qualitative1reverse': 'qualitative1reverse',
30
+ 'qualitative2reverse': 'qualitative2reverse',
31
+ 'qualitative3reverse': 'qualitative3reverse',
32
+ 'qualitative4reverse': 'qualitative4reverse',
33
+ 'qualitative9reverse': 'qualitative9reverse',
34
+ 'colorblindsafereverse': 'colorblindsafereverse',
35
+ }
36
+
37
+ export const newChartPaletteNames = {
38
+ 'qualitative-bold': 'qualitative_bold',
39
+ 'qualitative-soft': 'qualitative_soft',
40
+ 'qualitative-standard': 'qualitative_standard',
41
+ 'sequential-blue': 'sequential_blue',
42
+ 'sequential-blue-2-(MPX)': 'sequential_blue_extended',
43
+ 'sequential-orange': 'sequential_orange',
44
+ 'sequential-orange-(MPX)': 'sequential_orange_extended',
45
+ 'sequential-green': 'sequential_green',
46
+ 'sequential-purple': 'sequential_purple',
47
+ 'sequential-teal': 'sequential_teal',
48
+ 'divergent-bluecyan': 'divergent_blue_cyan',
49
+ 'divergent-bluepurple': 'divergent_blue_purple',
50
+ 'divergent-greenorange': 'divergent_green_orange',
51
+ 'divergent-blueorange': 'divergent_blue_orange',
52
+ 'qualitative1': 'qualitative1',
53
+ 'qualitative2': 'qualitative2',
54
+ 'qualitative3': 'qualitative3',
55
+ 'qualitative4': 'qualitative4',
56
+ 'colorblindsafe': 'colorblindsafe',
57
+ // Reverse variants
58
+ 'qualitative-boldreverse': 'qualitative_boldreverse',
59
+ 'qualitative-softreverse': 'qualitative_softreverse',
60
+ 'qualitative-standardreverse': 'qualitative_standardreverse',
61
+ 'sequential-bluereverse': 'sequential_bluereverse',
62
+ 'sequential-blue-2-(MPX)reverse': 'sequential_blue_extendedreverse',
63
+ 'sequential-orangereverse': 'sequential_orangereverse',
64
+ 'sequential-orange-(MPX)reverse': 'sequential_orange_extendedreverse',
65
+ 'sequential-greenreverse': 'sequential_greenreverse',
66
+ 'sequential-purplereverse': 'sequential_purplereverse',
67
+ 'sequential-tealreverse': 'sequential_tealreverse',
68
+ 'divergent-bluecyanreverse': 'divergent_blue_cyanreverse',
69
+ 'divergent-bluepurplereverse': 'divergent_blue_purplereverse',
70
+ 'divergent-greenorangereverse': 'divergent_green_orangereverse',
71
+ 'divergent-blueorangereverse': 'divergent_blue_orangereverse',
72
+ 'qualitative1reverse': 'qualitative1reverse',
73
+ 'qualitative2reverse': 'qualitative2reverse',
74
+ 'qualitative3reverse': 'qualitative3reverse',
75
+ 'qualitative4reverse': 'qualitative4reverse',
76
+ 'colorblindsafereverse': 'colorblindsafereverse'
77
+ }