@tamagui/react-native-web-lite
Version:
React Native for Web
96 lines (95 loc) • 3.35 kB
JavaScript
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