@pie-lib/plot 3.0.0-next.0 → 3.1.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/trig.js DELETED
@@ -1,149 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.toRadians = exports.toDegrees = exports.hypotenuse = exports.getOpposingSide = exports.edges = exports.diffEdge = exports.angle = exports.acuteYAngle = exports.acuteXAngle = void 0;
8
- var _utils = require("./utils");
9
- var _pointGeometry = _interopRequireDefault(require("@mapbox/point-geometry"));
10
- var _debug = _interopRequireDefault(require("debug"));
11
- var log = (0, _debug["default"])('pie-lib:plot:trig');
12
- var toDegrees = exports.toDegrees = function toDegrees(radians) {
13
- return radians * (180 / Math.PI);
14
- };
15
- var toRadians = exports.toRadians = function toRadians(degrees) {
16
- return degrees * (Math.PI / 180);
17
- };
18
- /**
19
- * return angle in radians between 2 points using counting degrees counter clockwise
20
- *
21
- * 0,0 + 1,1 = 45 in radians
22
- * 1,1 + 0,0 = 45?
23
- * @param {Point} a
24
- * @param {Point} b
25
- */
26
- var angle = exports.angle = function angle(a, b) {
27
- var vd = b.y - a.y;
28
- var hd = b.x - a.x;
29
- log(a, b, 'vd: ', vd, 'hd: ', hd);
30
- var radians = Math.atan2(vd, hd);
31
- return radians < 0 ? radians + Math.PI * 2 : radians;
32
- };
33
- var NINETY = Math.PI / 2;
34
- var ONE_EIGHTY = Math.PI;
35
- var TWO_SEVENTY = ONE_EIGHTY + NINETY;
36
- var acuteXAngle = exports.acuteXAngle = function acuteXAngle(a) {
37
- log(toDegrees(a));
38
- if (a < NINETY) {
39
- return a;
40
- }
41
- if (a < ONE_EIGHTY) {
42
- return Math.abs(ONE_EIGHTY - a);
43
- }
44
- if (a < TWO_SEVENTY) {
45
- return Math.abs(ONE_EIGHTY - a);
46
- }
47
- return Math.abs(Math.PI * 2 - a);
48
- };
49
- var acuteYAngle = exports.acuteYAngle = function acuteYAngle(a) {
50
- return NINETY - acuteXAngle(a);
51
- };
52
- var hypotenuse = exports.hypotenuse = function hypotenuse(a, alpha) {
53
- var out = Math.abs(a / Math.sin(alpha));
54
- return out;
55
- };
56
-
57
- /**
58
- * return 2 edge points for a,b within domain + range.
59
- * - one edge is from following a -> b to the bounds
60
- * - one edge is from following b -> a to the bounds
61
- * @param {{min: number, max: number}} domain
62
- * @param {{min: number, max: number}} range
63
- * @param {{x: number, y: number}} a
64
- * @param {{x: number, y: number}} b
65
- * @returns [{x: number, y: number}, {x: number, y: number}]
66
- */
67
- var edges = exports.edges = function edges(domain, range) {
68
- return function (a, b) {
69
- // const xDest =
70
- var destX = a.x < b.x ? domain.max : domain.min;
71
- var destY = a.y < b.y ? range.max : range.min;
72
- var aToB = diffEdge((0, _utils.xy)(destX, destY), a, b);
73
- var dX = b.x < a.x ? domain.max : domain.min;
74
- var dY = b.y < a.y ? range.max : range.min;
75
- var bToA = diffEdge((0, _utils.xy)(dX, dY), b, a);
76
- return [aToB, bToA];
77
- };
78
- };
79
-
80
- /** get length of side A of a triangle from H and angle Alpha */
81
- var getOpposingSide = exports.getOpposingSide = function getOpposingSide(hyp, angle) {
82
- log('[getOpposingSide] hyp: ', hyp, 'angle:', angle);
83
- return Math.abs(hyp * Math.sin(angle));
84
- };
85
- var getShortestSide = function getShortestSide(xh, yh) {
86
- if (Number.isFinite(xh) && Number.isFinite(yh)) {
87
- if (xh === 0 && yh > 0) {
88
- return 'y';
89
- }
90
- if (yh === 0 && xh > 0) {
91
- return 'x';
92
- }
93
- return xh < yh ? 'x' : 'y';
94
- }
95
- if (isNaN(xh) && !isNaN(yh)) {
96
- return 'y';
97
- }
98
- if (!isNaN(xh) && isNaN(yh)) {
99
- return 'x';
100
- }
101
- if (xh === Infinity) {
102
- return 'y';
103
- }
104
- if (yh === Infinity) {
105
- return 'x';
106
- }
107
-
108
- // eslint-disable-next-line no-console
109
- console.warn('hypotenuse - which is shorter? x:', xh, 'y:', yh);
110
- };
111
- /**
112
- * return the difference between bounds and a as a Point
113
- * @param {*} bounds
114
- */
115
- var diffEdge = exports.diffEdge = function diffEdge(bounds, a, b) {
116
- var l = log.enabled ? log.bind(log, "diffEdge: [".concat(a.x, ",").concat(a.y, " -> ").concat(b.x, ",").concat(b.y, "]")) : function () {};
117
- var xRadians = angle(a, b);
118
- l('x angle', toDegrees(xRadians));
119
- var yRadians = Math.abs(xRadians - toRadians(90));
120
- l('y angle', toDegrees(yRadians));
121
- var xSide = Math.abs(a.x - bounds.x);
122
-
123
- /**
124
- * Draw 2 triangles:
125
- * 1 with a horizontal line from a to the graph x edge
126
- * 1 with a vertical line from a to the graph y edge
127
- * Calculate the hypotenuse for both, whichever is shorter
128
- * indicates that we should use that triangle to get the edge point.
129
- */
130
- var xH = hypotenuse(xSide, yRadians);
131
- var ySide = Math.abs(a.y - bounds.y);
132
- var yH = hypotenuse(ySide, xRadians);
133
- l('x: side', xSide, 'h:', xH);
134
- l('y: side', ySide, 'h:', yH);
135
- var side = getShortestSide(xH, yH);
136
- if (side !== 'x' && side !== 'y') {
137
- throw new Error('Cant decide which hypotenuse to use');
138
- }
139
- var point = side === 'x' ? new _pointGeometry["default"](xSide, getOpposingSide(xH, xRadians)) : new _pointGeometry["default"](getOpposingSide(yH, yRadians), ySide);
140
- l('point:', point);
141
- var multiplier = new _pointGeometry["default"](b.x < a.x ? -1 : 1, b.y < a.y ? -1 : 1);
142
- l('multiplier:', multiplier);
143
- var out = point.multByPoint(multiplier);
144
- l('out:', out);
145
- var normalized = out.add(new _pointGeometry["default"](a.x, a.y));
146
- l('normalized:', normalized);
147
- return normalized;
148
- };
149
- //# sourceMappingURL=trig.js.map
package/lib/trig.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"trig.js","names":["_utils","require","_pointGeometry","_interopRequireDefault","_debug","log","debug","toDegrees","exports","radians","Math","PI","toRadians","degrees","angle","a","b","vd","y","hd","x","atan2","NINETY","ONE_EIGHTY","TWO_SEVENTY","acuteXAngle","abs","acuteYAngle","hypotenuse","alpha","out","sin","edges","domain","range","destX","max","min","destY","aToB","diffEdge","xy","dX","dY","bToA","getOpposingSide","hyp","getShortestSide","xh","yh","Number","isFinite","isNaN","Infinity","console","warn","bounds","l","enabled","bind","concat","xRadians","yRadians","xSide","xH","ySide","yH","side","Error","point","Point","multiplier","multByPoint","normalized","add"],"sources":["../src/trig.js"],"sourcesContent":["import { xy } from './utils';\nimport Point from '@mapbox/point-geometry';\nimport debug from 'debug';\nconst log = debug('pie-lib:plot:trig');\n\nexport const toDegrees = (radians) => radians * (180 / Math.PI);\nexport const toRadians = (degrees) => degrees * (Math.PI / 180);\n/**\n * return angle in radians between 2 points using counting degrees counter clockwise\n *\n * 0,0 + 1,1 = 45 in radians\n * 1,1 + 0,0 = 45?\n * @param {Point} a\n * @param {Point} b\n */\nexport const angle = (a, b) => {\n const vd = b.y - a.y;\n const hd = b.x - a.x;\n log(a, b, 'vd: ', vd, 'hd: ', hd);\n const radians = Math.atan2(vd, hd);\n return radians < 0 ? radians + Math.PI * 2 : radians;\n};\n\nconst NINETY = Math.PI / 2;\nconst ONE_EIGHTY = Math.PI;\nconst TWO_SEVENTY = ONE_EIGHTY + NINETY;\n\nexport const acuteXAngle = (a) => {\n log(toDegrees(a));\n\n if (a < NINETY) {\n return a;\n }\n\n if (a < ONE_EIGHTY) {\n return Math.abs(ONE_EIGHTY - a);\n }\n\n if (a < TWO_SEVENTY) {\n return Math.abs(ONE_EIGHTY - a);\n }\n\n return Math.abs(Math.PI * 2 - a);\n};\n\nexport const acuteYAngle = (a) => NINETY - acuteXAngle(a);\n\nexport const hypotenuse = (a, alpha) => {\n const out = Math.abs(a / Math.sin(alpha));\n\n return out;\n};\n\n/**\n * return 2 edge points for a,b within domain + range.\n * - one edge is from following a -> b to the bounds\n * - one edge is from following b -> a to the bounds\n * @param {{min: number, max: number}} domain\n * @param {{min: number, max: number}} range\n * @param {{x: number, y: number}} a\n * @param {{x: number, y: number}} b\n * @returns [{x: number, y: number}, {x: number, y: number}]\n */\nexport const edges = (domain, range) => (a, b) => {\n // const xDest =\n const destX = a.x < b.x ? domain.max : domain.min;\n const destY = a.y < b.y ? range.max : range.min;\n const aToB = diffEdge(xy(destX, destY), a, b);\n\n const dX = b.x < a.x ? domain.max : domain.min;\n const dY = b.y < a.y ? range.max : range.min;\n const bToA = diffEdge(xy(dX, dY), b, a);\n return [aToB, bToA];\n};\n\n/** get length of side A of a triangle from H and angle Alpha */\nexport const getOpposingSide = (hyp, angle) => {\n log('[getOpposingSide] hyp: ', hyp, 'angle:', angle);\n return Math.abs(hyp * Math.sin(angle));\n};\n\nconst getShortestSide = (xh, yh) => {\n if (Number.isFinite(xh) && Number.isFinite(yh)) {\n if (xh === 0 && yh > 0) {\n return 'y';\n }\n if (yh === 0 && xh > 0) {\n return 'x';\n }\n return xh < yh ? 'x' : 'y';\n }\n if (isNaN(xh) && !isNaN(yh)) {\n return 'y';\n }\n if (!isNaN(xh) && isNaN(yh)) {\n return 'x';\n }\n if (xh === Infinity) {\n return 'y';\n }\n if (yh === Infinity) {\n return 'x';\n }\n\n // eslint-disable-next-line no-console\n console.warn('hypotenuse - which is shorter? x:', xh, 'y:', yh);\n};\n/**\n * return the difference between bounds and a as a Point\n * @param {*} bounds\n */\nexport const diffEdge = (bounds, a, b) => {\n let l = log.enabled ? log.bind(log, `diffEdge: [${a.x},${a.y} -> ${b.x},${b.y}]`) : () => {};\n const xRadians = angle(a, b);\n l('x angle', toDegrees(xRadians));\n const yRadians = Math.abs(xRadians - toRadians(90));\n l('y angle', toDegrees(yRadians));\n const xSide = Math.abs(a.x - bounds.x);\n\n /**\n * Draw 2 triangles:\n * 1 with a horizontal line from a to the graph x edge\n * 1 with a vertical line from a to the graph y edge\n * Calculate the hypotenuse for both, whichever is shorter\n * indicates that we should use that triangle to get the edge point.\n */\n const xH = hypotenuse(xSide, yRadians);\n\n const ySide = Math.abs(a.y - bounds.y);\n const yH = hypotenuse(ySide, xRadians);\n\n l('x: side', xSide, 'h:', xH);\n l('y: side', ySide, 'h:', yH);\n const side = getShortestSide(xH, yH);\n\n if (side !== 'x' && side !== 'y') {\n throw new Error('Cant decide which hypotenuse to use');\n }\n const point =\n side === 'x' ? new Point(xSide, getOpposingSide(xH, xRadians)) : new Point(getOpposingSide(yH, yRadians), ySide);\n\n l('point:', point);\n const multiplier = new Point(b.x < a.x ? -1 : 1, b.y < a.y ? -1 : 1);\n l('multiplier:', multiplier);\n const out = point.multByPoint(multiplier);\n l('out:', out);\n const normalized = out.add(new Point(a.x, a.y));\n l('normalized:', normalized);\n return normalized;\n};\n"],"mappings":"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","ignoreList":[]}
package/lib/types.js DELETED
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.SnapType = exports.SizeType = exports.ScaleType = exports.RangeType = exports.PointType = exports.GraphPropsType = exports.DomainType = exports.ChildrenType = exports.BaseDomainRangeType = void 0;
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var BaseDomainRangeType = exports.BaseDomainRangeType = {
10
- min: _propTypes["default"].number.isRequired,
11
- max: _propTypes["default"].number.isRequired,
12
- step: _propTypes["default"].number
13
- };
14
- var DomainType = exports.DomainType = _propTypes["default"].shape(BaseDomainRangeType);
15
- var RangeType = exports.RangeType = _propTypes["default"].shape(BaseDomainRangeType);
16
- var SizeType = exports.SizeType = _propTypes["default"].shape({
17
- width: _propTypes["default"].number.isRequired,
18
- height: _propTypes["default"].number.isRequired
19
- });
20
- var PointType = exports.PointType = _propTypes["default"].shape({
21
- x: _propTypes["default"].number.isRequired,
22
- y: _propTypes["default"].number.isRequired
23
- });
24
- var ChildrenType = exports.ChildrenType = _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired;
25
- var ScaleType = exports.ScaleType = _propTypes["default"].shape({
26
- x: _propTypes["default"].func.isRequired,
27
- y: _propTypes["default"].func.isRequired
28
- });
29
- var SnapType = exports.SnapType = _propTypes["default"].shape({
30
- x: _propTypes["default"].func.isRequired,
31
- y: _propTypes["default"].func.isRequired
32
- });
33
- var GraphPropsType = exports.GraphPropsType = _propTypes["default"].shape({
34
- scale: ScaleType.isRequired,
35
- snap: SnapType.isRequired,
36
- domain: DomainType.isRequired,
37
- range: RangeType.isRequired,
38
- size: SizeType.isRequired
39
- });
40
- //# sourceMappingURL=types.js.map
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","names":["_propTypes","_interopRequireDefault","require","BaseDomainRangeType","exports","min","PropTypes","number","isRequired","max","step","DomainType","shape","RangeType","SizeType","width","height","PointType","x","y","ChildrenType","oneOfType","arrayOf","node","ScaleType","func","SnapType","GraphPropsType","scale","snap","domain","range","size"],"sources":["../src/types.js"],"sourcesContent":["import PropTypes from 'prop-types';\n\nexport const BaseDomainRangeType = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n step: PropTypes.number,\n};\n\nexport const DomainType = PropTypes.shape(BaseDomainRangeType);\n\nexport const RangeType = PropTypes.shape(BaseDomainRangeType);\n\nexport const SizeType = PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n});\n\nexport const PointType = PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n});\n\nexport const ChildrenType = PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired;\n\nexport const ScaleType = PropTypes.shape({\n x: PropTypes.func.isRequired,\n y: PropTypes.func.isRequired,\n});\n\nexport const SnapType = PropTypes.shape({\n x: PropTypes.func.isRequired,\n y: PropTypes.func.isRequired,\n});\n\nexport const GraphPropsType = PropTypes.shape({\n scale: ScaleType.isRequired,\n snap: SnapType.isRequired,\n domain: DomainType.isRequired,\n range: RangeType.isRequired,\n size: SizeType.isRequired,\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,IAAMC,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG;EACjCE,GAAG,EAAEC,qBAAS,CAACC,MAAM,CAACC,UAAU;EAChCC,GAAG,EAAEH,qBAAS,CAACC,MAAM,CAACC,UAAU;EAChCE,IAAI,EAAEJ,qBAAS,CAACC;AAClB,CAAC;AAEM,IAAMI,UAAU,GAAAP,OAAA,CAAAO,UAAA,GAAGL,qBAAS,CAACM,KAAK,CAACT,mBAAmB,CAAC;AAEvD,IAAMU,SAAS,GAAAT,OAAA,CAAAS,SAAA,GAAGP,qBAAS,CAACM,KAAK,CAACT,mBAAmB,CAAC;AAEtD,IAAMW,QAAQ,GAAAV,OAAA,CAAAU,QAAA,GAAGR,qBAAS,CAACM,KAAK,CAAC;EACtCG,KAAK,EAAET,qBAAS,CAACC,MAAM,CAACC,UAAU;EAClCQ,MAAM,EAAEV,qBAAS,CAACC,MAAM,CAACC;AAC3B,CAAC,CAAC;AAEK,IAAMS,SAAS,GAAAb,OAAA,CAAAa,SAAA,GAAGX,qBAAS,CAACM,KAAK,CAAC;EACvCM,CAAC,EAAEZ,qBAAS,CAACC,MAAM,CAACC,UAAU;EAC9BW,CAAC,EAAEb,qBAAS,CAACC,MAAM,CAACC;AACtB,CAAC,CAAC;AAEK,IAAMY,YAAY,GAAAhB,OAAA,CAAAgB,YAAA,GAAGd,qBAAS,CAACe,SAAS,CAAC,CAACf,qBAAS,CAACgB,OAAO,CAAChB,qBAAS,CAACiB,IAAI,CAAC,EAAEjB,qBAAS,CAACiB,IAAI,CAAC,CAAC,CAACf,UAAU;AAExG,IAAMgB,SAAS,GAAApB,OAAA,CAAAoB,SAAA,GAAGlB,qBAAS,CAACM,KAAK,CAAC;EACvCM,CAAC,EAAEZ,qBAAS,CAACmB,IAAI,CAACjB,UAAU;EAC5BW,CAAC,EAAEb,qBAAS,CAACmB,IAAI,CAACjB;AACpB,CAAC,CAAC;AAEK,IAAMkB,QAAQ,GAAAtB,OAAA,CAAAsB,QAAA,GAAGpB,qBAAS,CAACM,KAAK,CAAC;EACtCM,CAAC,EAAEZ,qBAAS,CAACmB,IAAI,CAACjB,UAAU;EAC5BW,CAAC,EAAEb,qBAAS,CAACmB,IAAI,CAACjB;AACpB,CAAC,CAAC;AAEK,IAAMmB,cAAc,GAAAvB,OAAA,CAAAuB,cAAA,GAAGrB,qBAAS,CAACM,KAAK,CAAC;EAC5CgB,KAAK,EAAEJ,SAAS,CAAChB,UAAU;EAC3BqB,IAAI,EAAEH,QAAQ,CAAClB,UAAU;EACzBsB,MAAM,EAAEnB,UAAU,CAACH,UAAU;EAC7BuB,KAAK,EAAElB,SAAS,CAACL,UAAU;EAC3BwB,IAAI,EAAElB,QAAQ,CAACN;AACjB,CAAC,CAAC","ignoreList":[]}
package/lib/utils.js DELETED
@@ -1,168 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.buildSizeArray = exports.bounds = exports.bandKey = exports.amountToIncreaseWidth = void 0;
8
- exports.buildTickModel = buildTickModel;
9
- exports.getDelta = exports.findLongestWord = exports.extractTextFromHTML = void 0;
10
- exports.getInterval = getInterval;
11
- exports.polygonToArea = exports.point = exports.lineToArea = exports.isEmptyString = exports.isEmptyObject = exports.isDomainRangeEqual = void 0;
12
- exports.snapTo = snapTo;
13
- exports.xy = exports.tickCount = void 0;
14
- var _invariant = _interopRequireDefault(require("invariant"));
15
- var _range = _interopRequireDefault(require("lodash/range"));
16
- var _pointGeometry = _interopRequireDefault(require("@mapbox/point-geometry"));
17
- var _head = _interopRequireDefault(require("lodash/head"));
18
- var _tail = _interopRequireDefault(require("lodash/tail"));
19
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
20
- var xy = exports.xy = function xy(x, y) {
21
- return {
22
- x: x,
23
- y: y
24
- };
25
- };
26
- var buildSizeArray = exports.buildSizeArray = function buildSizeArray(size, padding) {
27
- padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;
28
- (0, _invariant["default"])(padding < size, 'padding must be less than size');
29
- var half = Math.round(padding * 0.5);
30
- return [half, size - half];
31
- };
32
- var tickCount = exports.tickCount = function tickCount(min, max, step) {
33
- (0, _invariant["default"])(min < max, 'min must be less than max');
34
- var size = Math.abs(min - max);
35
- return Math.round(size / step);
36
- };
37
- function getInterval(domain, ticks) {
38
- var min = domain.min,
39
- max = domain.max;
40
- var major = ticks.major,
41
- minor = ticks.minor;
42
- if (min >= max) {
43
- throw new Error("min is > max: ".concat(min, " > ").concat(max));
44
- }
45
- var distance = max - min;
46
- var minorTicks = minor > 0 ? minor + 1 : 1;
47
- var normalizedMajor = major - 1;
48
- if (isNaN(normalizedMajor)) {
49
- throw new Error('Tick Frequency must be 2 or higher');
50
- }
51
- if (normalizedMajor <= 0) {
52
- throw new Error('Tick Frequency must be 2 or higher');
53
- }
54
- var divider = normalizedMajor * minorTicks;
55
- var raw = distance / divider;
56
- return parseFloat(Number(raw).toFixed(4));
57
- }
58
- var mkRange = function mkRange(min, max, interval) {
59
- var raw = (0, _range["default"])(min, max, interval);
60
- /* Fix the last step due to rounding errors */
61
- raw.splice(raw.length, 1, max);
62
- return raw;
63
- };
64
- function snapTo(min, max, interval, value) {
65
- if (value >= max) {
66
- return max;
67
- }
68
- if (value <= min) {
69
- return min;
70
- }
71
- var rng = mkRange(min, max, interval);
72
- rng = rng.filter(function (v) {
73
- return Math.abs(value - v) <= interval;
74
- });
75
- return rng.length && rng.reduce(function (prev, curr) {
76
- var currentDistance = Math.abs(curr - value);
77
- var previousDistance = Math.abs(prev - value);
78
- return currentDistance <= previousDistance ? curr : prev;
79
- });
80
- }
81
- function buildTickModel(domain, ticks, interval, scaleFn) {
82
- var rng = mkRange(domain.min, domain.max, interval);
83
- return rng.map(function (r, index) {
84
- var isMajor = index % (ticks.minor + 1) === 0;
85
- return {
86
- value: r,
87
- major: isMajor,
88
- x: scaleFn(r)
89
- };
90
- });
91
- }
92
- var polygonToArea = exports.polygonToArea = function polygonToArea(points) {
93
- var h = (0, _head["default"])(points);
94
- var area = {
95
- left: h.x,
96
- top: h.y,
97
- bottom: h.y,
98
- right: h.x
99
- };
100
- return (0, _tail["default"])(points).reduce(function (a, p) {
101
- a.left = Math.min(a.left, p.x);
102
- a.top = Math.max(a.top, p.y);
103
- a.bottom = Math.min(a.bottom, p.y);
104
- a.right = Math.max(a.right, p.x);
105
- return a;
106
- }, area);
107
- };
108
- var lineToArea = exports.lineToArea = function lineToArea(from, to) {
109
- var left = Math.min(from.x, to.x);
110
- var top = Math.max(from.y, to.y);
111
- var bottom = Math.min(from.y, to.y);
112
- var right = Math.max(from.x, to.x);
113
- return {
114
- left: left,
115
- top: top,
116
- bottom: bottom,
117
- right: right
118
- };
119
- };
120
- var bounds = exports.bounds = function bounds(area, domain, range) {
121
- return {
122
- left: domain.min - area.left,
123
- right: Math.abs(area.right - domain.max),
124
- top: Math.abs(area.top - range.max),
125
- bottom: range.min - area.bottom
126
- };
127
- };
128
- var point = exports.point = function point(o) {
129
- return new _pointGeometry["default"](o.x, o.y);
130
- };
131
- var getDelta = exports.getDelta = function getDelta(from, to) {
132
- return point(to).sub(point(from));
133
- };
134
- var bandKey = exports.bandKey = function bandKey(d, index) {
135
- return "".concat(index, "-").concat(d.label || '-');
136
- };
137
- var isDomainRangeEqual = exports.isDomainRangeEqual = function isDomainRangeEqual(graphProps, nextGraphProps) {
138
- return (0, _isEqual["default"])(graphProps.domain, nextGraphProps.domain) && (0, _isEqual["default"])(graphProps.range, nextGraphProps.range);
139
- };
140
-
141
- // findLongestWord is also used in graphing
142
- var findLongestWord = exports.findLongestWord = function findLongestWord(label) {
143
- var longestWord = (label || '').replace(/<[^>]+>/g, '').split(' ').sort(function (a, b) {
144
- return b.length - a.length;
145
- });
146
- return longestWord[0].length;
147
- };
148
-
149
- // amountToIncreaseWidth is also used in graphing
150
- var amountToIncreaseWidth = exports.amountToIncreaseWidth = function amountToIncreaseWidth(longestWord) {
151
- if (!longestWord) {
152
- return 0;
153
- }
154
- return longestWord * 20;
155
- };
156
- var extractTextFromHTML = exports.extractTextFromHTML = function extractTextFromHTML(htmlString) {
157
- var _doc$body;
158
- var parser = new DOMParser();
159
- var doc = parser === null || parser === void 0 ? void 0 : parser.parseFromString(htmlString, 'text/html');
160
- return (doc === null || doc === void 0 || (_doc$body = doc.body) === null || _doc$body === void 0 ? void 0 : _doc$body.textContent) || '';
161
- };
162
- var isEmptyObject = exports.isEmptyObject = function isEmptyObject(obj) {
163
- return obj && Object.keys(obj).length === 0 && obj.constructor === Object;
164
- };
165
- var isEmptyString = exports.isEmptyString = function isEmptyString(str) {
166
- return typeof str === 'string' && str.trim() === '';
167
- };
168
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["_invariant","_interopRequireDefault","require","_range","_pointGeometry","_head","_tail","_isEqual","xy","exports","x","y","buildSizeArray","size","padding","Number","isFinite","Math","max","invariant","half","round","tickCount","min","step","abs","getInterval","domain","ticks","major","minor","Error","concat","distance","minorTicks","normalizedMajor","isNaN","divider","raw","parseFloat","toFixed","mkRange","interval","range","splice","length","snapTo","value","rng","filter","v","reduce","prev","curr","currentDistance","previousDistance","buildTickModel","scaleFn","map","r","index","isMajor","polygonToArea","points","h","head","area","left","top","bottom","right","tail","a","p","lineToArea","from","to","bounds","point","o","Point","getDelta","sub","bandKey","d","label","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","findLongestWord","longestWord","replace","split","sort","b","amountToIncreaseWidth","extractTextFromHTML","htmlString","_doc$body","parser","DOMParser","doc","parseFromString","body","textContent","isEmptyObject","obj","Object","keys","constructor","isEmptyString","str","trim"],"sources":["../src/utils.js"],"sourcesContent":["import invariant from 'invariant';\nimport range from 'lodash/range';\nimport Point from '@mapbox/point-geometry';\nimport head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport isEqual from 'lodash/isEqual';\n\nexport const xy = (x, y) => ({ x, y });\n\nexport const buildSizeArray = (size, padding) => {\n padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;\n invariant(padding < size, 'padding must be less than size');\n const half = Math.round(padding * 0.5);\n return [half, size - half];\n};\n\nexport const tickCount = (min, max, step) => {\n invariant(min < max, 'min must be less than max');\n const size = Math.abs(min - max);\n return Math.round(size / step);\n};\n\nexport function getInterval(domain, ticks) {\n const { min, max } = domain;\n const { major, minor } = ticks;\n\n if (min >= max) {\n throw new Error(`min is > max: ${min} > ${max}`);\n }\n\n const distance = max - min;\n const minorTicks = minor > 0 ? minor + 1 : 1;\n const normalizedMajor = major - 1;\n\n if (isNaN(normalizedMajor)) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n if (normalizedMajor <= 0) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n const divider = normalizedMajor * minorTicks;\n const raw = distance / divider;\n return parseFloat(Number(raw).toFixed(4));\n}\n\nconst mkRange = (min, max, interval) => {\n const raw = range(min, max, interval);\n /* Fix the last step due to rounding errors */\n raw.splice(raw.length, 1, max);\n return raw;\n};\n\nexport function snapTo(min, max, interval, value) {\n if (value >= max) {\n return max;\n }\n\n if (value <= min) {\n return min;\n }\n\n let rng = mkRange(min, max, interval);\n\n rng = rng.filter((v) => {\n return Math.abs(value - v) <= interval;\n });\n\n return (\n rng.length &&\n rng.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n}\n\nexport function buildTickModel(domain, ticks, interval, scaleFn) {\n const rng = mkRange(domain.min, domain.max, interval);\n\n return rng.map((r, index) => {\n const isMajor = index % (ticks.minor + 1) === 0;\n\n return {\n value: r,\n major: isMajor,\n x: scaleFn(r),\n };\n });\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) => {\n const left = Math.min(from.x, to.x);\n const top = Math.max(from.y, to.y);\n const bottom = Math.min(from.y, to.y);\n const right = Math.max(from.x, to.x);\n return { left, top, bottom, right };\n};\n\nexport const bounds = (area, domain, range) => {\n return {\n left: domain.min - area.left,\n right: Math.abs(area.right - domain.max),\n top: Math.abs(area.top - range.max),\n bottom: range.min - area.bottom,\n };\n};\n\nexport const point = (o) => new Point(o.x, o.y);\nexport const getDelta = (from, to) => {\n return point(to).sub(point(from));\n};\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\n// findLongestWord is also used in graphing\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 graphing\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 20;\n};\n\nexport const extractTextFromHTML = (htmlString) => {\n const parser = new DOMParser();\n const doc = parser?.parseFromString(htmlString, 'text/html');\n return doc?.body?.textContent || '';\n};\n\nexport const isEmptyObject = (obj) => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n};\n\nexport const isEmptyString = (str) => {\n return typeof str === 'string' && str.trim() === '';\n};\n"],"mappings":"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","ignoreList":[]}