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