@visactor/vchart
Version:
charts lib based @visactor/VGrammar
122 lines (110 loc) • 4.23 kB
JavaScript
import { ClipAngleAnimate } from "@visactor/vrender-animate";
import { Factory } from "../../core/factory";
import { PolarPointUpdate, PolarTagPointsUpdate } from "../polar/animation";
import { DEFAULT_ANIMATION_CONFIG } from "../../animation/config";
import { registerArc } from "@visactor/vrender-kits";
export const radarFadeAnimation = animationType => ({
type: "in" === animationType ? "fadeIn" : "fadeOut"
});
export const radarGrowAnimation = (params, animationType) => ({
type: "in" === animationType ? "growPointsIn" : "growPointsOut",
options: () => ({
center: params.center()
})
});
export function radarPresetAnimation(params, preset, animationType) {
return "fadeIn" === preset ? radarFadeAnimation(animationType) : radarGrowAnimation(params, animationType);
}
export const radarSymbolMoveAnimation = (params, animationType) => {
const xFrom = () => {
var _a;
return null === (_a = params.center()) || void 0 === _a ? void 0 : _a.x;
}, xTo = (datum, element) => element.getGraphicAttribute("x"), yFrom = () => {
var _a;
return null === (_a = params.center()) || void 0 === _a ? void 0 : _a.y;
}, yTo = (datum, element) => element.getGraphicAttribute("y");
return "in" === animationType ? {
channel: {
x: {
from: xFrom,
to: xTo
},
y: {
from: yFrom,
to: yTo
}
}
} : {
channel: {
x: {
from: xTo,
to: xFrom
},
y: {
from: yTo,
to: yFrom
}
}
};
};
export function radarSymbolPresetAnimation(params, preset, animationType) {
return "fadeIn" === preset ? radarFadeAnimation(animationType) : radarSymbolMoveAnimation(params, animationType);
}
export const radarGroupClipAnimation = (params, animationType) => ({
custom: ClipAngleAnimate,
customParameters: (datum, graphic) => {
var _a;
return {
group: graphic,
startAngle: null !== (_a = params.startAngle) && void 0 !== _a ? _a : Math.PI / 2,
orient: "clockwise",
center: params.center(),
radius: params.radius(),
animationType: animationType
};
}
});
export const registerRadarAnimation = () => {
Factory.registerAnimation("radar", ((params, preset) => ({
appear: "clipIn" === preset ? void 0 : radarPresetAnimation(params, preset, "in"),
enter: radarPresetAnimation(params, preset, "in"),
exit: radarPresetAnimation(params, preset, "out"),
disappear: "clipIn" === preset ? void 0 : radarPresetAnimation(params, preset, "out"),
update: [ {
channel: [ "points", "center" ],
custom: PolarTagPointsUpdate,
customParameters: params,
duration: DEFAULT_ANIMATION_CONFIG.update.duration,
easing: DEFAULT_ANIMATION_CONFIG.update.easing
}, {
type: "update",
options: {
excludeChannels: [ "points", "defined", "center" ]
}
} ]
}))), Factory.registerAnimation("radarSymbol", ((params, preset) => ({
appear: "clipIn" === preset ? void 0 : radarSymbolPresetAnimation(params, preset, "in"),
enter: {
type: "scaleIn"
},
exit: {
type: "scaleOut"
},
disappear: "clipIn" === preset ? void 0 : radarSymbolPresetAnimation(params, preset, "out"),
update: [ {
options: {
excludeChannels: [ "x", "y", "center" ]
}
}, {
channel: [ "x", "y", "center" ],
custom: PolarPointUpdate,
customParameters: params,
duration: DEFAULT_ANIMATION_CONFIG.update.duration,
easing: DEFAULT_ANIMATION_CONFIG.update.easing
} ]
}))), Factory.registerAnimation("radarGroup", ((params, preset) => ({
appear: radarGroupClipAnimation(params, "in"),
disappear: radarGroupClipAnimation(params, "out")
}))), registerArc();
};
//# sourceMappingURL=animation.js.map