@semcore/d3-chart 3.16.0 → 3.17.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 (145) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/lib/cjs/Area.js +9 -9
  3. package/lib/cjs/Axis.js +14 -14
  4. package/lib/cjs/Bar.js +8 -8
  5. package/lib/cjs/Bubble.js +10 -10
  6. package/lib/cjs/Donut.js +7 -7
  7. package/lib/cjs/Dots.js +10 -10
  8. package/lib/cjs/HorizontalBar.js +8 -8
  9. package/lib/cjs/Hover.js +3 -3
  10. package/lib/cjs/Line.js +9 -9
  11. package/lib/cjs/Plot.js +4 -4
  12. package/lib/cjs/Plot.js.map +1 -1
  13. package/lib/cjs/Radar.js +17 -17
  14. package/lib/cjs/RadialTree.js +10 -10
  15. package/lib/cjs/ReferenceLine.js +9 -9
  16. package/lib/cjs/ScatterPlot.js +7 -7
  17. package/lib/cjs/Tooltip.js +8 -8
  18. package/lib/cjs/Venn.js +7 -7
  19. package/lib/cjs/a11y/PlotA11yModule.js +2 -2
  20. package/lib/cjs/a11y/PlotA11yView.js +3 -3
  21. package/lib/cjs/a11y/insights.js +12 -8
  22. package/lib/cjs/a11y/insights.js.map +1 -1
  23. package/lib/cjs/a11y/serialize.js +2 -1
  24. package/lib/cjs/a11y/serialize.js.map +1 -1
  25. package/lib/cjs/component/ChartLegend/BaseLegend.js +108 -0
  26. package/lib/cjs/component/ChartLegend/BaseLegend.js.map +1 -0
  27. package/lib/cjs/component/ChartLegend/BaseLegend.type.js +2 -0
  28. package/lib/cjs/component/ChartLegend/BaseLegend.type.js.map +1 -0
  29. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +93 -0
  30. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js.map +1 -0
  31. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.type.js +2 -0
  32. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.type.js.map +1 -0
  33. package/lib/cjs/component/ChartLegend/LegendFlex/legend-flex.shadow.css +11 -0
  34. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +230 -0
  35. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js.map +1 -0
  36. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.type.js +13 -0
  37. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.type.js.map +1 -0
  38. package/lib/cjs/component/ChartLegend/LegendItem/legend-item.shadow.css +109 -0
  39. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +100 -0
  40. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js.map +1 -0
  41. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.type.js +2 -0
  42. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.type.js.map +1 -0
  43. package/lib/cjs/component/ChartLegend/LegendTable/legend-table.shadow.css +16 -0
  44. package/lib/cjs/component/ChartLegend/index.js +23 -0
  45. package/lib/cjs/component/ChartLegend/index.js.map +1 -0
  46. package/lib/cjs/index.js +20 -0
  47. package/lib/cjs/index.js.map +1 -1
  48. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +37 -0
  49. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
  50. package/lib/cjs/translations/de.json +3 -0
  51. package/lib/cjs/translations/en.json +3 -0
  52. package/lib/cjs/translations/es.json +3 -0
  53. package/lib/cjs/translations/fr.json +3 -0
  54. package/lib/cjs/translations/it.json +3 -0
  55. package/lib/cjs/translations/ja.json +3 -0
  56. package/lib/cjs/translations/ko.json +3 -0
  57. package/lib/cjs/translations/nl.json +3 -0
  58. package/lib/cjs/translations/pl.json +3 -0
  59. package/lib/cjs/translations/pt.json +3 -0
  60. package/lib/cjs/translations/sv.json +3 -0
  61. package/lib/cjs/translations/tr.json +3 -0
  62. package/lib/cjs/translations/vi.json +3 -0
  63. package/lib/cjs/translations/zh.json +3 -0
  64. package/lib/cjs/types/Plot.d.js.map +1 -1
  65. package/lib/cjs/types/index.d.js +73 -14
  66. package/lib/cjs/types/index.d.js.map +1 -1
  67. package/lib/es6/Area.js +9 -9
  68. package/lib/es6/Axis.js +14 -14
  69. package/lib/es6/Bar.js +8 -8
  70. package/lib/es6/Bubble.js +10 -10
  71. package/lib/es6/Donut.js +7 -7
  72. package/lib/es6/Dots.js +10 -10
  73. package/lib/es6/HorizontalBar.js +8 -8
  74. package/lib/es6/Hover.js +3 -3
  75. package/lib/es6/Line.js +9 -9
  76. package/lib/es6/Plot.js +4 -4
  77. package/lib/es6/Plot.js.map +1 -1
  78. package/lib/es6/Radar.js +17 -17
  79. package/lib/es6/RadialTree.js +10 -10
  80. package/lib/es6/ReferenceLine.js +9 -9
  81. package/lib/es6/ScatterPlot.js +7 -7
  82. package/lib/es6/Tooltip.js +8 -8
  83. package/lib/es6/Venn.js +7 -7
  84. package/lib/es6/a11y/PlotA11yModule.js +2 -2
  85. package/lib/es6/a11y/PlotA11yView.js +3 -3
  86. package/lib/es6/a11y/insights.js +12 -8
  87. package/lib/es6/a11y/insights.js.map +1 -1
  88. package/lib/es6/a11y/serialize.js +2 -1
  89. package/lib/es6/a11y/serialize.js.map +1 -1
  90. package/lib/es6/component/ChartLegend/BaseLegend.js +100 -0
  91. package/lib/es6/component/ChartLegend/BaseLegend.js.map +1 -0
  92. package/lib/es6/component/ChartLegend/BaseLegend.type.js +2 -0
  93. package/lib/es6/component/ChartLegend/BaseLegend.type.js.map +1 -0
  94. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +86 -0
  95. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js.map +1 -0
  96. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.type.js +2 -0
  97. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.type.js.map +1 -0
  98. package/lib/es6/component/ChartLegend/LegendFlex/legend-flex.shadow.css +11 -0
  99. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +228 -0
  100. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js.map +1 -0
  101. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.type.js +6 -0
  102. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.type.js.map +1 -0
  103. package/lib/es6/component/ChartLegend/LegendItem/legend-item.shadow.css +109 -0
  104. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +94 -0
  105. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js.map +1 -0
  106. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.type.js +2 -0
  107. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.type.js.map +1 -0
  108. package/lib/es6/component/ChartLegend/LegendTable/legend-table.shadow.css +16 -0
  109. package/lib/es6/component/ChartLegend/index.js +5 -0
  110. package/lib/es6/component/ChartLegend/index.js.map +1 -0
  111. package/lib/es6/index.js +2 -0
  112. package/lib/es6/index.js.map +1 -1
  113. package/lib/es6/translations/__intergalactic-dynamic-locales.js +29 -0
  114. package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -0
  115. package/lib/es6/translations/de.json +3 -0
  116. package/lib/es6/translations/en.json +3 -0
  117. package/lib/es6/translations/es.json +3 -0
  118. package/lib/es6/translations/fr.json +3 -0
  119. package/lib/es6/translations/it.json +3 -0
  120. package/lib/es6/translations/ja.json +3 -0
  121. package/lib/es6/translations/ko.json +3 -0
  122. package/lib/es6/translations/nl.json +3 -0
  123. package/lib/es6/translations/pl.json +3 -0
  124. package/lib/es6/translations/pt.json +3 -0
  125. package/lib/es6/translations/sv.json +3 -0
  126. package/lib/es6/translations/tr.json +3 -0
  127. package/lib/es6/translations/vi.json +3 -0
  128. package/lib/es6/translations/zh.json +3 -0
  129. package/lib/es6/types/Plot.d.js.map +1 -1
  130. package/lib/es6/types/index.d.js +20 -8
  131. package/lib/es6/types/index.d.js.map +1 -1
  132. package/lib/types/Plot.d.ts +5 -0
  133. package/lib/types/a11y/insights.d.ts +1 -0
  134. package/lib/types/component/ChartLegend/BaseLegend.d.ts +14 -0
  135. package/lib/types/component/ChartLegend/BaseLegend.type.d.ts +27 -0
  136. package/lib/types/component/ChartLegend/LegendFlex/LegendFlex.d.ts +2 -0
  137. package/lib/types/component/ChartLegend/LegendFlex/LegendFlex.type.d.ts +38 -0
  138. package/lib/types/component/ChartLegend/LegendItem/LegendItem.d.ts +2 -0
  139. package/lib/types/component/ChartLegend/LegendItem/LegendItem.type.d.ts +67 -0
  140. package/lib/types/component/ChartLegend/LegendTable/LegendTable.d.ts +2 -0
  141. package/lib/types/component/ChartLegend/LegendTable/LegendTable.type.d.ts +21 -0
  142. package/lib/types/component/ChartLegend/index.d.ts +4 -0
  143. package/lib/types/index.d.ts +20 -8
  144. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +41 -0
  145. package/package.json +3 -1
@@ -10,8 +10,8 @@ import { normalizeLocale } from './locale';
10
10
  import { localizedMessages } from './translations/module/__intergalactic-dynamic-locales';
11
11
  import { Root, sstyled } from '@semcore/core';
12
12
  /*__reshadow-styles__:"../style/plotA11yModule.shadow.css"*/
13
- var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SPlotA11yModule_1qhiz_gg_{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;opacity:0}.___SPlotA11yModule_1qhiz_gg_:focus{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1}" /*__inner_css_end__*/, "1qhiz_gg_") /*__reshadow_css_end__*/, {
14
- "__SPlotA11yModule": "___SPlotA11yModule_1qhiz_gg_"
13
+ var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SPlotA11yModule_3u4a6_gg_{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;opacity:0}.___SPlotA11yModule_3u4a6_gg_:focus{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1}" /*__inner_css_end__*/, "3u4a6_gg_") /*__reshadow_css_end__*/, {
14
+ "__SPlotA11yModule": "___SPlotA11yModule_3u4a6_gg_"
15
15
  });
16
16
  import { Context as I18nContext, useI18n } from '@semcore/utils/lib/enhances/WithI18n';
17
17
  import { Box } from '@semcore/flex-box';
@@ -13,9 +13,9 @@ import { getIntl } from './intl';
13
13
  import { summarize } from './summarize';
14
14
  import { Root, sstyled } from '@semcore/core';
15
15
  /*__reshadow-styles__:"../style/plotA11yView.shadow.css"*/
16
- var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SPlotA11yView_1woe7_gg_{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;opacity:0;background-color:var(--intergalactic-bg-primary-neutral, #ffffff);color:var(--intergalactic-text-primary, #191b23);border:3px solid var(--intergalactic-border-primary, #c4c7cf);font-size:var(--intergalactic-fs-50, 10px);padding:2px;width:200px;height:200px;max-width:80%;max-height:80%;overflow:auto}.___SPlotA11yView_1woe7_gg_.__focus-within_1woe7_gg_,.___SPlotA11yView_1woe7_gg_:focus{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:var(--intergalactic-z-index-overlay, 500);position:relative;display:block}.___SPlotA11yView_1woe7_gg_:focus,.___SPlotA11yView_1woe7_gg_:focus-within{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:var(--intergalactic-z-index-overlay, 500);position:relative;display:block}.___SPlotA11yView_1woe7_gg_ a{cursor:pointer;text-decoration:underline;margin-bottom:var(--intergalactic-spacing-2x, 8px);display:block}.___SPlotA11yView_1woe7_gg_ table,.___SPlotA11yView_1woe7_gg_ td,.___SPlotA11yView_1woe7_gg_ th{border:1px solid var(--intergalactic-border-primary, #c4c7cf)}" /*__inner_css_end__*/, "1woe7_gg_") /*__reshadow_css_end__*/, {
17
- "__SPlotA11yView": "___SPlotA11yView_1woe7_gg_",
18
- "_focus-within": "__focus-within_1woe7_gg_"
16
+ var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SPlotA11yView_1bygm_gg_{-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;opacity:0;background-color:var(--intergalactic-bg-primary-neutral, #ffffff);color:var(--intergalactic-text-primary, #191b23);border:3px solid var(--intergalactic-border-primary, #c4c7cf);font-size:var(--intergalactic-fs-50, 10px);padding:2px;width:200px;height:200px;max-width:80%;max-height:80%;overflow:auto}.___SPlotA11yView_1bygm_gg_.__focus-within_1bygm_gg_,.___SPlotA11yView_1bygm_gg_:focus{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:var(--intergalactic-z-index-overlay, 500);position:relative;display:block}.___SPlotA11yView_1bygm_gg_:focus,.___SPlotA11yView_1bygm_gg_:focus-within{-webkit-user-select:all;-moz-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:var(--intergalactic-z-index-overlay, 500);position:relative;display:block}.___SPlotA11yView_1bygm_gg_ a{cursor:pointer;text-decoration:underline;margin-bottom:var(--intergalactic-spacing-2x, 8px);display:block}.___SPlotA11yView_1bygm_gg_ table,.___SPlotA11yView_1bygm_gg_ td,.___SPlotA11yView_1bygm_gg_ th{border:1px solid var(--intergalactic-border-primary, #c4c7cf)}" /*__inner_css_end__*/, "1bygm_gg_") /*__reshadow_css_end__*/, {
17
+ "__SPlotA11yView": "___SPlotA11yView_1bygm_gg_",
18
+ "_focus-within": "__focus-within_1bygm_gg_"
19
19
  });
20
20
  import { Box } from '@semcore/flex-box';
21
21
  import { useAsyncI18nMessages } from '@semcore/utils/lib/enhances/i18nEnhance';
@@ -167,7 +167,8 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
167
167
  },
168
168
  from: label.from,
169
169
  to: label.to,
170
- dataKey: label.dataKey
170
+ dataKey: label.dataKey,
171
+ label: label.displayValue
171
172
  };
172
173
  }
173
174
  }
@@ -182,7 +183,8 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
182
183
  label: {
183
184
  from: from,
184
185
  to: to,
185
- dataKey: valueKey
186
+ dataKey: valueKey,
187
+ displayValue: hints.titles.valuesAxes[valueKey]
186
188
  }
187
189
  });
188
190
  var localTrends = [];
@@ -215,7 +217,8 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
215
217
  label: {
216
218
  from: _from,
217
219
  to: _to,
218
- dataKey: valueKey
220
+ dataKey: valueKey,
221
+ displayValue: hints.titles.valuesAxes[valueKey]
219
222
  }
220
223
  }));
221
224
  lastSwitch = _i2;
@@ -236,7 +239,8 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
236
239
  label: {
237
240
  from: data[lastSwitch][labelsKey],
238
241
  to: data[lastIndex][labelsKey],
239
- dataKey: valueKey
242
+ dataKey: valueKey,
243
+ displayValue: hints.titles.valuesAxes[valueKey]
240
244
  }
241
245
  }));
242
246
  }
@@ -579,10 +583,10 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
579
583
  _step6;
580
584
  try {
581
585
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
582
- var _ref15, _hints$titles$getVert, _hints$titles$getVert2, _hints$titles5;
586
+ var _ref15, _hints$titles$valuesA, _hints$titles$getVert, _hints$titles5;
583
587
  var field = _step6.value;
584
588
  values.push({
585
- label: (_ref15 = (_hints$titles$getVert = (_hints$titles$getVert2 = (_hints$titles5 = hints.titles).getVerticalAxesTitle) === null || _hints$titles$getVert2 === void 0 ? void 0 : _hints$titles$getVert2.call(_hints$titles5, field)) !== null && _hints$titles$getVert !== void 0 ? _hints$titles$getVert : hints.titles.valuesAxes[field]) !== null && _ref15 !== void 0 ? _ref15 : field,
589
+ label: (_ref15 = (_hints$titles$valuesA = hints.titles.valuesAxes[field]) !== null && _hints$titles$valuesA !== void 0 ? _hints$titles$valuesA : (_hints$titles$getVert = (_hints$titles5 = hints.titles).getVerticalAxesTitle) === null || _hints$titles$getVert === void 0 ? void 0 : _hints$titles$getVert.call(_hints$titles5, field)) !== null && _ref15 !== void 0 ? _ref15 : field,
586
590
  value: getPropByPath(_row, field)
587
591
  });
588
592
  }
@@ -632,9 +636,9 @@ export var extractDataInsights = function extractDataInsights(data, hints, confi
632
636
  _fields2.push.apply(_fields2, _toConsumableArray(Object.keys(keysMap)));
633
637
  }
634
638
  var values = _fields2.map(function (field) {
635
- var _ref16, _hints$titles$getValu, _hints$titles$getValu2, _hints$titles6;
639
+ var _ref16, _hints$titles$valuesA2, _hints$titles$getValu, _hints$titles6;
636
640
  return {
637
- label: (_ref16 = (_hints$titles$getValu = (_hints$titles$getValu2 = (_hints$titles6 = hints.titles).getValueAxesTitle) === null || _hints$titles$getValu2 === void 0 ? void 0 : _hints$titles$getValu2.call(_hints$titles6, field)) !== null && _hints$titles$getValu !== void 0 ? _hints$titles$getValu : hints.titles.valuesAxes[field]) !== null && _ref16 !== void 0 ? _ref16 : field,
641
+ label: (_ref16 = (_hints$titles$valuesA2 = hints.titles.valuesAxes[field]) !== null && _hints$titles$valuesA2 !== void 0 ? _hints$titles$valuesA2 : (_hints$titles$getValu = (_hints$titles6 = hints.titles).getValueAxesTitle) === null || _hints$titles$getValu === void 0 ? void 0 : _hints$titles$getValu.call(_hints$titles6, field)) !== null && _ref16 !== void 0 ? _ref16 : field,
638
642
  value: getPropByPath(data, field)
639
643
  };
640
644
  });
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","names":["makeBezier","getPropByPath","obj","path","String","split","i","length","_typeof","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","_toConsumableArray","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","_createForOfIteratorHelper","_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","_defineProperty","Infinity","averageSize","cluster","smallerClusters","smallerSize","biggerClusters","biggerSize","normalizingSize","averageSizeNormalized","smallerSizeNormalized","biggerSizeNormalized","sizeMapBezier","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","_slicedToArray","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"],"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>[])\n .map((row) => row[valueKey])\n .filter((value) => typeof value !== 'symbol');\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":["makeBezier","getPropByPath","obj","path","String","split","i","length","_typeof","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","_toConsumableArray","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","_createForOfIteratorHelper","_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","displayValue","generalTrend","valuesAxes","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","_defineProperty","Infinity","averageSize","cluster","smallerClusters","smallerSize","biggerClusters","biggerSize","normalizingSize","averageSizeNormalized","smallerSizeNormalized","biggerSizeNormalized","sizeMapBezier","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","_slicedToArray","groupKey","group","_iterator5","_step5","_iterator6","_step6","_ref15","_hints$titles$valuesA","_hints$titles$getVert","_hints$titles5","field","getVerticalAxesTitle","averageValue","_ref14","_ref16","_hints$titles$valuesA2","_hints$titles$getValu","_hints$titles6","getValueAxesTitle","_insights4","_getPropByPath","fieldPath","startsWith","substring","_ref17","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 label?: string;\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>[])\n .map((row) => row[valueKey])\n .filter((value) => typeof value !== 'symbol');\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; displayValue?: string };\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 label: label.displayValue,\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, displayValue: hints.titles.valuesAxes[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: {\n from,\n to,\n dataKey: valueKey,\n displayValue: hints.titles.valuesAxes[valueKey],\n },\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 displayValue: hints.titles.valuesAxes[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.valuesAxes[field] ??\n hints.titles.getVerticalAxesTitle?.(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.valuesAxes[field] ??\n hints.titles.getValueAxesTitle?.(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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"}
@@ -178,6 +178,7 @@ export var serialize = function serialize(_ref4, _ref5, _ref6) {
178
178
  count: entitiesCount
179
179
  });
180
180
  var entitiesList = Object.entries(trendsByDataKey).map(function (_ref7) {
181
+ var _primaryTrend$label;
181
182
  var _ref8 = _slicedToArray(_ref7, 2),
182
183
  dataKey = _ref8[0],
183
184
  insights = _ref8[1];
@@ -194,7 +195,7 @@ export var serialize = function serialize(_ref4, _ref5, _ref6) {
194
195
  var mainSummary = intl.formatMessage({
195
196
  id: 'time-series-general-trend'
196
197
  }, {
197
- dataKey: entitiesCount !== 1 ? dataKey : '',
198
+ dataKey: entitiesCount !== 1 ? (_primaryTrend$label = primaryTrend.label) !== null && _primaryTrend$label !== void 0 ? _primaryTrend$label : dataKey : '',
198
199
  trend: intl.formatMessage({
199
200
  id: "trend-".concat(primaryTrend.change.strength)
200
201
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","names":["getIntl","formatLimitedSizeList","items","intl","maxFinalStringLength","arguments","length","undefined","includeEllipsis","limit","stringifyList","cutItems","slice","push","formatMessage","id","leftCount","formatList","formattedList","overflowRatio","Math","floor","maxIncreaseAttempts","i","newLimitFormattedList","isReactComponent","obj","_typeof","displayName","guessNumberAsTimestampMinDate","Date","getTime","formatValue","value","_ref","siblingsTimeMark","maxListSymbols","datesWithTime","formatNumber","abs","formatDate","dateStyle","timeStyle","Array","isArray","formattedValues","map","subValue","String","formatValuesList","values","_ref2","result","_ref3","rawValue","label","serialize","_ref4","_ref5","_ref6","insights","dataType","dataRange","dataTitle","entitiesCount","clustersLimit","valuesLimit","groupsLimit","locale","translations","availableLocales","dataRangeSummary","range","from","to","trendsInsights","trendsByDataKey","_iterator","_createForOfIteratorHelper","_step","s","n","done","_trendsByDataKey$insi","insight","dataKey","err","e","f","entities","count","entitiesList","Object","entries","_ref7","_ref8","_slicedToArray","generalTrend","find","type","localTrends","filter","primaryTrend","secondaryTrends","mainSummary","trend","concat","change","strength","secondarylSummaries","general","locals","summary","clustersInsights","biggestClusters","maxSize","size","minSize","clusterInsight","labels","anonymous","relativeSize","x","center","xLabel","y","yLabel","_ref9","_ref10","valuesInsight","groupInsights","valueCounts","group","minValuesCount","min","apply","_toConsumableArray","maxValuesCount","max","groupsCount","valuesCount","_ref11","sumamry"],"sources":["../../../src/a11y/serialize.ts"],"sourcesContent":["import { AnalyzedData, ClusterNode, ComparisonNode, GeneralTrendNode, TrendNode } from './insights';\n\nimport React from 'react';\nimport { DataSummarizationConfig } from './hints';\nimport { getIntl, 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 formatValue = (\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 formatValue(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 formatValue(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 = formatValue(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 }: 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 = formatValue(intl, range.from, {\n siblingsTimeMark: range.to,\n datesWithTime,\n maxListSymbols,\n });\n const to = formatValue(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: 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 mainSummary: string = intl.formatMessage(\n { id: 'time-series-general-trend' },\n {\n dataKey: entitiesCount !== 1 ? dataKey : '',\n trend: intl.formatMessage({ id: `trend-${primaryTrend.change.strength}` }),\n from: intl.formatNumber(primaryTrend.change.from),\n to: intl.formatNumber(primaryTrend.change.to),\n },\n );\n const secondarylSummaries = secondaryTrends.map((trend) =>\n intl.formatMessage(\n { id: 'time-series-local-trend' },\n {\n trend: intl.formatMessage({ id: `trend-${trend.change.strength}` }),\n from: formatValue(intl, trend.from, {\n siblingsTimeMark: trend.to,\n datesWithTime,\n maxListSymbols,\n }),\n to: formatValue(intl, trend.to, {\n siblingsTimeMark: trend.from,\n datesWithTime,\n maxListSymbols,\n }),\n },\n ),\n );\n\n if (secondarylSummaries.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(secondarylSummaries, intl, 400, false),\n },\n );\n });\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\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(clusterInsight.labels, intl, maxListSymbols);\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: intl.formatNumber(clusterInsight.center.x),\n xLabel: clusterInsight.center.xLabel,\n y: intl.formatNumber(clusterInsight.center.y),\n 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 { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\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: 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 sumamry = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\n );\n\n return sumamry;\n }\n\n return null;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","names":["getIntl","formatLimitedSizeList","items","intl","maxFinalStringLength","arguments","length","undefined","includeEllipsis","limit","stringifyList","cutItems","slice","push","formatMessage","id","leftCount","formatList","formattedList","overflowRatio","Math","floor","maxIncreaseAttempts","i","newLimitFormattedList","isReactComponent","obj","_typeof","displayName","guessNumberAsTimestampMinDate","Date","getTime","formatValue","value","_ref","siblingsTimeMark","maxListSymbols","datesWithTime","formatNumber","abs","formatDate","dateStyle","timeStyle","Array","isArray","formattedValues","map","subValue","String","formatValuesList","values","_ref2","result","_ref3","rawValue","label","serialize","_ref4","_ref5","_ref6","insights","dataType","dataRange","dataTitle","entitiesCount","clustersLimit","valuesLimit","groupsLimit","locale","translations","availableLocales","dataRangeSummary","range","from","to","trendsInsights","trendsByDataKey","_iterator","_createForOfIteratorHelper","_step","s","n","done","_trendsByDataKey$insi","insight","dataKey","err","e","f","entities","count","entitiesList","Object","entries","_ref7","_primaryTrend$label","_ref8","_slicedToArray","generalTrend","find","type","localTrends","filter","primaryTrend","secondaryTrends","mainSummary","trend","concat","change","strength","secondarylSummaries","general","locals","summary","clustersInsights","biggestClusters","maxSize","size","minSize","clusterInsight","labels","anonymous","relativeSize","x","center","xLabel","y","yLabel","_ref9","_ref10","valuesInsight","groupInsights","valueCounts","group","minValuesCount","min","apply","_toConsumableArray","maxValuesCount","max","groupsCount","valuesCount","_ref11","sumamry"],"sources":["../../../src/a11y/serialize.ts"],"sourcesContent":["import { AnalyzedData, ClusterNode, ComparisonNode, GeneralTrendNode, TrendNode } from './insights';\n\nimport React from 'react';\nimport { DataSummarizationConfig } from './hints';\nimport { getIntl, 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 formatValue = (\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 formatValue(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 formatValue(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 = formatValue(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 }: 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 = formatValue(intl, range.from, {\n siblingsTimeMark: range.to,\n datesWithTime,\n maxListSymbols,\n });\n const to = formatValue(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: 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 mainSummary: string = intl.formatMessage(\n { id: 'time-series-general-trend' },\n {\n dataKey: entitiesCount !== 1 ? primaryTrend.label ?? dataKey : '',\n trend: intl.formatMessage({ id: `trend-${primaryTrend.change.strength}` }),\n from: intl.formatNumber(primaryTrend.change.from),\n to: intl.formatNumber(primaryTrend.change.to),\n },\n );\n const secondarylSummaries = secondaryTrends.map((trend) =>\n intl.formatMessage(\n { id: 'time-series-local-trend' },\n {\n trend: intl.formatMessage({ id: `trend-${trend.change.strength}` }),\n from: formatValue(intl, trend.from, {\n siblingsTimeMark: trend.to,\n datesWithTime,\n maxListSymbols,\n }),\n to: formatValue(intl, trend.to, {\n siblingsTimeMark: trend.from,\n datesWithTime,\n maxListSymbols,\n }),\n },\n ),\n );\n\n if (secondarylSummaries.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(secondarylSummaries, intl, 400, false),\n },\n );\n });\n\n const summary = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\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(clusterInsight.labels, intl, maxListSymbols);\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: intl.formatNumber(clusterInsight.center.x),\n xLabel: clusterInsight.center.xLabel,\n y: intl.formatNumber(clusterInsight.center.y),\n 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 { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\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: 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 sumamry = intl.formatMessage(\n { id: dataTitle ? 'chart-summary' : 'chart-summary-no-label' },\n { entities, entitiesList: intl.formatList(entitiesList), label: dataTitle },\n );\n\n return sumamry;\n }\n\n return null;\n};\n"],"mappings":"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"}