@semcore/d3-chart 2.2.4 → 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.
- package/CHANGELOG.md +6 -0
- package/lib/cjs/Area.js +16 -9
- package/lib/cjs/Area.js.map +1 -1
- package/lib/cjs/Axis.js +56 -17
- package/lib/cjs/Axis.js.map +1 -1
- package/lib/cjs/Bar.js +20 -9
- package/lib/cjs/Bar.js.map +1 -1
- package/lib/cjs/Bubble.js +20 -11
- package/lib/cjs/Bubble.js.map +1 -1
- package/lib/cjs/ClipPath.js +1 -0
- package/lib/cjs/ClipPath.js.map +1 -1
- package/lib/cjs/Donut.js +22 -12
- package/lib/cjs/Donut.js.map +1 -1
- package/lib/cjs/Dots.js +10 -9
- package/lib/cjs/Dots.js.map +1 -1
- package/lib/cjs/GroupBar.js +12 -8
- package/lib/cjs/GroupBar.js.map +1 -1
- package/lib/cjs/HorizontalBar.js +20 -9
- package/lib/cjs/HorizontalBar.js.map +1 -1
- package/lib/cjs/Hover.js +8 -4
- package/lib/cjs/Hover.js.map +1 -1
- package/lib/cjs/Line.js +15 -9
- package/lib/cjs/Line.js.map +1 -1
- package/lib/cjs/Plot.js +46 -8
- package/lib/cjs/Plot.js.map +1 -1
- package/lib/cjs/RadialTree.js +25 -13
- package/lib/cjs/RadialTree.js.map +1 -1
- package/lib/cjs/ReferenceLine.js +10 -10
- package/lib/cjs/ScatterPlot.js +17 -8
- package/lib/cjs/ScatterPlot.js.map +1 -1
- package/lib/cjs/StackBar.js +12 -8
- package/lib/cjs/StackBar.js.map +1 -1
- package/lib/cjs/StackedArea.js +8 -7
- package/lib/cjs/StackedArea.js.map +1 -1
- package/lib/cjs/Tooltip.js +8 -8
- package/lib/cjs/Venn.js +25 -9
- package/lib/cjs/Venn.js.map +1 -1
- package/lib/cjs/a11y/PlotA11yModule.js +185 -0
- package/lib/cjs/a11y/PlotA11yModule.js.map +1 -0
- package/lib/cjs/a11y/PlotA11yView.js +285 -0
- package/lib/cjs/a11y/PlotA11yView.js.map +1 -0
- package/lib/cjs/a11y/bezier.js +44 -0
- package/lib/cjs/a11y/bezier.js.map +1 -0
- package/lib/cjs/a11y/datasets/charts-a11y.js +591 -0
- package/lib/cjs/a11y/datasets/charts-a11y.js.map +1 -0
- package/lib/cjs/a11y/datasets/gold.json +7961 -0
- package/lib/cjs/a11y/datasets/imdb.json +10002 -0
- package/lib/cjs/a11y/datasets/readme.md +5 -0
- package/lib/cjs/a11y/datasets/stores.json +6274 -0
- package/lib/cjs/a11y/datasets/titanic.json +5436 -0
- package/lib/cjs/a11y/focus.js +57 -0
- package/lib/cjs/a11y/focus.js.map +1 -0
- package/lib/cjs/a11y/hints.js +141 -0
- package/lib/cjs/a11y/hints.js.map +1 -0
- package/lib/cjs/a11y/insights.js +785 -0
- package/lib/cjs/a11y/insights.js.map +1 -0
- package/lib/cjs/a11y/intl.js +31 -0
- package/lib/cjs/a11y/intl.js.map +1 -0
- package/lib/cjs/a11y/locale.js +48 -0
- package/lib/cjs/a11y/locale.js.map +1 -0
- package/lib/cjs/a11y/serialize.js +439 -0
- package/lib/cjs/a11y/serialize.js.map +1 -0
- package/lib/cjs/a11y/summarize.js +21 -0
- package/lib/cjs/a11y/summarize.js.map +1 -0
- package/lib/cjs/a11y/translations/module/de.json +5 -0
- package/lib/cjs/a11y/translations/module/en.json +5 -0
- package/lib/cjs/a11y/translations/module/es.json +5 -0
- package/lib/cjs/a11y/translations/module/fr.json +5 -0
- package/lib/cjs/a11y/translations/module/it.json +5 -0
- package/lib/cjs/a11y/translations/module/ja.json +5 -0
- package/lib/cjs/a11y/translations/module/ko.json +5 -0
- package/lib/cjs/a11y/translations/module/pt.json +5 -0
- package/lib/cjs/a11y/translations/module/tr.json +5 -0
- package/lib/cjs/a11y/translations/module/translations.js +46 -0
- package/lib/cjs/a11y/translations/module/translations.js.map +1 -0
- package/lib/cjs/a11y/translations/module/vi.json +5 -0
- package/lib/cjs/a11y/translations/module/zh.json +5 -0
- package/lib/cjs/a11y/translations/view/de.json +42 -0
- package/lib/cjs/a11y/translations/view/en.csv +41 -0
- package/lib/cjs/a11y/translations/view/en.json +42 -0
- package/lib/cjs/a11y/translations/view/es.json +42 -0
- package/lib/cjs/a11y/translations/view/fr.json +42 -0
- package/lib/cjs/a11y/translations/view/it.json +42 -0
- package/lib/cjs/a11y/translations/view/ja.json +42 -0
- package/lib/cjs/a11y/translations/view/ko.json +42 -0
- package/lib/cjs/a11y/translations/view/pt.json +42 -0
- package/lib/cjs/a11y/translations/view/tr.json +42 -0
- package/lib/cjs/a11y/translations/view/translations.js +46 -0
- package/lib/cjs/a11y/translations/view/translations.js.map +1 -0
- package/lib/cjs/a11y/translations/view/vi.json +42 -0
- package/lib/cjs/a11y/translations/view/zh.json +42 -0
- package/lib/cjs/createElement.js +3 -1
- package/lib/cjs/createElement.js.map +1 -1
- package/lib/cjs/style/plot.shadow.css +10 -0
- package/lib/cjs/style/plotA11yModule.shadow.css +13 -0
- package/lib/cjs/style/plotA11yView.shadow.css +39 -0
- package/lib/cjs/types/Plot.d.ts +75 -0
- package/lib/cjs/utils.js +9 -1
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/Area.js +16 -9
- package/lib/es6/Area.js.map +1 -1
- package/lib/es6/Axis.js +56 -17
- package/lib/es6/Axis.js.map +1 -1
- package/lib/es6/Bar.js +20 -9
- package/lib/es6/Bar.js.map +1 -1
- package/lib/es6/Bubble.js +20 -11
- package/lib/es6/Bubble.js.map +1 -1
- package/lib/es6/ClipPath.js +1 -0
- package/lib/es6/ClipPath.js.map +1 -1
- package/lib/es6/Donut.js +22 -12
- package/lib/es6/Donut.js.map +1 -1
- package/lib/es6/Dots.js +10 -9
- package/lib/es6/Dots.js.map +1 -1
- package/lib/es6/GroupBar.js +12 -8
- package/lib/es6/GroupBar.js.map +1 -1
- package/lib/es6/HorizontalBar.js +20 -9
- package/lib/es6/HorizontalBar.js.map +1 -1
- package/lib/es6/Hover.js +8 -4
- package/lib/es6/Hover.js.map +1 -1
- package/lib/es6/Line.js +15 -9
- package/lib/es6/Line.js.map +1 -1
- package/lib/es6/Plot.js +48 -9
- package/lib/es6/Plot.js.map +1 -1
- package/lib/es6/RadialTree.js +25 -13
- package/lib/es6/RadialTree.js.map +1 -1
- package/lib/es6/ReferenceLine.js +10 -10
- package/lib/es6/ScatterPlot.js +17 -8
- package/lib/es6/ScatterPlot.js.map +1 -1
- package/lib/es6/StackBar.js +12 -8
- package/lib/es6/StackBar.js.map +1 -1
- package/lib/es6/StackedArea.js +8 -7
- package/lib/es6/StackedArea.js.map +1 -1
- package/lib/es6/Tooltip.js +8 -8
- package/lib/es6/Venn.js +25 -9
- package/lib/es6/Venn.js.map +1 -1
- package/lib/es6/a11y/PlotA11yModule.js +160 -0
- package/lib/es6/a11y/PlotA11yModule.js.map +1 -0
- package/lib/es6/a11y/PlotA11yView.js +254 -0
- package/lib/es6/a11y/PlotA11yView.js.map +1 -0
- package/lib/es6/a11y/bezier.js +35 -0
- package/lib/es6/a11y/bezier.js.map +1 -0
- package/lib/es6/a11y/datasets/charts-a11y.js +590 -0
- package/lib/es6/a11y/datasets/charts-a11y.js.map +1 -0
- package/lib/es6/a11y/datasets/gold.json +7961 -0
- package/lib/es6/a11y/datasets/imdb.json +10002 -0
- package/lib/es6/a11y/datasets/readme.md +5 -0
- package/lib/es6/a11y/datasets/stores.json +6274 -0
- package/lib/es6/a11y/datasets/titanic.json +5436 -0
- package/lib/es6/a11y/focus.js +48 -0
- package/lib/es6/a11y/focus.js.map +1 -0
- package/lib/es6/a11y/hints.js +123 -0
- package/lib/es6/a11y/hints.js.map +1 -0
- package/lib/es6/a11y/insights.js +779 -0
- package/lib/es6/a11y/insights.js.map +1 -0
- package/lib/es6/a11y/intl.js +18 -0
- package/lib/es6/a11y/intl.js.map +1 -0
- package/lib/es6/a11y/locale.js +36 -0
- package/lib/es6/a11y/locale.js.map +1 -0
- package/lib/es6/a11y/serialize.js +423 -0
- package/lib/es6/a11y/serialize.js.map +1 -0
- package/lib/es6/a11y/summarize.js +10 -0
- package/lib/es6/a11y/summarize.js.map +1 -0
- package/lib/es6/a11y/translations/module/de.json +5 -0
- package/lib/es6/a11y/translations/module/en.json +5 -0
- package/lib/es6/a11y/translations/module/es.json +5 -0
- package/lib/es6/a11y/translations/module/fr.json +5 -0
- package/lib/es6/a11y/translations/module/it.json +5 -0
- package/lib/es6/a11y/translations/module/ja.json +5 -0
- package/lib/es6/a11y/translations/module/ko.json +5 -0
- package/lib/es6/a11y/translations/module/pt.json +5 -0
- package/lib/es6/a11y/translations/module/tr.json +5 -0
- package/lib/es6/a11y/translations/module/translations.js +25 -0
- package/lib/es6/a11y/translations/module/translations.js.map +1 -0
- package/lib/es6/a11y/translations/module/vi.json +5 -0
- package/lib/es6/a11y/translations/module/zh.json +5 -0
- package/lib/es6/a11y/translations/view/de.json +42 -0
- package/lib/es6/a11y/translations/view/en.csv +41 -0
- package/lib/es6/a11y/translations/view/en.json +42 -0
- package/lib/es6/a11y/translations/view/es.json +42 -0
- package/lib/es6/a11y/translations/view/fr.json +42 -0
- package/lib/es6/a11y/translations/view/it.json +42 -0
- package/lib/es6/a11y/translations/view/ja.json +42 -0
- package/lib/es6/a11y/translations/view/ko.json +42 -0
- package/lib/es6/a11y/translations/view/pt.json +42 -0
- package/lib/es6/a11y/translations/view/tr.json +42 -0
- package/lib/es6/a11y/translations/view/translations.js +25 -0
- package/lib/es6/a11y/translations/view/translations.js.map +1 -0
- package/lib/es6/a11y/translations/view/vi.json +42 -0
- package/lib/es6/a11y/translations/view/zh.json +42 -0
- package/lib/es6/createElement.js +3 -1
- package/lib/es6/createElement.js.map +1 -1
- package/lib/es6/style/plot.shadow.css +10 -0
- package/lib/es6/style/plotA11yModule.shadow.css +13 -0
- package/lib/es6/style/plotA11yView.shadow.css +39 -0
- package/lib/es6/types/Plot.d.ts +75 -0
- package/lib/es6/utils.js +5 -0
- package/lib/es6/utils.js.map +1 -1
- package/lib/types/Plot.d.ts +75 -0
- package/lib/types/a11y/PlotA11yModule.d.ts +12 -0
- package/lib/types/a11y/PlotA11yView.d.ts +3 -0
- package/lib/types/a11y/bezier.d.ts +8 -0
- package/lib/types/a11y/datasets/charts-a11y.d.ts +0 -0
- package/lib/types/a11y/focus.d.ts +5 -0
- package/lib/types/a11y/hints.d.ts +99 -0
- package/lib/types/a11y/insights.d.ts +54 -0
- package/lib/types/a11y/intl.d.ts +8 -0
- package/lib/types/a11y/locale.d.ts +3 -0
- package/lib/types/a11y/serialize.d.ts +16 -0
- package/lib/types/a11y/summarize.d.ts +2 -0
- package/lib/types/a11y/translations/module/translations.d.ts +5 -0
- package/lib/types/a11y/translations/view/translations.d.ts +5 -0
- package/lib/types/utils.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.PlotA11yModule = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _core = require("@semcore/core");
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
|
+
|
|
20
|
+
var _locale = require("./locale");
|
|
21
|
+
|
|
22
|
+
var _translations = require("./translations/module/translations");
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
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) { (0, _defineProperty2["default"])(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; }
|
|
27
|
+
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
32
|
+
/*__reshadow-styles__:"../style/plotA11yModule.shadow.css"*/
|
|
33
|
+
var styles = (
|
|
34
|
+
/*__reshadow_css_start__*/
|
|
35
|
+
_core.sstyled.insert(
|
|
36
|
+
/*__inner_css_start__*/
|
|
37
|
+
".___SPlotA11yModule_1c5bq_gg_{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;opacity:0}.___SPlotA11yModule_1c5bq_gg_:focus{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;pointer-events:all;opacity:1}"
|
|
38
|
+
/*__inner_css_end__*/
|
|
39
|
+
, "1c5bq_gg_")
|
|
40
|
+
/*__reshadow_css_end__*/
|
|
41
|
+
, {
|
|
42
|
+
"__SPlotA11yModule": "___SPlotA11yModule_1c5bq_gg_"
|
|
43
|
+
});
|
|
44
|
+
var globalWasFocused = false;
|
|
45
|
+
var globalNavWithKeyboard = false;
|
|
46
|
+
|
|
47
|
+
var PlotA11yModule = function PlotA11yModule(props) {
|
|
48
|
+
var _ref = arguments[0],
|
|
49
|
+
_ref5;
|
|
50
|
+
|
|
51
|
+
var SPlotA11yModule = 'div';
|
|
52
|
+
|
|
53
|
+
var _React$useState = _react["default"].useState(globalWasFocused),
|
|
54
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
55
|
+
wasFocused = _React$useState2[0],
|
|
56
|
+
setWasFocused = _React$useState2[1];
|
|
57
|
+
|
|
58
|
+
var _React$useState3 = _react["default"].useState(globalNavWithKeyboard),
|
|
59
|
+
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
60
|
+
navWithKeyboard = _React$useState4[0],
|
|
61
|
+
setNavWithKeyboard = _React$useState4[1];
|
|
62
|
+
|
|
63
|
+
var _React$useState5 = _react["default"].useState(null),
|
|
64
|
+
_React$useState6 = (0, _slicedToArray2["default"])(_React$useState5, 2),
|
|
65
|
+
plotA11yView = _React$useState6[0],
|
|
66
|
+
setPlotA11yView = _React$useState6[1];
|
|
67
|
+
|
|
68
|
+
var hadnleHiddenElementsFocus = _react["default"].useCallback(function () {
|
|
69
|
+
setWasFocused(true);
|
|
70
|
+
setNavWithKeyboard(true);
|
|
71
|
+
}, []);
|
|
72
|
+
|
|
73
|
+
var _React$useState7 = _react["default"].useState(false),
|
|
74
|
+
_React$useState8 = (0, _slicedToArray2["default"])(_React$useState7, 2),
|
|
75
|
+
loading = _React$useState8[0],
|
|
76
|
+
setLoading = _React$useState8[1];
|
|
77
|
+
|
|
78
|
+
var _React$useState9 = _react["default"].useState(null),
|
|
79
|
+
_React$useState10 = (0, _slicedToArray2["default"])(_React$useState9, 2),
|
|
80
|
+
error = _React$useState10[0],
|
|
81
|
+
setError = _React$useState10[1];
|
|
82
|
+
|
|
83
|
+
var locale = _react["default"].useMemo(function () {
|
|
84
|
+
return (0, _locale.normalizeLocale)(props.locale, _translations.translations);
|
|
85
|
+
}, [props.locale]);
|
|
86
|
+
|
|
87
|
+
var texts = _react["default"].useMemo(function () {
|
|
88
|
+
return locale ? _translations.translations[locale] : {};
|
|
89
|
+
}, [locale]);
|
|
90
|
+
|
|
91
|
+
_react["default"].useEffect(function () {
|
|
92
|
+
var _props$plotRef$curren;
|
|
93
|
+
|
|
94
|
+
if (wasFocused) return;
|
|
95
|
+
|
|
96
|
+
var focusListener = function focusListener() {
|
|
97
|
+
globalWasFocused = true;
|
|
98
|
+
setWasFocused(true);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
(_props$plotRef$curren = props.plotRef.current) === null || _props$plotRef$curren === void 0 ? void 0 : _props$plotRef$curren.addEventListener('focus', focusListener);
|
|
102
|
+
return function () {
|
|
103
|
+
var _props$plotRef$curren2;
|
|
104
|
+
|
|
105
|
+
return (_props$plotRef$curren2 = props.plotRef.current) === null || _props$plotRef$curren2 === void 0 ? void 0 : _props$plotRef$curren2.removeEventListener('focus', focusListener);
|
|
106
|
+
};
|
|
107
|
+
}, [wasFocused, props.plotRef]);
|
|
108
|
+
|
|
109
|
+
_react["default"].useEffect(function () {
|
|
110
|
+
var _document$body;
|
|
111
|
+
|
|
112
|
+
if (navWithKeyboard) return;
|
|
113
|
+
|
|
114
|
+
var keyboardListener = function keyboardListener(event) {
|
|
115
|
+
var navigationKeys = ['Tab', 'ArrowUp', 'ArrowLeft', 'ArrowDown', 'ArrowRight', 'ArrowUp', 'ArrowLeft'];
|
|
116
|
+
|
|
117
|
+
if ('key' in event && navigationKeys.includes(event.key)) {
|
|
118
|
+
setNavWithKeyboard(true);
|
|
119
|
+
globalNavWithKeyboard = true;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
(_document$body = document.body) === null || _document$body === void 0 ? void 0 : _document$body.addEventListener('keydown', keyboardListener);
|
|
124
|
+
return function () {
|
|
125
|
+
var _document$body2;
|
|
126
|
+
|
|
127
|
+
return (_document$body2 = document.body) === null || _document$body2 === void 0 ? void 0 : _document$body2.removeEventListener('keydown', keyboardListener);
|
|
128
|
+
};
|
|
129
|
+
}, [navWithKeyboard]);
|
|
130
|
+
|
|
131
|
+
var shouldDisplayView = wasFocused && navWithKeyboard;
|
|
132
|
+
|
|
133
|
+
_react["default"].useEffect(function () {
|
|
134
|
+
if (!shouldDisplayView) return;
|
|
135
|
+
if (plotA11yView) return;
|
|
136
|
+
if (loading) return;
|
|
137
|
+
setLoading(true);
|
|
138
|
+
Promise.resolve().then(function () {
|
|
139
|
+
return _interopRequireWildcard(require('./PlotA11yView'));
|
|
140
|
+
}).then(function (_ref6) {
|
|
141
|
+
var PlotA11yView = _ref6.PlotA11yView;
|
|
142
|
+
setPlotA11yView({
|
|
143
|
+
Component: PlotA11yView
|
|
144
|
+
});
|
|
145
|
+
setLoading(false);
|
|
146
|
+
setError(null);
|
|
147
|
+
})["catch"](function (error) {
|
|
148
|
+
// eslint-disable-next-line no-console
|
|
149
|
+
console.error(error);
|
|
150
|
+
setError(error);
|
|
151
|
+
});
|
|
152
|
+
}, [plotA11yView, shouldDisplayView, loading, setLoading]);
|
|
153
|
+
|
|
154
|
+
if (plotA11yView) {
|
|
155
|
+
var _ref2;
|
|
156
|
+
|
|
157
|
+
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(plotA11yView.Component, props);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (error) {
|
|
161
|
+
var _ref3;
|
|
162
|
+
|
|
163
|
+
return _ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPlotA11yModule, _ref3.cn("SPlotA11yModule", _objectSpread({}, (0, _core.assignProps)({
|
|
164
|
+
"tabIndex": 0,
|
|
165
|
+
"aria-live": "assertive"
|
|
166
|
+
}, _ref))), texts.failed);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (loading) {
|
|
170
|
+
var _ref4;
|
|
171
|
+
|
|
172
|
+
return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPlotA11yModule, _ref4.cn("SPlotA11yModule", _objectSpread({}, (0, _core.assignProps)({
|
|
173
|
+
"tabIndex": 0,
|
|
174
|
+
"aria-live": "polite"
|
|
175
|
+
}, _ref))), texts.loading);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPlotA11yModule, _ref5.cn("SPlotA11yModule", _objectSpread({}, (0, _core.assignProps)({
|
|
179
|
+
"tabIndex": 0,
|
|
180
|
+
"onFocus": hadnleHiddenElementsFocus
|
|
181
|
+
}, _ref))), texts.disabled);
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
exports.PlotA11yModule = PlotA11yModule;
|
|
185
|
+
//# sourceMappingURL=PlotA11yModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlotA11yModule.js","names":["globalWasFocused","globalNavWithKeyboard","PlotA11yModule","props","SPlotA11yModule","React","useState","wasFocused","setWasFocused","navWithKeyboard","setNavWithKeyboard","plotA11yView","setPlotA11yView","hadnleHiddenElementsFocus","useCallback","loading","setLoading","error","setError","locale","useMemo","normalizeLocale","translations","texts","useEffect","focusListener","plotRef","current","addEventListener","removeEventListener","keyboardListener","event","navigationKeys","includes","key","document","body","shouldDisplayView","then","PlotA11yView","Component","console","sstyled","styles","failed","disabled"],"sources":["../../../src/a11y/PlotA11yModule.tsx"],"sourcesContent":["import React from 'react';\nimport { DataStructureHints, PartialDataSummarizationConfig } from './hints';\nimport { normalizeLocale } from './locale';\nimport { translations } from './translations/module/translations';\nimport { Root, sstyled } from '@semcore/core';\nimport styles from '../style/plotA11yModule.shadow.css';\n\nlet globalWasFocused = false;\nlet globalNavWithKeyboard = false;\n\nexport type A11yViewProps = {\n id: string;\n data: Record<string, unknown>[];\n hints: DataStructureHints;\n plotLabel: string;\n locale: NavigatorLanguage['language'];\n config: PartialDataSummarizationConfig;\n // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\n plotRef: React.RefObject<Element>;\n};\n\nexport const PlotA11yModule: React.FC<A11yViewProps> = (props) => {\n const SPlotA11yModule = Root;\n const [wasFocused, setWasFocused] = React.useState(globalWasFocused);\n const [navWithKeyboard, setNavWithKeyboard] = React.useState(globalNavWithKeyboard);\n const [plotA11yView, setPlotA11yView] = React.useState<{\n Component: React.FC<A11yViewProps>;\n } | null>(null);\n\n const hadnleHiddenElementsFocus = React.useCallback(() => {\n setWasFocused(true);\n setNavWithKeyboard(true);\n }, []);\n\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const locale = React.useMemo(() => normalizeLocale(props.locale, translations), [props.locale]);\n const texts = React.useMemo(() => (locale ? translations[locale] : {}), [locale]);\n\n React.useEffect(() => {\n if (wasFocused) return;\n const focusListener = () => {\n globalWasFocused = true;\n setWasFocused(true);\n };\n\n props.plotRef.current?.addEventListener('focus', focusListener);\n return () => props.plotRef.current?.removeEventListener('focus', focusListener);\n }, [wasFocused, props.plotRef]);\n React.useEffect(() => {\n if (navWithKeyboard) return;\n const keyboardListener = (event: Event) => {\n const navigationKeys = [\n 'Tab',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowDown',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowLeft',\n ];\n if ('key' in event && navigationKeys.includes((event as KeyboardEvent).key)) {\n setNavWithKeyboard(true);\n globalNavWithKeyboard = true;\n }\n };\n document.body?.addEventListener('keydown', keyboardListener);\n return () => document.body?.removeEventListener('keydown', keyboardListener);\n }, [navWithKeyboard]);\n\n const shouldDisplayView = wasFocused && navWithKeyboard;\n\n React.useEffect(() => {\n if (!shouldDisplayView) return;\n if (plotA11yView) return;\n if (loading) return;\n\n setLoading(true);\n\n import('./PlotA11yView')\n .then(({ PlotA11yView }) => {\n setPlotA11yView({ Component: PlotA11yView });\n setLoading(false);\n setError(null);\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n setError(error);\n });\n }, [plotA11yView, shouldDisplayView, loading, setLoading]);\n\n if (plotA11yView) {\n return sstyled(styles)(<plotA11yView.Component {...props} />) as React.ReactElement;\n }\n\n if (error) {\n return sstyled(styles)(\n <SPlotA11yModule render={'div'} tabIndex={0} aria-live=\"assertive\">\n {texts.failed}\n </SPlotA11yModule>,\n ) as React.ReactElement;\n }\n if (loading) {\n return sstyled(styles)(\n <SPlotA11yModule render={'div'} tabIndex={0} aria-live=\"polite\">\n {texts.loading}\n </SPlotA11yModule>,\n ) as React.ReactElement;\n }\n\n return sstyled(styles)(\n <SPlotA11yModule render={'div'} tabIndex={0} onFocus={hadnleHiddenElementsFocus}>\n {texts.disabled}\n </SPlotA11yModule>,\n ) as React.ReactElement;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAIA;;AAJA;;AAEA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAIA,gBAAgB,GAAG,KAAvB;AACA,IAAIC,qBAAqB,GAAG,KAA5B;;AAaO,IAAMC,cAAuC,GAAG,SAA1CA,cAA0C,CAACC,KAAD,EAAW;EAAA;EAAA;;EAChE,IAAMC,eAAe,GA2FM,KA3F3B;;EACA,sBAAoCC,iBAAA,CAAMC,QAAN,CAAeN,gBAAf,CAApC;EAAA;EAAA,IAAOO,UAAP;EAAA,IAAmBC,aAAnB;;EACA,uBAA8CH,iBAAA,CAAMC,QAAN,CAAeL,qBAAf,CAA9C;EAAA;EAAA,IAAOQ,eAAP;EAAA,IAAwBC,kBAAxB;;EACA,uBAAwCL,iBAAA,CAAMC,QAAN,CAE9B,IAF8B,CAAxC;EAAA;EAAA,IAAOK,YAAP;EAAA,IAAqBC,eAArB;;EAIA,IAAMC,yBAAyB,GAAGR,iBAAA,CAAMS,WAAN,CAAkB,YAAM;IACxDN,aAAa,CAAC,IAAD,CAAb;IACAE,kBAAkB,CAAC,IAAD,CAAlB;EACD,CAHiC,EAG/B,EAH+B,CAAlC;;EAKA,uBAA8BL,iBAAA,CAAMC,QAAN,CAAe,KAAf,CAA9B;EAAA;EAAA,IAAOS,OAAP;EAAA,IAAgBC,UAAhB;;EACA,uBAA0BX,iBAAA,CAAMC,QAAN,CAA6B,IAA7B,CAA1B;EAAA;EAAA,IAAOW,KAAP;EAAA,IAAcC,QAAd;;EAEA,IAAMC,MAAM,GAAGd,iBAAA,CAAMe,OAAN,CAAc;IAAA,OAAM,IAAAC,uBAAA,EAAgBlB,KAAK,CAACgB,MAAtB,EAA8BG,0BAA9B,CAAN;EAAA,CAAd,EAAiE,CAACnB,KAAK,CAACgB,MAAP,CAAjE,CAAf;;EACA,IAAMI,KAAK,GAAGlB,iBAAA,CAAMe,OAAN,CAAc;IAAA,OAAOD,MAAM,GAAGG,0BAAA,CAAaH,MAAb,CAAH,GAA0B,EAAvC;EAAA,CAAd,EAA0D,CAACA,MAAD,CAA1D,CAAd;;EAEAd,iBAAA,CAAMmB,SAAN,CAAgB,YAAM;IAAA;;IACpB,IAAIjB,UAAJ,EAAgB;;IAChB,IAAMkB,aAAa,GAAG,SAAhBA,aAAgB,GAAM;MAC1BzB,gBAAgB,GAAG,IAAnB;MACAQ,aAAa,CAAC,IAAD,CAAb;IACD,CAHD;;IAKA,yBAAAL,KAAK,CAACuB,OAAN,CAAcC,OAAd,gFAAuBC,gBAAvB,CAAwC,OAAxC,EAAiDH,aAAjD;IACA,OAAO;MAAA;;MAAA,iCAAMtB,KAAK,CAACuB,OAAN,CAAcC,OAApB,2DAAM,uBAAuBE,mBAAvB,CAA2C,OAA3C,EAAoDJ,aAApD,CAAN;IAAA,CAAP;EACD,CATD,EASG,CAAClB,UAAD,EAAaJ,KAAK,CAACuB,OAAnB,CATH;;EAUArB,iBAAA,CAAMmB,SAAN,CAAgB,YAAM;IAAA;;IACpB,IAAIf,eAAJ,EAAqB;;IACrB,IAAMqB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAkB;MACzC,IAAMC,cAAc,GAAG,CACrB,KADqB,EAErB,SAFqB,EAGrB,WAHqB,EAIrB,WAJqB,EAKrB,YALqB,EAMrB,SANqB,EAOrB,WAPqB,CAAvB;;MASA,IAAI,SAASD,KAAT,IAAkBC,cAAc,CAACC,QAAf,CAAyBF,KAAD,CAAyBG,GAAjD,CAAtB,EAA6E;QAC3ExB,kBAAkB,CAAC,IAAD,CAAlB;QACAT,qBAAqB,GAAG,IAAxB;MACD;IACF,CAdD;;IAeA,kBAAAkC,QAAQ,CAACC,IAAT,kEAAeR,gBAAf,CAAgC,SAAhC,EAA2CE,gBAA3C;IACA,OAAO;MAAA;;MAAA,0BAAMK,QAAQ,CAACC,IAAf,oDAAM,gBAAeP,mBAAf,CAAmC,SAAnC,EAA8CC,gBAA9C,CAAN;IAAA,CAAP;EACD,CAnBD,EAmBG,CAACrB,eAAD,CAnBH;;EAqBA,IAAM4B,iBAAiB,GAAG9B,UAAU,IAAIE,eAAxC;;EAEAJ,iBAAA,CAAMmB,SAAN,CAAgB,YAAM;IACpB,IAAI,CAACa,iBAAL,EAAwB;IACxB,IAAI1B,YAAJ,EAAkB;IAClB,IAAII,OAAJ,EAAa;IAEbC,UAAU,CAAC,IAAD,CAAV;IAEA;MAAA,uCAAO,gBAAP;IAAA,GACGsB,IADH,CACQ,iBAAsB;MAAA,IAAnBC,YAAmB,SAAnBA,YAAmB;MAC1B3B,eAAe,CAAC;QAAE4B,SAAS,EAAED;MAAb,CAAD,CAAf;MACAvB,UAAU,CAAC,KAAD,CAAV;MACAE,QAAQ,CAAC,IAAD,CAAR;IACD,CALH,WAMS,UAACD,KAAD,EAAW;MAChB;MACAwB,OAAO,CAACxB,KAAR,CAAcA,KAAd;MACAC,QAAQ,CAACD,KAAD,CAAR;IACD,CAVH;EAWD,CAlBD,EAkBG,CAACN,YAAD,EAAe0B,iBAAf,EAAkCtB,OAAlC,EAA2CC,UAA3C,CAlBH;;EAoBA,IAAIL,YAAJ,EAAkB;IAAA;;IAChB,eAAO,IAAA+B,aAAA,EAAQC,MAAR,CAAP,eAAuB,gCAAC,YAAD,CAAc,SAAd,EAA4BxC,KAA5B,CAAvB;EACD;;EAED,IAAIc,KAAJ,EAAW;IAAA;;IACT,eAAO,IAAAyB,aAAA,EAAQC,MAAR,CAAP,eACE,gCAAC,eAAD;MAAA,YAA0C,CAA1C;MAAA,aAAuD;IAAvD,YACGpB,KAAK,CAACqB,MADT,CADF;EAKD;;EACD,IAAI7B,OAAJ,EAAa;IAAA;;IACX,eAAO,IAAA2B,aAAA,EAAQC,MAAR,CAAP,eACE,gCAAC,eAAD;MAAA,YAA0C,CAA1C;MAAA,aAAuD;IAAvD,YACGpB,KAAK,CAACR,OADT,CADF;EAKD;;EAED,eAAO,IAAA2B,aAAA,EAAQC,MAAR,CAAP,eACE,gCAAC,eAAD;IAAA,YAA0C,CAA1C;IAAA,WAAsD9B;EAAtD,YACGU,KAAK,CAACsB,QADT,CADF;AAKD,CAhGM"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PlotA11yView = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
+
|
|
16
|
+
var _core = require("@semcore/core");
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
|
+
|
|
20
|
+
var _focus = require("./focus");
|
|
21
|
+
|
|
22
|
+
var _hints = require("./hints");
|
|
23
|
+
|
|
24
|
+
var _serialize = require("./serialize");
|
|
25
|
+
|
|
26
|
+
var _intl = require("./intl");
|
|
27
|
+
|
|
28
|
+
var _summarize = require("./summarize");
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
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) { (0, _defineProperty2["default"])(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; }
|
|
33
|
+
|
|
34
|
+
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; } } }; }
|
|
35
|
+
|
|
36
|
+
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); }
|
|
37
|
+
|
|
38
|
+
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; }
|
|
39
|
+
|
|
40
|
+
/*__reshadow-styles__:"../style/plotA11yView.shadow.css"*/
|
|
41
|
+
var styles = (
|
|
42
|
+
/*__reshadow_css_start__*/
|
|
43
|
+
_core.sstyled.insert(
|
|
44
|
+
/*__inner_css_start__*/
|
|
45
|
+
".___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}"
|
|
46
|
+
/*__inner_css_end__*/
|
|
47
|
+
, "1e44s_gg_")
|
|
48
|
+
/*__reshadow_css_end__*/
|
|
49
|
+
, {
|
|
50
|
+
"__SPlotA11yView": "___SPlotA11yView_1e44s_gg_",
|
|
51
|
+
"_focus-within": "__focus-within_1e44s_gg_"
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
var PlotA11yView = function PlotA11yView(_ref3) {
|
|
55
|
+
var _ref = arguments[0],
|
|
56
|
+
_ref2;
|
|
57
|
+
|
|
58
|
+
var id = _ref3.id,
|
|
59
|
+
providedData = _ref3.data,
|
|
60
|
+
hints = _ref3.hints,
|
|
61
|
+
plotLabel = _ref3.plotLabel,
|
|
62
|
+
plotRef = _ref3.plotRef,
|
|
63
|
+
providedConfig = _ref3.config,
|
|
64
|
+
locale = _ref3.locale;
|
|
65
|
+
var SPlotA11yView = "div";
|
|
66
|
+
|
|
67
|
+
var intl = _react["default"].useMemo(function () {
|
|
68
|
+
return (0, _intl.getIntl)(locale);
|
|
69
|
+
}, [locale]);
|
|
70
|
+
|
|
71
|
+
var config = _react["default"].useMemo(function () {
|
|
72
|
+
return (0, _hints.makeDataSummarizationConfig)(providedConfig);
|
|
73
|
+
}, [providedConfig]);
|
|
74
|
+
|
|
75
|
+
var data = _react["default"].useMemo(function () {
|
|
76
|
+
return Array.isArray(providedData) ? providedData : [providedData];
|
|
77
|
+
}, [providedData]);
|
|
78
|
+
|
|
79
|
+
var keys = _react["default"].useMemo(function () {
|
|
80
|
+
var _fromHints, _fromHints2, _fromHints3, _fromHints4;
|
|
81
|
+
|
|
82
|
+
var fromHints = [];
|
|
83
|
+
|
|
84
|
+
(_fromHints = fromHints).push.apply(_fromHints, (0, _toConsumableArray2["default"])(hints.fields.verticalAxes));
|
|
85
|
+
|
|
86
|
+
(_fromHints2 = fromHints).push.apply(_fromHints2, (0, _toConsumableArray2["default"])(hints.fields.horizontalAxes));
|
|
87
|
+
|
|
88
|
+
(_fromHints3 = fromHints).push.apply(_fromHints3, (0, _toConsumableArray2["default"])(hints.fields.valueAxes));
|
|
89
|
+
|
|
90
|
+
(_fromHints4 = fromHints).push.apply(_fromHints4, (0, _toConsumableArray2["default"])(Object.keys(hints.fields.values)));
|
|
91
|
+
|
|
92
|
+
fromHints = (0, _toConsumableArray2["default"])(new Set(fromHints)).filter(function (key) {
|
|
93
|
+
return key in data[0];
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
if (fromHints.length === 0) {
|
|
97
|
+
data.forEach(function (row) {
|
|
98
|
+
var _fromHints5;
|
|
99
|
+
|
|
100
|
+
return (_fromHints5 = fromHints).push.apply(_fromHints5, (0, _toConsumableArray2["default"])(Object.keys(row)));
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return (0, _toConsumableArray2["default"])(new Set(fromHints));
|
|
105
|
+
}, [data, hints]);
|
|
106
|
+
|
|
107
|
+
var duplicatedBaseKeys = _react["default"].useMemo(function () {
|
|
108
|
+
var baseKeys = keys.filter(function (key) {
|
|
109
|
+
return !hints.titles.valuesAxes[key];
|
|
110
|
+
}).map(function (key) {
|
|
111
|
+
if (hints.fields.verticalAxes.has(key) && hints.axesTitle.vertical) return [key, hints.axesTitle.vertical];
|
|
112
|
+
if (hints.fields.horizontalAxes.has(key) && hints.axesTitle.horizontal) return [key, hints.axesTitle.horizontal];
|
|
113
|
+
}).filter(function (entry) {
|
|
114
|
+
return entry !== undefined;
|
|
115
|
+
}).map(function (entry) {
|
|
116
|
+
return entry;
|
|
117
|
+
});
|
|
118
|
+
var doublicated = {};
|
|
119
|
+
var handled = {};
|
|
120
|
+
|
|
121
|
+
var _iterator = _createForOfIteratorHelper(baseKeys),
|
|
122
|
+
_step;
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
126
|
+
var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
|
|
127
|
+
key = _step$value[0],
|
|
128
|
+
label = _step$value[1];
|
|
129
|
+
|
|
130
|
+
if (handled[label]) {
|
|
131
|
+
doublicated[key] = true;
|
|
132
|
+
doublicated[handled[label]] = true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
handled[label] = key;
|
|
136
|
+
}
|
|
137
|
+
} catch (err) {
|
|
138
|
+
_iterator.e(err);
|
|
139
|
+
} finally {
|
|
140
|
+
_iterator.f();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return doublicated;
|
|
144
|
+
}, [keys, hints]);
|
|
145
|
+
|
|
146
|
+
var renderTitle = _react["default"].useCallback(function (dataKey) {
|
|
147
|
+
if (hints.titles.valuesAxes[dataKey]) return hints.titles.valuesAxes[dataKey];
|
|
148
|
+
|
|
149
|
+
if (!duplicatedBaseKeys[dataKey]) {
|
|
150
|
+
if (hints.fields.verticalAxes.has(dataKey) && hints.axesTitle.vertical) return hints.axesTitle.vertical;
|
|
151
|
+
if (hints.fields.horizontalAxes.has(dataKey) && hints.axesTitle.horizontal) return hints.axesTitle.horizontal;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return dataKey;
|
|
155
|
+
}, [data, hints, duplicatedBaseKeys]);
|
|
156
|
+
|
|
157
|
+
var _React$useState = _react["default"].useState(null),
|
|
158
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
159
|
+
summary = _React$useState2[0],
|
|
160
|
+
setSummary = _React$useState2[1];
|
|
161
|
+
|
|
162
|
+
var _React$useState3 = _react["default"].useState(true),
|
|
163
|
+
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
164
|
+
generatingSummary = _React$useState4[0],
|
|
165
|
+
setGeneratingSummary = _React$useState4[1];
|
|
166
|
+
|
|
167
|
+
_react["default"].useEffect(function () {
|
|
168
|
+
if (config.disable) {
|
|
169
|
+
setSummary('');
|
|
170
|
+
setGeneratingSummary(false);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (config.override) {
|
|
175
|
+
setSummary(config.override);
|
|
176
|
+
setGeneratingSummary(false);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
setTimeout(function () {
|
|
181
|
+
setSummary((0, _summarize.summarize)(providedData, hints, config, locale));
|
|
182
|
+
setGeneratingSummary(false);
|
|
183
|
+
}, 0);
|
|
184
|
+
}, [providedData, hints, config, locale]);
|
|
185
|
+
|
|
186
|
+
var handleSkip = _react["default"].useCallback(function () {
|
|
187
|
+
var _heavyFindNextFocusab;
|
|
188
|
+
|
|
189
|
+
if (!plotRef.current) return;
|
|
190
|
+
(_heavyFindNextFocusab = (0, _focus.heavyFindNextFocusableElement)(plotRef.current)) === null || _heavyFindNextFocusab === void 0 ? void 0 : _heavyFindNextFocusab.focus();
|
|
191
|
+
}, []);
|
|
192
|
+
|
|
193
|
+
var handleSkipKeyboard = _react["default"].useCallback(function (event) {
|
|
194
|
+
if (event.code !== 'Enter') return;
|
|
195
|
+
handleSkip();
|
|
196
|
+
}, [handleSkip]);
|
|
197
|
+
|
|
198
|
+
var handleGoToTable = _react["default"].useCallback(function () {
|
|
199
|
+
var _dataTableRef$current;
|
|
200
|
+
|
|
201
|
+
(_dataTableRef$current = dataTableRef.current) === null || _dataTableRef$current === void 0 ? void 0 : _dataTableRef$current.focus();
|
|
202
|
+
}, []);
|
|
203
|
+
|
|
204
|
+
var handleGoToTableKeyboard = _react["default"].useCallback(function (event) {
|
|
205
|
+
if (event.code !== 'Enter') return;
|
|
206
|
+
handleGoToTable();
|
|
207
|
+
}, [handleGoToTable]);
|
|
208
|
+
|
|
209
|
+
var texts = _react["default"].useMemo(function () {
|
|
210
|
+
return {
|
|
211
|
+
label: intl.formatMessage({
|
|
212
|
+
id: 'view-label'
|
|
213
|
+
}, {
|
|
214
|
+
plotLabel: plotLabel !== null && plotLabel !== void 0 ? plotLabel : intl.formatMessage({
|
|
215
|
+
id: 'view-default-plot-label'
|
|
216
|
+
})
|
|
217
|
+
}),
|
|
218
|
+
close: intl.formatMessage({
|
|
219
|
+
id: 'view-close'
|
|
220
|
+
}),
|
|
221
|
+
skipPlot: intl.formatMessage({
|
|
222
|
+
id: 'view-skip-plot'
|
|
223
|
+
}),
|
|
224
|
+
goToTable: intl.formatMessage({
|
|
225
|
+
id: 'view-go-to-table'
|
|
226
|
+
}),
|
|
227
|
+
summary: intl.formatMessage({
|
|
228
|
+
id: 'view-data-summary'
|
|
229
|
+
}),
|
|
230
|
+
summaryPlaceholder: intl.formatMessage({
|
|
231
|
+
id: 'view-summary-placeholder'
|
|
232
|
+
}),
|
|
233
|
+
table: intl.formatMessage({
|
|
234
|
+
id: 'view-table'
|
|
235
|
+
})
|
|
236
|
+
};
|
|
237
|
+
}, [intl, plotLabel]);
|
|
238
|
+
|
|
239
|
+
var dataTableRef = _react["default"].useRef(null);
|
|
240
|
+
|
|
241
|
+
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPlotA11yView, _ref2.cn("SPlotA11yView", _objectSpread({}, (0, _core.assignProps)({
|
|
242
|
+
"tabIndex": 0,
|
|
243
|
+
"aria-label": texts.label
|
|
244
|
+
}, _ref))), /*#__PURE__*/_react["default"].createElement("a", _ref2.cn("a", {
|
|
245
|
+
"aria-hidden": true,
|
|
246
|
+
"onClick": handleSkip
|
|
247
|
+
}), texts.close), /*#__PURE__*/_react["default"].createElement("a", _ref2.cn("a", {
|
|
248
|
+
"role": "link",
|
|
249
|
+
"tabIndex": 0,
|
|
250
|
+
"onKeyDown": handleSkipKeyboard,
|
|
251
|
+
"onClick": handleSkip
|
|
252
|
+
}), texts.skipPlot), /*#__PURE__*/_react["default"].createElement("a", _ref2.cn("a", {
|
|
253
|
+
"role": "link",
|
|
254
|
+
"tabIndex": 0,
|
|
255
|
+
"onKeyDown": handleGoToTableKeyboard,
|
|
256
|
+
"onClick": handleGoToTable
|
|
257
|
+
}), texts.goToTable), /*#__PURE__*/_react["default"].createElement("strong", _ref2.cn("strong", {}), /*#__PURE__*/_react["default"].createElement("label", _ref2.cn("label", {
|
|
258
|
+
"htmlFor": "".concat(id, "-data-summary")
|
|
259
|
+
}), texts.summary)), /*#__PURE__*/_react["default"].createElement("div", _ref2.cn("div", {
|
|
260
|
+
"id": "".concat(id, "-data-summary"),
|
|
261
|
+
"aria-busy": generatingSummary,
|
|
262
|
+
"tabIndex": 0
|
|
263
|
+
}), generatingSummary ? texts.summaryPlaceholder : summary), /*#__PURE__*/_react["default"].createElement("strong", _ref2.cn("strong", {}), /*#__PURE__*/_react["default"].createElement("label", _ref2.cn("label", {
|
|
264
|
+
"htmlFor": "".concat(id, "-data-table")
|
|
265
|
+
}), texts.table)), /*#__PURE__*/_react["default"].createElement("table", _ref2.cn("table", {
|
|
266
|
+
"id": "".concat(id, "-data-table"),
|
|
267
|
+
"tabIndex": 0,
|
|
268
|
+
"ref": dataTableRef
|
|
269
|
+
}), /*#__PURE__*/_react["default"].createElement("thead", _ref2.cn("thead", {}), /*#__PURE__*/_react["default"].createElement("tr", _ref2.cn("tr", {}), keys.map(function (key, index) {
|
|
270
|
+
return /*#__PURE__*/_react["default"].createElement("th", {
|
|
271
|
+
key: "".concat(key, "-").concat(index)
|
|
272
|
+
}, renderTitle(key));
|
|
273
|
+
}))), /*#__PURE__*/_react["default"].createElement("tbody", _ref2.cn("tbody", {}), data.map(function (row, index) {
|
|
274
|
+
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
275
|
+
key: Object.values(row).join('-') + '-' + index
|
|
276
|
+
}, keys.map(function (key, index) {
|
|
277
|
+
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
278
|
+
key: "".concat(key, "-").concat(index)
|
|
279
|
+
}, (0, _serialize.formatValue)(intl, row[key]));
|
|
280
|
+
}));
|
|
281
|
+
}))));
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
exports.PlotA11yView = PlotA11yView;
|
|
285
|
+
//# sourceMappingURL=PlotA11yView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlotA11yView.js","names":["PlotA11yView","id","providedData","data","hints","plotLabel","plotRef","providedConfig","config","locale","SPlotA11yView","intl","React","useMemo","getIntl","makeDataSummarizationConfig","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","summarize","handleSkip","current","heavyFindNextFocusableElement","focus","handleSkipKeyboard","event","code","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","useRef","sstyled","styles","index","join","formatValue"],"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":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeBezier = void 0;
|
|
7
|
+
|
|
8
|
+
var makeBezier = function makeBezier(points, bounds) {
|
|
9
|
+
var yPoints = points.map(function (point) {
|
|
10
|
+
return point.y;
|
|
11
|
+
});
|
|
12
|
+
var noPoints = points.map(function () {
|
|
13
|
+
return 1;
|
|
14
|
+
});
|
|
15
|
+
var weightPoints = points.map(function (point) {
|
|
16
|
+
var _point$weight;
|
|
17
|
+
|
|
18
|
+
return (_point$weight = point.weight) !== null && _point$weight !== void 0 ? _point$weight : 1;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
var process = function process(t, points) {
|
|
22
|
+
var result = 0;
|
|
23
|
+
|
|
24
|
+
for (var i = 0; i < points.length; i++) {
|
|
25
|
+
var tPower = i;
|
|
26
|
+
var reversedTPower = points.length - 1 - i;
|
|
27
|
+
var edge = i === 0 || i === points.length - 1;
|
|
28
|
+
var factor = edge ? 1 : points.length - 1;
|
|
29
|
+
var point = points[i];
|
|
30
|
+
var weight = weightPoints[i];
|
|
31
|
+
result += factor * Math.pow(t, tPower) * Math.pow(1 - t, reversedTPower) * point * weight;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return function (x) {
|
|
38
|
+
var t = x / bounds.width;
|
|
39
|
+
return process(t, yPoints) / process(t, noPoints);
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.makeBezier = makeBezier;
|
|
44
|
+
//# 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":";;;;;;;AAAO,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"}
|