/** * Copyright (c) 2013-present, Facebook, 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. * * The examples provided by Facebook are for non-commercial testing and * evaluation purposes only. * * Facebook reserves all rights not expressly granted. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * @flow */ 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { View, Text, Animated, StyleSheet, TouchableWithoutFeedback, } = ReactNative; var UIExplorerButton = require('./UIExplorerButton'); var Tester = React.createClass({ current: 0, getInitialState() { return { native: new Animated.Value(0), js: new Animated.Value(0), }; }, onPress() { this.current = this.current ? 0 : 1; const config = { ...this.props.config, toValue: this.current, }; try { Animated[this.props.type](this.state.native, { ...config, useNativeDriver: true }).start(); } catch (e) { // uncomment this if you want to get the redbox errors! throw e; } Animated[this.props.type](this.state.js, { ...config, useNativeDriver: false }).start(); }, render() { return ( Native: {this.props.children(this.state.native)} JavaScript: {this.props.children(this.state.js)} ); }, }); const styles = StyleSheet.create({ row: { padding: 10, zIndex: 1, }, block: { width: 50, height: 50, backgroundColor: 'blue', }, }); exports.framework = 'React'; exports.title = 'Native Animated Example'; exports.description = 'Test out Native Animations'; exports.examples = [ { title: 'Multistage With Multiply and rotation', description: 'description', render: function() { return ( {anim => ( )} ); }, }, { title: 'Multistage With Multiply', description: 'description', render: function() { return ( {anim => ( )} ); }, }, { title: 'Scale interpolation', description: 'description', render: function() { return ( {anim => ( )} ); }, }, { title: 'Opacity without interpolation', description: 'description', render: function() { return ( {anim => ( )} ); }, }, { title: 'Rotate interpolation', description: 'description', render: function() { return ( {anim => ( )} ); }, }, { title: 'translateX => Animated.spring', description: 'description', render: function() { return ( {anim => ( )} ); }, }, ];