@semcore/d3-chart 17.2.0-prerelease.7 → 17.3.0-prerelease.0

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 (128) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/cjs/Area.js +11 -11
  3. package/lib/cjs/Axis.js +16 -16
  4. package/lib/cjs/Bar.js +16 -16
  5. package/lib/cjs/Bubble.js +14 -14
  6. package/lib/cjs/CompactHorizontalBar.js +16 -16
  7. package/lib/cjs/Donut.js +9 -9
  8. package/lib/cjs/Dots.js +8 -8
  9. package/lib/cjs/HorizontalBar.js +16 -16
  10. package/lib/cjs/Hover.js +3 -3
  11. package/lib/cjs/Line.js +9 -9
  12. package/lib/cjs/Plot.js +2 -2
  13. package/lib/cjs/Radar.js +20 -20
  14. package/lib/cjs/Radar.js.map +1 -1
  15. package/lib/cjs/RadialTree.js +12 -12
  16. package/lib/cjs/Reference.js +12 -12
  17. package/lib/cjs/ScatterPlot.js +9 -9
  18. package/lib/cjs/Tooltip.js +9 -9
  19. package/lib/cjs/Venn.js +9 -9
  20. package/lib/cjs/a11y/PlotA11yModule.js +2 -2
  21. package/lib/cjs/a11y/PlotA11yView.js +2 -2
  22. package/lib/cjs/a11y/serialize.js +6 -1
  23. package/lib/cjs/a11y/serialize.js.map +1 -1
  24. package/lib/cjs/component/Chart/AbstractChart.js +85 -11
  25. package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
  26. package/lib/cjs/component/Chart/AbstractChart.type.js.map +1 -1
  27. package/lib/cjs/component/Chart/AreaChart.js +6 -2
  28. package/lib/cjs/component/Chart/AreaChart.js.map +1 -1
  29. package/lib/cjs/component/Chart/BarChart.js +8 -4
  30. package/lib/cjs/component/Chart/BarChart.js.map +1 -1
  31. package/lib/cjs/component/Chart/BubbleChart.js +6 -2
  32. package/lib/cjs/component/Chart/BubbleChart.js.map +1 -1
  33. package/lib/cjs/component/Chart/CigaretteChart.js +22 -12
  34. package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
  35. package/lib/cjs/component/Chart/CompactHorizontalBarChart.js +7 -3
  36. package/lib/cjs/component/Chart/CompactHorizontalBarChart.js.map +1 -1
  37. package/lib/cjs/component/Chart/HistogramChart.js +8 -4
  38. package/lib/cjs/component/Chart/HistogramChart.js.map +1 -1
  39. package/lib/cjs/component/Chart/LineChart.js +7 -3
  40. package/lib/cjs/component/Chart/LineChart.js.map +1 -1
  41. package/lib/cjs/component/Chart/ScatterPlotChart.js +6 -2
  42. package/lib/cjs/component/Chart/ScatterPlotChart.js.map +1 -1
  43. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  44. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  45. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  46. package/lib/cjs/style/abstract-chart.shadow.css +7 -0
  47. package/lib/es6/Area.js +11 -11
  48. package/lib/es6/Axis.js +16 -16
  49. package/lib/es6/Bar.js +16 -16
  50. package/lib/es6/Bubble.js +14 -14
  51. package/lib/es6/CompactHorizontalBar.js +16 -16
  52. package/lib/es6/Donut.js +9 -9
  53. package/lib/es6/Dots.js +8 -8
  54. package/lib/es6/HorizontalBar.js +16 -16
  55. package/lib/es6/Hover.js +3 -3
  56. package/lib/es6/Line.js +9 -9
  57. package/lib/es6/Plot.js +2 -2
  58. package/lib/es6/Radar.js +20 -20
  59. package/lib/es6/Radar.js.map +1 -1
  60. package/lib/es6/RadialTree.js +12 -12
  61. package/lib/es6/Reference.js +12 -12
  62. package/lib/es6/ScatterPlot.js +9 -9
  63. package/lib/es6/Tooltip.js +9 -9
  64. package/lib/es6/Venn.js +9 -9
  65. package/lib/es6/a11y/PlotA11yModule.js +2 -2
  66. package/lib/es6/a11y/PlotA11yView.js +2 -2
  67. package/lib/es6/a11y/serialize.js +6 -1
  68. package/lib/es6/a11y/serialize.js.map +1 -1
  69. package/lib/es6/component/Chart/AbstractChart.js +85 -11
  70. package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
  71. package/lib/es6/component/Chart/AbstractChart.type.js.map +1 -1
  72. package/lib/es6/component/Chart/AreaChart.js +6 -2
  73. package/lib/es6/component/Chart/AreaChart.js.map +1 -1
  74. package/lib/es6/component/Chart/BarChart.js +8 -4
  75. package/lib/es6/component/Chart/BarChart.js.map +1 -1
  76. package/lib/es6/component/Chart/BubbleChart.js +6 -2
  77. package/lib/es6/component/Chart/BubbleChart.js.map +1 -1
  78. package/lib/es6/component/Chart/CigaretteChart.js +22 -12
  79. package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
  80. package/lib/es6/component/Chart/CompactHorizontalBarChart.js +7 -3
  81. package/lib/es6/component/Chart/CompactHorizontalBarChart.js.map +1 -1
  82. package/lib/es6/component/Chart/HistogramChart.js +8 -4
  83. package/lib/es6/component/Chart/HistogramChart.js.map +1 -1
  84. package/lib/es6/component/Chart/LineChart.js +7 -3
  85. package/lib/es6/component/Chart/LineChart.js.map +1 -1
  86. package/lib/es6/component/Chart/ScatterPlotChart.js +6 -2
  87. package/lib/es6/component/Chart/ScatterPlotChart.js.map +1 -1
  88. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  89. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  90. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  91. package/lib/es6/style/abstract-chart.shadow.css +7 -0
  92. package/lib/esm/Area.mjs +12 -12
  93. package/lib/esm/Axis.mjs +17 -17
  94. package/lib/esm/Bar.mjs +17 -17
  95. package/lib/esm/Bubble.mjs +15 -15
  96. package/lib/esm/CompactHorizontalBar.mjs +17 -17
  97. package/lib/esm/Donut.mjs +10 -10
  98. package/lib/esm/Dots.mjs +9 -9
  99. package/lib/esm/HorizontalBar.mjs +17 -17
  100. package/lib/esm/Hover.mjs +4 -4
  101. package/lib/esm/Line.mjs +10 -10
  102. package/lib/esm/Plot.mjs +3 -3
  103. package/lib/esm/Radar.mjs +21 -21
  104. package/lib/esm/RadialTree.mjs +13 -13
  105. package/lib/esm/Reference.mjs +13 -13
  106. package/lib/esm/ScatterPlot.mjs +10 -10
  107. package/lib/esm/Tooltip.mjs +10 -10
  108. package/lib/esm/Venn.mjs +10 -10
  109. package/lib/esm/a11y/PlotA11yModule.mjs +3 -3
  110. package/lib/esm/a11y/PlotA11yView.mjs +3 -3
  111. package/lib/esm/a11y/serialize.mjs +6 -1
  112. package/lib/esm/component/Chart/AbstractChart.mjs +86 -12
  113. package/lib/esm/component/Chart/AreaChart.mjs +6 -2
  114. package/lib/esm/component/Chart/BarChart.mjs +8 -4
  115. package/lib/esm/component/Chart/BubbleChart.mjs +6 -2
  116. package/lib/esm/component/Chart/CigaretteChart.mjs +22 -12
  117. package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +7 -3
  118. package/lib/esm/component/Chart/HistogramChart.mjs +8 -4
  119. package/lib/esm/component/Chart/LineChart.mjs +7 -3
  120. package/lib/esm/component/Chart/ScatterPlotChart.mjs +6 -2
  121. package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +5 -5
  122. package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +18 -18
  123. package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +7 -7
  124. package/lib/esm/style/abstract-chart.shadow.css +7 -0
  125. package/lib/types/component/Chart/AbstractChart.d.ts +14 -0
  126. package/lib/types/component/Chart/AbstractChart.type.d.ts +11 -2
  127. package/package.json +16 -16
  128. package/vitest.config.mts +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","names":["_intl","require","formatLimitedSizeList","items","intl","maxFinalStringLength","includeEllipsis","limit","length","stringifyList","cutItems","slice","push","formatMessage","id","leftCount","formatList","formattedList","overflowRatio","Math","floor","maxIncreaseAttempts","i","newLimitFormattedList","isReactComponent","obj","displayName","guessNumberAsTimestampMinDate","Date","getTime","defaultValueFormatter","value","siblingsTimeMark","maxListSymbols","datesWithTime","formatNumber","abs","formatDate","dateStyle","timeStyle","Array","isArray","formattedValues","map","subValue","String","undefined","exports","formatValuesList","values","result","rawValue","label","serialize","insights","dataType","dataRange","dataTitle","entitiesCount","clustersLimit","valuesLimit","groupsLimit","titlesFormatter","valuesFormatter","locale","translations","availableLocales","getIntl","dataRangeSummary","range","from","to","trendsInsights","trendsByDataKey","insight","dataKey","entities","count","entitiesList","Object","entries","generalTrend","find","type","localTrends","filter","primaryTrend","secondaryTrends","summaryDataKey","mainSummary","trend","change","strength","secondarySummaries","general","locals","summary","clustersInsights","biggestClusters","maxSize","size","minSize","clusterInsight","labels","anonymous","relativeSize","x","center","xLabel","y","yLabel","valuesInsight","groupInsights","valueCounts","group","minValuesCount","min","maxValuesCount","max","groupsCount","valuesCount"],"sources":["../../../src/a11y/serialize.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { DataSummarizationConfig } from './hints';\nimport type { AnalyzedData, ClusterNode, ComparisonNode, GeneralTrendNode, TrendNode } from './insights';\nimport { getIntl, type Intl } from './intl';\n\nconst formatLimitedSizeList = (\n items: unknown[],\n intl: Intl,\n maxFinalStringLength = 100,\n includeEllipsis = true,\n) => {\n let limit = items.length;\n const stringifyList = () => {\n const cutItems = items.slice(0, limit);\n if (items.length > limit && includeEllipsis) {\n cutItems.push(intl.formatMessage({ id: 'ellipsis' }, { leftCount: limit - items.length }));\n }\n\n return intl.formatList(cutItems);\n };\n\n let formattedList = stringifyList();\n if (formattedList.length <= maxFinalStringLength) {\n return formattedList;\n }\n\n const overflowRatio = formattedList.length / maxFinalStringLength;\n limit = Math.floor(limit / overflowRatio);\n if (limit === 0) {\n limit = 1;\n return stringifyList();\n }\n\n formattedList = stringifyList();\n\n const maxIncreaseAttempts = 4;\n for (let i = 0; i < maxIncreaseAttempts; i++) {\n limit++;\n const newLimitFormattedList = stringifyList();\n\n if (newLimitFormattedList.length > maxFinalStringLength) {\n return formattedList;\n }\n\n formattedList = newLimitFormattedList;\n }\n\n return formattedList;\n};\n\nconst isReactComponent = (obj: any) =>\n typeof obj === 'object' && obj && 'displayName' in obj && typeof obj.displayName === 'string';\n\nconst guessNumberAsTimestampMinDate = new Date('1975').getTime();\n\nexport const defaultValueFormatter = (\n intl: Intl,\n value: unknown,\n {\n siblingsTimeMark,\n maxListSymbols,\n datesWithTime,\n }: {\n siblingsTimeMark?: unknown;\n maxListSymbols?: number;\n datesWithTime?: boolean;\n } = {},\n): string => {\n if (typeof value === 'number') {\n if (value >= guessNumberAsTimestampMinDate) {\n return defaultValueFormatter(intl, new Date(value), {\n siblingsTimeMark,\n maxListSymbols,\n datesWithTime,\n });\n }\n return intl.formatNumber(value);\n }\n if (value instanceof Date) {\n if (\n datesWithTime ||\n (siblingsTimeMark &&\n siblingsTimeMark instanceof Date &&\n Math.abs(value.getTime() - siblingsTimeMark.getTime()) < 1000 * 60 * 60 * 24 * 5)\n ) {\n return intl.formatDate(value, { dateStyle: 'medium', timeStyle: 'medium' });\n }\n return intl.formatDate(value, { dateStyle: 'medium' });\n }\n\n if (Array.isArray(value)) {\n const formattedValues = value.map((subValue) =>\n defaultValueFormatter(intl, subValue, { siblingsTimeMark, maxListSymbols, datesWithTime }),\n );\n\n return formatLimitedSizeList(formattedValues, intl, maxListSymbols);\n }\n\n if (isReactComponent(value)) {\n return String((value as React.FC).displayName);\n }\n\n if (value === undefined || value === null) {\n return intl.formatMessage({ id: 'data-not-available' });\n }\n\n return String(value);\n};\n\nconst formatValuesList = (\n values: { label: string; value: unknown }[],\n {\n intl,\n limit,\n datesWithTime,\n maxListSymbols,\n }: { intl: Intl; limit: number; datesWithTime?: boolean; maxListSymbols: number },\n) => {\n const result = values.slice(0, limit).map(({ value: rawValue, label }) => {\n if (rawValue === undefined) return label;\n\n const value = defaultValueFormatter(intl, rawValue, { datesWithTime, maxListSymbols });\n\n if (String(value) === String(label)) return value;\n\n return intl.formatMessage({ id: 'value-labeled' }, { label, value });\n });\n if (values.length > limit) {\n result.push(\n intl.formatMessage({ id: 'ellipsis' }, { leftCount: limit - values.values.length }),\n );\n }\n\n return intl.formatList(result);\n};\n\nexport const serialize = (\n { insights, dataType, dataRange, dataTitle, entitiesCount }: AnalyzedData,\n {\n datesWithTime,\n maxListSymbols,\n clustersLimit,\n valuesLimit,\n groupsLimit,\n titlesFormatter,\n valuesFormatter,\n }: DataSummarizationConfig,\n {\n locale,\n translations,\n availableLocales,\n }: {\n locale: string;\n translations?: { [messageId: string]: string };\n availableLocales?: { [localeId: string]: any };\n },\n): string | null => {\n if (insights.length === 0) return null;\n\n const intl = getIntl(locale, translations!, availableLocales!);\n\n const dataRangeSummary = intl.formatList(\n dataRange.map((range) => {\n const from =\n valuesFormatter?.(range.from, range.label) ??\n defaultValueFormatter(intl, range.from, {\n siblingsTimeMark: range.to,\n datesWithTime,\n maxListSymbols,\n });\n const to =\n valuesFormatter?.(range.to, range.label) ??\n defaultValueFormatter(intl, range.to, {\n siblingsTimeMark: range.from,\n datesWithTime,\n maxListSymbols,\n });\n\n return intl.formatMessage(\n { id: range.label ? 'additional-axe' : 'additional-axe-no-label' },\n { from, to, label: titlesFormatter?.(range.label) ?? range.label },\n );\n }),\n );\n\n if (dataType === 'time-series') {\n const trendsInsights = insights as (GeneralTrendNode | TrendNode)[];\n const trendsByDataKey: { [label: string]: (GeneralTrendNode | TrendNode)[] } = {};\n for (const insight of trendsInsights) {\n trendsByDataKey[insight.dataKey] = trendsByDataKey[insight.dataKey] ?? [];\n trendsByDataKey[insight.dataKey].push(insight);\n }\n\n const entities = intl.formatMessage(\n { id: 'entity-type-time-series' },\n { count: entitiesCount },\n );\n const entitiesList = Object.entries(trendsByDataKey).map(([dataKey, insights]) => {\n const generalTrend = insights.find((insight) => insight.type === 'general-trend');\n const localTrends = insights.filter((insight) => insight !== generalTrend);\n const primaryTrend = generalTrend ?? localTrends[0];\n const secondaryTrends: (TrendNode | GeneralTrendNode)[] = insights.filter(\n (insight) => insight !== primaryTrend,\n );\n const summaryDataKey = entitiesCount !== 1 ? primaryTrend.label ?? dataKey : '';\n const mainSummary: string = intl.formatMessage(\n { id: 'time-series-general-trend' },\n {\n dataKey: titlesFormatter?.(summaryDataKey) ?? summaryDataKey,\n trend: intl.formatMessage({ id: `trend-${primaryTrend.change.strength}` }),\n from:\n valuesFormatter?.(primaryTrend.change.from, dataKey) ??\n intl.formatNumber(primaryTrend.change.from),\n to:\n valuesFormatter?.(primaryTrend.change.to, dataKey) ??\n intl.formatNumber(primaryTrend.change.to),\n },\n );\n const secondarySummaries = secondaryTrends.map((trend) =>\n intl.formatMessage(\n { id: 'time-series-local-trend' },\n {\n trend: intl.formatMessage({ id: `trend-${trend.change.strength}` }),\n from:\n valuesFormatter?.(trend.from, trend.dataKey) ??\n defaultValueFormatter(intl, trend.from, {\n siblingsTimeMark: trend.to,\n datesWithTime,\n maxListSymbols,\n }),\n to:\n valuesFormatter?.(trend.to, trend.dataKey) ??\n defaultValueFormatter(intl, trend.to, {\n siblingsTimeMark: trend.from,\n datesWithTime,\n maxListSymbols,\n }),\n },\n ),\n );\n\n if (secondarySummaries.length === 0) {\n return mainSummary;\n }\n\n return intl.formatMessage(\n {\n id: 'time-series-detailed-trend',\n },\n {\n general: mainSummary,\n locals: formatLimitedSizeList(secondarySummaries, intl, 400, false),\n },\n );\n });\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n if (dataRangeSummary.length > 0) {\n return `${summary}\\n${dataRangeSummary}`;\n }\n\n return summary;\n } else if (dataType === 'points-cloud') {\n const clustersInsights = insights as ClusterNode[];\n const biggestClusters = clustersInsights.slice(0, clustersLimit);\n\n const maxSize = clustersInsights[0].size;\n const minSize = clustersInsights[clustersInsights.length - 1].size;\n const entities =\n maxSize === minSize\n ? intl.formatMessage(\n { id: 'entity-type-clusters-single-size' },\n { count: entitiesCount, size: maxSize },\n )\n : intl.formatMessage(\n { id: 'entity-type-clusters-multiple-size' },\n { count: entitiesCount, maxSize, minSize },\n );\n const entitiesList = biggestClusters.map((clusterInsight) => {\n const labels = formatLimitedSizeList(\n clusterInsight.labels.map((label) => titlesFormatter?.(label as string) ?? label),\n intl,\n maxListSymbols,\n );\n const anonymous =\n clusterInsight.labels.length === 0 || labels === String(clusterInsight.size);\n\n return intl.formatMessage(\n {\n id: anonymous ? 'entity-type-clusters-label-anonymous' : 'entity-type-clusters-label',\n },\n {\n relativeSize: intl.formatMessage({ id: `relative-size-${clusterInsight.relativeSize}` }),\n labels,\n size: clusterInsight.size,\n x:\n valuesFormatter?.(clusterInsight.center.x, clusterInsight.labels as any) ??\n intl.formatNumber(clusterInsight.center.x),\n xLabel: titlesFormatter?.(clusterInsight.center.xLabel) ?? clusterInsight.center.xLabel,\n y:\n valuesFormatter?.(clusterInsight.center.y, clusterInsight.labels as any) ??\n intl.formatNumber(clusterInsight.center.y),\n yLabel: titlesFormatter?.(clusterInsight.center.yLabel) ?? clusterInsight.center.yLabel,\n },\n );\n });\n if (insights.length > clustersLimit) {\n entitiesList.push(\n intl.formatMessage({ id: 'ellipsis' }, { leftCount: insights.length - clustersLimit }),\n );\n }\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n if (dataRangeSummary.length > 0) {\n return `${summary}\\n${dataRangeSummary}`;\n }\n\n return summary;\n } else if (dataType === 'values-set') {\n const [valuesInsight] = insights as [ComparisonNode];\n const entities = intl.formatMessage({ id: 'entity-type-values' }, { count: entitiesCount });\n const entitiesList = formatValuesList(valuesInsight.values, {\n intl,\n limit: valuesLimit,\n datesWithTime,\n maxListSymbols,\n });\n\n return intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: entitiesList, label: titlesFormatter?.(dataTitle!) ?? dataTitle },\n );\n } else if (dataType === 'grouped-values' || dataType === 'indexed-groups') {\n const groupInsights = insights as ComparisonNode[];\n const valueCounts = groupInsights.map((group) => group.values.length);\n const minValuesCount = Math.min(...valueCounts);\n const maxValuesCount = Math.max(...valueCounts);\n\n const entities =\n minValuesCount === maxValuesCount\n ? intl.formatMessage(\n { id: 'entity-type-grouped-values-single-size' },\n { groupsCount: groupInsights.length, valuesCount: valueCounts[0] },\n )\n : intl.formatMessage(\n { id: 'entity-type-grouped-values-multiple-size' },\n { groupsCount: groupInsights.length, minValuesCount, maxValuesCount },\n );\n const entitiesList = groupInsights.slice(0, groupsLimit).map(({ label, values }) => {\n const formattedValues = formatValuesList(values, {\n intl,\n limit: valuesLimit,\n datesWithTime,\n maxListSymbols,\n });\n return intl.formatMessage({ id: 'values-group' }, { label, values: formattedValues });\n });\n if (groupInsights.values.length > groupsLimit) {\n entitiesList.push(\n intl.formatMessage(\n { id: 'ellipsis' },\n { leftCount: groupInsights.values.length - groupsLimit },\n ),\n );\n }\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n return summary;\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"serialize.js","names":["_intl","require","formatLimitedSizeList","items","intl","maxFinalStringLength","includeEllipsis","limit","length","stringifyList","cutItems","slice","push","formatMessage","id","leftCount","formatList","formattedList","overflowRatio","Math","floor","maxIncreaseAttempts","i","newLimitFormattedList","isReactComponent","obj","displayName","guessNumberAsTimestampMinDate","Date","getTime","defaultValueFormatter","value","siblingsTimeMark","maxListSymbols","datesWithTime","formatNumber","abs","formatDate","dateStyle","timeStyle","Array","isArray","formattedValues","map","subValue","String","undefined","exports","formatValuesList","values","result","rawValue","label","serialize","insights","dataType","dataRange","dataTitle","entitiesCount","clustersLimit","valuesLimit","groupsLimit","titlesFormatter","valuesFormatter","locale","translations","availableLocales","getIntl","dataRangeSummary","range","from","to","trendsInsights","trendsByDataKey","insight","dataKey","entities","count","entitiesList","Object","entries","generalTrend","find","type","localTrends","filter","primaryTrend","secondaryTrends","summaryDataKey","mainSummary","trend","change","strength","secondarySummaries","general","locals","summary","clustersInsights","biggestClusters","maxSize","size","minSize","clusterInsight","labels","reduce","acc","anonymous","relativeSize","x","center","xLabel","y","yLabel","valuesInsight","groupInsights","valueCounts","group","minValuesCount","min","maxValuesCount","max","groupsCount","valuesCount"],"sources":["../../../src/a11y/serialize.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { DataSummarizationConfig } from './hints';\nimport type { AnalyzedData, ClusterNode, ComparisonNode, GeneralTrendNode, TrendNode } from './insights';\nimport { getIntl, type Intl } from './intl';\n\nconst formatLimitedSizeList = (\n items: string[],\n intl: Intl,\n maxFinalStringLength = 100,\n includeEllipsis = true,\n) => {\n let limit = items.length;\n const stringifyList = () => {\n const cutItems = items.slice(0, limit);\n if (items.length > limit && includeEllipsis) {\n cutItems.push(intl.formatMessage({ id: 'ellipsis' }, { leftCount: limit - items.length }));\n }\n\n return intl.formatList(cutItems);\n };\n\n let formattedList = stringifyList();\n if (formattedList.length <= maxFinalStringLength) {\n return formattedList;\n }\n\n const overflowRatio = formattedList.length / maxFinalStringLength;\n limit = Math.floor(limit / overflowRatio);\n if (limit === 0) {\n limit = 1;\n return stringifyList();\n }\n\n formattedList = stringifyList();\n\n const maxIncreaseAttempts = 4;\n for (let i = 0; i < maxIncreaseAttempts; i++) {\n limit++;\n const newLimitFormattedList = stringifyList();\n\n if (newLimitFormattedList.length > maxFinalStringLength) {\n return formattedList;\n }\n\n formattedList = newLimitFormattedList;\n }\n\n return formattedList;\n};\n\nconst isReactComponent = (obj: any) =>\n typeof obj === 'object' && obj && 'displayName' in obj && typeof obj.displayName === 'string';\n\nconst guessNumberAsTimestampMinDate = new Date('1975').getTime();\n\nexport const defaultValueFormatter = (\n intl: Intl,\n value: unknown,\n {\n siblingsTimeMark,\n maxListSymbols,\n datesWithTime,\n }: {\n siblingsTimeMark?: unknown;\n maxListSymbols?: number;\n datesWithTime?: boolean;\n } = {},\n): string => {\n if (typeof value === 'number') {\n if (value >= guessNumberAsTimestampMinDate) {\n return defaultValueFormatter(intl, new Date(value), {\n siblingsTimeMark,\n maxListSymbols,\n datesWithTime,\n });\n }\n return intl.formatNumber(value);\n }\n if (value instanceof Date) {\n if (\n datesWithTime ||\n (siblingsTimeMark &&\n siblingsTimeMark instanceof Date &&\n Math.abs(value.getTime() - siblingsTimeMark.getTime()) < 1000 * 60 * 60 * 24 * 5)\n ) {\n return intl.formatDate(value, { dateStyle: 'medium', timeStyle: 'medium' });\n }\n return intl.formatDate(value, { dateStyle: 'medium' });\n }\n\n if (Array.isArray(value)) {\n const formattedValues = value.map((subValue) =>\n defaultValueFormatter(intl, subValue, { siblingsTimeMark, maxListSymbols, datesWithTime }),\n );\n\n return formatLimitedSizeList(formattedValues, intl, maxListSymbols);\n }\n\n if (isReactComponent(value)) {\n return String((value as React.FC).displayName);\n }\n\n if (value === undefined || value === null) {\n return intl.formatMessage({ id: 'data-not-available' });\n }\n\n return String(value);\n};\n\nconst formatValuesList = (\n values: { label: string; value: unknown }[],\n {\n intl,\n limit,\n datesWithTime,\n maxListSymbols,\n }: { intl: Intl; limit: number; datesWithTime?: boolean; maxListSymbols: number },\n) => {\n const result = values.slice(0, limit).map(({ value: rawValue, label }) => {\n if (rawValue === undefined) return label;\n\n const value = defaultValueFormatter(intl, rawValue, { datesWithTime, maxListSymbols });\n\n if (String(value) === String(label)) return value;\n\n return intl.formatMessage({ id: 'value-labeled' }, { label, value });\n });\n if (values.length > limit) {\n result.push(\n intl.formatMessage({ id: 'ellipsis' }, { leftCount: limit - values.values.length }),\n );\n }\n\n return intl.formatList(result);\n};\n\nexport const serialize = (\n { insights, dataType, dataRange, dataTitle, entitiesCount }: AnalyzedData,\n {\n datesWithTime,\n maxListSymbols,\n clustersLimit,\n valuesLimit,\n groupsLimit,\n titlesFormatter,\n valuesFormatter,\n }: DataSummarizationConfig,\n {\n locale,\n translations,\n availableLocales,\n }: {\n locale: string;\n translations?: { [messageId: string]: string };\n availableLocales?: { [localeId: string]: any };\n },\n): string | null => {\n if (insights.length === 0) return null;\n\n const intl = getIntl(locale, translations!, availableLocales!);\n\n const dataRangeSummary = intl.formatList(\n dataRange.map((range) => {\n const from =\n valuesFormatter?.(range.from, range.label) ??\n defaultValueFormatter(intl, range.from, {\n siblingsTimeMark: range.to,\n datesWithTime,\n maxListSymbols,\n });\n const to =\n valuesFormatter?.(range.to, range.label) ??\n defaultValueFormatter(intl, range.to, {\n siblingsTimeMark: range.from,\n datesWithTime,\n maxListSymbols,\n });\n\n return intl.formatMessage(\n { id: range.label ? 'additional-axe' : 'additional-axe-no-label' },\n { from, to, label: titlesFormatter?.(range.label) ?? range.label },\n );\n }),\n );\n\n if (dataType === 'time-series') {\n const trendsInsights = insights as (GeneralTrendNode | TrendNode)[];\n const trendsByDataKey: { [label: string]: (GeneralTrendNode | TrendNode)[] } = {};\n for (const insight of trendsInsights) {\n trendsByDataKey[insight.dataKey] = trendsByDataKey[insight.dataKey] ?? [];\n trendsByDataKey[insight.dataKey].push(insight);\n }\n\n const entities = intl.formatMessage(\n { id: 'entity-type-time-series' },\n { count: entitiesCount },\n );\n const entitiesList = Object.entries(trendsByDataKey).map(([dataKey, insights]) => {\n const generalTrend = insights.find((insight) => insight.type === 'general-trend');\n const localTrends = insights.filter((insight) => insight !== generalTrend);\n const primaryTrend = generalTrend ?? localTrends[0];\n const secondaryTrends: (TrendNode | GeneralTrendNode)[] = insights.filter(\n (insight) => insight !== primaryTrend,\n );\n const summaryDataKey = entitiesCount !== 1 ? primaryTrend.label ?? dataKey : '';\n const mainSummary: string = intl.formatMessage(\n { id: 'time-series-general-trend' },\n {\n dataKey: titlesFormatter?.(summaryDataKey) ?? summaryDataKey,\n trend: intl.formatMessage({ id: `trend-${primaryTrend.change.strength}` }),\n from:\n valuesFormatter?.(primaryTrend.change.from, dataKey) ??\n intl.formatNumber(primaryTrend.change.from),\n to:\n valuesFormatter?.(primaryTrend.change.to, dataKey) ??\n intl.formatNumber(primaryTrend.change.to),\n },\n );\n const secondarySummaries = secondaryTrends.map((trend) =>\n intl.formatMessage(\n { id: 'time-series-local-trend' },\n {\n trend: intl.formatMessage({ id: `trend-${trend.change.strength}` }),\n from:\n valuesFormatter?.(trend.from, trend.dataKey) ??\n defaultValueFormatter(intl, trend.from, {\n siblingsTimeMark: trend.to,\n datesWithTime,\n maxListSymbols,\n }),\n to:\n valuesFormatter?.(trend.to, trend.dataKey) ??\n defaultValueFormatter(intl, trend.to, {\n siblingsTimeMark: trend.from,\n datesWithTime,\n maxListSymbols,\n }),\n },\n ),\n );\n\n if (secondarySummaries.length === 0) {\n return mainSummary;\n }\n\n return intl.formatMessage(\n {\n id: 'time-series-detailed-trend',\n },\n {\n general: mainSummary,\n locals: formatLimitedSizeList(secondarySummaries, intl, 400, false),\n },\n );\n });\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n if (dataRangeSummary.length > 0) {\n return `${summary}\\n${dataRangeSummary}`;\n }\n\n return summary;\n } else if (dataType === 'points-cloud') {\n const clustersInsights = insights as ClusterNode[];\n const biggestClusters = clustersInsights.slice(0, clustersLimit);\n\n const maxSize = clustersInsights[0].size;\n const minSize = clustersInsights[clustersInsights.length - 1].size;\n const entities =\n maxSize === minSize\n ? intl.formatMessage(\n { id: 'entity-type-clusters-single-size' },\n { count: entitiesCount, size: maxSize },\n )\n : intl.formatMessage(\n { id: 'entity-type-clusters-multiple-size' },\n { count: entitiesCount, maxSize, minSize },\n );\n const entitiesList = biggestClusters.map((clusterInsight) => {\n const labels = formatLimitedSizeList(\n clusterInsight.labels.reduce<string[]>((acc, label) => {\n if (typeof label === 'string') {\n acc.push(titlesFormatter?.(label) ?? label);\n }\n return acc;\n }, []),\n intl,\n maxListSymbols,\n );\n const anonymous =\n clusterInsight.labels.length === 0 || labels === String(clusterInsight.size);\n\n return intl.formatMessage(\n {\n id: anonymous ? 'entity-type-clusters-label-anonymous' : 'entity-type-clusters-label',\n },\n {\n relativeSize: intl.formatMessage({ id: `relative-size-${clusterInsight.relativeSize}` }),\n labels,\n size: clusterInsight.size,\n x:\n valuesFormatter?.(clusterInsight.center.x, clusterInsight.labels as any) ??\n intl.formatNumber(clusterInsight.center.x),\n xLabel: titlesFormatter?.(clusterInsight.center.xLabel) ?? clusterInsight.center.xLabel,\n y:\n valuesFormatter?.(clusterInsight.center.y, clusterInsight.labels as any) ??\n intl.formatNumber(clusterInsight.center.y),\n yLabel: titlesFormatter?.(clusterInsight.center.yLabel) ?? clusterInsight.center.yLabel,\n },\n );\n });\n if (insights.length > clustersLimit) {\n entitiesList.push(\n intl.formatMessage({ id: 'ellipsis' }, { leftCount: insights.length - clustersLimit }),\n );\n }\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n if (dataRangeSummary.length > 0) {\n return `${summary}\\n${dataRangeSummary}`;\n }\n\n return summary;\n } else if (dataType === 'values-set') {\n const [valuesInsight] = insights as [ComparisonNode];\n const entities = intl.formatMessage({ id: 'entity-type-values' }, { count: entitiesCount });\n const entitiesList = formatValuesList(valuesInsight.values, {\n intl,\n limit: valuesLimit,\n datesWithTime,\n maxListSymbols,\n });\n\n return intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: entitiesList, label: titlesFormatter?.(dataTitle!) ?? dataTitle },\n );\n } else if (dataType === 'grouped-values' || dataType === 'indexed-groups') {\n const groupInsights = insights as ComparisonNode[];\n const valueCounts = groupInsights.map((group) => group.values.length);\n const minValuesCount = Math.min(...valueCounts);\n const maxValuesCount = Math.max(...valueCounts);\n\n const entities =\n minValuesCount === maxValuesCount\n ? intl.formatMessage(\n { id: 'entity-type-grouped-values-single-size' },\n { groupsCount: groupInsights.length, valuesCount: valueCounts[0] },\n )\n : intl.formatMessage(\n { id: 'entity-type-grouped-values-multiple-size' },\n { groupsCount: groupInsights.length, minValuesCount, maxValuesCount },\n );\n const entitiesList = groupInsights.slice(0, groupsLimit).map(({ label, values }) => {\n const formattedValues = formatValuesList(values, {\n intl,\n limit: valuesLimit,\n datesWithTime,\n maxListSymbols,\n });\n return intl.formatMessage({ id: 'values-group' }, { label, values: formattedValues });\n });\n if (groupInsights.values.length > groupsLimit) {\n entitiesList.push(\n intl.formatMessage(\n { id: 'ellipsis' },\n { leftCount: groupInsights.values.length - groupsLimit },\n ),\n );\n }\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n {\n entities,\n entitiesList: intl.formatList(entitiesList),\n label: titlesFormatter?.(dataTitle!) ?? dataTitle,\n },\n );\n\n return summary;\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.NOT_A_VALUE = exports.AbstractChart = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _core = require("@semcore/core");
11
12
  var _baseComponents = require("@semcore/base-components");
12
13
  var _ariaProps = require("@semcore/core/lib/utils/ariaProps");
13
14
  var _assignProps3 = require("@semcore/core/lib/utils/assignProps");
15
+ var _canUseDOM = _interopRequireDefault(require("@semcore/core/lib/utils/canUseDOM"));
16
+ var _cssToIntDefault = _interopRequireDefault(require("@semcore/core/lib/utils/cssToIntDefault"));
17
+ var _rafTrottle = _interopRequireDefault(require("@semcore/core/lib/utils/rafTrottle"));
14
18
  var _typography = require("@semcore/typography");
15
19
  var _react = _interopRequireWildcard(require("react"));
16
20
  var _ = require("../..");
@@ -20,12 +24,13 @@ var _ChartLegend = _interopRequireWildcard(require("../ChartLegend"));
20
24
  // @ts-ignore
21
25
  // @ts-ignore
22
26
  /*!__reshadow-styles__:"../../style/abstract-chart.shadow.css"*/
23
- const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STooltipChildrenWrapper_1snkx_gg_{display:grid;grid-column-gap:var(--intergalactic-spacing-2x,8px);-moz-column-gap:var(--intergalactic-spacing-2x,8px);column-gap:var(--intergalactic-spacing-2x,8px)}.___STooltipChildrenWrapper_1snkx_gg_._columnsCount_2_1snkx_gg_{grid-template-columns:auto minmax(28px,max-content)}.___STooltipChildrenWrapper_1snkx_gg_._columnsCount_3_1snkx_gg_{grid-template-columns:auto minmax(28px,max-content) minmax(28px,max-content)}", /*__inner_css_end__*/"1snkx_gg_"),
27
+ const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SChart_giu6t_gg_{width:100%;height:100%;min-width:0;min-height:0}.___STooltipChildrenWrapper_giu6t_gg_{display:grid;grid-column-gap:var(--intergalactic-spacing-2x,8px);-moz-column-gap:var(--intergalactic-spacing-2x,8px);column-gap:var(--intergalactic-spacing-2x,8px)}.___STooltipChildrenWrapper_giu6t_gg_._columnsCount_2_giu6t_gg_{grid-template-columns:auto minmax(28px,max-content)}.___STooltipChildrenWrapper_giu6t_gg_._columnsCount_3_giu6t_gg_{grid-template-columns:auto minmax(28px,max-content) minmax(28px,max-content)}", /*__inner_css_end__*/"giu6t_gg_"),
24
28
  /*__reshadow_css_end__*/
25
29
  {
26
- "__STooltipChildrenWrapper": "___STooltipChildrenWrapper_1snkx_gg_",
27
- "_columnsCount_2": "_columnsCount_2_1snkx_gg_",
28
- "_columnsCount_3": "_columnsCount_3_1snkx_gg_"
30
+ "__SChart": "___SChart_giu6t_gg_",
31
+ "__STooltipChildrenWrapper": "___STooltipChildrenWrapper_giu6t_gg_",
32
+ "_columnsCount_2": "_columnsCount_2_giu6t_gg_",
33
+ "_columnsCount_3": "_columnsCount_3_giu6t_gg_"
29
34
  });
30
35
  const NOT_A_VALUE = exports.NOT_A_VALUE = 'n/a';
31
36
  class AbstractChart extends _core.Component {
@@ -36,6 +41,13 @@ class AbstractChart extends _core.Component {
36
41
  */
37
42
  (0, _defineProperty2.default)(this, "plotPadding", 6);
38
43
  (0, _defineProperty2.default)(this, "dataHints", (0, _hints.makeDataHintsContainer)());
44
+ (0, _defineProperty2.default)(this, "chartRef", /*#__PURE__*/_react.default.createRef());
45
+ (0, _defineProperty2.default)(this, "legendRef", /*#__PURE__*/_react.default.createRef());
46
+ (0, _defineProperty2.default)(this, "observer", void 0);
47
+ this.handleResize = (0, _rafTrottle.default)(this.handleResize.bind(this));
48
+ if ((0, _canUseDOM.default)() && (!props.plotWidth || !props.plotHeight)) {
49
+ this.observer = new ResizeObserver(this.handleResize);
50
+ }
39
51
  this.setHighlightedLine = this.setHighlightedLine.bind(this);
40
52
  this.handleChangeVisible = this.handleChangeVisible.bind(this);
41
53
  this.handleMouseEnter = this.handleMouseEnter.bind(this);
@@ -46,9 +58,14 @@ class AbstractChart extends _core.Component {
46
58
  this.state = {
47
59
  dataDefinitions: this.getDefaultDataDefinitions(),
48
60
  highlightedLine: -1,
49
- withTrend: false
61
+ withTrend: false,
62
+ plotWidth: 0,
63
+ plotHeight: 0
50
64
  };
51
65
  }
66
+ componentDidMount() {
67
+ this.observer?.observe(this.chartRef.current);
68
+ }
52
69
  componentDidUpdate(prevProps) {
53
70
  if (prevProps.data !== this.props.data || prevProps.legendProps !== this.props.legendProps) {
54
71
  this.setState({
@@ -56,6 +73,15 @@ class AbstractChart extends _core.Component {
56
73
  });
57
74
  }
58
75
  }
76
+ componentWillUnmount() {
77
+ this.observer?.disconnect();
78
+ }
79
+ get plotWidth() {
80
+ return this.asProps.plotWidth ?? this.state.plotWidth;
81
+ }
82
+ get plotHeight() {
83
+ return this.asProps.plotHeight ?? this.state.plotHeight;
84
+ }
59
85
  getDefaultDataDefinitions() {
60
86
  const {
61
87
  data,
@@ -334,7 +360,9 @@ class AbstractChart extends _core.Component {
334
360
  'aria-label': this.getLegendAriaLabel()
335
361
  };
336
362
  if (lProps.legendType === 'Table') {
337
- return /*#__PURE__*/_react.default.createElement(_ChartLegend.ChartLegendTable, commonLegendProps);
363
+ return /*#__PURE__*/_react.default.createElement(_ChartLegend.ChartLegendTable, (0, _extends2.default)({}, commonLegendProps, {
364
+ ref: this.legendRef
365
+ }));
338
366
  }
339
367
  if ('withTrend' in lProps) {
340
368
  const flexLegendProps = {
@@ -344,9 +372,13 @@ class AbstractChart extends _core.Component {
344
372
  trendIsVisible: withTrend,
345
373
  onTrendIsVisibleChange: this.handleWithTrendChange
346
374
  };
347
- return /*#__PURE__*/_react.default.createElement(_ChartLegend.default, flexLegendProps);
375
+ return /*#__PURE__*/_react.default.createElement(_ChartLegend.default, (0, _extends2.default)({}, flexLegendProps, {
376
+ ref: this.legendRef
377
+ }));
348
378
  }
349
- return /*#__PURE__*/_react.default.createElement(_ChartLegend.default, commonLegendProps);
379
+ return /*#__PURE__*/_react.default.createElement(_ChartLegend.default, (0, _extends2.default)({}, commonLegendProps, {
380
+ ref: this.legendRef
381
+ }));
350
382
  }
351
383
  renderAxis() {
352
384
  const {
@@ -448,8 +480,6 @@ class AbstractChart extends _core.Component {
448
480
  const SChart = _baseComponents.Flex;
449
481
  const {
450
482
  styles,
451
- plotWidth,
452
- plotHeight,
453
483
  data,
454
484
  patterns,
455
485
  a11yAltTextConfig,
@@ -457,6 +487,10 @@ class AbstractChart extends _core.Component {
457
487
  eventEmitter,
458
488
  showTooltip
459
489
  } = this.asProps;
490
+ const {
491
+ plotWidth,
492
+ plotHeight
493
+ } = this;
460
494
  const {
461
495
  extractedAriaProps
462
496
  } = (0, _ariaProps.extractAriaProps)(this.asProps);
@@ -464,7 +498,8 @@ class AbstractChart extends _core.Component {
464
498
  ...(0, _core.assignProps)({
465
499
  "gap": 5,
466
500
  "__excludeProps": ['data', 'eventEmitter'],
467
- "role": 'group'
501
+ "role": 'group',
502
+ "ref": this.chartRef
468
503
  }, _ref2)
469
504
  }), this.renderLegend(), /*#__PURE__*/_react.default.createElement(_.Plot, _ref4.cn("Plot", {
470
505
  "data": data,
@@ -479,6 +514,45 @@ class AbstractChart extends _core.Component {
479
514
  ...extractedAriaProps
480
515
  }), this.renderAxis(), !showTooltip ? null : this.renderTooltip(), this.renderChart()));
481
516
  }
517
+ handleResize(entities) {
518
+ const {
519
+ aspect,
520
+ direction,
521
+ onResize,
522
+ plotWidth,
523
+ plotHeight
524
+ } = this.asProps;
525
+ const chartElement = this.chartRef.current;
526
+ if (!chartElement) return;
527
+ const legendElement = this.legendRef.current;
528
+ const computedStyles = window.getComputedStyle(chartElement);
529
+ let width = chartElement.clientWidth;
530
+ let height = chartElement.clientHeight;
531
+ if (legendElement) {
532
+ const gap = (0, _cssToIntDefault.default)(computedStyles.gap, 0);
533
+ if (direction?.includes('column')) {
534
+ height = height - legendElement.clientHeight - gap;
535
+ } else {
536
+ width = width - legendElement.clientWidth - gap;
537
+ }
538
+ }
539
+ if (aspect) {
540
+ const minHeight = (0, _cssToIntDefault.default)(computedStyles.getPropertyValue('min-height'), -1);
541
+ const maxHeight = (0, _cssToIntDefault.default)(computedStyles.getPropertyValue('max-height'), -1);
542
+ height = width / aspect;
543
+ if (minHeight !== -1 && height < minHeight) {
544
+ height = minHeight;
545
+ }
546
+ if (maxHeight !== -1 && height > maxHeight) {
547
+ height = maxHeight;
548
+ }
549
+ }
550
+ this.setState({
551
+ plotWidth: plotWidth ? 0 : width,
552
+ plotHeight: plotHeight ? 0 : height
553
+ });
554
+ onResize?.([width, height], entities);
555
+ }
482
556
  }
483
557
  exports.AbstractChart = AbstractChart;
484
558
  (0, _defineProperty2.default)(AbstractChart, "style", style);
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractChart.js","names":["_core","require","_baseComponents","_ariaProps","_assignProps3","_typography","_react","_interopRequireWildcard","_","_hints","_utils","_ChartLegend","style","sstyled","insert","NOT_A_VALUE","exports","AbstractChart","Component","constructor","props","_defineProperty2","default","makeDataHintsContainer","setHighlightedLine","bind","handleChangeVisible","handleMouseEnter","handleMouseLeave","resolveColor","tooltipValueFormatter","handleWithTrendChange","state","dataDefinitions","getDefaultDataDefinitions","highlightedLine","withTrend","componentDidUpdate","prevProps","data","legendProps","setState","dataKeys","map","key","index","legendData","legendMap","dataDefinition","id","label","icon","undefined","checked","defaultChecked","color","columns","additionalInfo","count","Array","isArray","value","dataValue","Map","get","interpolateValue","Number","total","Object","values","reduce","sum","i","percent","toFixed","createElement","Text","use","groupKey","keys","filter","xTicks","invertAxis","xTicksCount","yTicksCount","asProps","scale","xScale","ticks","yTicks","yScale","flatValues","result","item","add","entries","forEach","Set","maxStackedValue","max","val","barSum","Date","isNaN","getMilliseconds","totalValue","allNotAValue","legendItem","NaN","getValueScale","Math","min","avg","round","log10","valueScale","isVisible","prevState","findIndex","line","colorMap","toDateString","toString","defaultLegendProps","legendType","renderLegend","direction","showLegend","patterns","length","lProps","commonLegendProps","dataHints","size","shape","w","h","disableSelectItems","callAllEventHandlers","onChangeVisibleItem","disableHoverItems","onMouseEnterItem","onMouseLeaveItem","getLegendAriaLabel","ChartLegendTable","flexLegendProps","trendLabel","trendIsVisible","onTrendIsVisibleChange","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","childrenX","children","childrenY","Fragment","YAxis","Ticks","multiline","Grid","XAxis","getTooltipChildren","options","_ref","_ref3","STooltipChildrenWrapper","Box","Tooltip","dataItem","styles","title","Flex","cn","Title","assignProps","Dot","mr","textAlign","bold","renderTooltipTotalLine","showTotalInTooltip","mt","render","_ref2","_ref4","SChart","plotWidth","plotHeight","a11yAltTextConfig","duration","eventEmitter","showTooltip","extractedAriaProps","extractAriaProps","Plot","renderTooltip","renderChart"],"sources":["../../../../src/component/Chart/AbstractChart.tsx"],"sourcesContent":["import { Flex, Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { Component, Root, sstyled } from '@semcore/core';\nimport { extractAriaProps } from '@semcore/core/lib/utils/ariaProps';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport { Text } from '@semcore/typography';\nimport type { ScaleBand, ScaleLinear, ScaleTime } from 'd3-scale';\nimport React, { Fragment } from 'react';\n\nimport type { BaseChartProps, BaseLegendProps, ListData, ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport type { HoverLine, HoverRect } from '../..';\n// @ts-ignore\nimport { Plot, XAxis, YAxis } from '../..';\nimport { makeDataHintsContainer } from '../../a11y/hints';\nimport style from '../../style/abstract-chart.shadow.css';\nimport { interpolateValue } from '../../utils';\nimport ChartLegend, { ChartLegendTable } from '../ChartLegend';\nimport type { LegendFlexProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport type { LegendTableProps } from '../ChartLegend/LegendTable/LegendTable.type';\n\nexport type ChartState = {\n dataDefinitions: Array<LegendItem & { columns: React.ReactNode[] }>;\n highlightedLine: number;\n withTrend: boolean;\n};\n\nexport const NOT_A_VALUE = 'n/a';\n\nexport abstract class AbstractChart<\n Data extends ListData | ObjectData,\n Props extends BaseChartProps<Data>,\n Enhancers extends readonly ((...args: any[]) => any)[] = [],\n InnerProps = {},\n State extends ChartState = ChartState,\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends Component<Props, Enhancers, Readonly<{}>, InnerProps, State, DefaultProps> {\n public static style = style;\n\n /**\n * Padding from the end's of chart to the container (except axis sides)\n */\n protected plotPadding = 6;\n\n protected dataHints = makeDataHintsContainer();\n\n constructor(props: Props) {\n super(props);\n\n this.setHighlightedLine = this.setHighlightedLine.bind(this);\n this.handleChangeVisible = this.handleChangeVisible.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.resolveColor = this.resolveColor.bind(this);\n this.tooltipValueFormatter = this.tooltipValueFormatter.bind(this);\n this.handleWithTrendChange = this.handleWithTrendChange.bind(this);\n\n this.state = {\n dataDefinitions: this.getDefaultDataDefinitions(),\n highlightedLine: -1,\n withTrend: false,\n } as State;\n }\n\n public componentDidUpdate(prevProps: Props) {\n if (prevProps.data !== this.props.data || prevProps.legendProps !== this.props.legendProps) {\n this.setState({ dataDefinitions: this.getDefaultDataDefinitions() });\n }\n }\n\n protected getDefaultDataDefinitions(): Array<LegendItem & { columns: React.ReactNode[] }> {\n const { data, legendProps } = this.props;\n\n return this.dataKeys.map((key, index) => {\n const legendData = legendProps?.legendMap?.[key];\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: this.resolveColor(key, index),\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n if (legendData && 'columns' in legendData) {\n dataDefinition.columns = legendData.columns || [];\n } else if (!Array.isArray(data)) {\n let value: number | undefined = undefined;\n let dataValue = data[key];\n\n if (data instanceof Map) {\n dataValue = data.get(key);\n }\n\n if (dataValue !== interpolateValue) {\n value = Number(dataValue);\n }\n\n const total = Object.values(data).reduce<number>((sum, i) => {\n if (i !== interpolateValue) {\n return sum + Number(i);\n }\n\n return sum;\n }, 0);\n const percent = value !== undefined ? ((value / total) * 100).toFixed(2) : undefined;\n\n dataDefinition.columns = [\n <Text key={`${key}_percent`} use='secondary'>\n {percent !== undefined ? `${percent}%` : ''}\n </Text>,\n <Text key={`${key}_value`} use={value ? 'primary' : 'secondary'}>\n {value ?? NOT_A_VALUE}\n </Text>,\n ];\n }\n\n return dataDefinition;\n });\n }\n\n protected abstract get xScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n protected abstract get yScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n\n protected abstract getLegendAriaLabel(): string;\n protected abstract renderChart(): React.ReactNode;\n protected abstract renderTooltip(): React.ReactNode;\n\n protected get dataKeys(): string[] {\n const { data, groupKey } = this.props;\n\n let dataKeys: string[];\n\n if (Array.isArray(data) && groupKey) {\n dataKeys = Object.keys(data[0]).filter((key) => key !== groupKey);\n } else {\n dataKeys = Object.keys(data);\n }\n\n return dataKeys;\n }\n\n protected get xTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.xScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && yTicksCount) {\n return scale.ticks(yTicksCount);\n } else if (xTicksCount) {\n return scale.ticks(xTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get yTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.yScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && xTicksCount) {\n return scale.ticks(xTicksCount);\n } else if (yTicksCount) {\n return scale.ticks(yTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey } = this.asProps;\n const values: any[] = Array.isArray(data) ? data : Object.values(data);\n\n const flatValues = values.reduce<Set<number>>((result, item) => {\n if (!groupKey && typeof item === 'number') {\n result.add(item);\n } else {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && typeof value === 'number') {\n result.add(value);\n }\n });\n }\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected get maxStackedValue(): number {\n const { data, groupKey } = this.asProps;\n\n if (!Array.isArray(data)) {\n const max = Object.values(data).reduce<number>((sum, val) => {\n if (typeof val === 'number') {\n sum = sum + val;\n }\n\n return sum;\n }, 0);\n\n return max;\n }\n\n const max = data.reduce((max, item) => {\n const barSum = Object.entries(item).reduce<number>((sum, [key, val]) => {\n if (key === groupKey) {\n return sum;\n }\n\n if (typeof val === 'number') {\n return sum + val;\n }\n\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n\n return max;\n }\n\n protected totalValue(data: ObjectData): number {\n const { dataDefinitions } = this.state;\n\n let allNotAValue = true;\n\n const total = dataDefinitions.reduce((sum, legendItem) => {\n const item = data[legendItem.id];\n\n if (item === null) {\n allNotAValue = false;\n return sum;\n }\n\n if (typeof item === 'number') {\n allNotAValue = false;\n return sum + item;\n }\n\n if (item instanceof Date && !Number.isNaN(item.getMilliseconds())) {\n allNotAValue = false;\n return sum + item.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (allNotAValue) {\n return Number.NaN;\n }\n\n return total;\n }\n\n protected getValueScale(values: number[]): number {\n const max = Math.max(...values);\n const min = Math.min(...values);\n\n const avg = (max + min) / 2;\n const count = Math.round(Math.log10(avg));\n\n const valueScale = 100 / 10 ** count;\n\n return valueScale;\n }\n\n protected setHighlightedLine(index: number) {\n this.setState({ highlightedLine: index });\n }\n\n protected handleChangeVisible(id: string, isVisible: boolean) {\n this.setState((prevState) => {\n const dataDefinitions = prevState.dataDefinitions.map((item) => {\n if (item.id === id) {\n item.checked = isVisible;\n }\n\n return item;\n });\n\n return { dataDefinitions };\n });\n }\n\n protected handleWithTrendChange(isVisible: boolean) {\n this.setState({ withTrend: isVisible });\n }\n\n protected handleMouseEnter(id: string) {\n this.setHighlightedLine(this.state.dataDefinitions.findIndex((line) => line.id === id));\n }\n\n protected handleMouseLeave() {\n this.setHighlightedLine(-1);\n }\n\n protected resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `chart-palette-order-${index + 1}`;\n }\n\n protected tooltipValueFormatter(\n value?: string | number | typeof interpolateValue | Date,\n ): string {\n const { tooltipValueFormatter } = this.asProps;\n\n if (tooltipValueFormatter) {\n return tooltipValueFormatter(value);\n }\n\n if (value === undefined || value === interpolateValue) {\n return NOT_A_VALUE;\n }\n\n if (value === null) {\n return '0';\n }\n\n if (value instanceof Date) {\n return value.toDateString();\n }\n\n return value.toString();\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {\n legendType: 'Flex',\n };\n }\n\n protected renderLegend() {\n const { legendProps, direction, showLegend, patterns } = this.asProps;\n\n if (\n // we hide Legend for one item on chart except not manually set to show.\n showLegend === undefined && this.dataKeys.length === 1 ||\n showLegend === false\n ) {\n return null;\n }\n\n const { dataDefinitions, withTrend } = this.state;\n const lProps = {\n ...this.defaultLegendProps(),\n ...legendProps,\n };\n\n const commonLegendProps: LegendFlexProps | LegendTableProps = {\n 'dataHints': this.dataHints,\n 'items': dataDefinitions,\n 'size': lProps.size,\n 'shape': lProps.shape,\n 'w': lProps.w,\n 'h': lProps.h,\n patterns,\n 'direction':\n lProps.direction ?? (direction === 'row' || direction === 'row-reverse' ? 'column' : 'row'),\n 'onChangeVisibleItem': lProps.disableSelectItems\n ? undefined\n : callAllEventHandlers(lProps.onChangeVisibleItem, this.handleChangeVisible),\n 'onMouseEnterItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseEnterItem, this.handleMouseEnter),\n 'onMouseLeaveItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseLeaveItem, this.handleMouseLeave),\n 'aria-label': this.getLegendAriaLabel(),\n };\n\n if (lProps.legendType === 'Table') {\n return <ChartLegendTable {...(commonLegendProps as LegendTableProps)} />;\n }\n\n if ('withTrend' in lProps) {\n const flexLegendProps = {\n ...commonLegendProps,\n withTrend: true,\n trendLabel: lProps.trendLabel,\n trendIsVisible: withTrend,\n onTrendIsVisibleChange: this.handleWithTrendChange,\n };\n\n return <ChartLegend {...(flexLegendProps as LegendFlexProps)} />;\n }\n\n return <ChartLegend {...(commonLegendProps as LegendFlexProps)} />;\n }\n\n protected renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getTooltipChildren<D extends ObjectData>(options: {\n Tooltip: typeof HoverLine['Tooltip'] | typeof HoverRect['Tooltip'];\n dataItem: D;\n }) {\n const STooltipChildrenWrapper = Root;\n const { Tooltip, dataItem } = options;\n\n const { styles, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n const title = dataItem[groupKey as keyof D]?.toString();\n\n return sstyled(styles)(\n <Flex direction='column'>\n { title && <Tooltip.Title>{title}</Tooltip.Title> }\n\n <STooltipChildrenWrapper\n render={Box}\n columnsCount='2'\n __excludeProps={['data']}\n >\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Fragment key={item.id}>\n <Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </Tooltip.Dot>\n <Text textAlign='end' bold>{this.tooltipValueFormatter(dataItem[item.id] as string)}</Text>\n </Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(dataItem)}\n </STooltipChildrenWrapper>\n </Flex>,\n );\n }\n\n protected renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n public render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, a11yAltTextConfig, duration, eventEmitter, showTooltip } =\n this.asProps;\n\n const { extractedAriaProps } = extractAriaProps(this.asProps);\n\n return sstyled(styles)(\n <SChart render={Flex} gap={5} __excludeProps={['data', 'eventEmitter']} role='group'>\n {this.renderLegend()}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n a11yAltTextConfig={a11yAltTextConfig}\n patterns={patterns}\n duration={duration}\n eventEmitter={eventEmitter}\n {...extractedAriaProps}\n >\n {this.renderAxis()}\n {!showTooltip ? null : this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </SChart>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AbstractChart.js","names":["_core","require","_baseComponents","_ariaProps","_assignProps3","_canUseDOM","_interopRequireDefault","_cssToIntDefault","_rafTrottle","_typography","_react","_interopRequireWildcard","_","_hints","_utils","_ChartLegend","style","sstyled","insert","NOT_A_VALUE","exports","AbstractChart","Component","constructor","props","_defineProperty2","default","makeDataHintsContainer","React","createRef","handleResize","trottle","bind","canUseDOM","plotWidth","plotHeight","observer","ResizeObserver","setHighlightedLine","handleChangeVisible","handleMouseEnter","handleMouseLeave","resolveColor","tooltipValueFormatter","handleWithTrendChange","state","dataDefinitions","getDefaultDataDefinitions","highlightedLine","withTrend","componentDidMount","observe","chartRef","current","componentDidUpdate","prevProps","data","legendProps","setState","componentWillUnmount","disconnect","asProps","dataKeys","map","key","index","legendData","legendMap","dataDefinition","id","label","icon","undefined","checked","defaultChecked","color","columns","additionalInfo","count","Array","isArray","value","dataValue","Map","get","interpolateValue","Number","total","Object","values","reduce","sum","i","percent","toFixed","createElement","Text","use","groupKey","keys","filter","xTicks","invertAxis","xTicksCount","yTicksCount","scale","xScale","ticks","yTicks","yScale","flatValues","result","item","add","entries","forEach","Set","maxStackedValue","max","val","barSum","Date","isNaN","getMilliseconds","totalValue","allNotAValue","legendItem","NaN","getValueScale","Math","min","avg","round","log10","valueScale","isVisible","prevState","findIndex","line","colorMap","toDateString","toString","defaultLegendProps","legendType","renderLegend","direction","showLegend","patterns","length","lProps","commonLegendProps","dataHints","size","shape","w","h","disableSelectItems","callAllEventHandlers","onChangeVisibleItem","disableHoverItems","onMouseEnterItem","onMouseLeaveItem","getLegendAriaLabel","ChartLegendTable","_extends2","ref","legendRef","flexLegendProps","trendLabel","trendIsVisible","onTrendIsVisibleChange","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","childrenX","children","childrenY","Fragment","YAxis","Ticks","multiline","Grid","XAxis","getTooltipChildren","options","_ref","_ref3","STooltipChildrenWrapper","Box","Tooltip","dataItem","styles","title","Flex","cn","Title","assignProps","Dot","mr","textAlign","bold","renderTooltipTotalLine","showTotalInTooltip","mt","render","_ref2","_ref4","SChart","a11yAltTextConfig","duration","eventEmitter","showTooltip","extractedAriaProps","extractAriaProps","Plot","renderTooltip","renderChart","entities","aspect","onResize","chartElement","legendElement","computedStyles","window","getComputedStyle","width","clientWidth","height","clientHeight","gap","cssToIntDefault","includes","minHeight","getPropertyValue","maxHeight"],"sources":["../../../../src/component/Chart/AbstractChart.tsx"],"sourcesContent":["import { Flex, Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { Component, Root, sstyled } from '@semcore/core';\nimport { extractAriaProps } from '@semcore/core/lib/utils/ariaProps';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport cssToIntDefault from '@semcore/core/lib/utils/cssToIntDefault';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport { Text } from '@semcore/typography';\nimport type { ScaleBand, ScaleLinear, ScaleTime } from 'd3-scale';\nimport React, { Fragment } from 'react';\n\nimport type { BaseChartProps, BaseLegendProps, ListData, ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport type { HoverLine, HoverRect } from '../..';\n// @ts-ignore\nimport { Plot, XAxis, YAxis } from '../..';\nimport { makeDataHintsContainer } from '../../a11y/hints';\nimport style from '../../style/abstract-chart.shadow.css';\nimport { interpolateValue } from '../../utils';\nimport ChartLegend, { ChartLegendTable } from '../ChartLegend';\nimport type { LegendFlexProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport type { LegendTableProps } from '../ChartLegend/LegendTable/LegendTable.type';\n\nexport type ChartState = {\n dataDefinitions: Array<LegendItem & { columns: React.ReactNode[] }>;\n highlightedLine: number;\n withTrend: boolean;\n\n plotWidth: number;\n plotHeight: number;\n};\n\nexport const NOT_A_VALUE = 'n/a';\n\nexport abstract class AbstractChart<\n Data extends ListData | ObjectData,\n Props extends BaseChartProps<Data>,\n Enhancers extends readonly ((...args: any[]) => any)[] = [],\n InnerProps = {},\n State extends ChartState = ChartState,\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends Component<Props, Enhancers, Readonly<{}>, InnerProps, State, DefaultProps> {\n public static style = style;\n\n /**\n * Padding from the end's of chart to the container (except axis sides)\n */\n protected plotPadding = 6;\n\n protected dataHints = makeDataHintsContainer();\n\n protected chartRef = React.createRef<HTMLElement>();\n protected legendRef = React.createRef<HTMLDivElement>();\n\n private observer: ResizeObserver | undefined;\n\n constructor(props: Props) {\n super(props);\n\n this.handleResize = trottle(this.handleResize.bind(this));\n\n if (canUseDOM() && (!props.plotWidth || !props.plotHeight)) {\n this.observer = new ResizeObserver(this.handleResize);\n }\n\n this.setHighlightedLine = this.setHighlightedLine.bind(this);\n this.handleChangeVisible = this.handleChangeVisible.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.resolveColor = this.resolveColor.bind(this);\n this.tooltipValueFormatter = this.tooltipValueFormatter.bind(this);\n this.handleWithTrendChange = this.handleWithTrendChange.bind(this);\n\n this.state = {\n dataDefinitions: this.getDefaultDataDefinitions(),\n highlightedLine: -1,\n withTrend: false,\n plotWidth: 0,\n plotHeight: 0,\n } as State;\n }\n\n public componentDidMount(): void {\n this.observer?.observe(this.chartRef.current!);\n }\n\n public componentDidUpdate(prevProps: Props) {\n if (prevProps.data !== this.props.data || prevProps.legendProps !== this.props.legendProps) {\n this.setState({ dataDefinitions: this.getDefaultDataDefinitions() });\n }\n }\n\n public componentWillUnmount(): void {\n this.observer?.disconnect();\n }\n\n protected get plotWidth() {\n return this.asProps.plotWidth ?? this.state.plotWidth;\n }\n\n protected get plotHeight() {\n return this.asProps.plotHeight ?? this.state.plotHeight;\n }\n\n protected getDefaultDataDefinitions(): Array<LegendItem & { columns: React.ReactNode[] }> {\n const { data, legendProps } = this.props;\n\n return this.dataKeys.map((key, index) => {\n const legendData = legendProps?.legendMap?.[key];\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: this.resolveColor(key, index),\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n if (legendData && 'columns' in legendData) {\n dataDefinition.columns = legendData.columns || [];\n } else if (!Array.isArray(data)) {\n let value: number | undefined = undefined;\n let dataValue = data[key];\n\n if (data instanceof Map) {\n dataValue = data.get(key);\n }\n\n if (dataValue !== interpolateValue) {\n value = Number(dataValue);\n }\n\n const total = Object.values(data).reduce<number>((sum, i) => {\n if (i !== interpolateValue) {\n return sum + Number(i);\n }\n\n return sum;\n }, 0);\n const percent = value !== undefined ? ((value / total) * 100).toFixed(2) : undefined;\n\n dataDefinition.columns = [\n <Text key={`${key}_percent`} use='secondary'>\n {percent !== undefined ? `${percent}%` : ''}\n </Text>,\n <Text key={`${key}_value`} use={value ? 'primary' : 'secondary'}>\n {value ?? NOT_A_VALUE}\n </Text>,\n ];\n }\n\n return dataDefinition;\n });\n }\n\n protected abstract get xScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n protected abstract get yScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n\n protected abstract getLegendAriaLabel(): string;\n protected abstract renderChart(): React.ReactNode;\n protected abstract renderTooltip(): React.ReactNode;\n\n protected get dataKeys(): string[] {\n const { data, groupKey } = this.props;\n\n let dataKeys: string[];\n\n if (Array.isArray(data) && groupKey) {\n dataKeys = Object.keys(data[0]).filter((key) => key !== groupKey);\n } else {\n dataKeys = Object.keys(data);\n }\n\n return dataKeys;\n }\n\n protected get xTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.xScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && yTicksCount) {\n return scale.ticks(yTicksCount);\n } else if (xTicksCount) {\n return scale.ticks(xTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get yTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.yScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && xTicksCount) {\n return scale.ticks(xTicksCount);\n } else if (yTicksCount) {\n return scale.ticks(yTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey } = this.asProps;\n const values: any[] = Array.isArray(data) ? data : Object.values(data);\n\n const flatValues = values.reduce<Set<number>>((result, item) => {\n if (!groupKey && typeof item === 'number') {\n result.add(item);\n } else {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && typeof value === 'number') {\n result.add(value);\n }\n });\n }\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected get maxStackedValue(): number {\n const { data, groupKey } = this.asProps;\n\n if (!Array.isArray(data)) {\n const max = Object.values(data).reduce<number>((sum, val) => {\n if (typeof val === 'number') {\n sum = sum + val;\n }\n\n return sum;\n }, 0);\n\n return max;\n }\n\n const max = data.reduce((max, item) => {\n const barSum = Object.entries(item).reduce<number>((sum, [key, val]) => {\n if (key === groupKey) {\n return sum;\n }\n\n if (typeof val === 'number') {\n return sum + val;\n }\n\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n\n return max;\n }\n\n protected totalValue(data: ObjectData): number {\n const { dataDefinitions } = this.state;\n\n let allNotAValue = true;\n\n const total = dataDefinitions.reduce((sum, legendItem) => {\n const item = data[legendItem.id];\n\n if (item === null) {\n allNotAValue = false;\n return sum;\n }\n\n if (typeof item === 'number') {\n allNotAValue = false;\n return sum + item;\n }\n\n if (item instanceof Date && !Number.isNaN(item.getMilliseconds())) {\n allNotAValue = false;\n return sum + item.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (allNotAValue) {\n return Number.NaN;\n }\n\n return total;\n }\n\n protected getValueScale(values: number[]): number {\n const max = Math.max(...values);\n const min = Math.min(...values);\n\n const avg = (max + min) / 2;\n const count = Math.round(Math.log10(avg));\n\n const valueScale = 100 / 10 ** count;\n\n return valueScale;\n }\n\n protected setHighlightedLine(index: number) {\n this.setState({ highlightedLine: index });\n }\n\n protected handleChangeVisible(id: string, isVisible: boolean) {\n this.setState((prevState) => {\n const dataDefinitions = prevState.dataDefinitions.map((item) => {\n if (item.id === id) {\n item.checked = isVisible;\n }\n\n return item;\n });\n\n return { dataDefinitions };\n });\n }\n\n protected handleWithTrendChange(isVisible: boolean) {\n this.setState({ withTrend: isVisible });\n }\n\n protected handleMouseEnter(id: string) {\n this.setHighlightedLine(this.state.dataDefinitions.findIndex((line) => line.id === id));\n }\n\n protected handleMouseLeave() {\n this.setHighlightedLine(-1);\n }\n\n protected resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `chart-palette-order-${index + 1}`;\n }\n\n protected tooltipValueFormatter(\n value?: string | number | typeof interpolateValue | Date,\n ): string {\n const { tooltipValueFormatter } = this.asProps;\n\n if (tooltipValueFormatter) {\n return tooltipValueFormatter(value);\n }\n\n if (value === undefined || value === interpolateValue) {\n return NOT_A_VALUE;\n }\n\n if (value === null) {\n return '0';\n }\n\n if (value instanceof Date) {\n return value.toDateString();\n }\n\n return value.toString();\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {\n legendType: 'Flex',\n };\n }\n\n protected renderLegend() {\n const { legendProps, direction, showLegend, patterns } = this.asProps;\n\n if (\n // we hide Legend for one item on chart except not manually set to show.\n showLegend === undefined && this.dataKeys.length === 1 ||\n showLegend === false\n ) {\n return null;\n }\n\n const { dataDefinitions, withTrend } = this.state;\n const lProps = {\n ...this.defaultLegendProps(),\n ...legendProps,\n };\n\n const commonLegendProps: LegendFlexProps | LegendTableProps = {\n 'dataHints': this.dataHints,\n 'items': dataDefinitions,\n 'size': lProps.size,\n 'shape': lProps.shape,\n 'w': lProps.w,\n 'h': lProps.h,\n patterns,\n 'direction':\n lProps.direction ?? (direction === 'row' || direction === 'row-reverse' ? 'column' : 'row'),\n 'onChangeVisibleItem': lProps.disableSelectItems\n ? undefined\n : callAllEventHandlers(lProps.onChangeVisibleItem, this.handleChangeVisible),\n 'onMouseEnterItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseEnterItem, this.handleMouseEnter),\n 'onMouseLeaveItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseLeaveItem, this.handleMouseLeave),\n 'aria-label': this.getLegendAriaLabel(),\n };\n\n if (lProps.legendType === 'Table') {\n return <ChartLegendTable {...(commonLegendProps as LegendTableProps)} ref={this.legendRef} />;\n }\n\n if ('withTrend' in lProps) {\n const flexLegendProps = {\n ...commonLegendProps,\n withTrend: true,\n trendLabel: lProps.trendLabel,\n trendIsVisible: withTrend,\n onTrendIsVisibleChange: this.handleWithTrendChange,\n };\n\n return <ChartLegend {...(flexLegendProps as LegendFlexProps)} ref={this.legendRef} />;\n }\n\n return <ChartLegend {...(commonLegendProps as LegendFlexProps)} ref={this.legendRef} />;\n }\n\n protected renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getTooltipChildren<D extends ObjectData>(options: {\n Tooltip: typeof HoverLine['Tooltip'] | typeof HoverRect['Tooltip'];\n dataItem: D;\n }) {\n const STooltipChildrenWrapper = Root;\n const { Tooltip, dataItem } = options;\n\n const { styles, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n const title = dataItem[groupKey as keyof D]?.toString();\n\n return sstyled(styles)(\n <Flex direction='column'>\n { title && <Tooltip.Title>{title}</Tooltip.Title> }\n\n <STooltipChildrenWrapper\n render={Box}\n columnsCount='2'\n __excludeProps={['data']}\n >\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Fragment key={item.id}>\n <Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </Tooltip.Dot>\n <Text textAlign='end' bold>{this.tooltipValueFormatter(dataItem[item.id] as string)}</Text>\n </Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(dataItem)}\n </STooltipChildrenWrapper>\n </Flex>,\n );\n }\n\n protected renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n public render() {\n const SChart = Root;\n const { styles, data, patterns, a11yAltTextConfig, duration, eventEmitter, showTooltip } =\n this.asProps;\n const { plotWidth, plotHeight } = this;\n\n const { extractedAriaProps } = extractAriaProps(this.asProps);\n\n return sstyled(styles)(\n <SChart render={Flex} gap={5} __excludeProps={['data', 'eventEmitter']} role='group' ref={this.chartRef}>\n {this.renderLegend()}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n a11yAltTextConfig={a11yAltTextConfig}\n patterns={patterns}\n duration={duration}\n eventEmitter={eventEmitter}\n {...extractedAriaProps}\n >\n {this.renderAxis()}\n {!showTooltip ? null : this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </SChart>,\n );\n }\n\n private handleResize(entities: ResizeObserverEntry[]) {\n const { aspect, direction, onResize, plotWidth, plotHeight } = this.asProps;\n const chartElement = this.chartRef.current;\n\n if (!chartElement) return;\n\n const legendElement = this.legendRef.current;\n const computedStyles = window.getComputedStyle(chartElement);\n\n let width: number = chartElement.clientWidth;\n let height: number = chartElement.clientHeight;\n\n if (legendElement) {\n const gap: number = cssToIntDefault(computedStyles.gap, 0);\n if (direction?.includes('column')) {\n height = height - legendElement.clientHeight - gap;\n } else {\n width = width - legendElement.clientWidth - gap;\n }\n }\n\n if (aspect) {\n const minHeight = cssToIntDefault(computedStyles.getPropertyValue('min-height'), -1);\n const maxHeight = cssToIntDefault(computedStyles.getPropertyValue('max-height'), -1);\n height = width / aspect;\n\n if (minHeight !== -1 && height < minHeight) {\n height = minHeight;\n }\n if (maxHeight !== -1 && height > maxHeight) {\n height = maxHeight;\n }\n }\n\n this.setState({\n plotWidth: plotWidth ? 0 : width,\n plotHeight: plotHeight ? 0 : height,\n });\n\n onResize?.([width, height], entities);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractChart.type.js","names":[],"sources":["../../../../src/component/Chart/AbstractChart.type.ts"],"sourcesContent":["import type { FlexProps } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport type Icon from '@semcore/icon';\nimport type React from 'react';\n\nimport type { PatternsConfig } from '../../Pattern';\n// @ts-ignore\nimport type { PlotSummarizerConfig } from '../../Plot';\nimport type { PlotEventEmitter } from '../../utils';\nimport type { BaseChartLegendProps } from '../ChartLegend/BaseLegend.type';\nimport type { TrendProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItemKey } from '../ChartLegend/LegendItem/LegendItem.type';\n\nexport type BaseLegendProps = BaseChartLegendProps & {\n /**\n * Disable hover (for transition items legend of each not hovered)\n */\n disableHoverItems?: boolean;\n /**\n * Disable selectable of data items by checkboxes in Legend\n */\n disableSelectItems?: boolean;\n} & (\n | (TrendProps & {\n /**\n * How to render Legend - Flex view. Just list of legend items\n */\n legendType?: never | 'Flex';\n /**\n * Config for Legend items\n */\n legendMap?: LegendDataMap<'Flex'>;\n })\n | {\n /**\n * How to render Legend - Table view. Table of legend items with some additional information in columns\n */\n legendType: 'Table';\n /**\n * Config for Legend items\n */\n legendMap?: LegendDataMap<'Table'>;\n }\n );\n\nexport type ObjectData = Record<string, unknown>;\nexport type ListData = ObjectData[];\n\n/**\n * Chart, Legend must have an accessible names (aria-name).\n * It should describe chart or legend content.\n */\nexport type AriaNameProps = Intergalactic.RequireAtLeastOne<{\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'title'?: string;\n}>;\n\nexport type BaseChartProps<T extends ListData | ObjectData> = FlexProps & {\n /**\n * Chart data. For all charts except Donut(Pie), Radar and Venn should be an Array\n */\n data: T;\n /**\n * Width of plot\n */\n plotWidth: number;\n /**\n * Height of plot\n */\n plotHeight: number;\n\n /** Enables charts patterns that enhances charts accessibility */\n patterns?: PatternsConfig;\n /**\n * Margin (for Y axis points) from left side of chart container to Y axis\n */\n marginY?: number;\n /**\n * Margin (for X axis points) from bottom of chart container to X axis\n */\n marginX?: number;\n /**\n * invert axis and show horizontal charts (only for Bars!)\n */\n invertAxis?: boolean;\n\n /**\n * Show X axis\n * @default true (for charts with axis: Area, Line, Bar, ScatterPlot, ...)\n */\n showXAxis?: boolean;\n /**\n * Show Y axis\n * @default true (for charts with axis: Area, Line, Bar, ScatterPlot, ...)\n */\n showYAxis?: boolean;\n /**\n * Map with colors for data items\n */\n colorMap?: Record<string, string>;\n /**\n * Show tooltip's.\n * @default true\n */\n showTooltip?: boolean;\n /**\n * Show sum of values for selected point in tooltip\n */\n showTotalInTooltip?: boolean;\n /**\n * Scale for xAxis (see more in d3-scale)\n */\n xScale?: unknown;\n /**\n * Scale for yAxis (see more in d3-scale)\n */\n yScale?: unknown;\n /**\n * Count of ticks for X axis\n */\n xTicksCount?: number;\n /**\n * Count of ticks for Y axis\n */\n yTicksCount?: number;\n /** Enables multiline tick labels for X axis, applicable only for band scales */\n multilineXTicks?: boolean;\n /** Enables multiline tick labels for Y axis, applicable only for band scales */\n multilineYTicks?: boolean;\n /**\n * Group key for all array-based charts (for get keys of items for legend except that group key)\n */\n groupKey?: string;\n /**\n * function for format axis item text\n */\n axisXValueFormatter?: (value: unknown) => string;\n axisYValueFormatter?: (value: unknown) => string;\n /**\n * Function for format text for tooltip\n */\n tooltipValueFormatter?: (value?: unknown) => string;\n /**\n * Custom event emitter. Could be useful to handle event on few charts at the same time.\n */\n eventEmitter?: InstanceType<typeof PlotEventEmitter>;\n /**\n * Config for a11y summary\n */\n a11yAltTextConfig?: PlotSummarizerConfig;\n\n /**\n * Animations duration, set 0 to disable animations\n */\n duration?: number;\n /**\n * Flag to show/hide legend\n */\n showLegend?: boolean;\n /**\n * Props for Legend\n */\n legendProps?: Partial<BaseLegendProps>;\n} & (\n | {\n /**\n * Don't show legend\n */\n showLegend?: false;\n legendProps?: never;\n }\n | {\n /**\n * By default (if showLegend don't set), for one data item on chart,\n * Legend component will be hide, and show for more then 1 data item.\n * If set `true` - Legend component will show always.\n */\n showLegend?: true;\n /**\n * Props for Legend\n */\n legendProps?: Partial<BaseLegendProps>;\n }\n );\n\ntype LegendDataMap<T extends 'Flex' | 'Table'> = Record<\n LegendItemKey,\n {\n /**\n * Custom label for legend item (by default use keys from data item object)\n */\n label?: string;\n /**\n * Additional text after label\n */\n additionalInfo?: string;\n /**\n * Count after label\n */\n count?: number;\n /**\n * Custom Icon\n */\n icon?: typeof Icon;\n /**\n * Flag for uncheck some items by default\n */\n defaultChecked?: boolean;\n } & (T extends 'Table' ? { columns?: React.ReactNode[] } : { columns?: never })\n>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"AbstractChart.type.js","names":[],"sources":["../../../../src/component/Chart/AbstractChart.type.ts"],"sourcesContent":["import type { FlexProps } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport type Icon from '@semcore/icon';\nimport type React from 'react';\n\nimport type { PatternsConfig } from '../../Pattern';\n// @ts-ignore\nimport type { PlotSummarizerConfig } from '../../Plot';\nimport type { PlotEventEmitter } from '../../utils';\nimport type { BaseChartLegendProps } from '../ChartLegend/BaseLegend.type';\nimport type { TrendProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItemKey } from '../ChartLegend/LegendItem/LegendItem.type';\n\nexport type BaseLegendProps = BaseChartLegendProps & {\n /**\n * Disable hover (for transition items legend of each not hovered)\n */\n disableHoverItems?: boolean;\n /**\n * Disable selectable of data items by checkboxes in Legend\n */\n disableSelectItems?: boolean;\n} & (\n | (TrendProps & {\n /**\n * How to render Legend - Flex view. Just list of legend items\n */\n legendType?: never | 'Flex';\n /**\n * Config for Legend items\n */\n legendMap?: LegendDataMap<'Flex'>;\n })\n | {\n /**\n * How to render Legend - Table view. Table of legend items with some additional information in columns\n */\n legendType: 'Table';\n /**\n * Config for Legend items\n */\n legendMap?: LegendDataMap<'Table'>;\n }\n );\n\nexport type ObjectData = Record<string, unknown>;\nexport type ListData = ObjectData[];\n\n/**\n * Chart, Legend must have an accessible names (aria-name).\n * It should describe chart or legend content.\n */\nexport type AriaNameProps = Intergalactic.RequireAtLeastOne<{\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'title'?: string;\n}>;\n\nexport type BaseChartProps<T extends ListData | ObjectData> = FlexProps & {\n /**\n * Chart data. For all charts except Donut(Pie), Radar and Venn should be an Array\n */\n data: T;\n /**\n * Width of plot\n * @default width is 100% of the parent element.\n */\n plotWidth?: number;\n /**\n * Height of plot\n * @default height is 100% of the parent element.\n */\n plotHeight?: number;\n\n /** Enables charts patterns that enhances charts accessibility */\n patterns?: PatternsConfig;\n /**\n * Margin (for Y axis points) from left side of chart container to Y axis\n */\n marginY?: number;\n /**\n * Margin (for X axis points) from bottom of chart container to X axis\n */\n marginX?: number;\n /**\n * invert axis and show horizontal charts (only for Bars!)\n */\n invertAxis?: boolean;\n\n /**\n * Show X axis\n * @default true (for charts with axis: Area, Line, Bar, ScatterPlot, ...)\n */\n showXAxis?: boolean;\n /**\n * Show Y axis\n * @default true (for charts with axis: Area, Line, Bar, ScatterPlot, ...)\n */\n showYAxis?: boolean;\n /**\n * Map with colors for data items\n */\n colorMap?: Record<string, string>;\n /**\n * Show tooltip's.\n * @default true\n */\n showTooltip?: boolean;\n /**\n * Show sum of values for selected point in tooltip\n */\n showTotalInTooltip?: boolean;\n /**\n * Scale for xAxis (see more in d3-scale)\n */\n xScale?: unknown;\n /**\n * Scale for yAxis (see more in d3-scale)\n */\n yScale?: unknown;\n /**\n * Count of ticks for X axis\n */\n xTicksCount?: number;\n /**\n * Count of ticks for Y axis\n */\n yTicksCount?: number;\n /** Enables multiline tick labels for X axis, applicable only for band scales */\n multilineXTicks?: boolean;\n /** Enables multiline tick labels for Y axis, applicable only for band scales */\n multilineYTicks?: boolean;\n /**\n * Group key for all array-based charts (for get keys of items for legend except that group key)\n */\n groupKey?: string;\n /**\n * function for format axis item text\n */\n axisXValueFormatter?: (value: unknown) => string;\n axisYValueFormatter?: (value: unknown) => string;\n /**\n * Function for format text for tooltip\n */\n tooltipValueFormatter?: (value?: unknown) => string;\n /**\n * Custom event emitter. Could be useful to handle event on few charts at the same time.\n */\n eventEmitter?: InstanceType<typeof PlotEventEmitter>;\n /**\n * Config for a11y summary\n */\n a11yAltTextConfig?: PlotSummarizerConfig;\n\n /**\n * Animations duration, set 0 to disable animations\n */\n duration?: number;\n /**\n * Flag to show/hide legend\n */\n showLegend?: boolean;\n /**\n * Relation between height and width dimensions block.\n * height = width / aspect, so an aspect could be set as `16 / 9` for example.\n */\n aspect?: number;\n /** Callback which will be called after changing the block size */\n onResize?: (size: [number, number], entries: ResizeObserverEntry[]) => void;\n /**\n * Props for Legend\n */\n legendProps?: Partial<BaseLegendProps>;\n} & (\n | {\n /**\n * Don't show legend\n */\n showLegend?: false;\n legendProps?: never;\n }\n | {\n /**\n * By default (if showLegend don't set), for one data item on chart,\n * Legend component will be hide, and show for more then 1 data item.\n * If set `true` - Legend component will show always.\n */\n showLegend?: true;\n /**\n * Props for Legend\n */\n legendProps?: Partial<BaseLegendProps>;\n }\n );\n\ntype LegendDataMap<T extends 'Flex' | 'Table'> = Record<\n LegendItemKey,\n {\n /**\n * Custom label for legend item (by default use keys from data item object)\n */\n label?: string;\n /**\n * Additional text after label\n */\n additionalInfo?: string;\n /**\n * Count after label\n */\n count?: number;\n /**\n * Custom Icon\n */\n icon?: typeof Icon;\n /**\n * Flag for uncheck some items by default\n */\n defaultChecked?: boolean;\n } & (T extends 'Table' ? { columns?: React.ReactNode[] } : { columns?: never })\n>;\n"],"mappings":"","ignoreList":[]}
@@ -20,10 +20,12 @@ class AreaChartComponent extends _AbstractChart.AbstractChart {
20
20
  const {
21
21
  xScale,
22
22
  marginY = 40,
23
- plotWidth,
24
23
  data,
25
24
  groupKey
26
25
  } = this.asProps;
26
+ const {
27
+ plotWidth
28
+ } = this;
27
29
  if (xScale) {
28
30
  return xScale;
29
31
  }
@@ -39,9 +41,11 @@ class AreaChartComponent extends _AbstractChart.AbstractChart {
39
41
  const {
40
42
  yScale,
41
43
  marginX = 24,
42
- plotHeight,
43
44
  stacked
44
45
  } = this.asProps;
46
+ const {
47
+ plotHeight
48
+ } = this;
45
49
  if (yScale) {
46
50
  return yScale;
47
51
  }