@semcore/d3-chart 3.60.0 → 3.60.1

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 (214) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/cjs/Area.js +14 -12
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Axis.js +17 -15
  5. package/lib/cjs/Axis.js.map +1 -1
  6. package/lib/cjs/Bar.js +19 -17
  7. package/lib/cjs/Bar.js.map +1 -1
  8. package/lib/cjs/Bubble.js +15 -13
  9. package/lib/cjs/Bubble.js.map +1 -1
  10. package/lib/cjs/CompactHorizontalBar.js +19 -17
  11. package/lib/cjs/CompactHorizontalBar.js.map +1 -1
  12. package/lib/cjs/Donut.js +12 -10
  13. package/lib/cjs/Donut.js.map +1 -1
  14. package/lib/cjs/Dots.js +11 -9
  15. package/lib/cjs/Dots.js.map +1 -1
  16. package/lib/cjs/HorizontalBar.js +19 -17
  17. package/lib/cjs/HorizontalBar.js.map +1 -1
  18. package/lib/cjs/Hover.js +6 -4
  19. package/lib/cjs/Hover.js.map +1 -1
  20. package/lib/cjs/Line.js +12 -10
  21. package/lib/cjs/Line.js.map +1 -1
  22. package/lib/cjs/Plot.js +6 -4
  23. package/lib/cjs/Plot.js.map +1 -1
  24. package/lib/cjs/Radar.js +22 -20
  25. package/lib/cjs/Radar.js.map +1 -1
  26. package/lib/cjs/RadialTree.js +15 -13
  27. package/lib/cjs/RadialTree.js.map +1 -1
  28. package/lib/cjs/Reference.js +15 -13
  29. package/lib/cjs/Reference.js.map +1 -1
  30. package/lib/cjs/ScatterPlot.js +12 -10
  31. package/lib/cjs/ScatterPlot.js.map +1 -1
  32. package/lib/cjs/Tooltip.js +12 -10
  33. package/lib/cjs/Tooltip.js.map +1 -1
  34. package/lib/cjs/Venn.js +12 -10
  35. package/lib/cjs/Venn.js.map +1 -1
  36. package/lib/cjs/a11y/PlotA11yModule.js +5 -3
  37. package/lib/cjs/a11y/PlotA11yModule.js.map +1 -1
  38. package/lib/cjs/a11y/PlotA11yView.js +5 -3
  39. package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
  40. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +7 -5
  41. package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js.map +1 -1
  42. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +20 -18
  43. package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js.map +1 -1
  44. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +9 -7
  45. package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js.map +1 -1
  46. package/lib/es6/Area.js +14 -12
  47. package/lib/es6/Area.js.map +1 -1
  48. package/lib/es6/Axis.js +17 -15
  49. package/lib/es6/Axis.js.map +1 -1
  50. package/lib/es6/Bar.js +19 -17
  51. package/lib/es6/Bar.js.map +1 -1
  52. package/lib/es6/Bubble.js +15 -13
  53. package/lib/es6/Bubble.js.map +1 -1
  54. package/lib/es6/CompactHorizontalBar.js +19 -17
  55. package/lib/es6/CompactHorizontalBar.js.map +1 -1
  56. package/lib/es6/Donut.js +12 -10
  57. package/lib/es6/Donut.js.map +1 -1
  58. package/lib/es6/Dots.js +11 -9
  59. package/lib/es6/Dots.js.map +1 -1
  60. package/lib/es6/HorizontalBar.js +19 -17
  61. package/lib/es6/HorizontalBar.js.map +1 -1
  62. package/lib/es6/Hover.js +6 -4
  63. package/lib/es6/Hover.js.map +1 -1
  64. package/lib/es6/Line.js +12 -10
  65. package/lib/es6/Line.js.map +1 -1
  66. package/lib/es6/Plot.js +6 -4
  67. package/lib/es6/Plot.js.map +1 -1
  68. package/lib/es6/Radar.js +22 -20
  69. package/lib/es6/Radar.js.map +1 -1
  70. package/lib/es6/RadialTree.js +15 -13
  71. package/lib/es6/RadialTree.js.map +1 -1
  72. package/lib/es6/Reference.js +15 -13
  73. package/lib/es6/Reference.js.map +1 -1
  74. package/lib/es6/ScatterPlot.js +12 -10
  75. package/lib/es6/ScatterPlot.js.map +1 -1
  76. package/lib/es6/Tooltip.js +12 -10
  77. package/lib/es6/Tooltip.js.map +1 -1
  78. package/lib/es6/Venn.js +12 -10
  79. package/lib/es6/Venn.js.map +1 -1
  80. package/lib/es6/a11y/PlotA11yModule.js +5 -3
  81. package/lib/es6/a11y/PlotA11yModule.js.map +1 -1
  82. package/lib/es6/a11y/PlotA11yView.js +5 -3
  83. package/lib/es6/a11y/PlotA11yView.js.map +1 -1
  84. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +7 -5
  85. package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js.map +1 -1
  86. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +20 -18
  87. package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js.map +1 -1
  88. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +9 -7
  89. package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js.map +1 -1
  90. package/lib/esm/AnimatedClipPath.mjs +54 -0
  91. package/lib/esm/Area.mjs +189 -0
  92. package/lib/esm/Axis.mjs +406 -0
  93. package/lib/esm/Bar.mjs +201 -0
  94. package/lib/esm/Bubble.mjs +216 -0
  95. package/lib/esm/CompactHorizontalBar.mjs +518 -0
  96. package/lib/esm/Donut.mjs +415 -0
  97. package/lib/esm/Dots.mjs +120 -0
  98. package/lib/esm/GroupBar.mjs +94 -0
  99. package/lib/esm/HorizontalBar.mjs +181 -0
  100. package/lib/esm/Hover.mjs +217 -0
  101. package/lib/esm/Line.mjs +199 -0
  102. package/lib/esm/Pattern.mjs +520 -0
  103. package/lib/esm/Plot.mjs +137 -0
  104. package/lib/esm/Radar.mjs +706 -0
  105. package/lib/esm/RadialTree.mjs +565 -0
  106. package/lib/esm/Reference.mjs +243 -0
  107. package/lib/esm/ResponsiveContainer.mjs +99 -0
  108. package/lib/esm/ScatterPlot.mjs +194 -0
  109. package/lib/esm/StackBar.mjs +177 -0
  110. package/lib/esm/StackedArea.mjs +84 -0
  111. package/lib/esm/Tooltip.mjs +255 -0
  112. package/lib/esm/Venn.mjs +234 -0
  113. package/lib/esm/a11y/DataAccessibilityTable.mjs +100 -0
  114. package/lib/esm/a11y/PlotA11yModule.mjs +117 -0
  115. package/lib/esm/a11y/PlotA11yView.mjs +146 -0
  116. package/lib/esm/a11y/bezier.mjs +32 -0
  117. package/lib/esm/a11y/focus.mjs +44 -0
  118. package/lib/esm/a11y/hints.mjs +122 -0
  119. package/lib/esm/a11y/insights.mjs +700 -0
  120. package/lib/esm/a11y/intl.mjs +17 -0
  121. package/lib/esm/a11y/locale.mjs +39 -0
  122. package/lib/esm/a11y/serialize.mjs +363 -0
  123. package/lib/esm/a11y/summarize.mjs +14 -0
  124. package/lib/esm/a11y/translations/module/__intergalactic-dynamic-locales.mjs +33 -0
  125. package/lib/esm/a11y/translations/module/de.json.mjs +14 -0
  126. package/lib/esm/a11y/translations/module/en.json.mjs +14 -0
  127. package/lib/esm/a11y/translations/module/es.json.mjs +14 -0
  128. package/lib/esm/a11y/translations/module/fr.json.mjs +14 -0
  129. package/lib/esm/a11y/translations/module/it.json.mjs +14 -0
  130. package/lib/esm/a11y/translations/module/ja.json.mjs +14 -0
  131. package/lib/esm/a11y/translations/module/ko.json.mjs +14 -0
  132. package/lib/esm/a11y/translations/module/nl.json.mjs +14 -0
  133. package/lib/esm/a11y/translations/module/pl.json.mjs +14 -0
  134. package/lib/esm/a11y/translations/module/pt.json.mjs +14 -0
  135. package/lib/esm/a11y/translations/module/sv.json.mjs +14 -0
  136. package/lib/esm/a11y/translations/module/tr.json.mjs +14 -0
  137. package/lib/esm/a11y/translations/module/vi.json.mjs +14 -0
  138. package/lib/esm/a11y/translations/module/zh.json.mjs +14 -0
  139. package/lib/esm/a11y/translations/view/__intergalactic-dynamic-locales.mjs +33 -0
  140. package/lib/esm/a11y/translations/view/de.json.mjs +48 -0
  141. package/lib/esm/a11y/translations/view/en.json.mjs +48 -0
  142. package/lib/esm/a11y/translations/view/es.json.mjs +48 -0
  143. package/lib/esm/a11y/translations/view/fr.json.mjs +48 -0
  144. package/lib/esm/a11y/translations/view/it.json.mjs +48 -0
  145. package/lib/esm/a11y/translations/view/ja.json.mjs +48 -0
  146. package/lib/esm/a11y/translations/view/ko.json.mjs +48 -0
  147. package/lib/esm/a11y/translations/view/nl.json.mjs +48 -0
  148. package/lib/esm/a11y/translations/view/pl.json.mjs +48 -0
  149. package/lib/esm/a11y/translations/view/pt.json.mjs +48 -0
  150. package/lib/esm/a11y/translations/view/sv.json.mjs +48 -0
  151. package/lib/esm/a11y/translations/view/tr.json.mjs +48 -0
  152. package/lib/esm/a11y/translations/view/vi.json.mjs +48 -0
  153. package/lib/esm/a11y/translations/view/zh.json.mjs +48 -0
  154. package/lib/esm/color.mjs +127 -0
  155. package/lib/esm/component/Chart/AbstractChart.mjs +408 -0
  156. package/lib/esm/component/Chart/AreaChart.mjs +145 -0
  157. package/lib/esm/component/Chart/BarChart.mjs +240 -0
  158. package/lib/esm/component/Chart/BubbleChart.mjs +135 -0
  159. package/lib/esm/component/Chart/CigaretteChart.mjs +294 -0
  160. package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +113 -0
  161. package/lib/esm/component/Chart/DonutChart.mjs +113 -0
  162. package/lib/esm/component/Chart/HistogramChart.mjs +166 -0
  163. package/lib/esm/component/Chart/LineChart.mjs +131 -0
  164. package/lib/esm/component/Chart/RadarChart.mjs +115 -0
  165. package/lib/esm/component/Chart/ScatterPlotChart.mjs +144 -0
  166. package/lib/esm/component/Chart/VennChart.mjs +141 -0
  167. package/lib/esm/component/Chart/index.mjs +27 -0
  168. package/lib/esm/component/ChartLegend/BaseLegend.mjs +91 -0
  169. package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +86 -0
  170. package/lib/esm/component/ChartLegend/LegendFlex/legend-flex.shadow.css +12 -0
  171. package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +240 -0
  172. package/lib/esm/component/ChartLegend/LegendItem/LegendItem.type.mjs +4 -0
  173. package/lib/esm/component/ChartLegend/LegendItem/legend-item.shadow.css +129 -0
  174. package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +90 -0
  175. package/lib/esm/component/ChartLegend/LegendTable/legend-table.shadow.css +19 -0
  176. package/lib/esm/component/ChartLegend/index.mjs +5 -0
  177. package/lib/esm/component/Cigarette/Cigarette.mjs +139 -0
  178. package/lib/esm/component/StackGroupBar/StackGroupBar.mjs +141 -0
  179. package/lib/esm/createElement.mjs +104 -0
  180. package/lib/esm/index.mjs +70 -0
  181. package/lib/esm/style/area.shadow.css +50 -0
  182. package/lib/esm/style/axis.shadow.css +88 -0
  183. package/lib/esm/style/bar.shadow.css +66 -0
  184. package/lib/esm/style/bubble.shadow.css +64 -0
  185. package/lib/esm/style/donut.shadow.css +36 -0
  186. package/lib/esm/style/dot.shadow.css +27 -0
  187. package/lib/esm/style/hover.shadow.css +9 -0
  188. package/lib/esm/style/line.shadow.css +43 -0
  189. package/lib/esm/style/plot.shadow.css +19 -0
  190. package/lib/esm/style/plotA11yModule.shadow.css +12 -0
  191. package/lib/esm/style/plotA11yView.shadow.css +39 -0
  192. package/lib/esm/style/radar.shadow.css +80 -0
  193. package/lib/esm/style/radial-tree.shadow.css +54 -0
  194. package/lib/esm/style/reference.shadow.css +43 -0
  195. package/lib/esm/style/scatterplot.shadow.css +41 -0
  196. package/lib/esm/style/tooltip.shadow.css +42 -0
  197. package/lib/esm/style/venn.shadow.css +48 -0
  198. package/lib/esm/translations/__intergalactic-dynamic-locales.mjs +31 -0
  199. package/lib/esm/translations/en.json.mjs +12 -0
  200. package/lib/esm/translations/es.json.mjs +11 -0
  201. package/lib/esm/translations/fr.json.mjs +11 -0
  202. package/lib/esm/translations/it.json.mjs +11 -0
  203. package/lib/esm/translations/ja.json.mjs +11 -0
  204. package/lib/esm/translations/ko.json.mjs +11 -0
  205. package/lib/esm/translations/nl.json.mjs +11 -0
  206. package/lib/esm/translations/pl.json.mjs +11 -0
  207. package/lib/esm/translations/pt.json.mjs +11 -0
  208. package/lib/esm/translations/sv.json.mjs +11 -0
  209. package/lib/esm/translations/tr.json.mjs +11 -0
  210. package/lib/esm/translations/vi.json.mjs +11 -0
  211. package/lib/esm/translations/zh.json.mjs +11 -0
  212. package/lib/esm/utils.mjs +266 -0
  213. package/package.json +11 -11
  214. package/vite.config.ts +2 -0
@@ -0,0 +1,700 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
4
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
6
+ import { makeBezier } from "./bezier.mjs";
7
+ var getPropByPath = function getPropByPath2(obj, path) {
8
+ if (typeof path === "number") path = String(path);
9
+ if (typeof path === "string") path = path.split(".");
10
+ for (var i = 0; i < path.length; i++) {
11
+ if (_typeof(obj) !== "object" || obj === null) return obj;
12
+ obj = obj[path[i]];
13
+ }
14
+ return obj;
15
+ };
16
+ var movingAverage = function movingAverage2(data, frame) {
17
+ var result = [];
18
+ frame = Math.floor(frame) % 2 === data.length % 2 ? Math.floor(frame) : Math.ceil(frame);
19
+ for (var i = 0; i < data.length; i++) {
20
+ var startIndex = Math.max(0, i - Math.floor(frame / 2));
21
+ var endIndex = Math.min(data.length, i + Math.ceil(frame / 2));
22
+ startIndex = Math.min(startIndex, Math.max(0, endIndex - frame));
23
+ endIndex = Math.max(endIndex, Math.min(data.length, startIndex + frame));
24
+ var part = data.slice(startIndex, endIndex);
25
+ var sum = part.reduce(function(sum2, item) {
26
+ return sum2 + item;
27
+ }, 0);
28
+ var value = sum / part.length;
29
+ result.push(value);
30
+ }
31
+ return result;
32
+ };
33
+ var extractDataInsights = function extractDataInsights2(data, hints, config) {
34
+ var _config$dataType, _hints$axesTitle$vert, _ref;
35
+ var insights = [];
36
+ var dataType = (_config$dataType = config.dataType) !== null && _config$dataType !== void 0 ? _config$dataType : hints.dataType;
37
+ var dataRange = [];
38
+ var groupKeys = _toConsumableArray(hints.groups);
39
+ var dataTitle = (_hints$axesTitle$vert = hints.axesTitle.vertical) !== null && _hints$axesTitle$vert !== void 0 ? _hints$axesTitle$vert : hints.axesTitle.horizontal;
40
+ var entitiesCount = 0;
41
+ var keysMap = Object.fromEntries(Object.keys((_ref = Array.isArray(data) ? data[0] : data) !== null && _ref !== void 0 ? _ref : {}).map(function(key2) {
42
+ return [key2, true];
43
+ }));
44
+ if (!dataType) {
45
+ if ((keysMap["y"] || keysMap["y1"] || keysMap["y2"]) && keysMap["x"] && (keysMap["value"] || keysMap["label"]) || hints.fields.horizontalAxes.size > 0 && hints.fields.verticalAxes.size > 0 && hints.fields.valueAxes.size > 0) {
46
+ dataType = "points-cloud";
47
+ } else if (Array.isArray(data) && data.length > 6) {
48
+ dataType = "time-series";
49
+ } else if (Array.isArray(data) && Object.keys(keysMap).length >= 3) {
50
+ var possibleGroupKeys = Object.keys(keysMap).filter(function(key2) {
51
+ return typeof data[0][key2] === "string";
52
+ }).filter(function(key2) {
53
+ var allData = data.map(function(row2) {
54
+ return row2[key2];
55
+ });
56
+ return new Set(allData).size === allData.length;
57
+ });
58
+ if (possibleGroupKeys.length === 1) {
59
+ groupKeys = possibleGroupKeys;
60
+ dataType = "grouped-values";
61
+ } else {
62
+ dataType = "values-set";
63
+ }
64
+ } else {
65
+ dataType = "values-set";
66
+ }
67
+ }
68
+ if (dataType === "grouped-values" && groupKeys.length === 0) {
69
+ dataType = "values-set";
70
+ }
71
+ if (Array.isArray(data)) {
72
+ if (dataType === "time-series") {
73
+ var _ref2, _hints$titles$getHori, _hints$titles$getHori2, _hints$titles, _ref3, _hints$titles$getHori3, _hints$titles$getHori4, _hints$titles2;
74
+ var firstRow = data[0];
75
+ var lastRow = data[data.length - 1];
76
+ var possibleValueKeys = ["y", "value"].concat(_toConsumableArray(hints.fields.verticalAxes));
77
+ var valuesKeys = possibleValueKeys.filter(function(key2) {
78
+ return keysMap[key2];
79
+ });
80
+ var possibleLabelKeys = ["label", "x"].concat(_toConsumableArray(hints.fields.horizontalAxes));
81
+ var labelsKey = possibleLabelKeys.filter(function(key2) {
82
+ return keysMap[key2];
83
+ })[0];
84
+ entitiesCount = Object.keys(valuesKeys).length;
85
+ var fromKey = firstRow[labelsKey];
86
+ var toKey = lastRow[labelsKey];
87
+ var from = (_ref2 = (_hints$titles$getHori = (_hints$titles$getHori2 = (_hints$titles = hints.titles).getHorizontalAxesTitle) === null || _hints$titles$getHori2 === void 0 ? void 0 : _hints$titles$getHori2.call(_hints$titles, fromKey)) !== null && _hints$titles$getHori !== void 0 ? _hints$titles$getHori : hints.titles.horizontalAxes[fromKey]) !== null && _ref2 !== void 0 ? _ref2 : fromKey;
88
+ var to = (_ref3 = (_hints$titles$getHori3 = (_hints$titles$getHori4 = (_hints$titles2 = hints.titles).getHorizontalAxesTitle) === null || _hints$titles$getHori4 === void 0 ? void 0 : _hints$titles$getHori4.call(_hints$titles2, toKey)) !== null && _hints$titles$getHori3 !== void 0 ? _hints$titles$getHori3 : hints.titles.horizontalAxes[toKey]) !== null && _ref3 !== void 0 ? _ref3 : toKey;
89
+ if (entitiesCount > 0) {
90
+ var _hints$axesTitle$vert2;
91
+ dataRange.push({
92
+ from,
93
+ to,
94
+ label: (_hints$axesTitle$vert2 = hints.axesTitle.vertical) !== null && _hints$axesTitle$vert2 !== void 0 ? _hints$axesTitle$vert2 : labelsKey
95
+ });
96
+ }
97
+ var _iterator = _createForOfIteratorHelper(valuesKeys), _step;
98
+ try {
99
+ var _loop = function _loop2() {
100
+ var _config$movingAverage, _config$movingAverage2, _insights;
101
+ var valueKey = _step.value;
102
+ var values2 = data.map(function(row2) {
103
+ return row2[valueKey];
104
+ }).filter(function(value) {
105
+ return _typeof(value) !== "symbol";
106
+ });
107
+ var sum = values2.reduce(function(sum2, value) {
108
+ return sum2 + value;
109
+ }, 0);
110
+ var average = sum / values2.length;
111
+ var variance = 1 / values2.length * values2.map(function(value) {
112
+ return Math.pow(value - average, 2);
113
+ }).reduce(function(sum2, item) {
114
+ return sum2 + item;
115
+ }, 0);
116
+ var standardDeviation = Math.sqrt(variance);
117
+ var trendStrengths = ["static", "weak", "medium", "strong"];
118
+ var frameSize = Math.sqrt(values2.length);
119
+ var longMovingAverageSize = (_config$movingAverage = config.movingAverage.longSize) !== null && _config$movingAverage !== void 0 ? _config$movingAverage : frameSize;
120
+ var shortMovingAverageSize = (_config$movingAverage2 = config.movingAverage.shortSize) !== null && _config$movingAverage2 !== void 0 ? _config$movingAverage2 : Math.sqrt(frameSize);
121
+ var longMovingAverage = movingAverage(values2, longMovingAverageSize);
122
+ var shortMovingAverage = values2.length < 8 ? values2 : movingAverage(values2, shortMovingAverageSize);
123
+ var table = [];
124
+ for (var i2 in values2) {
125
+ var _values$i, _longMovingAverage$i, _shortMovingAverage$i;
126
+ table.push({
127
+ value: ((_values$i = values2[i2]) !== null && _values$i !== void 0 ? _values$i : NaN).toFixed(2),
128
+ "long": ((_longMovingAverage$i = longMovingAverage[i2]) !== null && _longMovingAverage$i !== void 0 ? _longMovingAverage$i : NaN).toFixed(2),
129
+ "short": ((_shortMovingAverage$i = shortMovingAverage[i2]) !== null && _shortMovingAverage$i !== void 0 ? _shortMovingAverage$i : NaN).toFixed(2)
130
+ });
131
+ }
132
+ var strengthsMap = {
133
+ growth: {
134
+ "static": "static",
135
+ weak: "weak-growth",
136
+ medium: "growth",
137
+ strong: "strong-growth"
138
+ },
139
+ reduction: {
140
+ "static": "static",
141
+ weak: "weak-reduction",
142
+ medium: "reduction",
143
+ strong: "strong-reduction"
144
+ }
145
+ };
146
+ var recordTrend = function recordTrend2(_ref4) {
147
+ var value = _ref4.value, width = _ref4.width, label = _ref4.label, type = _ref4.type;
148
+ for (var _i = 0; _i < trendStrengths.length; _i++) {
149
+ var _hints$pointsDensity$, _hints$pointsDensity, _hints$pointsDensity$2, _hints$pointsDensity2;
150
+ var normalizedHeight = Math.abs(value.from - value.to) / ((_hints$pointsDensity$ = (_hints$pointsDensity = hints.pointsDensity) === null || _hints$pointsDensity === void 0 ? void 0 : _hints$pointsDensity.verticalAxes) !== null && _hints$pointsDensity$ !== void 0 ? _hints$pointsDensity$ : 1);
151
+ var normalizedWidth = width / ((_hints$pointsDensity$2 = (_hints$pointsDensity2 = hints.pointsDensity) === null || _hints$pointsDensity2 === void 0 ? void 0 : _hints$pointsDensity2.horizontalAxes) !== null && _hints$pointsDensity$2 !== void 0 ? _hints$pointsDensity$2 : 1);
152
+ var tang = normalizedHeight / normalizedWidth;
153
+ var trendStrength = trendStrengths[_i];
154
+ if (tang <= config.trendTangens[trendStrength] || _i === trendStrengths.length - 1) {
155
+ var strength = value.to > value.from ? strengthsMap.growth[trendStrength] : strengthsMap.reduction[trendStrength];
156
+ return {
157
+ type,
158
+ priority: _i,
159
+ change: {
160
+ from: value.from,
161
+ to: value.to,
162
+ strength
163
+ },
164
+ from: label.from,
165
+ to: label.to,
166
+ dataKey: label.dataKey,
167
+ label: label.displayValue
168
+ };
169
+ }
170
+ }
171
+ };
172
+ var generalTrend = recordTrend({
173
+ type: "general-trend",
174
+ value: {
175
+ from: shortMovingAverage[0],
176
+ to: shortMovingAverage[shortMovingAverage.length - 1]
177
+ },
178
+ width: data.length,
179
+ label: {
180
+ from,
181
+ to,
182
+ dataKey: valueKey,
183
+ displayValue: hints.titles.valuesAxes[valueKey]
184
+ }
185
+ });
186
+ var localTrends = [];
187
+ {
188
+ var _config$movingAverage3;
189
+ var notableDiff = (_config$movingAverage3 = config.movingAverage.notableDiff) !== null && _config$movingAverage3 !== void 0 ? _config$movingAverage3 : standardDeviation / 10;
190
+ var lastSwitch = 0;
191
+ var lastSwitchValue = shortMovingAverage[lastSwitch];
192
+ var shortWasAbove = shortMovingAverage[0] > longMovingAverage[0];
193
+ for (var _i2 = 1; _i2 < data.length; _i2++) {
194
+ var _ref5, _hints$titles$getHori5, _hints$titles$getHori6, _hints$titles3, _ref6, _hints$titles$getHori7, _hints$titles$getHori8, _hints$titles4;
195
+ var shortIsAbove = shortMovingAverage[_i2] > longMovingAverage[_i2];
196
+ var diff = Math.abs(shortMovingAverage[_i2] - longMovingAverage[_i2]);
197
+ if (shortIsAbove === shortWasAbove) continue;
198
+ if (diff < notableDiff) continue;
199
+ if (_i2 === 0 && lastSwitch === data.length - 1) continue;
200
+ if (_i2 === data.length - 1 && lastSwitch === 0) continue;
201
+ _i2 = Math.min(_i2, data.length - 1);
202
+ var _fromKey = data[lastSwitch][labelsKey];
203
+ var _toKey = data[_i2][labelsKey];
204
+ var _from = (_ref5 = (_hints$titles$getHori5 = (_hints$titles$getHori6 = (_hints$titles3 = hints.titles).getHorizontalAxesTitle) === null || _hints$titles$getHori6 === void 0 ? void 0 : _hints$titles$getHori6.call(_hints$titles3, _fromKey)) !== null && _hints$titles$getHori5 !== void 0 ? _hints$titles$getHori5 : hints.titles.horizontalAxes[_fromKey]) !== null && _ref5 !== void 0 ? _ref5 : _fromKey;
205
+ var _to = (_ref6 = (_hints$titles$getHori7 = (_hints$titles$getHori8 = (_hints$titles4 = hints.titles).getHorizontalAxesTitle) === null || _hints$titles$getHori8 === void 0 ? void 0 : _hints$titles$getHori8.call(_hints$titles4, _toKey)) !== null && _hints$titles$getHori7 !== void 0 ? _hints$titles$getHori7 : hints.titles.horizontalAxes[_toKey]) !== null && _ref6 !== void 0 ? _ref6 : _toKey;
206
+ localTrends.push(recordTrend({
207
+ type: "trend",
208
+ value: {
209
+ from: lastSwitchValue,
210
+ to: shortMovingAverage[_i2]
211
+ },
212
+ width: _i2 - lastSwitch,
213
+ label: {
214
+ from: _from,
215
+ to: _to,
216
+ dataKey: valueKey,
217
+ displayValue: hints.titles.valuesAxes[valueKey]
218
+ }
219
+ }));
220
+ lastSwitch = _i2;
221
+ lastSwitchValue = shortMovingAverage[lastSwitch];
222
+ shortWasAbove = shortIsAbove;
223
+ }
224
+ if (lastSwitch !== 0) {
225
+ var lastIndex = shortMovingAverage.length - 1;
226
+ var lastValue = shortMovingAverage[lastIndex];
227
+ if (Math.abs(lastSwitchValue - lastValue) > notableDiff) {
228
+ localTrends.push(recordTrend({
229
+ type: "trend",
230
+ value: {
231
+ from: lastSwitchValue,
232
+ to: lastValue
233
+ },
234
+ width: lastIndex - lastSwitch,
235
+ label: {
236
+ from: data[lastSwitch][labelsKey],
237
+ to: data[lastIndex][labelsKey],
238
+ dataKey: valueKey,
239
+ displayValue: hints.titles.valuesAxes[valueKey]
240
+ }
241
+ }));
242
+ }
243
+ }
244
+ }
245
+ insights.push(generalTrend);
246
+ (_insights = insights).push.apply(_insights, localTrends);
247
+ };
248
+ for (_iterator.s(); !(_step = _iterator.n()).done; ) {
249
+ _loop();
250
+ }
251
+ } catch (err) {
252
+ _iterator.e(err);
253
+ } finally {
254
+ _iterator.f();
255
+ }
256
+ } else if (dataType === "points-cloud") {
257
+ var _ref7, _config$clustersGridS, _relativeSizeDistrivu, _insights2;
258
+ var guessedXKey = [].concat(_toConsumableArray(hints.fields.horizontalAxes.values()), ["x"])[0];
259
+ var guessedYKey = [].concat(_toConsumableArray(hints.fields.verticalAxes.values()), ["y"])[0];
260
+ var guessedValueKey = [].concat(_toConsumableArray(hints.fields.valueAxes.values()), ["value"])[0];
261
+ var guessedLabelKey = keysMap["label"] ? "label" : guessedValueKey;
262
+ var normalized = data.map(function(row2) {
263
+ return {
264
+ x: row2[guessedXKey],
265
+ y: row2[guessedYKey],
266
+ label: row2[guessedLabelKey],
267
+ value: row2[guessedValueKey]
268
+ };
269
+ });
270
+ var gridSize = (_ref7 = (_config$clustersGridS = config.clustersGridSize) !== null && _config$clustersGridS !== void 0 ? _config$clustersGridS : hints.grid.verticalAxes) !== null && _ref7 !== void 0 ? _ref7 : hints.grid.horizontalAxes;
271
+ if (!gridSize) {
272
+ var usedX = /* @__PURE__ */ new Set();
273
+ var usedY = /* @__PURE__ */ new Set();
274
+ var _iterator2 = _createForOfIteratorHelper(normalized), _step2;
275
+ try {
276
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {
277
+ var _step2$value = _step2.value, _x = _step2$value.x, _y = _step2$value.y;
278
+ usedX.add(_x);
279
+ usedY.add(_y);
280
+ }
281
+ } catch (err) {
282
+ _iterator2.e(err);
283
+ } finally {
284
+ _iterator2.f();
285
+ }
286
+ var orderedX = _toConsumableArray(usedX).sort(function(a, b) {
287
+ return a - b;
288
+ });
289
+ var orderedY = _toConsumableArray(usedY).sort(function(a, b) {
290
+ return a - b;
291
+ });
292
+ var distancesX = orderedX.slice(0, -1).map(function(x, index) {
293
+ return orderedX[index + 1] - x;
294
+ });
295
+ var distancesY = orderedY.slice(0, -1).map(function(y, index) {
296
+ return orderedY[index + 1] - y;
297
+ });
298
+ var avgDistanceX = distancesX.reduce(function(sum, x) {
299
+ return sum + x;
300
+ }, 0) / distancesX.length;
301
+ var avgDistanceY = distancesY.reduce(function(sum, y) {
302
+ return sum + y;
303
+ }, 0) / distancesY.length;
304
+ var belowAvgDistancesX = distancesX.filter(function(x) {
305
+ return x < avgDistanceX;
306
+ });
307
+ var belowAvgDistancesY = distancesY.filter(function(y) {
308
+ return y < avgDistanceY;
309
+ });
310
+ var betweenDistanceX = belowAvgDistancesX.reduce(function(sum, x) {
311
+ return sum + x;
312
+ }, 0) / belowAvgDistancesX.length;
313
+ var betweenDistanceY = belowAvgDistancesY.reduce(function(sum, y) {
314
+ return sum + y;
315
+ }, 0) / belowAvgDistancesY.length;
316
+ var avgDistance = 0;
317
+ if (!Number.isNaN(betweenDistanceX) && !Number.isNaN(betweenDistanceY)) {
318
+ avgDistance = (betweenDistanceX + betweenDistanceY) / 2;
319
+ } else if (!Number.isNaN(betweenDistanceX)) {
320
+ avgDistance = betweenDistanceX;
321
+ } else if (!Number.isNaN(betweenDistanceY)) {
322
+ avgDistance = betweenDistanceY;
323
+ } else {
324
+ avgDistance = (avgDistanceX + avgDistanceY) / 2;
325
+ }
326
+ gridSize = Math.sqrt(Math.sqrt(avgDistance));
327
+ }
328
+ var grid = {};
329
+ var takenY = /* @__PURE__ */ new Set();
330
+ var takenX = /* @__PURE__ */ new Set();
331
+ for (var i = 0; i < normalized.length; i++) {
332
+ var _grid$gridX, _grid$gridX$gridY;
333
+ var _normalized$i = normalized[i], _x2 = _normalized$i.x, _y2 = _normalized$i.y;
334
+ var gridX = Math.round(_x2 / gridSize);
335
+ var gridY = Math.round(_y2 / gridSize);
336
+ takenY.add(_y2);
337
+ takenX.add(_x2);
338
+ grid[gridX] = (_grid$gridX = grid[gridX]) !== null && _grid$gridX !== void 0 ? _grid$gridX : {};
339
+ grid[gridX][gridY] = (_grid$gridX$gridY = grid[gridX][gridY]) !== null && _grid$gridX$gridY !== void 0 ? _grid$gridX$gridY : {
340
+ clusterId: "".concat(gridX, "_").concat(gridY),
341
+ members: []
342
+ };
343
+ grid[gridX][gridY].members.push(normalized[i]);
344
+ }
345
+ var clusters = {};
346
+ var _iterator3 = _createForOfIteratorHelper(Object.keys(grid).map(function(x) {
347
+ return parseInt(x, 10);
348
+ })), _step3;
349
+ try {
350
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) {
351
+ var _x4 = _step3.value;
352
+ var _iterator4 = _createForOfIteratorHelper(Object.keys(grid[_x4]).map(function(y) {
353
+ return parseInt(y, 10);
354
+ })), _step4;
355
+ try {
356
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) {
357
+ var _clusters$grid$_x4$_y, _clusters$grid$_x4$_y2;
358
+ var _y4 = _step4.value;
359
+ var pointHandled = false;
360
+ for (var _i4 = 0, _arr = [_x4 - 1, _x4, _x4 + 1]; _i4 < _arr.length; _i4++) {
361
+ var xNeighbour = _arr[_i4];
362
+ for (var _i5 = 0, _arr2 = [_y4 - 1, _y4, _y4 + 1]; _i5 < _arr2.length; _i5++) {
363
+ var _grid$xNeighbour;
364
+ var yNeighbour = _arr2[_i5];
365
+ if (xNeighbour === void 0 || yNeighbour === void 0) continue;
366
+ if (xNeighbour === _x4 && yNeighbour === _y4) continue;
367
+ if (!((_grid$xNeighbour = grid[xNeighbour]) !== null && _grid$xNeighbour !== void 0 && _grid$xNeighbour[yNeighbour])) continue;
368
+ pointHandled = true;
369
+ grid[_x4][_y4].clusterId = grid[xNeighbour][yNeighbour].clusterId;
370
+ break;
371
+ }
372
+ if (pointHandled) break;
373
+ }
374
+ clusters[grid[_x4][_y4].clusterId] = (_clusters$grid$_x4$_y = clusters[grid[_x4][_y4].clusterId]) !== null && _clusters$grid$_x4$_y !== void 0 ? _clusters$grid$_x4$_y : [];
375
+ (_clusters$grid$_x4$_y2 = clusters[grid[_x4][_y4].clusterId]).push.apply(_clusters$grid$_x4$_y2, _toConsumableArray(grid[_x4][_y4].members));
376
+ }
377
+ } catch (err) {
378
+ _iterator4.e(err);
379
+ } finally {
380
+ _iterator4.f();
381
+ }
382
+ }
383
+ } catch (err) {
384
+ _iterator3.e(err);
385
+ } finally {
386
+ _iterator3.f();
387
+ }
388
+ var clustersInsights = [];
389
+ for (var _clusterId in clusters) {
390
+ var _hints$axesTitle$hori, _hints$axesTitle$vert3;
391
+ var size = clusters[_clusterId].reduce(function(sum, _ref8) {
392
+ var value = _ref8.value;
393
+ return sum + (value !== null && value !== void 0 ? value : 1);
394
+ }, 0);
395
+ var labels = _toConsumableArray(clusters[_clusterId]).sort(function(a, b) {
396
+ return b.value - a.value;
397
+ }).map(function(_ref9) {
398
+ var label = _ref9.label;
399
+ return label;
400
+ }).filter(function(label) {
401
+ return label !== void 0;
402
+ });
403
+ var uniqueLabels = _toConsumableArray(new Set(labels));
404
+ var _x3 = clusters[_clusterId].reduce(function(sum, _ref10) {
405
+ var x = _ref10.x;
406
+ return sum + x;
407
+ }, 0) / clusters[_clusterId].length;
408
+ var _y3 = clusters[_clusterId].reduce(function(sum, _ref11) {
409
+ var y = _ref11.y;
410
+ return sum + y;
411
+ }, 0) / clusters[_clusterId].length;
412
+ clustersInsights.push({
413
+ type: "cluster",
414
+ priority: 1,
415
+ size,
416
+ labels: uniqueLabels,
417
+ relativeSize: "average",
418
+ center: {
419
+ x: _x3,
420
+ y: _y3,
421
+ xLabel: (_hints$axesTitle$hori = hints.axesTitle.horizontal) !== null && _hints$axesTitle$hori !== void 0 ? _hints$axesTitle$hori : guessedXKey,
422
+ yLabel: (_hints$axesTitle$vert3 = hints.axesTitle.vertical) !== null && _hints$axesTitle$vert3 !== void 0 ? _hints$axesTitle$vert3 : guessedYKey
423
+ }
424
+ });
425
+ }
426
+ entitiesCount = Object.keys(clusters).length;
427
+ clustersInsights.sort(function(a, b) {
428
+ return b.size - a.size;
429
+ });
430
+ var relativeSizeDistrivution = (_relativeSizeDistrivu = {}, _defineProperty(_relativeSizeDistrivu, "significantly-bigger", {
431
+ max: Infinity,
432
+ min: 0.85
433
+ }), _defineProperty(_relativeSizeDistrivu, "bigger", {
434
+ min: 0.7,
435
+ max: 0.85
436
+ }), _defineProperty(_relativeSizeDistrivu, "slightly-bigger", {
437
+ min: 0.6,
438
+ max: 0.7
439
+ }), _defineProperty(_relativeSizeDistrivu, "average", {
440
+ min: 0.4,
441
+ max: 0.6
442
+ }), _defineProperty(_relativeSizeDistrivu, "slightly-smaller", {
443
+ max: 0.4,
444
+ min: 0.3
445
+ }), _defineProperty(_relativeSizeDistrivu, "smaller", {
446
+ min: 0.15,
447
+ max: 0.3
448
+ }), _defineProperty(_relativeSizeDistrivu, "significantly-smaller", {
449
+ min: -Infinity,
450
+ max: 0.15
451
+ }), _relativeSizeDistrivu);
452
+ var averageSize = clustersInsights.reduce(function(sum, cluster) {
453
+ return sum + cluster.size;
454
+ }, 0) / clustersInsights.length;
455
+ var smallerClusters = clustersInsights.filter(function(cluster) {
456
+ return cluster.size < averageSize;
457
+ });
458
+ var smallerSize = smallerClusters.reduce(function(sum, cluster) {
459
+ return sum + cluster.size;
460
+ }, 0) / smallerClusters.length;
461
+ var biggerClusters = clustersInsights.filter(function(cluster) {
462
+ return cluster.size > averageSize;
463
+ });
464
+ var biggerSize = biggerClusters.reduce(function(sum, cluster) {
465
+ return sum + cluster.size;
466
+ }, 0) / biggerClusters.length;
467
+ var normalizingSize = averageSize * 2;
468
+ var averageSizeNormalized = averageSize / normalizingSize;
469
+ var smallerSizeNormalized = smallerSize / normalizingSize;
470
+ var biggerSizeNormalized = biggerSize / normalizingSize;
471
+ smallerSizeNormalized = !Number.isNaN(smallerSizeNormalized) ? smallerSizeNormalized : 0.25;
472
+ averageSizeNormalized = !Number.isNaN(averageSizeNormalized) ? averageSizeNormalized : 0.5;
473
+ biggerSizeNormalized = !Number.isNaN(biggerSizeNormalized) ? biggerSizeNormalized : 0.75;
474
+ var sizeMapBezier = makeBezier([{
475
+ x: 0,
476
+ y: 0
477
+ }, {
478
+ x: 0.25,
479
+ y: smallerSizeNormalized,
480
+ weight: 10
481
+ }, {
482
+ x: 0.5,
483
+ y: averageSizeNormalized
484
+ }, {
485
+ x: 0.75,
486
+ y: biggerSizeNormalized,
487
+ weight: 10
488
+ }, {
489
+ x: 1,
490
+ y: 1
491
+ }], {
492
+ width: 1,
493
+ height: 1
494
+ });
495
+ for (var _i3 = 0, _clustersInsights = clustersInsights; _i3 < _clustersInsights.length; _i3++) {
496
+ var clustersInsight = _clustersInsights[_i3];
497
+ var _size = clustersInsight.size;
498
+ var mappedSize = sizeMapBezier(_size / normalizingSize);
499
+ for (var relativeSize in relativeSizeDistrivution) {
500
+ var _relativeSizeDistrivu2 = relativeSizeDistrivution[relativeSize], min = _relativeSizeDistrivu2.min, max = _relativeSizeDistrivu2.max;
501
+ if (mappedSize > min && mappedSize <= max) {
502
+ clustersInsight.relativeSize = relativeSize;
503
+ break;
504
+ }
505
+ }
506
+ }
507
+ (_insights2 = insights).push.apply(_insights2, clustersInsights);
508
+ if (hints.axesTitle.horizontal) {
509
+ var sortedX = _toConsumableArray(takenX).sort(function(a, b) {
510
+ return a - b;
511
+ });
512
+ dataRange.push({
513
+ from: sortedX[0],
514
+ to: sortedX[sortedX.length - 1],
515
+ label: hints.axesTitle.horizontal
516
+ });
517
+ }
518
+ if (hints.axesTitle.vertical) {
519
+ var sortedY = _toConsumableArray(takenY).sort(function(a, b) {
520
+ return a - b;
521
+ });
522
+ dataRange.push({
523
+ from: sortedY[0],
524
+ to: sortedY[sortedY.length - 1],
525
+ label: hints.axesTitle.vertical
526
+ });
527
+ }
528
+ } else if (dataType === "grouped-values") {
529
+ var _insights3;
530
+ var makeRowKey = function makeRowKey2(row2) {
531
+ return groupKeys.map(function(key2, index) {
532
+ return "".concat(index, "-").concat(getPropByPath(row2, key2));
533
+ }).join("-");
534
+ };
535
+ var allRowsIds = data.map(makeRowKey);
536
+ var groupedValues = {};
537
+ for (var _i6 = 0; _i6 < data.length; _i6++) {
538
+ var _groupedValues$key, _hints$titles$getHori9, _hints$titles$getHori10, _hints$titles5;
539
+ var row = data[_i6];
540
+ var key = allRowsIds[_i6];
541
+ var groupKeyValue = getPropByPath(row, groupKeys[0]);
542
+ groupedValues[key] = (_groupedValues$key = groupedValues[key]) !== null && _groupedValues$key !== void 0 ? _groupedValues$key : {
543
+ groupName: (_hints$titles$getHori9 = (_hints$titles$getHori10 = (_hints$titles5 = hints.titles).getHorizontalAxesTitle) === null || _hints$titles$getHori10 === void 0 ? void 0 : _hints$titles$getHori10.call(_hints$titles5, groupKeyValue)) !== null && _hints$titles$getHori9 !== void 0 ? _hints$titles$getHori9 : groupKeyValue,
544
+ rows: []
545
+ };
546
+ groupedValues[key].rows.push(row);
547
+ }
548
+ var fields = _toConsumableArray(hints.fields.values);
549
+ var grouppingKeys = Object.fromEntries(groupKeys.map(function(key2) {
550
+ return [key2, true];
551
+ }));
552
+ if (fields.length === 0) {
553
+ var _fields;
554
+ (_fields = fields).push.apply(_fields, _toConsumableArray(Object.keys(keysMap)));
555
+ }
556
+ fields = fields.filter(function(key2) {
557
+ return !grouppingKeys[key2];
558
+ });
559
+ var groups = Object.entries(groupedValues).map(function(_ref12) {
560
+ var _group$groupName;
561
+ var _ref13 = _slicedToArray(_ref12, 2), groupKey = _ref13[0], group = _ref13[1];
562
+ var values2 = [];
563
+ var _iterator5 = _createForOfIteratorHelper(group.rows), _step5;
564
+ try {
565
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) {
566
+ var _row = _step5.value;
567
+ var _iterator6 = _createForOfIteratorHelper(fields), _step6;
568
+ try {
569
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) {
570
+ var _ref15, _hints$titles$valuesA, _hints$titles$getVert, _hints$titles6;
571
+ var field = _step6.value;
572
+ values2.push({
573
+ label: (_ref15 = (_hints$titles$valuesA = hints.titles.valuesAxes[field]) !== null && _hints$titles$valuesA !== void 0 ? _hints$titles$valuesA : (_hints$titles$getVert = (_hints$titles6 = hints.titles).getVerticalAxesTitle) === null || _hints$titles$getVert === void 0 ? void 0 : _hints$titles$getVert.call(_hints$titles6, field)) !== null && _ref15 !== void 0 ? _ref15 : field,
574
+ value: getPropByPath(_row, field)
575
+ });
576
+ }
577
+ } catch (err) {
578
+ _iterator6.e(err);
579
+ } finally {
580
+ _iterator6.f();
581
+ }
582
+ }
583
+ } catch (err) {
584
+ _iterator5.e(err);
585
+ } finally {
586
+ _iterator5.f();
587
+ }
588
+ values2.sort(function(a, b) {
589
+ if (typeof a.value !== "number" || typeof b.value !== "number") return 0;
590
+ return b.value - a.value;
591
+ });
592
+ var averageValue = values2.reduce(function(sum, _ref14) {
593
+ var value = _ref14.value;
594
+ return sum + value;
595
+ }, 0) / values2.length;
596
+ return {
597
+ label: (_group$groupName = group.groupName) !== null && _group$groupName !== void 0 ? _group$groupName : groupKey,
598
+ values: values2,
599
+ averageValue: !Number.isNaN(averageValue) ? averageValue : void 0
600
+ };
601
+ });
602
+ groups.sort(function(a, b) {
603
+ if (typeof a.averageValue !== "number" || typeof b.averageValue !== "number") return 0;
604
+ return b.averageValue - a.averageValue;
605
+ });
606
+ entitiesCount = groups.length;
607
+ (_insights3 = insights).push.apply(_insights3, _toConsumableArray(groups.map(function(group) {
608
+ return {
609
+ type: "comparison",
610
+ label: group.label,
611
+ values: group.values,
612
+ priority: 1
613
+ };
614
+ })));
615
+ }
616
+ }
617
+ if (dataType === "values-set") {
618
+ var _fields2 = _toConsumableArray(hints.fields.values);
619
+ if (_fields2.length === 0) {
620
+ _fields2.push.apply(_fields2, _toConsumableArray(Object.keys(keysMap)));
621
+ }
622
+ var values = _fields2.map(function(field) {
623
+ var _ref16, _hints$titles$valuesA2, _hints$titles$getValu, _hints$titles7;
624
+ return {
625
+ label: (_ref16 = (_hints$titles$valuesA2 = hints.titles.valuesAxes[field]) !== null && _hints$titles$valuesA2 !== void 0 ? _hints$titles$valuesA2 : (_hints$titles$getValu = (_hints$titles7 = hints.titles).getValueAxesTitle) === null || _hints$titles$getValu === void 0 ? void 0 : _hints$titles$getValu.call(_hints$titles7, field)) !== null && _ref16 !== void 0 ? _ref16 : field,
626
+ value: getPropByPath(data, field)
627
+ };
628
+ });
629
+ entitiesCount = values.length;
630
+ values.sort(function(a, b) {
631
+ if (typeof a.value !== "number" || typeof b.value !== "number") return 0;
632
+ return b.value - a.value;
633
+ });
634
+ insights.push({
635
+ type: "comparison",
636
+ values,
637
+ priority: 1
638
+ });
639
+ }
640
+ if (dataType === "indexed-groups") {
641
+ var _insights4;
642
+ var _groups = _toConsumableArray(hints.groups).map(function(groupKey) {
643
+ var _getPropByPath;
644
+ var values2 = _toConsumableArray(hints.fields.values).filter(function(fieldPath) {
645
+ return String(fieldPath).startsWith("".concat(groupKey, "."));
646
+ }).map(function(fieldPath) {
647
+ return {
648
+ label: getPropByPath(hints.titles.valuesAxes, String(fieldPath).substring(String(groupKey).length + 1)),
649
+ value: getPropByPath(data, String(fieldPath))
650
+ };
651
+ });
652
+ values2.sort(function(a, b) {
653
+ if (typeof a.value !== "number" || typeof b.value !== "number") return 0;
654
+ return b.value - a.value;
655
+ });
656
+ var averageValue = values2.reduce(function(sum, _ref17) {
657
+ var value = _ref17.value;
658
+ return sum + value;
659
+ }, 0) / values2.length;
660
+ return {
661
+ label: (_getPropByPath = getPropByPath(hints.titles.valuesAxes, String(groupKey))) !== null && _getPropByPath !== void 0 ? _getPropByPath : groupKey,
662
+ values: values2,
663
+ averageValue: !Number.isNaN(averageValue) ? averageValue : void 0
664
+ };
665
+ });
666
+ _groups.sort(function(a, b) {
667
+ if (typeof a.averageValue !== "number" || typeof b.averageValue !== "number") return 0;
668
+ return b.averageValue - a.averageValue;
669
+ });
670
+ entitiesCount = _groups.length;
671
+ (_insights4 = insights).push.apply(_insights4, _toConsumableArray(_groups.map(function(group) {
672
+ return {
673
+ type: "comparison",
674
+ label: group.label,
675
+ values: group.values,
676
+ priority: 1
677
+ };
678
+ })));
679
+ }
680
+ var hasHighPriorityInsights = insights.some(function(insight) {
681
+ return insight.priority > 0;
682
+ });
683
+ if (hasHighPriorityInsights) {
684
+ insights = insights.filter(function(insight) {
685
+ return insight.priority > 0;
686
+ });
687
+ } else {
688
+ insights = insights.slice(0, 1);
689
+ }
690
+ return {
691
+ insights,
692
+ dataType,
693
+ dataRange,
694
+ dataTitle,
695
+ entitiesCount
696
+ };
697
+ };
698
+ export {
699
+ extractDataInsights
700
+ };