@visactor/vchart
Version:
charts lib based @visactor/VGrammar
34 lines (30 loc) • 1.69 kB
JavaScript
import { computeRatio, getInnerMostElements } from "./utils";
import { maxInArray, minInArray } from "@visactor/vutils";
const computeInnerAngleRange = mark => [ minInArray(mark.map((m => 1 * m.getFinalAttribute().startAngle))), maxInArray(mark.map((m => 1 * m.getFinalAttribute().endAngle))) ];
export const sunburstExit = params => ({
channel: {
startAngle: {
from: (_d, graphic) => graphic.getFinalAttribute().startAngle,
to: (_d, graphic) => {
const {startAngle: startAngle, endAngle: endAngle} = params.animationInfo(), innerElements = getInnerMostElements(graphic.parent.children), range = computeInnerAngleRange(innerElements);
return computeRatio(graphic.getFinalAttribute().startAngle, range) * (endAngle - startAngle) + startAngle;
}
},
endAngle: {
from: (_d, graphic) => graphic.getFinalAttribute().endAngle,
to: (_d, graphic) => {
const {startAngle: startAngle, endAngle: endAngle} = params.animationInfo(), innerElements = getInnerMostElements(graphic.parent.children), range = computeInnerAngleRange(innerElements);
return computeRatio(graphic.getFinalAttribute().endAngle, range) * (endAngle - startAngle) + startAngle;
}
},
outerRadius: {
from: (_d, graphic) => graphic.getFinalAttribute().outerRadius,
to: () => params.animationInfo().innerRadius
},
innerRadius: {
from: (_d, graphic) => graphic.getFinalAttribute().innerRadius,
to: () => params.animationInfo().innerRadius
}
}
});
//# sourceMappingURL=exit.js.map