This commit is contained in:
darenhsu
2022-07-17 13:16:16 +08:00
parent 84759556ff
commit befd344ab0
28070 changed files with 4008428 additions and 1 deletions
+59
View File
@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.genPoints = genPoints;
exports.genBars = genBars;
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function genPoints(values, boundary) {
var minX = boundary.minX,
maxX = boundary.maxX,
minY = boundary.minY,
maxY = boundary.maxY;
var totalValues = values.length;
var maxValue = Math.max.apply(Math, _toConsumableArray(values));
var minValue = Math.min.apply(Math, _toConsumableArray(values));
var gridX = (maxX - minX) / (totalValues - 1);
var gridY = (maxY - minY) / (maxValue - minValue || 1);
return values.map(function (value, index) {
return {
x: minX + index * gridX,
y: maxY - (value - minValue) * gridY + +(index === totalValues - 1) * 0.00001 - +(index === 0) * 0.00001,
value: value
};
});
}
function genBars(values, boundary) {
var minX = boundary.minX,
maxX = boundary.maxX,
minY = boundary.minY,
maxY = boundary.maxY;
var totalValues = values.length;
var maxValue = Math.max.apply(Math, _toConsumableArray(values));
var minValue = Math.min.apply(Math, _toConsumableArray(values));
if (minValue > 0) minValue = 0;
if (maxValue < 0) maxValue = 0;
var gridX = maxX / totalValues;
var gridY = (maxY - minY) / (maxValue - minValue || 1);
var horizonY = maxY - Math.abs(minValue * gridY);
return values.map(function (value, index) {
var height = Math.abs(gridY * value);
return {
x: minX + index * gridX,
y: horizonY - height + +(value < 0) * height,
height: height,
value: value
};
});
}
//# sourceMappingURL=core.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/components/VSparkline/helpers/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEM,SAAU,SAAV,CACJ,MADI,EAEJ,QAFI,EAEc;AAAA,MAEV,IAFU,GAEiB,QAFjB,CAEV,IAFU;AAAA,MAEJ,IAFI,GAEiB,QAFjB,CAEJ,IAFI;AAAA,MAEE,IAFF,GAEiB,QAFjB,CAEE,IAFF;AAAA,MAEQ,IAFR,GAEiB,QAFjB,CAEQ,IAFR;AAGlB,MAAM,WAAW,GAAG,MAAM,CAAC,MAA3B;AACA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAL,OAAA,IAAI,qBAAQ,MAAR,EAArB;AACA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAL,OAAA,IAAI,qBAAQ,MAAR,EAArB;AAEA,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,IAAR,KAAiB,WAAW,GAAG,CAA/B,CAAd;AACA,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,IAAR,KAAkB,QAAQ,GAAG,QAAZ,IAAyB,CAA1C,CAAd;AAEA,SAAO,MAAM,CAAC,GAAP,CAAW,UAAC,KAAD,EAAQ,KAAR,EAAiB;AACjC,WAAO;AACL,MAAA,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KADb;AAEL,MAAA,CAAC,EACC,IAAI,GACJ,CAAC,KAAK,GAAG,QAAT,IAAqB,KADrB,GAEA,EAAE,KAAK,KAAK,WAAW,GAAG,CAA1B,IAA+B,OAF/B,GAGA,EAAE,KAAK,KAAK,CAAZ,IAAiB,OANd;AAOL,MAAA,KAAK,EAAL;AAPK,KAAP;AASD,GAVM,CAAP;AAWD;;AAEK,SAAU,OAAV,CACJ,MADI,EAEJ,QAFI,EAEc;AAAA,MAEV,IAFU,GAEiB,QAFjB,CAEV,IAFU;AAAA,MAEJ,IAFI,GAEiB,QAFjB,CAEJ,IAFI;AAAA,MAEE,IAFF,GAEiB,QAFjB,CAEE,IAFF;AAAA,MAEQ,IAFR,GAEiB,QAFjB,CAEQ,IAFR;AAGlB,MAAM,WAAW,GAAG,MAAM,CAAC,MAA3B;AACA,MAAI,QAAQ,GAAG,IAAI,CAAC,GAAL,OAAA,IAAI,qBAAQ,MAAR,EAAnB;AACA,MAAI,QAAQ,GAAG,IAAI,CAAC,GAAL,OAAA,IAAI,qBAAQ,MAAR,EAAnB;AAEA,MAAI,QAAQ,GAAG,CAAf,EAAkB,QAAQ,GAAG,CAAX;AAClB,MAAI,QAAQ,GAAG,CAAf,EAAkB,QAAQ,GAAG,CAAX;AAElB,MAAM,KAAK,GAAG,IAAI,GAAG,WAArB;AACA,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,IAAR,KAAkB,QAAQ,GAAG,QAAZ,IAAyB,CAA1C,CAAd;AACA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,QAAQ,GAAG,KAApB,CAAxB;AAEA,SAAO,MAAM,CAAC,GAAP,CAAW,UAAC,KAAD,EAAQ,KAAR,EAAiB;AACjC,QAAM,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,GAAG,KAAjB,CAAf;AAEA,WAAO;AACL,MAAA,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KADb;AAEL,MAAA,CAAC,EAAE,QAAQ,GAAG,MAAX,GACD,EAAE,KAAK,GAAG,CAAV,IAAe,MAHZ;AAIL,MAAA,MAAM,EAAN,MAJK;AAKL,MAAA,KAAK,EAAL;AALK,KAAP;AAOD,GAVM,CAAP;AAWD","sourcesContent":["import { Point, Boundary, Bar } from '../VSparkline'\n\nexport function genPoints (\n values: number[],\n boundary: Boundary\n): Point[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n const maxValue = Math.max(...values)\n const minValue = Math.min(...values)\n\n const gridX = (maxX - minX) / (totalValues - 1)\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y:\n maxY -\n (value - minValue) * gridY +\n +(index === totalValues - 1) * 0.00001 -\n +(index === 0) * 0.00001,\n value,\n }\n })\n}\n\nexport function genBars (\n values: number[],\n boundary: Boundary\n): Bar[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n let maxValue = Math.max(...values)\n let minValue = Math.min(...values)\n\n if (minValue > 0) minValue = 0\n if (maxValue < 0) maxValue = 0\n\n const gridX = maxX / totalValues\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n const horizonY = maxY - Math.abs(minValue * gridY)\n\n return values.map((value, index) => {\n const height = Math.abs(gridY * value)\n\n return {\n x: minX + index * gridX,\n y: horizonY - height +\n +(value < 0) * height,\n height,\n value,\n }\n })\n}\n"],"sourceRoot":"","file":"core.js"}
+43
View File
@@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkCollinear = checkCollinear;
exports.getDistance = getDistance;
exports.moveTo = moveTo;
function int(value) {
return parseInt(value, 10);
}
/**
* https://en.wikipedia.org/wiki/Collinearity
* x=(x1+x2)/2
* y=(y1+y2)/2
*/
function checkCollinear(p0, p1, p2) {
return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);
}
function getDistance(p1, p2) {
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
}
function moveTo(to, from, radius) {
var vector = {
x: to.x - from.x,
y: to.y - from.y
};
var length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
var unitVector = {
x: vector.x / length,
y: vector.y / length
};
return {
x: from.x + unitVector.x * radius,
y: from.y + unitVector.y * radius
};
}
//# sourceMappingURL=math.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/components/VSparkline/helpers/math.ts"],"names":[],"mappings":";;;;;;;;;AAEA,SAAS,GAAT,CAAc,KAAd,EAAoC;AAClC,SAAO,QAAQ,CAAC,KAAD,EAAQ,EAAR,CAAf;AACD;AAED;;;;;;;AAKM,SAAU,cAAV,CAA0B,EAA1B,EAAqC,EAArC,EAAgD,EAAhD,EAAyD;AAC7D,SAAO,GAAG,CAAC,EAAE,CAAC,CAAH,GAAO,EAAE,CAAC,CAAX,CAAH,KAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAR,CAAxB,IAAsC,GAAG,CAAC,EAAE,CAAC,CAAH,GAAO,EAAE,CAAC,CAAX,CAAH,KAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAR,CAArE;AACD;;AAEK,SAAU,WAAV,CAAuB,EAAvB,EAAkC,EAAlC,EAA2C;AAC/C,SAAO,IAAI,CAAC,IAAL,CACL,IAAI,CAAC,GAAL,CAAS,EAAE,CAAC,CAAH,GAAO,EAAE,CAAC,CAAnB,EAAsB,CAAtB,IAA2B,IAAI,CAAC,GAAL,CAAS,EAAE,CAAC,CAAH,GAAO,EAAE,CAAC,CAAnB,EAAsB,CAAtB,CADtB,CAAP;AAGD;;AAEK,SAAU,MAAV,CAAkB,EAAlB,EAA6B,IAA7B,EAA0C,MAA1C,EAAwD;AAC5D,MAAM,MAAM,GAAG;AAAE,IAAA,CAAC,EAAE,EAAE,CAAC,CAAH,GAAO,IAAI,CAAC,CAAjB;AAAoB,IAAA,CAAC,EAAE,EAAE,CAAC,CAAH,GAAO,IAAI,CAAC;AAAnC,GAAf;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAL,CAAW,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,CAAnB,GAAyB,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,CAArD,CAAf;AACA,MAAM,UAAU,GAAG;AAAE,IAAA,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW,MAAhB;AAAwB,IAAA,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW;AAAtC,GAAnB;AAEA,SAAO;AACL,IAAA,CAAC,EAAE,IAAI,CAAC,CAAL,GAAS,UAAU,CAAC,CAAX,GAAe,MADtB;AAEL,IAAA,CAAC,EAAE,IAAI,CAAC,CAAL,GAAS,UAAU,CAAC,CAAX,GAAe;AAFtB,GAAP;AAID","sourcesContent":["import { Point } from '../VSparkline'\n\nfunction int (value: string | number): number {\n return parseInt(value, 10)\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear (p0: Point, p1: Point, p2: Point): boolean {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y)\n}\n\nexport function getDistance (p1: Point, p2: Point): number {\n return Math.sqrt(\n Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)\n )\n}\n\nexport function moveTo (to: Point, from: Point, radius: number) {\n const vector = { x: to.x - from.x, y: to.y - from.y }\n const length = Math.sqrt((vector.x * vector.x) + (vector.y * vector.y))\n const unitVector = { x: vector.x / length, y: vector.y / length }\n\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius,\n }\n}\n"],"sourceRoot":"","file":"math.js"}
+35
View File
@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.genPath = genPath;
var _math = require("./math");
/**
* From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18
*/
function genPath(points, radius) {
var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 75;
var start = points.shift();
var end = points[points.length - 1];
return (fill ? "M".concat(start.x, " ").concat(height - start.x + 2, " L").concat(start.x, " ").concat(start.y) : "M".concat(start.x, " ").concat(start.y)) + points.map(function (point, index) {
var next = points[index + 1];
var prev = points[index - 1] || start;
var isCollinear = next && (0, _math.checkCollinear)(next, point, prev);
if (!next || isCollinear) {
return "L".concat(point.x, " ").concat(point.y);
}
var threshold = Math.min((0, _math.getDistance)(prev, point), (0, _math.getDistance)(next, point));
var isTooCloseForRadius = threshold / 2 < radius;
var radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;
var before = (0, _math.moveTo)(prev, point, radiusForPoint);
var after = (0, _math.moveTo)(next, point, radiusForPoint);
return "L".concat(before.x, " ").concat(before.y, "S").concat(point.x, " ").concat(point.y, " ").concat(after.x, " ").concat(after.y);
}).join('') + (fill ? "L".concat(end.x, " ").concat(height - start.x + 2, " Z") : '');
}
//# sourceMappingURL=path.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/components/VSparkline/helpers/path.ts"],"names":[],"mappings":";;;;;;;AACA;;AAEA;;;AAGM,SAAU,OAAV,CAAmB,MAAnB,EAAoC,MAApC,EAA6E;AAAA,MAAzB,IAAyB,uEAAlB,KAAkB;AAAA,MAAX,MAAW,uEAAF,EAAE;AACjF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAP,EAAd;AACA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAP,GAAgB,CAAjB,CAAlB;AAEA,SACE,CAAC,IAAI,cAAO,KAAK,CAAC,CAAb,cAAkB,MAAM,GAAG,KAAK,CAAC,CAAf,GAAmB,CAArC,eAA2C,KAAK,CAAC,CAAjD,cAAsD,KAAK,CAAC,CAA5D,eAAsE,KAAK,CAAC,CAA5E,cAAiF,KAAK,CAAC,CAAvF,CAAL,IACA,MAAM,CACH,GADH,CACO,UAAC,KAAD,EAAQ,KAAR,EAAiB;AACpB,QAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAT,CAAnB;AACA,QAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAT,CAAN,IAAqB,KAAlC;AACA,QAAM,WAAW,GAAG,IAAI,IAAI,0BAAe,IAAf,EAAqB,KAArB,EAA4B,IAA5B,CAA5B;;AAEA,QAAI,CAAC,IAAD,IAAS,WAAb,EAA0B;AACxB,wBAAW,KAAK,CAAC,CAAjB,cAAsB,KAAK,CAAC,CAA5B;AACD;;AAED,QAAM,SAAS,GAAG,IAAI,CAAC,GAAL,CAChB,uBAAY,IAAZ,EAAkB,KAAlB,CADgB,EAEhB,uBAAY,IAAZ,EAAkB,KAAlB,CAFgB,CAAlB;AAIA,QAAM,mBAAmB,GAAG,SAAS,GAAG,CAAZ,GAAgB,MAA5C;AACA,QAAM,cAAc,GAAG,mBAAmB,GAAG,SAAS,GAAG,CAAf,GAAmB,MAA7D;AAEA,QAAM,MAAM,GAAG,kBAAO,IAAP,EAAa,KAAb,EAAoB,cAApB,CAAf;AACA,QAAM,KAAK,GAAG,kBAAO,IAAP,EAAa,KAAb,EAAoB,cAApB,CAAd;AAEA,sBAAW,MAAM,CAAC,CAAlB,cAAuB,MAAM,CAAC,CAA9B,cAAmC,KAAK,CAAC,CAAzC,cAA8C,KAAK,CAAC,CAApD,cAAyD,KAAK,CAAC,CAA/D,cAAoE,KAAK,CAAC,CAA1E;AACD,GArBH,EAsBG,IAtBH,CAsBQ,EAtBR,CADA,IAwBC,IAAI,cAAO,GAAG,CAAC,CAAX,cAAgB,MAAM,GAAG,KAAK,CAAC,CAAf,GAAmB,CAAnC,UAA2C,EAxBhD,CADF;AA2BD","sourcesContent":["import { Point } from '../VSparkline'\nimport { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath (points: Point[], radius: number, fill = false, height = 75) {\n const start = points.shift()!\n const end = points[points.length - 1]\n\n return (\n (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) +\n points\n .map((point, index) => {\n const next = points[index + 1]\n const prev = points[index - 1] || start\n const isCollinear = next && checkCollinear(next, point, prev)\n\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`\n }\n\n const threshold = Math.min(\n getDistance(prev, point),\n getDistance(next, point)\n )\n const isTooCloseForRadius = threshold / 2 < radius\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius\n\n const before = moveTo(prev, point, radiusForPoint)\n const after = moveTo(next, point, radiusForPoint)\n\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`\n })\n .join('') +\n (fill ? `L${end.x} ${height - start.x + 2} Z` : '')\n )\n}\n"],"sourceRoot":"","file":"path.js"}