mirror of
https://github.com/nunocoracao/blowfish.git
synced 2026-01-30 16:31:52 +01:00
79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
import {interpolateTransformSvg as interpolateTransform} from "d3-interpolate";
|
|
import {namespace} from "d3-selection";
|
|
import {tweenValue} from "./tween.js";
|
|
import interpolate from "./interpolate.js";
|
|
|
|
function attrRemove(name) {
|
|
return function() {
|
|
this.removeAttribute(name);
|
|
};
|
|
}
|
|
|
|
function attrRemoveNS(fullname) {
|
|
return function() {
|
|
this.removeAttributeNS(fullname.space, fullname.local);
|
|
};
|
|
}
|
|
|
|
function attrConstant(name, interpolate, value1) {
|
|
var string00,
|
|
string1 = value1 + "",
|
|
interpolate0;
|
|
return function() {
|
|
var string0 = this.getAttribute(name);
|
|
return string0 === string1 ? null
|
|
: string0 === string00 ? interpolate0
|
|
: interpolate0 = interpolate(string00 = string0, value1);
|
|
};
|
|
}
|
|
|
|
function attrConstantNS(fullname, interpolate, value1) {
|
|
var string00,
|
|
string1 = value1 + "",
|
|
interpolate0;
|
|
return function() {
|
|
var string0 = this.getAttributeNS(fullname.space, fullname.local);
|
|
return string0 === string1 ? null
|
|
: string0 === string00 ? interpolate0
|
|
: interpolate0 = interpolate(string00 = string0, value1);
|
|
};
|
|
}
|
|
|
|
function attrFunction(name, interpolate, value) {
|
|
var string00,
|
|
string10,
|
|
interpolate0;
|
|
return function() {
|
|
var string0, value1 = value(this), string1;
|
|
if (value1 == null) return void this.removeAttribute(name);
|
|
string0 = this.getAttribute(name);
|
|
string1 = value1 + "";
|
|
return string0 === string1 ? null
|
|
: string0 === string00 && string1 === string10 ? interpolate0
|
|
: (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
|
|
};
|
|
}
|
|
|
|
function attrFunctionNS(fullname, interpolate, value) {
|
|
var string00,
|
|
string10,
|
|
interpolate0;
|
|
return function() {
|
|
var string0, value1 = value(this), string1;
|
|
if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
|
|
string0 = this.getAttributeNS(fullname.space, fullname.local);
|
|
string1 = value1 + "";
|
|
return string0 === string1 ? null
|
|
: string0 === string00 && string1 === string10 ? interpolate0
|
|
: (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
|
|
};
|
|
}
|
|
|
|
export default function(name, value) {
|
|
var fullname = namespace(name), i = fullname === "transform" ? interpolateTransform : interpolate;
|
|
return this.attrTween(name, typeof value === "function"
|
|
? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value))
|
|
: value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
|
|
: (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));
|
|
}
|