@semcore/d3-chart 2.13.4 → 2.13.5

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 (152) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/cjs/Area.js +59 -97
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Axis.js +76 -143
  5. package/lib/cjs/Axis.js.map +1 -1
  6. package/lib/cjs/Bar.js +49 -96
  7. package/lib/cjs/Bar.js.map +1 -1
  8. package/lib/cjs/Bubble.js +39 -81
  9. package/lib/cjs/Bubble.js.map +1 -1
  10. package/lib/cjs/ClipPath.js +9 -35
  11. package/lib/cjs/ClipPath.js.map +1 -1
  12. package/lib/cjs/Donut.js +77 -152
  13. package/lib/cjs/Donut.js.map +1 -1
  14. package/lib/cjs/Dots.js +29 -57
  15. package/lib/cjs/Dots.js.map +1 -1
  16. package/lib/cjs/GroupBar.js +5 -26
  17. package/lib/cjs/GroupBar.js.map +1 -1
  18. package/lib/cjs/HorizontalBar.js +43 -84
  19. package/lib/cjs/HorizontalBar.js.map +1 -1
  20. package/lib/cjs/Hover.js +33 -88
  21. package/lib/cjs/Hover.js.map +1 -1
  22. package/lib/cjs/Line.js +42 -78
  23. package/lib/cjs/Line.js.map +1 -1
  24. package/lib/cjs/Plot.js +27 -73
  25. package/lib/cjs/Plot.js.map +1 -1
  26. package/lib/cjs/Radar.js +152 -277
  27. package/lib/cjs/Radar.js.map +1 -1
  28. package/lib/cjs/RadialTree.js +105 -211
  29. package/lib/cjs/RadialTree.js.map +1 -1
  30. package/lib/cjs/ReferenceLine.js +45 -87
  31. package/lib/cjs/ReferenceLine.js.map +1 -1
  32. package/lib/cjs/ResponsiveContainer.js +9 -38
  33. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  34. package/lib/cjs/ScatterPlot.js +34 -74
  35. package/lib/cjs/ScatterPlot.js.map +1 -1
  36. package/lib/cjs/StackBar.js +9 -38
  37. package/lib/cjs/StackBar.js.map +1 -1
  38. package/lib/cjs/StackedArea.js +5 -29
  39. package/lib/cjs/StackedArea.js.map +1 -1
  40. package/lib/cjs/Tooltip.js +27 -76
  41. package/lib/cjs/Tooltip.js.map +1 -1
  42. package/lib/cjs/Venn.js +32 -75
  43. package/lib/cjs/Venn.js.map +1 -1
  44. package/lib/cjs/a11y/PlotA11yModule.js +18 -71
  45. package/lib/cjs/a11y/PlotA11yModule.js.map +1 -1
  46. package/lib/cjs/a11y/PlotA11yView.js +19 -83
  47. package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
  48. package/lib/cjs/a11y/bezier.js +0 -7
  49. package/lib/cjs/a11y/bezier.js.map +1 -1
  50. package/lib/cjs/a11y/focus.js +2 -11
  51. package/lib/cjs/a11y/focus.js.map +1 -1
  52. package/lib/cjs/a11y/hints.js +0 -13
  53. package/lib/cjs/a11y/hints.js.map +1 -1
  54. package/lib/cjs/a11y/insights.js +21 -132
  55. package/lib/cjs/a11y/insights.js.map +1 -1
  56. package/lib/cjs/a11y/intl.js +0 -6
  57. package/lib/cjs/a11y/intl.js.map +1 -1
  58. package/lib/cjs/a11y/locale.js +4 -22
  59. package/lib/cjs/a11y/locale.js.map +1 -1
  60. package/lib/cjs/a11y/serialize.js +23 -83
  61. package/lib/cjs/a11y/serialize.js.map +1 -1
  62. package/lib/cjs/a11y/summarize.js +0 -4
  63. package/lib/cjs/a11y/summarize.js.map +1 -1
  64. package/lib/cjs/a11y/translations/module/__intergalactic-dynamic-locales.js +0 -13
  65. package/lib/cjs/a11y/translations/module/__intergalactic-dynamic-locales.js.map +1 -1
  66. package/lib/cjs/a11y/translations/view/__intergalactic-dynamic-locales.js +0 -13
  67. package/lib/cjs/a11y/translations/view/__intergalactic-dynamic-locales.js.map +1 -1
  68. package/lib/cjs/color.js +0 -3
  69. package/lib/cjs/color.js.map +1 -1
  70. package/lib/cjs/createElement.js +18 -47
  71. package/lib/cjs/createElement.js.map +1 -1
  72. package/lib/cjs/index.js +0 -23
  73. package/lib/cjs/index.js.map +1 -1
  74. package/lib/cjs/types/Plot.d.js.map +1 -1
  75. package/lib/cjs/types/index.d.js +0 -39
  76. package/lib/cjs/types/index.d.js.map +1 -1
  77. package/lib/cjs/utils.js +7 -59
  78. package/lib/cjs/utils.js.map +1 -1
  79. package/lib/es6/Area.js +59 -86
  80. package/lib/es6/Area.js.map +1 -1
  81. package/lib/es6/Axis.js +76 -135
  82. package/lib/es6/Axis.js.map +1 -1
  83. package/lib/es6/Bar.js +49 -86
  84. package/lib/es6/Bar.js.map +1 -1
  85. package/lib/es6/Bubble.js +39 -70
  86. package/lib/es6/Bubble.js.map +1 -1
  87. package/lib/es6/ClipPath.js +9 -23
  88. package/lib/es6/ClipPath.js.map +1 -1
  89. package/lib/es6/Donut.js +77 -141
  90. package/lib/es6/Donut.js.map +1 -1
  91. package/lib/es6/Dots.js +29 -46
  92. package/lib/es6/Dots.js.map +1 -1
  93. package/lib/es6/GroupBar.js +5 -15
  94. package/lib/es6/GroupBar.js.map +1 -1
  95. package/lib/es6/HorizontalBar.js +43 -75
  96. package/lib/es6/HorizontalBar.js.map +1 -1
  97. package/lib/es6/Hover.js +33 -85
  98. package/lib/es6/Hover.js.map +1 -1
  99. package/lib/es6/Line.js +42 -67
  100. package/lib/es6/Line.js.map +1 -1
  101. package/lib/es6/Plot.js +27 -66
  102. package/lib/es6/Plot.js.map +1 -1
  103. package/lib/es6/Radar.js +152 -281
  104. package/lib/es6/Radar.js.map +1 -1
  105. package/lib/es6/RadialTree.js +105 -203
  106. package/lib/es6/RadialTree.js.map +1 -1
  107. package/lib/es6/ReferenceLine.js +45 -79
  108. package/lib/es6/ReferenceLine.js.map +1 -1
  109. package/lib/es6/ResponsiveContainer.js +9 -28
  110. package/lib/es6/ResponsiveContainer.js.map +1 -1
  111. package/lib/es6/ScatterPlot.js +34 -65
  112. package/lib/es6/ScatterPlot.js.map +1 -1
  113. package/lib/es6/StackBar.js +9 -26
  114. package/lib/es6/StackBar.js.map +1 -1
  115. package/lib/es6/StackedArea.js +5 -18
  116. package/lib/es6/StackedArea.js.map +1 -1
  117. package/lib/es6/Tooltip.js +27 -63
  118. package/lib/es6/Tooltip.js.map +1 -1
  119. package/lib/es6/Venn.js +32 -64
  120. package/lib/es6/Venn.js.map +1 -1
  121. package/lib/es6/a11y/PlotA11yModule.js +18 -52
  122. package/lib/es6/a11y/PlotA11yModule.js.map +1 -1
  123. package/lib/es6/a11y/PlotA11yView.js +19 -53
  124. package/lib/es6/a11y/PlotA11yView.js.map +1 -1
  125. package/lib/es6/a11y/bezier.js +0 -5
  126. package/lib/es6/a11y/bezier.js.map +1 -1
  127. package/lib/es6/a11y/focus.js +2 -9
  128. package/lib/es6/a11y/focus.js.map +1 -1
  129. package/lib/es6/a11y/hints.js +0 -3
  130. package/lib/es6/a11y/hints.js.map +1 -1
  131. package/lib/es6/a11y/insights.js +21 -133
  132. package/lib/es6/a11y/insights.js.map +1 -1
  133. package/lib/es6/a11y/intl.js +0 -1
  134. package/lib/es6/a11y/intl.js.map +1 -1
  135. package/lib/es6/a11y/locale.js +4 -18
  136. package/lib/es6/a11y/locale.js.map +1 -1
  137. package/lib/es6/a11y/serialize.js +23 -74
  138. package/lib/es6/a11y/serialize.js.map +1 -1
  139. package/lib/es6/a11y/summarize.js.map +1 -1
  140. package/lib/es6/a11y/translations/module/__intergalactic-dynamic-locales.js.map +1 -1
  141. package/lib/es6/a11y/translations/view/__intergalactic-dynamic-locales.js.map +1 -1
  142. package/lib/es6/color.js +0 -1
  143. package/lib/es6/color.js.map +1 -1
  144. package/lib/es6/createElement.js +18 -34
  145. package/lib/es6/createElement.js.map +1 -1
  146. package/lib/es6/index.js.map +1 -1
  147. package/lib/es6/types/Plot.d.js.map +1 -1
  148. package/lib/es6/types/index.d.js +5 -3
  149. package/lib/es6/types/index.d.js.map +1 -1
  150. package/lib/es6/utils.js +7 -28
  151. package/lib/es6/utils.js.map +1 -1
  152. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","names":["getPropByPath","obj","path","String","split","i","length","movingAverage","data","frame","result","Math","floor","ceil","startIndex","max","endIndex","min","part","slice","sum","reduce","item","value","push","extractDataInsights","hints","config","insights","dataType","dataRange","groupKeys","groups","dataTitle","axesTitle","vertical","horizontal","entitiesCount","keysMap","Object","fromEntries","keys","Array","isArray","map","key","fields","horizontalAxes","size","verticalAxes","valueAxes","possibleGroupKeys","filter","allData","row","Set","firstRow","lastRow","possibleValueKeys","valuesKeys","possibleLabelKeys","labelsKey","fromKey","toKey","from","titles","getHorizontalAxesTitle","to","label","valueKey","values","average","variance","standardDeviation","sqrt","trendStrengths","frameSize","longMovingAverageSize","longSize","shortMovingAverageSize","shortSize","longMovingAverage","shortMovingAverage","table","NaN","toFixed","strengthsMap","growth","weak","medium","strong","reduction","recordTrend","width","type","normalizedHeight","abs","pointsDensity","normalizedWidth","tang","trendStrength","trendTangens","strength","priority","change","dataKey","generalTrend","localTrends","notableDiff","lastSwitch","lastSwitchValue","shortWasAbove","shortIsAbove","diff","lastIndex","lastValue","guessedXKey","guessedYKey","guessedValueKey","guessedLabelKey","normalized","x","y","gridSize","clustersGridSize","grid","usedX","usedY","add","orderedX","sort","a","b","orderedY","distancesX","index","distancesY","avgDistanceX","avgDistanceY","belowAvgDistancesX","belowAvgDistancesY","betweenDistanceX","betweenDistanceY","avgDistance","Number","isNaN","takenY","takenX","gridX","round","gridY","clusterId","members","clusters","parseInt","pointHandled","xNeighbour","yNeighbour","undefined","clustersInsights","labels","uniqueLabels","relativeSize","center","xLabel","yLabel","relativeSizeDistrivution","Infinity","averageSize","cluster","smallerClusters","smallerSize","biggerClusters","biggerSize","normalizingSize","averageSizeNormalized","smallerSizeNormalized","biggerSizeNormalized","sizeMapBezier","makeBezier","weight","height","clustersInsight","mappedSize","sortedX","sortedY","makeRowKey","join","allRowsIds","groupedValues","groupName","rows","grouppingKeys","entries","groupKey","group","field","getVerticalAxesTitle","valuesAxes","averageValue","getValueAxesTitle","fieldPath","startsWith","substring","hasHighPriorityInsights","some","insight"],"sources":["../../../src/a11y/insights.ts"],"sourcesContent":["import { makeBezier } from './bezier';\nimport { DataStructureHints, DataSummarizationConfig } from './hints';\n\nexport type TrendNode = {\n type: 'trend';\n priority: number;\n change: {\n from: number;\n to: number;\n strength:\n | 'strong-reduction'\n | 'reduction'\n | 'weak-reduction'\n | 'static'\n | 'weak-growth'\n | 'growth'\n | 'strong-growth';\n };\n from: unknown;\n to: unknown;\n dataKey: string | number;\n};\nexport type GeneralTrendNode = Omit<TrendNode, 'type'> & { type: 'general-trend' };\nexport type ComparisonNode = {\n type: 'comparison';\n label?: string;\n priority: number;\n values: {\n value: unknown;\n label: string;\n }[];\n};\n\ntype ClusterRelativeSize =\n | 'significantly-smaller'\n | 'smaller'\n | 'slightly-smaller'\n | 'average'\n | 'slightly-bigger'\n | 'bigger'\n | 'significantly-bigger';\nexport type ClusterNode = {\n type: 'cluster';\n priority: number;\n size: number;\n labels: unknown[];\n center: {\n x: number;\n xLabel: string | number;\n y: number;\n yLabel: string | number;\n };\n relativeSize: ClusterRelativeSize;\n};\nexport type Insight = TrendNode | GeneralTrendNode | ComparisonNode | ClusterNode;\n\nexport type SerializableDataType =\n | 'time-series'\n | 'points-cloud'\n | 'values-set'\n | 'grouped-values'\n | 'indexed-groups';\n\nexport type AnalyzedData = {\n insights: Insight[];\n dataType: SerializableDataType;\n dataRange: {\n from: string | number | Date;\n to: string | number | Date;\n label: string | number | null;\n }[];\n dataTitle: string | null;\n entitiesCount: number;\n};\n\nconst getPropByPath = (obj: any, path: number | string | string[]): unknown => {\n if (typeof path === 'number') path = String(path);\n if (typeof path === 'string') path = path.split('.');\n for (let i = 0; i < path.length; i++) {\n if (typeof obj !== 'object' || obj === null) return obj;\n obj = obj[path[i]];\n }\n return obj;\n};\n\nconst movingAverage = (data: number[], frame: number) => {\n const result: number[] = [];\n frame = Math.floor(frame) % 2 === data.length % 2 ? Math.floor(frame) : Math.ceil(frame);\n\n for (let i = 0; i < data.length; i++) {\n let startIndex = Math.max(0, i - Math.floor(frame / 2));\n let endIndex = Math.min(data.length, i + Math.ceil(frame / 2));\n startIndex = Math.min(startIndex, Math.max(0, endIndex - frame));\n endIndex = Math.max(endIndex, Math.min(data.length, startIndex + frame));\n const part = data.slice(startIndex, endIndex);\n const sum = part.reduce((sum, item) => sum + item, 0);\n const value = sum / part.length;\n result.push(value);\n }\n return result;\n};\n\nexport const extractDataInsights = (\n data: Record<string, unknown>[] | Record<string, unknown>,\n hints: DataStructureHints,\n config: DataSummarizationConfig,\n): AnalyzedData => {\n let insights: AnalyzedData['insights'] = [];\n let dataType: AnalyzedData['dataType'] | null = config.dataType ?? hints.dataType;\n const dataRange: AnalyzedData['dataRange'] = [];\n let groupKeys = [...hints.groups];\n const dataTitle: string | null = hints.axesTitle.vertical ?? hints.axesTitle.horizontal;\n let entitiesCount = 0;\n\n const keysMap = Object.fromEntries(\n Object.keys((Array.isArray(data) ? data[0] : data) ?? {}).map((key) => [key, true]),\n );\n\n if (!dataType) {\n if (\n ((keysMap['y'] || keysMap['y1'] || keysMap['y2']) &&\n keysMap['x'] &&\n (keysMap['value'] || keysMap['label'])) ||\n (hints.fields.horizontalAxes.size > 0 &&\n hints.fields.verticalAxes.size > 0 &&\n hints.fields.valueAxes.size > 0)\n ) {\n dataType = 'points-cloud';\n } else if (Array.isArray(data) && data.length > 6) {\n dataType = 'time-series';\n } else if (Array.isArray(data) && Object.keys(keysMap).length >= 3) {\n const possibleGroupKeys = Object.keys(keysMap)\n .filter((key) => typeof data[0][key] === 'string')\n .filter((key) => {\n const allData = data.map((row) => row[key]);\n return new Set(allData).size === allData.length;\n });\n if (possibleGroupKeys.length === 1) {\n groupKeys = possibleGroupKeys;\n dataType = 'grouped-values';\n } else {\n dataType = 'values-set';\n }\n } else {\n dataType = 'values-set';\n }\n }\n\n if (dataType === 'grouped-values' && groupKeys.length === 0) {\n dataType = 'values-set';\n }\n\n if (Array.isArray(data)) {\n if (dataType === 'time-series') {\n const firstRow = data[0];\n const lastRow = data[data.length - 1];\n const possibleValueKeys = ['y', 'value', ...hints.fields.verticalAxes];\n const valuesKeys = possibleValueKeys.filter((key) => keysMap[key]);\n\n const possibleLabelKeys = ['label', 'x', ...hints.fields.horizontalAxes];\n const labelsKey = possibleLabelKeys.filter((key) => keysMap[key])[0];\n\n entitiesCount = Object.keys(valuesKeys).length;\n\n const fromKey = firstRow[labelsKey];\n const toKey = lastRow[labelsKey];\n const from =\n hints.titles.getHorizontalAxesTitle?.(fromKey as string) ??\n hints.titles.horizontalAxes[fromKey as string] ??\n (fromKey as string);\n const to =\n hints.titles.getHorizontalAxesTitle?.(toKey as string) ??\n hints.titles.horizontalAxes[toKey as string] ??\n (toKey as string);\n\n if (entitiesCount > 0) {\n dataRange.push({ from, to, label: hints.axesTitle.vertical ?? labelsKey });\n }\n\n for (const valueKey of valuesKeys) {\n const values = (data as Record<string, number>[]).map((row) => row[valueKey]);\n const sum = values.reduce((sum, value) => (sum += value), 0);\n const average = sum / values.length;\n const variance =\n (1 / values.length) *\n values.map((value) => (value - average) ** 2).reduce((sum, item) => sum + item, 0);\n const standardDeviation = Math.sqrt(variance);\n const trendStrengths = ['static', 'weak', 'medium', 'strong'] as const;\n\n const frameSize = Math.sqrt(values.length);\n const longMovingAverageSize = config.movingAverage.longSize ?? frameSize;\n const shortMovingAverageSize = config.movingAverage.shortSize ?? Math.sqrt(frameSize);\n const longMovingAverage = movingAverage(values, longMovingAverageSize);\n const shortMovingAverage =\n values.length < 8 ? values : movingAverage(values, shortMovingAverageSize);\n\n const table = [];\n for (const i in values) {\n table.push({\n value: (values[i] ?? NaN).toFixed(2),\n long: (longMovingAverage[i] ?? NaN).toFixed(2),\n short: (shortMovingAverage[i] ?? NaN).toFixed(2),\n });\n }\n\n const strengthsMap = {\n growth: {\n static: 'static',\n weak: 'weak-growth',\n medium: 'growth',\n strong: 'strong-growth',\n },\n reduction: {\n static: 'static',\n weak: 'weak-reduction',\n medium: 'reduction',\n strong: 'strong-reduction',\n },\n } as const;\n\n const recordTrend = ({\n value,\n width,\n label,\n type,\n }: {\n value: { from: number; to: number };\n width: number;\n label: { from: unknown; to: unknown; dataKey: string | number };\n type: 'general-trend' | 'trend';\n }): GeneralTrendNode | TrendNode | undefined => {\n for (let i = 0; i < trendStrengths.length; i++) {\n const normalizedHeight =\n Math.abs(value.from - value.to) / (hints.pointsDensity?.verticalAxes ?? 1);\n const normalizedWidth = width / (hints.pointsDensity?.horizontalAxes ?? 1);\n const tang = normalizedHeight / normalizedWidth;\n const trendStrength = trendStrengths[i];\n if (tang <= config.trendTangens[trendStrength] || i === trendStrengths.length - 1) {\n const strength =\n value.to > value.from\n ? strengthsMap.growth[trendStrength]\n : strengthsMap.reduction[trendStrength];\n\n return {\n type,\n priority: i,\n change: {\n from: value.from,\n to: value.to,\n strength,\n },\n from: label.from,\n to: label.to,\n dataKey: label.dataKey,\n };\n }\n }\n };\n\n const generalTrend = recordTrend({\n type: 'general-trend',\n value: {\n from: shortMovingAverage[0],\n to: shortMovingAverage[shortMovingAverage.length - 1],\n },\n width: data.length,\n label: { from, to, dataKey: valueKey },\n })!;\n const localTrends: Insight[] = [];\n {\n const notableDiff = config.movingAverage.notableDiff ?? standardDeviation / 10;\n let lastSwitch = 0;\n let lastSwitchValue = shortMovingAverage[lastSwitch];\n let shortWasAbove = shortMovingAverage[0] > longMovingAverage[0];\n for (let i = 1; i < data.length; i++) {\n const shortIsAbove = shortMovingAverage[i] > longMovingAverage[i];\n const diff = Math.abs(shortMovingAverage[i] - longMovingAverage[i]);\n\n if (shortIsAbove === shortWasAbove) continue;\n if (diff < notableDiff) continue;\n if (i === 0 && lastSwitch === data.length - 1) continue;\n if (i === data.length - 1 && lastSwitch === 0) continue;\n i = Math.min(i, data.length - 1);\n\n const fromKey = data[lastSwitch][labelsKey];\n const toKey = data[i][labelsKey];\n const from =\n hints.titles.getHorizontalAxesTitle?.(fromKey as string) ??\n hints.titles.horizontalAxes[fromKey as string] ??\n fromKey;\n const to =\n hints.titles.getHorizontalAxesTitle?.(toKey as string) ??\n hints.titles.horizontalAxes[toKey as string] ??\n toKey;\n localTrends.push(\n recordTrend({\n type: 'trend',\n value: {\n from: lastSwitchValue,\n to: shortMovingAverage[i],\n },\n width: i - lastSwitch,\n label: { from, to, dataKey: valueKey },\n })!,\n );\n lastSwitch = i;\n lastSwitchValue = shortMovingAverage[lastSwitch];\n shortWasAbove = shortIsAbove;\n }\n\n if (lastSwitch !== 0) {\n const lastIndex = shortMovingAverage.length - 1;\n const lastValue = shortMovingAverage[lastIndex];\n if (Math.abs(lastSwitchValue - lastValue) > notableDiff) {\n localTrends.push(\n recordTrend({\n type: 'trend',\n value: {\n from: lastSwitchValue,\n to: lastValue,\n },\n width: lastIndex - lastSwitch,\n label: {\n from: data[lastSwitch][labelsKey],\n to: data[lastIndex][labelsKey],\n dataKey: valueKey,\n },\n })!,\n );\n }\n }\n }\n insights.push(generalTrend);\n insights.push(...localTrends);\n }\n } else if (dataType === 'points-cloud') {\n const guessedXKey = [...hints.fields.horizontalAxes.values(), 'x'][0];\n const guessedYKey = [...hints.fields.verticalAxes.values(), 'y'][0];\n const guessedValueKey = [...hints.fields.valueAxes.values(), 'value'][0];\n const guessedLabelKey = keysMap['label'] ? 'label' : guessedValueKey;\n const normalized = data.map((row) => ({\n x: row[guessedXKey] as number,\n y: row[guessedYKey] as number,\n label: row[guessedLabelKey],\n value: row[guessedValueKey] as number,\n }));\n let gridSize =\n config.clustersGridSize ?? hints.grid.verticalAxes ?? hints.grid.horizontalAxes;\n if (!gridSize) {\n const usedX = new Set<number>();\n const usedY = new Set<number>();\n for (const { x, y } of normalized) {\n usedX.add(x);\n usedY.add(y);\n }\n const orderedX = [...usedX].sort((a, b) => a - b);\n const orderedY = [...usedY].sort((a, b) => a - b);\n const distancesX = orderedX.slice(0, -1).map((x, index) => orderedX[index + 1] - x);\n const distancesY = orderedY.slice(0, -1).map((y, index) => orderedY[index + 1] - y);\n const avgDistanceX = distancesX.reduce((sum, x) => sum + x, 0) / distancesX.length;\n const avgDistanceY = distancesY.reduce((sum, y) => sum + y, 0) / distancesY.length;\n const belowAvgDistancesX = distancesX.filter((x) => x < avgDistanceX);\n const belowAvgDistancesY = distancesY.filter((y) => y < avgDistanceY);\n const betweenDistanceX =\n belowAvgDistancesX.reduce((sum, x) => sum + x, 0) / belowAvgDistancesX.length;\n const betweenDistanceY =\n belowAvgDistancesY.reduce((sum, y) => sum + y, 0) / belowAvgDistancesY.length;\n let avgDistance = 0;\n if (!Number.isNaN(betweenDistanceX) && !Number.isNaN(betweenDistanceY)) {\n avgDistance = (betweenDistanceX + betweenDistanceY) / 2;\n } else if (!Number.isNaN(betweenDistanceX)) {\n avgDistance = betweenDistanceX;\n } else if (!Number.isNaN(betweenDistanceY)) {\n avgDistance = betweenDistanceY;\n } else {\n avgDistance = (avgDistanceX + avgDistanceY) / 2;\n }\n gridSize = Math.sqrt(Math.sqrt(avgDistance));\n }\n\n const grid: {\n [x: string]: { [y: string]: { clusterId: string; members: typeof normalized } };\n } = {};\n const takenY = new Set<number>();\n const takenX = new Set<number>();\n for (let i = 0; i < normalized.length; i++) {\n const { x, y } = normalized[i];\n const gridX = Math.round(x / gridSize!);\n const gridY = Math.round(y / gridSize!);\n takenY.add(y);\n takenX.add(x);\n grid[gridX] = grid[gridX] ?? {};\n grid[gridX][gridY] = grid[gridX][gridY] ?? { clusterId: `${gridX}_${gridY}`, members: [] };\n grid[gridX][gridY].members.push(normalized[i]);\n }\n const clusters: { [clusterId: string]: typeof normalized } = {};\n for (const x of Object.keys(grid).map((x) => parseInt(x, 10))) {\n for (const y of Object.keys(grid[x]).map((y) => parseInt(y, 10))) {\n let pointHandled = false;\n for (const xNeighbour of [x - 1, x, x + 1]) {\n for (const yNeighbour of [y - 1, y, y + 1]) {\n if (xNeighbour === undefined || yNeighbour === undefined) continue;\n if (xNeighbour === x && yNeighbour === y) continue;\n if (!grid[xNeighbour]?.[yNeighbour]) continue;\n pointHandled = true;\n grid[x][y].clusterId = grid[xNeighbour][yNeighbour].clusterId;\n break;\n }\n if (pointHandled) break;\n }\n clusters[grid[x][y].clusterId] = clusters[grid[x][y].clusterId] ?? [];\n clusters[grid[x][y].clusterId].push(...grid[x][y].members);\n }\n }\n const clustersInsights: ClusterNode[] = [];\n for (const clusterId in clusters) {\n const size = clusters[clusterId].reduce((sum, { value }) => sum + (value ?? 1), 0);\n const labels = [...clusters[clusterId]]\n .sort((a, b) => b.value - a.value)\n .map(({ label }) => label)\n .filter((label) => label !== undefined);\n const uniqueLabels = [...new Set(labels)];\n const x =\n clusters[clusterId].reduce((sum, { x }) => sum + x, 0) / clusters[clusterId].length;\n const y =\n clusters[clusterId].reduce((sum, { y }) => sum + y, 0) / clusters[clusterId].length;\n\n clustersInsights.push({\n type: 'cluster',\n priority: 1,\n size,\n labels: uniqueLabels,\n relativeSize: 'average',\n center: {\n x,\n y,\n xLabel: hints.axesTitle.horizontal ?? guessedXKey,\n yLabel: hints.axesTitle.vertical ?? guessedYKey,\n },\n });\n }\n entitiesCount = Object.keys(clusters).length;\n clustersInsights.sort((a, b) => b.size - a.size);\n\n const relativeSizeDistrivution = {\n ['significantly-bigger']: { max: Infinity, min: 0.85 },\n ['bigger']: { min: 0.7, max: 0.85 },\n ['slightly-bigger']: { min: 0.6, max: 0.7 },\n ['average']: { min: 0.4, max: 0.6 },\n ['slightly-smaller']: { max: 0.4, min: 0.3 },\n ['smaller']: { min: 0.15, max: 0.3 },\n ['significantly-smaller']: { min: -Infinity, max: 0.15 },\n } as { [key in ClusterRelativeSize]: { min: number; max: number } };\n const averageSize =\n clustersInsights.reduce((sum, cluster) => sum + cluster.size, 0) / clustersInsights.length;\n const smallerClusters = clustersInsights.filter((cluster) => cluster.size < averageSize);\n const smallerSize =\n smallerClusters.reduce((sum, cluster) => sum + cluster.size, 0) / smallerClusters.length;\n const biggerClusters = clustersInsights.filter((cluster) => cluster.size > averageSize);\n const biggerSize =\n biggerClusters.reduce((sum, cluster) => sum + cluster.size, 0) / biggerClusters.length;\n\n const normalizingSize = averageSize * 2;\n let averageSizeNormalized = averageSize / normalizingSize;\n let smallerSizeNormalized = smallerSize / normalizingSize;\n let biggerSizeNormalized = biggerSize / normalizingSize;\n\n smallerSizeNormalized = !Number.isNaN(smallerSizeNormalized) ? smallerSizeNormalized : 0.25;\n averageSizeNormalized = !Number.isNaN(averageSizeNormalized) ? averageSizeNormalized : 0.5;\n biggerSizeNormalized = !Number.isNaN(biggerSizeNormalized) ? biggerSizeNormalized : 0.75;\n\n const sizeMapBezier = makeBezier(\n [\n { x: 0, y: 0 },\n { x: 0.25, y: smallerSizeNormalized, weight: 10 },\n { x: 0.5, y: averageSizeNormalized },\n { x: 0.75, y: biggerSizeNormalized, weight: 10 },\n { x: 1, y: 1 },\n ],\n { width: 1, height: 1 },\n );\n\n for (const clustersInsight of clustersInsights) {\n const { size } = clustersInsight;\n const mappedSize = sizeMapBezier(size / normalizingSize);\n for (const relativeSize in relativeSizeDistrivution) {\n const { min, max } = relativeSizeDistrivution[relativeSize as ClusterRelativeSize];\n if (mappedSize > min && mappedSize <= max) {\n clustersInsight.relativeSize = relativeSize as ClusterRelativeSize;\n break;\n }\n }\n }\n\n insights.push(...clustersInsights);\n\n if (hints.axesTitle.horizontal) {\n const sortedX = [...takenX].sort((a, b) => a - b);\n dataRange.push({\n from: sortedX[0] as any,\n to: sortedX[sortedX.length - 1] as any,\n label: hints.axesTitle.horizontal,\n });\n }\n if (hints.axesTitle.vertical) {\n const sortedY = [...takenY].sort((a, b) => a - b);\n dataRange.push({\n from: sortedY[0] as any,\n to: sortedY[sortedY.length - 1] as any,\n label: hints.axesTitle.vertical,\n });\n }\n } else if (dataType === 'grouped-values') {\n const makeRowKey = (row: Record<string, unknown>) =>\n groupKeys.map((key, index) => `${index}-${getPropByPath(row, key)}`).join('-');\n const allRowsIds = data.map(makeRowKey);\n const groupedValues: {\n [groupId: string]: { groupName: string; rows: Record<string, unknown>[] };\n } = {};\n for (let i = 0; i < data.length; i++) {\n const row = data[i];\n const key = allRowsIds[i];\n groupedValues[key] = groupedValues[key] ?? {\n groupName: getPropByPath(row, groupKeys[0]) as string,\n rows: [],\n };\n groupedValues[key].rows.push(row);\n }\n\n let fields = [...hints.fields.values];\n const grouppingKeys = Object.fromEntries(groupKeys.map((key) => [key, true]));\n if (fields.length === 0) {\n fields.push(...Object.keys(keysMap));\n }\n fields = fields.filter((key) => !grouppingKeys[key]);\n const groups = Object.entries(groupedValues).map(([groupKey, group]) => {\n const values: { label: string; value: unknown }[] = [];\n for (const row of group.rows) {\n for (const field of fields) {\n values.push({\n label:\n hints.titles.getVerticalAxesTitle?.(field) ??\n hints.titles.valuesAxes[field] ??\n (field as string),\n value: getPropByPath(row, field),\n });\n }\n }\n\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n const averageValue =\n values.reduce((sum, { value }) => sum + (value as number), 0) / values.length;\n return {\n label: group.groupName ?? groupKey,\n values,\n averageValue: !Number.isNaN(averageValue) ? averageValue : undefined,\n };\n });\n\n groups.sort((a, b) => {\n if (typeof a.averageValue !== 'number' || typeof b.averageValue !== 'number') return 0;\n return b.averageValue - a.averageValue;\n });\n entitiesCount = groups.length;\n insights.push(\n ...groups.map(\n (group) =>\n ({\n type: 'comparison',\n label: group.label,\n values: group.values,\n priority: 1,\n } as ComparisonNode),\n ),\n );\n }\n }\n if (dataType === 'values-set') {\n const fields = [...hints.fields.values];\n if (fields.length === 0) {\n fields.push(...Object.keys(keysMap));\n }\n const values = fields.map((field) => ({\n label:\n hints.titles.getValueAxesTitle?.(field) ??\n hints.titles.valuesAxes[field] ??\n (field as string),\n value: getPropByPath(data, field),\n }));\n entitiesCount = values.length;\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n insights.push({\n type: 'comparison',\n values,\n priority: 1,\n });\n }\n if (dataType === 'indexed-groups') {\n const groups = [...hints.groups].map((groupKey) => {\n const values = [...hints.fields.values]\n .filter((fieldPath) => String(fieldPath).startsWith(`${groupKey}.`))\n .map((fieldPath) => ({\n label: getPropByPath(\n hints.titles.valuesAxes,\n String(fieldPath).substring(String(groupKey).length + 1),\n ),\n value: getPropByPath(data, String(fieldPath)),\n }));\n\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n const averageValue =\n values.reduce((sum, { value }) => sum + (value as number), 0) / values.length;\n return {\n label: getPropByPath(hints.titles.valuesAxes, String(groupKey)) ?? groupKey,\n values,\n averageValue: !Number.isNaN(averageValue) ? averageValue : undefined,\n };\n });\n\n groups.sort((a, b) => {\n if (typeof a.averageValue !== 'number' || typeof b.averageValue !== 'number') return 0;\n return b.averageValue - a.averageValue;\n });\n entitiesCount = groups.length;\n insights.push(\n ...groups.map(\n (group) =>\n ({\n type: 'comparison',\n label: group.label,\n values: group.values,\n priority: 1,\n } as ComparisonNode),\n ),\n );\n }\n\n const hasHighPriorityInsights = insights.some((insight) => insight.priority > 0);\n if (hasHighPriorityInsights) {\n insights = insights.filter((insight) => insight.priority > 0);\n } else {\n insights = insights.slice(0, 1);\n }\n\n return { insights, dataType: dataType!, dataRange, dataTitle, entitiesCount };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"insights.js","names":["_bezier","require","getPropByPath","obj","path","String","split","i","length","_typeof2","movingAverage","data","frame","result","Math","floor","ceil","startIndex","max","endIndex","min","part","slice","sum","reduce","item","value","push","extractDataInsights","hints","config","_config$dataType","_hints$axesTitle$vert","_ref","insights","dataType","dataRange","groupKeys","_toConsumableArray2","groups","dataTitle","axesTitle","vertical","horizontal","entitiesCount","keysMap","Object","fromEntries","keys","Array","isArray","map","key","fields","horizontalAxes","size","verticalAxes","valueAxes","possibleGroupKeys","filter","allData","row","Set","_ref2","_hints$titles$getHori","_hints$titles$getHori2","_hints$titles","_ref3","_hints$titles$getHori3","_hints$titles$getHori4","_hints$titles2","firstRow","lastRow","possibleValueKeys","concat","valuesKeys","possibleLabelKeys","labelsKey","fromKey","toKey","from","titles","getHorizontalAxesTitle","call","to","_hints$axesTitle$vert2","label","_iterator","_createForOfIteratorHelper2","_step","_loop","_config$movingAverage","_config$movingAverage2","_insights","valueKey","values","average","variance","pow","standardDeviation","sqrt","trendStrengths","frameSize","longMovingAverageSize","longSize","shortMovingAverageSize","shortSize","longMovingAverage","shortMovingAverage","table","_values$i","_longMovingAverage$i","_shortMovingAverage$i","NaN","toFixed","strengthsMap","growth","weak","medium","strong","reduction","recordTrend","_ref4","width","type","_hints$pointsDensity$","_hints$pointsDensity","_hints$pointsDensity$2","_hints$pointsDensity2","normalizedHeight","abs","pointsDensity","normalizedWidth","tang","trendStrength","trendTangens","strength","priority","change","dataKey","generalTrend","localTrends","_config$movingAverage3","notableDiff","lastSwitch","lastSwitchValue","shortWasAbove","_ref5","_hints$titles$getHori5","_hints$titles$getHori6","_hints$titles3","_ref6","_hints$titles$getHori7","_hints$titles$getHori8","_hints$titles4","shortIsAbove","diff","lastIndex","lastValue","apply","s","n","done","err","e","f","_ref7","_config$clustersGridS","_relativeSizeDistrivu","_insights2","guessedXKey","guessedYKey","guessedValueKey","guessedLabelKey","normalized","x","y","gridSize","clustersGridSize","grid","usedX","usedY","_iterator2","_step2","_step2$value","add","orderedX","sort","a","b","orderedY","distancesX","index","distancesY","avgDistanceX","avgDistanceY","belowAvgDistancesX","belowAvgDistancesY","betweenDistanceX","betweenDistanceY","avgDistance","Number","isNaN","takenY","takenX","_grid$gridX","_grid$gridX$gridY","_normalized$i","gridX","round","gridY","clusterId","members","clusters","_iterator3","parseInt","_step3","_iterator4","_step4","_clusters$grid$_x4$_y","_clusters$grid$_x4$_y2","pointHandled","_i4","_arr","xNeighbour","_i5","_arr2","_grid$xNeighbour","yNeighbour","undefined","clustersInsights","_hints$axesTitle$hori","_hints$axesTitle$vert3","_ref8","labels","_ref9","uniqueLabels","_ref10","_ref11","relativeSize","center","xLabel","yLabel","relativeSizeDistrivution","_defineProperty2","Infinity","averageSize","cluster","smallerClusters","smallerSize","biggerClusters","biggerSize","normalizingSize","averageSizeNormalized","smallerSizeNormalized","biggerSizeNormalized","sizeMapBezier","makeBezier","weight","height","_i3","_clustersInsights","clustersInsight","mappedSize","_relativeSizeDistrivu2","sortedX","sortedY","_insights3","makeRowKey","join","allRowsIds","groupedValues","_groupedValues$key","groupName","rows","grouppingKeys","_fields","entries","_ref12","_group$groupName","_ref13","_slicedToArray2","groupKey","group","_iterator5","_step5","_iterator6","_step6","_ref15","_hints$titles$getVert","_hints$titles$getVert2","_hints$titles5","field","getVerticalAxesTitle","valuesAxes","averageValue","_ref14","_ref16","_hints$titles$getValu","_hints$titles$getValu2","_hints$titles6","getValueAxesTitle","_insights4","_getPropByPath","fieldPath","startsWith","substring","_ref17","hasHighPriorityInsights","some","insight","exports"],"sources":["../../../src/a11y/insights.ts"],"sourcesContent":["import { makeBezier } from './bezier';\nimport { DataStructureHints, DataSummarizationConfig } from './hints';\n\nexport type TrendNode = {\n type: 'trend';\n priority: number;\n change: {\n from: number;\n to: number;\n strength:\n | 'strong-reduction'\n | 'reduction'\n | 'weak-reduction'\n | 'static'\n | 'weak-growth'\n | 'growth'\n | 'strong-growth';\n };\n from: unknown;\n to: unknown;\n dataKey: string | number;\n};\nexport type GeneralTrendNode = Omit<TrendNode, 'type'> & { type: 'general-trend' };\nexport type ComparisonNode = {\n type: 'comparison';\n label?: string;\n priority: number;\n values: {\n value: unknown;\n label: string;\n }[];\n};\n\ntype ClusterRelativeSize =\n | 'significantly-smaller'\n | 'smaller'\n | 'slightly-smaller'\n | 'average'\n | 'slightly-bigger'\n | 'bigger'\n | 'significantly-bigger';\nexport type ClusterNode = {\n type: 'cluster';\n priority: number;\n size: number;\n labels: unknown[];\n center: {\n x: number;\n xLabel: string | number;\n y: number;\n yLabel: string | number;\n };\n relativeSize: ClusterRelativeSize;\n};\nexport type Insight = TrendNode | GeneralTrendNode | ComparisonNode | ClusterNode;\n\nexport type SerializableDataType =\n | 'time-series'\n | 'points-cloud'\n | 'values-set'\n | 'grouped-values'\n | 'indexed-groups';\n\nexport type AnalyzedData = {\n insights: Insight[];\n dataType: SerializableDataType;\n dataRange: {\n from: string | number | Date;\n to: string | number | Date;\n label: string | number | null;\n }[];\n dataTitle: string | null;\n entitiesCount: number;\n};\n\nconst getPropByPath = (obj: any, path: number | string | string[]): unknown => {\n if (typeof path === 'number') path = String(path);\n if (typeof path === 'string') path = path.split('.');\n for (let i = 0; i < path.length; i++) {\n if (typeof obj !== 'object' || obj === null) return obj;\n obj = obj[path[i]];\n }\n return obj;\n};\n\nconst movingAverage = (data: number[], frame: number) => {\n const result: number[] = [];\n frame = Math.floor(frame) % 2 === data.length % 2 ? Math.floor(frame) : Math.ceil(frame);\n\n for (let i = 0; i < data.length; i++) {\n let startIndex = Math.max(0, i - Math.floor(frame / 2));\n let endIndex = Math.min(data.length, i + Math.ceil(frame / 2));\n startIndex = Math.min(startIndex, Math.max(0, endIndex - frame));\n endIndex = Math.max(endIndex, Math.min(data.length, startIndex + frame));\n const part = data.slice(startIndex, endIndex);\n const sum = part.reduce((sum, item) => sum + item, 0);\n const value = sum / part.length;\n result.push(value);\n }\n return result;\n};\n\nexport const extractDataInsights = (\n data: Record<string, unknown>[] | Record<string, unknown>,\n hints: DataStructureHints,\n config: DataSummarizationConfig,\n): AnalyzedData => {\n let insights: AnalyzedData['insights'] = [];\n let dataType: AnalyzedData['dataType'] | null = config.dataType ?? hints.dataType;\n const dataRange: AnalyzedData['dataRange'] = [];\n let groupKeys = [...hints.groups];\n const dataTitle: string | null = hints.axesTitle.vertical ?? hints.axesTitle.horizontal;\n let entitiesCount = 0;\n\n const keysMap = Object.fromEntries(\n Object.keys((Array.isArray(data) ? data[0] : data) ?? {}).map((key) => [key, true]),\n );\n\n if (!dataType) {\n if (\n ((keysMap['y'] || keysMap['y1'] || keysMap['y2']) &&\n keysMap['x'] &&\n (keysMap['value'] || keysMap['label'])) ||\n (hints.fields.horizontalAxes.size > 0 &&\n hints.fields.verticalAxes.size > 0 &&\n hints.fields.valueAxes.size > 0)\n ) {\n dataType = 'points-cloud';\n } else if (Array.isArray(data) && data.length > 6) {\n dataType = 'time-series';\n } else if (Array.isArray(data) && Object.keys(keysMap).length >= 3) {\n const possibleGroupKeys = Object.keys(keysMap)\n .filter((key) => typeof data[0][key] === 'string')\n .filter((key) => {\n const allData = data.map((row) => row[key]);\n return new Set(allData).size === allData.length;\n });\n if (possibleGroupKeys.length === 1) {\n groupKeys = possibleGroupKeys;\n dataType = 'grouped-values';\n } else {\n dataType = 'values-set';\n }\n } else {\n dataType = 'values-set';\n }\n }\n\n if (dataType === 'grouped-values' && groupKeys.length === 0) {\n dataType = 'values-set';\n }\n\n if (Array.isArray(data)) {\n if (dataType === 'time-series') {\n const firstRow = data[0];\n const lastRow = data[data.length - 1];\n const possibleValueKeys = ['y', 'value', ...hints.fields.verticalAxes];\n const valuesKeys = possibleValueKeys.filter((key) => keysMap[key]);\n\n const possibleLabelKeys = ['label', 'x', ...hints.fields.horizontalAxes];\n const labelsKey = possibleLabelKeys.filter((key) => keysMap[key])[0];\n\n entitiesCount = Object.keys(valuesKeys).length;\n\n const fromKey = firstRow[labelsKey];\n const toKey = lastRow[labelsKey];\n const from =\n hints.titles.getHorizontalAxesTitle?.(fromKey as string) ??\n hints.titles.horizontalAxes[fromKey as string] ??\n (fromKey as string);\n const to =\n hints.titles.getHorizontalAxesTitle?.(toKey as string) ??\n hints.titles.horizontalAxes[toKey as string] ??\n (toKey as string);\n\n if (entitiesCount > 0) {\n dataRange.push({ from, to, label: hints.axesTitle.vertical ?? labelsKey });\n }\n\n for (const valueKey of valuesKeys) {\n const values = (data as Record<string, number>[]).map((row) => row[valueKey]);\n const sum = values.reduce((sum, value) => (sum += value), 0);\n const average = sum / values.length;\n const variance =\n (1 / values.length) *\n values.map((value) => (value - average) ** 2).reduce((sum, item) => sum + item, 0);\n const standardDeviation = Math.sqrt(variance);\n const trendStrengths = ['static', 'weak', 'medium', 'strong'] as const;\n\n const frameSize = Math.sqrt(values.length);\n const longMovingAverageSize = config.movingAverage.longSize ?? frameSize;\n const shortMovingAverageSize = config.movingAverage.shortSize ?? Math.sqrt(frameSize);\n const longMovingAverage = movingAverage(values, longMovingAverageSize);\n const shortMovingAverage =\n values.length < 8 ? values : movingAverage(values, shortMovingAverageSize);\n\n const table = [];\n for (const i in values) {\n table.push({\n value: (values[i] ?? NaN).toFixed(2),\n long: (longMovingAverage[i] ?? NaN).toFixed(2),\n short: (shortMovingAverage[i] ?? NaN).toFixed(2),\n });\n }\n\n const strengthsMap = {\n growth: {\n static: 'static',\n weak: 'weak-growth',\n medium: 'growth',\n strong: 'strong-growth',\n },\n reduction: {\n static: 'static',\n weak: 'weak-reduction',\n medium: 'reduction',\n strong: 'strong-reduction',\n },\n } as const;\n\n const recordTrend = ({\n value,\n width,\n label,\n type,\n }: {\n value: { from: number; to: number };\n width: number;\n label: { from: unknown; to: unknown; dataKey: string | number };\n type: 'general-trend' | 'trend';\n }): GeneralTrendNode | TrendNode | undefined => {\n for (let i = 0; i < trendStrengths.length; i++) {\n const normalizedHeight =\n Math.abs(value.from - value.to) / (hints.pointsDensity?.verticalAxes ?? 1);\n const normalizedWidth = width / (hints.pointsDensity?.horizontalAxes ?? 1);\n const tang = normalizedHeight / normalizedWidth;\n const trendStrength = trendStrengths[i];\n if (tang <= config.trendTangens[trendStrength] || i === trendStrengths.length - 1) {\n const strength =\n value.to > value.from\n ? strengthsMap.growth[trendStrength]\n : strengthsMap.reduction[trendStrength];\n\n return {\n type,\n priority: i,\n change: {\n from: value.from,\n to: value.to,\n strength,\n },\n from: label.from,\n to: label.to,\n dataKey: label.dataKey,\n };\n }\n }\n };\n\n const generalTrend = recordTrend({\n type: 'general-trend',\n value: {\n from: shortMovingAverage[0],\n to: shortMovingAverage[shortMovingAverage.length - 1],\n },\n width: data.length,\n label: { from, to, dataKey: valueKey },\n })!;\n const localTrends: Insight[] = [];\n {\n const notableDiff = config.movingAverage.notableDiff ?? standardDeviation / 10;\n let lastSwitch = 0;\n let lastSwitchValue = shortMovingAverage[lastSwitch];\n let shortWasAbove = shortMovingAverage[0] > longMovingAverage[0];\n for (let i = 1; i < data.length; i++) {\n const shortIsAbove = shortMovingAverage[i] > longMovingAverage[i];\n const diff = Math.abs(shortMovingAverage[i] - longMovingAverage[i]);\n\n if (shortIsAbove === shortWasAbove) continue;\n if (diff < notableDiff) continue;\n if (i === 0 && lastSwitch === data.length - 1) continue;\n if (i === data.length - 1 && lastSwitch === 0) continue;\n i = Math.min(i, data.length - 1);\n\n const fromKey = data[lastSwitch][labelsKey];\n const toKey = data[i][labelsKey];\n const from =\n hints.titles.getHorizontalAxesTitle?.(fromKey as string) ??\n hints.titles.horizontalAxes[fromKey as string] ??\n fromKey;\n const to =\n hints.titles.getHorizontalAxesTitle?.(toKey as string) ??\n hints.titles.horizontalAxes[toKey as string] ??\n toKey;\n localTrends.push(\n recordTrend({\n type: 'trend',\n value: {\n from: lastSwitchValue,\n to: shortMovingAverage[i],\n },\n width: i - lastSwitch,\n label: { from, to, dataKey: valueKey },\n })!,\n );\n lastSwitch = i;\n lastSwitchValue = shortMovingAverage[lastSwitch];\n shortWasAbove = shortIsAbove;\n }\n\n if (lastSwitch !== 0) {\n const lastIndex = shortMovingAverage.length - 1;\n const lastValue = shortMovingAverage[lastIndex];\n if (Math.abs(lastSwitchValue - lastValue) > notableDiff) {\n localTrends.push(\n recordTrend({\n type: 'trend',\n value: {\n from: lastSwitchValue,\n to: lastValue,\n },\n width: lastIndex - lastSwitch,\n label: {\n from: data[lastSwitch][labelsKey],\n to: data[lastIndex][labelsKey],\n dataKey: valueKey,\n },\n })!,\n );\n }\n }\n }\n insights.push(generalTrend);\n insights.push(...localTrends);\n }\n } else if (dataType === 'points-cloud') {\n const guessedXKey = [...hints.fields.horizontalAxes.values(), 'x'][0];\n const guessedYKey = [...hints.fields.verticalAxes.values(), 'y'][0];\n const guessedValueKey = [...hints.fields.valueAxes.values(), 'value'][0];\n const guessedLabelKey = keysMap['label'] ? 'label' : guessedValueKey;\n const normalized = data.map((row) => ({\n x: row[guessedXKey] as number,\n y: row[guessedYKey] as number,\n label: row[guessedLabelKey],\n value: row[guessedValueKey] as number,\n }));\n let gridSize =\n config.clustersGridSize ?? hints.grid.verticalAxes ?? hints.grid.horizontalAxes;\n if (!gridSize) {\n const usedX = new Set<number>();\n const usedY = new Set<number>();\n for (const { x, y } of normalized) {\n usedX.add(x);\n usedY.add(y);\n }\n const orderedX = [...usedX].sort((a, b) => a - b);\n const orderedY = [...usedY].sort((a, b) => a - b);\n const distancesX = orderedX.slice(0, -1).map((x, index) => orderedX[index + 1] - x);\n const distancesY = orderedY.slice(0, -1).map((y, index) => orderedY[index + 1] - y);\n const avgDistanceX = distancesX.reduce((sum, x) => sum + x, 0) / distancesX.length;\n const avgDistanceY = distancesY.reduce((sum, y) => sum + y, 0) / distancesY.length;\n const belowAvgDistancesX = distancesX.filter((x) => x < avgDistanceX);\n const belowAvgDistancesY = distancesY.filter((y) => y < avgDistanceY);\n const betweenDistanceX =\n belowAvgDistancesX.reduce((sum, x) => sum + x, 0) / belowAvgDistancesX.length;\n const betweenDistanceY =\n belowAvgDistancesY.reduce((sum, y) => sum + y, 0) / belowAvgDistancesY.length;\n let avgDistance = 0;\n if (!Number.isNaN(betweenDistanceX) && !Number.isNaN(betweenDistanceY)) {\n avgDistance = (betweenDistanceX + betweenDistanceY) / 2;\n } else if (!Number.isNaN(betweenDistanceX)) {\n avgDistance = betweenDistanceX;\n } else if (!Number.isNaN(betweenDistanceY)) {\n avgDistance = betweenDistanceY;\n } else {\n avgDistance = (avgDistanceX + avgDistanceY) / 2;\n }\n gridSize = Math.sqrt(Math.sqrt(avgDistance));\n }\n\n const grid: {\n [x: string]: { [y: string]: { clusterId: string; members: typeof normalized } };\n } = {};\n const takenY = new Set<number>();\n const takenX = new Set<number>();\n for (let i = 0; i < normalized.length; i++) {\n const { x, y } = normalized[i];\n const gridX = Math.round(x / gridSize!);\n const gridY = Math.round(y / gridSize!);\n takenY.add(y);\n takenX.add(x);\n grid[gridX] = grid[gridX] ?? {};\n grid[gridX][gridY] = grid[gridX][gridY] ?? { clusterId: `${gridX}_${gridY}`, members: [] };\n grid[gridX][gridY].members.push(normalized[i]);\n }\n const clusters: { [clusterId: string]: typeof normalized } = {};\n for (const x of Object.keys(grid).map((x) => parseInt(x, 10))) {\n for (const y of Object.keys(grid[x]).map((y) => parseInt(y, 10))) {\n let pointHandled = false;\n for (const xNeighbour of [x - 1, x, x + 1]) {\n for (const yNeighbour of [y - 1, y, y + 1]) {\n if (xNeighbour === undefined || yNeighbour === undefined) continue;\n if (xNeighbour === x && yNeighbour === y) continue;\n if (!grid[xNeighbour]?.[yNeighbour]) continue;\n pointHandled = true;\n grid[x][y].clusterId = grid[xNeighbour][yNeighbour].clusterId;\n break;\n }\n if (pointHandled) break;\n }\n clusters[grid[x][y].clusterId] = clusters[grid[x][y].clusterId] ?? [];\n clusters[grid[x][y].clusterId].push(...grid[x][y].members);\n }\n }\n const clustersInsights: ClusterNode[] = [];\n for (const clusterId in clusters) {\n const size = clusters[clusterId].reduce((sum, { value }) => sum + (value ?? 1), 0);\n const labels = [...clusters[clusterId]]\n .sort((a, b) => b.value - a.value)\n .map(({ label }) => label)\n .filter((label) => label !== undefined);\n const uniqueLabels = [...new Set(labels)];\n const x =\n clusters[clusterId].reduce((sum, { x }) => sum + x, 0) / clusters[clusterId].length;\n const y =\n clusters[clusterId].reduce((sum, { y }) => sum + y, 0) / clusters[clusterId].length;\n\n clustersInsights.push({\n type: 'cluster',\n priority: 1,\n size,\n labels: uniqueLabels,\n relativeSize: 'average',\n center: {\n x,\n y,\n xLabel: hints.axesTitle.horizontal ?? guessedXKey,\n yLabel: hints.axesTitle.vertical ?? guessedYKey,\n },\n });\n }\n entitiesCount = Object.keys(clusters).length;\n clustersInsights.sort((a, b) => b.size - a.size);\n\n const relativeSizeDistrivution = {\n ['significantly-bigger']: { max: Infinity, min: 0.85 },\n ['bigger']: { min: 0.7, max: 0.85 },\n ['slightly-bigger']: { min: 0.6, max: 0.7 },\n ['average']: { min: 0.4, max: 0.6 },\n ['slightly-smaller']: { max: 0.4, min: 0.3 },\n ['smaller']: { min: 0.15, max: 0.3 },\n ['significantly-smaller']: { min: -Infinity, max: 0.15 },\n } as { [key in ClusterRelativeSize]: { min: number; max: number } };\n const averageSize =\n clustersInsights.reduce((sum, cluster) => sum + cluster.size, 0) / clustersInsights.length;\n const smallerClusters = clustersInsights.filter((cluster) => cluster.size < averageSize);\n const smallerSize =\n smallerClusters.reduce((sum, cluster) => sum + cluster.size, 0) / smallerClusters.length;\n const biggerClusters = clustersInsights.filter((cluster) => cluster.size > averageSize);\n const biggerSize =\n biggerClusters.reduce((sum, cluster) => sum + cluster.size, 0) / biggerClusters.length;\n\n const normalizingSize = averageSize * 2;\n let averageSizeNormalized = averageSize / normalizingSize;\n let smallerSizeNormalized = smallerSize / normalizingSize;\n let biggerSizeNormalized = biggerSize / normalizingSize;\n\n smallerSizeNormalized = !Number.isNaN(smallerSizeNormalized) ? smallerSizeNormalized : 0.25;\n averageSizeNormalized = !Number.isNaN(averageSizeNormalized) ? averageSizeNormalized : 0.5;\n biggerSizeNormalized = !Number.isNaN(biggerSizeNormalized) ? biggerSizeNormalized : 0.75;\n\n const sizeMapBezier = makeBezier(\n [\n { x: 0, y: 0 },\n { x: 0.25, y: smallerSizeNormalized, weight: 10 },\n { x: 0.5, y: averageSizeNormalized },\n { x: 0.75, y: biggerSizeNormalized, weight: 10 },\n { x: 1, y: 1 },\n ],\n { width: 1, height: 1 },\n );\n\n for (const clustersInsight of clustersInsights) {\n const { size } = clustersInsight;\n const mappedSize = sizeMapBezier(size / normalizingSize);\n for (const relativeSize in relativeSizeDistrivution) {\n const { min, max } = relativeSizeDistrivution[relativeSize as ClusterRelativeSize];\n if (mappedSize > min && mappedSize <= max) {\n clustersInsight.relativeSize = relativeSize as ClusterRelativeSize;\n break;\n }\n }\n }\n\n insights.push(...clustersInsights);\n\n if (hints.axesTitle.horizontal) {\n const sortedX = [...takenX].sort((a, b) => a - b);\n dataRange.push({\n from: sortedX[0] as any,\n to: sortedX[sortedX.length - 1] as any,\n label: hints.axesTitle.horizontal,\n });\n }\n if (hints.axesTitle.vertical) {\n const sortedY = [...takenY].sort((a, b) => a - b);\n dataRange.push({\n from: sortedY[0] as any,\n to: sortedY[sortedY.length - 1] as any,\n label: hints.axesTitle.vertical,\n });\n }\n } else if (dataType === 'grouped-values') {\n const makeRowKey = (row: Record<string, unknown>) =>\n groupKeys.map((key, index) => `${index}-${getPropByPath(row, key)}`).join('-');\n const allRowsIds = data.map(makeRowKey);\n const groupedValues: {\n [groupId: string]: { groupName: string; rows: Record<string, unknown>[] };\n } = {};\n for (let i = 0; i < data.length; i++) {\n const row = data[i];\n const key = allRowsIds[i];\n groupedValues[key] = groupedValues[key] ?? {\n groupName: getPropByPath(row, groupKeys[0]) as string,\n rows: [],\n };\n groupedValues[key].rows.push(row);\n }\n\n let fields = [...hints.fields.values];\n const grouppingKeys = Object.fromEntries(groupKeys.map((key) => [key, true]));\n if (fields.length === 0) {\n fields.push(...Object.keys(keysMap));\n }\n fields = fields.filter((key) => !grouppingKeys[key]);\n const groups = Object.entries(groupedValues).map(([groupKey, group]) => {\n const values: { label: string; value: unknown }[] = [];\n for (const row of group.rows) {\n for (const field of fields) {\n values.push({\n label:\n hints.titles.getVerticalAxesTitle?.(field) ??\n hints.titles.valuesAxes[field] ??\n (field as string),\n value: getPropByPath(row, field),\n });\n }\n }\n\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n const averageValue =\n values.reduce((sum, { value }) => sum + (value as number), 0) / values.length;\n return {\n label: group.groupName ?? groupKey,\n values,\n averageValue: !Number.isNaN(averageValue) ? averageValue : undefined,\n };\n });\n\n groups.sort((a, b) => {\n if (typeof a.averageValue !== 'number' || typeof b.averageValue !== 'number') return 0;\n return b.averageValue - a.averageValue;\n });\n entitiesCount = groups.length;\n insights.push(\n ...groups.map(\n (group) =>\n ({\n type: 'comparison',\n label: group.label,\n values: group.values,\n priority: 1,\n } as ComparisonNode),\n ),\n );\n }\n }\n if (dataType === 'values-set') {\n const fields = [...hints.fields.values];\n if (fields.length === 0) {\n fields.push(...Object.keys(keysMap));\n }\n const values = fields.map((field) => ({\n label:\n hints.titles.getValueAxesTitle?.(field) ??\n hints.titles.valuesAxes[field] ??\n (field as string),\n value: getPropByPath(data, field),\n }));\n entitiesCount = values.length;\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n insights.push({\n type: 'comparison',\n values,\n priority: 1,\n });\n }\n if (dataType === 'indexed-groups') {\n const groups = [...hints.groups].map((groupKey) => {\n const values = [...hints.fields.values]\n .filter((fieldPath) => String(fieldPath).startsWith(`${groupKey}.`))\n .map((fieldPath) => ({\n label: getPropByPath(\n hints.titles.valuesAxes,\n String(fieldPath).substring(String(groupKey).length + 1),\n ),\n value: getPropByPath(data, String(fieldPath)),\n }));\n\n values.sort((a, b) => {\n if (typeof a.value !== 'number' || typeof b.value !== 'number') return 0;\n return b.value - a.value;\n });\n const averageValue =\n values.reduce((sum, { value }) => sum + (value as number), 0) / values.length;\n return {\n label: getPropByPath(hints.titles.valuesAxes, String(groupKey)) ?? groupKey,\n values,\n averageValue: !Number.isNaN(averageValue) ? averageValue : undefined,\n };\n });\n\n groups.sort((a, b) => {\n if (typeof a.averageValue !== 'number' || typeof b.averageValue !== 'number') return 0;\n return b.averageValue - a.averageValue;\n });\n entitiesCount = groups.length;\n insights.push(\n ...groups.map(\n (group) =>\n ({\n type: 'comparison',\n label: group.label,\n values: group.values,\n priority: 1,\n } as ComparisonNode),\n ),\n );\n }\n\n const hasHighPriorityInsights = insights.some((insight) => insight.priority > 0);\n if (hasHighPriorityInsights) {\n insights = insights.filter((insight) => insight.priority > 0);\n } else {\n insights = insights.slice(0, 1);\n }\n\n return { insights, dataType: dataType!, dataRange, dataTitle, entitiesCount };\n};\n"],"mappings":"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"}
@@ -4,17 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getIntl = void 0;
7
-
8
7
  var _intl = require("@formatjs/intl");
9
-
10
8
  var _locale = require("./locale");
11
-
12
9
  var messagesCache = (0, _intl.createIntlCache)();
13
10
  var intlCache = {};
14
-
15
11
  var getIntl = function getIntl(locale) {
16
12
  var _normalizeLocale;
17
-
18
13
  var translations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19
14
  var availableLocales = arguments.length > 2 ? arguments[2] : undefined;
20
15
  locale = (_normalizeLocale = (0, _locale.normalizeLocale)(locale, availableLocales)) !== null && _normalizeLocale !== void 0 ? _normalizeLocale : 'en';
@@ -25,6 +20,5 @@ var getIntl = function getIntl(locale) {
25
20
  }, messagesCache);
26
21
  return intlCache[locale];
27
22
  };
28
-
29
23
  exports.getIntl = getIntl;
30
24
  //# sourceMappingURL=intl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intl.js","names":["messagesCache","createIntlCache","intlCache","getIntl","locale","translations","availableLocales","normalizeLocale","createIntl","defaultLocale","messages"],"sources":["../../../src/a11y/intl.ts"],"sourcesContent":["import { createIntl, createIntlCache, IntlShape } from '@formatjs/intl';\nimport { normalizeLocale } from './locale';\nimport type { localizedMessages as localizedMessagesTypeBase } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type Intl = IntlShape<typeof localizedMessagesTypeBase['en']>;\nconst messagesCache = createIntlCache();\nconst intlCache: { [locale: string]: ReturnType<typeof createIntl> } = {};\nexport const getIntl = (\n locale: string,\n translations: { [messageId: string]: string } = {},\n availableLocales: { [localeId: string]: any },\n) => {\n locale = normalizeLocale(locale, availableLocales) ?? 'en';\n intlCache[locale] = createIntl(\n {\n locale: locale,\n defaultLocale: 'en',\n messages: translations,\n },\n messagesCache,\n );\n return intlCache[locale] as Intl;\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAIA,IAAMA,aAAa,GAAG,IAAAC,qBAAA,GAAtB;AACA,IAAMC,SAA8D,GAAG,EAAvE;;AACO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CACrBC,MADqB,EAIlB;EAAA;;EAAA,IAFHC,YAEG,uEAF6C,EAE7C;EAAA,IADHC,gBACG;EACHF,MAAM,uBAAG,IAAAG,uBAAA,EAAgBH,MAAhB,EAAwBE,gBAAxB,CAAH,+DAAgD,IAAtD;EACAJ,SAAS,CAACE,MAAD,CAAT,GAAoB,IAAAI,gBAAA,EAClB;IACEJ,MAAM,EAAEA,MADV;IAEEK,aAAa,EAAE,IAFjB;IAGEC,QAAQ,EAAEL;EAHZ,CADkB,EAMlBL,aANkB,CAApB;EAQA,OAAOE,SAAS,CAACE,MAAD,CAAhB;AACD,CAfM"}
1
+ {"version":3,"file":"intl.js","names":["_intl","require","_locale","messagesCache","createIntlCache","intlCache","getIntl","locale","_normalizeLocale","translations","arguments","length","undefined","availableLocales","normalizeLocale","createIntl","defaultLocale","messages","exports"],"sources":["../../../src/a11y/intl.ts"],"sourcesContent":["import { createIntl, createIntlCache, IntlShape } from '@formatjs/intl';\nimport { normalizeLocale } from './locale';\nimport type { localizedMessages as localizedMessagesTypeBase } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type Intl = IntlShape<typeof localizedMessagesTypeBase['en']>;\nconst messagesCache = createIntlCache();\nconst intlCache: { [locale: string]: ReturnType<typeof createIntl> } = {};\nexport const getIntl = (\n locale: string,\n translations: { [messageId: string]: string } = {},\n availableLocales: { [localeId: string]: any },\n) => {\n locale = normalizeLocale(locale, availableLocales) ?? 'en';\n intlCache[locale] = createIntl(\n {\n locale: locale,\n defaultLocale: 'en',\n messages: translations,\n },\n messagesCache,\n );\n return intlCache[locale] as Intl;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,IAAME,aAAa,GAAG,IAAAC,qBAAe,GAAE;AACvC,IAAMC,SAA8D,GAAG,CAAC,CAAC;AAClE,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAClBC,MAAc,EAGX;EAAA,IAAAC,gBAAA;EAAA,IAFHC,YAA6C,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAClDG,gBAA6C,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAE7CL,MAAM,IAAAC,gBAAA,GAAG,IAAAM,uBAAe,EAACP,MAAM,EAAEM,gBAAgB,CAAC,cAAAL,gBAAA,cAAAA,gBAAA,GAAI,IAAI;EAC1DH,SAAS,CAACE,MAAM,CAAC,GAAG,IAAAQ,gBAAU,EAC5B;IACER,MAAM,EAAEA,MAAM;IACdS,aAAa,EAAE,IAAI;IACnBC,QAAQ,EAAER;EACZ,CAAC,EACDN,aAAa,CACd;EACD,OAAOE,SAAS,CAACE,MAAM,CAAC;AAC1B,CAAC;AAACW,OAAA,CAAAZ,OAAA,GAAAA,OAAA"}
@@ -1,68 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.normalizeLocale = void 0;
9
-
10
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
9
  var normalizeLocale = function normalizeLocale(providedLocale) {
13
10
  var _ref, _providedLocale, _globalThis$navigator;
14
-
15
11
  var translations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
16
12
  var translationNames = {};
17
-
18
13
  for (var _locale in translations) {
19
14
  translationNames[_locale.toLowerCase()] = _locale;
20
15
  }
21
-
22
16
  providedLocale = (_ref = (_providedLocale = providedLocale) !== null && _providedLocale !== void 0 ? _providedLocale : isAvailableLocale(globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$navigator = globalThis.navigator) === null || _globalThis$navigator === void 0 ? void 0 : _globalThis$navigator.language, translations)) !== null && _ref !== void 0 ? _ref : 'en';
23
17
  var locale = providedLocale.toLowerCase();
24
-
25
18
  if (locale.includes('-') && !translations[locale]) {
26
19
  var _locale$split = locale.split('-'),
27
- _locale$split2 = (0, _slicedToArray2["default"])(_locale$split, 1),
28
- localeBase = _locale$split2[0];
29
-
20
+ _locale$split2 = (0, _slicedToArray2["default"])(_locale$split, 1),
21
+ localeBase = _locale$split2[0];
30
22
  if (translations[localeBase]) {
31
23
  locale = localeBase;
32
24
  }
33
25
  }
34
-
35
26
  locale = translationNames[locale] ? translationNames[locale] : locale;
36
-
37
27
  if (!translations[locale]) {
38
28
  var availableLocales = Object.keys(translations).join(', ');
39
-
40
29
  if (process.env.NODE_ENV !== 'production') {
41
30
  // eslint-disable-next-line no-console
42
31
  console.error("[Intergalactic @semcore/d3-charts a11y module]: No locale \"".concat(providedLocale, "\" available. Available locales: ").concat(availableLocales));
43
32
  }
44
-
45
33
  return null;
46
34
  }
47
-
48
35
  return locale;
49
36
  };
50
-
51
37
  exports.normalizeLocale = normalizeLocale;
52
-
53
38
  var isAvailableLocale = function isAvailableLocale(locale, translations) {
54
39
  if (typeof locale !== 'string') {
55
40
  return undefined;
56
41
  }
57
-
58
42
  var _locale$split3 = locale.split('-'),
59
- _locale$split4 = (0, _slicedToArray2["default"])(_locale$split3, 1),
60
- localeBase = _locale$split4[0];
61
-
43
+ _locale$split4 = (0, _slicedToArray2["default"])(_locale$split3, 1),
44
+ localeBase = _locale$split4[0];
62
45
  if (!translations[localeBase]) {
63
46
  return undefined;
64
47
  }
65
-
66
48
  return localeBase;
67
49
  };
68
50
  //# sourceMappingURL=locale.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","names":["normalizeLocale","providedLocale","translations","translationNames","locale","toLowerCase","isAvailableLocale","globalThis","navigator","language","includes","split","localeBase","availableLocales","Object","keys","join","process","env","NODE_ENV","console","error","undefined"],"sources":["../../../src/a11y/locale.ts"],"sourcesContent":["export const normalizeLocale = (\n providedLocale: string,\n translations: { [locale: string]: {} } = {},\n) => {\n const translationNames: { [lowercasedName: string]: string } = {};\n for (const locale in translations) {\n translationNames[locale.toLowerCase()] = locale;\n }\n providedLocale =\n providedLocale ?? isAvailableLocale(globalThis?.navigator?.language, translations) ?? 'en';\n let locale = providedLocale.toLowerCase();\n if (locale.includes('-') && !translations[locale]) {\n const [localeBase] = locale.split('-');\n if (translations[localeBase]) {\n locale = localeBase;\n }\n }\n locale = translationNames[locale] ? translationNames[locale] : locale;\n if (!translations[locale]) {\n const availableLocales = Object.keys(translations).join(', ');\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(\n `[Intergalactic @semcore/d3-charts a11y module]: No locale \"${providedLocale}\" available. Available locales: ${availableLocales}`,\n );\n }\n return null;\n }\n return locale;\n};\n\nconst isAvailableLocale = (locale: string, translations: { [locale: string]: {} }) => {\n if (typeof locale !== 'string') {\n return undefined;\n }\n const [localeBase] = locale.split('-');\n if (!translations[localeBase]) {\n return undefined;\n }\n return localeBase;\n};\n"],"mappings":";;;;;;;;;;;AAAO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAC7BC,cAD6B,EAG1B;EAAA;;EAAA,IADHC,YACG,uEADsC,EACtC;EACH,IAAMC,gBAAsD,GAAG,EAA/D;;EACA,KAAK,IAAMC,OAAX,IAAqBF,YAArB,EAAmC;IACjCC,gBAAgB,CAACC,OAAM,CAACC,WAAP,EAAD,CAAhB,GAAyCD,OAAzC;EACD;;EACDH,cAAc,8BACZA,cADY,6DACMK,iBAAiB,CAACC,UAAD,aAACA,UAAD,gDAACA,UAAU,CAAEC,SAAb,0DAAC,sBAAuBC,QAAxB,EAAkCP,YAAlC,CADvB,uCAC0E,IADxF;EAEA,IAAIE,MAAM,GAAGH,cAAc,CAACI,WAAf,EAAb;;EACA,IAAID,MAAM,CAACM,QAAP,CAAgB,GAAhB,KAAwB,CAACR,YAAY,CAACE,MAAD,CAAzC,EAAmD;IACjD,oBAAqBA,MAAM,CAACO,KAAP,CAAa,GAAb,CAArB;IAAA;IAAA,IAAOC,UAAP;;IACA,IAAIV,YAAY,CAACU,UAAD,CAAhB,EAA8B;MAC5BR,MAAM,GAAGQ,UAAT;IACD;EACF;;EACDR,MAAM,GAAGD,gBAAgB,CAACC,MAAD,CAAhB,GAA2BD,gBAAgB,CAACC,MAAD,CAA3C,GAAsDA,MAA/D;;EACA,IAAI,CAACF,YAAY,CAACE,MAAD,CAAjB,EAA2B;IACzB,IAAMS,gBAAgB,GAAGC,MAAM,CAACC,IAAP,CAAYb,YAAZ,EAA0Bc,IAA1B,CAA+B,IAA/B,CAAzB;;IACA,IAAIC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;MACzC;MACAC,OAAO,CAACC,KAAR,uEACgEpB,cADhE,8CACiHY,gBADjH;IAGD;;IACD,OAAO,IAAP;EACD;;EACD,OAAOT,MAAP;AACD,CA7BM;;;;AA+BP,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAACF,MAAD,EAAiBF,YAAjB,EAA4D;EACpF,IAAI,OAAOE,MAAP,KAAkB,QAAtB,EAAgC;IAC9B,OAAOkB,SAAP;EACD;;EACD,qBAAqBlB,MAAM,CAACO,KAAP,CAAa,GAAb,CAArB;EAAA;EAAA,IAAOC,UAAP;;EACA,IAAI,CAACV,YAAY,CAACU,UAAD,CAAjB,EAA+B;IAC7B,OAAOU,SAAP;EACD;;EACD,OAAOV,UAAP;AACD,CATD"}
1
+ {"version":3,"file":"locale.js","names":["normalizeLocale","providedLocale","_ref","_providedLocale","_globalThis$navigator","translations","arguments","length","undefined","translationNames","locale","toLowerCase","isAvailableLocale","globalThis","navigator","language","includes","_locale$split","split","_locale$split2","_slicedToArray2","localeBase","availableLocales","Object","keys","join","process","env","NODE_ENV","console","error","concat","exports","_locale$split3","_locale$split4"],"sources":["../../../src/a11y/locale.ts"],"sourcesContent":["export const normalizeLocale = (\n providedLocale: string,\n translations: { [locale: string]: {} } = {},\n) => {\n const translationNames: { [lowercasedName: string]: string } = {};\n for (const locale in translations) {\n translationNames[locale.toLowerCase()] = locale;\n }\n providedLocale =\n providedLocale ?? isAvailableLocale(globalThis?.navigator?.language, translations) ?? 'en';\n let locale = providedLocale.toLowerCase();\n if (locale.includes('-') && !translations[locale]) {\n const [localeBase] = locale.split('-');\n if (translations[localeBase]) {\n locale = localeBase;\n }\n }\n locale = translationNames[locale] ? translationNames[locale] : locale;\n if (!translations[locale]) {\n const availableLocales = Object.keys(translations).join(', ');\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(\n `[Intergalactic @semcore/d3-charts a11y module]: No locale \"${providedLocale}\" available. Available locales: ${availableLocales}`,\n );\n }\n return null;\n }\n return locale;\n};\n\nconst isAvailableLocale = (locale: string, translations: { [locale: string]: {} }) => {\n if (typeof locale !== 'string') {\n return undefined;\n }\n const [localeBase] = locale.split('-');\n if (!translations[localeBase]) {\n return undefined;\n }\n return localeBase;\n};\n"],"mappings":";;;;;;;;AAAO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAC1BC,cAAsB,EAEnB;EAAA,IAAAC,IAAA,EAAAC,eAAA,EAAAC,qBAAA;EAAA,IADHC,YAAsC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAE3C,IAAMG,gBAAsD,GAAG,CAAC,CAAC;EACjE,KAAK,IAAMC,OAAM,IAAIL,YAAY,EAAE;IACjCI,gBAAgB,CAACC,OAAM,CAACC,WAAW,EAAE,CAAC,GAAGD,OAAM;EACjD;EACAT,cAAc,IAAAC,IAAA,IAAAC,eAAA,GACZF,cAAc,cAAAE,eAAA,cAAAA,eAAA,GAAIS,iBAAiB,CAACC,UAAU,aAAVA,UAAU,wBAAAT,qBAAA,GAAVS,UAAU,CAAEC,SAAS,cAAAV,qBAAA,uBAArBA,qBAAA,CAAuBW,QAAQ,EAAEV,YAAY,CAAC,cAAAH,IAAA,cAAAA,IAAA,GAAI,IAAI;EAC5F,IAAIQ,MAAM,GAAGT,cAAc,CAACU,WAAW,EAAE;EACzC,IAAID,MAAM,CAACM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACX,YAAY,CAACK,MAAM,CAAC,EAAE;IACjD,IAAAO,aAAA,GAAqBP,MAAM,CAACQ,KAAK,CAAC,GAAG,CAAC;MAAAC,cAAA,OAAAC,eAAA,aAAAH,aAAA;MAA/BI,UAAU,GAAAF,cAAA;IACjB,IAAId,YAAY,CAACgB,UAAU,CAAC,EAAE;MAC5BX,MAAM,GAAGW,UAAU;IACrB;EACF;EACAX,MAAM,GAAGD,gBAAgB,CAACC,MAAM,CAAC,GAAGD,gBAAgB,CAACC,MAAM,CAAC,GAAGA,MAAM;EACrE,IAAI,CAACL,YAAY,CAACK,MAAM,CAAC,EAAE;IACzB,IAAMY,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAACnB,YAAY,CAAC,CAACoB,IAAI,CAAC,IAAI,CAAC;IAC7D,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC;MACAC,OAAO,CAACC,KAAK,gEAAAC,MAAA,CACmD9B,cAAc,uCAAA8B,MAAA,CAAmCT,gBAAgB,EAChI;IACH;IACA,OAAO,IAAI;EACb;EACA,OAAOZ,MAAM;AACf,CAAC;AAACsB,OAAA,CAAAhC,eAAA,GAAAA,eAAA;AAEF,IAAMY,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIF,MAAc,EAAEL,YAAsC,EAAK;EACpF,IAAI,OAAOK,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOF,SAAS;EAClB;EACA,IAAAyB,cAAA,GAAqBvB,MAAM,CAACQ,KAAK,CAAC,GAAG,CAAC;IAAAgB,cAAA,OAAAd,eAAA,aAAAa,cAAA;IAA/BZ,UAAU,GAAAa,cAAA;EACjB,IAAI,CAAC7B,YAAY,CAACgB,UAAU,CAAC,EAAE;IAC7B,OAAOb,SAAS;EAClB;EACA,OAAOa,UAAU;AACnB,CAAC"}