@nepwork/dashboards
Version:
Dashboards for emergencies and monitoring
59 lines (53 loc) • 1.91 kB
JavaScript
import {interpolateTransformCss as interpolateTransform} from "d3-interpolate";
import {style} from "d3-selection";
import {tweenValue} from "./tween";
import interpolate from "./interpolate";
function styleRemove(name, interpolate) {
var value00,
value10,
interpolate0;
return function() {
var value0 = style(this, name),
value1 = (this.style.removeProperty(name), style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate(value00 = value0, value10 = value1);
};
}
function styleRemoveEnd(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, interpolate, value1) {
var value00,
interpolate0;
return function() {
var value0 = style(this, name);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate(value00 = value0, value1);
};
}
function styleFunction(name, interpolate, value) {
var value00,
value10,
interpolate0;
return function() {
var value0 = style(this, name),
value1 = value(this);
if (value1 == null) value1 = (this.style.removeProperty(name), style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate(value00 = value0, value10 = value1);
};
}
export default function(name, value, priority) {
var i = (name += "") === "transform" ? interpolateTransform : interpolate;
return value == null ? this
.styleTween(name, styleRemove(name, i))
.on("end.style." + name, styleRemoveEnd(name))
: this.styleTween(name, typeof value === "function"
? styleFunction(name, i, tweenValue(this, "style." + name, value))
: styleConstant(name, i, value + ""), priority);
}