UNPKG

@visactor/vrender-animate

Version:

This module provides a graph-based animation system for VRender.

107 lines (102 loc) 7.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.commonInterpolateUpdate = exports.interpolateUpdateStore = exports.InterpolateUpdateStore = void 0; const vrender_core_1 = require("@visactor/vrender-core"), number_1 = require("./number"); class InterpolateUpdateStore { constructor() { this.opacity = (key, from, to, ratio, step, target) => { target.attribute.opacity = (0, number_1.interpolateNumber)(from, to, ratio); }, this.baseOpacity = (key, from, to, ratio, step, target) => { target.attribute.baseOpacity = (0, number_1.interpolateNumber)(from, to, ratio); }, this.fillOpacity = (key, from, to, ratio, step, target) => { target.attribute.fillOpacity = (0, number_1.interpolateNumber)(from, to, ratio); }, this.strokeOpacity = (key, from, to, ratio, step, target) => { target.attribute.strokeOpacity = (0, number_1.interpolateNumber)(from, to, ratio); }, this.zIndex = (key, from, to, ratio, step, target) => { target.attribute.zIndex = (0, number_1.interpolateNumber)(from, to, ratio); }, this.backgroundOpacity = (key, from, to, ratio, step, target) => { target.attribute.backgroundOpacity = (0, number_1.interpolateNumber)(from, to, ratio); }, this.shadowOffsetX = (key, from, to, ratio, step, target) => { target.attribute.shadowOffsetX = (0, number_1.interpolateNumber)(from, to, ratio); }, this.shadowOffsetY = (key, from, to, ratio, step, target) => { target.attribute.shadowOffsetY = (0, number_1.interpolateNumber)(from, to, ratio); }, this.shadowBlur = (key, from, to, ratio, step, target) => { target.attribute.shadowBlur = (0, number_1.interpolateNumber)(from, to, ratio); }, this.fill = (key, from, to, ratio, step, target) => { target.attribute.fill = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1); }, this.fillPure = (key, from, to, ratio, step, target) => { target.attribute.fill = step.fromParsedProps.fill ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.fill, step.toParsedProps.fill, ratio) : step.toParsedProps.fill; }, this.stroke = (key, from, to, ratio, step, target) => { target.attribute.stroke = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1); }, this.strokePure = (key, from, to, ratio, step, target) => { target.attribute.stroke = step.fromParsedProps.stroke ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio) : step.toParsedProps.stroke; }, this.width = (key, from, to, ratio, step, target) => { target.attribute.width = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.height = (key, from, to, ratio, step, target) => { target.attribute.height = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.x = (key, from, to, ratio, step, target) => { target.attribute.x = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.y = (key, from, to, ratio, step, target) => { target.attribute.y = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.dx = (key, from, to, ratio, step, target) => { target.attribute.dx = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.dy = (key, from, to, ratio, step, target) => { target.attribute.dy = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.angle = (key, from, to, ratio, step, target) => { target.attribute.angle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.scaleX = (key, from, to, ratio, step, target) => { target.attribute.scaleX = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.scaleY = (key, from, to, ratio, step, target) => { target.attribute.scaleY = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(), target.addUpdatePositionTag(); }, this.lineWidth = (key, from, to, ratio, step, target) => { target.attribute.lineWidth = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.startAngle = (key, from, to, ratio, step, target) => { target.attribute.startAngle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.endAngle = (key, from, to, ratio, step, target) => { target.attribute.endAngle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.radius = (key, from, to, ratio, step, target) => { target.attribute.radius = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.outerRadius = (key, from, to, ratio, step, target) => { target.attribute.outerRadius = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.innerRadius = (key, from, to, ratio, step, target) => { target.attribute.innerRadius = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.size = (key, from, to, ratio, step, target) => { target.attribute.size = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(); }, this.points = (key, from, to, ratio, step, target) => { target.attribute.points = (0, vrender_core_1.pointsInterpolation)(from, to, ratio), target.addUpdateBoundTag(); }; } } function commonInterpolateUpdate(key, from, to, ratio, step, target) { if (Number.isFinite(to) && Number.isFinite(from)) return target.attribute[key] = from + (to - from) * ratio, !0; if (Array.isArray(to) && Array.isArray(from) && to.length === from.length) { const nextList = []; let valid = !0; for (let i = 0; i < to.length; i++) { const v = from[i], val = v + (to[i] - v) * ratio; if (!Number.isFinite(val)) { valid = !1; break; } nextList.push(val); } return valid && (target.attribute[key] = nextList), !0; } return !1; } exports.InterpolateUpdateStore = InterpolateUpdateStore, exports.interpolateUpdateStore = new InterpolateUpdateStore, exports.commonInterpolateUpdate = commonInterpolateUpdate; //# sourceMappingURL=store.js.map