electrode-electrify-react-component
Version:
electrode-electrify-react-component
95 lines (83 loc) • 2.94 kB
JavaScript
;
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 + ")";
};
};
};