function styleInterpolate(name, i, priority) { | |
return function(t) { | |
this.style.setProperty(name, i.call(this, t), priority); | |
}; | |
} | |
function styleTween(name, value, priority) { | |
var t, i0; | |
function tween() { | |
var i = value.apply(this, arguments); | |
if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); | |
return t; | |
} | |
tween._value = value; | |
return tween; | |
} | |
export default function(name, value, priority) { | |
var key = "style." + (name += ""); | |
if (arguments.length < 2) return (key = this.tween(key)) && key._value; | |
if (value == null) return this.tween(key, null); | |
if (typeof value !== "function") throw new Error; | |
return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); | |
} | |