UNPKG

2.72 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.interpolateTransformSvg = exports.interpolateTransformCss = void 0;
7
8var _number = _interopRequireDefault(require("../number.js"));
9
10var _parse = require("./parse.js");
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14function interpolateTransform(parse, pxComma, pxParen, degParen) {
15 function pop(s) {
16 return s.length ? s.pop() + " " : "";
17 }
18
19 function translate(xa, ya, xb, yb, s, q) {
20 if (xa !== xb || ya !== yb) {
21 var i = s.push("translate(", null, pxComma, null, pxParen);
22 q.push({
23 i: i - 4,
24 x: (0, _number.default)(xa, xb)
25 }, {
26 i: i - 2,
27 x: (0, _number.default)(ya, yb)
28 });
29 } else if (xb || yb) {
30 s.push("translate(" + xb + pxComma + yb + pxParen);
31 }
32 }
33
34 function rotate(a, b, s, q) {
35 if (a !== b) {
36 if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path
37
38 q.push({
39 i: s.push(pop(s) + "rotate(", null, degParen) - 2,
40 x: (0, _number.default)(a, b)
41 });
42 } else if (b) {
43 s.push(pop(s) + "rotate(" + b + degParen);
44 }
45 }
46
47 function skewX(a, b, s, q) {
48 if (a !== b) {
49 q.push({
50 i: s.push(pop(s) + "skewX(", null, degParen) - 2,
51 x: (0, _number.default)(a, b)
52 });
53 } else if (b) {
54 s.push(pop(s) + "skewX(" + b + degParen);
55 }
56 }
57
58 function scale(xa, ya, xb, yb, s, q) {
59 if (xa !== xb || ya !== yb) {
60 var i = s.push(pop(s) + "scale(", null, ",", null, ")");
61 q.push({
62 i: i - 4,
63 x: (0, _number.default)(xa, xb)
64 }, {
65 i: i - 2,
66 x: (0, _number.default)(ya, yb)
67 });
68 } else if (xb !== 1 || yb !== 1) {
69 s.push(pop(s) + "scale(" + xb + "," + yb + ")");
70 }
71 }
72
73 return function (a, b) {
74 var s = [],
75 // string constants and placeholders
76 q = []; // number interpolators
77
78 a = parse(a), b = parse(b);
79 translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
80 rotate(a.rotate, b.rotate, s, q);
81 skewX(a.skewX, b.skewX, s, q);
82 scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
83 a = b = null; // gc
84
85 return function (t) {
86 var i = -1,
87 n = q.length,
88 o;
89
90 while (++i < n) s[(o = q[i]).i] = o.x(t);
91
92 return s.join("");
93 };
94 };
95}
96
97var interpolateTransformCss = interpolateTransform(_parse.parseCss, "px, ", "px)", "deg)");
98exports.interpolateTransformCss = interpolateTransformCss;
99var interpolateTransformSvg = interpolateTransform(_parse.parseSvg, ", ", ")", ")");
100exports.interpolateTransformSvg = interpolateTransformSvg;
\No newline at end of file