text: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *
   * @format
   * @flow strict-local
   */
  
  'use strict';
  
  var React = require('react');
  var ReactNative = require('react-native');
  var {
    StyleSheet,
    View,
    Text,
    TouchableHighlight,
    Vibration,
    Platform,
  } = ReactNative;
  
  exports.framework = 'React';
  exports.title = 'Vibration';
  exports.description = 'Vibration API';
  
  var pattern, patternLiteral, patternDescription;
  if (Platform.OS === 'android') {
    pattern = [0, 500, 200, 500];
    patternLiteral = '[0, 500, 200, 500]';
    patternDescription = `${patternLiteral}
  arg 0: duration to wait before turning the vibrator on.
  arg with odd: vibration length.
  arg with even: duration to wait before next vibration.
  `;
  } else {
    pattern = [0, 1000, 2000, 3000];
    patternLiteral = '[0, 1000, 2000, 3000]';
    patternDescription = `${patternLiteral}
  vibration length on iOS is fixed.
  pattern controls durations BETWEEN each vibration only.
  
  arg 0: duration to wait before turning the vibrator on.
  subsequent args: duration to wait before next vibration.
  `;
  }
  
  exports.examples = [
    {
      title: 'Pattern Descriptions',
      render() {
        return (
          <View style={styles.wrapper}>
            <Text>{patternDescription}</Text>
          </View>
        );
      },
    },
    {
      title: 'Vibration.vibrate()',
      render() {
        return (
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() => Vibration.vibrate()}>
            <View style={styles.button}>
              <Text>Vibrate</Text>
            </View>
          </TouchableHighlight>
        );
      },
    },
    {
      title: `Vibration.vibrate(${patternLiteral})`,
      render() {
        return (
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() => Vibration.vibrate(pattern)}>
            <View style={styles.button}>
              <Text>Vibrate once</Text>
            </View>
          </TouchableHighlight>
        );
      },
    },
    {
      title: `Vibration.vibrate(${patternLiteral}, true)`,
      render() {
        return (
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() => Vibration.vibrate(pattern, true)}>
            <View style={styles.button}>
              <Text>Vibrate until cancel</Text>
            </View>
          </TouchableHighlight>
        );
      },
    },
    {
      title: 'Vibration.cancel()',
      render() {
        return (
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() => Vibration.cancel()}>
            <View style={styles.button}>
              <Text>Cancel</Text>
            </View>
          </TouchableHighlight>
        );
      },
    },
  ];
  
  var styles = StyleSheet.create({
    wrapper: {
      borderRadius: 5,
      marginBottom: 5,
    },
    button: {
      backgroundColor: '#eeeeee',
      padding: 10,
    },
  });
  