UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

122 lines (110 loc) 4.23 kB
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