@pie-lib/graphing 2.4.5 → 2.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/lib/axis/arrow.js +5 -5
- package/lib/axis/arrow.js.map +1 -1
- package/lib/axis/axes.js +17 -27
- package/lib/axis/axes.js.map +1 -1
- package/lib/graph.js +4 -4
- package/lib/graph.js.map +1 -1
- package/lib/tools/line/component.js +8 -1
- package/lib/tools/line/component.js.map +1 -1
- package/lib/tools/ray/component.js +8 -1
- package/lib/tools/ray/component.js.map +1 -1
- package/lib/tools/shared/point/arrow.js +3 -1
- package/lib/tools/shared/point/arrow.js.map +1 -1
- package/lib/tools/shared/point/base-point.js +4 -1
- package/lib/tools/shared/point/base-point.js.map +1 -1
- package/lib/utils.js +46 -1
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/axis/arrow.jsx +5 -5
- package/src/axis/axes.jsx +24 -35
- package/src/graph.jsx +4 -4
- package/src/tools/line/component.jsx +6 -1
- package/src/tools/ray/component.jsx +5 -1
- package/src/tools/shared/point/arrow.jsx +2 -1
- package/src/tools/shared/point/base-point.jsx +3 -1
- package/src/utils.js +43 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,38 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.4.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.8...@pie-lib/graphing@2.4.9) (2022-02-04)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-lib/graphing
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [2.4.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.7...@pie-lib/graphing@2.4.8) (2022-02-03)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-lib/graphing
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [2.4.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.6...@pie-lib/graphing@2.4.7) (2022-01-10)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-lib/graphing
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [2.4.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.5...@pie-lib/graphing@2.4.6) (2021-12-13)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @pie-lib/graphing
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
6
38
|
## [2.4.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.4.4...@pie-lib/graphing@2.4.5) (2021-11-29)
|
|
7
39
|
|
|
8
40
|
**Note:** Version bump only for package @pie-lib/graphing
|
package/lib/axis/arrow.js
CHANGED
|
@@ -61,6 +61,7 @@ function (_React$Component) {
|
|
|
61
61
|
classes = _this$props.classes,
|
|
62
62
|
className = _this$props.className,
|
|
63
63
|
scale = _this$props.scale;
|
|
64
|
+
var names = (0, _classnames["default"])(classes.root, className);
|
|
64
65
|
var direction = this.props.direction || 'left';
|
|
65
66
|
var xv = scale.x(x);
|
|
66
67
|
var yv = scale.y(y);
|
|
@@ -71,22 +72,21 @@ function (_React$Component) {
|
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
if (direction === 'left') {
|
|
74
|
-
transform = getTransform(xv -
|
|
75
|
+
transform = getTransform(xv - 15, yv, 0);
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
if (direction === 'right') {
|
|
78
|
-
transform = getTransform(xv +
|
|
79
|
+
transform = getTransform(xv + 15, yv, 180);
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
if (direction === 'up') {
|
|
82
|
-
transform = getTransform(xv, yv -
|
|
83
|
+
transform = getTransform(xv, yv - 15, 90);
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
if (direction === 'down') {
|
|
86
|
-
transform = getTransform(xv, yv +
|
|
87
|
+
transform = getTransform(xv, yv + 15, 270);
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
var names = (0, _classnames["default"])(classes.root, className);
|
|
90
90
|
return _react["default"].createElement("path", {
|
|
91
91
|
d: "m 0,0 8,-5 0,10 -8,-5",
|
|
92
92
|
transform: transform,
|
package/lib/axis/arrow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","direction","xv","yv","transform","getTransform","rotate","
|
|
1
|
+
{"version":3,"sources":["../../src/axis/arrow.jsx"],"names":["style","root","fill","Arrow","props","x","y","classes","className","scale","names","direction","xv","yv","transform","getTransform","rotate","React","Component","propTypes","PropTypes","number","oneOf","object","isRequired","string","types","ScaleType","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADM,CAAd;;IAMaC,K;;;;;;;;;;;;;6BACF;AAAA,wBACqC,KAAKC,KAD1C;AAAA,UACCC,CADD,eACCA,CADD;AAAA,UACIC,CADJ,eACIA,CADJ;AAAA,UACOC,OADP,eACOA,OADP;AAAA,UACgBC,SADhB,eACgBA,SADhB;AAAA,UAC2BC,KAD3B,eAC2BA,KAD3B;AAEP,UAAMC,KAAK,GAAG,4BAAWH,OAAO,CAACN,IAAnB,EAAyBO,SAAzB,CAAd;AACA,UAAIG,SAAS,GAAG,KAAKP,KAAL,CAAWO,SAAX,IAAwB,MAAxC;AAEA,UAAMC,EAAE,GAAGH,KAAK,CAACJ,CAAN,CAAQA,CAAR,CAAX;AACA,UAAMQ,EAAE,GAAGJ,KAAK,CAACH,CAAN,CAAQA,CAAR,CAAX;AAEA,UAAIQ,SAAS,GAAG,EAAhB;;AAEA,UAAMC,YAAY,GAAG,SAAfA,YAAe,CAACV,CAAD,EAAIC,CAAJ,EAAOU,MAAP;AAAA,mCAA+BX,CAA/B,eAAqCC,CAArC,sBAAkDU,MAAlD;AAAA,OAArB;;AAEA,UAAIL,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,CAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,OAAlB,EAA2B;AACzBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAE,GAAG,EAAN,EAAUC,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,EAAd,CAAxB;AACD;;AAED,UAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxBG,QAAAA,SAAS,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAE,GAAG,EAAV,EAAc,GAAd,CAAxB;AACD;;AAED,aAAO;AAAM,QAAA,CAAC,EAAC,uBAAR;AAAgC,QAAA,SAAS,EAAEC,SAA3C;AAAsD,QAAA,SAAS,EAAEJ;AAAjE,QAAP;AACD;;;;EA9BwBO,kBAAMC,S;;;AAiCjCf,KAAK,CAACgB,SAAN,GAAkB;AAChBb,EAAAA,CAAC,EAAEc,sBAAUC,MADG;AAEhBhB,EAAAA,CAAC,EAAEe,sBAAUC,MAFG;AAGhBV,EAAAA,SAAS,EAAES,sBAAUE,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,EAAkB,IAAlB,EAAwB,MAAxB,CAAhB,CAHK;AAIhBf,EAAAA,OAAO,EAAEa,sBAAUG,MAAV,CAAiBC,UAJV;AAKhBhB,EAAAA,SAAS,EAAEY,sBAAUK,MALL;AAMhBhB,EAAAA,KAAK,EAAEiB,YAAMC,SAAN,CAAgBH;AANP,CAAlB;AASArB,KAAK,CAACyB,YAAN,GAAqB;AACnBtB,EAAAA,CAAC,EAAE,CADgB;AAEnBD,EAAAA,CAAC,EAAE,CAFgB;AAGnBM,EAAAA,SAAS,EAAE;AAHQ,CAArB;;eAMe,wBAAWX,KAAX,EAAkBG,KAAlB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { types } from '@pie-lib/plot';\n\nconst style = {\n root: {\n fill: 'var(--arrow-color, black)'\n }\n};\n\nexport class Arrow extends React.Component {\n render() {\n const { x, y, classes, className, scale } = this.props;\n const names = classNames(classes.root, className);\n let direction = this.props.direction || 'left';\n\n const xv = scale.x(x);\n const yv = scale.y(y);\n\n let transform = '';\n\n const getTransform = (x, y, rotate) => `translate(${x}, ${y}) rotate(${rotate})`;\n\n if (direction === 'left') {\n transform = getTransform(xv - 15, yv, 0);\n }\n\n if (direction === 'right') {\n transform = getTransform(xv + 15, yv, 180);\n }\n\n if (direction === 'up') {\n transform = getTransform(xv, yv - 15, 90);\n }\n\n if (direction === 'down') {\n transform = getTransform(xv, yv + 15, 270);\n }\n\n return <path d=\"m 0,0 8,-5 0,10 -8,-5\" transform={transform} className={names} />;\n }\n}\n\nArrow.propTypes = {\n y: PropTypes.number,\n x: PropTypes.number,\n direction: PropTypes.oneOf(['left', 'right', 'up', 'down']),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n scale: types.ScaleType.isRequired\n};\n\nArrow.defaultProps = {\n y: 0,\n x: 0,\n direction: 'left'\n};\n\nexport default withStyles(style)(Arrow);\n"],"file":"arrow.js"}
|
package/lib/axis/axes.js
CHANGED
|
@@ -108,10 +108,10 @@ var tickLabelStyles = {
|
|
|
108
108
|
cursor: 'inherit'
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
var sharedValues = function sharedValues(firstNegativeX, firstNegativeY,
|
|
111
|
+
var sharedValues = function sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy) {
|
|
112
112
|
var result = [];
|
|
113
113
|
|
|
114
|
-
if (firstNegativeX === firstNegativeY &&
|
|
114
|
+
if (firstNegativeX === firstNegativeY && distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY && distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance && distanceFromOriginToFirstNegativeX - deltaAllowance < dy && dy < distanceFromOriginToFirstNegativeX + deltaAllowance) {
|
|
115
115
|
result.push(firstNegativeX);
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -148,7 +148,7 @@ function (_React$Component) {
|
|
|
148
148
|
graphProps = _this$props.graphProps,
|
|
149
149
|
columnTicksValues = _this$props.columnTicksValues,
|
|
150
150
|
skipValues = _this$props.skipValues,
|
|
151
|
-
|
|
151
|
+
distanceFromOriginToFirstNegativeY = _this$props.distanceFromOriginToFirstNegativeY,
|
|
152
152
|
dy = _this$props.dy;
|
|
153
153
|
|
|
154
154
|
var _ref = graphProps || {},
|
|
@@ -162,12 +162,7 @@ function (_React$Component) {
|
|
|
162
162
|
var tickValues = (domain.labelStep || range.labelStep) && domain.min <= 0 ? ['0'].concat(_toConsumableArray(columnTicksValues)) : columnTicksValues; // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed
|
|
163
163
|
|
|
164
164
|
var labelProps = function labelProps(label) {
|
|
165
|
-
var y = dy;
|
|
166
|
-
|
|
167
|
-
if (skipValues && skipValues[0] === label) {
|
|
168
|
-
y = distantceFromOriginToFirstNegativeY + 4;
|
|
169
|
-
}
|
|
170
|
-
|
|
165
|
+
var y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;
|
|
171
166
|
return _objectSpread({}, tickLabelStyles, {
|
|
172
167
|
textAnchor: 'middle',
|
|
173
168
|
y: y,
|
|
@@ -185,6 +180,7 @@ function (_React$Component) {
|
|
|
185
180
|
top: scale.y(0),
|
|
186
181
|
left: 0,
|
|
187
182
|
label: domain.label,
|
|
183
|
+
rangePadding: 8,
|
|
188
184
|
tickClassName: classes.tick,
|
|
189
185
|
tickFormat: function tickFormat(value) {
|
|
190
186
|
return value;
|
|
@@ -204,7 +200,7 @@ function (_React$Component) {
|
|
|
204
200
|
className: classes.arrow,
|
|
205
201
|
scale: scale
|
|
206
202
|
}), domain.axisLabel && _react["default"].createElement("foreignObject", {
|
|
207
|
-
x: size.width +
|
|
203
|
+
x: size.width + 15,
|
|
208
204
|
y: scale.y(0) - 10,
|
|
209
205
|
width: necessaryWidth,
|
|
210
206
|
height: 20 * necessaryRows
|
|
@@ -260,11 +256,7 @@ function (_React$Component2) {
|
|
|
260
256
|
var necessaryWidth = range.axisLabel ? (0, _utils.amountToIncreaseWidth)(range.axisLabel.length) : 0;
|
|
261
257
|
|
|
262
258
|
var customTickFormat = function customTickFormat(value) {
|
|
263
|
-
|
|
264
|
-
return '';
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return value;
|
|
259
|
+
return skipValues && skipValues.indexOf(value) >= 0 ? '' : value;
|
|
268
260
|
};
|
|
269
261
|
|
|
270
262
|
return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_axis.Axis, {
|
|
@@ -278,6 +270,7 @@ function (_React$Component2) {
|
|
|
278
270
|
labelProps: {
|
|
279
271
|
'data-pie-readable': false
|
|
280
272
|
},
|
|
273
|
+
rangePadding: 8,
|
|
281
274
|
tickLength: 10,
|
|
282
275
|
tickClassName: classes.tick,
|
|
283
276
|
tickFormat: customTickFormat,
|
|
@@ -306,7 +299,7 @@ function (_React$Component2) {
|
|
|
306
299
|
scale: scale
|
|
307
300
|
}), range.axisLabel && _react["default"].createElement("foreignObject", {
|
|
308
301
|
x: scale.x(0) - necessaryWidth / 2,
|
|
309
|
-
y: -
|
|
302
|
+
y: -30,
|
|
310
303
|
width: necessaryWidth,
|
|
311
304
|
height: "20"
|
|
312
305
|
}, _react["default"].createElement(_renderUi.Readable, {
|
|
@@ -369,7 +362,7 @@ function (_React$Component3) {
|
|
|
369
362
|
return {
|
|
370
363
|
columnTicksValues: ticks,
|
|
371
364
|
firstNegativeX: negative,
|
|
372
|
-
|
|
365
|
+
distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))
|
|
373
366
|
};
|
|
374
367
|
});
|
|
375
368
|
|
|
@@ -391,7 +384,7 @@ function (_React$Component3) {
|
|
|
391
384
|
return {
|
|
392
385
|
rowTickValues: ticks,
|
|
393
386
|
firstNegativeY: negative,
|
|
394
|
-
|
|
387
|
+
distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))
|
|
395
388
|
};
|
|
396
389
|
});
|
|
397
390
|
|
|
@@ -405,34 +398,31 @@ function (_React$Component3) {
|
|
|
405
398
|
|
|
406
399
|
var _ref5 = graphProps || {},
|
|
407
400
|
domain = _ref5.domain,
|
|
408
|
-
range = _ref5.range;
|
|
409
|
-
|
|
401
|
+
range = _ref5.range;
|
|
410
402
|
|
|
411
403
|
var _this$xValues = this.xValues(),
|
|
412
404
|
columnTicksValues = _this$xValues.columnTicksValues,
|
|
413
405
|
firstNegativeX = _this$xValues.firstNegativeX,
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
var result = this.xValues(); // y
|
|
406
|
+
distanceFromOriginToFirstNegativeX = _this$xValues.distanceFromOriginToFirstNegativeX;
|
|
417
407
|
|
|
418
408
|
var _this$yValues = this.yValues(),
|
|
419
409
|
rowTickValues = _this$yValues.rowTickValues,
|
|
420
410
|
firstNegativeY = _this$yValues.firstNegativeY,
|
|
421
|
-
|
|
411
|
+
distanceFromOriginToFirstNegativeY = _this$yValues.distanceFromOriginToFirstNegativeY;
|
|
422
412
|
|
|
423
413
|
var deltaAllowance = 6;
|
|
424
414
|
var dy = 25;
|
|
425
|
-
var skipValues = sharedValues(firstNegativeX, firstNegativeY,
|
|
415
|
+
var skipValues = sharedValues(firstNegativeX, firstNegativeY, distanceFromOriginToFirstNegativeX, distanceFromOriginToFirstNegativeY, deltaAllowance, dy); // each axis has to be displayed only if the domain & range include it
|
|
426
416
|
|
|
427
417
|
return _react["default"].createElement(_react["default"].Fragment, null, range.min <= 0 ? _react["default"].createElement(XAxis, _extends({}, this.props, {
|
|
428
418
|
skipValues: skipValues,
|
|
429
419
|
columnTicksValues: columnTicksValues,
|
|
430
|
-
|
|
420
|
+
distanceFromOriginToFirstNegativeY: distanceFromOriginToFirstNegativeY,
|
|
431
421
|
dy: dy
|
|
432
422
|
})) : null, domain.min <= 0 ? _react["default"].createElement(YAxis, _extends({}, this.props, {
|
|
433
423
|
skipValues: skipValues,
|
|
434
424
|
rowTickValues: rowTickValues,
|
|
435
|
-
|
|
425
|
+
distanceFromOriginToFirstNegativeX: distanceFromOriginToFirstNegativeX
|
|
436
426
|
})) : null);
|
|
437
427
|
}
|
|
438
428
|
}]);
|
package/lib/axis/axes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distantceFromOriginToFirstNegativeX","distantceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < distantceFromOriginToFirstNegativeY &&\n distantceFromOriginToFirstNegativeY < distantceFromOriginToFirstNegativeX + deltaAllowance &&\n distantceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distantceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distantceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n let y = dy;\n\n if (skipValues && skipValues[0] === label) {\n y = distantceFromOriginToFirstNegativeY + 4;\n }\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 10}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => {\n if (skipValues && skipValues.indexOf(value) >= 0) {\n return '';\n }\n\n return value;\n };\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n const digits = value.toLocaleString().length || 1;\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -8 - digits * 5,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-25}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distantceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distantceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n\n // x\n const {\n columnTicksValues,\n firstNegativeX,\n distantceFromOriginToFirstNegativeX\n } = this.xValues();\n const result = this.xValues();\n\n // y\n const { rowTickValues, firstNegativeY, distantceFromOriginToFirstNegativeY } = this.yValues();\n\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distantceFromOriginToFirstNegativeX,\n distantceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distantceFromOriginToFirstNegativeY={distantceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distantceFromOriginToFirstNegativeX={distantceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/axis/axes.jsx"],"names":["AxisPropTypes","includeArrows","PropTypes","object","graphProps","AxisDefaultProps","left","right","up","down","axisStyles","theme","line","stroke","color","primary","strokeWidth","arrow","fill","tick","labelFontSize","fontSize","typography","axisLabelHolder","padding","margin","textAlign","tickLabelStyles","fontFamily","cursor","sharedValues","firstNegativeX","firstNegativeY","distanceFromOriginToFirstNegativeX","distanceFromOriginToFirstNegativeY","deltaAllowance","dy","result","push","firstNegativeValue","interval","find","element","RawXAxis","props","classes","columnTicksValues","skipValues","scale","domain","size","range","tickValues","labelStep","min","labelProps","label","y","textAnchor","dx","necessaryRows","axisLabel","longestWord","necessaryWidth","x","value","max","width","__html","React","Component","types","GraphPropsType","isRequired","XAxis","RawYAxis","rowTickValues","length","customTickFormat","indexOf","height","digits","toLocaleString","YAxis","Axes","ticks","step","negative","Math","abs","xValues","yValues"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Axis } from '@vx/axis';\nimport { types } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport Arrow from './arrow';\nimport { withStyles } from '@material-ui/core';\nimport { countWords, findLongestWord, amountToIncreaseWidth, getTickValues } from '../utils';\nimport { color, Readable } from '@pie-lib/render-ui';\n\nexport const AxisPropTypes = {\n includeArrows: PropTypes.object,\n graphProps: PropTypes.object\n};\n\nconst AxisDefaultProps = {\n includeArrows: {\n left: true,\n right: true,\n up: true,\n down: true\n }\n};\n\nconst axisStyles = theme => ({\n line: {\n stroke: color.primary(),\n strokeWidth: 5\n },\n arrow: {\n fill: color.primary()\n },\n tick: {\n fill: color.primary(),\n '& > line': {\n stroke: color.primary()\n }\n },\n labelFontSize: {\n fontSize: theme.typography.fontSize\n },\n axisLabelHolder: {\n padding: 0,\n margin: 0,\n textAlign: 'center',\n '* > *': {\n margin: 0,\n padding: 0\n },\n fontSize: theme.typography.fontSize\n }\n});\n\nconst tickLabelStyles = {\n fontFamily: 'Roboto',\n fontSize: '14px',\n cursor: 'inherit'\n};\n\nexport const sharedValues = (\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n) => {\n let result = [];\n\n if (\n firstNegativeX === firstNegativeY &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY &&\n distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance &&\n distanceFromOriginToFirstNegativeX - deltaAllowance < dy &&\n dy < distanceFromOriginToFirstNegativeX + deltaAllowance\n ) {\n result.push(firstNegativeX);\n }\n\n return result;\n};\n\nexport const firstNegativeValue = interval => (interval || []).find(element => element < 0);\n\nexport class RawXAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const {\n includeArrows,\n classes,\n graphProps,\n columnTicksValues,\n skipValues,\n distanceFromOriginToFirstNegativeY,\n dy\n } = this.props;\n const { scale, domain, size, range } = graphProps || {};\n\n // Having 0 as a number in columnTicksValues does not make 0 to show up\n // so we use this trick, by defining it as a string:\n const tickValues =\n (domain.labelStep || range.labelStep) && domain.min <= 0\n ? ['0', ...columnTicksValues]\n : columnTicksValues;\n // However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed\n\n const labelProps = label => {\n const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;\n\n return {\n ...tickLabelStyles,\n textAnchor: 'middle',\n y: y,\n dx: label === '0' ? -10 : 0,\n dy: label === '0' ? -7 : 0\n };\n };\n\n const necessaryRows = countWords(domain.axisLabel);\n const longestWord = findLongestWord(domain.axisLabel);\n const necessaryWidth = amountToIncreaseWidth(longestWord);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n scale={scale.x}\n top={scale.y(0)}\n left={0}\n label={domain.label}\n rangePadding={8}\n tickClassName={classes.tick}\n tickFormat={value => value}\n tickLabelProps={labelProps}\n tickValues={tickValues}\n />\n {includeArrows && includeArrows.left && (\n <Arrow direction=\"left\" x={domain.min} y={0} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.right && (\n <Arrow direction=\"right\" x={domain.max} y={0} className={classes.arrow} scale={scale} />\n )}\n {domain.axisLabel && (\n <foreignObject\n x={size.width + 15}\n y={scale.y(0) - 10}\n width={necessaryWidth}\n height={20 * necessaryRows}\n >\n <div\n dangerouslySetInnerHTML={{ __html: domain.axisLabel }}\n className={classes.labelFontSize}\n />\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst XAxis = withStyles(axisStyles)(RawXAxis);\n\nexport class RawYAxis extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n render() {\n const { classes, includeArrows, graphProps, skipValues, rowTickValues } = this.props;\n const { scale, range, size } = graphProps || {};\n\n const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;\n\n const customTickFormat = value => (skipValues && skipValues.indexOf(value) >= 0 ? '' : value);\n\n return (\n <React.Fragment>\n <Axis\n axisLineClassName={classes.line}\n orientation={'left'}\n scale={scale.y}\n top={0}\n height={size.height}\n left={scale.x(0)}\n label={range.label}\n labelProps={{ 'data-pie-readable': false }}\n rangePadding={8}\n tickLength={10}\n tickClassName={classes.tick}\n tickFormat={customTickFormat}\n tickLabelProps={value => {\n const digits = value.toLocaleString().length || 1;\n return {\n ...tickLabelStyles,\n dy: 4,\n dx: -8 - digits * 5,\n 'data-pie-readable': false\n };\n }}\n hideZero={true}\n tickTextAnchor={'bottom'}\n tickValues={rowTickValues}\n />\n\n {includeArrows && includeArrows.down && (\n <Arrow direction=\"down\" x={0} y={range.min} className={classes.arrow} scale={scale} />\n )}\n {includeArrows && includeArrows.up && (\n <Arrow direction=\"up\" x={0} y={range.max} className={classes.arrow} scale={scale} />\n )}\n {range.axisLabel && (\n <foreignObject\n x={scale.x(0) - necessaryWidth / 2}\n y={-30}\n width={necessaryWidth}\n height=\"20\"\n >\n <Readable false>\n <div\n dangerouslySetInnerHTML={{ __html: range.axisLabel }}\n className={classes.axisLabelHolder}\n />\n </Readable>\n </foreignObject>\n )}\n </React.Fragment>\n );\n }\n}\n\nconst YAxis = withStyles(axisStyles)(RawYAxis);\n\nexport default class Axes extends React.Component {\n static propTypes = {\n ...AxisPropTypes,\n classes: PropTypes.object,\n graphProps: types.GraphPropsType.isRequired\n };\n static defaultProps = AxisDefaultProps;\n\n xValues = () => {\n const { graphProps } = this.props;\n const { scale, domain } = graphProps || {};\n\n if (!domain || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...domain, step: domain.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n columnTicksValues: ticks,\n firstNegativeX: negative,\n distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))\n };\n };\n\n yValues = () => {\n const { graphProps } = this.props;\n const { scale, range } = graphProps || {};\n\n if (!range || !scale) {\n return;\n }\n\n const ticks = getTickValues({ ...range, step: range.labelStep });\n const negative = firstNegativeValue(ticks);\n\n return {\n rowTickValues: ticks,\n firstNegativeY: negative,\n distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))\n };\n };\n\n render() {\n const { graphProps } = this.props;\n const { domain, range } = graphProps || {};\n const {\n columnTicksValues,\n firstNegativeX,\n distanceFromOriginToFirstNegativeX\n } = this.xValues();\n const { rowTickValues, firstNegativeY, distanceFromOriginToFirstNegativeY } = this.yValues();\n const deltaAllowance = 6;\n const dy = 25;\n\n const skipValues = sharedValues(\n firstNegativeX,\n firstNegativeY,\n distanceFromOriginToFirstNegativeX,\n distanceFromOriginToFirstNegativeY,\n deltaAllowance,\n dy\n );\n\n // each axis has to be displayed only if the domain & range include it\n return (\n <React.Fragment>\n {range.min <= 0 ? (\n <XAxis\n {...this.props}\n skipValues={skipValues}\n columnTicksValues={columnTicksValues}\n distanceFromOriginToFirstNegativeY={distanceFromOriginToFirstNegativeY}\n dy={dy}\n />\n ) : null}\n {domain.min <= 0 ? (\n <YAxis\n {...this.props}\n skipValues={skipValues}\n rowTickValues={rowTickValues}\n distanceFromOriginToFirstNegativeX={distanceFromOriginToFirstNegativeX}\n />\n ) : null}\n </React.Fragment>\n );\n }\n}\n"],"file":"axes.js"}
|
package/lib/graph.js
CHANGED
|
@@ -86,10 +86,10 @@ exports.graphPropTypes = graphPropTypes;
|
|
|
86
86
|
|
|
87
87
|
var getMaskSize = function getMaskSize(size) {
|
|
88
88
|
return {
|
|
89
|
-
x: -
|
|
90
|
-
y: -
|
|
91
|
-
width: size.width +
|
|
92
|
-
height: size.height +
|
|
89
|
+
x: -23,
|
|
90
|
+
y: -23,
|
|
91
|
+
width: size.width + 46,
|
|
92
|
+
height: size.height + 46
|
|
93
93
|
};
|
|
94
94
|
};
|
|
95
95
|
|
package/lib/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -10,\n y: -10,\n width: size.width + 20,\n height: size.height + 20\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}
|
|
1
|
+
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","setState","labelNode","oldMark","newMark","props","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","addPoint","undefined","graphProps","rootNode","maskSize","common","r","onBgClick","map","getComponent","markType","disabled","changeMark","completeMark","point","startDrag","stopDrag","state","pointerEvents","React","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = ({ x, y }, mark) => {\n log('[onBgClick] x,y: ', x, y);\n\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n if (labelModeEnabled || !currentTool || mark) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n // left side requires an extra padding of 10, in order to fit next to tick labels like 1.5, 1.55...\n paddingLeft={60}\n rootRef={r => (this.rootNode = r)}\n title={title}\n {...common}\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <Labels value={labels} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true }}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={point => this.onBgClick(point, m)}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"file":"graph.js"}
|
|
@@ -19,6 +19,8 @@ var _styles = require("@material-ui/core/styles");
|
|
|
19
19
|
|
|
20
20
|
var _arrowHead = require("../shared/arrow-head");
|
|
21
21
|
|
|
22
|
+
var _utils = require("../../utils");
|
|
23
|
+
|
|
22
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
23
25
|
|
|
24
26
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -62,13 +64,18 @@ var ArrowedLine = function ArrowedLine(props) {
|
|
|
62
64
|
|
|
63
65
|
var scale = graphProps.scale;
|
|
64
66
|
|
|
65
|
-
var
|
|
67
|
+
var _getAdjustedGraphLimi = (0, _utils.getAdjustedGraphLimits)(graphProps),
|
|
68
|
+
domain = _getAdjustedGraphLimi.domain,
|
|
69
|
+
range = _getAdjustedGraphLimi.range;
|
|
70
|
+
|
|
71
|
+
var _trig$edges = _plot.trig.edges(domain, range)(from, to),
|
|
66
72
|
_trig$edges2 = _slicedToArray(_trig$edges, 2),
|
|
67
73
|
eFrom = _trig$edges2[0],
|
|
68
74
|
eTo = _trig$edges2[1];
|
|
69
75
|
|
|
70
76
|
var suffix = correctness || disabled && 'disabled' || 'enabled';
|
|
71
77
|
return _react["default"].createElement("g", null, _react["default"].createElement("defs", null, _react["default"].createElement(_arrowHead.ArrowMarker, {
|
|
78
|
+
size: (0, _utils.thinnerShapesNeeded)(graphProps) ? 4 : 5,
|
|
72
79
|
id: "".concat(props.markerId || markerId, "-").concat(suffix),
|
|
73
80
|
className: (0, _classnames["default"])(classes["".concat(suffix, "Arrow")])
|
|
74
81
|
})), _react["default"].createElement("line", _extends({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/line/component.jsx"],"names":["markerId","lineStyles","theme","line","styles","enabledArrow","arrow","disabledArrow","disabled","correct","correctArrow","incorrect","incorrectArrow","ArrowedLine","props","className","classes","correctness","graphProps","from","to","rest","scale","
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/line/component.jsx"],"names":["markerId","lineStyles","theme","line","styles","enabledArrow","arrow","disabledArrow","disabled","correct","correctArrow","incorrect","incorrectArrow","ArrowedLine","props","className","classes","correctness","graphProps","from","to","rest","scale","domain","range","trig","edges","eFrom","eTo","suffix","x","y","propTypes","PropTypes","string","object","bool","types","GraphPropsType","PointType","StyledArrowedLine","Line","Component"],"mappings":"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","sourcesContent":["import { lineToolComponent, lineBase, styles } from '../shared/line';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { trig, types } from '@pie-lib/plot';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { ArrowMarker, genUid } from '../shared/arrow-head';\nimport { thinnerShapesNeeded, getAdjustedGraphLimits } from '../../utils';\n\nconst markerId = genUid();\n\nconst lineStyles = theme => ({\n line: styles.line(theme),\n enabledArrow: styles.arrow(theme),\n disabledArrow: styles.disabledArrow(theme),\n disabled: styles.disabled(theme),\n correct: styles.correct(theme, 'stroke'),\n correctArrow: styles.correct(theme),\n incorrect: styles.incorrect(theme, 'stroke'),\n incorrectArrow: styles.incorrect(theme)\n});\n\nexport const ArrowedLine = props => {\n const { className, classes, correctness, disabled, graphProps, from, to, ...rest } = props;\n const { scale } = graphProps;\n const { domain, range } = getAdjustedGraphLimits(graphProps);\n const [eFrom, eTo] = trig.edges(domain, range)(from, to);\n const suffix = correctness || (disabled && 'disabled') || 'enabled';\n\n return (\n <g>\n <defs>\n <ArrowMarker\n size={thinnerShapesNeeded(graphProps) ? 4 : 5}\n id={`${props.markerId || markerId}-${suffix}`}\n className={classNames(classes[`${suffix}Arrow`])}\n />\n </defs>\n <line\n x1={scale.x(eFrom.x)}\n y1={scale.y(eFrom.y)}\n x2={scale.x(eTo.x)}\n y2={scale.y(eTo.y)}\n className={classNames(\n classes.line,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n markerEnd={`url(#${props.markerId || markerId}-${suffix})`}\n markerStart={`url(#${props.markerId || markerId}-${suffix})`}\n {...rest}\n />\n </g>\n );\n};\n\nArrowedLine.propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n graphProps: types.GraphPropsType,\n from: types.PointType,\n to: types.PointType,\n markerId: PropTypes.string\n};\n\nconst StyledArrowedLine = withStyles(lineStyles)(ArrowedLine);\n\nconst Line = lineBase(StyledArrowedLine);\nconst Component = lineToolComponent(Line);\n\nexport default Component;\n"],"file":"component.js"}
|
|
@@ -19,6 +19,8 @@ var _styles = require("@material-ui/core/styles");
|
|
|
19
19
|
|
|
20
20
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
21
21
|
|
|
22
|
+
var _utils = require("../../utils");
|
|
23
|
+
|
|
22
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
23
25
|
|
|
24
26
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -62,12 +64,17 @@ var RayLine = function RayLine(props) {
|
|
|
62
64
|
|
|
63
65
|
var scale = graphProps.scale;
|
|
64
66
|
|
|
65
|
-
var
|
|
67
|
+
var _getAdjustedGraphLimi = (0, _utils.getAdjustedGraphLimits)(graphProps),
|
|
68
|
+
domain = _getAdjustedGraphLimi.domain,
|
|
69
|
+
range = _getAdjustedGraphLimi.range;
|
|
70
|
+
|
|
71
|
+
var _trig$edges = _plot.trig.edges(domain, range)(from, to),
|
|
66
72
|
_trig$edges2 = _slicedToArray(_trig$edges, 1),
|
|
67
73
|
aToB = _trig$edges2[0];
|
|
68
74
|
|
|
69
75
|
var suffix = correctness || disabled && 'disabled' || 'enabled';
|
|
70
76
|
return _react["default"].createElement("g", null, _react["default"].createElement("defs", null, _react["default"].createElement(_arrowHead.ArrowMarker, {
|
|
77
|
+
size: (0, _utils.thinnerShapesNeeded)(graphProps) ? 4 : 5,
|
|
71
78
|
id: "".concat(props.markerId || markerId, "-").concat(suffix),
|
|
72
79
|
className: (0, _classnames["default"])(classes["".concat(suffix, "Arrow")])
|
|
73
80
|
})), _react["default"].createElement("line", _extends({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/ray/component.jsx"],"names":["markerId","rayStyles","theme","line","styles","enabledArrow","arrow","disabledArrow","disabled","correct","correctArrow","incorrect","incorrectArrow","RayLine","props","graphProps","from","to","classes","correctness","className","rest","scale","
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/ray/component.jsx"],"names":["markerId","rayStyles","theme","line","styles","enabledArrow","arrow","disabledArrow","disabled","correct","correctArrow","incorrect","incorrectArrow","RayLine","props","graphProps","from","to","classes","correctness","className","rest","scale","domain","range","trig","edges","aToB","suffix","x","y","propTypes","PropTypes","object","string","bool","any","types","PointType","StyledRay","Ray","Component"],"mappings":"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","sourcesContent":["import { lineToolComponent, lineBase, styles } from '../shared/line';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { ArrowMarker, genUid } from '../shared/arrow-head';\nimport { trig, types } from '@pie-lib/plot';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { thinnerShapesNeeded, getAdjustedGraphLimits } from '../../utils';\n\nconst markerId = genUid();\n\nconst rayStyles = theme => ({\n line: styles.line(theme),\n enabledArrow: styles.arrow(theme),\n disabledArrow: styles.disabledArrow(theme),\n disabled: styles.disabled(theme),\n correct: styles.correct(theme, 'stroke'),\n correctArrow: styles.correct(theme),\n incorrect: styles.incorrect(theme, 'stroke'),\n incorrectArrow: styles.incorrect(theme)\n});\n\nexport const RayLine = props => {\n const { graphProps, from, to, classes, disabled, correctness, className, ...rest } = props;\n const { scale } = graphProps;\n const { domain, range } = getAdjustedGraphLimits(graphProps);\n const [aToB] = trig.edges(domain, range)(from, to);\n const suffix = correctness || (disabled && 'disabled') || 'enabled';\n\n return (\n <g>\n <defs>\n <ArrowMarker\n size={thinnerShapesNeeded(graphProps) ? 4 : 5}\n id={`${props.markerId || markerId}-${suffix}`}\n className={classNames(classes[`${suffix}Arrow`])}\n />\n </defs>\n <line\n x1={scale.x(from.x)}\n y1={scale.y(from.y)}\n x2={scale.x(aToB.x)}\n y2={scale.y(aToB.y)}\n {...rest}\n className={classNames(\n classes.line,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n markerEnd={`url(#${props.markerId || markerId}-${suffix})`}\n />\n </g>\n );\n};\n\nRayLine.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n graphProps: PropTypes.any,\n from: types.PointType,\n to: types.PointType,\n markerId: PropTypes.string\n};\n\nconst StyledRay = withStyles(rayStyles)(RayLine);\n\nconst Ray = lineBase(StyledRay);\nconst Component = lineToolComponent(Ray);\n\nexport default Component;\n"],"file":"component.js"}
|
|
@@ -15,6 +15,8 @@ var _plot = require("@pie-lib/plot");
|
|
|
15
15
|
|
|
16
16
|
var _arrowHead = require("../arrow-head");
|
|
17
17
|
|
|
18
|
+
var _utils = require("../../../utils");
|
|
19
|
+
|
|
18
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
21
|
|
|
20
22
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
@@ -91,7 +93,7 @@ function (_React$Component) {
|
|
|
91
93
|
graphProps = _this$props.graphProps,
|
|
92
94
|
rest = _objectWithoutProperties(_this$props, ["classes", "angle", "className", "x", "y", "disabled", "correctness", "graphProps"]);
|
|
93
95
|
|
|
94
|
-
var size = 14;
|
|
96
|
+
var size = (0, _utils.thinnerShapesNeeded)(graphProps) ? 12 : 14;
|
|
95
97
|
var scale = graphProps.scale;
|
|
96
98
|
var scaledX = scale.x(x);
|
|
97
99
|
var scaledY = scale.y(y);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/tools/shared/point/arrow.jsx"],"names":["Arrow","currentAngle","referenceAngle","x","y","breakpoint","firstBreakpoint","secondBreakpoint","t","props","classes","angle","className","disabled","correctness","graphProps","rest","size","scale","scaledX","scaledY","transform","points","getRotation","getRotationWithBreakpoint","point","React","Component","PropTypes","object","string","bool","number","isRequired","types","GraphPropsType"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEqBA,K;;;;;;;;;;;;;gCAYPC,Y,EAAcC,c,EAAgBC,C,EAAGC,C,EAAG;AAC9C,UAAMC,UAAU,GAAGH,cAAc,GAAG,EAApC;AACA,8BAAiB,CAACD,YAAD,IAAiBA,YAAY,GAAGI,UAAf,GAA4B,EAA5B,GAAiC,CAAlD,CAAjB,eAA0EF,CAA1E,cAA+EC,CAA/E;AACD;;;8CAEyBH,Y,EAAcC,c,EAAgBC,C,EAAGC,C,EAAG;AAC5D,UAAME,eAAe,GAAGJ,cAAc,GAAG,EAAzC;AACA,UAAMK,gBAAgB,GAAGL,cAAc,GAAG,EAA1C;AACA,UAAIM,CAAJ;;AACA,UAAIP,YAAY,IAAIK,eAAhB,IAAmCL,YAAY,GAAGM,gBAAtD,EAAwE;AACtEC,QAAAA,CAAC,GAAG,EAAJ;AACD,OAFD,MAEO,IAAIP,YAAY,GAAGM,gBAAnB,EAAqC;AAC1CC,QAAAA,CAAC,GAAG,CAAJ;AACD,OAFM,MAEA;AACLA,QAAAA,CAAC,GAAG,CAAJ;AACD;;AACD,8BAAiB,CAACP,YAAD,GAAgBO,CAAjC,eAAuCL,CAAvC,cAA4CC,CAA5C;AACD;;;6BAEQ;AAAA,wBAWH,KAAKK,KAXF;AAAA,UAELC,OAFK,eAELA,OAFK;AAAA,UAGLC,KAHK,eAGLA,KAHK;AAAA,UAILC,SAJK,eAILA,SAJK;AAAA,UAKLT,CALK,eAKLA,CALK;AAAA,UAMLC,CANK,eAMLA,CANK;AAAA,UAOLS,QAPK,eAOLA,QAPK;AAAA,UAQLC,WARK,eAQLA,WARK;AAAA,UASLC,UATK,eASLA,UATK;AAAA,UAUFC,IAVE;;AAaP,UAAMC,IAAI,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/tools/shared/point/arrow.jsx"],"names":["Arrow","currentAngle","referenceAngle","x","y","breakpoint","firstBreakpoint","secondBreakpoint","t","props","classes","angle","className","disabled","correctness","graphProps","rest","size","scale","scaledX","scaledY","transform","points","getRotation","getRotationWithBreakpoint","point","React","Component","PropTypes","object","string","bool","number","isRequired","types","GraphPropsType"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { types } from '@pie-lib/plot';\nimport { ArrowHead } from '../arrow-head';\nimport { thinnerShapesNeeded } from '../../../utils';\n\nexport default class Arrow extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n angle: PropTypes.number.isRequired,\n graphProps: types.GraphPropsType.isRequired\n };\n\n getRotation(currentAngle, referenceAngle, x, y) {\n const breakpoint = referenceAngle + 10;\n return `rotate(${-currentAngle - (currentAngle > breakpoint ? 15 : 0)}, ${x},${y})`;\n }\n\n getRotationWithBreakpoint(currentAngle, referenceAngle, x, y) {\n const firstBreakpoint = referenceAngle + 10;\n const secondBreakpoint = referenceAngle + 65;\n let t;\n if (currentAngle >= firstBreakpoint && currentAngle < secondBreakpoint) {\n t = 15;\n } else if (currentAngle > secondBreakpoint) {\n t = 7;\n } else {\n t = 0;\n }\n return `rotate(${-currentAngle + t}, ${x},${y})`;\n }\n\n render() {\n const {\n classes,\n angle,\n className,\n x,\n y,\n disabled,\n correctness,\n graphProps,\n ...rest\n } = this.props;\n\n const size = thinnerShapesNeeded(graphProps) ? 12 : 14;\n const { scale } = graphProps;\n\n const scaledX = scale.x(x);\n const scaledY = scale.y(y);\n\n let transform;\n const points = `${scaledX},${scaledY}\n ${scaledX - size},${scaledY - size / 2}\n ${scaledX - size}, ${scaledY + size / 2}`;\n\n if (angle >= 0 && angle < 90) {\n transform = this.getRotation(angle, 0, scaledX, scaledY);\n } else if (angle >= 90 && angle < 180) {\n transform = this.getRotationWithBreakpoint(angle, 90, scaledX, scaledY);\n } else if (angle >= 180 && angle < 270) {\n transform = this.getRotation(angle, 180, scaledX, scaledY);\n } else {\n transform = this.getRotationWithBreakpoint(angle, 280, scaledX, scaledY);\n }\n\n return (\n <g\n className={classNames(\n classes.point,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n {...rest}\n >\n <ArrowHead size={size} transform={transform} points={points} />\n </g>\n );\n }\n}\n"],"file":"arrow.js"}
|
|
@@ -17,6 +17,8 @@ var _coordinatesLabel = _interopRequireDefault(require("../../../coordinates-lab
|
|
|
17
17
|
|
|
18
18
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
19
19
|
|
|
20
|
+
var _utils = require("../../../utils");
|
|
21
|
+
|
|
20
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
23
|
|
|
22
24
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
@@ -81,6 +83,7 @@ function (_React$Component) {
|
|
|
81
83
|
|
|
82
84
|
var showCoordinates = this.state.showCoordinates;
|
|
83
85
|
var scale = graphProps.scale;
|
|
86
|
+
var r = (0, _utils.thinnerShapesNeeded)(graphProps) ? 5 : 7;
|
|
84
87
|
return _react["default"].createElement("g", _extends({
|
|
85
88
|
className: (0, _classnames["default"])(classes.point, disabled && classes.disabled, classes[correctness], className),
|
|
86
89
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -94,7 +97,7 @@ function (_React$Component) {
|
|
|
94
97
|
});
|
|
95
98
|
}
|
|
96
99
|
}, rest), _react["default"].createElement("circle", {
|
|
97
|
-
r:
|
|
100
|
+
r: r,
|
|
98
101
|
cx: scale.x(x),
|
|
99
102
|
cy: scale.y(y)
|
|
100
103
|
}), labelNode && coordinatesOnHover && showCoordinates && _reactDom["default"].createPortal(_react["default"].createElement(_coordinatesLabel["default"], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/tools/shared/point/base-point.jsx"],"names":["RawBp","props","state","showCoordinates","classes","className","coordinatesOnHover","x","y","disabled","correctness","graphProps","labelNode","rest","scale","point","setState","ReactDOM","createPortal","React","Component","PropTypes","object","string","bool","number","types","GraphPropsType","isRequired"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,K;;;;;AAaX,iBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,+EAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AAAEC,MAAAA,eAAe,EAAE;AAAnB,KAAb;AAFiB;AAGlB;;;;6BAEQ;AAAA;;AAAA,wBAYH,KAAKF,KAZF;AAAA,UAELG,OAFK,eAELA,OAFK;AAAA,UAGLC,SAHK,eAGLA,SAHK;AAAA,UAILC,kBAJK,eAILA,kBAJK;AAAA,UAKLC,CALK,eAKLA,CALK;AAAA,UAMLC,CANK,eAMLA,CANK;AAAA,UAOLC,QAPK,eAOLA,QAPK;AAAA,UAQLC,WARK,eAQLA,WARK;AAAA,UASLC,UATK,eASLA,UATK;AAAA,UAULC,SAVK,eAULA,SAVK;AAAA,UAWFC,IAXE;;AAAA,UAaCV,eAbD,GAaqB,KAAKD,KAb1B,CAaCC,eAbD;AAAA,UAcCW,KAdD,GAcWH,UAdX,CAcCG,KAdD;
|
|
1
|
+
{"version":3,"sources":["../../../../src/tools/shared/point/base-point.jsx"],"names":["RawBp","props","state","showCoordinates","classes","className","coordinatesOnHover","x","y","disabled","correctness","graphProps","labelNode","rest","scale","r","point","setState","ReactDOM","createPortal","React","Component","PropTypes","object","string","bool","number","types","GraphPropsType","isRequired"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,K;;;;;AAaX,iBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,+EAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AAAEC,MAAAA,eAAe,EAAE;AAAnB,KAAb;AAFiB;AAGlB;;;;6BAEQ;AAAA;;AAAA,wBAYH,KAAKF,KAZF;AAAA,UAELG,OAFK,eAELA,OAFK;AAAA,UAGLC,SAHK,eAGLA,SAHK;AAAA,UAILC,kBAJK,eAILA,kBAJK;AAAA,UAKLC,CALK,eAKLA,CALK;AAAA,UAMLC,CANK,eAMLA,CANK;AAAA,UAOLC,QAPK,eAOLA,QAPK;AAAA,UAQLC,WARK,eAQLA,WARK;AAAA,UASLC,UATK,eASLA,UATK;AAAA,UAULC,SAVK,eAULA,SAVK;AAAA,UAWFC,IAXE;;AAAA,UAaCV,eAbD,GAaqB,KAAKD,KAb1B,CAaCC,eAbD;AAAA,UAcCW,KAdD,GAcWH,UAdX,CAcCG,KAdD;AAeP,UAAMC,CAAC,GAAG,gCAAoBJ,UAApB,IAAkC,CAAlC,GAAsC,CAAhD;AAEA,aACE;AACE,QAAA,SAAS,EAAE,4BACTP,OAAO,CAACY,KADC,EAETP,QAAQ,IAAIL,OAAO,CAACK,QAFX,EAGTL,OAAO,CAACM,WAAD,CAHE,EAITL,SAJS,CADb;AAOE,QAAA,YAAY,EAAE;AAAA,iBAAM,MAAI,CAACY,QAAL,CAAc;AAAEd,YAAAA,eAAe,EAAE;AAAnB,WAAd,CAAN;AAAA,SAPhB;AAQE,QAAA,YAAY,EAAE;AAAA,iBAAM,MAAI,CAACc,QAAL,CAAc;AAAEd,YAAAA,eAAe,EAAE;AAAnB,WAAd,CAAN;AAAA;AARhB,SASMU,IATN,GAWE;AAAQ,QAAA,CAAC,EAAEE,CAAX;AAAc,QAAA,EAAE,EAAED,KAAK,CAACP,CAAN,CAAQA,CAAR,CAAlB;AAA8B,QAAA,EAAE,EAAEO,KAAK,CAACN,CAAN,CAAQA,CAAR;AAAlC,QAXF,EAYGI,SAAS,IACRN,kBADD,IAECH,eAFD,IAGCe,qBAASC,YAAT,CACE,gCAAC,4BAAD;AAAkB,QAAA,UAAU,EAAER,UAA9B;AAA0C,QAAA,CAAC,EAAEJ,CAA7C;AAAgD,QAAA,CAAC,EAAEC;AAAnD,QADF,EAEEI,SAFF,CAfJ,CADF;AAsBD;;;;EAzDwBQ,kBAAMC,S;;;;gBAApBrB,K,eACQ;AACjBI,EAAAA,OAAO,EAAEkB,sBAAUC,MADF;AAEjBlB,EAAAA,SAAS,EAAEiB,sBAAUE,MAFJ;AAGjBlB,EAAAA,kBAAkB,EAAEgB,sBAAUG,IAHb;AAIjBf,EAAAA,WAAW,EAAEY,sBAAUE,MAJN;AAKjBf,EAAAA,QAAQ,EAAEa,sBAAUG,IALH;AAMjBb,EAAAA,SAAS,EAAEU,sBAAUC,MANJ;AAOjBhB,EAAAA,CAAC,EAAEe,sBAAUI,MAPI;AAQjBlB,EAAAA,CAAC,EAAEc,sBAAUI,MARI;AASjBf,EAAAA,UAAU,EAAEgB,YAAMC,cAAN,CAAqBC;AAThB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { types } from '@pie-lib/plot';\nimport CoordinatesLabel from '../../../coordinates-label';\nimport ReactDOM from 'react-dom';\nimport { thinnerShapesNeeded } from '../../../utils';\n\nexport class RawBp extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n coordinatesOnHover: PropTypes.bool,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n labelNode: PropTypes.object,\n x: PropTypes.number,\n y: PropTypes.number,\n graphProps: types.GraphPropsType.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = { showCoordinates: false };\n }\n\n render() {\n const {\n classes,\n className,\n coordinatesOnHover,\n x,\n y,\n disabled,\n correctness,\n graphProps,\n labelNode,\n ...rest\n } = this.props;\n const { showCoordinates } = this.state;\n const { scale } = graphProps;\n const r = thinnerShapesNeeded(graphProps) ? 5 : 7;\n\n return (\n <g\n className={classNames(\n classes.point,\n disabled && classes.disabled,\n classes[correctness],\n className\n )}\n onMouseEnter={() => this.setState({ showCoordinates: true })}\n onMouseLeave={() => this.setState({ showCoordinates: false })}\n {...rest}\n >\n <circle r={r} cx={scale.x(x)} cy={scale.y(y)} />\n {labelNode &&\n coordinatesOnHover &&\n showCoordinates &&\n ReactDOM.createPortal(\n <CoordinatesLabel graphProps={graphProps} x={x} y={y} />,\n labelNode\n )}\n </g>\n );\n }\n}\n"],"file":"base-point.js"}
|
package/lib/utils.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.equalPoints = exports.sameAxes = exports.roundNumber = exports.getMiddleOfTwoPoints = exports.getRightestPoints = exports.isDomainRangeEqual = exports.pointsToArea = exports.lineToArea = exports.polygonToArea = exports.amountToIncreaseWidth = exports.findLongestWord = exports.countWords = exports.getTickValues = exports.arrowDimensions = exports.getAngleDeg = exports.point = exports.bounds = exports.tickCount = void 0;
|
|
6
|
+
exports.getAdjustedGraphLimits = exports.thinnerShapesNeeded = exports.equalPoints = exports.sameAxes = exports.roundNumber = exports.getMiddleOfTwoPoints = exports.getRightestPoints = exports.isDomainRangeEqual = exports.pointsToArea = exports.lineToArea = exports.polygonToArea = exports.amountToIncreaseWidth = exports.findLongestWord = exports.countWords = exports.getTickValues = exports.arrowDimensions = exports.getAngleDeg = exports.point = exports.bounds = exports.tickCount = void 0;
|
|
7
7
|
|
|
8
8
|
var _head = _interopRequireDefault(require("lodash/head"));
|
|
9
9
|
|
|
@@ -194,4 +194,49 @@ var equalPoints = function equalPoints(p1, p2) {
|
|
|
194
194
|
};
|
|
195
195
|
|
|
196
196
|
exports.equalPoints = equalPoints;
|
|
197
|
+
|
|
198
|
+
var getDistanceBetweenTicks = function getDistanceBetweenTicks(axis, size) {
|
|
199
|
+
var min = axis.min,
|
|
200
|
+
max = axis.max,
|
|
201
|
+
step = axis.step;
|
|
202
|
+
var nbOfTicks = (max - min) / step;
|
|
203
|
+
return size / nbOfTicks;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
var thinnerShapesNeeded = function thinnerShapesNeeded(graphProps) {
|
|
207
|
+
var domain = graphProps.domain,
|
|
208
|
+
range = graphProps.range,
|
|
209
|
+
_graphProps$size = graphProps.size,
|
|
210
|
+
width = _graphProps$size.width,
|
|
211
|
+
height = _graphProps$size.height; // 14 is the default width of a point
|
|
212
|
+
|
|
213
|
+
return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
exports.thinnerShapesNeeded = thinnerShapesNeeded;
|
|
217
|
+
|
|
218
|
+
var getAdjustedGraphLimits = function getAdjustedGraphLimits(graphProps) {
|
|
219
|
+
var domain = graphProps.domain,
|
|
220
|
+
range = graphProps.range,
|
|
221
|
+
_graphProps$size2 = graphProps.size,
|
|
222
|
+
width = _graphProps$size2.width,
|
|
223
|
+
height = _graphProps$size2.height;
|
|
224
|
+
var domainTicksDistance = getDistanceBetweenTicks(domain, width);
|
|
225
|
+
var rangeTicksDistance = getDistanceBetweenTicks(range, height); // 15 is the distance required for the arrow to extend the graph
|
|
226
|
+
|
|
227
|
+
var domainPadding = domain.step / (domainTicksDistance / 15);
|
|
228
|
+
var rangePadding = range.step / (rangeTicksDistance / 15);
|
|
229
|
+
return {
|
|
230
|
+
domain: {
|
|
231
|
+
min: domain.min - domainPadding,
|
|
232
|
+
max: domain.max + domainPadding
|
|
233
|
+
},
|
|
234
|
+
range: {
|
|
235
|
+
min: range.min - rangePadding,
|
|
236
|
+
max: range.max + rangePadding
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
exports.getAdjustedGraphLimits = getAdjustedGraphLimits;
|
|
197
242
|
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","area","left","x","top","y","bottom","right","reduce","p","lineToArea","from","to","pointsToArea","isDomainRangeEqual","graphProps","nextGraphProps","domain","range","getRightestPoints","sortedPoints","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints"],"mappings":"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","sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = prop => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 1000) / 1000;\n }\n\n tickVal = Math.round(prop.step * 1000) / 1000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 1000) / 1000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter(tV => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = label => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\nexport const getRightestPoints = points => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2\n});\n\nexport const roundNumber = number => parseFloat(number.toFixed(3));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y)\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y)\n }\n );\n"],"file":"utils.js"}
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","area","left","x","top","y","bottom","right","reduce","p","lineToArea","from","to","pointsToArea","isDomainRangeEqual","graphProps","nextGraphProps","domain","range","getRightestPoints","sortedPoints","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","width","height","getAdjustedGraphLimits","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding"],"mappings":"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","sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = prop => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 1000) / 1000;\n }\n\n tickVal = Math.round(prop.step * 1000) / 1000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 1000) / 1000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter(tV => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = label => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\nexport const getRightestPoints = points => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2\n});\n\nexport const roundNumber = number => parseFloat(number.toFixed(3));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y)\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y)\n }\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding\n }\n };\n};\n"],"file":"utils.js"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.4.
|
|
6
|
+
"version": "2.4.9",
|
|
7
7
|
"description": "Graphing components",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@material-ui/core": "^3.8.3",
|
|
21
21
|
"@pie-lib/graphing-utils": "^1.1.20",
|
|
22
22
|
"@pie-lib/plot": "^2.1.9",
|
|
23
|
-
"@pie-lib/render-ui": "^4.12.
|
|
23
|
+
"@pie-lib/render-ui": "^4.12.4",
|
|
24
24
|
"@vx/axis": "^0.0.189",
|
|
25
25
|
"@vx/clip-path": "^0.0.189",
|
|
26
26
|
"@vx/event": "^0.0.189",
|
|
@@ -43,6 +43,6 @@
|
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^16.8.1"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "8c254f4c516c9f4e67109accdb2ad415e1f6cea4",
|
|
47
47
|
"scripts": {}
|
|
48
48
|
}
|
package/src/axis/arrow.jsx
CHANGED
|
@@ -14,6 +14,7 @@ const style = {
|
|
|
14
14
|
export class Arrow extends React.Component {
|
|
15
15
|
render() {
|
|
16
16
|
const { x, y, classes, className, scale } = this.props;
|
|
17
|
+
const names = classNames(classes.root, className);
|
|
17
18
|
let direction = this.props.direction || 'left';
|
|
18
19
|
|
|
19
20
|
const xv = scale.x(x);
|
|
@@ -24,22 +25,21 @@ export class Arrow extends React.Component {
|
|
|
24
25
|
const getTransform = (x, y, rotate) => `translate(${x}, ${y}) rotate(${rotate})`;
|
|
25
26
|
|
|
26
27
|
if (direction === 'left') {
|
|
27
|
-
transform = getTransform(xv -
|
|
28
|
+
transform = getTransform(xv - 15, yv, 0);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
if (direction === 'right') {
|
|
31
|
-
transform = getTransform(xv +
|
|
32
|
+
transform = getTransform(xv + 15, yv, 180);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
if (direction === 'up') {
|
|
35
|
-
transform = getTransform(xv, yv -
|
|
36
|
+
transform = getTransform(xv, yv - 15, 90);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
if (direction === 'down') {
|
|
39
|
-
transform = getTransform(xv, yv +
|
|
40
|
+
transform = getTransform(xv, yv + 15, 270);
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
const names = classNames(classes.root, className);
|
|
43
43
|
return <path d="m 0,0 8,-5 0,10 -8,-5" transform={transform} className={names} />;
|
|
44
44
|
}
|
|
45
45
|
}
|
package/src/axis/axes.jsx
CHANGED
|
@@ -59,8 +59,8 @@ const tickLabelStyles = {
|
|
|
59
59
|
export const sharedValues = (
|
|
60
60
|
firstNegativeX,
|
|
61
61
|
firstNegativeY,
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
distanceFromOriginToFirstNegativeX,
|
|
63
|
+
distanceFromOriginToFirstNegativeY,
|
|
64
64
|
deltaAllowance,
|
|
65
65
|
dy
|
|
66
66
|
) => {
|
|
@@ -68,10 +68,10 @@ export const sharedValues = (
|
|
|
68
68
|
|
|
69
69
|
if (
|
|
70
70
|
firstNegativeX === firstNegativeY &&
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
dy <
|
|
71
|
+
distanceFromOriginToFirstNegativeX - deltaAllowance < distanceFromOriginToFirstNegativeY &&
|
|
72
|
+
distanceFromOriginToFirstNegativeY < distanceFromOriginToFirstNegativeX + deltaAllowance &&
|
|
73
|
+
distanceFromOriginToFirstNegativeX - deltaAllowance < dy &&
|
|
74
|
+
dy < distanceFromOriginToFirstNegativeX + deltaAllowance
|
|
75
75
|
) {
|
|
76
76
|
result.push(firstNegativeX);
|
|
77
77
|
}
|
|
@@ -96,7 +96,7 @@ export class RawXAxis extends React.Component {
|
|
|
96
96
|
graphProps,
|
|
97
97
|
columnTicksValues,
|
|
98
98
|
skipValues,
|
|
99
|
-
|
|
99
|
+
distanceFromOriginToFirstNegativeY,
|
|
100
100
|
dy
|
|
101
101
|
} = this.props;
|
|
102
102
|
const { scale, domain, size, range } = graphProps || {};
|
|
@@ -110,11 +110,7 @@ export class RawXAxis extends React.Component {
|
|
|
110
110
|
// However, the '0' has to be displayed only if other tick labels (y-axis or x-axis) are displayed
|
|
111
111
|
|
|
112
112
|
const labelProps = label => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (skipValues && skipValues[0] === label) {
|
|
116
|
-
y = distantceFromOriginToFirstNegativeY + 4;
|
|
117
|
-
}
|
|
113
|
+
const y = skipValues && skipValues[0] === label ? distanceFromOriginToFirstNegativeY + 4 : dy;
|
|
118
114
|
|
|
119
115
|
return {
|
|
120
116
|
...tickLabelStyles,
|
|
@@ -137,6 +133,7 @@ export class RawXAxis extends React.Component {
|
|
|
137
133
|
top={scale.y(0)}
|
|
138
134
|
left={0}
|
|
139
135
|
label={domain.label}
|
|
136
|
+
rangePadding={8}
|
|
140
137
|
tickClassName={classes.tick}
|
|
141
138
|
tickFormat={value => value}
|
|
142
139
|
tickLabelProps={labelProps}
|
|
@@ -150,7 +147,7 @@ export class RawXAxis extends React.Component {
|
|
|
150
147
|
)}
|
|
151
148
|
{domain.axisLabel && (
|
|
152
149
|
<foreignObject
|
|
153
|
-
x={size.width +
|
|
150
|
+
x={size.width + 15}
|
|
154
151
|
y={scale.y(0) - 10}
|
|
155
152
|
width={necessaryWidth}
|
|
156
153
|
height={20 * necessaryRows}
|
|
@@ -181,13 +178,7 @@ export class RawYAxis extends React.Component {
|
|
|
181
178
|
|
|
182
179
|
const necessaryWidth = range.axisLabel ? amountToIncreaseWidth(range.axisLabel.length) : 0;
|
|
183
180
|
|
|
184
|
-
const customTickFormat = value =>
|
|
185
|
-
if (skipValues && skipValues.indexOf(value) >= 0) {
|
|
186
|
-
return '';
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return value;
|
|
190
|
-
};
|
|
181
|
+
const customTickFormat = value => (skipValues && skipValues.indexOf(value) >= 0 ? '' : value);
|
|
191
182
|
|
|
192
183
|
return (
|
|
193
184
|
<React.Fragment>
|
|
@@ -200,6 +191,7 @@ export class RawYAxis extends React.Component {
|
|
|
200
191
|
left={scale.x(0)}
|
|
201
192
|
label={range.label}
|
|
202
193
|
labelProps={{ 'data-pie-readable': false }}
|
|
194
|
+
rangePadding={8}
|
|
203
195
|
tickLength={10}
|
|
204
196
|
tickClassName={classes.tick}
|
|
205
197
|
tickFormat={customTickFormat}
|
|
@@ -226,7 +218,7 @@ export class RawYAxis extends React.Component {
|
|
|
226
218
|
{range.axisLabel && (
|
|
227
219
|
<foreignObject
|
|
228
220
|
x={scale.x(0) - necessaryWidth / 2}
|
|
229
|
-
y={-
|
|
221
|
+
y={-30}
|
|
230
222
|
width={necessaryWidth}
|
|
231
223
|
height="20"
|
|
232
224
|
>
|
|
@@ -242,6 +234,7 @@ export class RawYAxis extends React.Component {
|
|
|
242
234
|
);
|
|
243
235
|
}
|
|
244
236
|
}
|
|
237
|
+
|
|
245
238
|
const YAxis = withStyles(axisStyles)(RawYAxis);
|
|
246
239
|
|
|
247
240
|
export default class Axes extends React.Component {
|
|
@@ -255,6 +248,7 @@ export default class Axes extends React.Component {
|
|
|
255
248
|
xValues = () => {
|
|
256
249
|
const { graphProps } = this.props;
|
|
257
250
|
const { scale, domain } = graphProps || {};
|
|
251
|
+
|
|
258
252
|
if (!domain || !scale) {
|
|
259
253
|
return;
|
|
260
254
|
}
|
|
@@ -265,13 +259,14 @@ export default class Axes extends React.Component {
|
|
|
265
259
|
return {
|
|
266
260
|
columnTicksValues: ticks,
|
|
267
261
|
firstNegativeX: negative,
|
|
268
|
-
|
|
262
|
+
distanceFromOriginToFirstNegativeX: Math.abs(scale.y(0) - scale.y(negative))
|
|
269
263
|
};
|
|
270
264
|
};
|
|
271
265
|
|
|
272
266
|
yValues = () => {
|
|
273
267
|
const { graphProps } = this.props;
|
|
274
268
|
const { scale, range } = graphProps || {};
|
|
269
|
+
|
|
275
270
|
if (!range || !scale) {
|
|
276
271
|
return;
|
|
277
272
|
}
|
|
@@ -282,33 +277,27 @@ export default class Axes extends React.Component {
|
|
|
282
277
|
return {
|
|
283
278
|
rowTickValues: ticks,
|
|
284
279
|
firstNegativeY: negative,
|
|
285
|
-
|
|
280
|
+
distanceFromOriginToFirstNegativeY: Math.abs(scale.x(0) - scale.x(negative))
|
|
286
281
|
};
|
|
287
282
|
};
|
|
288
283
|
|
|
289
284
|
render() {
|
|
290
285
|
const { graphProps } = this.props;
|
|
291
286
|
const { domain, range } = graphProps || {};
|
|
292
|
-
|
|
293
|
-
// x
|
|
294
287
|
const {
|
|
295
288
|
columnTicksValues,
|
|
296
289
|
firstNegativeX,
|
|
297
|
-
|
|
290
|
+
distanceFromOriginToFirstNegativeX
|
|
298
291
|
} = this.xValues();
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
// y
|
|
302
|
-
const { rowTickValues, firstNegativeY, distantceFromOriginToFirstNegativeY } = this.yValues();
|
|
303
|
-
|
|
292
|
+
const { rowTickValues, firstNegativeY, distanceFromOriginToFirstNegativeY } = this.yValues();
|
|
304
293
|
const deltaAllowance = 6;
|
|
305
294
|
const dy = 25;
|
|
306
295
|
|
|
307
296
|
const skipValues = sharedValues(
|
|
308
297
|
firstNegativeX,
|
|
309
298
|
firstNegativeY,
|
|
310
|
-
|
|
311
|
-
|
|
299
|
+
distanceFromOriginToFirstNegativeX,
|
|
300
|
+
distanceFromOriginToFirstNegativeY,
|
|
312
301
|
deltaAllowance,
|
|
313
302
|
dy
|
|
314
303
|
);
|
|
@@ -321,7 +310,7 @@ export default class Axes extends React.Component {
|
|
|
321
310
|
{...this.props}
|
|
322
311
|
skipValues={skipValues}
|
|
323
312
|
columnTicksValues={columnTicksValues}
|
|
324
|
-
|
|
313
|
+
distanceFromOriginToFirstNegativeY={distanceFromOriginToFirstNegativeY}
|
|
325
314
|
dy={dy}
|
|
326
315
|
/>
|
|
327
316
|
) : null}
|
|
@@ -330,7 +319,7 @@ export default class Axes extends React.Component {
|
|
|
330
319
|
{...this.props}
|
|
331
320
|
skipValues={skipValues}
|
|
332
321
|
rowTickValues={rowTickValues}
|
|
333
|
-
|
|
322
|
+
distanceFromOriginToFirstNegativeX={distanceFromOriginToFirstNegativeX}
|
|
334
323
|
/>
|
|
335
324
|
) : null}
|
|
336
325
|
</React.Fragment>
|
package/src/graph.jsx
CHANGED
|
@@ -33,10 +33,10 @@ export const graphPropTypes = {
|
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
const getMaskSize = size => ({
|
|
36
|
-
x: -
|
|
37
|
-
y: -
|
|
38
|
-
width: size.width +
|
|
39
|
-
height: size.height +
|
|
36
|
+
x: -23,
|
|
37
|
+
y: -23,
|
|
38
|
+
width: size.width + 46,
|
|
39
|
+
height: size.height + 46
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
export const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {
|
|
@@ -5,6 +5,8 @@ import { trig, types } from '@pie-lib/plot';
|
|
|
5
5
|
import classNames from 'classnames';
|
|
6
6
|
import { withStyles } from '@material-ui/core/styles';
|
|
7
7
|
import { ArrowMarker, genUid } from '../shared/arrow-head';
|
|
8
|
+
import { thinnerShapesNeeded, getAdjustedGraphLimits } from '../../utils';
|
|
9
|
+
|
|
8
10
|
const markerId = genUid();
|
|
9
11
|
|
|
10
12
|
const lineStyles = theme => ({
|
|
@@ -17,16 +19,19 @@ const lineStyles = theme => ({
|
|
|
17
19
|
incorrect: styles.incorrect(theme, 'stroke'),
|
|
18
20
|
incorrectArrow: styles.incorrect(theme)
|
|
19
21
|
});
|
|
22
|
+
|
|
20
23
|
export const ArrowedLine = props => {
|
|
21
24
|
const { className, classes, correctness, disabled, graphProps, from, to, ...rest } = props;
|
|
22
25
|
const { scale } = graphProps;
|
|
23
|
-
const
|
|
26
|
+
const { domain, range } = getAdjustedGraphLimits(graphProps);
|
|
27
|
+
const [eFrom, eTo] = trig.edges(domain, range)(from, to);
|
|
24
28
|
const suffix = correctness || (disabled && 'disabled') || 'enabled';
|
|
25
29
|
|
|
26
30
|
return (
|
|
27
31
|
<g>
|
|
28
32
|
<defs>
|
|
29
33
|
<ArrowMarker
|
|
34
|
+
size={thinnerShapesNeeded(graphProps) ? 4 : 5}
|
|
30
35
|
id={`${props.markerId || markerId}-${suffix}`}
|
|
31
36
|
className={classNames(classes[`${suffix}Arrow`])}
|
|
32
37
|
/>
|
|
@@ -5,6 +5,7 @@ import { ArrowMarker, genUid } from '../shared/arrow-head';
|
|
|
5
5
|
import { trig, types } from '@pie-lib/plot';
|
|
6
6
|
import { withStyles } from '@material-ui/core/styles';
|
|
7
7
|
import classNames from 'classnames';
|
|
8
|
+
import { thinnerShapesNeeded, getAdjustedGraphLimits } from '../../utils';
|
|
8
9
|
|
|
9
10
|
const markerId = genUid();
|
|
10
11
|
|
|
@@ -18,16 +19,19 @@ const rayStyles = theme => ({
|
|
|
18
19
|
incorrect: styles.incorrect(theme, 'stroke'),
|
|
19
20
|
incorrectArrow: styles.incorrect(theme)
|
|
20
21
|
});
|
|
22
|
+
|
|
21
23
|
export const RayLine = props => {
|
|
22
24
|
const { graphProps, from, to, classes, disabled, correctness, className, ...rest } = props;
|
|
23
25
|
const { scale } = graphProps;
|
|
24
|
-
const
|
|
26
|
+
const { domain, range } = getAdjustedGraphLimits(graphProps);
|
|
27
|
+
const [aToB] = trig.edges(domain, range)(from, to);
|
|
25
28
|
const suffix = correctness || (disabled && 'disabled') || 'enabled';
|
|
26
29
|
|
|
27
30
|
return (
|
|
28
31
|
<g>
|
|
29
32
|
<defs>
|
|
30
33
|
<ArrowMarker
|
|
34
|
+
size={thinnerShapesNeeded(graphProps) ? 4 : 5}
|
|
31
35
|
id={`${props.markerId || markerId}-${suffix}`}
|
|
32
36
|
className={classNames(classes[`${suffix}Arrow`])}
|
|
33
37
|
/>
|
|
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { types } from '@pie-lib/plot';
|
|
5
5
|
import { ArrowHead } from '../arrow-head';
|
|
6
|
+
import { thinnerShapesNeeded } from '../../../utils';
|
|
6
7
|
|
|
7
8
|
export default class Arrow extends React.Component {
|
|
8
9
|
static propTypes = {
|
|
@@ -48,7 +49,7 @@ export default class Arrow extends React.Component {
|
|
|
48
49
|
...rest
|
|
49
50
|
} = this.props;
|
|
50
51
|
|
|
51
|
-
const size = 14;
|
|
52
|
+
const size = thinnerShapesNeeded(graphProps) ? 12 : 14;
|
|
52
53
|
const { scale } = graphProps;
|
|
53
54
|
|
|
54
55
|
const scaledX = scale.x(x);
|
|
@@ -4,6 +4,7 @@ import classNames from 'classnames';
|
|
|
4
4
|
import { types } from '@pie-lib/plot';
|
|
5
5
|
import CoordinatesLabel from '../../../coordinates-label';
|
|
6
6
|
import ReactDOM from 'react-dom';
|
|
7
|
+
import { thinnerShapesNeeded } from '../../../utils';
|
|
7
8
|
|
|
8
9
|
export class RawBp extends React.Component {
|
|
9
10
|
static propTypes = {
|
|
@@ -38,6 +39,7 @@ export class RawBp extends React.Component {
|
|
|
38
39
|
} = this.props;
|
|
39
40
|
const { showCoordinates } = this.state;
|
|
40
41
|
const { scale } = graphProps;
|
|
42
|
+
const r = thinnerShapesNeeded(graphProps) ? 5 : 7;
|
|
41
43
|
|
|
42
44
|
return (
|
|
43
45
|
<g
|
|
@@ -51,7 +53,7 @@ export class RawBp extends React.Component {
|
|
|
51
53
|
onMouseLeave={() => this.setState({ showCoordinates: false })}
|
|
52
54
|
{...rest}
|
|
53
55
|
>
|
|
54
|
-
<circle r=
|
|
56
|
+
<circle r={r} cx={scale.x(x)} cy={scale.y(y)} />
|
|
55
57
|
{labelNode &&
|
|
56
58
|
coordinatesOnHover &&
|
|
57
59
|
showCoordinates &&
|
package/src/utils.js
CHANGED
|
@@ -132,3 +132,46 @@ export const equalPoints = (p1, p2) =>
|
|
|
132
132
|
y: roundNumber(p2.y)
|
|
133
133
|
}
|
|
134
134
|
);
|
|
135
|
+
|
|
136
|
+
const getDistanceBetweenTicks = (axis, size) => {
|
|
137
|
+
const { min, max, step } = axis;
|
|
138
|
+
const nbOfTicks = (max - min) / step;
|
|
139
|
+
|
|
140
|
+
return size / nbOfTicks;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export const thinnerShapesNeeded = graphProps => {
|
|
144
|
+
const {
|
|
145
|
+
domain,
|
|
146
|
+
range,
|
|
147
|
+
size: { width, height }
|
|
148
|
+
} = graphProps;
|
|
149
|
+
|
|
150
|
+
// 14 is the default width of a point
|
|
151
|
+
return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export const getAdjustedGraphLimits = graphProps => {
|
|
155
|
+
const {
|
|
156
|
+
domain,
|
|
157
|
+
range,
|
|
158
|
+
size: { width, height }
|
|
159
|
+
} = graphProps;
|
|
160
|
+
const domainTicksDistance = getDistanceBetweenTicks(domain, width);
|
|
161
|
+
const rangeTicksDistance = getDistanceBetweenTicks(range, height);
|
|
162
|
+
|
|
163
|
+
// 15 is the distance required for the arrow to extend the graph
|
|
164
|
+
const domainPadding = domain.step / (domainTicksDistance / 15);
|
|
165
|
+
const rangePadding = range.step / (rangeTicksDistance / 15);
|
|
166
|
+
|
|
167
|
+
return {
|
|
168
|
+
domain: {
|
|
169
|
+
min: domain.min - domainPadding,
|
|
170
|
+
max: domain.max + domainPadding
|
|
171
|
+
},
|
|
172
|
+
range: {
|
|
173
|
+
min: range.min - rangePadding,
|
|
174
|
+
max: range.max + rangePadding
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
};
|