@pie-lib/charting 6.1.0-next.0 → 6.1.0-next.4

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 (82) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/package.json +7 -7
  3. package/lib/__tests__/axes.test.js +0 -129
  4. package/lib/__tests__/chart-setup.test.js +0 -57
  5. package/lib/__tests__/chart-type.test.js +0 -25
  6. package/lib/__tests__/chart.test.js +0 -103
  7. package/lib/__tests__/grid.test.js +0 -39
  8. package/lib/__tests__/mark-label.test.js +0 -46
  9. package/lib/__tests__/utils.js +0 -56
  10. package/lib/__tests__/utils.test.js +0 -186
  11. package/lib/actions-button.js +0 -145
  12. package/lib/actions-button.js.map +0 -1
  13. package/lib/axes.js +0 -586
  14. package/lib/axes.js.map +0 -1
  15. package/lib/bars/__tests__/bar.test.js +0 -53
  16. package/lib/bars/__tests__/histogram.test.js +0 -53
  17. package/lib/bars/__tests__/utils.js +0 -50
  18. package/lib/bars/bar.js +0 -58
  19. package/lib/bars/bar.js.map +0 -1
  20. package/lib/bars/common/__tests__/bars.test.js +0 -76
  21. package/lib/bars/common/__tests__/utils.js +0 -50
  22. package/lib/bars/common/bars.js +0 -277
  23. package/lib/bars/common/bars.js.map +0 -1
  24. package/lib/bars/common/correct-check-icon.js +0 -54
  25. package/lib/bars/common/correct-check-icon.js.map +0 -1
  26. package/lib/bars/histogram.js +0 -59
  27. package/lib/bars/histogram.js.map +0 -1
  28. package/lib/chart-setup.js +0 -382
  29. package/lib/chart-setup.js.map +0 -1
  30. package/lib/chart-type.js +0 -80
  31. package/lib/chart-type.js.map +0 -1
  32. package/lib/chart-types.js +0 -22
  33. package/lib/chart-types.js.map +0 -1
  34. package/lib/chart.js +0 -384
  35. package/lib/chart.js.map +0 -1
  36. package/lib/common/__tests__/drag-handle.test.js +0 -74
  37. package/lib/common/__tests__/utils.js +0 -50
  38. package/lib/common/correctness-indicators.js +0 -156
  39. package/lib/common/correctness-indicators.js.map +0 -1
  40. package/lib/common/drag-handle.js +0 -160
  41. package/lib/common/drag-handle.js.map +0 -1
  42. package/lib/common/drag-icon.js +0 -52
  43. package/lib/common/drag-icon.js.map +0 -1
  44. package/lib/common/styles.js +0 -22
  45. package/lib/common/styles.js.map +0 -1
  46. package/lib/grid.js +0 -101
  47. package/lib/grid.js.map +0 -1
  48. package/lib/index.js +0 -42
  49. package/lib/index.js.map +0 -1
  50. package/lib/key-legend.js +0 -87
  51. package/lib/key-legend.js.map +0 -1
  52. package/lib/line/__tests__/line-cross.test.js +0 -47
  53. package/lib/line/__tests__/line-dot.test.js +0 -47
  54. package/lib/line/__tests__/utils.js +0 -56
  55. package/lib/line/common/__tests__/drag-handle.test.js +0 -74
  56. package/lib/line/common/__tests__/line.test.js +0 -92
  57. package/lib/line/common/__tests__/utils.js +0 -50
  58. package/lib/line/common/drag-handle.js +0 -146
  59. package/lib/line/common/drag-handle.js.map +0 -1
  60. package/lib/line/common/line.js +0 -214
  61. package/lib/line/common/line.js.map +0 -1
  62. package/lib/line/line-cross.js +0 -214
  63. package/lib/line/line-cross.js.map +0 -1
  64. package/lib/line/line-dot.js +0 -158
  65. package/lib/line/line-dot.js.map +0 -1
  66. package/lib/mark-label.js +0 -236
  67. package/lib/mark-label.js.map +0 -1
  68. package/lib/plot/__tests__/dot.test.js +0 -53
  69. package/lib/plot/__tests__/line.test.js +0 -53
  70. package/lib/plot/__tests__/utils.js +0 -50
  71. package/lib/plot/common/__tests__/plot.test.js +0 -79
  72. package/lib/plot/common/__tests__/utils.js +0 -50
  73. package/lib/plot/common/plot.js +0 -349
  74. package/lib/plot/common/plot.js.map +0 -1
  75. package/lib/plot/dot.js +0 -110
  76. package/lib/plot/dot.js.map +0 -1
  77. package/lib/plot/line.js +0 -140
  78. package/lib/plot/line.js.map +0 -1
  79. package/lib/tool-menu.js +0 -106
  80. package/lib/tool-menu.js.map +0 -1
  81. package/lib/utils.js +0 -189
  82. package/lib/utils.js.map +0 -1
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.scaleMock = exports.graphProps = void 0;
7
- var scaleMock = exports.scaleMock = function scaleMock() {
8
- var fn = jest.fn(function (n) {
9
- return n;
10
- });
11
- fn.invert = jest.fn(function (n) {
12
- return n;
13
- });
14
- return fn;
15
- };
16
- var graphProps = exports.graphProps = function graphProps() {
17
- var dmin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
18
- var dmax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
19
- var rmin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
20
- var rmax = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
21
- return {
22
- scale: {
23
- x: scaleMock(),
24
- y: scaleMock()
25
- },
26
- snap: {
27
- x: jest.fn(function (n) {
28
- return n;
29
- }),
30
- y: jest.fn(function (n) {
31
- return n;
32
- })
33
- },
34
- domain: {
35
- min: dmin,
36
- max: dmax,
37
- step: 1
38
- },
39
- range: {
40
- min: rmin,
41
- max: rmax,
42
- step: 1
43
- },
44
- size: {
45
- width: 400,
46
- height: 400
47
- }
48
- };
49
- };
50
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY2FsZU1vY2siLCJleHBvcnRzIiwiZm4iLCJqZXN0IiwibiIsImludmVydCIsImdyYXBoUHJvcHMiLCJkbWluIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZG1heCIsInJtaW4iLCJybWF4Iiwic2NhbGUiLCJ4IiwieSIsInNuYXAiLCJkb21haW4iLCJtaW4iLCJtYXgiLCJzdGVwIiwicmFuZ2UiLCJzaXplIiwid2lkdGgiLCJoZWlnaHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxvdC9jb21tb24vX190ZXN0c19fL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzY2FsZU1vY2sgPSAoKSA9PiB7XG4gIGNvbnN0IGZuID0gamVzdC5mbigobikgPT4gbik7XG4gIGZuLmludmVydCA9IGplc3QuZm4oKG4pID0+IG4pO1xuICByZXR1cm4gZm47XG59O1xuXG5leHBvcnQgY29uc3QgZ3JhcGhQcm9wcyA9IChkbWluID0gMCwgZG1heCA9IDEsIHJtaW4gPSAwLCBybWF4ID0gMSkgPT4gKHtcbiAgc2NhbGU6IHtcbiAgICB4OiBzY2FsZU1vY2soKSxcbiAgICB5OiBzY2FsZU1vY2soKSxcbiAgfSxcbiAgc25hcDoge1xuICAgIHg6IGplc3QuZm4oKG4pID0+IG4pLFxuICAgIHk6IGplc3QuZm4oKG4pID0+IG4pLFxuICB9LFxuICBkb21haW46IHtcbiAgICBtaW46IGRtaW4sXG4gICAgbWF4OiBkbWF4LFxuICAgIHN0ZXA6IDEsXG4gIH0sXG4gIHJhbmdlOiB7XG4gICAgbWluOiBybWluLFxuICAgIG1heDogcm1heCxcbiAgICBzdGVwOiAxLFxuICB9LFxuICBzaXplOiB7XG4gICAgd2lkdGg6IDQwMCxcbiAgICBoZWlnaHQ6IDQwMCxcbiAgfSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxJQUFNQSxTQUFTLEdBQUFDLE9BQUEsQ0FBQUQsU0FBQSxHQUFHLFNBQVpBLFNBQVNBLENBQUEsRUFBUztFQUM3QixJQUFNRSxFQUFFLEdBQUdDLElBQUksQ0FBQ0QsRUFBRSxDQUFDLFVBQUNFLENBQUM7SUFBQSxPQUFLQSxDQUFDO0VBQUEsRUFBQztFQUM1QkYsRUFBRSxDQUFDRyxNQUFNLEdBQUdGLElBQUksQ0FBQ0QsRUFBRSxDQUFDLFVBQUNFLENBQUM7SUFBQSxPQUFLQSxDQUFDO0VBQUEsRUFBQztFQUM3QixPQUFPRixFQUFFO0FBQ1gsQ0FBQztBQUVNLElBQU1JLFVBQVUsR0FBQUwsT0FBQSxDQUFBSyxVQUFBLEdBQUcsU0FBYkEsVUFBVUEsQ0FBQTtFQUFBLElBQUlDLElBQUksR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUFBLElBQUVHLElBQUksR0FBQUgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUFBLElBQUVJLElBQUksR0FBQUosU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUFBLElBQUVLLElBQUksR0FBQUwsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUFBLE9BQU07SUFDckVNLEtBQUssRUFBRTtNQUNMQyxDQUFDLEVBQUVmLFNBQVMsQ0FBQyxDQUFDO01BQ2RnQixDQUFDLEVBQUVoQixTQUFTLENBQUM7SUFDZixDQUFDO0lBQ0RpQixJQUFJLEVBQUU7TUFDSkYsQ0FBQyxFQUFFWixJQUFJLENBQUNELEVBQUUsQ0FBQyxVQUFDRSxDQUFDO1FBQUEsT0FBS0EsQ0FBQztNQUFBLEVBQUM7TUFDcEJZLENBQUMsRUFBRWIsSUFBSSxDQUFDRCxFQUFFLENBQUMsVUFBQ0UsQ0FBQztRQUFBLE9BQUtBLENBQUM7TUFBQTtJQUNyQixDQUFDO0lBQ0RjLE1BQU0sRUFBRTtNQUNOQyxHQUFHLEVBQUVaLElBQUk7TUFDVGEsR0FBRyxFQUFFVCxJQUFJO01BQ1RVLElBQUksRUFBRTtJQUNSLENBQUM7SUFDREMsS0FBSyxFQUFFO01BQ0xILEdBQUcsRUFBRVAsSUFBSTtNQUNUUSxHQUFHLEVBQUVQLElBQUk7TUFDVFEsSUFBSSxFQUFFO0lBQ1IsQ0FBQztJQUNERSxJQUFJLEVBQUU7TUFDSkMsS0FBSyxFQUFFLEdBQUc7TUFDVkMsTUFBTSxFQUFFO0lBQ1Y7RUFDRixDQUFDO0FBQUEsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,349 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.RawPlot = exports.Plot = void 0;
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
- var _react = _interopRequireDefault(require("react"));
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
17
- var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
18
- var _styles = require("@mui/material/styles");
19
- var _group = require("@visx/group");
20
- var _debug = _interopRequireDefault(require("debug"));
21
- var _plot = require("@pie-lib/plot");
22
- var _dragHandle = _interopRequireWildcard(require("../../common/drag-handle"));
23
- var _renderUi = require("@pie-lib/render-ui");
24
- var _utils = require("../../utils");
25
- var _styles2 = require("../../common/styles");
26
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
27
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
28
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
29
- var log = (0, _debug["default"])('pie-lib:chart:bars');
30
- var ICON_SIZE = 16; // 10px icon + 2px padding on all sides + 1px border
31
- var RawPlot = exports.RawPlot = /*#__PURE__*/function (_React$Component) {
32
- function RawPlot(props) {
33
- var _this;
34
- (0, _classCallCheck2["default"])(this, RawPlot);
35
- _this = _callSuper(this, RawPlot, [props]);
36
- (0, _defineProperty2["default"])(_this, "handleMouseEnter", function () {
37
- _this.setState({
38
- isHovered: true
39
- });
40
- });
41
- (0, _defineProperty2["default"])(_this, "handleMouseLeave", function () {
42
- _this.setState({
43
- isHovered: false
44
- });
45
- });
46
- (0, _defineProperty2["default"])(_this, "setDragValue", function (dragValue) {
47
- return _this.setState({
48
- dragValue: dragValue
49
- });
50
- });
51
- (0, _defineProperty2["default"])(_this, "dragStop", function () {
52
- var _this$props = _this.props,
53
- label = _this$props.label,
54
- onChangeCategory = _this$props.onChangeCategory;
55
- var dragValue = _this.state.dragValue;
56
- log('[dragStop]', dragValue);
57
- if (dragValue !== undefined) {
58
- onChangeCategory({
59
- label: label,
60
- value: dragValue
61
- });
62
- }
63
- _this.setDragValue(undefined);
64
- });
65
- (0, _defineProperty2["default"])(_this, "dragValue", function (existing, next) {
66
- log('[dragValue] next:', next);
67
- _this.setDragValue(next);
68
- });
69
- (0, _defineProperty2["default"])(_this, "renderCorrectnessIcon", function (barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter) {
70
- var iconY;
71
- if (correctVal === 0) {
72
- // if correct value is 0, position icon on the horizontal axis
73
- iconY = scale.y(0) - ICON_SIZE / 2;
74
- } else {
75
- var shapeIndex = correctVal - 1; // the index of the shape representing the correct value
76
- var shapeCenterY = scale.y(shapeIndex) - (pointHeight - pointDiameter) / 2 - pointDiameter / 2;
77
- iconY = shapeCenterY - ICON_SIZE / 2; // center the icon
78
- }
79
- return /*#__PURE__*/_react["default"].createElement("foreignObject", {
80
- x: barX + barWidth / 2 - ICON_SIZE / 2,
81
- y: iconY,
82
- width: ICON_SIZE,
83
- height: ICON_SIZE
84
- }, /*#__PURE__*/_react["default"].createElement(_Check["default"], {
85
- className: "correctnessIcon correctIcon smallIcon",
86
- title: correctness.label
87
- }));
88
- });
89
- _this.state = {
90
- dragValue: undefined,
91
- isHovered: false
92
- };
93
- return _this;
94
- }
95
- (0, _inherits2["default"])(RawPlot, _React$Component);
96
- return (0, _createClass2["default"])(RawPlot, [{
97
- key: "render",
98
- value: function render() {
99
- var _this2 = this;
100
- var _this$props2 = this.props,
101
- graphProps = _this$props2.graphProps,
102
- value = _this$props2.value,
103
- label = _this$props2.label,
104
- xBand = _this$props2.xBand,
105
- index = _this$props2.index,
106
- CustomBarElement = _this$props2.CustomBarElement,
107
- interactive = _this$props2.interactive,
108
- correctness = _this$props2.correctness,
109
- defineChart = _this$props2.defineChart,
110
- correctData = _this$props2.correctData,
111
- className = _this$props2.className;
112
- var scale = graphProps.scale,
113
- range = graphProps.range,
114
- size = graphProps.size;
115
- var _ref = range || {},
116
- max = _ref.max;
117
- var _this$state = this.state,
118
- dragValue = _this$state.dragValue,
119
- isHovered = _this$state.isHovered;
120
- var v = Number.isFinite(dragValue) ? dragValue : value;
121
- var barWidth = xBand.bandwidth();
122
- var barHeight = scale.y(range.max - v);
123
- var barX = xBand((0, _utils.bandKey)({
124
- label: label
125
- }, index));
126
- log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);
127
- var values = [];
128
- for (var i = 0; i < v; i++) {
129
- values.push(i);
130
- }
131
- var pointHeight = size.height / max;
132
- var pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;
133
- var Component = interactive ? _dragHandle["default"] : _dragHandle.DragHandle;
134
- var allowRolloverEvent = interactive && !correctness;
135
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("g", {
136
- className: className,
137
- onMouseEnter: this.handleMouseEnter,
138
- onMouseLeave: this.handleMouseLeave,
139
- onTouchStart: this.handleMouseEnter,
140
- onTouchEnd: this.handleMouseLeave
141
- }, isHovered && allowRolloverEvent && /*#__PURE__*/_react["default"].createElement("rect", {
142
- x: barX,
143
- y: scale.y(v),
144
- width: barWidth,
145
- height: values !== null && values !== void 0 && values.length ? pointHeight * values.length : 0,
146
- stroke: _renderUi.color.defaults.BORDER_GRAY,
147
- strokeWidth: '4px',
148
- fill: 'transparent'
149
- }), values.map(function (index) {
150
- return CustomBarElement({
151
- index: index,
152
- pointDiameter: pointDiameter,
153
- barX: barX,
154
- barWidth: barWidth,
155
- pointHeight: pointHeight,
156
- label: label,
157
- value: value,
158
- scale: scale
159
- });
160
- }), correctness && correctness.value === 'incorrect' && function () {
161
- var correctVal = parseFloat(correctData[index] && correctData[index].value);
162
- if (isNaN(correctVal)) return null;
163
- var selectedVal = v;
164
-
165
- // special case: if correct value is 0, only show the icon on the axis
166
- if (correctVal === 0) {
167
- return _this2.renderCorrectnessIcon(barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter);
168
- }
169
- if (selectedVal > correctVal) {
170
- // selected is higher than correct: overlay the correct last segment
171
- var overlayValues = [];
172
- for (var _i = 0; _i < correctVal; _i++) {
173
- overlayValues.push(_i);
174
- }
175
- var lastIndexOfOverlay = overlayValues.length - 1;
176
- var lastOverlayValue = overlayValues[lastIndexOfOverlay];
177
- var _barX = xBand((0, _utils.bandKey)({
178
- label: label
179
- }, index));
180
- var _barWidth = xBand.bandwidth();
181
- var _pointHeight = size.height / max;
182
- var _pointDiameter = (_pointHeight > _barWidth ? _barWidth : _pointHeight) * 0.8;
183
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(CustomBarElement, {
184
- index: lastOverlayValue,
185
- pointDiameter: _pointDiameter + 10 // increase point diameter for dotted line
186
- ,
187
- barX: _barX,
188
- barWidth: _barWidth,
189
- pointHeight: _pointHeight,
190
- label: label,
191
- value: value,
192
- scale: scale,
193
- dottedOverline: true
194
- }), _this2.renderCorrectnessIcon(_barX, _barWidth, correctVal, correctness, scale, _pointHeight, _pointDiameter));
195
- }
196
- // selected is lower than correct, render missing segment below the correct bar
197
- var valuesToRender = [];
198
- for (var _i2 = selectedVal; _i2 < correctVal; _i2++) {
199
- valuesToRender.push(_i2);
200
- }
201
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, valuesToRender.map(function (idx) {
202
- return CustomBarElement({
203
- index: idx,
204
- pointDiameter: pointDiameter,
205
- barX: barX,
206
- barWidth: barWidth,
207
- pointHeight: pointHeight,
208
- label: label,
209
- value: value,
210
- scale: scale,
211
- dottedOverline: true
212
- });
213
- }), _this2.renderCorrectnessIcon(barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter));
214
- }(), /*#__PURE__*/_react["default"].createElement(Component, {
215
- x: barX,
216
- y: v,
217
- interactive: interactive,
218
- width: barWidth,
219
- onDrag: function onDrag(v) {
220
- return _this2.dragValue(value, v);
221
- },
222
- onDragStop: this.dragStop,
223
- graphProps: graphProps,
224
- correctness: correctness,
225
- isHovered: isHovered,
226
- defineChart: defineChart,
227
- color: _renderUi.color.primaryDark(),
228
- isPlot: true
229
- })));
230
- }
231
- }]);
232
- }(_react["default"].Component);
233
- (0, _defineProperty2["default"])(RawPlot, "propTypes", {
234
- onChangeCategory: _propTypes["default"].func,
235
- value: _propTypes["default"].number,
236
- label: _propTypes["default"].string,
237
- xBand: _propTypes["default"].func,
238
- index: _propTypes["default"].number.isRequired,
239
- graphProps: _plot.types.GraphPropsType.isRequired,
240
- CustomBarElement: _propTypes["default"].func,
241
- interactive: _propTypes["default"].bool,
242
- correctness: _propTypes["default"].shape({
243
- value: _propTypes["default"].string,
244
- label: _propTypes["default"].string
245
- }),
246
- defineChart: _propTypes["default"].bool,
247
- correctData: _propTypes["default"].arrayOf(_propTypes["default"].shape({
248
- value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
249
- label: _propTypes["default"].string
250
- })),
251
- className: _propTypes["default"].string
252
- });
253
- var Bar = (0, _styles.styled)(RawPlot)(function (_ref2) {
254
- var theme = _ref2.theme;
255
- return {
256
- '& .dot': {
257
- fill: _renderUi.color.visualElementsColors.PLOT_FILL_COLOR,
258
- '&.correct': (0, _styles2.correct)('stroke'),
259
- '&.incorrect': (0, _styles2.incorrect)('stroke')
260
- },
261
- '& .dotColor': {
262
- fill: _renderUi.color.visualElementsColors.PLOT_FILL_COLOR,
263
- '&.correct': (0, _styles2.correct)('fill'),
264
- '&.incorrect': (0, _styles2.incorrect)('fill')
265
- },
266
- '& .line': {
267
- stroke: _renderUi.color.visualElementsColors.PLOT_FILL_COLOR,
268
- '&.correct': (0, _styles2.correct)('stroke'),
269
- '&.incorrect': (0, _styles2.incorrect)('stroke')
270
- },
271
- '& .correctIcon': {
272
- backgroundColor: _renderUi.color.correct()
273
- },
274
- '& .incorrectIcon': {
275
- backgroundColor: _renderUi.color.incorrectWithIcon()
276
- },
277
- '& .correctnessIcon': {
278
- borderRadius: theme.spacing(2),
279
- color: _renderUi.color.defaults.WHITE,
280
- fontSize: '16px',
281
- width: '16px',
282
- height: '16px',
283
- padding: '2px',
284
- border: "1px solid ".concat(_renderUi.color.defaults.WHITE),
285
- stroke: 'initial',
286
- boxSizing: 'unset',
287
- // to override the default border-box in IBX
288
- display: 'block'
289
- },
290
- '& .smallIcon': {
291
- fontSize: '10px',
292
- width: '10px',
293
- height: '10px'
294
- }
295
- };
296
- });
297
- var Plot = exports.Plot = /*#__PURE__*/function (_React$Component2) {
298
- function Plot() {
299
- (0, _classCallCheck2["default"])(this, Plot);
300
- return _callSuper(this, Plot, arguments);
301
- }
302
- (0, _inherits2["default"])(Plot, _React$Component2);
303
- return (0, _createClass2["default"])(Plot, [{
304
- key: "render",
305
- value: function render() {
306
- var _this$props3 = this.props,
307
- data = _this$props3.data,
308
- graphProps = _this$props3.graphProps,
309
- xBand = _this$props3.xBand,
310
- CustomBarElement = _this$props3.CustomBarElement,
311
- _onChangeCategory = _this$props3.onChangeCategory,
312
- defineChart = _this$props3.defineChart,
313
- correctData = _this$props3.correctData;
314
- return /*#__PURE__*/_react["default"].createElement(_group.Group, null, (data || []).map(function (d, index) {
315
- return /*#__PURE__*/_react["default"].createElement(Bar, {
316
- value: d.value,
317
- label: d.label,
318
- interactive: defineChart || d.interactive,
319
- defineChart: defineChart,
320
- xBand: xBand,
321
- index: index,
322
- key: "bar-".concat(d.label, "-").concat(d.value, "-").concat(index),
323
- onChangeCategory: function onChangeCategory(category) {
324
- return _onChangeCategory(index, category);
325
- },
326
- graphProps: graphProps,
327
- CustomBarElement: CustomBarElement,
328
- correctness: d.correctness,
329
- correctData: correctData
330
- });
331
- }));
332
- }
333
- }]);
334
- }(_react["default"].Component);
335
- (0, _defineProperty2["default"])(Plot, "propTypes", {
336
- data: _propTypes["default"].array,
337
- onChangeCategory: _propTypes["default"].func,
338
- xBand: _propTypes["default"].func,
339
- graphProps: _plot.types.GraphPropsType.isRequired,
340
- defineChart: _propTypes["default"].bool,
341
- CustomBarElement: _propTypes["default"].func,
342
- correctData: _propTypes["default"].arrayOf(_propTypes["default"].shape({
343
- value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
344
- label: _propTypes["default"].string
345
- })),
346
- className: _propTypes["default"].string
347
- });
348
- var _default = exports["default"] = Plot;
349
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfQ2hlY2siLCJfc3R5bGVzIiwiX2dyb3VwIiwiX2RlYnVnIiwiX3Bsb3QiLCJfZHJhZ0hhbmRsZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3JlbmRlclVpIiwiX3V0aWxzIiwiX3N0eWxlczIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJsb2ciLCJkZWJ1ZyIsIklDT05fU0laRSIsIlJhd1Bsb3QiLCJleHBvcnRzIiwiX1JlYWN0JENvbXBvbmVudCIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsInNldFN0YXRlIiwiaXNIb3ZlcmVkIiwiZHJhZ1ZhbHVlIiwiX3RoaXMkcHJvcHMiLCJsYWJlbCIsIm9uQ2hhbmdlQ2F0ZWdvcnkiLCJzdGF0ZSIsInVuZGVmaW5lZCIsInZhbHVlIiwic2V0RHJhZ1ZhbHVlIiwiZXhpc3RpbmciLCJuZXh0IiwiYmFyWCIsImJhcldpZHRoIiwiY29ycmVjdFZhbCIsImNvcnJlY3RuZXNzIiwic2NhbGUiLCJwb2ludEhlaWdodCIsInBvaW50RGlhbWV0ZXIiLCJpY29uWSIsInkiLCJzaGFwZUluZGV4Iiwic2hhcGVDZW50ZXJZIiwiY3JlYXRlRWxlbWVudCIsIngiLCJ3aWR0aCIsImhlaWdodCIsImNsYXNzTmFtZSIsInRpdGxlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJncmFwaFByb3BzIiwieEJhbmQiLCJpbmRleCIsIkN1c3RvbUJhckVsZW1lbnQiLCJpbnRlcmFjdGl2ZSIsImRlZmluZUNoYXJ0IiwiY29ycmVjdERhdGEiLCJyYW5nZSIsInNpemUiLCJfcmVmIiwibWF4IiwiX3RoaXMkc3RhdGUiLCJ2IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJiYW5kd2lkdGgiLCJiYXJIZWlnaHQiLCJiYW5kS2V5IiwidmFsdWVzIiwicHVzaCIsIkNvbXBvbmVudCIsIkRyYWdnYWJsZUhhbmRsZSIsIkRyYWdIYW5kbGUiLCJhbGxvd1JvbGxvdmVyRXZlbnQiLCJGcmFnbWVudCIsIm9uTW91c2VFbnRlciIsImhhbmRsZU1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJoYW5kbGVNb3VzZUxlYXZlIiwib25Ub3VjaFN0YXJ0Iiwib25Ub3VjaEVuZCIsImxlbmd0aCIsInN0cm9rZSIsImNvbG9yIiwiZGVmYXVsdHMiLCJCT1JERVJfR1JBWSIsInN0cm9rZVdpZHRoIiwiZmlsbCIsIm1hcCIsInBhcnNlRmxvYXQiLCJpc05hTiIsInNlbGVjdGVkVmFsIiwicmVuZGVyQ29ycmVjdG5lc3NJY29uIiwib3ZlcmxheVZhbHVlcyIsImxhc3RJbmRleE9mT3ZlcmxheSIsImxhc3RPdmVybGF5VmFsdWUiLCJkb3R0ZWRPdmVybGluZSIsInZhbHVlc1RvUmVuZGVyIiwiaWR4Iiwib25EcmFnIiwib25EcmFnU3RvcCIsImRyYWdTdG9wIiwicHJpbWFyeURhcmsiLCJpc1Bsb3QiLCJSZWFjdCIsIlByb3BUeXBlcyIsImZ1bmMiLCJudW1iZXIiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwidHlwZXMiLCJHcmFwaFByb3BzVHlwZSIsImJvb2wiLCJzaGFwZSIsImFycmF5T2YiLCJvbmVPZlR5cGUiLCJCYXIiLCJzdHlsZWQiLCJfcmVmMiIsInRoZW1lIiwidmlzdWFsRWxlbWVudHNDb2xvcnMiLCJQTE9UX0ZJTExfQ09MT1IiLCJjb3JyZWN0IiwiaW5jb3JyZWN0IiwiYmFja2dyb3VuZENvbG9yIiwiaW5jb3JyZWN0V2l0aEljb24iLCJib3JkZXJSYWRpdXMiLCJzcGFjaW5nIiwiV0hJVEUiLCJmb250U2l6ZSIsInBhZGRpbmciLCJib3JkZXIiLCJjb25jYXQiLCJib3hTaXppbmciLCJkaXNwbGF5IiwiUGxvdCIsIl9SZWFjdCRDb21wb25lbnQyIiwiYXJndW1lbnRzIiwiX3RoaXMkcHJvcHMzIiwiZGF0YSIsIkdyb3VwIiwiZCIsImNhdGVnb3J5IiwiYXJyYXkiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbG90L2NvbW1vbi9wbG90LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBDaGVjayBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrJztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAnQHZpc3gvZ3JvdXAnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdAcGllLWxpYi9wbG90JztcbmltcG9ydCBEcmFnZ2FibGVIYW5kbGUsIHsgRHJhZ0hhbmRsZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9kcmFnLWhhbmRsZSc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyBiYW5kS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY29ycmVjdCwgaW5jb3JyZWN0IH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlcyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtbGliOmNoYXJ0OmJhcnMnKTtcbmNvbnN0IElDT05fU0laRSA9IDE2OyAvLyAxMHB4IGljb24gKyAycHggcGFkZGluZyBvbiBhbGwgc2lkZXMgKyAxcHggYm9yZGVyXG5cbmV4cG9ydCBjbGFzcyBSYXdQbG90IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkNoYW5nZUNhdGVnb3J5OiBQcm9wVHlwZXMuZnVuYyxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB4QmFuZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBncmFwaFByb3BzOiB0eXBlcy5HcmFwaFByb3BzVHlwZS5pc1JlcXVpcmVkLFxuICAgIEN1c3RvbUJhckVsZW1lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGludGVyYWN0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb3JyZWN0bmVzczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSksXG4gICAgZGVmaW5lQ2hhcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNvcnJlY3REYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pKSxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRyYWdWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgaXNIb3ZlcmVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlTW91c2VFbnRlciA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgaXNIb3ZlcmVkOiB0cnVlIH0pO1xuICB9O1xuXG4gIGhhbmRsZU1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGlzSG92ZXJlZDogZmFsc2UgfSk7XG4gIH07XG5cbiAgc2V0RHJhZ1ZhbHVlID0gKGRyYWdWYWx1ZSkgPT4gdGhpcy5zZXRTdGF0ZSh7IGRyYWdWYWx1ZSB9KTtcblxuICBkcmFnU3RvcCA9ICgpID0+IHtcbiAgICBjb25zdCB7IGxhYmVsLCBvbkNoYW5nZUNhdGVnb3J5IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgZHJhZ1ZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGxvZygnW2RyYWdTdG9wXScsIGRyYWdWYWx1ZSk7XG5cbiAgICBpZiAoZHJhZ1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9uQ2hhbmdlQ2F0ZWdvcnkoeyBsYWJlbCwgdmFsdWU6IGRyYWdWYWx1ZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldERyYWdWYWx1ZSh1bmRlZmluZWQpO1xuICB9O1xuXG4gIGRyYWdWYWx1ZSA9IChleGlzdGluZywgbmV4dCkgPT4ge1xuICAgIGxvZygnW2RyYWdWYWx1ZV0gbmV4dDonLCBuZXh0KTtcblxuICAgIHRoaXMuc2V0RHJhZ1ZhbHVlKG5leHQpO1xuICB9O1xuXG4gIHJlbmRlckNvcnJlY3RuZXNzSWNvbiA9IChiYXJYLCBiYXJXaWR0aCwgY29ycmVjdFZhbCwgY29ycmVjdG5lc3MsIHNjYWxlLCBwb2ludEhlaWdodCwgcG9pbnREaWFtZXRlcikgPT4ge1xuICAgIGxldCBpY29uWTtcblxuICAgIGlmIChjb3JyZWN0VmFsID09PSAwKSB7XG4gICAgICAvLyBpZiBjb3JyZWN0IHZhbHVlIGlzIDAsIHBvc2l0aW9uIGljb24gb24gdGhlIGhvcml6b250YWwgYXhpc1xuICAgICAgaWNvblkgPSBzY2FsZS55KDApIC0gSUNPTl9TSVpFIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2hhcGVJbmRleCA9IGNvcnJlY3RWYWwgLSAxOyAvLyB0aGUgaW5kZXggb2YgdGhlIHNoYXBlIHJlcHJlc2VudGluZyB0aGUgY29ycmVjdCB2YWx1ZVxuICAgICAgY29uc3Qgc2hhcGVDZW50ZXJZID0gc2NhbGUueShzaGFwZUluZGV4KSAtIChwb2ludEhlaWdodCAtIHBvaW50RGlhbWV0ZXIpIC8gMiAtIHBvaW50RGlhbWV0ZXIgLyAyO1xuICAgICAgaWNvblkgPSBzaGFwZUNlbnRlclkgLSBJQ09OX1NJWkUgLyAyOyAvLyBjZW50ZXIgdGhlIGljb25cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGZvcmVpZ25PYmplY3QgeD17YmFyWCArIGJhcldpZHRoIC8gMiAtIElDT05fU0laRSAvIDJ9IHk9e2ljb25ZfSB3aWR0aD17SUNPTl9TSVpFfSBoZWlnaHQ9e0lDT05fU0laRX0+XG4gICAgICAgIDxDaGVja1xuICAgICAgICAgIGNsYXNzTmFtZT1cImNvcnJlY3RuZXNzSWNvbiBjb3JyZWN0SWNvbiBzbWFsbEljb25cIlxuICAgICAgICAgIHRpdGxlPXtjb3JyZWN0bmVzcy5sYWJlbH1cbiAgICAgICAgLz5cbiAgICAgIDwvZm9yZWlnbk9iamVjdD5cbiAgICApO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBncmFwaFByb3BzLFxuICAgICAgdmFsdWUsXG4gICAgICBsYWJlbCxcbiAgICAgIHhCYW5kLFxuICAgICAgaW5kZXgsXG4gICAgICBDdXN0b21CYXJFbGVtZW50LFxuICAgICAgaW50ZXJhY3RpdmUsXG4gICAgICBjb3JyZWN0bmVzcyxcbiAgICAgIGRlZmluZUNoYXJ0LFxuICAgICAgY29ycmVjdERhdGEsXG4gICAgICBjbGFzc05hbWVcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHsgc2NhbGUsIHJhbmdlLCBzaXplIH0gPSBncmFwaFByb3BzO1xuICAgIGNvbnN0IHsgbWF4IH0gPSByYW5nZSB8fCB7fTtcbiAgICBjb25zdCB7IGRyYWdWYWx1ZSwgaXNIb3ZlcmVkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgdiA9IE51bWJlci5pc0Zpbml0ZShkcmFnVmFsdWUpID8gZHJhZ1ZhbHVlIDogdmFsdWU7XG4gICAgY29uc3QgYmFyV2lkdGggPSB4QmFuZC5iYW5kd2lkdGgoKTtcbiAgICBjb25zdCBiYXJIZWlnaHQgPSBzY2FsZS55KHJhbmdlLm1heCAtIHYpO1xuICAgIGNvbnN0IGJhclggPSB4QmFuZChiYW5kS2V5KHsgbGFiZWwgfSwgaW5kZXgpKTtcblxuICAgIGxvZygnbGFiZWw6JywgbGFiZWwsICdiYXJYOicsIGJhclgsICd2OiAnLCB2LCAnYmFySGVpZ2h0OicsIGJhckhlaWdodCwgJ2JhcldpZHRoOiAnLCBiYXJXaWR0aCk7XG5cbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjsgaSsrKSB7XG4gICAgICB2YWx1ZXMucHVzaChpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludEhlaWdodCA9IHNpemUuaGVpZ2h0IC8gbWF4O1xuICAgIGNvbnN0IHBvaW50RGlhbWV0ZXIgPSAocG9pbnRIZWlnaHQgPiBiYXJXaWR0aCA/IGJhcldpZHRoIDogcG9pbnRIZWlnaHQpICogMC44O1xuICAgIGNvbnN0IENvbXBvbmVudCA9IGludGVyYWN0aXZlID8gRHJhZ2dhYmxlSGFuZGxlIDogRHJhZ0hhbmRsZTtcbiAgICBjb25zdCBhbGxvd1JvbGxvdmVyRXZlbnQgPSBpbnRlcmFjdGl2ZSAmJiAhY29ycmVjdG5lc3M7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICA8Z1xuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgIG9uTW91c2VFbnRlcj17dGhpcy5oYW5kbGVNb3VzZUVudGVyfVxuICAgICAgICAgIG9uTW91c2VMZWF2ZT17dGhpcy5oYW5kbGVNb3VzZUxlYXZlfVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5oYW5kbGVNb3VzZUVudGVyfVxuICAgICAgICAgIG9uVG91Y2hFbmQ9e3RoaXMuaGFuZGxlTW91c2VMZWF2ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc0hvdmVyZWQgJiYgYWxsb3dSb2xsb3ZlckV2ZW50ICYmIChcbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIHg9e2Jhclh9XG4gICAgICAgICAgICAgIHk9e3NjYWxlLnkodil9XG4gICAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aH1cbiAgICAgICAgICAgICAgaGVpZ2h0PXt2YWx1ZXM/Lmxlbmd0aCA/IHBvaW50SGVpZ2h0ICogdmFsdWVzLmxlbmd0aCA6IDB9XG4gICAgICAgICAgICAgIHN0cm9rZT17Y29sb3IuZGVmYXVsdHMuQk9SREVSX0dSQVl9XG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsnNHB4J31cbiAgICAgICAgICAgICAgZmlsbD17J3RyYW5zcGFyZW50J31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dmFsdWVzLm1hcCgoaW5kZXgpID0+XG4gICAgICAgICAgICBDdXN0b21CYXJFbGVtZW50KHtcbiAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgIHBvaW50RGlhbWV0ZXIsXG4gICAgICAgICAgICAgIGJhclgsXG4gICAgICAgICAgICAgIGJhcldpZHRoLFxuICAgICAgICAgICAgICBwb2ludEhlaWdodCxcbiAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICl9XG4gICAgICAgICAge2NvcnJlY3RuZXNzICYmXG4gICAgICAgICAgICBjb3JyZWN0bmVzcy52YWx1ZSA9PT0gJ2luY29ycmVjdCcgJiZcbiAgICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvcnJlY3RWYWwgPSBwYXJzZUZsb2F0KGNvcnJlY3REYXRhW2luZGV4XSAmJiBjb3JyZWN0RGF0YVtpbmRleF0udmFsdWUpO1xuICAgICAgICAgICAgICBpZiAoaXNOYU4oY29ycmVjdFZhbCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbCA9IHY7XG5cbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBpZiBjb3JyZWN0IHZhbHVlIGlzIDAsIG9ubHkgc2hvdyB0aGUgaWNvbiBvbiB0aGUgYXhpc1xuICAgICAgICAgICAgICBpZiAoY29ycmVjdFZhbCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvcnJlY3RuZXNzSWNvbihcbiAgICAgICAgICAgICAgICAgIGJhclgsXG4gICAgICAgICAgICAgICAgICBiYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgIGNvcnJlY3RWYWwsXG4gICAgICAgICAgICAgICAgICBjb3JyZWN0bmVzcyxcbiAgICAgICAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgICAgICAgcG9pbnRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICBwb2ludERpYW1ldGVyLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRWYWwgPiBjb3JyZWN0VmFsKSB7XG4gICAgICAgICAgICAgICAgLy8gc2VsZWN0ZWQgaXMgaGlnaGVyIHRoYW4gY29ycmVjdDogb3ZlcmxheSB0aGUgY29ycmVjdCBsYXN0IHNlZ21lbnRcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVybGF5VmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3JyZWN0VmFsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIG92ZXJsYXlWYWx1ZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdEluZGV4T2ZPdmVybGF5ID0gb3ZlcmxheVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RPdmVybGF5VmFsdWUgPSBvdmVybGF5VmFsdWVzW2xhc3RJbmRleE9mT3ZlcmxheV07XG4gICAgICAgICAgICAgICAgY29uc3QgYmFyWCA9IHhCYW5kKGJhbmRLZXkoeyBsYWJlbCB9LCBpbmRleCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhcldpZHRoID0geEJhbmQuYmFuZHdpZHRoKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRIZWlnaHQgPSBzaXplLmhlaWdodCAvIG1heDtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludERpYW1ldGVyID0gKHBvaW50SGVpZ2h0ID4gYmFyV2lkdGggPyBiYXJXaWR0aCA6IHBvaW50SGVpZ2h0KSAqIDAuODtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUJhckVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleD17bGFzdE92ZXJsYXlWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBwb2ludERpYW1ldGVyPXtwb2ludERpYW1ldGVyICsgMTB9IC8vIGluY3JlYXNlIHBvaW50IGRpYW1ldGVyIGZvciBkb3R0ZWQgbGluZVxuICAgICAgICAgICAgICAgICAgICAgIGJhclg9e2Jhclh9XG4gICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHBvaW50SGVpZ2h0PXtwb2ludEhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHNjYWxlPXtzY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICBkb3R0ZWRPdmVybGluZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ29ycmVjdG5lc3NJY29uKFxuICAgICAgICAgICAgICAgICAgICAgIGJhclgsXG4gICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgY29ycmVjdFZhbCxcbiAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludERpYW1ldGVyLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBzZWxlY3RlZCBpcyBsb3dlciB0aGFuIGNvcnJlY3QsIHJlbmRlciBtaXNzaW5nIHNlZ21lbnQgYmVsb3cgdGhlIGNvcnJlY3QgYmFyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlc1RvUmVuZGVyID0gW107XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSBzZWxlY3RlZFZhbDsgaSA8IGNvcnJlY3RWYWw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhbHVlc1RvUmVuZGVyLnB1c2goaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge3ZhbHVlc1RvUmVuZGVyLm1hcCgoaWR4KSA9PlxuICAgICAgICAgICAgICAgICAgICBDdXN0b21CYXJFbGVtZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaWR4LFxuICAgICAgICAgICAgICAgICAgICAgIHBvaW50RGlhbWV0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgYmFyWCxcbiAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICBkb3R0ZWRPdmVybGluZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ29ycmVjdG5lc3NJY29uKFxuICAgICAgICAgICAgICAgICAgICBiYXJYLFxuICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgY29ycmVjdFZhbCxcbiAgICAgICAgICAgICAgICAgICAgY29ycmVjdG5lc3MsXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgICAgICAgICBwb2ludEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgcG9pbnREaWFtZXRlcixcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgIDxDb21wb25lbnRcbiAgICAgICAgICAgIHg9e2Jhclh9XG4gICAgICAgICAgICB5PXt2fVxuICAgICAgICAgICAgaW50ZXJhY3RpdmU9e2ludGVyYWN0aXZlfVxuICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgb25EcmFnPXsodikgPT4gdGhpcy5kcmFnVmFsdWUodmFsdWUsIHYpfVxuICAgICAgICAgICAgb25EcmFnU3RvcD17dGhpcy5kcmFnU3RvcH1cbiAgICAgICAgICAgIGdyYXBoUHJvcHM9e2dyYXBoUHJvcHN9XG4gICAgICAgICAgICBjb3JyZWN0bmVzcz17Y29ycmVjdG5lc3N9XG4gICAgICAgICAgICBpc0hvdmVyZWQ9e2lzSG92ZXJlZH1cbiAgICAgICAgICAgIGRlZmluZUNoYXJ0PXtkZWZpbmVDaGFydH1cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvci5wcmltYXJ5RGFyaygpfVxuICAgICAgICAgICAgaXNQbG90XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IEJhciA9IHN0eWxlZChSYXdQbG90KSgoeyB0aGVtZSB9KSA9PiAoe1xuICAnJiAuZG90Jzoge1xuICAgIGZpbGw6IGNvbG9yLnZpc3VhbEVsZW1lbnRzQ29sb3JzLlBMT1RfRklMTF9DT0xPUixcbiAgICAnJi5jb3JyZWN0JzogY29ycmVjdCgnc3Ryb2tlJyksXG4gICAgJyYuaW5jb3JyZWN0JzogaW5jb3JyZWN0KCdzdHJva2UnKSxcbiAgfSxcbiAgJyYgLmRvdENvbG9yJzoge1xuICAgIGZpbGw6IGNvbG9yLnZpc3VhbEVsZW1lbnRzQ29sb3JzLlBMT1RfRklMTF9DT0xPUixcbiAgICAnJi5jb3JyZWN0JzogY29ycmVjdCgnZmlsbCcpLFxuICAgICcmLmluY29ycmVjdCc6IGluY29ycmVjdCgnZmlsbCcpLFxuICB9LFxuICAnJiAubGluZSc6IHtcbiAgICBzdHJva2U6IGNvbG9yLnZpc3VhbEVsZW1lbnRzQ29sb3JzLlBMT1RfRklMTF9DT0xPUixcbiAgICAnJi5jb3JyZWN0JzogY29ycmVjdCgnc3Ryb2tlJyksXG4gICAgJyYuaW5jb3JyZWN0JzogaW5jb3JyZWN0KCdzdHJva2UnKSxcbiAgfSxcbiAgJyYgLmNvcnJlY3RJY29uJzoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuY29ycmVjdCgpLFxuICB9LFxuICAnJiAuaW5jb3JyZWN0SWNvbic6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmluY29ycmVjdFdpdGhJY29uKCksXG4gIH0sXG4gICcmIC5jb3JyZWN0bmVzc0ljb24nOiB7XG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIGNvbG9yOiBjb2xvci5kZWZhdWx0cy5XSElURSxcbiAgICBmb250U2l6ZTogJzE2cHgnLFxuICAgIHdpZHRoOiAnMTZweCcsXG4gICAgaGVpZ2h0OiAnMTZweCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7Y29sb3IuZGVmYXVsdHMuV0hJVEV9YCxcbiAgICBzdHJva2U6ICdpbml0aWFsJyxcbiAgICBib3hTaXppbmc6ICd1bnNldCcsIC8vIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJvcmRlci1ib3ggaW4gSUJYXG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgfSxcbiAgJyYgLnNtYWxsSWNvbic6IHtcbiAgICBmb250U2l6ZTogJzEwcHgnLFxuICAgIHdpZHRoOiAnMTBweCcsXG4gICAgaGVpZ2h0OiAnMTBweCcsXG4gIH0sXG59KSk7XG5cbmV4cG9ydCBjbGFzcyBQbG90IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBkYXRhOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgb25DaGFuZ2VDYXRlZ29yeTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgeEJhbmQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGdyYXBoUHJvcHM6IHR5cGVzLkdyYXBoUHJvcHNUeXBlLmlzUmVxdWlyZWQsXG4gICAgZGVmaW5lQ2hhcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgIEN1c3RvbUJhckVsZW1lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGNvcnJlY3REYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pKSxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGF0YSwgZ3JhcGhQcm9wcywgeEJhbmQsIEN1c3RvbUJhckVsZW1lbnQsIG9uQ2hhbmdlQ2F0ZWdvcnksIGRlZmluZUNoYXJ0LCBjb3JyZWN0RGF0YSB9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8R3JvdXA+XG4gICAgICAgIHsoZGF0YSB8fCBbXSkubWFwKChkLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxCYXJcbiAgICAgICAgICAgIHZhbHVlPXtkLnZhbHVlfVxuICAgICAgICAgICAgbGFiZWw9e2QubGFiZWx9XG4gICAgICAgICAgICBpbnRlcmFjdGl2ZT17ZGVmaW5lQ2hhcnQgfHwgZC5pbnRlcmFjdGl2ZX1cbiAgICAgICAgICAgIGRlZmluZUNoYXJ0PXtkZWZpbmVDaGFydH1cbiAgICAgICAgICAgIHhCYW5kPXt4QmFuZH1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIGtleT17YGJhci0ke2QubGFiZWx9LSR7ZC52YWx1ZX0tJHtpbmRleH1gfVxuICAgICAgICAgICAgb25DaGFuZ2VDYXRlZ29yeT17KGNhdGVnb3J5KSA9PiBvbkNoYW5nZUNhdGVnb3J5KGluZGV4LCBjYXRlZ29yeSl9XG4gICAgICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICAgICAgQ3VzdG9tQmFyRWxlbWVudD17Q3VzdG9tQmFyRWxlbWVudH1cbiAgICAgICAgICAgIGNvcnJlY3RuZXNzPXtkLmNvcnJlY3RuZXNzfVxuICAgICAgICAgICAgY29ycmVjdERhdGE9e2NvcnJlY3REYXRhfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Hcm91cD5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBk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
@@ -1 +0,0 @@
1
- {"version":3,"file":"plot.js","names":["_react","_interopRequireDefault","require","_propTypes","_Check","_styles","_group","_debug","_plot","_dragHandle","_interopRequireWildcard","_renderUi","_utils","_styles2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","log","debug","ICON_SIZE","RawPlot","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","setState","isHovered","dragValue","_this$props","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","barX","barWidth","correctVal","correctness","scale","pointHeight","pointDiameter","iconY","y","shapeIndex","shapeCenterY","createElement","x","width","height","className","title","_inherits2","_createClass2","key","render","_this2","_this$props2","graphProps","xBand","index","CustomBarElement","interactive","defineChart","correctData","range","size","_ref","max","_this$state","v","Number","isFinite","bandwidth","barHeight","bandKey","values","push","Component","DraggableHandle","DragHandle","allowRolloverEvent","Fragment","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","onTouchStart","onTouchEnd","length","stroke","color","defaults","BORDER_GRAY","strokeWidth","fill","map","parseFloat","isNaN","selectedVal","renderCorrectnessIcon","overlayValues","lastIndexOfOverlay","lastOverlayValue","dottedOverline","valuesToRender","idx","onDrag","onDragStop","dragStop","primaryDark","isPlot","React","PropTypes","func","number","string","isRequired","types","GraphPropsType","bool","shape","arrayOf","oneOfType","Bar","styled","_ref2","theme","visualElementsColors","PLOT_FILL_COLOR","correct","incorrect","backgroundColor","incorrectWithIcon","borderRadius","spacing","WHITE","fontSize","padding","border","concat","boxSizing","display","Plot","_React$Component2","arguments","_this$props3","data","Group","d","category","array","_default"],"sources":["../../../src/plot/common/plot.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Check from '@mui/icons-material/Check';\nimport { styled } from '@mui/material/styles';\nimport { Group } from '@visx/group';\nimport debug from 'debug';\n\nimport { types } from '@pie-lib/plot';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport { color } from '@pie-lib/render-ui';\nimport { bandKey } from '../../utils';\nimport { correct, incorrect } from '../../common/styles';\n\nconst log = debug('pie-lib:chart:bars');\nconst ICON_SIZE = 16; // 10px icon + 2px padding on all sides + 1px border\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n label: PropTypes.string,\n xBand: PropTypes.func,\n index: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n CustomBarElement: PropTypes.func,\n interactive: PropTypes.bool,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n defineChart: PropTypes.bool,\n correctData: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string,\n })),\n className: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragValue: undefined,\n isHovered: false,\n };\n }\n\n handleMouseEnter = () => {\n this.setState({ isHovered: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ isHovered: false });\n };\n\n setDragValue = (dragValue) => this.setState({ dragValue });\n\n dragStop = () => {\n const { label, onChangeCategory } = this.props;\n const { dragValue } = this.state;\n log('[dragStop]', dragValue);\n\n if (dragValue !== undefined) {\n onChangeCategory({ label, value: dragValue });\n }\n\n this.setDragValue(undefined);\n };\n\n dragValue = (existing, next) => {\n log('[dragValue] next:', next);\n\n this.setDragValue(next);\n };\n\n renderCorrectnessIcon = (barX, barWidth, correctVal, correctness, scale, pointHeight, pointDiameter) => {\n let iconY;\n\n if (correctVal === 0) {\n // if correct value is 0, position icon on the horizontal axis\n iconY = scale.y(0) - ICON_SIZE / 2;\n } else {\n const shapeIndex = correctVal - 1; // the index of the shape representing the correct value\n const shapeCenterY = scale.y(shapeIndex) - (pointHeight - pointDiameter) / 2 - pointDiameter / 2;\n iconY = shapeCenterY - ICON_SIZE / 2; // center the icon\n }\n\n return (\n <foreignObject x={barX + barWidth / 2 - ICON_SIZE / 2} y={iconY} width={ICON_SIZE} height={ICON_SIZE}>\n <Check\n className=\"correctnessIcon correctIcon smallIcon\"\n title={correctness.label}\n />\n </foreignObject>\n );\n };\n\n render() {\n const {\n graphProps,\n value,\n label,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness,\n defineChart,\n correctData,\n className\n } = this.props;\n\n const { scale, range, size } = graphProps;\n const { max } = range || {};\n const { dragValue, isHovered } = this.state;\n\n const v = Number.isFinite(dragValue) ? dragValue : value;\n const barWidth = xBand.bandwidth();\n const barHeight = scale.y(range.max - v);\n const barX = xBand(bandKey({ label }, index));\n\n log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);\n\n const values = [];\n\n for (let i = 0; i < v; i++) {\n values.push(i);\n }\n\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n const Component = interactive ? DraggableHandle : DragHandle;\n const allowRolloverEvent = interactive && !correctness;\n\n return (\n <React.Fragment>\n <g\n className={className}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onTouchStart={this.handleMouseEnter}\n onTouchEnd={this.handleMouseLeave}\n >\n {isHovered && allowRolloverEvent && (\n <rect\n x={barX}\n y={scale.y(v)}\n width={barWidth}\n height={values?.length ? pointHeight * values.length : 0}\n stroke={color.defaults.BORDER_GRAY}\n strokeWidth={'4px'}\n fill={'transparent'}\n />\n )}\n {values.map((index) =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n }),\n )}\n {correctness &&\n correctness.value === 'incorrect' &&\n (() => {\n const correctVal = parseFloat(correctData[index] && correctData[index].value);\n if (isNaN(correctVal)) return null;\n const selectedVal = v;\n\n // special case: if correct value is 0, only show the icon on the axis\n if (correctVal === 0) {\n return this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n );\n }\n\n if (selectedVal > correctVal) {\n // selected is higher than correct: overlay the correct last segment\n const overlayValues = [];\n for (let i = 0; i < correctVal; i++) {\n overlayValues.push(i);\n }\n const lastIndexOfOverlay = overlayValues.length - 1;\n const lastOverlayValue = overlayValues[lastIndexOfOverlay];\n const barX = xBand(bandKey({ label }, index));\n const barWidth = xBand.bandwidth();\n const pointHeight = size.height / max;\n const pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;\n return (\n <>\n <CustomBarElement\n index={lastOverlayValue}\n pointDiameter={pointDiameter + 10} // increase point diameter for dotted line\n barX={barX}\n barWidth={barWidth}\n pointHeight={pointHeight}\n label={label}\n value={value}\n scale={scale}\n dottedOverline={true}\n />\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n }\n // selected is lower than correct, render missing segment below the correct bar\n const valuesToRender = [];\n for (let i = selectedVal; i < correctVal; i++) {\n valuesToRender.push(i);\n }\n return (\n <>\n {valuesToRender.map((idx) =>\n CustomBarElement({\n index: idx,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n scale,\n dottedOverline: true,\n }),\n )}\n {this.renderCorrectnessIcon(\n barX,\n barWidth,\n correctVal,\n correctness,\n scale,\n pointHeight,\n pointDiameter,\n )}\n </>\n );\n })()}\n <Component\n x={barX}\n y={v}\n interactive={interactive}\n width={barWidth}\n onDrag={(v) => this.dragValue(value, v)}\n onDragStop={this.dragStop}\n graphProps={graphProps}\n correctness={correctness}\n isHovered={isHovered}\n defineChart={defineChart}\n color={color.primaryDark()}\n isPlot\n />\n </g>\n </React.Fragment>\n );\n }\n}\n\nconst Bar = styled(RawPlot)(({ theme }) => ({\n '& .dot': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .dotColor': {\n fill: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('fill'),\n '&.incorrect': incorrect('fill'),\n },\n '& .line': {\n stroke: color.visualElementsColors.PLOT_FILL_COLOR,\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n '& .correctIcon': {\n backgroundColor: color.correct(),\n },\n '& .incorrectIcon': {\n backgroundColor: color.incorrectWithIcon(),\n },\n '& .correctnessIcon': {\n borderRadius: theme.spacing(2),\n color: color.defaults.WHITE,\n fontSize: '16px',\n width: '16px',\n height: '16px',\n padding: '2px',\n border: `1px solid ${color.defaults.WHITE}`,\n stroke: 'initial',\n boxSizing: 'unset', // to override the default border-box in IBX\n display: 'block',\n },\n '& .smallIcon': {\n fontSize: '10px',\n width: '10px',\n height: '10px',\n },\n}));\n\nexport class Plot extends React.Component {\n static propTypes = {\n data: PropTypes.array,\n onChangeCategory: PropTypes.func,\n xBand: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n defineChart: PropTypes.bool,\n CustomBarElement: PropTypes.func,\n correctData: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.string,\n })),\n className: PropTypes.string,\n };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory, defineChart, correctData } = this.props;\n\n return (\n <Group>\n {(data || []).map((d, index) => (\n <Bar\n value={d.value}\n label={d.label}\n interactive={defineChart || d.interactive}\n defineChart={defineChart}\n xBand={xBand}\n index={index}\n key={`bar-${d.label}-${d.value}-${index}`}\n onChangeCategory={(category) => onChangeCategory(index, category)}\n graphProps={graphProps}\n CustomBarElement={CustomBarElement}\n correctness={d.correctness}\n correctData={correctData}\n />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\n"],"mappings":"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","ignoreList":[]}