2021-12-08 22:43:31 +01:00
|
|
|
import KEC from '../objects/kute';
|
|
|
|
import perspective from '../interpolation/perspective';
|
|
|
|
import translate3d from '../interpolation/translate3d';
|
|
|
|
import rotate3d from '../interpolation/rotate3d';
|
|
|
|
import translate from '../interpolation/translate';
|
|
|
|
import rotate from '../interpolation/rotate';
|
|
|
|
import scale from '../interpolation/scale';
|
|
|
|
import skew from '../interpolation/skew';
|
2021-03-30 11:23:29 +02:00
|
|
|
|
|
|
|
// Component Functions
|
2021-12-08 22:43:31 +01:00
|
|
|
/**
|
|
|
|
* Sets the property update function.
|
|
|
|
* * same to svgTransform, htmlAttributes
|
|
|
|
* @param {string} tweenProp the property name
|
|
|
|
*/
|
2021-03-30 11:23:29 +02:00
|
|
|
export function onStartTransform(tweenProp) {
|
2021-12-08 22:43:31 +01:00
|
|
|
if (!KEC[tweenProp] && this.valuesEnd[tweenProp]) {
|
|
|
|
KEC[tweenProp] = (elem, a, b, v) => {
|
|
|
|
// eslint-disable-next-line no-param-reassign
|
2021-03-30 11:23:29 +02:00
|
|
|
elem.style[tweenProp] = (a.perspective || b.perspective ? perspective(a.perspective, b.perspective, 'px', v) : '') // one side might be 0
|
|
|
|
+ (a.translate3d ? translate3d(a.translate3d, b.translate3d, 'px', v) : '') // array [x,y,z]
|
|
|
|
+ (a.rotate3d ? rotate3d(a.rotate3d, b.rotate3d, 'deg', v) : '') // array [x,y,z]
|
|
|
|
+ (a.skew ? skew(a.skew, b.skew, 'deg', v) : '') // array [x,y]
|
|
|
|
+ (a.scale || b.scale ? scale(a.scale, b.scale, v) : ''); // one side might be 0
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Base Component
|
2021-12-08 22:43:31 +01:00
|
|
|
const TransformFunctionsBase = {
|
2021-03-30 11:23:29 +02:00
|
|
|
component: 'baseTransform',
|
|
|
|
property: 'transform',
|
|
|
|
functions: { onStart: onStartTransform },
|
|
|
|
Interpolate: {
|
|
|
|
perspective,
|
|
|
|
translate3d,
|
|
|
|
rotate3d,
|
|
|
|
translate,
|
|
|
|
rotate,
|
|
|
|
scale,
|
|
|
|
skew,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
2021-12-08 22:43:31 +01:00
|
|
|
export default TransformFunctionsBase;
|