diff --git a/src/array.js b/src/array.js index 89f7722..c0ecc51 100644 --- a/src/array.js +++ b/src/array.js @@ -1,4 +1,4 @@ -import value from "./value.js"; +import { value } from "./value_object.js"; import numberArray, {isNumberArray} from "./numberArray.js"; export default function(a, b) { diff --git a/src/index.js b/src/index.js index b4dce7d..c78b68b 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -export {default as interpolate} from "./value.js"; +export {value as interpolate, object as interpolateObject} from "./value_object.js"; export {default as interpolateArray} from "./array.js"; export {default as interpolateBasis} from "./basis.js"; export {default as interpolateBasisClosed} from "./basisClosed.js"; @@ -7,7 +7,6 @@ export {default as interpolateDiscrete} from "./discrete.js"; export {default as interpolateHue} from "./hue.js"; export {default as interpolateNumber} from "./number.js"; export {default as interpolateNumberArray} from "./numberArray.js"; -export {default as interpolateObject} from "./object.js"; export {default as interpolateRound} from "./round.js"; export {default as interpolateString} from "./string.js"; export {interpolateTransformCss, interpolateTransformSvg} from "./transform/index.js"; diff --git a/src/object.js b/src/object.js deleted file mode 100644 index b521c33..0000000 --- a/src/object.js +++ /dev/null @@ -1,23 +0,0 @@ -import value from "./value.js"; - -export default function(a, b) { - var i = {}, - c = {}, - k; - - 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]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} diff --git a/src/piecewise.js b/src/piecewise.js index 8b568c5..ad09eaa 100644 --- a/src/piecewise.js +++ b/src/piecewise.js @@ -1,4 +1,4 @@ -import {default as value} from "./value.js"; +import { value } from "./value_object"; export default function piecewise(interpolate, values) { if (values === undefined) values = interpolate, interpolate = value; diff --git a/src/value.js b/src/value_object.js similarity index 66% rename from src/value.js rename to src/value_object.js index 6a67ac4..14afef3 100644 --- a/src/value.js +++ b/src/value_object.js @@ -8,7 +8,7 @@ import string from "./string.js"; import constant from "./constant.js"; import numberArray, {isNumberArray} from "./numberArray.js"; -export default function(a, b) { +export function value(a, b) { var t = typeof b, c; return b == null || t === "boolean" ? constant(b) : (t === "number" ? number @@ -20,3 +20,25 @@ export default function(a, b) { : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object : number)(a, b); } + +export function object(a, b) { + var i = {}, + c = {}, + k; + + 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]; + } + } + + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; +}