refactor(animation): move constants

This commit is contained in:
Manu Mtz.-Almeida
2018-07-29 23:28:13 +02:00
parent c1b61d0fee
commit d1fd1c5276
2 changed files with 14 additions and 46 deletions

View File

@ -1,7 +1,10 @@
import { EffectProperty, EffectState, PlayOptions } from './animation-interface';
import { CSS_PROP, CSS_VALUE_REGEX, DURATION_MIN, TRANSITION_END_FALLBACK_PADDING_MS } from './constants';
import { transitionEnd } from './transition-end';
export const CSS_VALUE_REGEX = /(^-?\d*\.?\d*)(.*)/;
export const DURATION_MIN = 32;
export const TRANSITION_END_FALLBACK_PADDING_MS = 400;
export const TRANSFORM_PROPS: {[key: string]: number} = {
'translateX': 1,
'translateY': 1,
@ -162,7 +165,7 @@ export class Animator {
if (clearProperyAfterTransition) {
// if this effect is a transform then clear the transform effect
// otherwise just clear the actual property
this.afterClearStyles([ fx.trans ? CSS_PROP.transformProp : prop]);
this.afterClearStyles([ fx.trans ? 'transform' : prop]);
}
return this;
@ -197,7 +200,7 @@ export class Animator {
trans: shouldTrans,
// add the will-change property for transforms or opacity
wc: (shouldTrans ? CSS_PROP.transformProp : prop)
wc: (shouldTrans ? 'transform' : prop)
} as EffectProperty;
(this._fxProperties = this._fxProperties || []).push(fxProp);
}
@ -618,7 +621,7 @@ export class Animator {
* RECURSION
*/
_hasDomReads() {
if (this._readCallbacks && this._readCallbacks.length) {
if (this._readCallbacks && this._readCallbacks.length > 0) {
return true;
}
@ -733,7 +736,7 @@ export class Animator {
for (i = 0; i < elements.length; i++) {
// ******** DOM WRITE ****************
(elements[i].style as any)[CSS_PROP.transformProp] = finalTransform;
elements[i].style.setProperty('transform', finalTransform);
}
}
}
@ -752,25 +755,21 @@ export class Animator {
// set the TRANSITION properties inline on the element
const easing = (forcedLinearEasing ? 'linear' : this.getEasing());
const durString = dur + 'ms';
const cssTransform = CSS_PROP.transitionProp;
const cssTransitionDuration = CSS_PROP.transitionDurationProp;
const cssTransitionTimingFn = CSS_PROP.transitionTimingFnProp;
let eleStyle: any;
for (let i = 0; i < elements.length; i++) {
eleStyle = elements[i].style;
const eleStyle = elements[i].style;
if (dur > 0) {
// ******** DOM WRITE ****************
eleStyle[cssTransform] = '';
eleStyle[cssTransitionDuration] = durString;
eleStyle.transform = '';
eleStyle.transitionDuration = durString;
// each animation can have a different easing
if (easing) {
// ******** DOM WRITE ****************
eleStyle[cssTransitionTimingFn] = easing;
eleStyle.transitionTimingFunction = easing;
}
} else {
eleStyle[cssTransform] = 'none';
eleStyle.transform = 'none';
}
}
}
@ -907,7 +906,7 @@ export class Animator {
// remove the transition duration/easing
// ******** DOM WRITE ****************
(el as any).style[CSS_PROP.transitionDurationProp] = (el as any).style[CSS_PROP.transitionTimingFnProp] = '';
el.style.transitionDuration = el.style.transitionTimingFunction = '';
if (this._isReverse) {
// finished in reverse direction

View File

@ -1,31 +0,0 @@
// tslint:disable-next-line:only-arrow-functions
export const CSS_PROP = function(docEle: HTMLElement) {
// transform
const transformProp = [
'webkitTransform',
'-webkit-transform',
'webkit-transform',
'transform'
].find(key => (docEle.style as any)[key] !== undefined) || 'transform';
const transitionProp = [
'webkitTransition',
'transition'
].find(key => (docEle.style as any)[key] !== undefined) || 'transition';
// The only prefix we care about is webkit for transitions.
const prefix = transitionProp.indexOf('webkit') > -1 ? '-webkit-' : '';
return {
transitionDurationProp: prefix + 'transition-duration',
transitionTimingFnProp: prefix + 'transition-timing-function',
transformProp,
transitionProp
};
}(document.documentElement);
export const CSS_VALUE_REGEX = /(^-?\d*\.?\d*)(.*)/;
export const DURATION_MIN = 32;
export const TRANSITION_END_FALLBACK_PADDING_MS = 400;