UNPKG

electrode-electrify-react-component

Version:
95 lines (83 loc) 2.94 kB
"use strict"; exports.__esModule = true; exports.rotateTween = exports.hoverTween = exports.arcTween = exports.bounceHigh = exports.initArc = exports.arc = exports.angle = undefined; var _d = require("d3"); var _d2 = _interopRequireDefault(_d); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var angle = exports.angle = function angle(x) { return x; }; /* eslint-disable max-len, no-magic-numbers */ var arc = exports.arc = _d2.default.svg.arc().startAngle(function (d) { return angle(d.x); }).endAngle(function (d) { return angle(d.x + Math.max(d.dx - 0.025, 0.0125)); }).innerRadius(function (d) { return Math.sqrt(d.y); }).outerRadius(function (d) { return Math.sqrt(d.y + d.dy * 0.65); }); var initArc = exports.initArc = _d2.default.svg.arc().startAngle(function (d) { return angle(d.x); }).endAngle(function (d) { return angle(d.x + d.dx); }).innerRadius(function (d) { return Math.sqrt(d.y); }).outerRadius(function (d) { return Math.sqrt(d.y); }); // Modified version of d3's built-in bounce easing method: // https://github.com/mbostock/d3/blob/51228ccc4b54789f2d92d268e94716d1c016c774/src/interpolate/ease.js#L105-110 var bounceHigh = exports.bounceHigh = function bounceHigh(t) { return t < 1 / 2.75 ? 7.5625 * t * t //eslint-disable-line no-nested-ternary, max-len, no-arrow-condition : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .65 //eslint-disable-line no-nested-ternary, max-len : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .85 //eslint-disable-line no-nested-ternary, max-len : 7.5625 * (t -= 2.625 / 2.75) * t + .975; }; //eslint-disable-line no-nested-ternary, max-len var arcTween = exports.arcTween = function arcTween(a) { var i = _d2.default.interpolate({ x: a.x0, dx: a.dx0 }, a); return function (t) { var b = i(t); a.x0 = b.x; a.dx0 = b.dx; return arc(b); }; }; // // A more complex arc tween for handling // hover states. Returns a tween function // which returns an interpolator for each // datum. // var hoverTween = exports.hoverTween = function hoverTween(z) { var ht = 0; var harc = _d2.default.svg.arc().startAngle(function (d) { return angle(d.x); }).endAngle(function (d) { return angle(d.x + (1 - ht) * Math.max(d.dx - 0.025, 0.0125) + ht * (d.dx + 0.00005)); }).innerRadius(function (d) { return Math.sqrt(d.y); }).outerRadius(function (d) { return Math.sqrt(d.y + d.dy * (ht * 0.35 + 0.65)) + ht; }); return function (a) { a.t0 = a.t3 = a.t0 || 0; a.t1 = z; a.t2 = a.t1 - a.t0; return function (_t) { ht = a.t2 * _t + a.t3; a.t0 = ht; return harc(a); }; }; }; // // Makes it possible to rotate // angles greater than 180 degrees :) // var rotateTween = exports.rotateTween = function rotateTween(deg) { return function () { return function (t) { return "rotate(" + (1 - t) * deg + ")"; }; }; };