-
Notifications
You must be signed in to change notification settings - Fork 172
/
Copy pathViroPortal.tsx
121 lines (112 loc) · 3.5 KB
/
ViroPortal.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
/**
* Copyright (c) 2017-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 ViroPortal
*/
"use strict";
import * as React from "react";
import { requireNativeComponent } from "react-native";
import { checkMisnamedProps } from "./Utilities/ViroProps";
import { ViroBase } from "./ViroBase";
type Props = {};
/**
* Frame that serves as a 'window' into a ViroPortal
*/
export class ViroPortal extends ViroBase<Props> {
render() {
checkMisnamedProps("ViroPortal", this.props);
// Since transformBehaviors can be either a string or an array, convert the string to a 1-element array.
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;
return (
<VRTPortal
{...this.props}
ref={(component) => {
this._component = component;
}}
onNativeTransformDelegateViro={transformDelegate}
hasTransformDelegate={this.props.onTransformUpdate != undefined}
transformBehaviors={transformBehaviors}
canHover={this.props.onHover != undefined}
canClick={
this.props.onClick != undefined ||
this.props.onClickState != undefined
}
canTouch={this.props.onTouch != undefined}
canScroll={this.props.onScroll != undefined}
canSwipe={this.props.onSwipe != undefined}
canDrag={this.props.onDrag != undefined}
canPinch={this.props.onPinch != undefined}
canRotate={this.props.onRotate != undefined}
canFuse={this.props.onFuse != undefined}
onHoverViro={this._onHover}
onClickViro={this._onClickState}
onTouchViro={this._onTouch}
onScrollViro={this._onScroll}
onSwipeViro={this._onSwipe}
onDragViro={this._onDrag}
onPinchViro={this._onPinch}
onRotateViro={this._onRotate}
onFuseViro={this._onFuse}
onAnimationStartViro={this._onAnimationStart}
onAnimationFinishViro={this._onAnimationFinish}
timeToFuse={timeToFuse}
canCollide={this.props.onCollision != undefined}
onCollisionViro={this._onCollision}
/>
);
}
}
var VRTPortal = requireNativeComponent<any>(
"VRTPortal",
// @ts-ignore
ViroPortal,
{
nativeOnly: {
materials: [],
canHover: true,
canClick: true,
canTouch: true,
canScroll: true,
canSwipe: true,
canDrag: true,
canPinch: true,
canRotate: true,
canFuse: true,
onHoverViro: true,
onClickViro: true,
onTouchViro: true,
onScrollViro: true,
onSwipeViro: true,
onDragViro: true,
onPinchViro: true,
onRotateViro: true,
onFuseViro: true,
timeToFuse: true,
canCollide: true,
onCollisionViro: true,
onNativeTransformDelegateViro: true,
hasTransformDelegate: true,
onAnimationStartViro: true,
onAnimationFinishViro: true,
},
}
);