@semcore/d3-chart 2.2.6 → 2.3.0-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 (217) hide show
  1. package/CHANGELOG.md +3 -9
  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/ResponsiveContainer.js +0 -1
  30. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  31. package/lib/cjs/ScatterPlot.js +17 -8
  32. package/lib/cjs/ScatterPlot.js.map +1 -1
  33. package/lib/cjs/StackBar.js +12 -8
  34. package/lib/cjs/StackBar.js.map +1 -1
  35. package/lib/cjs/StackedArea.js +8 -7
  36. package/lib/cjs/StackedArea.js.map +1 -1
  37. package/lib/cjs/Tooltip.js +8 -8
  38. package/lib/cjs/Venn.js +25 -9
  39. package/lib/cjs/Venn.js.map +1 -1
  40. package/lib/cjs/a11y/PlotA11yModule.js +185 -0
  41. package/lib/cjs/a11y/PlotA11yModule.js.map +1 -0
  42. package/lib/cjs/a11y/PlotA11yView.js +285 -0
  43. package/lib/cjs/a11y/PlotA11yView.js.map +1 -0
  44. package/lib/cjs/a11y/bezier.js +44 -0
  45. package/lib/cjs/a11y/bezier.js.map +1 -0
  46. package/lib/cjs/a11y/datasets/charts-a11y.js +591 -0
  47. package/lib/cjs/a11y/datasets/charts-a11y.js.map +1 -0
  48. package/lib/cjs/a11y/datasets/gold.json +7961 -0
  49. package/lib/cjs/a11y/datasets/imdb.json +10002 -0
  50. package/lib/cjs/a11y/datasets/readme.md +5 -0
  51. package/lib/cjs/a11y/datasets/stores.json +6274 -0
  52. package/lib/cjs/a11y/datasets/titanic.json +5436 -0
  53. package/lib/cjs/a11y/focus.js +57 -0
  54. package/lib/cjs/a11y/focus.js.map +1 -0
  55. package/lib/cjs/a11y/hints.js +141 -0
  56. package/lib/cjs/a11y/hints.js.map +1 -0
  57. package/lib/cjs/a11y/insights.js +785 -0
  58. package/lib/cjs/a11y/insights.js.map +1 -0
  59. package/lib/cjs/a11y/intl.js +31 -0
  60. package/lib/cjs/a11y/intl.js.map +1 -0
  61. package/lib/cjs/a11y/locale.js +48 -0
  62. package/lib/cjs/a11y/locale.js.map +1 -0
  63. package/lib/cjs/a11y/serialize.js +439 -0
  64. package/lib/cjs/a11y/serialize.js.map +1 -0
  65. package/lib/cjs/a11y/summarize.js +21 -0
  66. package/lib/cjs/a11y/summarize.js.map +1 -0
  67. package/lib/cjs/a11y/translations/module/de.json +5 -0
  68. package/lib/cjs/a11y/translations/module/en.json +5 -0
  69. package/lib/cjs/a11y/translations/module/es.json +5 -0
  70. package/lib/cjs/a11y/translations/module/fr.json +5 -0
  71. package/lib/cjs/a11y/translations/module/it.json +5 -0
  72. package/lib/cjs/a11y/translations/module/ja.json +5 -0
  73. package/lib/cjs/a11y/translations/module/ko.json +5 -0
  74. package/lib/cjs/a11y/translations/module/pt.json +5 -0
  75. package/lib/cjs/a11y/translations/module/tr.json +5 -0
  76. package/lib/cjs/a11y/translations/module/translations.js +46 -0
  77. package/lib/cjs/a11y/translations/module/translations.js.map +1 -0
  78. package/lib/cjs/a11y/translations/module/vi.json +5 -0
  79. package/lib/cjs/a11y/translations/module/zh.json +5 -0
  80. package/lib/cjs/a11y/translations/view/de.json +42 -0
  81. package/lib/cjs/a11y/translations/view/en.csv +41 -0
  82. package/lib/cjs/a11y/translations/view/en.json +42 -0
  83. package/lib/cjs/a11y/translations/view/es.json +42 -0
  84. package/lib/cjs/a11y/translations/view/fr.json +42 -0
  85. package/lib/cjs/a11y/translations/view/it.json +42 -0
  86. package/lib/cjs/a11y/translations/view/ja.json +42 -0
  87. package/lib/cjs/a11y/translations/view/ko.json +42 -0
  88. package/lib/cjs/a11y/translations/view/pt.json +42 -0
  89. package/lib/cjs/a11y/translations/view/tr.json +42 -0
  90. package/lib/cjs/a11y/translations/view/translations.js +46 -0
  91. package/lib/cjs/a11y/translations/view/translations.js.map +1 -0
  92. package/lib/cjs/a11y/translations/view/vi.json +42 -0
  93. package/lib/cjs/a11y/translations/view/zh.json +42 -0
  94. package/lib/cjs/createElement.js +3 -1
  95. package/lib/cjs/createElement.js.map +1 -1
  96. package/lib/cjs/style/plot.shadow.css +10 -0
  97. package/lib/cjs/style/plotA11yModule.shadow.css +13 -0
  98. package/lib/cjs/style/plotA11yView.shadow.css +39 -0
  99. package/lib/cjs/types/Plot.d.ts +75 -0
  100. package/lib/cjs/utils.js +9 -1
  101. package/lib/cjs/utils.js.map +1 -1
  102. package/lib/es6/Area.js +16 -9
  103. package/lib/es6/Area.js.map +1 -1
  104. package/lib/es6/Axis.js +56 -17
  105. package/lib/es6/Axis.js.map +1 -1
  106. package/lib/es6/Bar.js +20 -9
  107. package/lib/es6/Bar.js.map +1 -1
  108. package/lib/es6/Bubble.js +20 -11
  109. package/lib/es6/Bubble.js.map +1 -1
  110. package/lib/es6/ClipPath.js +1 -0
  111. package/lib/es6/ClipPath.js.map +1 -1
  112. package/lib/es6/Donut.js +22 -12
  113. package/lib/es6/Donut.js.map +1 -1
  114. package/lib/es6/Dots.js +10 -9
  115. package/lib/es6/Dots.js.map +1 -1
  116. package/lib/es6/GroupBar.js +12 -8
  117. package/lib/es6/GroupBar.js.map +1 -1
  118. package/lib/es6/HorizontalBar.js +20 -9
  119. package/lib/es6/HorizontalBar.js.map +1 -1
  120. package/lib/es6/Hover.js +8 -4
  121. package/lib/es6/Hover.js.map +1 -1
  122. package/lib/es6/Line.js +15 -9
  123. package/lib/es6/Line.js.map +1 -1
  124. package/lib/es6/Plot.js +48 -9
  125. package/lib/es6/Plot.js.map +1 -1
  126. package/lib/es6/RadialTree.js +25 -13
  127. package/lib/es6/RadialTree.js.map +1 -1
  128. package/lib/es6/ReferenceLine.js +10 -10
  129. package/lib/es6/ResponsiveContainer.js +0 -1
  130. package/lib/es6/ResponsiveContainer.js.map +1 -1
  131. package/lib/es6/ScatterPlot.js +17 -8
  132. package/lib/es6/ScatterPlot.js.map +1 -1
  133. package/lib/es6/StackBar.js +12 -8
  134. package/lib/es6/StackBar.js.map +1 -1
  135. package/lib/es6/StackedArea.js +8 -7
  136. package/lib/es6/StackedArea.js.map +1 -1
  137. package/lib/es6/Tooltip.js +8 -8
  138. package/lib/es6/Venn.js +25 -9
  139. package/lib/es6/Venn.js.map +1 -1
  140. package/lib/es6/a11y/PlotA11yModule.js +160 -0
  141. package/lib/es6/a11y/PlotA11yModule.js.map +1 -0
  142. package/lib/es6/a11y/PlotA11yView.js +254 -0
  143. package/lib/es6/a11y/PlotA11yView.js.map +1 -0
  144. package/lib/es6/a11y/bezier.js +35 -0
  145. package/lib/es6/a11y/bezier.js.map +1 -0
  146. package/lib/es6/a11y/datasets/charts-a11y.js +590 -0
  147. package/lib/es6/a11y/datasets/charts-a11y.js.map +1 -0
  148. package/lib/es6/a11y/datasets/gold.json +7961 -0
  149. package/lib/es6/a11y/datasets/imdb.json +10002 -0
  150. package/lib/es6/a11y/datasets/readme.md +5 -0
  151. package/lib/es6/a11y/datasets/stores.json +6274 -0
  152. package/lib/es6/a11y/datasets/titanic.json +5436 -0
  153. package/lib/es6/a11y/focus.js +48 -0
  154. package/lib/es6/a11y/focus.js.map +1 -0
  155. package/lib/es6/a11y/hints.js +123 -0
  156. package/lib/es6/a11y/hints.js.map +1 -0
  157. package/lib/es6/a11y/insights.js +779 -0
  158. package/lib/es6/a11y/insights.js.map +1 -0
  159. package/lib/es6/a11y/intl.js +18 -0
  160. package/lib/es6/a11y/intl.js.map +1 -0
  161. package/lib/es6/a11y/locale.js +36 -0
  162. package/lib/es6/a11y/locale.js.map +1 -0
  163. package/lib/es6/a11y/serialize.js +423 -0
  164. package/lib/es6/a11y/serialize.js.map +1 -0
  165. package/lib/es6/a11y/summarize.js +10 -0
  166. package/lib/es6/a11y/summarize.js.map +1 -0
  167. package/lib/es6/a11y/translations/module/de.json +5 -0
  168. package/lib/es6/a11y/translations/module/en.json +5 -0
  169. package/lib/es6/a11y/translations/module/es.json +5 -0
  170. package/lib/es6/a11y/translations/module/fr.json +5 -0
  171. package/lib/es6/a11y/translations/module/it.json +5 -0
  172. package/lib/es6/a11y/translations/module/ja.json +5 -0
  173. package/lib/es6/a11y/translations/module/ko.json +5 -0
  174. package/lib/es6/a11y/translations/module/pt.json +5 -0
  175. package/lib/es6/a11y/translations/module/tr.json +5 -0
  176. package/lib/es6/a11y/translations/module/translations.js +25 -0
  177. package/lib/es6/a11y/translations/module/translations.js.map +1 -0
  178. package/lib/es6/a11y/translations/module/vi.json +5 -0
  179. package/lib/es6/a11y/translations/module/zh.json +5 -0
  180. package/lib/es6/a11y/translations/view/de.json +42 -0
  181. package/lib/es6/a11y/translations/view/en.csv +41 -0
  182. package/lib/es6/a11y/translations/view/en.json +42 -0
  183. package/lib/es6/a11y/translations/view/es.json +42 -0
  184. package/lib/es6/a11y/translations/view/fr.json +42 -0
  185. package/lib/es6/a11y/translations/view/it.json +42 -0
  186. package/lib/es6/a11y/translations/view/ja.json +42 -0
  187. package/lib/es6/a11y/translations/view/ko.json +42 -0
  188. package/lib/es6/a11y/translations/view/pt.json +42 -0
  189. package/lib/es6/a11y/translations/view/tr.json +42 -0
  190. package/lib/es6/a11y/translations/view/translations.js +25 -0
  191. package/lib/es6/a11y/translations/view/translations.js.map +1 -0
  192. package/lib/es6/a11y/translations/view/vi.json +42 -0
  193. package/lib/es6/a11y/translations/view/zh.json +42 -0
  194. package/lib/es6/createElement.js +3 -1
  195. package/lib/es6/createElement.js.map +1 -1
  196. package/lib/es6/style/plot.shadow.css +10 -0
  197. package/lib/es6/style/plotA11yModule.shadow.css +13 -0
  198. package/lib/es6/style/plotA11yView.shadow.css +39 -0
  199. package/lib/es6/types/Plot.d.ts +75 -0
  200. package/lib/es6/utils.js +5 -0
  201. package/lib/es6/utils.js.map +1 -1
  202. package/lib/types/Plot.d.ts +75 -0
  203. package/lib/types/a11y/PlotA11yModule.d.ts +12 -0
  204. package/lib/types/a11y/PlotA11yView.d.ts +3 -0
  205. package/lib/types/a11y/bezier.d.ts +8 -0
  206. package/lib/types/a11y/datasets/charts-a11y.d.ts +0 -0
  207. package/lib/types/a11y/focus.d.ts +5 -0
  208. package/lib/types/a11y/hints.d.ts +99 -0
  209. package/lib/types/a11y/insights.d.ts +54 -0
  210. package/lib/types/a11y/intl.d.ts +8 -0
  211. package/lib/types/a11y/locale.d.ts +3 -0
  212. package/lib/types/a11y/serialize.d.ts +16 -0
  213. package/lib/types/a11y/summarize.d.ts +2 -0
  214. package/lib/types/a11y/translations/module/translations.d.ts +5 -0
  215. package/lib/types/a11y/translations/view/translations.d.ts +5 -0
  216. package/lib/types/utils.d.ts +1 -0
  217. package/package.json +3 -2
@@ -0,0 +1,254 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ import { sstyled as _sstyled } from "@semcore/core";
5
+ import { assignProps as _assignProps } from "@semcore/core";
6
+
7
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
+
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
+
11
+ 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; } } }; }
12
+
13
+ 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); }
14
+
15
+ 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; }
16
+
17
+ import React from 'react';
18
+ import { heavyFindNextFocusableElement } from './focus';
19
+ import { makeDataSummarizationConfig } from './hints';
20
+ import { formatValue } from './serialize';
21
+ import { getIntl } from './intl';
22
+ import { summarize } from './summarize';
23
+ import { Root, sstyled } from '@semcore/core';
24
+
25
+ /*__reshadow-styles__:"../style/plotA11yView.shadow.css"*/
26
+ var styles = (
27
+ /*__reshadow_css_start__*/
28
+ _sstyled.insert(
29
+ /*__inner_css_start__*/
30
+ ".___SPlotA11yView_1e44s_gg_{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;opacity:0;background-color:#fff;color:#000;border:3px solid #000;font-size:10px;padding:2px;width:200px;height:200px;max-width:80%;max-height:80%;overflow:auto}.___SPlotA11yView_1e44s_gg_:focus,.___SPlotA11yView_1e44s_gg_.__focus-within_1e44s_gg_{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:100;position:relative;display:block}.___SPlotA11yView_1e44s_gg_:focus,.___SPlotA11yView_1e44s_gg_:focus-within{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;pointer-events:all;opacity:1;z-index:100;position:relative;display:block}.___SPlotA11yView_1e44s_gg_ a{cursor:pointer;text-decoration:underline;margin-bottom:8px;display:block}.___SPlotA11yView_1e44s_gg_ table,.___SPlotA11yView_1e44s_gg_ td,.___SPlotA11yView_1e44s_gg_ th{border:1px solid #000}"
31
+ /*__inner_css_end__*/
32
+ , "1e44s_gg_")
33
+ /*__reshadow_css_end__*/
34
+ , {
35
+ "__SPlotA11yView": "___SPlotA11yView_1e44s_gg_",
36
+ "_focus-within": "__focus-within_1e44s_gg_"
37
+ });
38
+ export var PlotA11yView = function PlotA11yView(_ref3) {
39
+ var _ref = arguments[0],
40
+ _ref2;
41
+
42
+ var id = _ref3.id,
43
+ providedData = _ref3.data,
44
+ hints = _ref3.hints,
45
+ plotLabel = _ref3.plotLabel,
46
+ plotRef = _ref3.plotRef,
47
+ providedConfig = _ref3.config,
48
+ locale = _ref3.locale;
49
+ var SPlotA11yView = "div";
50
+ var intl = React.useMemo(function () {
51
+ return getIntl(locale);
52
+ }, [locale]);
53
+ var config = React.useMemo(function () {
54
+ return makeDataSummarizationConfig(providedConfig);
55
+ }, [providedConfig]);
56
+ var data = React.useMemo(function () {
57
+ return Array.isArray(providedData) ? providedData : [providedData];
58
+ }, [providedData]);
59
+ var keys = React.useMemo(function () {
60
+ var _fromHints, _fromHints2, _fromHints3, _fromHints4;
61
+
62
+ var fromHints = [];
63
+
64
+ (_fromHints = fromHints).push.apply(_fromHints, _toConsumableArray(hints.fields.verticalAxes));
65
+
66
+ (_fromHints2 = fromHints).push.apply(_fromHints2, _toConsumableArray(hints.fields.horizontalAxes));
67
+
68
+ (_fromHints3 = fromHints).push.apply(_fromHints3, _toConsumableArray(hints.fields.valueAxes));
69
+
70
+ (_fromHints4 = fromHints).push.apply(_fromHints4, _toConsumableArray(Object.keys(hints.fields.values)));
71
+
72
+ fromHints = _toConsumableArray(new Set(fromHints)).filter(function (key) {
73
+ return key in data[0];
74
+ });
75
+
76
+ if (fromHints.length === 0) {
77
+ data.forEach(function (row) {
78
+ var _fromHints5;
79
+
80
+ return (_fromHints5 = fromHints).push.apply(_fromHints5, _toConsumableArray(Object.keys(row)));
81
+ });
82
+ }
83
+
84
+ return _toConsumableArray(new Set(fromHints));
85
+ }, [data, hints]);
86
+ var duplicatedBaseKeys = React.useMemo(function () {
87
+ var baseKeys = keys.filter(function (key) {
88
+ return !hints.titles.valuesAxes[key];
89
+ }).map(function (key) {
90
+ if (hints.fields.verticalAxes.has(key) && hints.axesTitle.vertical) return [key, hints.axesTitle.vertical];
91
+ if (hints.fields.horizontalAxes.has(key) && hints.axesTitle.horizontal) return [key, hints.axesTitle.horizontal];
92
+ }).filter(function (entry) {
93
+ return entry !== undefined;
94
+ }).map(function (entry) {
95
+ return entry;
96
+ });
97
+ var doublicated = {};
98
+ var handled = {};
99
+
100
+ var _iterator = _createForOfIteratorHelper(baseKeys),
101
+ _step;
102
+
103
+ try {
104
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
105
+ var _step$value = _slicedToArray(_step.value, 2),
106
+ key = _step$value[0],
107
+ label = _step$value[1];
108
+
109
+ if (handled[label]) {
110
+ doublicated[key] = true;
111
+ doublicated[handled[label]] = true;
112
+ }
113
+
114
+ handled[label] = key;
115
+ }
116
+ } catch (err) {
117
+ _iterator.e(err);
118
+ } finally {
119
+ _iterator.f();
120
+ }
121
+
122
+ return doublicated;
123
+ }, [keys, hints]);
124
+ var renderTitle = React.useCallback(function (dataKey) {
125
+ if (hints.titles.valuesAxes[dataKey]) return hints.titles.valuesAxes[dataKey];
126
+
127
+ if (!duplicatedBaseKeys[dataKey]) {
128
+ if (hints.fields.verticalAxes.has(dataKey) && hints.axesTitle.vertical) return hints.axesTitle.vertical;
129
+ if (hints.fields.horizontalAxes.has(dataKey) && hints.axesTitle.horizontal) return hints.axesTitle.horizontal;
130
+ }
131
+
132
+ return dataKey;
133
+ }, [data, hints, duplicatedBaseKeys]);
134
+
135
+ var _React$useState = React.useState(null),
136
+ _React$useState2 = _slicedToArray(_React$useState, 2),
137
+ summary = _React$useState2[0],
138
+ setSummary = _React$useState2[1];
139
+
140
+ var _React$useState3 = React.useState(true),
141
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
142
+ generatingSummary = _React$useState4[0],
143
+ setGeneratingSummary = _React$useState4[1];
144
+
145
+ React.useEffect(function () {
146
+ if (config.disable) {
147
+ setSummary('');
148
+ setGeneratingSummary(false);
149
+ return;
150
+ }
151
+
152
+ if (config.override) {
153
+ setSummary(config.override);
154
+ setGeneratingSummary(false);
155
+ return;
156
+ }
157
+
158
+ setTimeout(function () {
159
+ setSummary(summarize(providedData, hints, config, locale));
160
+ setGeneratingSummary(false);
161
+ }, 0);
162
+ }, [providedData, hints, config, locale]);
163
+ var handleSkip = React.useCallback(function () {
164
+ var _heavyFindNextFocusab;
165
+
166
+ if (!plotRef.current) return;
167
+ (_heavyFindNextFocusab = heavyFindNextFocusableElement(plotRef.current)) === null || _heavyFindNextFocusab === void 0 ? void 0 : _heavyFindNextFocusab.focus();
168
+ }, []);
169
+ var handleSkipKeyboard = React.useCallback(function (event) {
170
+ if (event.code !== 'Enter') return;
171
+ handleSkip();
172
+ }, [handleSkip]);
173
+ var handleGoToTable = React.useCallback(function () {
174
+ var _dataTableRef$current;
175
+
176
+ (_dataTableRef$current = dataTableRef.current) === null || _dataTableRef$current === void 0 ? void 0 : _dataTableRef$current.focus();
177
+ }, []);
178
+ var handleGoToTableKeyboard = React.useCallback(function (event) {
179
+ if (event.code !== 'Enter') return;
180
+ handleGoToTable();
181
+ }, [handleGoToTable]);
182
+ var texts = React.useMemo(function () {
183
+ return {
184
+ label: intl.formatMessage({
185
+ id: 'view-label'
186
+ }, {
187
+ plotLabel: plotLabel !== null && plotLabel !== void 0 ? plotLabel : intl.formatMessage({
188
+ id: 'view-default-plot-label'
189
+ })
190
+ }),
191
+ close: intl.formatMessage({
192
+ id: 'view-close'
193
+ }),
194
+ skipPlot: intl.formatMessage({
195
+ id: 'view-skip-plot'
196
+ }),
197
+ goToTable: intl.formatMessage({
198
+ id: 'view-go-to-table'
199
+ }),
200
+ summary: intl.formatMessage({
201
+ id: 'view-data-summary'
202
+ }),
203
+ summaryPlaceholder: intl.formatMessage({
204
+ id: 'view-summary-placeholder'
205
+ }),
206
+ table: intl.formatMessage({
207
+ id: 'view-table'
208
+ })
209
+ };
210
+ }, [intl, plotLabel]);
211
+ var dataTableRef = React.useRef(null);
212
+ return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SPlotA11yView, _ref2.cn("SPlotA11yView", _objectSpread({}, _assignProps({
213
+ "tabIndex": 0,
214
+ "aria-label": texts.label
215
+ }, _ref))), /*#__PURE__*/React.createElement("a", _ref2.cn("a", {
216
+ "aria-hidden": true,
217
+ "onClick": handleSkip
218
+ }), texts.close), /*#__PURE__*/React.createElement("a", _ref2.cn("a", {
219
+ "role": "link",
220
+ "tabIndex": 0,
221
+ "onKeyDown": handleSkipKeyboard,
222
+ "onClick": handleSkip
223
+ }), texts.skipPlot), /*#__PURE__*/React.createElement("a", _ref2.cn("a", {
224
+ "role": "link",
225
+ "tabIndex": 0,
226
+ "onKeyDown": handleGoToTableKeyboard,
227
+ "onClick": handleGoToTable
228
+ }), texts.goToTable), /*#__PURE__*/React.createElement("strong", _ref2.cn("strong", {}), /*#__PURE__*/React.createElement("label", _ref2.cn("label", {
229
+ "htmlFor": "".concat(id, "-data-summary")
230
+ }), texts.summary)), /*#__PURE__*/React.createElement("div", _ref2.cn("div", {
231
+ "id": "".concat(id, "-data-summary"),
232
+ "aria-busy": generatingSummary,
233
+ "tabIndex": 0
234
+ }), generatingSummary ? texts.summaryPlaceholder : summary), /*#__PURE__*/React.createElement("strong", _ref2.cn("strong", {}), /*#__PURE__*/React.createElement("label", _ref2.cn("label", {
235
+ "htmlFor": "".concat(id, "-data-table")
236
+ }), texts.table)), /*#__PURE__*/React.createElement("table", _ref2.cn("table", {
237
+ "id": "".concat(id, "-data-table"),
238
+ "tabIndex": 0,
239
+ "ref": dataTableRef
240
+ }), /*#__PURE__*/React.createElement("thead", _ref2.cn("thead", {}), /*#__PURE__*/React.createElement("tr", _ref2.cn("tr", {}), keys.map(function (key, index) {
241
+ return /*#__PURE__*/React.createElement("th", {
242
+ key: "".concat(key, "-").concat(index)
243
+ }, renderTitle(key));
244
+ }))), /*#__PURE__*/React.createElement("tbody", _ref2.cn("tbody", {}), data.map(function (row, index) {
245
+ return /*#__PURE__*/React.createElement("tr", {
246
+ key: Object.values(row).join('-') + '-' + index
247
+ }, keys.map(function (key, index) {
248
+ return /*#__PURE__*/React.createElement("td", {
249
+ key: "".concat(key, "-").concat(index)
250
+ }, formatValue(intl, row[key]));
251
+ }));
252
+ }))));
253
+ };
254
+ //# sourceMappingURL=PlotA11yView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlotA11yView.js","names":["React","heavyFindNextFocusableElement","makeDataSummarizationConfig","formatValue","getIntl","summarize","Root","sstyled","PlotA11yView","id","providedData","data","hints","plotLabel","plotRef","providedConfig","config","locale","SPlotA11yView","intl","useMemo","Array","isArray","keys","fromHints","push","fields","verticalAxes","horizontalAxes","valueAxes","Object","values","Set","filter","key","length","forEach","row","duplicatedBaseKeys","baseKeys","titles","valuesAxes","map","has","axesTitle","vertical","horizontal","entry","undefined","doublicated","handled","label","renderTitle","useCallback","dataKey","useState","summary","setSummary","generatingSummary","setGeneratingSummary","useEffect","disable","override","setTimeout","handleSkip","current","focus","handleSkipKeyboard","event","code","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","useRef","styles","index","join"],"sources":["../../../src/a11y/PlotA11yView.tsx"],"sourcesContent":["import React from 'react';\nimport { heavyFindNextFocusableElement } from './focus';\nimport { makeDataSummarizationConfig } from './hints';\nimport type { A11yViewProps } from './PlotA11yModule';\nimport { formatValue } from './serialize';\nimport { getIntl } from './intl';\nimport { summarize } from './summarize';\nimport { Root, sstyled } from '@semcore/core';\nimport styles from '../style/plotA11yView.shadow.css';\n\nexport const PlotA11yView: React.FC<A11yViewProps> = ({\n id,\n data: providedData,\n hints,\n plotLabel,\n plotRef,\n config: providedConfig,\n locale,\n}) => {\n const SPlotA11yView = Root;\n const intl = React.useMemo(() => getIntl(locale), [locale]);\n const config = React.useMemo(() => makeDataSummarizationConfig(providedConfig), [providedConfig]);\n const data = React.useMemo(\n () => (Array.isArray(providedData) ? providedData : [providedData]),\n [providedData],\n );\n const keys = React.useMemo(() => {\n let fromHints: (string | number)[] = [];\n fromHints.push(...hints.fields.verticalAxes);\n fromHints.push(...hints.fields.horizontalAxes);\n fromHints.push(...hints.fields.valueAxes);\n fromHints.push(...Object.keys(hints.fields.values));\n\n fromHints = [...new Set(fromHints)].filter((key) => key in data[0]);\n\n if (fromHints.length === 0) {\n data.forEach((row) => fromHints.push(...Object.keys(row)));\n }\n\n return [...new Set(fromHints)];\n }, [data, hints]);\n const duplicatedBaseKeys = React.useMemo(() => {\n const baseKeys = keys\n .filter((key) => !hints.titles.valuesAxes[key])\n .map((key) => {\n if (hints.fields.verticalAxes.has(key) && hints.axesTitle.vertical)\n return [key, hints.axesTitle.vertical];\n if (hints.fields.horizontalAxes.has(key) && hints.axesTitle.horizontal)\n return [key, hints.axesTitle.horizontal];\n })\n .filter((entry) => entry !== undefined)\n .map((entry) => entry!);\n const doublicated: Record<string, true> = {};\n const handled: Record<string, string | number> = {};\n for (const [key, label] of baseKeys) {\n if (handled[label]) {\n doublicated[key] = true;\n doublicated[handled[label]] = true;\n }\n handled[label] = key;\n }\n return doublicated;\n }, [keys, hints]);\n const renderTitle = React.useCallback(\n (dataKey: string | number) => {\n if (hints.titles.valuesAxes[dataKey]) return hints.titles.valuesAxes[dataKey];\n if (!duplicatedBaseKeys[dataKey]) {\n if (hints.fields.verticalAxes.has(dataKey) && hints.axesTitle.vertical)\n return hints.axesTitle.vertical;\n if (hints.fields.horizontalAxes.has(dataKey) && hints.axesTitle.horizontal)\n return hints.axesTitle.horizontal;\n }\n\n return dataKey;\n },\n [data, hints, duplicatedBaseKeys],\n );\n\n const [summary, setSummary] = React.useState<string | null>(null);\n const [generatingSummary, setGeneratingSummary] = React.useState(true);\n\n React.useEffect(() => {\n if (config.disable) {\n setSummary('');\n setGeneratingSummary(false);\n return;\n }\n if (config.override) {\n setSummary(config.override);\n setGeneratingSummary(false);\n return;\n }\n setTimeout(() => {\n setSummary(summarize(providedData, hints, config, locale));\n setGeneratingSummary(false);\n }, 0);\n }, [providedData, hints, config, locale]);\n\n const handleSkip = React.useCallback(() => {\n if (!plotRef.current) return;\n\n heavyFindNextFocusableElement(plotRef.current)?.focus();\n }, []);\n const handleSkipKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.code !== 'Enter') return;\n\n handleSkip();\n },\n [handleSkip],\n );\n const handleGoToTable = React.useCallback(() => {\n dataTableRef.current?.focus();\n }, []);\n const handleGoToTableKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.code !== 'Enter') return;\n\n handleGoToTable();\n },\n [handleGoToTable],\n );\n\n const texts = React.useMemo(\n () => ({\n label: intl.formatMessage(\n { id: 'view-label' },\n { plotLabel: plotLabel ?? intl.formatMessage({ id: 'view-default-plot-label' }) },\n ),\n close: intl.formatMessage({ id: 'view-close' }),\n skipPlot: intl.formatMessage({ id: 'view-skip-plot' }),\n goToTable: intl.formatMessage({ id: 'view-go-to-table' }),\n summary: intl.formatMessage({ id: 'view-data-summary' }),\n summaryPlaceholder: intl.formatMessage({ id: 'view-summary-placeholder' }),\n table: intl.formatMessage({ id: 'view-table' }),\n }),\n [intl, plotLabel],\n );\n\n const dataTableRef = React.useRef<HTMLTableElement>(null);\n\n return sstyled(styles)(\n <SPlotA11yView render=\"div\" tabIndex={0} aria-label={texts.label}>\n <a aria-hidden onClick={handleSkip}>\n {texts.close}\n </a>\n <a role=\"link\" tabIndex={0} onKeyDown={handleSkipKeyboard} onClick={handleSkip}>\n {texts.skipPlot}\n </a>\n <a role=\"link\" tabIndex={0} onKeyDown={handleGoToTableKeyboard} onClick={handleGoToTable}>\n {texts.goToTable}\n </a>\n <strong>\n <label htmlFor={`${id}-data-summary`}>{texts.summary}</label>\n </strong>\n <div id={`${id}-data-summary`} aria-busy={generatingSummary} tabIndex={0}>\n {generatingSummary ? texts.summaryPlaceholder : summary}\n </div>\n <strong>\n <label htmlFor={`${id}-data-table`}>{texts.table}</label>\n </strong>\n <table id={`${id}-data-table`} tabIndex={0} ref={dataTableRef}>\n <thead>\n <tr>\n {keys.map((key, index) => (\n <th key={`${key}-${index}`}>{renderTitle(key)}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, index) => (\n <tr key={Object.values(row).join('-') + '-' + index}>\n {keys.map((key, index) => (\n <td key={`${key}-${index}`}>{formatValue(intl, row[key])}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </SPlotA11yView>,\n ) as React.ReactElement;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,6BAAT,QAA8C,SAA9C;AACA,SAASC,2BAAT,QAA4C,SAA5C;AAEA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,OAAT,QAAwB,QAAxB;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,IAAT,EAAeC,OAAf,QAA8B,eAA9B;;;;;;;;;;;;;;;AAGA,OAAO,IAAMC,YAAqC,GAAG,SAAxCA,YAAwC,QAQ/C;EAAA;EAAA;;EAAA,IAPJC,EAOI,SAPJA,EAOI;EAAA,IANEC,YAMF,SANJC,IAMI;EAAA,IALJC,KAKI,SALJA,KAKI;EAAA,IAJJC,SAII,SAJJA,SAII;EAAA,IAHJC,OAGI,SAHJA,OAGI;EAAA,IAFIC,cAEJ,SAFJC,MAEI;EAAA,IADJC,MACI,SADJA,MACI;EACJ,IAAMC,aAAa,GA2HK,KA3HxB;EACA,IAAMC,IAAI,GAAGnB,KAAK,CAACoB,OAAN,CAAc;IAAA,OAAMhB,OAAO,CAACa,MAAD,CAAb;EAAA,CAAd,EAAqC,CAACA,MAAD,CAArC,CAAb;EACA,IAAMD,MAAM,GAAGhB,KAAK,CAACoB,OAAN,CAAc;IAAA,OAAMlB,2BAA2B,CAACa,cAAD,CAAjC;EAAA,CAAd,EAAiE,CAACA,cAAD,CAAjE,CAAf;EACA,IAAMJ,IAAI,GAAGX,KAAK,CAACoB,OAAN,CACX;IAAA,OAAOC,KAAK,CAACC,OAAN,CAAcZ,YAAd,IAA8BA,YAA9B,GAA6C,CAACA,YAAD,CAApD;EAAA,CADW,EAEX,CAACA,YAAD,CAFW,CAAb;EAIA,IAAMa,IAAI,GAAGvB,KAAK,CAACoB,OAAN,CAAc,YAAM;IAAA;;IAC/B,IAAII,SAA8B,GAAG,EAArC;;IACA,cAAAA,SAAS,EAACC,IAAV,sCAAkBb,KAAK,CAACc,MAAN,CAAaC,YAA/B;;IACA,eAAAH,SAAS,EAACC,IAAV,uCAAkBb,KAAK,CAACc,MAAN,CAAaE,cAA/B;;IACA,eAAAJ,SAAS,EAACC,IAAV,uCAAkBb,KAAK,CAACc,MAAN,CAAaG,SAA/B;;IACA,eAAAL,SAAS,EAACC,IAAV,uCAAkBK,MAAM,CAACP,IAAP,CAAYX,KAAK,CAACc,MAAN,CAAaK,MAAzB,CAAlB;;IAEAP,SAAS,GAAG,mBAAI,IAAIQ,GAAJ,CAAQR,SAAR,CAAJ,EAAwBS,MAAxB,CAA+B,UAACC,GAAD;MAAA,OAASA,GAAG,IAAIvB,IAAI,CAAC,CAAD,CAApB;IAAA,CAA/B,CAAZ;;IAEA,IAAIa,SAAS,CAACW,MAAV,KAAqB,CAAzB,EAA4B;MAC1BxB,IAAI,CAACyB,OAAL,CAAa,UAACC,GAAD;QAAA;;QAAA,OAAS,eAAAb,SAAS,EAACC,IAAV,uCAAkBK,MAAM,CAACP,IAAP,CAAYc,GAAZ,CAAlB,EAAT;MAAA,CAAb;IACD;;IAED,0BAAW,IAAIL,GAAJ,CAAQR,SAAR,CAAX;EACD,CAdY,EAcV,CAACb,IAAD,EAAOC,KAAP,CAdU,CAAb;EAeA,IAAM0B,kBAAkB,GAAGtC,KAAK,CAACoB,OAAN,CAAc,YAAM;IAC7C,IAAMmB,QAAQ,GAAGhB,IAAI,CAClBU,MADc,CACP,UAACC,GAAD;MAAA,OAAS,CAACtB,KAAK,CAAC4B,MAAN,CAAaC,UAAb,CAAwBP,GAAxB,CAAV;IAAA,CADO,EAEdQ,GAFc,CAEV,UAACR,GAAD,EAAS;MACZ,IAAItB,KAAK,CAACc,MAAN,CAAaC,YAAb,CAA0BgB,GAA1B,CAA8BT,GAA9B,KAAsCtB,KAAK,CAACgC,SAAN,CAAgBC,QAA1D,EACE,OAAO,CAACX,GAAD,EAAMtB,KAAK,CAACgC,SAAN,CAAgBC,QAAtB,CAAP;MACF,IAAIjC,KAAK,CAACc,MAAN,CAAaE,cAAb,CAA4Be,GAA5B,CAAgCT,GAAhC,KAAwCtB,KAAK,CAACgC,SAAN,CAAgBE,UAA5D,EACE,OAAO,CAACZ,GAAD,EAAMtB,KAAK,CAACgC,SAAN,CAAgBE,UAAtB,CAAP;IACH,CAPc,EAQdb,MARc,CAQP,UAACc,KAAD;MAAA,OAAWA,KAAK,KAAKC,SAArB;IAAA,CARO,EASdN,GATc,CASV,UAACK,KAAD;MAAA,OAAWA,KAAX;IAAA,CATU,CAAjB;IAUA,IAAME,WAAiC,GAAG,EAA1C;IACA,IAAMC,OAAwC,GAAG,EAAjD;;IAZ6C,2CAalBX,QAbkB;IAAA;;IAAA;MAa7C,oDAAqC;QAAA;QAAA,IAAzBL,GAAyB;QAAA,IAApBiB,KAAoB;;QACnC,IAAID,OAAO,CAACC,KAAD,CAAX,EAAoB;UAClBF,WAAW,CAACf,GAAD,CAAX,GAAmB,IAAnB;UACAe,WAAW,CAACC,OAAO,CAACC,KAAD,CAAR,CAAX,GAA8B,IAA9B;QACD;;QACDD,OAAO,CAACC,KAAD,CAAP,GAAiBjB,GAAjB;MACD;IAnB4C;MAAA;IAAA;MAAA;IAAA;;IAoB7C,OAAOe,WAAP;EACD,CArB0B,EAqBxB,CAAC1B,IAAD,EAAOX,KAAP,CArBwB,CAA3B;EAsBA,IAAMwC,WAAW,GAAGpD,KAAK,CAACqD,WAAN,CAClB,UAACC,OAAD,EAA8B;IAC5B,IAAI1C,KAAK,CAAC4B,MAAN,CAAaC,UAAb,CAAwBa,OAAxB,CAAJ,EAAsC,OAAO1C,KAAK,CAAC4B,MAAN,CAAaC,UAAb,CAAwBa,OAAxB,CAAP;;IACtC,IAAI,CAAChB,kBAAkB,CAACgB,OAAD,CAAvB,EAAkC;MAChC,IAAI1C,KAAK,CAACc,MAAN,CAAaC,YAAb,CAA0BgB,GAA1B,CAA8BW,OAA9B,KAA0C1C,KAAK,CAACgC,SAAN,CAAgBC,QAA9D,EACE,OAAOjC,KAAK,CAACgC,SAAN,CAAgBC,QAAvB;MACF,IAAIjC,KAAK,CAACc,MAAN,CAAaE,cAAb,CAA4Be,GAA5B,CAAgCW,OAAhC,KAA4C1C,KAAK,CAACgC,SAAN,CAAgBE,UAAhE,EACE,OAAOlC,KAAK,CAACgC,SAAN,CAAgBE,UAAvB;IACH;;IAED,OAAOQ,OAAP;EACD,CAXiB,EAYlB,CAAC3C,IAAD,EAAOC,KAAP,EAAc0B,kBAAd,CAZkB,CAApB;;EAeA,sBAA8BtC,KAAK,CAACuD,QAAN,CAA8B,IAA9B,CAA9B;EAAA;EAAA,IAAOC,OAAP;EAAA,IAAgBC,UAAhB;;EACA,uBAAkDzD,KAAK,CAACuD,QAAN,CAAe,IAAf,CAAlD;EAAA;EAAA,IAAOG,iBAAP;EAAA,IAA0BC,oBAA1B;;EAEA3D,KAAK,CAAC4D,SAAN,CAAgB,YAAM;IACpB,IAAI5C,MAAM,CAAC6C,OAAX,EAAoB;MAClBJ,UAAU,CAAC,EAAD,CAAV;MACAE,oBAAoB,CAAC,KAAD,CAApB;MACA;IACD;;IACD,IAAI3C,MAAM,CAAC8C,QAAX,EAAqB;MACnBL,UAAU,CAACzC,MAAM,CAAC8C,QAAR,CAAV;MACAH,oBAAoB,CAAC,KAAD,CAApB;MACA;IACD;;IACDI,UAAU,CAAC,YAAM;MACfN,UAAU,CAACpD,SAAS,CAACK,YAAD,EAAeE,KAAf,EAAsBI,MAAtB,EAA8BC,MAA9B,CAAV,CAAV;MACA0C,oBAAoB,CAAC,KAAD,CAApB;IACD,CAHS,EAGP,CAHO,CAAV;EAID,CAfD,EAeG,CAACjD,YAAD,EAAeE,KAAf,EAAsBI,MAAtB,EAA8BC,MAA9B,CAfH;EAiBA,IAAM+C,UAAU,GAAGhE,KAAK,CAACqD,WAAN,CAAkB,YAAM;IAAA;;IACzC,IAAI,CAACvC,OAAO,CAACmD,OAAb,EAAsB;IAEtB,yBAAAhE,6BAA6B,CAACa,OAAO,CAACmD,OAAT,CAA7B,gFAAgDC,KAAhD;EACD,CAJkB,EAIhB,EAJgB,CAAnB;EAKA,IAAMC,kBAAkB,GAAGnE,KAAK,CAACqD,WAAN,CACzB,UAACe,KAAD,EAAgC;IAC9B,IAAIA,KAAK,CAACC,IAAN,KAAe,OAAnB,EAA4B;IAE5BL,UAAU;EACX,CALwB,EAMzB,CAACA,UAAD,CANyB,CAA3B;EAQA,IAAMM,eAAe,GAAGtE,KAAK,CAACqD,WAAN,CAAkB,YAAM;IAAA;;IAC9C,yBAAAkB,YAAY,CAACN,OAAb,gFAAsBC,KAAtB;EACD,CAFuB,EAErB,EAFqB,CAAxB;EAGA,IAAMM,uBAAuB,GAAGxE,KAAK,CAACqD,WAAN,CAC9B,UAACe,KAAD,EAAgC;IAC9B,IAAIA,KAAK,CAACC,IAAN,KAAe,OAAnB,EAA4B;IAE5BC,eAAe;EAChB,CAL6B,EAM9B,CAACA,eAAD,CAN8B,CAAhC;EASA,IAAMG,KAAK,GAAGzE,KAAK,CAACoB,OAAN,CACZ;IAAA,OAAO;MACL+B,KAAK,EAAEhC,IAAI,CAACuD,aAAL,CACL;QAAEjE,EAAE,EAAE;MAAN,CADK,EAEL;QAAEI,SAAS,EAAEA,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAeM,IAAI,CAACuD,aAAL,CAAmB;UAAEjE,EAAE,EAAE;QAAN,CAAnB;MAA1B,CAFK,CADF;MAKLkE,KAAK,EAAExD,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB,CALF;MAMLmE,QAAQ,EAAEzD,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB,CANL;MAOLoE,SAAS,EAAE1D,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB,CAPN;MAQL+C,OAAO,EAAErC,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB,CARJ;MASLqE,kBAAkB,EAAE3D,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB,CATf;MAULsE,KAAK,EAAE5D,IAAI,CAACuD,aAAL,CAAmB;QAAEjE,EAAE,EAAE;MAAN,CAAnB;IAVF,CAAP;EAAA,CADY,EAaZ,CAACU,IAAD,EAAON,SAAP,CAbY,CAAd;EAgBA,IAAM0D,YAAY,GAAGvE,KAAK,CAACgF,MAAN,CAA+B,IAA/B,CAArB;EAEA,eAAOzE,OAAO,CAAC0E,MAAD,CAAd,eACE,oBAAC,aAAD;IAAA,YAAsC,CAAtC;IAAA,cAAqDR,KAAK,CAACtB;EAA3D,yBACE;IAAA;IAAA,WAAwBa;EAAxB,IACGS,KAAK,CAACE,KADT,CADF,eAIE;IAAA,QAAQ,MAAR;IAAA,YAAyB,CAAzB;IAAA,aAAuCR,kBAAvC;IAAA,WAAoEH;EAApE,IACGS,KAAK,CAACG,QADT,CAJF,eAOE;IAAA,QAAQ,MAAR;IAAA,YAAyB,CAAzB;IAAA,aAAuCJ,uBAAvC;IAAA,WAAyEF;EAAzE,IACGG,KAAK,CAACI,SADT,CAPF,eAUE,mEACE;IAAA,qBAAmBpE,EAAnB;EAAA,IAAuCgE,KAAK,CAACjB,OAA7C,CADF,CAVF,eAaE;IAAA,gBAAY/C,EAAZ;IAAA,aAA0CiD,iBAA1C;IAAA,YAAuE;EAAvE,IACGA,iBAAiB,GAAGe,KAAK,CAACK,kBAAT,GAA8BtB,OADlD,CAbF,eAgBE,mEACE;IAAA,qBAAmB/C,EAAnB;EAAA,IAAqCgE,KAAK,CAACM,KAA3C,CADF,CAhBF,eAmBE;IAAA,gBAActE,EAAd;IAAA,YAAyC,CAAzC;IAAA,OAAiD8D;EAAjD,iBACE,iEACE,8CACGhD,IAAI,CAACmB,GAAL,CAAS,UAACR,GAAD,EAAMgD,KAAN;IAAA,oBACR;MAAI,GAAG,YAAKhD,GAAL,cAAYgD,KAAZ;IAAP,GAA6B9B,WAAW,CAAClB,GAAD,CAAxC,CADQ;EAAA,CAAT,CADH,CADF,CADF,eAQE,oDACGvB,IAAI,CAAC+B,GAAL,CAAS,UAACL,GAAD,EAAM6C,KAAN;IAAA,oBACR;MAAI,GAAG,EAAEpD,MAAM,CAACC,MAAP,CAAcM,GAAd,EAAmB8C,IAAnB,CAAwB,GAAxB,IAA+B,GAA/B,GAAqCD;IAA9C,GACG3D,IAAI,CAACmB,GAAL,CAAS,UAACR,GAAD,EAAMgD,KAAN;MAAA,oBACR;QAAI,GAAG,YAAKhD,GAAL,cAAYgD,KAAZ;MAAP,GAA6B/E,WAAW,CAACgB,IAAD,EAAOkB,GAAG,CAACH,GAAD,CAAV,CAAxC,CADQ;IAAA,CAAT,CADH,CADQ;EAAA,CAAT,CADH,CARF,CAnBF,CADF;AAwCD,CA3KM"}
@@ -0,0 +1,35 @@
1
+ export var makeBezier = function makeBezier(points, bounds) {
2
+ var yPoints = points.map(function (point) {
3
+ return point.y;
4
+ });
5
+ var noPoints = points.map(function () {
6
+ return 1;
7
+ });
8
+ var weightPoints = points.map(function (point) {
9
+ var _point$weight;
10
+
11
+ return (_point$weight = point.weight) !== null && _point$weight !== void 0 ? _point$weight : 1;
12
+ });
13
+
14
+ var process = function process(t, points) {
15
+ var result = 0;
16
+
17
+ for (var i = 0; i < points.length; i++) {
18
+ var tPower = i;
19
+ var reversedTPower = points.length - 1 - i;
20
+ var edge = i === 0 || i === points.length - 1;
21
+ var factor = edge ? 1 : points.length - 1;
22
+ var point = points[i];
23
+ var weight = weightPoints[i];
24
+ result += factor * Math.pow(t, tPower) * Math.pow(1 - t, reversedTPower) * point * weight;
25
+ }
26
+
27
+ return result;
28
+ };
29
+
30
+ return function (x) {
31
+ var t = x / bounds.width;
32
+ return process(t, yPoints) / process(t, noPoints);
33
+ };
34
+ };
35
+ //# sourceMappingURL=bezier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bezier.js","names":["makeBezier","points","bounds","yPoints","map","point","y","noPoints","weightPoints","weight","process","t","result","i","length","tPower","reversedTPower","edge","factor","x","width"],"sources":["../../../src/a11y/bezier.ts"],"sourcesContent":["export const makeBezier = (\n points: { x: number; y: number; weight?: number }[],\n bounds: { width: number; height: number },\n) => {\n const yPoints = points.map((point) => point.y);\n const noPoints = points.map(() => 1);\n const weightPoints = points.map((point) => point.weight ?? 1);\n const process = (t: number, points: number[]) => {\n let result = 0;\n for (let i = 0; i < points.length; i++) {\n const tPower = i;\n const reversedTPower = points.length - 1 - i;\n const edge = i === 0 || i === points.length - 1;\n const factor = edge ? 1 : points.length - 1;\n const point = points[i];\n const weight = weightPoints[i];\n result += factor * t ** tPower * (1 - t) ** reversedTPower * point * weight;\n }\n return result;\n };\n\n return (x: number) => {\n const t = x / bounds.width;\n return process(t, yPoints) / process(t, noPoints);\n };\n};\n"],"mappings":"AAAA,OAAO,IAAMA,UAAU,GAAG,SAAbA,UAAa,CACxBC,MADwB,EAExBC,MAFwB,EAGrB;EACH,IAAMC,OAAO,GAAGF,MAAM,CAACG,GAAP,CAAW,UAACC,KAAD;IAAA,OAAWA,KAAK,CAACC,CAAjB;EAAA,CAAX,CAAhB;EACA,IAAMC,QAAQ,GAAGN,MAAM,CAACG,GAAP,CAAW;IAAA,OAAM,CAAN;EAAA,CAAX,CAAjB;EACA,IAAMI,YAAY,GAAGP,MAAM,CAACG,GAAP,CAAW,UAACC,KAAD;IAAA;;IAAA,wBAAWA,KAAK,CAACI,MAAjB,yDAA2B,CAA3B;EAAA,CAAX,CAArB;;EACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAYV,MAAZ,EAAiC;IAC/C,IAAIW,MAAM,GAAG,CAAb;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,MAAM,CAACa,MAA3B,EAAmCD,CAAC,EAApC,EAAwC;MACtC,IAAME,MAAM,GAAGF,CAAf;MACA,IAAMG,cAAc,GAAGf,MAAM,CAACa,MAAP,GAAgB,CAAhB,GAAoBD,CAA3C;MACA,IAAMI,IAAI,GAAGJ,CAAC,KAAK,CAAN,IAAWA,CAAC,KAAKZ,MAAM,CAACa,MAAP,GAAgB,CAA9C;MACA,IAAMI,MAAM,GAAGD,IAAI,GAAG,CAAH,GAAOhB,MAAM,CAACa,MAAP,GAAgB,CAA1C;MACA,IAAMT,KAAK,GAAGJ,MAAM,CAACY,CAAD,CAApB;MACA,IAAMJ,MAAM,GAAGD,YAAY,CAACK,CAAD,CAA3B;MACAD,MAAM,IAAIM,MAAM,YAAGP,CAAH,EAAQI,MAAR,CAAN,YAAwB,IAAIJ,CAA5B,EAAkCK,cAAlC,IAAmDX,KAAnD,GAA2DI,MAArE;IACD;;IACD,OAAOG,MAAP;EACD,CAZD;;EAcA,OAAO,UAACO,CAAD,EAAe;IACpB,IAAMR,CAAC,GAAGQ,CAAC,GAAGjB,MAAM,CAACkB,KAArB;IACA,OAAOV,OAAO,CAACC,CAAD,EAAIR,OAAJ,CAAP,GAAsBO,OAAO,CAACC,CAAD,EAAIJ,QAAJ,CAApC;EACD,CAHD;AAID,CAzBM"}