d3-interpolate
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -1,477 +0,477 @@ | ||
// https://d3js.org/d3-interpolate/ Version 1.2.0. Copyright 2018 Mike Bostock. | ||
// https://d3js.org/d3-interpolate/ Version 1.3.0 Copyright 2018 Mike Bostock. | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : | ||
(factory((global.d3 = global.d3 || {}),global.d3)); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : | ||
(factory((global.d3 = global.d3 || {}),global.d3)); | ||
}(this, (function (exports,d3Color) { 'use strict'; | ||
function basis(t1, v0, v1, v2, v3) { | ||
var t2 = t1 * t1, t3 = t2 * t1; | ||
return ((1 - 3 * t1 + 3 * t2 - t3) * v0 | ||
+ (4 - 6 * t2 + 3 * t3) * v1 | ||
+ (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 | ||
+ t3 * v3) / 6; | ||
} | ||
function basis(t1, v0, v1, v2, v3) { | ||
var t2 = t1 * t1, t3 = t2 * t1; | ||
return ((1 - 3 * t1 + 3 * t2 - t3) * v0 | ||
+ (4 - 6 * t2 + 3 * t3) * v1 | ||
+ (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 | ||
+ t3 * v3) / 6; | ||
} | ||
var basis$1 = function(values) { | ||
var n = values.length - 1; | ||
return function(t) { | ||
var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), | ||
v1 = values[i], | ||
v2 = values[i + 1], | ||
v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, | ||
v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; | ||
return basis((t - i / n) * n, v0, v1, v2, v3); | ||
}; | ||
}; | ||
function basis$1(values) { | ||
var n = values.length - 1; | ||
return function(t) { | ||
var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), | ||
v1 = values[i], | ||
v2 = values[i + 1], | ||
v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, | ||
v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; | ||
return basis((t - i / n) * n, v0, v1, v2, v3); | ||
}; | ||
} | ||
var basisClosed = function(values) { | ||
var n = values.length; | ||
return function(t) { | ||
var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), | ||
v0 = values[(i + n - 1) % n], | ||
v1 = values[i % n], | ||
v2 = values[(i + 1) % n], | ||
v3 = values[(i + 2) % n]; | ||
return basis((t - i / n) * n, v0, v1, v2, v3); | ||
}; | ||
}; | ||
function basisClosed(values) { | ||
var n = values.length; | ||
return function(t) { | ||
var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), | ||
v0 = values[(i + n - 1) % n], | ||
v1 = values[i % n], | ||
v2 = values[(i + 1) % n], | ||
v3 = values[(i + 2) % n]; | ||
return basis((t - i / n) * n, v0, v1, v2, v3); | ||
}; | ||
} | ||
var constant = function(x) { | ||
return function() { | ||
return x; | ||
}; | ||
}; | ||
function constant(x) { | ||
return function() { | ||
return x; | ||
}; | ||
} | ||
function linear(a, d) { | ||
return function(t) { | ||
return a + t * d; | ||
}; | ||
} | ||
function linear(a, d) { | ||
return function(t) { | ||
return a + t * d; | ||
}; | ||
} | ||
function exponential(a, b, y) { | ||
return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { | ||
return Math.pow(a + t * b, y); | ||
}; | ||
} | ||
function exponential(a, b, y) { | ||
return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { | ||
return Math.pow(a + t * b, y); | ||
}; | ||
} | ||
function hue(a, b) { | ||
var d = b - a; | ||
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a); | ||
} | ||
function hue(a, b) { | ||
var d = b - a; | ||
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a); | ||
} | ||
function gamma(y) { | ||
return (y = +y) === 1 ? nogamma : function(a, b) { | ||
return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a); | ||
}; | ||
} | ||
function gamma(y) { | ||
return (y = +y) === 1 ? nogamma : function(a, b) { | ||
return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a); | ||
}; | ||
} | ||
function nogamma(a, b) { | ||
var d = b - a; | ||
return d ? linear(a, d) : constant(isNaN(a) ? b : a); | ||
} | ||
function nogamma(a, b) { | ||
var d = b - a; | ||
return d ? linear(a, d) : constant(isNaN(a) ? b : a); | ||
} | ||
var rgb$1 = ((function rgbGamma(y) { | ||
var color$$1 = gamma(y); | ||
var rgb = (function rgbGamma(y) { | ||
var color = gamma(y); | ||
function rgb$$1(start, end) { | ||
var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r), | ||
g = color$$1(start.g, end.g), | ||
b = color$$1(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.r = r(t); | ||
start.g = g(t); | ||
start.b = b(t); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
} | ||
function rgb(start, end) { | ||
var r = color((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r), | ||
g = color(start.g, end.g), | ||
b = color(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.r = r(t); | ||
start.g = g(t); | ||
start.b = b(t); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
} | ||
rgb$$1.gamma = rgbGamma; | ||
rgb.gamma = rgbGamma; | ||
return rgb$$1; | ||
}))(1); | ||
return rgb; | ||
})(1); | ||
function rgbSpline(spline) { | ||
return function(colors) { | ||
var n = colors.length, | ||
r = new Array(n), | ||
g = new Array(n), | ||
b = new Array(n), | ||
i, color$$1; | ||
for (i = 0; i < n; ++i) { | ||
color$$1 = d3Color.rgb(colors[i]); | ||
r[i] = color$$1.r || 0; | ||
g[i] = color$$1.g || 0; | ||
b[i] = color$$1.b || 0; | ||
} | ||
r = spline(r); | ||
g = spline(g); | ||
b = spline(b); | ||
color$$1.opacity = 1; | ||
return function(t) { | ||
color$$1.r = r(t); | ||
color$$1.g = g(t); | ||
color$$1.b = b(t); | ||
return color$$1 + ""; | ||
function rgbSpline(spline) { | ||
return function(colors) { | ||
var n = colors.length, | ||
r = new Array(n), | ||
g = new Array(n), | ||
b = new Array(n), | ||
i, color; | ||
for (i = 0; i < n; ++i) { | ||
color = d3Color.rgb(colors[i]); | ||
r[i] = color.r || 0; | ||
g[i] = color.g || 0; | ||
b[i] = color.b || 0; | ||
} | ||
r = spline(r); | ||
g = spline(g); | ||
b = spline(b); | ||
color.opacity = 1; | ||
return function(t) { | ||
color.r = r(t); | ||
color.g = g(t); | ||
color.b = b(t); | ||
return color + ""; | ||
}; | ||
}; | ||
}; | ||
} | ||
} | ||
var rgbBasis = rgbSpline(basis$1); | ||
var rgbBasisClosed = rgbSpline(basisClosed); | ||
var rgbBasis = rgbSpline(basis$1); | ||
var rgbBasisClosed = rgbSpline(basisClosed); | ||
var array = function(a, b) { | ||
var nb = b ? b.length : 0, | ||
na = a ? Math.min(nb, a.length) : 0, | ||
x = new Array(na), | ||
c = new Array(nb), | ||
i; | ||
function array(a, b) { | ||
var nb = b ? b.length : 0, | ||
na = a ? Math.min(nb, a.length) : 0, | ||
x = new Array(na), | ||
c = new Array(nb), | ||
i; | ||
for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]); | ||
for (; i < nb; ++i) c[i] = b[i]; | ||
for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]); | ||
for (; i < nb; ++i) c[i] = b[i]; | ||
return function(t) { | ||
for (i = 0; i < na; ++i) c[i] = x[i](t); | ||
return c; | ||
}; | ||
}; | ||
return function(t) { | ||
for (i = 0; i < na; ++i) c[i] = x[i](t); | ||
return c; | ||
}; | ||
} | ||
var date = function(a, b) { | ||
var d = new Date; | ||
return a = +a, b -= a, function(t) { | ||
return d.setTime(a + b * t), d; | ||
}; | ||
}; | ||
function date(a, b) { | ||
var d = new Date; | ||
return a = +a, b -= a, function(t) { | ||
return d.setTime(a + b * t), d; | ||
}; | ||
} | ||
var number = function(a, b) { | ||
return a = +a, b -= a, function(t) { | ||
return a + b * t; | ||
}; | ||
}; | ||
function number(a, b) { | ||
return a = +a, b -= a, function(t) { | ||
return a + b * t; | ||
}; | ||
} | ||
var object = function(a, b) { | ||
var i = {}, | ||
c = {}, | ||
k; | ||
function object(a, b) { | ||
var i = {}, | ||
c = {}, | ||
k; | ||
if (a === null || typeof a !== "object") a = {}; | ||
if (b === null || typeof b !== "object") b = {}; | ||
if (a === null || typeof a !== "object") a = {}; | ||
if (b === null || typeof b !== "object") b = {}; | ||
for (k in b) { | ||
if (k in a) { | ||
i[k] = value(a[k], b[k]); | ||
} else { | ||
c[k] = b[k]; | ||
for (k in b) { | ||
if (k in a) { | ||
i[k] = value(a[k], b[k]); | ||
} else { | ||
c[k] = b[k]; | ||
} | ||
} | ||
return function(t) { | ||
for (k in i) c[k] = i[k](t); | ||
return c; | ||
}; | ||
} | ||
return function(t) { | ||
for (k in i) c[k] = i[k](t); | ||
return c; | ||
}; | ||
}; | ||
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, | ||
reB = new RegExp(reA.source, "g"); | ||
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; | ||
var reB = new RegExp(reA.source, "g"); | ||
function zero(b) { | ||
return function() { | ||
return b; | ||
}; | ||
} | ||
function zero(b) { | ||
return function() { | ||
return b; | ||
}; | ||
} | ||
function one(b) { | ||
return function(t) { | ||
return b(t) + ""; | ||
}; | ||
} | ||
function one(b) { | ||
return function(t) { | ||
return b(t) + ""; | ||
}; | ||
} | ||
function string(a, b) { | ||
var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b | ||
am, // current match in a | ||
bm, // current match in b | ||
bs, // string preceding current number in b, if any | ||
i = -1, // index in s | ||
s = [], // string constants and placeholders | ||
q = []; // number interpolators | ||
var string = function(a, b) { | ||
var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b | ||
am, // current match in a | ||
bm, // current match in b | ||
bs, // string preceding current number in b, if any | ||
i = -1, // index in s | ||
s = [], // string constants and placeholders | ||
q = []; // number interpolators | ||
// Coerce inputs to strings. | ||
a = a + "", b = b + ""; | ||
// Coerce inputs to strings. | ||
a = a + "", b = b + ""; | ||
// Interpolate pairs of numbers in a & b. | ||
while ((am = reA.exec(a)) | ||
&& (bm = reB.exec(b))) { | ||
if ((bs = bm.index) > bi) { // a string precedes the next number in b | ||
bs = b.slice(bi, bs); | ||
if (s[i]) s[i] += bs; // coalesce with previous string | ||
else s[++i] = bs; | ||
} | ||
if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match | ||
if (s[i]) s[i] += bm; // coalesce with previous string | ||
else s[++i] = bm; | ||
} else { // interpolate non-matching numbers | ||
s[++i] = null; | ||
q.push({i: i, x: number(am, bm)}); | ||
} | ||
bi = reB.lastIndex; | ||
} | ||
// Interpolate pairs of numbers in a & b. | ||
while ((am = reA.exec(a)) | ||
&& (bm = reB.exec(b))) { | ||
if ((bs = bm.index) > bi) { // a string precedes the next number in b | ||
bs = b.slice(bi, bs); | ||
// Add remains of b. | ||
if (bi < b.length) { | ||
bs = b.slice(bi); | ||
if (s[i]) s[i] += bs; // coalesce with previous string | ||
else s[++i] = bs; | ||
} | ||
if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match | ||
if (s[i]) s[i] += bm; // coalesce with previous string | ||
else s[++i] = bm; | ||
} else { // interpolate non-matching numbers | ||
s[++i] = null; | ||
q.push({i: i, x: number(am, bm)}); | ||
} | ||
bi = reB.lastIndex; | ||
// Special optimization for only a single match. | ||
// Otherwise, interpolate each of the numbers and rejoin the string. | ||
return s.length < 2 ? (q[0] | ||
? one(q[0].x) | ||
: zero(b)) | ||
: (b = q.length, function(t) { | ||
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); | ||
return s.join(""); | ||
}); | ||
} | ||
// Add remains of b. | ||
if (bi < b.length) { | ||
bs = b.slice(bi); | ||
if (s[i]) s[i] += bs; // coalesce with previous string | ||
else s[++i] = bs; | ||
function value(a, b) { | ||
var t = typeof b, c; | ||
return b == null || t === "boolean" ? constant(b) | ||
: (t === "number" ? number | ||
: t === "string" ? ((c = d3Color.color(b)) ? (b = c, rgb) : string) | ||
: b instanceof d3Color.color ? rgb | ||
: b instanceof Date ? date | ||
: Array.isArray(b) ? array | ||
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object | ||
: number)(a, b); | ||
} | ||
// Special optimization for only a single match. | ||
// Otherwise, interpolate each of the numbers and rejoin the string. | ||
return s.length < 2 ? (q[0] | ||
? one(q[0].x) | ||
: zero(b)) | ||
: (b = q.length, function(t) { | ||
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); | ||
return s.join(""); | ||
}); | ||
}; | ||
function discrete(range) { | ||
var n = range.length; | ||
return function(t) { | ||
return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; | ||
}; | ||
} | ||
var value = function(a, b) { | ||
var t = typeof b, c; | ||
return b == null || t === "boolean" ? constant(b) | ||
: (t === "number" ? number | ||
: t === "string" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string) | ||
: b instanceof d3Color.color ? rgb$1 | ||
: b instanceof Date ? date | ||
: Array.isArray(b) ? array | ||
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object | ||
: number)(a, b); | ||
}; | ||
function hue$1(a, b) { | ||
var i = hue(+a, +b); | ||
return function(t) { | ||
var x = i(t); | ||
return x - 360 * Math.floor(x / 360); | ||
}; | ||
} | ||
var round = function(a, b) { | ||
return a = +a, b -= a, function(t) { | ||
return Math.round(a + b * t); | ||
}; | ||
}; | ||
function round(a, b) { | ||
return a = +a, b -= a, function(t) { | ||
return Math.round(a + b * t); | ||
}; | ||
} | ||
var degrees = 180 / Math.PI; | ||
var degrees = 180 / Math.PI; | ||
var identity = { | ||
translateX: 0, | ||
translateY: 0, | ||
rotate: 0, | ||
skewX: 0, | ||
scaleX: 1, | ||
scaleY: 1 | ||
}; | ||
var decompose = function(a, b, c, d, e, f) { | ||
var scaleX, scaleY, skewX; | ||
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; | ||
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; | ||
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; | ||
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; | ||
return { | ||
translateX: e, | ||
translateY: f, | ||
rotate: Math.atan2(b, a) * degrees, | ||
skewX: Math.atan(skewX) * degrees, | ||
scaleX: scaleX, | ||
scaleY: scaleY | ||
var identity = { | ||
translateX: 0, | ||
translateY: 0, | ||
rotate: 0, | ||
skewX: 0, | ||
scaleX: 1, | ||
scaleY: 1 | ||
}; | ||
}; | ||
var cssNode; | ||
var cssRoot; | ||
var cssView; | ||
var svgNode; | ||
function decompose(a, b, c, d, e, f) { | ||
var scaleX, scaleY, skewX; | ||
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; | ||
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; | ||
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; | ||
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; | ||
return { | ||
translateX: e, | ||
translateY: f, | ||
rotate: Math.atan2(b, a) * degrees, | ||
skewX: Math.atan(skewX) * degrees, | ||
scaleX: scaleX, | ||
scaleY: scaleY | ||
}; | ||
} | ||
function parseCss(value) { | ||
if (value === "none") return identity; | ||
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; | ||
cssNode.style.transform = value; | ||
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); | ||
cssRoot.removeChild(cssNode); | ||
value = value.slice(7, -1).split(","); | ||
return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); | ||
} | ||
var cssNode, | ||
cssRoot, | ||
cssView, | ||
svgNode; | ||
function parseSvg(value) { | ||
if (value == null) return identity; | ||
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); | ||
svgNode.setAttribute("transform", value); | ||
if (!(value = svgNode.transform.baseVal.consolidate())) return identity; | ||
value = value.matrix; | ||
return decompose(value.a, value.b, value.c, value.d, value.e, value.f); | ||
} | ||
function parseCss(value) { | ||
if (value === "none") return identity; | ||
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; | ||
cssNode.style.transform = value; | ||
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); | ||
cssRoot.removeChild(cssNode); | ||
value = value.slice(7, -1).split(","); | ||
return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); | ||
} | ||
function interpolateTransform(parse, pxComma, pxParen, degParen) { | ||
function pop(s) { | ||
return s.length ? s.pop() + " " : ""; | ||
function parseSvg(value) { | ||
if (value == null) return identity; | ||
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); | ||
svgNode.setAttribute("transform", value); | ||
if (!(value = svgNode.transform.baseVal.consolidate())) return identity; | ||
value = value.matrix; | ||
return decompose(value.a, value.b, value.c, value.d, value.e, value.f); | ||
} | ||
function translate(xa, ya, xb, yb, s, q) { | ||
if (xa !== xb || ya !== yb) { | ||
var i = s.push("translate(", null, pxComma, null, pxParen); | ||
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); | ||
} else if (xb || yb) { | ||
s.push("translate(" + xb + pxComma + yb + pxParen); | ||
function interpolateTransform(parse, pxComma, pxParen, degParen) { | ||
function pop(s) { | ||
return s.length ? s.pop() + " " : ""; | ||
} | ||
} | ||
function rotate(a, b, s, q) { | ||
if (a !== b) { | ||
if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path | ||
q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number(a, b)}); | ||
} else if (b) { | ||
s.push(pop(s) + "rotate(" + b + degParen); | ||
function translate(xa, ya, xb, yb, s, q) { | ||
if (xa !== xb || ya !== yb) { | ||
var i = s.push("translate(", null, pxComma, null, pxParen); | ||
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); | ||
} else if (xb || yb) { | ||
s.push("translate(" + xb + pxComma + yb + pxParen); | ||
} | ||
} | ||
} | ||
function skewX(a, b, s, q) { | ||
if (a !== b) { | ||
q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number(a, b)}); | ||
} else if (b) { | ||
s.push(pop(s) + "skewX(" + b + degParen); | ||
function rotate(a, b, s, q) { | ||
if (a !== b) { | ||
if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path | ||
q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number(a, b)}); | ||
} else if (b) { | ||
s.push(pop(s) + "rotate(" + b + degParen); | ||
} | ||
} | ||
} | ||
function scale(xa, ya, xb, yb, s, q) { | ||
if (xa !== xb || ya !== yb) { | ||
var i = s.push(pop(s) + "scale(", null, ",", null, ")"); | ||
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); | ||
} else if (xb !== 1 || yb !== 1) { | ||
s.push(pop(s) + "scale(" + xb + "," + yb + ")"); | ||
function skewX(a, b, s, q) { | ||
if (a !== b) { | ||
q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number(a, b)}); | ||
} else if (b) { | ||
s.push(pop(s) + "skewX(" + b + degParen); | ||
} | ||
} | ||
} | ||
return function(a, b) { | ||
var s = [], // string constants and placeholders | ||
q = []; // number interpolators | ||
a = parse(a), b = parse(b); | ||
translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); | ||
rotate(a.rotate, b.rotate, s, q); | ||
skewX(a.skewX, b.skewX, s, q); | ||
scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); | ||
a = b = null; // gc | ||
return function(t) { | ||
var i = -1, n = q.length, o; | ||
while (++i < n) s[(o = q[i]).i] = o.x(t); | ||
return s.join(""); | ||
function scale(xa, ya, xb, yb, s, q) { | ||
if (xa !== xb || ya !== yb) { | ||
var i = s.push(pop(s) + "scale(", null, ",", null, ")"); | ||
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); | ||
} else if (xb !== 1 || yb !== 1) { | ||
s.push(pop(s) + "scale(" + xb + "," + yb + ")"); | ||
} | ||
} | ||
return function(a, b) { | ||
var s = [], // string constants and placeholders | ||
q = []; // number interpolators | ||
a = parse(a), b = parse(b); | ||
translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); | ||
rotate(a.rotate, b.rotate, s, q); | ||
skewX(a.skewX, b.skewX, s, q); | ||
scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); | ||
a = b = null; // gc | ||
return function(t) { | ||
var i = -1, n = q.length, o; | ||
while (++i < n) s[(o = q[i]).i] = o.x(t); | ||
return s.join(""); | ||
}; | ||
}; | ||
}; | ||
} | ||
} | ||
var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); | ||
var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); | ||
var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); | ||
var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); | ||
var rho = Math.SQRT2; | ||
var rho2 = 2; | ||
var rho4 = 4; | ||
var epsilon2 = 1e-12; | ||
var rho = Math.SQRT2, | ||
rho2 = 2, | ||
rho4 = 4, | ||
epsilon2 = 1e-12; | ||
function cosh(x) { | ||
return ((x = Math.exp(x)) + 1 / x) / 2; | ||
} | ||
function cosh(x) { | ||
return ((x = Math.exp(x)) + 1 / x) / 2; | ||
} | ||
function sinh(x) { | ||
return ((x = Math.exp(x)) - 1 / x) / 2; | ||
} | ||
function sinh(x) { | ||
return ((x = Math.exp(x)) - 1 / x) / 2; | ||
} | ||
function tanh(x) { | ||
return ((x = Math.exp(2 * x)) - 1) / (x + 1); | ||
} | ||
function tanh(x) { | ||
return ((x = Math.exp(2 * x)) - 1) / (x + 1); | ||
} | ||
// p0 = [ux0, uy0, w0] | ||
// p1 = [ux1, uy1, w1] | ||
var zoom = function(p0, p1) { | ||
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], | ||
ux1 = p1[0], uy1 = p1[1], w1 = p1[2], | ||
dx = ux1 - ux0, | ||
dy = uy1 - uy0, | ||
d2 = dx * dx + dy * dy, | ||
i, | ||
S; | ||
// p0 = [ux0, uy0, w0] | ||
// p1 = [ux1, uy1, w1] | ||
function zoom(p0, p1) { | ||
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], | ||
ux1 = p1[0], uy1 = p1[1], w1 = p1[2], | ||
dx = ux1 - ux0, | ||
dy = uy1 - uy0, | ||
d2 = dx * dx + dy * dy, | ||
i, | ||
S; | ||
// Special case for u0 ≅ u1. | ||
if (d2 < epsilon2) { | ||
S = Math.log(w1 / w0) / rho; | ||
i = function(t) { | ||
return [ | ||
ux0 + t * dx, | ||
uy0 + t * dy, | ||
w0 * Math.exp(rho * t * S) | ||
]; | ||
}; | ||
} | ||
// Special case for u0 ≅ u1. | ||
if (d2 < epsilon2) { | ||
S = Math.log(w1 / w0) / rho; | ||
i = function(t) { | ||
return [ | ||
ux0 + t * dx, | ||
uy0 + t * dy, | ||
w0 * Math.exp(rho * t * S) | ||
]; | ||
}; | ||
} | ||
// General case. | ||
else { | ||
var d1 = Math.sqrt(d2), | ||
b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), | ||
b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), | ||
r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), | ||
r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); | ||
S = (r1 - r0) / rho; | ||
i = function(t) { | ||
var s = t * S, | ||
coshr0 = cosh(r0), | ||
u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); | ||
return [ | ||
ux0 + u * dx, | ||
uy0 + u * dy, | ||
w0 * coshr0 / cosh(rho * s + r0) | ||
]; | ||
}; | ||
} | ||
// General case. | ||
else { | ||
var d1 = Math.sqrt(d2), | ||
b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), | ||
b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), | ||
r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), | ||
r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); | ||
S = (r1 - r0) / rho; | ||
i = function(t) { | ||
var s = t * S, | ||
coshr0 = cosh(r0), | ||
u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); | ||
return [ | ||
ux0 + u * dx, | ||
uy0 + u * dy, | ||
w0 * coshr0 / cosh(rho * s + r0) | ||
]; | ||
}; | ||
} | ||
i.duration = S * 1000; | ||
i.duration = S * 1000; | ||
return i; | ||
}; | ||
return i; | ||
} | ||
function hsl$1(hue$$1) { | ||
return function(start, end) { | ||
var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h), | ||
s = nogamma(start.s, end.s), | ||
l = nogamma(start.l, end.l), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.h = h(t); | ||
start.s = s(t); | ||
start.l = l(t); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
function hsl(hue$$1) { | ||
return function(start, end) { | ||
var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h), | ||
s = nogamma(start.s, end.s), | ||
l = nogamma(start.l, end.l), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.h = h(t); | ||
start.s = s(t); | ||
start.l = l(t); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
} | ||
} | ||
} | ||
var hsl$2 = hsl$1(hue); | ||
var hslLong = hsl$1(nogamma); | ||
var hsl$1 = hsl(hue); | ||
var hslLong = hsl(nogamma); | ||
function lab$1(start, end) { | ||
var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l), | ||
a = nogamma(start.a, end.a), | ||
b = nogamma(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.l = l(t); | ||
start.a = a(t); | ||
start.b = b(t); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
} | ||
function hcl$1(hue$$1) { | ||
return function(start, end) { | ||
var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h), | ||
c = nogamma(start.c, end.c), | ||
l = nogamma(start.l, end.l), | ||
function lab(start, end) { | ||
var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l), | ||
a = nogamma(start.a, end.a), | ||
b = nogamma(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.h = h(t); | ||
start.c = c(t); | ||
start.l = l(t); | ||
start.a = a(t); | ||
start.b = b(t); | ||
start.opacity = opacity(t); | ||
@@ -481,14 +481,7 @@ return start + ""; | ||
} | ||
} | ||
var hcl$2 = hcl$1(hue); | ||
var hclLong = hcl$1(nogamma); | ||
function cubehelix$1(hue$$1) { | ||
return (function cubehelixGamma(y) { | ||
y = +y; | ||
function cubehelix$$1(start, end) { | ||
var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h), | ||
s = nogamma(start.s, end.s), | ||
function hcl(hue$$1) { | ||
return function(start, end) { | ||
var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h), | ||
c = nogamma(start.c, end.c), | ||
l = nogamma(start.l, end.l), | ||
@@ -498,4 +491,4 @@ opacity = nogamma(start.opacity, end.opacity); | ||
start.h = h(t); | ||
start.s = s(t); | ||
start.l = l(Math.pow(t, y)); | ||
start.c = c(t); | ||
start.l = l(t); | ||
start.opacity = opacity(t); | ||
@@ -505,54 +498,78 @@ return start + ""; | ||
} | ||
} | ||
cubehelix$$1.gamma = cubehelixGamma; | ||
var hcl$1 = hcl(hue); | ||
var hclLong = hcl(nogamma); | ||
return cubehelix$$1; | ||
})(1); | ||
} | ||
function cubehelix(hue$$1) { | ||
return (function cubehelixGamma(y) { | ||
y = +y; | ||
var cubehelix$2 = cubehelix$1(hue); | ||
var cubehelixLong = cubehelix$1(nogamma); | ||
function cubehelix(start, end) { | ||
var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h), | ||
s = nogamma(start.s, end.s), | ||
l = nogamma(start.l, end.l), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function(t) { | ||
start.h = h(t); | ||
start.s = s(t); | ||
start.l = l(Math.pow(t, y)); | ||
start.opacity = opacity(t); | ||
return start + ""; | ||
}; | ||
} | ||
function piecewise(interpolate, values) { | ||
var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); | ||
while (i < n) I[i] = interpolate(v, v = values[++i]); | ||
return function(t) { | ||
var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); | ||
return I[i](t - i); | ||
}; | ||
} | ||
cubehelix.gamma = cubehelixGamma; | ||
var quantize = function(interpolator, n) { | ||
var samples = new Array(n); | ||
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); | ||
return samples; | ||
}; | ||
return cubehelix; | ||
})(1); | ||
} | ||
exports.interpolate = value; | ||
exports.interpolateArray = array; | ||
exports.interpolateBasis = basis$1; | ||
exports.interpolateBasisClosed = basisClosed; | ||
exports.interpolateDate = date; | ||
exports.interpolateNumber = number; | ||
exports.interpolateObject = object; | ||
exports.interpolateRound = round; | ||
exports.interpolateString = string; | ||
exports.interpolateTransformCss = interpolateTransformCss; | ||
exports.interpolateTransformSvg = interpolateTransformSvg; | ||
exports.interpolateZoom = zoom; | ||
exports.interpolateRgb = rgb$1; | ||
exports.interpolateRgbBasis = rgbBasis; | ||
exports.interpolateRgbBasisClosed = rgbBasisClosed; | ||
exports.interpolateHsl = hsl$2; | ||
exports.interpolateHslLong = hslLong; | ||
exports.interpolateLab = lab$1; | ||
exports.interpolateHcl = hcl$2; | ||
exports.interpolateHclLong = hclLong; | ||
exports.interpolateCubehelix = cubehelix$2; | ||
exports.interpolateCubehelixLong = cubehelixLong; | ||
exports.piecewise = piecewise; | ||
exports.quantize = quantize; | ||
var cubehelix$1 = cubehelix(hue); | ||
var cubehelixLong = cubehelix(nogamma); | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
function piecewise(interpolate, values) { | ||
var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); | ||
while (i < n) I[i] = interpolate(v, v = values[++i]); | ||
return function(t) { | ||
var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); | ||
return I[i](t - i); | ||
}; | ||
} | ||
function quantize(interpolator, n) { | ||
var samples = new Array(n); | ||
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); | ||
return samples; | ||
} | ||
exports.interpolate = value; | ||
exports.interpolateArray = array; | ||
exports.interpolateBasis = basis$1; | ||
exports.interpolateBasisClosed = basisClosed; | ||
exports.interpolateDate = date; | ||
exports.interpolateDiscrete = discrete; | ||
exports.interpolateHue = hue$1; | ||
exports.interpolateNumber = number; | ||
exports.interpolateObject = object; | ||
exports.interpolateRound = round; | ||
exports.interpolateString = string; | ||
exports.interpolateTransformCss = interpolateTransformCss; | ||
exports.interpolateTransformSvg = interpolateTransformSvg; | ||
exports.interpolateZoom = zoom; | ||
exports.interpolateRgb = rgb; | ||
exports.interpolateRgbBasis = rgbBasis; | ||
exports.interpolateRgbBasisClosed = rgbBasisClosed; | ||
exports.interpolateHsl = hsl$1; | ||
exports.interpolateHslLong = hslLong; | ||
exports.interpolateLab = lab; | ||
exports.interpolateHcl = hcl$1; | ||
exports.interpolateHclLong = hclLong; | ||
exports.interpolateCubehelix = cubehelix$1; | ||
exports.interpolateCubehelixLong = cubehelixLong; | ||
exports.piecewise = piecewise; | ||
exports.quantize = quantize; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); |
@@ -1,2 +0,2 @@ | ||
// https://d3js.org/d3-interpolate/ Version 1.2.0. Copyright 2018 Mike Bostock. | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("d3-color")):"function"==typeof define&&define.amd?define(["exports","d3-color"],n):n(t.d3=t.d3||{},t.d3)}(this,function(t,n){"use strict";function r(t,n,r,e,o){var a=t*t,u=a*t;return((1-3*t+3*a-u)*n+(4-6*a+3*u)*r+(1+3*t+3*a-3*u)*e+u*o)/6}function e(t,n){return function(r){return t+r*n}}function o(t,n,r){return t=Math.pow(t,r),n=Math.pow(n,r)-t,r=1/r,function(e){return Math.pow(t+e*n,r)}}function a(t,n){var r=n-t;return r?e(t,r>180||r<-180?r-360*Math.round(r/360):r):j(isNaN(t)?n:t)}function u(t){return 1==(t=+t)?i:function(n,r){return r-n?o(n,r,t):j(isNaN(n)?r:n)}}function i(t,n){var r=n-t;return r?e(t,r):j(isNaN(t)?n:t)}function l(t){return function(r){var e,o,a=r.length,u=new Array(a),i=new Array(a),l=new Array(a);for(e=0;e<a;++e)o=n.rgb(r[e]),u[e]=o.r||0,i[e]=o.g||0,l[e]=o.b||0;return u=t(u),i=t(i),l=t(l),o.opacity=1,function(t){return o.r=u(t),o.g=i(t),o.b=l(t),o+""}}}function c(t){return function(){return t}}function f(t){return function(n){return t(n)+""}}function s(t){return"none"===t?P:(w||(w=document.createElement("DIV"),X=document.documentElement,A=document.defaultView),w.style.transform=t,t=A.getComputedStyle(X.appendChild(w),null).getPropertyValue("transform"),X.removeChild(w),t=t.slice(7,-1).split(","),_(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function p(t){return null==t?P:(N||(N=document.createElementNS("http://www.w3.org/2000/svg","g")),N.setAttribute("transform",t),(t=N.transform.baseVal.consolidate())?(t=t.matrix,_(t.a,t.b,t.c,t.d,t.e,t.f)):P)}function h(t,n,r,e){function o(t){return t.length?t.pop()+" ":""}function a(t,e,o,a,u,i){if(t!==o||e!==a){var l=u.push("translate(",null,n,null,r);i.push({i:l-4,x:I(t,o)},{i:l-2,x:I(e,a)})}else(o||a)&&u.push("translate("+o+n+a+r)}function u(t,n,r,a){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),a.push({i:r.push(o(r)+"rotate(",null,e)-2,x:I(t,n)})):n&&r.push(o(r)+"rotate("+n+e)}function i(t,n,r,a){t!==n?a.push({i:r.push(o(r)+"skewX(",null,e)-2,x:I(t,n)}):n&&r.push(o(r)+"skewX("+n+e)}function l(t,n,r,e,a,u){if(t!==r||n!==e){var i=a.push(o(a)+"scale(",null,",",null,")");u.push({i:i-4,x:I(t,r)},{i:i-2,x:I(n,e)})}else 1===r&&1===e||a.push(o(a)+"scale("+r+","+e+")")}return function(n,r){var e=[],o=[];return n=t(n),r=t(r),a(n.translateX,n.translateY,r.translateX,r.translateY,e,o),u(n.rotate,r.rotate,e,o),i(n.skewX,r.skewX,e,o),l(n.scaleX,n.scaleY,r.scaleX,r.scaleY,e,o),n=r=null,function(t){for(var n,r=-1,a=o.length;++r<a;)e[(n=o[r]).i]=n.x(t);return e.join("")}}}function g(t){return((t=Math.exp(t))+1/t)/2}function d(t){return((t=Math.exp(t))-1/t)/2}function y(t){return((t=Math.exp(2*t))-1)/(t+1)}function v(t){return function(r,e){var o=t((r=n.hsl(r)).h,(e=n.hsl(e)).h),a=i(r.s,e.s),u=i(r.l,e.l),l=i(r.opacity,e.opacity);return function(t){return r.h=o(t),r.s=a(t),r.l=u(t),r.opacity=l(t),r+""}}}function b(t,r){var e=i((t=n.lab(t)).l,(r=n.lab(r)).l),o=i(t.a,r.a),a=i(t.b,r.b),u=i(t.opacity,r.opacity);return function(n){return t.l=e(n),t.a=o(n),t.b=a(n),t.opacity=u(n),t+""}}function x(t){return function(r,e){var o=t((r=n.hcl(r)).h,(e=n.hcl(e)).h),a=i(r.c,e.c),u=i(r.l,e.l),l=i(r.opacity,e.opacity);return function(t){return r.h=o(t),r.c=a(t),r.l=u(t),r.opacity=l(t),r+""}}}function m(t){return function r(e){function o(r,o){var a=t((r=n.cubehelix(r)).h,(o=n.cubehelix(o)).h),u=i(r.s,o.s),l=i(r.l,o.l),c=i(r.opacity,o.opacity);return function(t){return r.h=a(t),r.s=u(t),r.l=l(Math.pow(t,e)),r.opacity=c(t),r+""}}return e=+e,o.gamma=r,o}(1)}function M(t,n){for(var r=0,e=n.length-1,o=n[0],a=new Array(e<0?0:e);r<e;)a[r]=t(o,o=n[++r]);return function(t){var n=Math.max(0,Math.min(e-1,Math.floor(t*=e)));return a[n](t-n)}}var w,X,A,N,C=function(t){var n=t.length-1;return function(e){var o=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),a=t[o],u=t[o+1],i=o>0?t[o-1]:2*a-u,l=o<n-1?t[o+2]:2*u-a;return r((e-o/n)*n,i,a,u,l)}},Y=function(t){var n=t.length;return function(e){var o=Math.floor(((e%=1)<0?++e:e)*n),a=t[(o+n-1)%n],u=t[o%n],i=t[(o+1)%n],l=t[(o+2)%n];return r((e-o/n)*n,a,u,i,l)}},j=function(t){return function(){return t}},q=function t(r){function e(t,r){var e=o((t=n.rgb(t)).r,(r=n.rgb(r)).r),a=o(t.g,r.g),u=o(t.b,r.b),l=i(t.opacity,r.opacity);return function(n){return t.r=e(n),t.g=a(n),t.b=u(n),t.opacity=l(n),t+""}}var o=u(r);return e.gamma=t,e}(1),k=l(C),R=l(Y),S=function(t,n){var r,e=n?n.length:0,o=t?Math.min(e,t.length):0,a=new Array(o),u=new Array(e);for(r=0;r<o;++r)a[r]=T(t[r],n[r]);for(;r<e;++r)u[r]=n[r];return function(t){for(r=0;r<o;++r)u[r]=a[r](t);return u}},E=function(t,n){var r=new Date;return t=+t,n-=t,function(e){return r.setTime(t+n*e),r}},I=function(t,n){return t=+t,n-=t,function(r){return t+n*r}},B=function(t,n){var r,e={},o={};null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={});for(r in n)r in t?e[r]=T(t[r],n[r]):o[r]=n[r];return function(t){for(r in e)o[r]=e[r](t);return o}},D=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,H=new RegExp(D.source,"g"),L=function(t,n){var r,e,o,a=D.lastIndex=H.lastIndex=0,u=-1,i=[],l=[];for(t+="",n+="";(r=D.exec(t))&&(e=H.exec(n));)(o=e.index)>a&&(o=n.slice(a,o),i[u]?i[u]+=o:i[++u]=o),(r=r[0])===(e=e[0])?i[u]?i[u]+=e:i[++u]=e:(i[++u]=null,l.push({i:u,x:I(r,e)})),a=H.lastIndex;return a<n.length&&(o=n.slice(a),i[u]?i[u]+=o:i[++u]=o),i.length<2?l[0]?f(l[0].x):c(n):(n=l.length,function(t){for(var r,e=0;e<n;++e)i[(r=l[e]).i]=r.x(t);return i.join("")})},T=function(t,r){var e,o=typeof r;return null==r||"boolean"===o?j(r):("number"===o?I:"string"===o?(e=n.color(r))?(r=e,q):L:r instanceof n.color?q:r instanceof Date?E:Array.isArray(r)?S:"function"!=typeof r.valueOf&&"function"!=typeof r.toString||isNaN(r)?B:I)(t,r)},V=function(t,n){return t=+t,n-=t,function(r){return Math.round(t+n*r)}},O=180/Math.PI,P={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},_=function(t,n,r,e,o,a){var u,i,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*r+n*e)&&(r-=t*l,e-=n*l),(i=Math.sqrt(r*r+e*e))&&(r/=i,e/=i,l/=i),t*e<n*r&&(t=-t,n=-n,l=-l,u=-u),{translateX:o,translateY:a,rotate:Math.atan2(n,t)*O,skewX:Math.atan(l)*O,scaleX:u,scaleY:i}},z=h(s,"px, ","px)","deg)"),Q=h(p,", ",")",")"),Z=Math.SQRT2,F=function(t,n){var r,e,o=t[0],a=t[1],u=t[2],i=n[0],l=n[1],c=n[2],f=i-o,s=l-a,p=f*f+s*s;if(p<1e-12)e=Math.log(c/u)/Z,r=function(t){return[o+t*f,a+t*s,u*Math.exp(Z*t*e)]};else{var h=Math.sqrt(p),v=(c*c-u*u+4*p)/(2*u*2*h),b=(c*c-u*u-4*p)/(2*c*2*h),x=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(b*b+1)-b);e=(m-x)/Z,r=function(t){var n=t*e,r=g(x),i=u/(2*h)*(r*y(Z*n+x)-d(x));return[o+i*f,a+i*s,u*r/g(Z*n+x)]}}return r.duration=1e3*e,r},G=v(a),J=v(i),K=x(a),U=x(i),W=m(a),$=m(i),tt=function(t,n){for(var r=new Array(n),e=0;e<n;++e)r[e]=t(e/(n-1));return r};t.interpolate=T,t.interpolateArray=S,t.interpolateBasis=C,t.interpolateBasisClosed=Y,t.interpolateDate=E,t.interpolateNumber=I,t.interpolateObject=B,t.interpolateRound=V,t.interpolateString=L,t.interpolateTransformCss=z,t.interpolateTransformSvg=Q,t.interpolateZoom=F,t.interpolateRgb=q,t.interpolateRgbBasis=k,t.interpolateRgbBasisClosed=R,t.interpolateHsl=G,t.interpolateHslLong=J,t.interpolateLab=b,t.interpolateHcl=K,t.interpolateHclLong=U,t.interpolateCubehelix=W,t.interpolateCubehelixLong=$,t.piecewise=M,t.quantize=tt,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
// https://d3js.org/d3-interpolate/ Version 1.3.0 Copyright 2018 Mike Bostock. | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("d3-color")):"function"==typeof define&&define.amd?define(["exports","d3-color"],n):n(t.d3=t.d3||{},t.d3)}(this,function(t,n){"use strict";function r(t,n,r,e,o){var a=t*t,u=a*t;return((1-3*t+3*a-u)*n+(4-6*a+3*u)*r+(1+3*t+3*a-3*u)*e+u*o)/6}function e(t){var n=t.length-1;return function(e){var o=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),a=t[o],u=t[o+1],i=o>0?t[o-1]:2*a-u,l=o<n-1?t[o+2]:2*u-a;return r((e-o/n)*n,i,a,u,l)}}function o(t){var n=t.length;return function(e){var o=Math.floor(((e%=1)<0?++e:e)*n),a=t[(o+n-1)%n],u=t[o%n],i=t[(o+1)%n],l=t[(o+2)%n];return r((e-o/n)*n,a,u,i,l)}}function a(t){return function(){return t}}function u(t,n){return function(r){return t+r*n}}function i(t,n){var r=n-t;return r?u(t,r>180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?n:t)}function l(t){return 1==(t=+t)?c:function(n,r){return r-n?function(t,n,r){return t=Math.pow(t,r),n=Math.pow(n,r)-t,r=1/r,function(e){return Math.pow(t+e*n,r)}}(n,r,t):a(isNaN(n)?r:n)}}function c(t,n){var r=n-t;return r?u(t,r):a(isNaN(t)?n:t)}var f=function t(r){var e=l(r);function o(t,r){var o=e((t=n.rgb(t)).r,(r=n.rgb(r)).r),a=e(t.g,r.g),u=e(t.b,r.b),i=c(t.opacity,r.opacity);return function(n){return t.r=o(n),t.g=a(n),t.b=u(n),t.opacity=i(n),t+""}}return o.gamma=t,o}(1);function s(t){return function(r){var e,o,a=r.length,u=new Array(a),i=new Array(a),l=new Array(a);for(e=0;e<a;++e)o=n.rgb(r[e]),u[e]=o.r||0,i[e]=o.g||0,l[e]=o.b||0;return u=t(u),i=t(i),l=t(l),o.opacity=1,function(t){return o.r=u(t),o.g=i(t),o.b=l(t),o+""}}}var p=s(e),h=s(o);function v(t,n){var r,e=n?n.length:0,o=t?Math.min(e,t.length):0,a=new Array(o),u=new Array(e);for(r=0;r<o;++r)a[r]=m(t[r],n[r]);for(;r<e;++r)u[r]=n[r];return function(t){for(r=0;r<o;++r)u[r]=a[r](t);return u}}function g(t,n){var r=new Date;return n-=t=+t,function(e){return r.setTime(t+n*e),r}}function d(t,n){return n-=t=+t,function(r){return t+n*r}}function y(t,n){var r,e={},o={};for(r in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)r in t?e[r]=m(t[r],n[r]):o[r]=n[r];return function(t){for(r in e)o[r]=e[r](t);return o}}var x=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,M=new RegExp(x.source,"g");function b(t,n){var r,e,o,a=x.lastIndex=M.lastIndex=0,u=-1,i=[],l=[];for(t+="",n+="";(r=x.exec(t))&&(e=M.exec(n));)(o=e.index)>a&&(o=n.slice(a,o),i[u]?i[u]+=o:i[++u]=o),(r=r[0])===(e=e[0])?i[u]?i[u]+=e:i[++u]=e:(i[++u]=null,l.push({i:u,x:d(r,e)})),a=M.lastIndex;return a<n.length&&(o=n.slice(a),i[u]?i[u]+=o:i[++u]=o),i.length<2?l[0]?function(t){return function(n){return t(n)+""}}(l[0].x):function(t){return function(){return t}}(n):(n=l.length,function(t){for(var r,e=0;e<n;++e)i[(r=l[e]).i]=r.x(t);return i.join("")})}function m(t,r){var e,o=typeof r;return null==r||"boolean"===o?a(r):("number"===o?d:"string"===o?(e=n.color(r))?(r=e,f):b:r instanceof n.color?f:r instanceof Date?g:Array.isArray(r)?v:"function"!=typeof r.valueOf&&"function"!=typeof r.toString||isNaN(r)?y:d)(t,r)}var w,X,A,N,C=180/Math.PI,Y={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function j(t,n,r,e,o,a){var u,i,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*r+n*e)&&(r-=t*l,e-=n*l),(i=Math.sqrt(r*r+e*e))&&(r/=i,e/=i,l/=i),t*e<n*r&&(t=-t,n=-n,l=-l,u=-u),{translateX:o,translateY:a,rotate:Math.atan2(n,t)*C,skewX:Math.atan(l)*C,scaleX:u,scaleY:i}}function q(t,n,r,e){function o(t){return t.length?t.pop()+" ":""}return function(a,u){var i=[],l=[];return a=t(a),u=t(u),function(t,e,o,a,u,i){if(t!==o||e!==a){var l=u.push("translate(",null,n,null,r);i.push({i:l-4,x:d(t,o)},{i:l-2,x:d(e,a)})}else(o||a)&&u.push("translate("+o+n+a+r)}(a.translateX,a.translateY,u.translateX,u.translateY,i,l),function(t,n,r,a){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),a.push({i:r.push(o(r)+"rotate(",null,e)-2,x:d(t,n)})):n&&r.push(o(r)+"rotate("+n+e)}(a.rotate,u.rotate,i,l),function(t,n,r,a){t!==n?a.push({i:r.push(o(r)+"skewX(",null,e)-2,x:d(t,n)}):n&&r.push(o(r)+"skewX("+n+e)}(a.skewX,u.skewX,i,l),function(t,n,r,e,a,u){if(t!==r||n!==e){var i=a.push(o(a)+"scale(",null,",",null,")");u.push({i:i-4,x:d(t,r)},{i:i-2,x:d(n,e)})}else 1===r&&1===e||a.push(o(a)+"scale("+r+","+e+")")}(a.scaleX,a.scaleY,u.scaleX,u.scaleY,i,l),a=u=null,function(t){for(var n,r=-1,e=l.length;++r<e;)i[(n=l[r]).i]=n.x(t);return i.join("")}}}var k=q(function(t){return"none"===t?Y:(w||(w=document.createElement("DIV"),X=document.documentElement,A=document.defaultView),w.style.transform=t,t=A.getComputedStyle(X.appendChild(w),null).getPropertyValue("transform"),X.removeChild(w),j(+(t=t.slice(7,-1).split(","))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),R=q(function(t){return null==t?Y:(N||(N=document.createElementNS("http://www.w3.org/2000/svg","g")),N.setAttribute("transform",t),(t=N.transform.baseVal.consolidate())?j((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Y)},", ",")",")"),S=Math.SQRT2,D=2,E=4,H=1e-12;function I(t){return((t=Math.exp(t))+1/t)/2}function B(t){return function(r,e){var o=t((r=n.hsl(r)).h,(e=n.hsl(e)).h),a=c(r.s,e.s),u=c(r.l,e.l),i=c(r.opacity,e.opacity);return function(t){return r.h=o(t),r.s=a(t),r.l=u(t),r.opacity=i(t),r+""}}}var L=B(i),T=B(c);function V(t){return function(r,e){var o=t((r=n.hcl(r)).h,(e=n.hcl(e)).h),a=c(r.c,e.c),u=c(r.l,e.l),i=c(r.opacity,e.opacity);return function(t){return r.h=o(t),r.c=a(t),r.l=u(t),r.opacity=i(t),r+""}}}var O=V(i),P=V(c);function _(t){return function r(e){function o(r,o){var a=t((r=n.cubehelix(r)).h,(o=n.cubehelix(o)).h),u=c(r.s,o.s),i=c(r.l,o.l),l=c(r.opacity,o.opacity);return function(t){return r.h=a(t),r.s=u(t),r.l=i(Math.pow(t,e)),r.opacity=l(t),r+""}}return e=+e,o.gamma=r,o}(1)}var z=_(i),Q=_(c);t.interpolate=m,t.interpolateArray=v,t.interpolateBasis=e,t.interpolateBasisClosed=o,t.interpolateDate=g,t.interpolateDiscrete=function(t){var n=t.length;return function(r){return t[Math.max(0,Math.min(n-1,Math.floor(r*n)))]}},t.interpolateHue=function(t,n){var r=i(+t,+n);return function(t){var n=r(t);return n-360*Math.floor(n/360)}},t.interpolateNumber=d,t.interpolateObject=y,t.interpolateRound=function(t,n){return n-=t=+t,function(r){return Math.round(t+n*r)}},t.interpolateString=b,t.interpolateTransformCss=k,t.interpolateTransformSvg=R,t.interpolateZoom=function(t,n){var r,e,o=t[0],a=t[1],u=t[2],i=n[0],l=n[1],c=n[2],f=i-o,s=l-a,p=f*f+s*s;if(p<H)e=Math.log(c/u)/S,r=function(t){return[o+t*f,a+t*s,u*Math.exp(S*t*e)]};else{var h=Math.sqrt(p),v=(c*c-u*u+E*p)/(2*u*D*h),g=(c*c-u*u-E*p)/(2*c*D*h),d=Math.log(Math.sqrt(v*v+1)-v),y=Math.log(Math.sqrt(g*g+1)-g);e=(y-d)/S,r=function(t){var n,r=t*e,i=I(d),l=u/(D*h)*(i*(n=S*r+d,((n=Math.exp(2*n))-1)/(n+1))-function(t){return((t=Math.exp(t))-1/t)/2}(d));return[o+l*f,a+l*s,u*i/I(S*r+d)]}}return r.duration=1e3*e,r},t.interpolateRgb=f,t.interpolateRgbBasis=p,t.interpolateRgbBasisClosed=h,t.interpolateHsl=L,t.interpolateHslLong=T,t.interpolateLab=function(t,r){var e=c((t=n.lab(t)).l,(r=n.lab(r)).l),o=c(t.a,r.a),a=c(t.b,r.b),u=c(t.opacity,r.opacity);return function(n){return t.l=e(n),t.a=o(n),t.b=a(n),t.opacity=u(n),t+""}},t.interpolateHcl=O,t.interpolateHclLong=P,t.interpolateCubehelix=z,t.interpolateCubehelixLong=Q,t.piecewise=function(t,n){for(var r=0,e=n.length-1,o=n[0],a=new Array(e<0?0:e);r<e;)a[r]=t(o,o=n[++r]);return function(t){var n=Math.max(0,Math.min(e-1,Math.floor(t*=e)));return a[n](t-n)}},t.quantize=function(t,n){for(var r=new Array(n),e=0;e<n;++e)r[e]=t(e/(n-1));return r},Object.defineProperty(t,"__esModule",{value:!0})}); |
@@ -6,2 +6,4 @@ export {default as interpolate} from "./src/value"; | ||
export {default as interpolateDate} from "./src/date"; | ||
export {default as interpolateDiscrete} from "./src/discrete"; | ||
export {default as interpolateHue} from "./src/hue"; | ||
export {default as interpolateNumber} from "./src/number"; | ||
@@ -8,0 +10,0 @@ export {default as interpolateObject} from "./src/object"; |
{ | ||
"name": "d3-interpolate", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "Interpolate numbers, colors, strings, arrays, objects, whatever!", | ||
@@ -26,5 +26,5 @@ "keywords": [ | ||
"scripts": { | ||
"pretest": "rm -rf build && mkdir build && rollup --banner \"$(preamble)\" -f umd -g d3-color:d3 -n d3 -o build/d3-interpolate.js -- index.js", | ||
"pretest": "rm -rf build && mkdir build && rollup -c", | ||
"test": "tape 'test/**/*-test.js' && eslint index.js src test", | ||
"prepublish": "npm run test && uglifyjs --preamble \"$(preamble)\" build/d3-interpolate.js -c -m -o build/d3-interpolate.min.js", | ||
"prepublish": "yarn test", | ||
"postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3-interpolate/build/d3-interpolate.js d3-interpolate.v1.js && cp ../d3-interpolate/build/d3-interpolate.min.js d3-interpolate.v1.min.js && git add d3-interpolate.v1.js d3-interpolate.v1.min.js && git commit -m \"d3-interpolate ${npm_package_version}\" && git push && cd - && zip -j build/d3-interpolate.zip -- LICENSE README.md build/d3-interpolate.js build/d3-interpolate.min.js" | ||
@@ -36,8 +36,7 @@ }, | ||
"devDependencies": { | ||
"eslint": "3", | ||
"package-preamble": "0.1", | ||
"rollup": "0.41", | ||
"tape": "4", | ||
"uglify-js": "^2.8.11" | ||
"eslint": "5", | ||
"rollup": "0.64", | ||
"rollup-plugin-terser": "1", | ||
"tape": "4" | ||
} | ||
} |
@@ -127,2 +127,6 @@ # d3-interpolate | ||
<a name="interpolateDiscrete" href="#interpolateDiscrete">#</a> d3.<b>interpolateDiscrete</b>(<i>values</i>) [<>](https://github.com/d3/d3-interpolate/blob/master/src/discrete.js "Source") | ||
Returns a discrete interpolator for the given array of *values*. The returned interpolator maps *t* in [0, 1 / *n*) to *values*[0], *t* in [1 / *n*, 2 / *n*) to *values*[1], and so on, where *n* = *values*.length. In effect, this is a lightweight [quantize scale](https://github.com/d3/d3-scale/blob/master/README.md#quantize-scales) with a fixed domain of [0, 1]. | ||
### Sampling | ||
@@ -216,2 +220,6 @@ | ||
<a name="interpolateHue" href="#interpolateHue">#</a> d3.<b>interpolateHue</b>(<i>a</i>, <i>b</i>) [<>](https://github.com/d3/d3-interpolate/blob/master/src/hue.js "Source") | ||
Returns an interpolator between the two hue angles *a* and *b*. If either hue is NaN, the opposing value is used. The shortest path between hues is used. The return value of the interpolator is a number in [0, 360). | ||
### Splines | ||
@@ -218,0 +226,0 @@ |
159461
4
44
1089
244