UNPKG

@tamagui/react-native-web-lite

Version:
96 lines (95 loc) 3.35 kB
import { AnimatedEvent } from "../AnimatedEvent"; import { AnimatedNode } from "./AnimatedNode"; import { AnimatedStyle } from "./AnimatedStyle"; import { NativeAnimatedHelper } from "../NativeAnimatedHelper"; import { invariant } from "@tamagui/react-native-web-internals"; class AnimatedProps extends AnimatedNode { constructor(props, callback) { super(), props.style && (props = { ...props, style: new AnimatedStyle(props.style) }), this._props = props, this._callback = callback, this.__attach(); } __getValue() { const props = {}; for (const key in this._props) { const value = this._props[key]; value instanceof AnimatedNode ? (!value.__isNative || value instanceof AnimatedStyle) && (props[key] = value.__getValue()) : value instanceof AnimatedEvent ? props[key] = value.__getHandler() : props[key] = value; } return props; } __getAnimatedValue() { const props = {}; for (const key in this._props) { const value = this._props[key]; value instanceof AnimatedNode && (props[key] = value.__getAnimatedValue()); } return props; } __attach() { for (const key in this._props) { const value = this._props[key]; value instanceof AnimatedNode && value.__addChild(this); } } __detach() { this.__isNative && this._animatedView && this.__disconnectAnimatedView(); for (const key in this._props) { const value = this._props[key]; value instanceof AnimatedNode && value.__removeChild(this); } super.__detach(); } update() { this._callback(); } __makeNative() { if (!this.__isNative) { this.__isNative = !0; for (const key in this._props) { const value = this._props[key]; value instanceof AnimatedNode && value.__makeNative(); } this._animatedView && this.__connectAnimatedView(); } } setNativeView(animatedView) { this._animatedView !== animatedView && (this._animatedView = animatedView, this.__isNative && this.__connectAnimatedView()); } __connectAnimatedView() { invariant(this.__isNative, 'Expected node to be marked as "native"'); const nativeViewTag = this._animatedView; invariant(nativeViewTag != null, "Unable to locate attached view in the native tree"), NativeAnimatedHelper.API.connectAnimatedNodeToView( this.__getNativeTag(), nativeViewTag ); } __disconnectAnimatedView() { invariant(this.__isNative, 'Expected node to be marked as "native"'); const nativeViewTag = this._animatedView; invariant(nativeViewTag != null, "Unable to locate attached view in the native tree"), NativeAnimatedHelper.API.disconnectAnimatedNodeFromView( this.__getNativeTag(), nativeViewTag ); } __restoreDefaultValues() { this.__isNative && NativeAnimatedHelper.API.restoreDefaultValues(this.__getNativeTag()); } __getNativeConfig() { const propsConfig = {}; for (const propKey in this._props) { const value = this._props[propKey]; value instanceof AnimatedNode && (value.__makeNative(), propsConfig[propKey] = value.__getNativeTag()); } return { type: "props", props: propsConfig }; } } var AnimatedProps_default = AnimatedProps; export { AnimatedProps, AnimatedProps_default as default }; //# sourceMappingURL=AnimatedProps.js.map