@antv/g2plot
Version:
G2 Plot, a market of plots built with the Grammar of Graphics'
45 lines • 1.68 kB
JavaScript
import * as G from '@antv/g';
import { Animate } from '@antv/g2';
import * as _ from '@antv/util';
function funnelScaleInY(shape, animateCfg, coord) {
var _a = animateCfg || {}, _b = _a.duration, duration = _b === void 0 ? 200 : _b, easing = _a.easing, callback = _a.callback, reverse = _a.reverse;
var box = shape.getBBox();
var originX = reverse ? box.maxX : box.minX;
var originY = (box.minY + box.maxY) / 2;
var shapeIndex = shape.get('index');
var clip = getClip(coord);
var clipTargetMatrix = _.clone(clip.attr('matrix'));
clip.attr('transform', [
['t', -originX, -originY],
['s', 0, 1],
['t', originX, originY],
]);
var shapeTargetFillOpacity = shape.attr('fillOpacity');
shape.attr('fillOpacity', 0);
shape.attr('clip', clip);
clip.animate({
matrix: clipTargetMatrix,
}, duration, easing, function () {
clip.remove();
shape.attr('clip', null);
}, shapeIndex * duration);
shape.animate({
fillOpacity: shapeTargetFillOpacity,
}, duration, easing, null, shapeIndex * duration);
callback && setTimeout(function () { return callback(shape); }, duration + shapeIndex * duration);
}
function getClip(coord) {
var start = coord.start, end = coord.end, width = coord.width, height = coord.height;
var clip = new G.Shapes.Rect({
attrs: {
x: start.x,
y: end.y,
width: width,
height: height,
},
});
return clip;
}
funnelScaleInY.animationName = 'funnelScaleInX';
Animate.registerAnimation('appear', 'funnelScaleInX', funnelScaleInY);
//# sourceMappingURL=funnel-scale-in-x.js.map