@pie-lib/charting 5.16.0-beta.2 → 5.16.0-beta.3

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 (48) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/axes.js +643 -0
  3. package/lib/axes.js.map +1 -0
  4. package/lib/bars/bar.js +86 -0
  5. package/lib/bars/bar.js.map +1 -0
  6. package/lib/bars/common/bars.js +301 -0
  7. package/lib/bars/common/bars.js.map +1 -0
  8. package/lib/bars/histogram.js +87 -0
  9. package/lib/bars/histogram.js.map +1 -0
  10. package/lib/chart-setup.js +458 -0
  11. package/lib/chart-setup.js.map +1 -0
  12. package/lib/chart-type.js +71 -0
  13. package/lib/chart-type.js.map +1 -0
  14. package/lib/chart-types.js +31 -0
  15. package/lib/chart-types.js.map +1 -0
  16. package/lib/chart.js +438 -0
  17. package/lib/chart.js.map +1 -0
  18. package/lib/common/drag-handle.js +175 -0
  19. package/lib/common/drag-handle.js.map +1 -0
  20. package/lib/common/drag-icon.js +52 -0
  21. package/lib/common/drag-icon.js.map +1 -0
  22. package/lib/common/styles.js +40 -0
  23. package/lib/common/styles.js.map +1 -0
  24. package/lib/grid.js +104 -0
  25. package/lib/grid.js.map +1 -0
  26. package/lib/index.js +40 -0
  27. package/lib/index.js.map +1 -0
  28. package/lib/line/common/drag-handle.js +157 -0
  29. package/lib/line/common/drag-handle.js.map +1 -0
  30. package/lib/line/common/line.js +261 -0
  31. package/lib/line/common/line.js.map +1 -0
  32. package/lib/line/line-cross.js +168 -0
  33. package/lib/line/line-cross.js.map +1 -0
  34. package/lib/line/line-dot.js +131 -0
  35. package/lib/line/line-dot.js.map +1 -0
  36. package/lib/mark-label.js +255 -0
  37. package/lib/mark-label.js.map +1 -0
  38. package/lib/plot/common/plot.js +280 -0
  39. package/lib/plot/common/plot.js.map +1 -0
  40. package/lib/plot/dot.js +123 -0
  41. package/lib/plot/dot.js.map +1 -0
  42. package/lib/plot/line.js +152 -0
  43. package/lib/plot/line.js.map +1 -0
  44. package/lib/tool-menu.js +142 -0
  45. package/lib/tool-menu.js.map +1 -0
  46. package/lib/utils.js +244 -0
  47. package/lib/utils.js.map +1 -0
  48. package/package.json +1 -1
@@ -0,0 +1,255 @@
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["default"] = exports.MarkLabel = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _styles = require("@material-ui/core/styles");
21
+
22
+ var _reactInputAutosize = _interopRequireDefault(require("react-input-autosize"));
23
+
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
26
+ var _plot = require("@pie-lib/plot");
27
+
28
+ var _styles2 = require("./common/styles");
29
+
30
+ var _renderUi = require("@pie-lib/render-ui");
31
+
32
+ var _mathRendering = require("@pie-lib/math-rendering");
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ 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; }
39
+
40
+ 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; }
41
+
42
+ var styles = function styles(theme) {
43
+ return {
44
+ input: {
45
+ "float": 'right',
46
+ fontFamily: theme.typography.fontFamily,
47
+ fontSize: theme.typography.fontSize,
48
+ border: 'none',
49
+ color: _renderUi.color.primaryDark(),
50
+ '&.correct': (0, _styles2.correct)('color'),
51
+ '&.incorrect': (0, _styles2.incorrect)('color'),
52
+ '&.disabled': {
53
+ backgroundColor: 'transparent !important'
54
+ },
55
+ '&.error': {
56
+ border: "2px solid ".concat(theme.palette.error.main)
57
+ }
58
+ },
59
+ mathInput: {
60
+ pointerEvents: 'auto',
61
+ textAlign: 'center',
62
+ fontSize: theme.typography.fontSize + 2,
63
+ fontFamily: theme.typography.fontFamily,
64
+ color: _renderUi.color.primaryDark(),
65
+ paddingTop: theme.typography.fontSize / 2
66
+ },
67
+ disabled: _objectSpread(_objectSpread({}, (0, _styles2.disabled)('color')), {}, {
68
+ backgroundColor: 'transparent !important'
69
+ }),
70
+ error: {
71
+ border: "2px solid ".concat(theme.palette.error.main)
72
+ },
73
+ correct: _objectSpread({}, (0, _styles2.correct)('color')),
74
+ incorrect: _objectSpread({}, (0, _styles2.incorrect)('color'))
75
+ };
76
+ };
77
+
78
+ function isFractionFormat(label) {
79
+ var trimmedLabel = (label === null || label === void 0 ? void 0 : label.trim()) || '';
80
+ var fracRegex = new RegExp(/^[1-9]*[0-9]*\s?[1-9][0-9]*\/[1-9][0-9]*$/);
81
+ return fracRegex.test(trimmedLabel);
82
+ }
83
+
84
+ function getLabelMathFormat(label) {
85
+ var trimmedLabel = (label === null || label === void 0 ? void 0 : label.trim()) || '';
86
+ var fraction;
87
+ var mixedNr = '';
88
+ var improperFraction = trimmedLabel.split(' ');
89
+
90
+ if (improperFraction[1] && improperFraction[1].includes('/')) {
91
+ fraction = improperFraction[1].split('/') || '';
92
+ } else {
93
+ fraction = (trimmedLabel === null || trimmedLabel === void 0 ? void 0 : trimmedLabel.split('/')) || '';
94
+ }
95
+
96
+ var formattedLLabel;
97
+
98
+ if (isFractionFormat(label)) {
99
+ if (improperFraction[0] && improperFraction[1]) {
100
+ mixedNr = improperFraction[0];
101
+ }
102
+
103
+ formattedLLabel = "\\(".concat(mixedNr, "\\frac{").concat(fraction[0], "}{").concat(fraction[1], "}\\)");
104
+ return formattedLLabel;
105
+ }
106
+
107
+ return undefined;
108
+ }
109
+
110
+ var MarkLabel = function MarkLabel(props) {
111
+ var _classNames;
112
+
113
+ // eslint-disable-next-line no-unused-vars
114
+ var _useState = (0, _react.useState)(null),
115
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
116
+ input = _useState2[0],
117
+ setInput = _useState2[1];
118
+
119
+ var _ref = (0, _react.useCallback)(function (node) {
120
+ return setInput(node);
121
+ }, null);
122
+
123
+ var mark = props.mark,
124
+ classes = props.classes,
125
+ disabled = props.disabled,
126
+ externalInputRef = props.inputRef,
127
+ barWidth = props.barWidth,
128
+ rotate = props.rotate,
129
+ correctness = props.correctness,
130
+ autoFocus = props.autoFocus,
131
+ error = props.error,
132
+ isHiddenLabel = props.isHiddenLabel;
133
+
134
+ var _useState3 = (0, _react.useState)(mark.label),
135
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
136
+ label = _useState4[0],
137
+ setLabel = _useState4[1];
138
+
139
+ var _useState5 = (0, _react.useState)(getLabelMathFormat(mark.label)),
140
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
141
+ mathLabel = _useState6[0],
142
+ setMathLabel = _useState6[1];
143
+
144
+ var _useState7 = (0, _react.useState)(false),
145
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
146
+ isEditing = _useState8[0],
147
+ setIsEditing = _useState8[1];
148
+
149
+ var root = (0, _react.useRef)(null);
150
+
151
+ var onChange = function onChange(e) {
152
+ setLabel(e.target.value);
153
+ };
154
+
155
+ var isMathRendering = function isMathRendering() {
156
+ return isEditing === false && mathLabel !== undefined;
157
+ };
158
+
159
+ var onChangeProp = function onChangeProp(e) {
160
+ setMathLabel(getLabelMathFormat(mark.label));
161
+ setIsEditing(false);
162
+ props.onChange(e.target.value);
163
+ };
164
+
165
+ var extraStyle = {};
166
+
167
+ if (rotate) {
168
+ extraStyle = {
169
+ width: 'unset',
170
+ textAlign: 'left'
171
+ };
172
+ } // useState only sets the value once, to synch props to state need useEffect
173
+
174
+
175
+ (0, _react.useEffect)(function () {
176
+ setLabel(mark.label);
177
+ }, [mark.label]);
178
+ (0, _react.useEffect)(function () {
179
+ (0, _mathRendering.renderMath)(root);
180
+ }, []);
181
+ return isMathRendering() ? /*#__PURE__*/_react["default"].createElement("div", {
182
+ ref: function ref(r) {
183
+ root = r;
184
+ externalInputRef(r);
185
+ },
186
+ dangerouslySetInnerHTML: {
187
+ __html: getLabelMathFormat(label)
188
+ },
189
+ className: (0, _classnames["default"])(classes.mathInput, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.disabled, disabled), (0, _defineProperty2["default"])(_classNames, classes.error, error), (0, _defineProperty2["default"])(_classNames, classes.correct, mark.editable && (correctness === null || correctness === void 0 ? void 0 : correctness.label) === 'correct'), (0, _defineProperty2["default"])(_classNames, classes.incorrect, mark.editable && (correctness === null || correctness === void 0 ? void 0 : correctness.label) === 'incorrect'), _classNames)),
190
+ onClick: function onClick() {
191
+ return setIsEditing(true);
192
+ },
193
+ style: {
194
+ minWidth: barWidth,
195
+ position: 'fixed',
196
+ transformOrigin: 'left',
197
+ transform: "rotate(".concat(rotate, "deg)"),
198
+ visibility: isHiddenLabel ? 'hidden' : 'unset'
199
+ }
200
+ }) : /*#__PURE__*/_react["default"].createElement(_reactInputAutosize["default"], {
201
+ inputRef: function inputRef(r) {
202
+ _ref(r);
203
+
204
+ externalInputRef(r);
205
+ },
206
+ autoFocus: isEditing || autoFocus,
207
+ disabled: disabled,
208
+ inputClassName: (0, _classnames["default"])(classes.input, correctness && mark.editable ? correctness.label : null, disabled && 'disabled', error && 'error'),
209
+ inputStyle: _objectSpread({
210
+ minWidth: barWidth,
211
+ textAlign: 'center',
212
+ background: 'transparent',
213
+ boxSizing: 'border-box',
214
+ paddingLeft: 0,
215
+ paddingRight: 0
216
+ }, extraStyle),
217
+ value: label,
218
+ style: {
219
+ position: 'fixed',
220
+ pointerEvents: 'auto',
221
+ top: 0,
222
+ left: 0,
223
+ minWidth: barWidth,
224
+ transformOrigin: 'left',
225
+ transform: "rotate(".concat(rotate, "deg)"),
226
+ visibility: isHiddenLabel ? 'hidden' : 'unset'
227
+ },
228
+ onChange: onChange,
229
+ onBlur: onChangeProp
230
+ });
231
+ };
232
+
233
+ exports.MarkLabel = MarkLabel;
234
+ MarkLabel.propTypes = {
235
+ autoFocus: _propTypes["default"].bool,
236
+ disabled: _propTypes["default"].bool,
237
+ error: _propTypes["default"].any,
238
+ onChange: _propTypes["default"].func,
239
+ graphProps: _plot.types.GraphPropsType,
240
+ classes: _propTypes["default"].object,
241
+ inputRef: _propTypes["default"].func,
242
+ mark: _propTypes["default"].object,
243
+ barWidth: _propTypes["default"].number,
244
+ rotate: _propTypes["default"].number,
245
+ correctness: _propTypes["default"].shape({
246
+ value: _propTypes["default"].string,
247
+ label: _propTypes["default"].string
248
+ }),
249
+ isHiddenLabel: _propTypes["default"].bool
250
+ };
251
+
252
+ var _default = (0, _styles.withStyles)(styles)(MarkLabel);
253
+
254
+ exports["default"] = _default;
255
+ //# sourceMappingURL=mark-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mark-label.jsx"],"names":["styles","theme","input","fontFamily","typography","fontSize","border","color","primaryDark","backgroundColor","palette","error","main","mathInput","pointerEvents","textAlign","paddingTop","disabled","correct","incorrect","isFractionFormat","label","trimmedLabel","trim","fracRegex","RegExp","test","getLabelMathFormat","fraction","mixedNr","improperFraction","split","includes","formattedLLabel","undefined","MarkLabel","props","setInput","_ref","node","mark","classes","externalInputRef","inputRef","barWidth","rotate","correctness","autoFocus","isHiddenLabel","setLabel","mathLabel","setMathLabel","isEditing","setIsEditing","root","onChange","e","target","value","isMathRendering","onChangeProp","extraStyle","width","r","__html","editable","minWidth","position","transformOrigin","transform","visibility","background","boxSizing","paddingLeft","paddingRight","top","left","propTypes","PropTypes","bool","any","func","graphProps","types","GraphPropsType","object","number","shape","string"],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport AutosizeInput from 'react-input-autosize';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport { correct, incorrect, disabled } from './common/styles';\nimport { color } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst styles = (theme) => ({\n input: {\n float: 'right',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.fontSize,\n border: 'none',\n color: color.primaryDark(),\n '&.correct': correct('color'),\n '&.incorrect': incorrect('color'),\n '&.disabled': {\n backgroundColor: 'transparent !important',\n },\n '&.error': { border: `2px solid ${theme.palette.error.main}` },\n },\n mathInput: {\n pointerEvents: 'auto',\n textAlign: 'center',\n fontSize: theme.typography.fontSize + 2,\n fontFamily: theme.typography.fontFamily,\n color: color.primaryDark(),\n paddingTop: theme.typography.fontSize / 2,\n },\n disabled: {\n ...disabled('color'),\n backgroundColor: 'transparent !important',\n },\n error: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n correct: {\n ...correct('color'),\n },\n incorrect: {\n ...incorrect('color'),\n },\n});\n\nfunction isFractionFormat(label) {\n const trimmedLabel = label?.trim() || '';\n const fracRegex = new RegExp(/^[1-9]*[0-9]*\\s?[1-9][0-9]*\\/[1-9][0-9]*$/);\n return fracRegex.test(trimmedLabel);\n}\n\nfunction getLabelMathFormat(label) {\n const trimmedLabel = label?.trim() || '';\n let fraction;\n let mixedNr = '';\n let improperFraction = trimmedLabel.split(' ');\n if (improperFraction[1] && improperFraction[1].includes('/')) {\n fraction = improperFraction[1].split('/') || '';\n } else {\n fraction = trimmedLabel?.split('/') || '';\n }\n\n let formattedLLabel;\n if (isFractionFormat(label)) {\n if (improperFraction[0] && improperFraction[1]) {\n mixedNr = improperFraction[0];\n }\n formattedLLabel = `\\\\(${mixedNr}\\\\frac{${fraction[0]}}{${fraction[1]}}\\\\)`;\n return formattedLLabel;\n }\n return undefined;\n}\n\nexport const MarkLabel = (props) => {\n // eslint-disable-next-line no-unused-vars\n const [input, setInput] = useState(null);\n const _ref = useCallback((node) => setInput(node), null);\n\n const {\n mark,\n classes,\n disabled,\n inputRef: externalInputRef,\n barWidth,\n rotate,\n correctness,\n autoFocus,\n error,\n isHiddenLabel,\n } = props;\n\n const [label, setLabel] = useState(mark.label);\n const [mathLabel, setMathLabel] = useState(getLabelMathFormat(mark.label));\n const [isEditing, setIsEditing] = useState(false);\n let root = useRef(null);\n\n const onChange = (e) => {\n setLabel(e.target.value);\n };\n\n const isMathRendering = () => {\n return isEditing === false && mathLabel !== undefined;\n };\n\n const onChangeProp = (e) => {\n setMathLabel(getLabelMathFormat(mark.label));\n setIsEditing(false);\n props.onChange(e.target.value);\n };\n let extraStyle = {};\n\n if (rotate) {\n extraStyle = {\n width: 'unset',\n textAlign: 'left',\n };\n }\n\n // useState only sets the value once, to synch props to state need useEffect\n useEffect(() => {\n setLabel(mark.label);\n }, [mark.label]);\n\n useEffect(() => {\n renderMath(root);\n }, []);\n\n return isMathRendering() ? (\n <div\n ref={(r) => {\n root = r;\n externalInputRef(r);\n }}\n dangerouslySetInnerHTML={{ __html: getLabelMathFormat(label) }}\n className={classNames(classes.mathInput, {\n [classes.disabled]: disabled,\n [classes.error]: error,\n [classes.correct]: mark.editable && correctness?.label === 'correct',\n [classes.incorrect]: mark.editable && correctness?.label === 'incorrect',\n })}\n onClick={() => setIsEditing(true)}\n style={{\n minWidth: barWidth,\n position: 'fixed',\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n }}\n ></div>\n ) : (\n <AutosizeInput\n inputRef={(r) => {\n _ref(r);\n externalInputRef(r);\n }}\n autoFocus={isEditing || autoFocus}\n disabled={disabled}\n inputClassName={classNames(\n classes.input,\n correctness && mark.editable ? correctness.label : null,\n disabled && 'disabled',\n error && 'error',\n )}\n inputStyle={{\n minWidth: barWidth,\n textAlign: 'center',\n background: 'transparent',\n boxSizing: 'border-box',\n paddingLeft: 0,\n paddingRight: 0,\n ...extraStyle,\n }}\n value={label}\n style={{\n position: 'fixed',\n pointerEvents: 'auto',\n top: 0,\n left: 0,\n minWidth: barWidth,\n transformOrigin: 'left',\n transform: `rotate(${rotate}deg)`,\n visibility: isHiddenLabel ? 'hidden' : 'unset',\n }}\n onChange={onChange}\n onBlur={onChangeProp}\n />\n );\n};\n\nMarkLabel.propTypes = {\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.any,\n onChange: PropTypes.func,\n graphProps: types.GraphPropsType,\n classes: PropTypes.object,\n inputRef: PropTypes.func,\n mark: PropTypes.object,\n barWidth: PropTypes.number,\n rotate: PropTypes.number,\n correctness: PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n isHiddenLabel: PropTypes.bool,\n};\n\nexport default withStyles(styles)(MarkLabel);\n"],"file":"mark-label.js"}
@@ -0,0 +1,280 @@
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["default"] = exports.RawPlot = exports.Plot = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _plot = require("@pie-lib/plot");
31
+
32
+ var _group = require("@vx/group");
33
+
34
+ var _index = require("@material-ui/core/styles/index");
35
+
36
+ var _dragHandle = _interopRequireWildcard(require("../../common/drag-handle"));
37
+
38
+ var _debug = _interopRequireDefault(require("debug"));
39
+
40
+ var _renderUi = require("@pie-lib/render-ui");
41
+
42
+ var _utils = require("../../utils");
43
+
44
+ var _styles = require("../../common/styles");
45
+
46
+ 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); }
47
+
48
+ 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; }
49
+
50
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
51
+
52
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
53
+
54
+ var log = (0, _debug["default"])('pie-lib:chart:bars');
55
+
56
+ var RawPlot = /*#__PURE__*/function (_React$Component) {
57
+ (0, _inherits2["default"])(RawPlot, _React$Component);
58
+
59
+ var _super = _createSuper(RawPlot);
60
+
61
+ function RawPlot(props) {
62
+ var _this;
63
+
64
+ (0, _classCallCheck2["default"])(this, RawPlot);
65
+ _this = _super.call(this, props);
66
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseEnter", function () {
67
+ _this.setState({
68
+ isHovered: true
69
+ });
70
+ });
71
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseLeave", function () {
72
+ _this.setState({
73
+ isHovered: false
74
+ });
75
+ });
76
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setDragValue", function (dragValue) {
77
+ return _this.setState({
78
+ dragValue: dragValue
79
+ });
80
+ });
81
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragStop", function () {
82
+ var _this$props = _this.props,
83
+ label = _this$props.label,
84
+ onChangeCategory = _this$props.onChangeCategory;
85
+ var dragValue = _this.state.dragValue;
86
+ log('[dragStop]', dragValue);
87
+
88
+ if (dragValue !== undefined) {
89
+ onChangeCategory({
90
+ label: label,
91
+ value: dragValue
92
+ });
93
+ }
94
+
95
+ _this.setDragValue(undefined);
96
+ });
97
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragValue", function (existing, next) {
98
+ log('[dragValue] next:', next);
99
+
100
+ _this.setDragValue(next);
101
+ });
102
+ _this.state = {
103
+ dragValue: undefined,
104
+ isHovered: false
105
+ };
106
+ return _this;
107
+ }
108
+
109
+ (0, _createClass2["default"])(RawPlot, [{
110
+ key: "render",
111
+ value: function render() {
112
+ var _this2 = this;
113
+
114
+ var _this$props2 = this.props,
115
+ graphProps = _this$props2.graphProps,
116
+ value = _this$props2.value,
117
+ label = _this$props2.label,
118
+ classes = _this$props2.classes,
119
+ xBand = _this$props2.xBand,
120
+ index = _this$props2.index,
121
+ CustomBarElement = _this$props2.CustomBarElement,
122
+ interactive = _this$props2.interactive,
123
+ correctness = _this$props2.correctness,
124
+ defineChart = _this$props2.defineChart;
125
+ var scale = graphProps.scale,
126
+ range = graphProps.range,
127
+ size = graphProps.size;
128
+
129
+ var _ref = range || {},
130
+ max = _ref.max;
131
+
132
+ var _this$state = this.state,
133
+ dragValue = _this$state.dragValue,
134
+ isHovered = _this$state.isHovered;
135
+ var v = Number.isFinite(dragValue) ? dragValue : value;
136
+ var barWidth = xBand.bandwidth();
137
+ var barHeight = scale.y(range.max - v);
138
+ var barX = xBand((0, _utils.bandKey)({
139
+ label: label
140
+ }, index));
141
+ log('label:', label, 'barX:', barX, 'v: ', v, 'barHeight:', barHeight, 'barWidth: ', barWidth);
142
+ var values = [];
143
+
144
+ for (var i = 0; i < v; i++) {
145
+ values.push(i);
146
+ }
147
+
148
+ var pointHeight = size.height / max;
149
+ var pointDiameter = (pointHeight > barWidth ? barWidth : pointHeight) * 0.8;
150
+ var Component = interactive ? _dragHandle["default"] : _dragHandle.DragHandle;
151
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("g", {
152
+ onMouseEnter: this.handleMouseEnter,
153
+ onMouseLeave: this.handleMouseLeave,
154
+ onTouchStart: this.handleMouseEnter,
155
+ onTouchEnd: this.handleMouseLeave
156
+ }, isHovered && /*#__PURE__*/_react["default"].createElement("rect", {
157
+ x: barX,
158
+ y: scale.y(v),
159
+ width: barWidth,
160
+ height: values !== null && values !== void 0 && values.length ? pointHeight * values.length : 0,
161
+ style: {
162
+ fill: '#E5E8F5'
163
+ }
164
+ }), values.map(function (index) {
165
+ return CustomBarElement({
166
+ index: index,
167
+ pointDiameter: pointDiameter,
168
+ barX: barX,
169
+ barWidth: barWidth,
170
+ pointHeight: pointHeight,
171
+ label: label,
172
+ value: value,
173
+ classes: classes,
174
+ scale: scale
175
+ });
176
+ }), /*#__PURE__*/_react["default"].createElement(Component, {
177
+ x: barX,
178
+ y: v,
179
+ interactive: interactive,
180
+ width: barWidth,
181
+ onDrag: function onDrag(v) {
182
+ return _this2.dragValue(value, v);
183
+ },
184
+ onDragStop: this.dragStop,
185
+ graphProps: graphProps,
186
+ correctness: correctness,
187
+ isHovered: isHovered,
188
+ defineChart: defineChart,
189
+ color: _renderUi.color.primaryDark()
190
+ })));
191
+ }
192
+ }]);
193
+ return RawPlot;
194
+ }(_react["default"].Component);
195
+
196
+ exports.RawPlot = RawPlot;
197
+ (0, _defineProperty2["default"])(RawPlot, "propTypes", {
198
+ onChangeCategory: _propTypes["default"].func,
199
+ value: _propTypes["default"].number,
200
+ classes: _propTypes["default"].object,
201
+ label: _propTypes["default"].string,
202
+ xBand: _propTypes["default"].func,
203
+ index: _propTypes["default"].number.isRequired,
204
+ graphProps: _plot.types.GraphPropsType.isRequired,
205
+ CustomBarElement: _propTypes["default"].func,
206
+ interactive: _propTypes["default"].bool,
207
+ correctness: _propTypes["default"].shape({
208
+ value: _propTypes["default"].string,
209
+ label: _propTypes["default"].string
210
+ })
211
+ });
212
+ var Bar = (0, _index.withStyles)(function () {
213
+ return {
214
+ dot: {
215
+ fill: _renderUi.color.primaryLight(),
216
+ '&.correct': (0, _styles.correct)('stroke'),
217
+ '&.incorrect': (0, _styles.incorrect)('stroke')
218
+ },
219
+ line: {
220
+ stroke: _renderUi.color.primaryLight(),
221
+ '&.correct': (0, _styles.correct)('stroke'),
222
+ '&.incorrect': (0, _styles.incorrect)('stroke')
223
+ }
224
+ };
225
+ })(RawPlot);
226
+
227
+ var Plot = /*#__PURE__*/function (_React$Component2) {
228
+ (0, _inherits2["default"])(Plot, _React$Component2);
229
+
230
+ var _super2 = _createSuper(Plot);
231
+
232
+ function Plot() {
233
+ (0, _classCallCheck2["default"])(this, Plot);
234
+ return _super2.apply(this, arguments);
235
+ }
236
+
237
+ (0, _createClass2["default"])(Plot, [{
238
+ key: "render",
239
+ value: function render() {
240
+ var _this$props3 = this.props,
241
+ data = _this$props3.data,
242
+ graphProps = _this$props3.graphProps,
243
+ xBand = _this$props3.xBand,
244
+ CustomBarElement = _this$props3.CustomBarElement,
245
+ _onChangeCategory = _this$props3.onChangeCategory,
246
+ defineChart = _this$props3.defineChart;
247
+ return /*#__PURE__*/_react["default"].createElement(_group.Group, null, (data || []).map(function (d, index) {
248
+ return /*#__PURE__*/_react["default"].createElement(Bar, {
249
+ value: d.value,
250
+ label: d.label,
251
+ interactive: defineChart || d.interactive,
252
+ defineChart: defineChart,
253
+ xBand: xBand,
254
+ index: index,
255
+ key: "bar-".concat(d.label, "-").concat(d.value, "-").concat(index),
256
+ onChangeCategory: function onChangeCategory(category) {
257
+ return _onChangeCategory(index, category);
258
+ },
259
+ graphProps: graphProps,
260
+ CustomBarElement: CustomBarElement,
261
+ correctness: d.correctness
262
+ });
263
+ }));
264
+ }
265
+ }]);
266
+ return Plot;
267
+ }(_react["default"].Component);
268
+
269
+ exports.Plot = Plot;
270
+ (0, _defineProperty2["default"])(Plot, "propTypes", {
271
+ data: _propTypes["default"].array,
272
+ onChangeCategory: _propTypes["default"].func,
273
+ xBand: _propTypes["default"].func,
274
+ graphProps: _plot.types.GraphPropsType.isRequired,
275
+ defineChart: _propTypes["default"].bool,
276
+ CustomBarElement: _propTypes["default"].func
277
+ });
278
+ var _default = Plot;
279
+ exports["default"] = _default;
280
+ //# sourceMappingURL=plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/plot/common/plot.jsx"],"names":["log","RawPlot","props","setState","isHovered","dragValue","label","onChangeCategory","state","undefined","value","setDragValue","existing","next","graphProps","classes","xBand","index","CustomBarElement","interactive","correctness","defineChart","scale","range","size","max","v","Number","isFinite","barWidth","bandwidth","barHeight","y","barX","values","i","push","pointHeight","height","pointDiameter","Component","DraggableHandle","DragHandle","handleMouseEnter","handleMouseLeave","length","fill","map","dragStop","color","primaryDark","React","PropTypes","func","number","object","string","isRequired","types","GraphPropsType","bool","shape","Bar","dot","primaryLight","line","stroke","Plot","data","d","category","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport { Group } from '@vx/group';\nimport { withStyles } from '@material-ui/core/styles/index';\nimport DraggableHandle, { DragHandle } from '../../common/drag-handle';\nimport debug from 'debug';\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');\n\nexport class RawPlot extends React.Component {\n static propTypes = {\n onChangeCategory: PropTypes.func,\n value: PropTypes.number,\n classes: PropTypes.object,\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 };\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 render() {\n const {\n graphProps,\n value,\n label,\n classes,\n xBand,\n index,\n CustomBarElement,\n interactive,\n correctness,\n defineChart,\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\n return (\n <React.Fragment>\n <g\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onTouchStart={this.handleMouseEnter}\n onTouchEnd={this.handleMouseLeave}\n >\n {isHovered && (\n <rect\n x={barX}\n y={scale.y(v)}\n width={barWidth}\n height={values?.length ? pointHeight * values.length : 0}\n style={{ fill: '#E5E8F5' }}\n />\n )}\n {values.map((index) =>\n CustomBarElement({\n index,\n pointDiameter,\n barX,\n barWidth,\n pointHeight,\n label,\n value,\n classes,\n scale,\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 />\n </g>\n </React.Fragment>\n );\n }\n}\n\nconst Bar = withStyles(() => ({\n dot: {\n fill: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n line: {\n stroke: color.primaryLight(),\n '&.correct': correct('stroke'),\n '&.incorrect': incorrect('stroke'),\n },\n}))(RawPlot);\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 };\n\n render() {\n const { data, graphProps, xBand, CustomBarElement, onChangeCategory, defineChart } = 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 />\n ))}\n </Group>\n );\n }\n}\n\nexport default Plot;\n"],"file":"plot.js"}