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

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