-
Notifications
You must be signed in to change notification settings - Fork 172
/
Copy pathViroFlexView.tsx
124 lines (117 loc) · 4.05 KB
/
ViroFlexView.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* Copyright (c) 2015-present, Viro Media, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule ViroFlexView
* @flow
*/
"use strict";
import * as React from "react";
import { requireNativeComponent } from "react-native";
import { ViroStyle } from "./Styles/ViroStyle";
import { ViroNativeRef } from "./Types/ViroUtils";
import { checkMisnamedProps } from "./Utilities/ViroProps";
import { ViroBase } from "./ViroBase";
type Props = {
style?: ViroStyle;
};
/**
* Used to render a ViroFlexView
*/
export class ViroFlexView extends ViroBase<Props> {
render() {
checkMisnamedProps("ViroFlexView", this.props);
// Since materials and transformBehaviors can be either a string or an array, convert the string to a 1-element array.
let materials =
typeof this.props.materials === "string"
? new Array(this.props.materials)
: this.props.materials;
let transformBehaviors =
typeof this.props.transformBehaviors === "string"
? new Array(this.props.transformBehaviors)
: this.props.transformBehaviors;
let timeToFuse = undefined;
if (
this.props.onFuse != undefined &&
typeof this.props.onFuse === "object"
) {
timeToFuse = this.props.onFuse.timeToFuse;
}
let transformDelegate =
this.props.onTransformUpdate != undefined
? this._onNativeTransformUpdate
: undefined;
let nativeProps = Object.assign({} as any, this.props);
nativeProps.onNativeTransformDelegateViro = transformDelegate;
nativeProps.hasTransformDelegate =
this.props.onTransformUpdate != undefined;
nativeProps.materials = materials;
nativeProps.transformBehaviors = transformBehaviors;
nativeProps.onHoverViro = this._onHover;
nativeProps.onClickViro = this._onClickState;
nativeProps.onTouchViro = this._onTouch;
nativeProps.onScrollViro = this._onScroll;
nativeProps.onSwipeViro = this._onSwipe;
nativeProps.onDragViro = this._onDrag;
nativeProps.onPinchViro = this._onPinch;
nativeProps.onRotateViro = this._onRotate;
nativeProps.canHover = this.props.onHover != undefined;
nativeProps.canClick =
this.props.onClick != undefined || this.props.onClickState != undefined;
nativeProps.canTouch = this.props.onTouch != undefined;
nativeProps.canScroll = this.props.onScroll != undefined;
nativeProps.canSwipe = this.props.onSwipe != undefined;
nativeProps.canDrag = this.props.onDrag != undefined;
nativeProps.canPinch = this.props.onPinch != undefined;
nativeProps.canRotate = this.props.onRotate != undefined;
nativeProps.canFuse = this.props.onFuse != undefined;
nativeProps.onFuseViro = this._onFuse;
nativeProps.timeToFuse = timeToFuse;
nativeProps.onAnimationStartViro = this._onAnimationStart;
nativeProps.onAnimationFinishViro = this._onAnimationFinish;
nativeProps.canCollide = this.props.onCollision != undefined;
nativeProps.onCollisionViro = this._onCollision;
nativeProps.ref = (component: ViroNativeRef) => {
this._component = component;
};
return <VROFlexView {...nativeProps} />;
}
}
var VROFlexView = requireNativeComponent<any>(
"VRTFlexView",
// @ts-ignore
ViroFlexView,
{
nativeOnly: {
canHover: true,
canClick: true,
canTouch: true,
canScroll: true,
canSwipe: true,
canDrag: true,
canPinch: true,
canRotate: true,
onHoverViro: true,
onClickViro: true,
onTouchViro: true,
onScrollViro: true,
onSwipeViro: true,
onDragViro: true,
onPinchViro: true,
onRotateViro: true,
canFuse: true,
onFuseViro: true,
timeToFuse: true,
canCollide: true,
onCollisionViro: true,
onNativeTransformDelegateViro: true,
hasTransformDelegate: true,
onAnimationStartViro: true,
onAnimationFinishViro: true,
},
}
);