react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
36 lines (28 loc) • 1.32 kB
text/typescript
;
import type { ViewInfo } from '../../../createAnimatedComponent/commonTypes';
import type { ReanimatedHTMLElement } from '../../../ReanimatedModule/js-reanimated';
import type { CSSStyle } from '../../types';
import type { ICSSManager } from '../../types/interfaces';
import { filterCSSAndStyleProperties } from '../../utils';
import CSSAnimationsManager from './CSSAnimationsManager';
import CSSTransitionsManager from './CSSTransitionsManager';
export default class CSSManager implements ICSSManager {
private readonly element: ReanimatedHTMLElement;
private readonly animationsManager: CSSAnimationsManager;
private readonly transitionsManager: CSSTransitionsManager;
constructor(viewInfo: ViewInfo) {
this.element = viewInfo.DOMElement as ReanimatedHTMLElement;
this.animationsManager = new CSSAnimationsManager(this.element);
this.transitionsManager = new CSSTransitionsManager(this.element);
}
update(style: CSSStyle): void {
const [animationProperties, transitionProperties] =
filterCSSAndStyleProperties(style);
this.animationsManager.update(animationProperties);
this.transitionsManager.update(transitionProperties);
}
unmountCleanup(): void {
this.animationsManager.unmountCleanup();
this.transitionsManager.unmountCleanup();
}
}