[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[**.js]\nindent_style = space\nindent_size = 2\nquote_type = single\nspace_after_anon_function = true\ncurly_bracket_next_line = true\nbrace_style = end-expand\n\n[**.jsx]\nindent_style = space\nindent_size = 2\nquote_type = single\nspace_after_anon_function = true\ncurly_bracket_next_line = true\nbrace_style = end-expand\n\n[**.css]\nindent_style = space\nindent_size = 4\n\n[**.html]\nindent_style = space\nindent_size = 4\nmax_char = 78\nbrace_style = expand\n\n[node_modules/**.js]\ncodepaint = false\n\n[*.json]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "### Which OS ?\n\n### Version\nWhich versions are you using:\n\n- react-native-swiper v?\n- react-native v0.?.?\n\n### Expected behaviour\n\n\n\n### Actual behaviour\n\n\n### How to reproduce it>\nTo help us, please fork this component, modify one example in examples folder to reproduce your issue and include link here.\n-\n\n### Steps to reproduce\n1.\n2.\n3.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "### Is it a bugfix ?\n- Yes or No ?\n- If yes, which issue (fix #number) ?\n\n### Is it a new feature ?\n- Yes or no ?\n- Include documentation, demo GIF if applicable\n\n### Describe what you've done:\n\n### How to test it ?\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n\n# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directory\n# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git\n/node_modules\n\n# Xcode\n*.xcuserstate\nexamples/swiper.xcodeproj/project.xcworkspace/\nexamples/swiper.xcodeproj/xcuserdata\n\n# IntelliJ\n.idea/\n\n# Vim\n*.sw*\ndist/\n\n# yarn\nyarn.lock\n"
  },
  {
    "path": ".npmignore",
    "content": ".DS_Store\nlogs\n*.log\npids\n*.pid\n*.seed\nlib-cov\ncoverage\n.lock-wscript\nbuild/Release\nnode_modules\nres\nexamples\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"printWidth\": 80,\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"semi\": false,\n  \"singleQuote\": true,\n  \"trailingComma\": \"none\",\n  \"bracketSpacing\": true,\n  \"jsxBracketSameLine\": false\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "- [1.6.0-dev]\n  - ViewPagerAndroid: react-native => @react-native-community/viewpager\n  - add TypeScript typing of containerStyle\n- [1.5.14]\n  - fixes #582 (Android not setting this onLayout first?) #789 (thanks [@fungilation](https://github.com/fungilation))\n  - Add onScrollBegin and onTouchEnd for Android #684 (thanks [@kostyaVyrodov](https://github.com/kostyaVyrodov))\n- [1.5.13]\n  - Workaround for react-native 0.4.8 contentOffset regression #572 (thanks [@nixoz](https://github.com/nixoz))\n  - Fix wrong calculation of width and height after device rotation #581 (thanks [@kostyaVyrodov](https://github.com/kostyaVyrodov))\n  - Calculated width & height on layout, used later on re-rendering. Possibility to change ScrollView styles #548 (thanks [@germanst](https://github.com/germanst))\n- [1.5.12]\n\n  - Update core packages\n  - Optionally disable the 'next' control button (thanks [@SSTPIERRE2](https://github.com/SSTPIERRE2))\n  - Fix `Uncaught TypeError: _this.refs.scrollView.scrollTo is not a function` (thanks [@flyskywhy](https://github.com/flyskywhy))\n  - Allow dotStyle and activeDotStyle PropTypes to accept Stylesheet (thanks [@knopt](https://github.com/knopt))\n  - Calculate the offset in the initial state instead of `onLayout` (thanks [@kjkta](https://github.com/kjkta))\n\n- [1.5.11]\n\n  - Typescript Definition\n\n- [1.5.1]\n\n  - Allow scroll without animate, ref: [scrollBy(index, animated)](#scrollbyindex-animated)\n  - Remove [#254](https://github.com/leecade/react-native-swiper/pull/254) which break the scroll direction in loop mode\n\n- [1.5.0]\n\n  - Improve develop [workflow](#development) for support watch & use real pkg name in examples\n  - Update examples for support `React-native 0.33` + `Xcode8` + `ios10` + `iphone7`\n  - Switch to [standard](https://github.com/feross/standard) code style\n  - Rewrite source code with ES6 syntex\n  - Cancel transform the source code when publish\n  - Add a [demo](examples/components/LoadMinimal) for `loadMinimal` + `lazyload`\n  - Add a [demo](examples/components/PhotoView) for multi-images viewer\n  - [#254](https://github.com/leecade/react-native-swiper/pull/254) Fix jitter when quickly swiping back and forth between pages (iOS) (@thanks [@nemophrost](https://github.com/nemophrost)).\n\n- [1.4.11]\n\n  - Adds loadMinimalSize property\n\n- [1.4.10]\n\n  - Adds loadMinimal to api (lazyloading-esque)\n\n- [1.4.9]\n\n  - Adds extra check for title\n\n- [1.4.8]\n\n  - Fixes loop and autoplay bugs in android\n\n- [1.4.7]\n\n  - Don't attempt to mutate this.props\n  - Fixes examples links\n  - Adds drag end handling to always reset state.isScrolling\n  - Fixes float calculation error\n\n- [1.4.6]\n\n  - refactors examples\n  - prevents mutation of `this.props`\n  - fixes android index loop issue\n\n- [1.4.5]\n\n  - renames `scrollTo()` to `scrollBy()`\n  - image index is now always an integer\n  - prevents parent state updates from reseting index counter\n  - fixes issue with scrolling not working sometimes\n\n- [1.4.4]\n\n  - Support for React Native latest(`^0.26.0`)\n  - Updates examples to work with react-native-swiper 1.4.4\n  - Examples now run on Android (some are still buggy, needs more work)\n  - Removes old examples folder\n\n- [1.4.3]\n\n  - Fixed auto play issue when only a child view\n\n- [v1.4.0]\n\n  - Support for React Native latest(`^0.17.0`) & Upgrade examples base on Xcode `7.2` / React Native `0.17.0`\n\n  - Upgrade build tool to babel6\n\n  - Add missing deps `react-timer-mixin`\n\n  - [1f8643a](https://github.com/leecade/react-native-swiper/commit/1f8643a67e2768d165132a19629a991a86672036) Move Dimensions import to deconstructed React import for react-native (@thanks [@jedrekk](https://github.com/jedrekk)).\n\n  - [e28af9b](https://github.com/leecade/react-native-swiper/commit/e28af9b205f17447cb3149b45fc220beec037bce) Support index property in combination with loop property (@thanks [@almost](https://github.com/almost)).\n\n  - [6c832d](https://github.com/leecade/react-native-swiper/commit/6c832d6a23da3737a2e8a2667273dc6093bcc9ee) fix warnings about keys for dots (@thanks [@sunnylqm](https://github.com/sunnylqm)).\n\n  - [8de1afc](https://github.com/leecade/react-native-swiper/commit/8de1afcb75a003424231bb089802db53bbbf84e4) Changes to make the example work in xcode 7 (@thanks [@allomov](https://github.com/allomov)).\n\n- [v1.3.0]\n\n  - [8d6d75c](https://github.com/leecade/react-native-swiper/commit/8d6d75c00edf87b603c218aad0018932277814b5) inject `state` in ScrollResponders (@thanks [@smothers](https://github.com/smothers)).\n\n- [v1.2.2]\n\n  - [890c0ce](https://github.com/leecade/react-native-swiper/commit/890c0ce64e2192c2ca7830e6699f67b88171e74b) ensure `onMomentumScrollEnd` synchronous update `index`.\n\n- [v1.2.0]\n\n  - [838b24c](https://github.com/leecade/react-native-swiper/commit/838b24cbeaf49b9ca1dabb4eed8305e314503fb1) Re-design a loop model for avoid img flickering.\n  - [9cb91c5](https://github.com/leecade/react-native-swiper/commit/9cb91c58c84034b0b8b874dbfc2a44da982686a8) fixes [#7](https://github.com/leecade/react-native-swiper/issues/6) `onMomentumScrollEnd` lost `event` param. (thanks [@smothers](https://github.com/smothers))\n\n- [v1.1.1]\n\n  - [21f0b00](https://github.com/leecade/react-native-swiper/commit/21f0b00138b6936cd3dfac2eb107a14c99c7392b) fixes [#6](https://github.com/leecade/react-native-swiper/issues/6) a define-propType error. (thanks [@benjamingeorge](https://github.com/benjamingeorge))\n\n- [v1.1.0]\n\n  - [44ec630](https://github.com/leecade/react-native-swiper/commit/44ec630b62844dbeaccee73adaa0996e319ebffb) fixes [#4](https://github.com/leecade/react-native-swiper/issues/4) `onMoementumScrollEnd` gets overridden. (thanks [@subpublicanders](https://github.com/subpublicanders))\n  - [5de06a7](https://github.com/leecade/react-native-swiper/commit/5de06a7aa86318ad38720728022b80e5cf98a2ab) New prop: `renderPagination`. (thanks [@aksonov](https://github.com/aksonov))\n\n- [v1.0.4]\n\n  - [21cb373](https://github.com/leecade/react-native-swiper/commit/21cb3732578588f9d47ee7ddda541577ad691970) fixes [#2](https://github.com/leecade/react-native-swiper/issues/2) Solve the problem of installation. (thanks [@jamwaffles](https://github.com/jamwaffles))\n\n- [v1.0.3]\n  - [0f796f3](https://github.com/leecade/react-native-swiper/commit/0f796f3557b5aeb1772573cd7ecae2e835bccc0b) fixes [#1](https://github.com/leecade/react-native-swiper/issues/1) Two 'horizontal' in propTypes. (thanks [@MacyzZ](https://github.com/MacyzZ))\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 斯人\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <img alt=\"react-native-swiper\" src=\"http://i.imgur.com/P4cRUgD.png\" width=\"208\">\n</p>\n\n<p align=\"center\">\n  The best Swiper component for React Native.\n</p>\n\n<p align=\"center\">\n  <a href=\"http://standardjs.com/\"><img alt=\"JavaScript Style Guide\" src=\"https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\"></a>\n  <a href=\"https://npmjs.org/package/react-native-swiper\"><img alt=\"npm version\" src=\"http://img.shields.io/npm/v/react-native-swiper.svg?style=flat-square\"></a>\n  <a href=\"https://npmjs.org/package/react-native-swiper\"><img alt=\"npm version\" src=\"http://img.shields.io/npm/dm/react-native-swiper.svg?style=flat-square\"></a>\n  <a href=\"https://github.com/leecade/react-native-swiper/pulls?q=is%3Apr+is%3Aclosed\"><img alt=\"PR Stats\" src=\"https://img.shields.io/issuestats/i/github/leecade/react-native-swiper.svg?style=flat-square\"></a>\n  <a href=\"https://github.com/leecade/react-native-swiper/issues?q=is%3Aissue+is%3Aclosed\"><img alt=\"Issue Stats\" src=\"https://img.shields.io/issuestats/p/github/leecade/react-native-swiper.svg?style=flat-square\"></a>\n  <a href=\"https://gitter.im/leecade/react-native-swiper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\"><img alt=\"Join the chat\" src=\"https://badges.gitter.im/leecade/react-native-swiper.svg\"></a>\n</p>\n\n# react-native-swiper\n\n## Roadmap\n\n> see: [ROADMAP.md](ROADMAP.md)\n\n## Changelogs\n\n- **[1.6.0-rc]**\n  - Dependency\n    - Remove ViewPagerAndroid, use ScrollView #1009\n  - Test Integration\n    - Setup e2e test\n  - TypeScript\n    - correct the wrong types #1000\n    - Add missing scrollBy TypeScript definition #931\n  - New Feature\n    - add scrollTo #831\n    - Added prop to disable the PrevButton #749\n    - Optionally render page #1004\n  - Bug Fix\n    - ES6 and CommonJS compatibility #717\n    - Solves the issue of state messing up when parent component calls setState #939\n    - replay when autoplay is setted to true #1002\n    - fix broken examples and migrate to react-native 0.60.x\n    - fix bad jumping on ios when loadMinimal set true\n    - fix fliker when loop and loadMinimal are enabled #1062\n\n* [1.5.6]\n\n  - Fix [#16](https://github.com/leecade/react-native-swiper/issues/16), [#36](https://github.com/leecade/react-native-swiper/issues/36), [#371](https://github.com/leecade/react-native-swiper/issues/371), [#410](https://github.com/leecade/react-native-swiper/issues/410), [#411](https://github.com/leecade/react-native-swiper/issues/411), [#422](https://github.com/leecade/react-native-swiper/issues/422), [#468](https://github.com/leecade/react-native-swiper/issues/468) Fix landscape orientation auto resize! (thanks [@ahmed3mar](https://github.com/ahmed3mar), [@timmywil](https://github.com/timmywil))\n  - Add containerStyle prop to customize the view container.\n\n* [1.5.5]\n  - Update: using PropTypes from prop-types and Change View.propTypes to ViewPropTypes\n\n- [1.5.4]\n\n  - Added easily accessible pagination point manipulation: use `dotColor` / `activeDotColor` and `dotStyle` / `activeDotStyle` (thanks [@denizs](https://github.com/denizs))\n  - Added scrollEnabled prop to documentation (thanks [@ibandominguez](https://github.com/ibandominguez))\n\n- [1.5.3]\n\n  - Add loadMinimalLoader prop to customize `<ActivityIndicator />` (thanks [@Exilz](https://github.com/Exilz))\n  - Disable autoplay timer when prop changes to false (thanks [@dizlexik](https://github.com/dizlexik))\n  - Special thanks to [@hypatiah](https://github.com/dizlexik) for fixed some grammatical errors in README\n\n- [1.5.2]\n  - Add yarn lock\n  - Fix jitter when quickly swiping back and forth between pages (iOS) (thanks [@nemophrost](https://github.com/nemophrost))\n  - The first webview always reloaded when injecting the rest of the children (thanks [@eosterberg](https://github.com/eosterberg))\n\n> see more: [CHANGELOG.md](CHANGELOG.md)\n\n## Show Cases\n\n> Try these cases by yourself very easy, Just open `examples/ios/swiper.xcodeproj` in Xcode, then press `Cmd + R`; you may edit `examples/index.ios.js` for switch cases.\n\n### [examples/components/Basic](https://github.com/leecade/react-native-swiper/blob/master/examples/components/Basic)\n\n![](http://i.imgur.com/zrsazAG.gif=300x)\n\n### [examples/components/Swiper](https://github.com/leecade/react-native-swiper/blob/master/examples/components/Swiper)\n\n![](http://i.imgur.com/hP3f3oO.gif=300x)\n\n### [examples/components/SwiperNumber](https://github.com/leecade/react-native-swiper/blob/master/examples/components/SwiperNumber)\n\n![](http://i.imgur.com/0rqESVb.gif=300x)\n\n### [examples/components/Phone](https://github.com/leecade/react-native-swiper/blob/master/examples/components/Phone)\n\n![](http://i.imgur.com/c1BhjZm.gif=300x)\n\n### [examples/components/LoadMinimal](https://github.com/leecade/react-native-swiper/blob/master/examples/components/LoadMinimal)\n\n![](http://i.imgur.com/LAOHbJA.gif=300x)\n\n## Getting Started\n\n- [Installation](#installation)\n- [Basic Usage](#basic-usage)\n- [Properties](#properties)\n  - [Basic](#basic)\n  - [Custom basic style & content](#custom-basic-style--content)\n  - [Pagination](#pagination)\n  - [Autoplay](#autoplay)\n  - [Control buttons](#control-buttons)\n  - [Props of Children](#props-of-children)\n  - [Basic props of `<ScrollView />`](#basic-props-of-scrollview-)\n  - [Supported ScrollResponder](#supported-scrollresponder)\n- [Examples](#examples)\n- [Development](#development)\n\n### Installation\n\n> v1.5.14\n\n```bash\n$ npm i react-native-swiper --save\n```\n\n> v1.6.0-rc\n\n```\nnpm i --save react-native-swiper@next\n```\n\n### Basic Usage\n\n- Install `react-native` first\n\n```bash\n$ npm i react-native-cli -g\n```\n\n- Initialization of a react-native project\n\n```bash\n$ react-native init myproject\n```\n\n- Then, edit `myproject/index.ios.js`, like this:\n\n```jsx\nimport React, { Component } from 'react'\nimport { AppRegistry, StyleSheet, Text, View } from 'react-native'\n\nimport Swiper from 'react-native-swiper'\n\nconst styles = StyleSheet.create({\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n})\n\nexport default class SwiperComponent extends Component {\n  render() {\n    return (\n      <Swiper style={styles.wrapper} showsButtons={true}>\n        <View style={styles.slide1}>\n          <Text style={styles.text}>Hello Swiper</Text>\n        </View>\n        <View style={styles.slide2}>\n          <Text style={styles.text}>Beautiful</Text>\n        </View>\n        <View style={styles.slide3}>\n          <Text style={styles.text}>And simple</Text>\n        </View>\n      </Swiper>\n    )\n  }\n}\n\nAppRegistry.registerComponent('myproject', () => SwiperComponent)\n```\n\n### Properties\n\n#### Basic\n\n| Prop           |     Default     |   Type   | Description                                                                                                 |\n| :------------- | :-------------: | :------: | :---------------------------------------------------------------------------------------------------------- |\n| horizontal     |      true       |  `bool`  | If `true`, the scroll view's children are arranged horizontally in a row instead of vertically in a column. |\n| loop           |      true       |  `bool`  | Set to `false` to disable continuous loop mode.                                                             |\n| index          |        0        | `number` | Index number of initial slide.                                                                              |\n| showsButtons   |      false      |  `bool`  | Set to `true` make control buttons visible.                                                                 |\n| autoplay       |      false      |  `bool`  | Set to `true` enable auto play mode.                                                                        |\n| onIndexChanged | (index) => null |  `func`  | Called with the new index when the user swiped                                                              |\n\n#### Custom basic style & content\n\n| Prop              |         Default         |   Type    | Description                                                                |\n| :---------------- | :---------------------: | :-------: | :------------------------------------------------------------------------- |\n| width             |            -            | `number`  | If no specify default enable fullscreen mode by `flex: 1`.                 |\n| height            |            -            | `number`  | If no specify default fullscreen mode by `flex: 1`.                        |\n| style             |          {...}          |  `style`  | See default style in source.                                               |\n| containerStyle    |          {...}          |  `style`  | See default container style in source.                                     |\n| loadMinimal       |          false          |  `bool`   | Only load current index slide , `loadMinimalSize` slides before and after. |\n| loadMinimalSize   |            1            | `number`  | see `loadMinimal`                                                          |\n| loadMinimalLoader | `<ActivityIndicator />` | `element` | Custom loader to display when slides aren't loaded                         |\n\n#### Pagination\n\n| Prop             |                                                                          Default                                                                          |    Type    | Description                                                                                                                                                                                   |\n| :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| showsPagination  |                                                                           true                                                                            |   `bool`   | Set to `true` make pagination visible.                                                                                                                                                        |\n| paginationStyle  |                                                                           {...}                                                                           |  `style`   | Custom styles will merge with the default styles.                                                                                                                                             |\n| renderPagination |                                                                             -                                                                             | `function` | Complete control how to render pagination with three params (`index`, `total`, `context`) ref to `this.state.index` / `this.state.total` / `this`, For example: show numbers instead of dots. |\n| dot              | `<View style={{backgroundColor:'rgba(0,0,0,.2)', width: 8, height: 8,borderRadius: 4, marginLeft: 3, marginRight: 3, marginTop: 3, marginBottom: 3,}} />` | `element`  | Allow custom the dot element.                                                                                                                                                                 |\n| activeDot        |   `<View style={{backgroundColor: '#007aff', width: 8, height: 8, borderRadius: 4, marginLeft: 3, marginRight: 3, marginTop: 3, marginBottom: 3,}} />`    | `element`  | Allow custom the active-dot element.                                                                                                                                                          |\n| dotStyle         |                                                                             -                                                                             |  `object`  | Allow custom the dot element.                                                                                                                                                          |\n| dotColor         |                                                                             -                                                                             |  `string`  | Allow custom the dot element.                                                                                                                                                          |\n| activeDotColor   |                                                                             -                                                                             |  `string`  | Allow custom the active-dot element.                                                                                                                                                          |\n| activeDotStyle   |                                                                             -                                                                             |  `object`  | Allow custom the active-dot element.                                                                                                                                                          |\n\n#### Autoplay\n\n| Prop              | Default |   Type   | Description                                      |\n| :---------------- | :-----: | :------: | :----------------------------------------------- |\n| autoplay          |  true   |  `bool`  | Set to `true` enable auto play mode.             |\n| autoplayTimeout   |   2.5   | `number` | Delay between auto play transitions (in second). |\n| autoplayDirection |  true   |  `bool`  | Cycle direction control.                         |\n\n#### Control buttons\n\n| Prop               |                                                                                                   Default                                                                                                   |   Type    | Description                                 |\n| :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------: | :------------------------------------------ |\n| showsButtons       |                                                                                                    true                                                                                                     |  `bool`   | Set to `true` make control buttons visible. |\n| buttonWrapperStyle | `{backgroundColor: 'transparent', flexDirection: 'row', position: 'absolute', top: 0, left: 0, flex: 1, paddingHorizontal: 10, paddingVertical: 10, justifyContent: 'space-between', alignItems: 'center'}` |  `style`  | Custom styles.                              |\n| nextButton         |                                                                                 `<Text style={styles.buttonText}>›</Text>`                                                                                  | `element` | Allow custom the next button.               |\n| prevButton         |                                                                                 `<Text style={styles.buttonText}>‹</Text>`                                                                                  | `element` | Allow custom the prev button.               |\n\n#### Props of Children\n\n| Prop  |               Default                |   Type    | Description                                                    |\n| :---- | :----------------------------------: | :-------: | :------------------------------------------------------------- |\n| style |                {...}                 |  `style`  | Custom styles will merge with the default styles.              |\n| title | {<Text numberOfLines={1}>...</Text>} | `element` | If this parameter is not specified, will not render the title. |\n\n#### Basic props of `<ScrollView />`\n\n| Prop                             | Default |  Type  | Description                                                                                                                                                                                                                                     |\n| :------------------------------- | :-----: | :----: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| horizontal                       |  true   | `bool` | If `true`, the scroll view's children are arranged horizontally in a row instead of vertically in a column.                                                                                                                                     |\n| pagingEnabled                    |  true   | `bool` | If true, the scroll view stops on multiples of the scroll view's size when scrolling. This can be used for horizontal pagination.                                                                                                               |\n| showsHorizontalScrollIndicator   |  false  | `bool` | Set to `true` if you want to show horizontal scroll bar.                                                                                                                                                                                        |\n| showsVerticalScrollIndicator     |  false  | `bool` | Set to `true` if you want to show vertical scroll bar.                                                                                                                                                                                          |\n| bounces                          |  false  | `bool` | If `true`, the scroll view bounces when it reaches the end of the content if the content is larger then the scroll view along the axis of the scroll direction. If `false`, it disables all bouncing even if the alwaysBounce\\* props are true. |\n| scrollsToTop                     |  false  | `bool` | If true, the scroll view scrolls to top when the status bar is tapped.                                                                                                                                                                          |\n| removeClippedSubviews            |  true   | `bool` | If true, offscreen child views (whose overflow value is hidden) are removed from their native backing superview when offscreen. This canimprove scrolling performance on long lists.                                                            |\n| automaticallyAdjustContentInsets |  false  | `bool` | Set to `true` if you need adjust content insets automation.                                                                                                                                                                                     |\n| scrollEnabled                    |  true   | `bool` | Enables/Disables swiping                                                                                                                                                                                                                        |\n\n> @see: http://facebook.github.io/react-native/docs/scrollview.html\n\n#### Supported ScrollResponder\n\n| Prop                |          Params           |    Type    | Description                                                 |\n| :------------------ | :-----------------------: | :--------: | :---------------------------------------------------------- |\n| onScrollBeginDrag   | `e` / `state` / `context` | `function` | When animation begins after letting up                      |\n| onMomentumScrollEnd | `e` / `state` / `context` | `function` | Makes no sense why this occurs first during bounce          |\n| onTouchStartCapture | `e` / `state` / `context` | `function` | Immediately after `onMomentumScrollEnd`                     |\n| onTouchStart        | `e` / `state` / `context` | `function` | Same, but bubble phase                                      |\n| onTouchEnd          | `e` / `state` / `context` | `function` | You could hold the touch start for a long time              |\n| onResponderRelease  | `e` / `state` / `context` | `function` | When lifting up - you could pause forever before \\* lifting |\n\n> Note: each ScrollResponder be injected with two params: `state` and `context`, you can get `state` and `context`(ref to swiper's `this`) from params, for example:\n\n```jsx\nvar swiper = React.createClass({\n  _onMomentumScrollEnd: function (e, state, context) {\n    console.log(state, context.state)\n  },\n  render: function() {\n    return (\n      <Swiper style={styles.wrapper}\n      onMomentumScrollEnd ={this._onMomentumScrollEnd}\n     ...\n      </Swiper>\n    )\n  }\n})\n```\n\n> More ScrollResponder info, see: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollResponder.js\n\n### Methods\n\n#### scrollBy(index, animated)\n\nScroll by relative index.\n\nParameters:\n\n| Name     |   Type   |   default   | Description  |\n| :------- | :------: | :---------: | :----------- |\n| index    | `number` | `undefined` | offset index |\n| animated |  `bool`  |   `true`    | offset index |\n\n### Examples\n\n```bash\n$ cd examples\n$ npm i\n$ react-native run-ios\n```\n\n> Quick start with [examples](https://github.com/leecade/react-native-swiper/tree/master/examples/).\n\n### Development\n\n```bash\n$ cd examples\n$ yarn\n$ yarn start\n$ react-native run-ios\n```\n\nThen launch simulator to preview. Note that you just need to edit the source file `src/index.js`, the change will auto sync to examples.\n\nAfter development, you should add test for your modification and make all tests passed to prevent other contributors break the feature in the future accidentally. We use detox + jest for e2e test now, you can read [Detox](https://github.com/wix/Detox) for more detail.\n\n## Contribution\n\n- [@leecade](mailto:leecade@163.com) The main author.\n- [@rajkissu](mailto:rajkissu@gmail.com) The secondary contributor.\n\n## Questions\n\nFeel free to [contact me](mailto:leecade@163.com) or [create an issue](https://github.com/leecade/react-native-swiper/issues/new)\n\n> Inspired by [nolimits4web/Swiper](https://github.com/nolimits4web/swiper/) & Design material from [Dribbble](https://dribbble.com/) & made with ♥.\n\n---\n\n## 💖 Sponsors\n\n- [ZMTO](https://www.zmto.com) - Cloud Infrastructure & Hosting\n"
  },
  {
    "path": "ROADMAP.md",
    "content": "### V2\n\n- [ ] Improve performance\n\n- [ ] Landscape mode\n\n> Please track in [milestones:v2](https://github.com/leecade/react-native-swiper/milestones/v2)\n\n> Contribute code to [branch:Android](https://github.com/leecade/react-native-swiper/tree/android) and [branch:V2](https://github.com/leecade/react-native-swiper/tree/v2)\n\n> Provide creative in [issues](https://github.com/leecade/react-native-swiper/issues)\n\n-----\n\n### V1\n\n- [x] **Support for Android**\n\n- [ ] More switch effects\n\n- [ ] Unit tests\n\n- [ ] Check typo\n\n- [ ] Fix bugs\n\n- [x] Improve performance\n\n- [x] Infinite loop\n\n- [x] Direction control\n\n- [x] Complete custom style\n\n- [x] Allow title display & custom\n\n- [x] Multiple instances\n\n- [x] Custom container size\n\n- [x] Control buttons\n\n- [x] Autoplay\n\n- [x] Custom pagination style\n\n- [x] State inject\n"
  },
  {
    "path": "examples/.buckconfig",
    "content": "\n[android]\n  target = Google Inc.:Google APIs:23\n\n[maven_repositories]\n  central = https://repo1.maven.org/maven2\n"
  },
  {
    "path": "examples/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  extends: '@react-native-community',\n};\n"
  },
  {
    "path": "examples/.flowconfig",
    "content": "[ignore]\n; We fork some components by platform\n.*/*[.]android.js\n\n; Ignore \"BUCK\" generated dirs\n<PROJECT_ROOT>/\\.buckd/\n\n; Ignore unexpected extra \"@providesModule\"\n.*/node_modules/.*/node_modules/fbjs/.*\n\n; Ignore duplicate module providers\n; For RN Apps installed via npm, \"Libraries\" folder is inside\n; \"node_modules/react-native\" but in the source repo it is in the root\nnode_modules/react-native/Libraries/react-native/React.js\n\n; Ignore polyfills\nnode_modules/react-native/Libraries/polyfills/.*\n\n; These should not be required directly\n; require from fbjs/lib instead: require('fbjs/lib/warning')\nnode_modules/warning/.*\n\n; Flow doesn't support platforms\n.*/Libraries/Utilities/HMRLoadingView.js\n\n[untyped]\n.*/node_modules/@react-native-community/cli/.*/.*\n\n[include]\n\n[libs]\nnode_modules/react-native/Libraries/react-native/react-native-interface.js\nnode_modules/react-native/flow/\n\n[options]\nemoji=true\n\nesproposal.optional_chaining=enable\nesproposal.nullish_coalescing=enable\n\nmodule.file_ext=.js\nmodule.file_ext=.json\nmodule.file_ext=.ios.js\n\nmodule.system=haste\nmodule.system.haste.use_name_reducers=true\n# get basename\nmodule.system.haste.name_reducers='^.*/\\([a-zA-Z0-9$_.-]+\\.js\\(\\.flow\\)?\\)$' -> '\\1'\n# strip .js or .js.flow suffix\nmodule.system.haste.name_reducers='^\\(.*\\)\\.js\\(\\.flow\\)?$' -> '\\1'\n# strip .ios suffix\nmodule.system.haste.name_reducers='^\\(.*\\)\\.ios$' -> '\\1'\nmodule.system.haste.name_reducers='^\\(.*\\)\\.android$' -> '\\1'\nmodule.system.haste.name_reducers='^\\(.*\\)\\.native$' -> '\\1'\nmodule.system.haste.paths.blacklist=.*/__tests__/.*\nmodule.system.haste.paths.blacklist=.*/__mocks__/.*\nmodule.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/Libraries/.*\nmodule.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/RNTester/.*\nmodule.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/IntegrationTests/.*\nmodule.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation.js\nmodule.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/Animated/src/polyfills/.*\n\nmunge_underscores=true\n\nmodule.name_mapper='^[./a-zA-Z0-9$_-]+\\.\\(bmp\\|gif\\|jpg\\|jpeg\\|png\\|psd\\|svg\\|webp\\|m4v\\|mov\\|mp4\\|mpeg\\|mpg\\|webm\\|aac\\|aiff\\|caf\\|m4a\\|mp3\\|wav\\|html\\|pdf\\)$' -> 'RelativeImageStub'\n\nsuppress_type=$FlowIssue\nsuppress_type=$FlowFixMe\nsuppress_type=$FlowFixMeProps\nsuppress_type=$FlowFixMeState\n\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowFixMe\\\\($\\\\|[^(]\\\\|(\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native\\\\(_ios\\\\)?_\\\\(oss\\\\|fb\\\\)[a-z,_]*\\\\)?)\\\\)\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowIssue\\\\((\\\\(<VERSION>\\\\)? *\\\\(site=[a-z,_]*react_native\\\\(_ios\\\\)?_\\\\(oss\\\\|fb\\\\)[a-z,_]*\\\\)?)\\\\)?:? #[0-9]+\nsuppress_comment=\\\\(.\\\\|\\n\\\\)*\\\\$FlowExpectedError\n\n[lints]\nsketchy-null-number=warn\nsketchy-null-mixed=warn\nsketchy-number=warn\nuntyped-type-import=warn\nnonstrict-import=warn\ndeprecated-type=warn\nunsafe-getters-setters=warn\ninexact-spread=warn\nunnecessary-invariant=warn\nsignature-verification-failure=warn\ndeprecated-utility=error\n\n[strict]\ndeprecated-type\nnonstrict-import\nsketchy-null\nunclear-type\nunsafe-getters-setters\nuntyped-import\nuntyped-type-import\n\n[version]\n^0.98.0\n"
  },
  {
    "path": "examples/.gitattributes",
    "content": "*.pbxproj -text\n"
  },
  {
    "path": "examples/.gitignore",
    "content": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\nproject.xcworkspace\n\n# Android/IntelliJ\n#\nbuild/\n.idea\n.gradle\nlocal.properties\n*.iml\n\n# node.js\n#\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# BUCK\nbuck-out/\n\\.buckd/\n*.keystore\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/\n\n*/fastlane/report.xml\n*/fastlane/Preview.html\n*/fastlane/screenshots\n\n# Bundle artifact\n*.jsbundle\n\n# CocoaPods\n/ios/Pods/\n\n# TestCase from issue\nTestCase-*/\n"
  },
  {
    "path": "examples/.prettierrc",
    "content": "{\n  \"printWidth\": 80,\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"semi\": false,\n  \"singleQuote\": true,\n  \"trailingComma\": \"none\",\n  \"bracketSpacing\": true,\n  \"jsxBracketSameLine\": false\n}\n"
  },
  {
    "path": "examples/.watchmanconfig",
    "content": "{}"
  },
  {
    "path": "examples/__tests__/App-test.js",
    "content": "/**\n * @format\n */\n\nimport 'react-native';\nimport React from 'react';\nimport App from '../App';\n\n// Note: test renderer must be required after react-native.\nimport renderer from 'react-test-renderer';\n\nit('renders correctly', () => {\n  renderer.create(<App />);\n});\n"
  },
  {
    "path": "examples/android/.project",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>android</name>\n\t<comment>Project android created by Buildship.</comment>\n\t<projects>\n\t</projects>\n\t<buildSpec>\n\t\t<buildCommand>\n\t\t\t<name>org.eclipse.buildship.core.gradleprojectbuilder</name>\n\t\t\t<arguments>\n\t\t\t</arguments>\n\t\t</buildCommand>\n\t</buildSpec>\n\t<natures>\n\t\t<nature>org.eclipse.buildship.core.gradleprojectnature</nature>\n\t</natures>\n</projectDescription>\n"
  },
  {
    "path": "examples/android/.settings/org.eclipse.buildship.core.prefs",
    "content": "connection.project.dir=\neclipse.preferences.version=1\n"
  },
  {
    "path": "examples/android/app/BUCK",
    "content": "# To learn about Buck see [Docs](https://buckbuild.com/).\n# To run your application with Buck:\n# - install Buck\n# - `npm start` - to start the packager\n# - `cd android`\n# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n# - `buck install -r android/app` - compile, install and run application\n#\n\nload(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n\nlib_deps = []\n\ncreate_aar_targets(glob([\"libs/*.aar\"]))\n\ncreate_jar_targets(glob([\"libs/*.jar\"]))\n\nandroid_library(\n    name = \"all-libs\",\n    exported_deps = lib_deps,\n)\n\nandroid_library(\n    name = \"app-code\",\n    srcs = glob([\n        \"src/main/java/**/*.java\",\n    ]),\n    deps = [\n        \":all-libs\",\n        \":build_config\",\n        \":res\",\n    ],\n)\n\nandroid_build_config(\n    name = \"build_config\",\n    package = \"com.examples\",\n)\n\nandroid_resource(\n    name = \"res\",\n    package = \"com.examples\",\n    res = \"src/main/res\",\n)\n\nandroid_binary(\n    name = \"app\",\n    keystore = \"//android/keystores:debug\",\n    manifest = \"src/main/AndroidManifest.xml\",\n    package_type = \"debug\",\n    deps = [\n        \":app-code\",\n    ],\n)\n"
  },
  {
    "path": "examples/android/app/build.gradle",
    "content": "apply plugin: \"com.android.application\"\n\nimport com.android.build.OutputFile\n\n/**\n * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n * and bundleReleaseJsAndAssets).\n * These basically call `react-native bundle` with the correct arguments during the Android build\n * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n * bundle directly from the development server. Below you can see all the possible configurations\n * and their defaults. If you decide to add a configuration block, make sure to add it before the\n * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n *\n * project.ext.react = [\n *   // the name of the generated asset file containing your JS bundle\n *   bundleAssetName: \"index.android.bundle\",\n *\n *   // the entry file for bundle generation\n *   entryFile: \"index.android.js\",\n *\n *   // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format\n *   bundleCommand: \"ram-bundle\",\n *\n *   // whether to bundle JS and assets in debug mode\n *   bundleInDebug: false,\n *\n *   // whether to bundle JS and assets in release mode\n *   bundleInRelease: true,\n *\n *   // whether to bundle JS and assets in another build variant (if configured).\n *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n *   // The configuration property can be in the following formats\n *   //         'bundleIn${productFlavor}${buildType}'\n *   //         'bundleIn${buildType}'\n *   // bundleInFreeDebug: true,\n *   // bundleInPaidRelease: true,\n *   // bundleInBeta: true,\n *\n *   // whether to disable dev mode in custom build variants (by default only disabled in release)\n *   // for example: to disable dev mode in the staging build type (if configured)\n *   devDisabledInStaging: true,\n *   // The configuration property can be in the following formats\n *   //         'devDisabledIn${productFlavor}${buildType}'\n *   //         'devDisabledIn${buildType}'\n *\n *   // the root of your project, i.e. where \"package.json\" lives\n *   root: \"../../\",\n *\n *   // where to put the JS bundle asset in debug mode\n *   jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n *\n *   // where to put the JS bundle asset in release mode\n *   jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in debug mode\n *   resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n *\n *   // where to put drawable resources / React Native assets, e.g. the ones you use via\n *   // require('./image.png')), in release mode\n *   resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n *\n *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n *   // date; if you have any other folders that you want to ignore for performance reasons (gradle\n *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n *   // for example, you might want to remove it from here.\n *   inputExcludes: [\"android/**\", \"ios/**\"],\n *\n *   // override which node gets called and with what additional arguments\n *   nodeExecutableAndArgs: [\"node\"],\n *\n *   // supply additional arguments to the packager\n *   extraPackagerArgs: []\n * ]\n */\n\nproject.ext.react = [\n    entryFile: \"index.js\",\n    enableHermes: false,  // clean and rebuild if changing\n]\n\napply from: \"../../node_modules/react-native/react.gradle\"\n\n/**\n * Set this to true to create two separate APKs instead of one:\n *   - An APK that only works on ARM devices\n *   - An APK that only works on x86 devices\n * The advantage is the size of the APK is reduced by about 4MB.\n * Upload all the APKs to the Play Store and people will download\n * the correct one based on the CPU architecture of their device.\n */\ndef enableSeparateBuildPerCPUArchitecture = false\n\n/**\n * Run Proguard to shrink the Java bytecode in release builds.\n */\ndef enableProguardInReleaseBuilds = false\n\n/**\n * The preferred build flavor of JavaScriptCore.\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n * give correct results when using with locales other than en-US.  Note that\n * this variant is about 6MiB larger per architecture than default.\n */\ndef jscFlavor = 'org.webkit:android-jsc:+'\n\n/**\n * Whether to enable the Hermes VM.\n *\n * This should be set on project.ext.react and mirrored here.  If it is not set\n * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n * and the benefits of using Hermes will therefore be sharply reduced.\n */\ndef enableHermes = project.ext.react.get(\"enableHermes\", false);\n\nandroid {\n    compileSdkVersion rootProject.ext.compileSdkVersion\n\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n\n    defaultConfig {\n        applicationId \"com.examples\"\n        minSdkVersion rootProject.ext.minSdkVersion\n        targetSdkVersion rootProject.ext.targetSdkVersion\n        versionCode 1\n        versionName \"1.0\"\n    }\n    splits {\n        abi {\n            reset()\n            enable enableSeparateBuildPerCPUArchitecture\n            universalApk false  // If true, also generate a universal APK\n            include \"armeabi-v7a\", \"x86\", \"arm64-v8a\", \"x86_64\"\n        }\n    }\n    signingConfigs {\n        debug {\n            storeFile file('debug.keystore')\n            storePassword 'android'\n            keyAlias 'androiddebugkey'\n            keyPassword 'android'\n        }\n    }\n    buildTypes {\n        debug {\n            signingConfig signingConfigs.debug\n        }\n        release {\n            // Caution! In production, you need to generate your own keystore file.\n            // see https://facebook.github.io/react-native/docs/signed-apk-android.\n            signingConfig signingConfigs.debug\n            minifyEnabled enableProguardInReleaseBuilds\n            proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n        }\n    }\n    // applicationVariants are e.g. debug, release\n    applicationVariants.all { variant ->\n        variant.outputs.each { output ->\n            // For each separate APK per architecture, set a unique version code as described here:\n            // https://developer.android.com/studio/build/configure-apk-splits.html\n            def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n            def abi = output.getFilter(OutputFile.ABI)\n            if (abi != null) {  // null for the universal-debug, universal-release variants\n                output.versionCodeOverride =\n                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n            }\n\n        }\n    }\n\n    packagingOptions {\n        pickFirst '**/armeabi-v7a/libc++_shared.so'\n        pickFirst '**/x86/libc++_shared.so'\n        pickFirst '**/arm64-v8a/libc++_shared.so'\n        pickFirst '**/x86_64/libc++_shared.so'\n        pickFirst '**/x86/libjsc.so'\n        pickFirst '**/armeabi-v7a/libjsc.so'\n    }\n}\n\ndependencies {\n    implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n    implementation \"com.facebook.react:react-native:+\"  // From node_modules\n\n    // react-native-screens\n    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'\n    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'\n\n    if (enableHermes) {\n      def hermesPath = \"../../node_modules/hermesvm/android/\";\n      debugImplementation files(hermesPath + \"hermes-debug.aar\")\n      releaseImplementation files(hermesPath + \"hermes-release.aar\")\n    } else {\n      implementation jscFlavor\n    }\n\n    debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n        exclude group:'com.facebook.yoga'\n        exclude group:'com.facebook.flipper', module: 'fbjni'\n        exclude group:'com.facebook.fbjni', module: 'fbjni'\n        exclude group:'com.facebook.litho', module: 'litho-annotations'\n    }\n}\n\n// Run this once to be able to run the application with BUCK\n// puts all compile dependencies into folder libs for BUCK to use\ntask copyDownloadableDepsToLibs(type: Copy) {\n    from configurations.compile\n    into 'libs'\n}\n\napply from: file(\"../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle\"); applyNativeModulesAppBuildGradle(project)\n"
  },
  {
    "path": "examples/android/app/build_defs.bzl",
    "content": "\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n\ndef create_aar_targets(aarfiles):\n    for aarfile in aarfiles:\n        name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n        lib_deps.append(\":\" + name)\n        android_prebuilt_aar(\n            name = name,\n            aar = aarfile,\n        )\n\ndef create_jar_targets(jarfiles):\n    for jarfile in jarfiles:\n        name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n        lib_deps.append(\":\" + name)\n        prebuilt_jar(\n            name = name,\n            binary_jar = jarfile,\n        )\n"
  },
  {
    "path": "examples/android/app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n"
  },
  {
    "path": "examples/android/app/src/debug/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\">\n\n    <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n\n    <application android:usesCleartextTraffic=\"true\" tools:targetApi=\"28\" tools:ignore=\"GoogleAppIndexingWarning\" />\n</manifest>\n"
  },
  {
    "path": "examples/android/app/src/debug/java/com/examples/ReactNativeFlipper.java",
    "content": "package com.example;\n\nimport android.content.Context;\n\nimport com.facebook.flipper.android.AndroidFlipperClient;\nimport com.facebook.flipper.android.utils.FlipperUtils;\nimport com.facebook.flipper.core.FlipperClient;\nimport com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;\nimport com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;\nimport com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;\nimport com.facebook.flipper.plugins.inspector.DescriptorMapping;\nimport com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\nimport com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\nimport com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\nimport com.facebook.flipper.plugins.react.ReactFlipperPlugin;\nimport com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\nimport com.facebook.react.ReactInstanceManager;\nimport com.facebook.react.bridge.ReactContext;\nimport com.facebook.react.modules.network.NetworkingModule;\nimport okhttp3.OkHttpClient;\n\npublic class ReactNativeFlipper {\n  public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n    if (FlipperUtils.shouldEnableFlipper(context)) {\n      final FlipperClient client = AndroidFlipperClient.getInstance(context);\n\n      client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n      client.addPlugin(new ReactFlipperPlugin());\n      client.addPlugin(new DatabasesFlipperPlugin(context));\n      client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n      client.addPlugin(CrashReporterPlugin.getInstance());\n\n      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n      NetworkingModule.setCustomClientBuilder(\n        new NetworkingModule.CustomClientBuilder() {\n          @Override\n          public void apply(OkHttpClient.Builder builder) {\n            builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));\n          }\n        });\n      client.addPlugin(networkFlipperPlugin);\n      client.start();\n\n      // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n      // Hence we run if after all native modules have been initialized\n      ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n      if (reactContext == null) {\n        reactInstanceManager.addReactInstanceEventListener(\n          new ReactInstanceManager.ReactInstanceEventListener() {\n            @Override\n            public void onReactContextInitialized(ReactContext reactContext) {\n              reactInstanceManager.removeReactInstanceEventListener(this);\n              reactContext.runOnNativeModulesQueueThread(\n                new Runnable() {\n                  @Override\n                  public void run() {\n                    client.addPlugin(new FrescoFlipperPlugin());\n                  }\n                });\n            }\n          });\n      } else {\n        client.addPlugin(new FrescoFlipperPlugin());\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "examples/android/app/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n  package=\"com.examples\">\n\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n\n    <application\n      android:name=\".MainApplication\"\n      android:label=\"@string/app_name\"\n      android:icon=\"@mipmap/ic_launcher\"\n      android:roundIcon=\"@mipmap/ic_launcher_round\"\n      android:allowBackup=\"false\"\n      android:theme=\"@style/AppTheme\">\n      <activity\n        android:name=\".MainActivity\"\n        android:label=\"@string/app_name\"\n        android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize\"\n        android:windowSoftInputMode=\"adjustResize\">\n        <intent-filter>\n            <action android:name=\"android.intent.action.MAIN\" />\n            <category android:name=\"android.intent.category.LAUNCHER\" />\n        </intent-filter>\n      </activity>\n      <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\" />\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "examples/android/app/src/main/java/com/examples/MainActivity.java",
    "content": "package com.examples;\n\nimport com.facebook.react.ReactActivity;\n\npublic class MainActivity extends ReactActivity {\n\n    /**\n     * Returns the name of the main component registered from JavaScript.\n     * This is used to schedule rendering of the component.\n     */\n    @Override\n    protected String getMainComponentName() {\n        return \"examples\";\n    }\n}\n"
  },
  {
    "path": "examples/android/app/src/main/java/com/examples/MainApplication.java",
    "content": "package com.examples;\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.util.Log;\n\nimport com.facebook.react.PackageList;\nimport com.facebook.hermes.reactexecutor.HermesExecutorFactory;\nimport com.facebook.react.bridge.JavaScriptExecutorFactory;\nimport com.facebook.react.ReactApplication;\nimport com.facebook.react.ReactInstanceManager;\nimport com.facebook.react.ReactNativeHost;\nimport com.facebook.react.ReactPackage;\nimport com.facebook.soloader.SoLoader;\n\nimport java.lang.reflect.InvocationTargetException;\nimport java.util.List;\n\npublic class MainApplication extends Application implements ReactApplication {\n\n  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {\n    @Override\n    public boolean getUseDeveloperSupport() {\n      return BuildConfig.DEBUG;\n    }\n\n    @Override\n    protected List<ReactPackage> getPackages() {\n      @SuppressWarnings(\"UnnecessaryLocalVariable\")\n      List<ReactPackage> packages = new PackageList(this).getPackages();\n      // Packages that cannot be autolinked yet can be added manually here, for example:\n      // packages.add(new MyReactNativePackage());\n      return packages;\n    }\n\n    @Override\n    protected String getJSMainModuleName() {\n      return \"index\";\n    }\n  };\n\n  @Override\n  public ReactNativeHost getReactNativeHost() {\n    return mReactNativeHost;\n  }\n\n  @Override\n  public void onCreate() {\n    super.onCreate();\n    SoLoader.init(this, /* native exopackage */ false);\n    initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n  }\n\n  /**\n   * Loads Flipper in React Native templates. Call this in the onCreate method\n   * with something like initializeFlipper(this,\n   * getReactNativeHost().getReactInstanceManager());\n   *\n   * @param context\n   */\n  private static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n    if (BuildConfig.DEBUG) {\n      try {\n        /*\n         * We use reflection here to pick up the class that initializes Flipper, since\n         * Flipper library is not available in release mode\n         */\n        Class<?> aClass = Class.forName(\"com.example.ReactNativeFlipper\");\n        aClass.getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class).invoke(null, context,\n            reactInstanceManager);\n      } catch (ClassNotFoundException e) {\n        e.printStackTrace();\n      } catch (NoSuchMethodException e) {\n        e.printStackTrace();\n      } catch (IllegalAccessException e) {\n        e.printStackTrace();\n      } catch (InvocationTargetException e) {\n        e.printStackTrace();\n      }\n    }\n  }\n\n}\n"
  },
  {
    "path": "examples/android/app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">examples</string>\n</resources>\n"
  },
  {
    "path": "examples/android/app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">\n        <!-- Customize your theme here. -->\n        <item name=\"android:textColor\">#000000</item>\n    </style>\n\n</resources>\n"
  },
  {
    "path": "examples/android/build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    ext {\n        buildToolsVersion = \"28.0.3\"\n        minSdkVersion = 16\n        compileSdkVersion = 28\n        targetSdkVersion = 28\n        supportLibVersion = \"28.0.0\"\n    }\n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath(\"com.android.tools.build:gradle:3.4.1\")\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        mavenLocal()\n        maven {\n            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n            url(\"$rootDir/../node_modules/react-native/android\")\n        }\n        maven {\n            // Android JSC is installed from npm\n            url(\"$rootDir/../node_modules/jsc-android/dist\")\n        }\n\n        google()\n        jcenter()\n    }\n}\n"
  },
  {
    "path": "examples/android/gradle/wrapper/gradle-wrapper.properties",
    "content": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-5.4.1-all.zip\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\n"
  },
  {
    "path": "examples/android/gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\n# Default value: -Xmx10248m -XX:MaxPermSize=256m\n# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n\nandroid.useAndroidX=true\nandroid.enableJetifier=true\n\n# Version of flipper SDK to use with React Native\nFLIPPER_VERSION=0.23.4\n"
  },
  {
    "path": "examples/android/gradlew",
    "content": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS='\"-Xmx64m\" \"-Xms64m\"'\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=$(save \"$@\")\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\n# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong\nif [ \"$(uname)\" = \"Darwin\" ] && [ \"$HOME\" = \"$PWD\" ]; then\n  cd \"$(dirname \"$0\")\"\nfi\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "examples/android/gradlew.bat",
    "content": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (the \"License\");\r\n@rem you may not use this file except in compliance with the License.\r\n@rem You may obtain a copy of the License at\r\n@rem\r\n@rem      http://www.apache.org/licenses/LICENSE-2.0\r\n@rem\r\n@rem Unless required by applicable law or agreed to in writing, software\r\n@rem distributed under the License is distributed on an \"AS IS\" BASIS,\r\n@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n@rem See the License for the specific language governing permissions and\r\n@rem limitations under the License.\r\n@rem\r\n\r\n@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\"-Xmx64m\" \"-Xms64m\"\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:init\r\n@rem Get command-line arguments, handling Windows variants\r\n\r\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\r\n\r\n:win9xME_args\r\n@rem Slurp the command line arguments.\r\nset CMD_LINE_ARGS=\r\nset _SKIP=2\r\n\r\n:win9xME_args_slurp\r\nif \"x%~1\" == \"x\" goto execute\r\n\r\nset CMD_LINE_ARGS=%*\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "examples/android/settings.gradle",
    "content": "rootProject.name = 'examples'\napply from: file(\"../node_modules/@react-native-community/cli-platform-android/native_modules.gradle\"); applyNativeModulesSettingsGradle(settings)\ninclude ':app'\n"
  },
  {
    "path": "examples/app.json",
    "content": "{\n  \"name\": \"examples\",\n  \"displayName\": \"examples\"\n}"
  },
  {
    "path": "examples/babel.config.js",
    "content": "module.exports = {\n  presets: ['module:metro-react-native-babel-preset'],\n};\n"
  },
  {
    "path": "examples/components/AutoPlay/index.tsx",
    "content": "import React from 'react'\nimport { Text, View, StyleSheet } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nconst styles = StyleSheet.create({\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n})\n\nexport default () => (\n  <Swiper style={styles.wrapper} autoplay>\n    <View testID=\"Hello\" style={styles.slide1}>\n      <Text style={styles.text}>Hello Swiper</Text>\n    </View>\n    <View testID=\"Beautiful\" style={styles.slide2}>\n      <Text style={styles.text}>Beautiful</Text>\n    </View>\n    <View testID=\"Simple\" style={styles.slide3}>\n      <Text style={styles.text}>And simple</Text>\n    </View>\n  </Swiper>\n)\n"
  },
  {
    "path": "examples/components/Basic/index.js",
    "content": "import React from 'react'\nimport { Text, View } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nvar styles = {\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n}\n\nexport default () => (\n  <Swiper style={styles.wrapper} showsButtons loop={false}>\n    <View testID=\"Hello\" style={styles.slide1}>\n      <Text style={styles.text}>Hello Swiper</Text>\n    </View>\n    <View testID=\"Beautiful\" style={styles.slide2}>\n      <Text style={styles.text}>Beautiful</Text>\n    </View>\n    <View testID=\"Simple\" style={styles.slide3}>\n      <Text style={styles.text}>And simple</Text>\n    </View>\n  </Swiper>\n)\n"
  },
  {
    "path": "examples/components/DisableButton/index.tsx",
    "content": "import React from 'react'\nimport { Text, View } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nconst styles = {\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n}\n\nexport default () => (\n  <Swiper\n    style={styles.wrapper}\n    showsButtons\n    // disable button onPress behavior\n    disablePrevButton\n    disableNextButton\n    loop={false}\n  >\n    <View style={styles.slide1}>\n      <Text style={styles.text}>Hello Swiper</Text>\n    </View>\n    <View style={styles.slide2}>\n      <Text style={styles.text}>Beautiful</Text>\n    </View>\n    <View style={styles.slide3}>\n      <Text style={styles.text}>And simple</Text>\n    </View>\n  </Swiper>\n)\n"
  },
  {
    "path": "examples/components/Dynamic/index.js",
    "content": "import React, { Component } from 'react'\nimport { Text, View } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nconst styles = {\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n}\n\nexport default class extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      items: []\n    }\n  }\n  componentDidMount() {\n    this.setState({\n      items: [\n        { title: 'Hello Swiper', css: styles.slide1 },\n        { title: 'Beautiful', css: styles.slide2 },\n        { title: 'And simple', css: styles.slide3 }\n      ]\n    })\n  }\n  render() {\n    return (\n      <Swiper showsButtons>\n        {this.state.items.map((item, key) => {\n          return (\n            <View key={key} style={item.css}>\n              <Text style={styles.text}>{item.title}</Text>\n            </View>\n          )\n        })}\n      </Swiper>\n    )\n  }\n}\n"
  },
  {
    "path": "examples/components/LoadMinimal/index.tsx",
    "content": "import React, { useState, useCallback } from 'react'\nimport { Text, View, Image, Dimensions, StyleSheet } from 'react-native'\nimport Swiper from 'react-native-swiper'\nimport { Model } from 'react-model'\nconst { width } = Dimensions.get('window')\nconst loading = require('./img/loading.gif')\n\nconst styles = StyleSheet.create({\n  wrapper: {},\n\n  slide: {\n    flex: 1,\n    justifyContent: 'center',\n    backgroundColor: 'transparent'\n  },\n  image: {\n    width,\n    flex: 1,\n    backgroundColor: 'transparent'\n  },\n\n  loadingView: {\n    position: 'absolute',\n    justifyContent: 'center',\n    alignItems: 'center',\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: 'rgba(0,0,0,.5)'\n  },\n\n  loadingImage: {\n    width: 60,\n    height: 60\n  }\n})\n\ninterface SlideState {\n  imgList: string[]\n  loadQueue: number[]\n}\n\ninterface SlideActions {\n  loaded: number\n}\n\nconst SlideSchema: ModelType<SlideState, SlideActions> = {\n  state: {\n    imgList: [\n      'https://www.mordeo.org/files/uploads/2016/10/Cute-Angry-Birds-Mobile-Wallpaper.jpg',\n      'http://www.glittergraphics.org/img/74/743564/cute-wallpapers-for-mobile.jpg',\n      'https://wallpapercave.com/wp/wp2807409.jpg',\n      'https://preppywallpapers.com/wp-content/uploads/2018/08/Gorgeous-iPhone-Wallpaper-Collection-11.jpg'\n    ],\n    loadQueue: [0, 0, 0, 0]\n  },\n  actions: {\n    loaded: index => {\n      return state => {\n        state.loadQueue[index] = 1\n      }\n    }\n  }\n}\n\nconst Slide = props => {\n  return (\n    <View style={styles.slide}>\n      <Image\n        onLoad={() => {\n          props.loadHandle(props.i)\n        }}\n        style={styles.image}\n        source={{ uri: props.uri }}\n      />\n      {!props.loaded && (\n        <View style={styles.loadingView}>\n          <Image style={styles.loadingImage} source={loading} />\n        </View>\n      )}\n    </View>\n  )\n}\n\nconst Page = () => {\n  const [{ useStore }] = useState(() => Model(SlideSchema))\n  const [state, actions] = useStore()\n  const loadHandle = useCallback((i: number) => {\n    actions.loaded(i)\n  }, [])\n  return (\n    <View style={{ flex: 1 }}>\n      <Swiper\n        loadMinimal\n        loadMinimalSize={1}\n        // index={0}\n        style={styles.wrapper}\n        loop={true}\n      >\n        {state.imgList.map((item, i) => (\n          <Slide\n            loadHandle={loadHandle}\n            uri={item}\n            i={i}\n            key={i}\n            loaded={state.loadQueue[i]}\n          />\n        ))}\n      </Swiper>\n      <View>\n        <Text>Current Loaded Images: {state.loadQueue}</Text>\n      </View>\n    </View>\n  )\n}\n\nexport default Page\n"
  },
  {
    "path": "examples/components/Loop/index.tsx",
    "content": "import React from 'react'\nimport { Text, View, StyleSheet } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nvar styles = StyleSheet.create({\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n})\n\nexport default () => (\n  <Swiper style={styles.wrapper} loop={true} index={0} showsButtons>\n    <View style={styles.slide1}>\n      <Text style={styles.text}>Hello Swiper</Text>\n    </View>\n    <View style={styles.slide2}>\n      <Text style={styles.text}>Beautiful</Text>\n    </View>\n    <View style={styles.slide3}>\n      <Text style={styles.text}>And simple</Text>\n    </View>\n  </Swiper>\n)\n"
  },
  {
    "path": "examples/components/NestSwiper/index.tsx",
    "content": "import React, { useRef, useState } from 'react'\nimport { Text, View, StyleSheet, Dimensions } from 'react-native'\nimport Swiper from 'react-native-swiper'\n\nvar styles = StyleSheet.create({\n  wrapper: {},\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  }\n})\n\nexport default () => {\n  const swiper = useRef(null)\n  const [enable, setEnable] = useState(true)\n  return (\n    <Swiper\n      ref={swiper}\n      containerStyle={styles.wrapper}\n      scrollEnabled={enable}\n      index={0}\n      showsButtons\n    >\n      <View style={{ flex: 1, height: Dimensions.get('window').height }}>\n        <View style={{ height: 300 }}>\n          <Swiper\n            index={1}\n            onTouchStart={e => {\n              setEnable(false)\n            }}\n            onTouchEnd={e => {\n              setEnable(true)\n            }}\n            onMomentumScrollEnd={e => {\n              setEnable(true)\n            }}\n          >\n            <View style={styles.slide1}>\n              <Text style={styles.text}>Nested: Hello Swiper</Text>\n            </View>\n            <View style={styles.slide2}>\n              <Text style={styles.text}>Nested: Beautiful</Text>\n            </View>\n            <View style={styles.slide3}>\n              <Text style={styles.text}>Nested: And simple</Text>\n            </View>\n          </Swiper>\n        </View>\n      </View>\n      <View style={styles.slide2}>\n        <Text style={styles.text}>Beautiful</Text>\n      </View>\n      <View style={styles.slide3}>\n        <Text style={styles.text}>And simple</Text>\n      </View>\n    </Swiper>\n  )\n}\n"
  },
  {
    "path": "examples/components/Phone/index.js",
    "content": "import React, { Component } from 'react'\nimport { View, Image, StatusBar, Dimensions } from 'react-native'\nimport Swiper from 'react-native-swiper'\nconst { width, height } = Dimensions.get('window')\n\nconst styles = {\n  wrapper: {\n    // backgroundColor: '#f00'\n  },\n\n  slide: {\n    flex: 1,\n    backgroundColor: 'transparent'\n  },\n  container: {\n    flex: 1\n  },\n\n  imgBackground: {\n    width,\n    height,\n    backgroundColor: 'transparent',\n    position: 'absolute'\n  },\n\n  image: {\n    width,\n    height\n  }\n}\n\nexport default class extends Component {\n  render() {\n    return (\n      <View style={styles.container}>\n        <StatusBar barStyle=\"light-content\" />\n        <Image source={require('./img/bg.jpg')} style={styles.imgBackground} />\n        <Swiper\n          style={styles.wrapper}\n          dot={\n            <View\n              style={{\n                backgroundColor: 'rgba(255,255,255,.3)',\n                width: 13,\n                height: 13,\n                borderRadius: 7,\n                marginLeft: 7,\n                marginRight: 7\n              }}\n            />\n          }\n          activeDot={\n            <View\n              style={{\n                backgroundColor: '#fff',\n                width: 13,\n                height: 13,\n                borderRadius: 7,\n                marginLeft: 7,\n                marginRight: 7\n              }}\n            />\n          }\n          paginationStyle={{\n            bottom: 70\n          }}\n          loop={false}\n        >\n          <View style={styles.slide}>\n            <Image\n              style={styles.image}\n              source={require('./img/1.jpg')}\n              resizeMode=\"cover\"\n            />\n          </View>\n          <View style={styles.slide}>\n            <Image\n              style={styles.image}\n              source={require('./img/2.jpg')}\n              resizeMode=\"cover\"\n            />\n          </View>\n          <View style={styles.slide}>\n            <Image style={styles.image} source={require('./img/3.jpg')} />\n          </View>\n        </Swiper>\n      </View>\n    )\n  }\n}\n"
  },
  {
    "path": "examples/components/PhotoView/index.js",
    "content": "import React, { Component } from 'react'\nimport {\n  Text,\n  View,\n  Image,\n  TouchableOpacity,\n  TouchableWithoutFeedback,\n  Dimensions\n} from 'react-native'\nimport Swiper from 'react-native-swiper'\nimport PhotoView from 'react-native-photo-view'\nconst { width, height } = Dimensions.get('window')\n\nvar styles = {\n  wrapper: {\n    backgroundColor: '#000',\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  },\n  slide: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center'\n  },\n  photo: {\n    width,\n    height,\n    flex: 1\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  },\n  thumbWrap: {\n    marginTop: 100,\n    borderWidth: 5,\n    borderColor: '#000',\n    flexDirection: 'row'\n  },\n  thumb: {\n    width: 50,\n    height: 50\n  }\n}\n\nconst renderPagination = (index, total, context) => {\n  return (\n    <View\n      style={{\n        position: 'absolute',\n        justifyContent: 'center',\n        alignItems: 'center',\n        top: 25,\n        left: 0,\n        right: 0\n      }}\n    >\n      <View\n        style={{\n          borderRadius: 7,\n          backgroundColor: 'rgba(255,255,255,.15)',\n          padding: 3,\n          paddingHorizontal: 7\n        }}\n      >\n        <Text\n          style={{\n            color: '#fff',\n            fontSize: 14\n          }}\n        >\n          {index + 1} / {total}\n        </Text>\n      </View>\n    </View>\n  )\n}\n\nconst Viewer = props => (\n  <Swiper\n    index={props.index}\n    style={styles.wrapper}\n    renderPagination={renderPagination}\n  >\n    {props.imgList.map((item, i) => (\n      <View key={i} style={styles.slide}>\n        <TouchableWithoutFeedback onPress={e => props.pressHandle()}>\n          <PhotoView\n            source={{ uri: item }}\n            resizeMode=\"contain\"\n            minimumZoomScale={0.5}\n            maximumZoomScale={3}\n            androidScaleType=\"center\"\n            style={styles.photo}\n          />\n        </TouchableWithoutFeedback>\n      </View>\n    ))}\n  </Swiper>\n)\n\nexport default class extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      imgList: [\n        'https://avatars3.githubusercontent.com/u/533360?v=3&s=466',\n        'https://assets-cdn.github.com/images/modules/site/business-hero.jpg',\n        'https://placeholdit.imgix.net/~text?txtsize=29&txt=350%C3%971150&w=350&h=1150'\n      ],\n      showViewer: true,\n      showIndex: 0\n    }\n    this.viewerPressHandle = this.viewerPressHandle.bind(this)\n    this.thumbPressHandle = this.thumbPressHandle.bind(this)\n  }\n  viewerPressHandle() {\n    this.setState({\n      showViewer: false\n    })\n  }\n  thumbPressHandle(i) {\n    this.setState({\n      showIndex: i,\n      showViewer: true\n    })\n  }\n  render() {\n    return (\n      <View style={{ position: 'relative' }}>\n        {this.state.showViewer && (\n          <Viewer\n            index={this.state.showIndex}\n            pressHandle={this.viewerPressHandle}\n            imgList={this.state.imgList}\n          />\n        )}\n        <View style={styles.thumbWrap}>\n          {this.state.imgList.map((item, i) => (\n            <TouchableOpacity key={i} onPress={e => this.thumbPressHandle(i)}>\n              <Image style={styles.thumb} source={{ uri: item }} />\n            </TouchableOpacity>\n          ))}\n        </View>\n      </View>\n    )\n  }\n}\n"
  },
  {
    "path": "examples/components/Swiper/index.js",
    "content": "import React, { Component } from 'react'\nimport { Text, View, Image, Dimensions } from 'react-native'\nimport Swiper from 'react-native-swiper'\nconst { width } = Dimensions.get('window')\n\nconst styles = {\n  container: {\n    flex: 1\n  },\n\n  wrapper: {},\n\n  slide: {\n    flex: 1,\n    justifyContent: 'center',\n    backgroundColor: 'transparent'\n  },\n\n  slide1: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#9DD6EB'\n  },\n\n  slide2: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#97CAE5'\n  },\n\n  slide3: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#92BBD9'\n  },\n\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  },\n\n  image: {\n    width,\n    flex: 1\n  }\n}\n\nexport default class extends Component {\n  render() {\n    return (\n      <View style={styles.container}>\n        <Swiper style={styles.wrapper} height={200} horizontal={false} autoplay>\n          <View style={styles.slide1}>\n            <Text style={styles.text}>Hello Swiper</Text>\n          </View>\n          <View style={styles.slide2}>\n            <Text style={styles.text}>Beautiful</Text>\n          </View>\n          <View style={styles.slide3}>\n            <Text style={styles.text}>And simple</Text>\n          </View>\n        </Swiper>\n\n        <Swiper\n          style={styles.wrapper}\n          height={240}\n          onMomentumScrollEnd={(e, state, context) =>\n            console.log('index:', state.index)\n          }\n          dot={\n            <View\n              style={{\n                backgroundColor: 'rgba(0,0,0,.2)',\n                width: 5,\n                height: 5,\n                borderRadius: 4,\n                marginLeft: 3,\n                marginRight: 3,\n                marginTop: 3,\n                marginBottom: 3\n              }}\n            />\n          }\n          activeDot={\n            <View\n              style={{\n                backgroundColor: '#000',\n                width: 8,\n                height: 8,\n                borderRadius: 4,\n                marginLeft: 3,\n                marginRight: 3,\n                marginTop: 3,\n                marginBottom: 3\n              }}\n            />\n          }\n          paginationStyle={{\n            bottom: -23,\n            left: null,\n            right: 10\n          }}\n          loop\n        >\n          <View\n            style={styles.slide}\n            title={\n              <Text numberOfLines={1}>Aussie tourist dies at Bali hotel</Text>\n            }\n          >\n            <Image\n              resizeMode=\"stretch\"\n              style={styles.image}\n              source={require('./img/1.jpg')}\n            />\n          </View>\n          <View\n            style={styles.slide}\n            title={\n              <Text numberOfLines={1}>Big lie behind Nine’s new show</Text>\n            }\n          >\n            <Image\n              resizeMode=\"stretch\"\n              style={styles.image}\n              source={require('./img/2.jpg')}\n            />\n          </View>\n          <View\n            style={styles.slide}\n            title={<Text numberOfLines={1}>Why Stone split from Garfield</Text>}\n          >\n            <Image\n              resizeMode=\"stretch\"\n              style={styles.image}\n              source={require('./img/3.jpg')}\n            />\n          </View>\n          <View\n            style={styles.slide}\n            title={\n              <Text numberOfLines={1}>Learn from Kim K to land that job</Text>\n            }\n          >\n            <Image\n              resizeMode=\"stretch\"\n              style={styles.image}\n              source={require('./img/4.jpg')}\n            />\n          </View>\n        </Swiper>\n      </View>\n    )\n  }\n}\n"
  },
  {
    "path": "examples/components/SwiperNumber/index.js",
    "content": "import React, { Component } from 'react'\nimport { Text, View, Image, Dimensions } from 'react-native'\nimport Swiper from 'react-native-swiper'\nconst { width } = Dimensions.get('window')\n\nconst styles = {\n  wrapper: {},\n  slide: {\n    flex: 1,\n    justifyContent: 'center',\n    backgroundColor: 'transparent'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 30,\n    fontWeight: 'bold'\n  },\n  image: {\n    width,\n    flex: 1\n  },\n  paginationStyle: {\n    position: 'absolute',\n    bottom: 10,\n    right: 10\n  },\n  paginationText: {\n    color: 'white',\n    fontSize: 20\n  }\n}\n\nconst renderPagination = (index, total, context) => {\n  return (\n    <View style={styles.paginationStyle}>\n      <Text style={{ color: 'grey' }}>\n        <Text style={styles.paginationText}>{index + 1}</Text>/{total}\n      </Text>\n    </View>\n  )\n}\n\nexport default class extends Component {\n  render() {\n    return (\n      <Swiper\n        style={styles.wrapper}\n        renderPagination={renderPagination}\n        loop={false}\n      >\n        <View\n          style={styles.slide}\n          title={\n            <Text numberOfLines={1}>Aussie tourist dies at Bali hotel</Text>\n          }\n        >\n          <Image style={styles.image} source={require('./img/1.jpg')} />\n        </View>\n        <View\n          style={styles.slide}\n          title={<Text numberOfLines={1}>Big lie behind Nine’s new show</Text>}\n        >\n          <Image style={styles.image} source={require('./img/2.jpg')} />\n        </View>\n        <View\n          style={styles.slide}\n          title={<Text numberOfLines={1}>Why Stone split from Garfield</Text>}\n        >\n          <Image style={styles.image} source={require('./img/3.jpg')} />\n        </View>\n        <View\n          style={styles.slide}\n          title={\n            <Text numberOfLines={1}>Learn from Kim K to land that job</Text>\n          }\n        >\n          <Image style={styles.image} source={require('./img/4.jpg')} />\n        </View>\n      </Swiper>\n    )\n  }\n}\n"
  },
  {
    "path": "examples/e2e/AutoPlay.spec.js",
    "content": "describe('AutoPlay', () => {\n  beforeEach(async () => {\n    await device.reloadReactNative()\n    await element(by.id('AutoPlay')).tap()\n  })\n\n  it('should execute scrollBy(1) every 2.5s', async () => {\n    // Initial with first swiper\n    await expect(element(by.id('Hello'))).toBeVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n    await expect(element(by.id('Simple'))).toBeNotVisible()\n\n    // after 2.5s => second swiper\n    await new Promise(r => setTimeout(r, 2500))\n\n    await expect(element(by.id('Hello'))).toBeNotVisible()\n    await expect(element(by.id('Beautiful'))).toBeVisible()\n    await expect(element(by.id('Simple'))).toBeNotVisible()\n\n    // after 5s => second swiper\n    await new Promise(r => setTimeout(r, 2500))\n\n    await expect(element(by.id('Hello'))).toBeNotVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n    await expect(element(by.id('Simple'))).toBeVisible()\n\n    // after 7.5s => second swiper\n    await new Promise(r => setTimeout(r, 2500))\n\n    await expect(element(by.id('Hello'))).toBeVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n    await expect(element(by.id('Simple'))).toBeNotVisible()\n  })\n})\n"
  },
  {
    "path": "examples/e2e/Basic.spec.js",
    "content": "describe('Basic', () => {\n  beforeEach(async () => {\n    await device.reloadReactNative()\n    await element(by.id('Basic')).tap()\n  })\n\n  it('should have Basic swiper', async () => {\n    await expect(element(by.id('Hello'))).toBeVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n    await expect(element(by.id('Simple'))).toBeNotVisible()\n  })\n\n  it('should be the same swiper after swipe right when loop={false}', async () => {\n    await element(by.id('Hello')).swipe('right')\n    await expect(element(by.id('Hello'))).toBeVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n  })\n\n  it('should be Beautiful swiper after swipe left', async () => {\n    await element(by.id('Hello')).swipe('left')\n    await expect(element(by.id('Hello'))).toBeNotVisible()\n    await expect(element(by.id('Beautiful'))).toBeVisible()\n  })\n\n  it('should be Simple swiper after swipe left twice', async () => {\n    await element(by.id('Hello')).swipe('left')\n    await element(by.id('Beautiful')).swipe('left')\n    await expect(element(by.id('Hello'))).toBeNotVisible()\n    await expect(element(by.id('Beautiful'))).toBeNotVisible()\n    await expect(element(by.id('Simple'))).toBeVisible()\n  })\n})\n"
  },
  {
    "path": "examples/e2e/NestSwiper.spec.js",
    "content": "describe('AutoPlay', () => {\n  beforeEach(async () => {\n    await device.reloadReactNative()\n    await element(by.id('NestSwiper')).tap()\n  })\n}\n"
  },
  {
    "path": "examples/e2e/config.json",
    "content": "{\n    \"setupFilesAfterEnv\": [\"./init.js\"],\n    \"testEnvironment\": \"node\",\n    \"reporters\": [\"detox/runners/jest/streamlineReporter\"],\n    \"verbose\": true\n}\n"
  },
  {
    "path": "examples/e2e/init.js",
    "content": "const detox = require('detox');\nconst config = require('../package.json').detox;\nconst adapter = require('detox/runners/jest/adapter');\nconst specReporter = require('detox/runners/jest/specReporter');\n\n// Set the default timeout\njest.setTimeout(120000);\njasmine.getEnv().addReporter(adapter);\n\n// This takes care of generating status logs on a per-spec basis. By default, jest only reports at file-level.\n// This is strictly optional.\njasmine.getEnv().addReporter(specReporter);\n\nbeforeAll(async () => {\n  await detox.init(config);\n});\n\nbeforeEach(async () => {\n  await adapter.beforeEach();\n});\n\nafterAll(async () => {\n  await adapter.afterAll();\n  await detox.cleanup();\n});\n"
  },
  {
    "path": "examples/index.tsx",
    "content": "/**\n * @format\n */\nimport React from 'react'\nimport {\n  AppRegistry,\n  Text,\n  SafeAreaView,\n  View,\n  StyleSheet,\n  FlatList,\n  TouchableOpacity\n} from 'react-native'\nimport { createStackNavigator } from 'react-navigation-stack'\nimport { name as appName } from './app.json'\n\nimport AutoPlay from './components/AutoPlay'\nimport Basic from './components/Basic' // Only update index when scrollEnd\nimport DisableButton from './components/DisableButton'\nimport Loop from './components/Loop'\nimport Dynamic from './components/Dynamic'\nimport LoadMinimal from './components/LoadMinimal' // flicker existing when shift from last to first on Android (or last to first)\nimport NestSwiper from './components/NestSwiper'\nimport Phone from './components/Phone'\n// import PhotoView from './components/PhotoView/'; // not working\nimport Swiper from './components/Swiper' // working but no title displayed, direction vertical not work well on android\nimport SwiperNumber from './components/SwiperNumber' // working but no title displayed\nimport { createAppContainer } from 'react-navigation'\n\nconst DATA = [\n  {\n    name: 'AutoPlay'\n  },\n  {\n    name: 'Basic'\n  },\n  {\n    name: 'DisableButton'\n  },\n  {\n    name: 'Dynamic'\n  },\n  {\n    name: 'Loop'\n  },\n  {\n    name: 'LoadMinimal'\n  },\n  {\n    name: 'NestSwiper'\n  },\n  {\n    name: 'Phone'\n  },\n  {\n    name: 'Swiper'\n  },\n  {\n    name: 'SwiperNumber'\n  }\n]\n\nfunction Item({ title, navigation }) {\n  return (\n    <TouchableOpacity onPress={() => navigation.navigate(title)}>\n      <View testID={title} style={styles.item}>\n        <Text style={styles.title}>{title}</Text>\n      </View>\n    </TouchableOpacity>\n  )\n}\n\nconst Home = ({ navigation }) => {\n  return (\n    <SafeAreaView style={{ flex: 1 }}>\n      <FlatList\n        data={DATA}\n        renderItem={({ item }) => (\n          <Item navigation={navigation} title={item.name}></Item>\n        )}\n        keyExtractor={item => item.name}\n      />\n    </SafeAreaView>\n  )\n}\n\nconst AppNavigator = createStackNavigator(\n  {\n    Home,\n    AutoPlay,\n    Basic,\n    DisableButton,\n    Loop,\n    Dynamic,\n    LoadMinimal,\n    NestSwiper,\n    Phone,\n    Swiper,\n    SwiperNumber\n  },\n  {\n    initialRouteName: 'Home'\n  }\n)\n\nconst App = createAppContainer(AppNavigator)\n\nconst styles = StyleSheet.create({\n  item: {\n    backgroundColor: '#ede',\n    padding: 16,\n    marginVertical: 8,\n    marginHorizontal: 16\n  },\n  title: {\n    fontSize: 24\n  }\n})\n\nAppRegistry.registerComponent(appName, () => App)\n"
  },
  {
    "path": "examples/ios/Podfile",
    "content": "platform :ios, '9.0'\nrequire_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'\n\ntarget 'examples' do\n  # Pods for examples\n  pod 'React', :path => '../node_modules/react-native/'\n  pod 'React-Core', :path => '../node_modules/react-native/React'\n  pod 'React-DevSupport', :path => '../node_modules/react-native/React'\n  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'\n  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'\n  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'\n  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'\n  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'\n  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'\n  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'\n  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'\n  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'\n  pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'\n\n  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'\n  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'\n  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'\n  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'\n  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'\n\n  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'\n  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'\n  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'\n\n  target 'examplesTests' do\n    inherit! :search_paths\n    # Pods for testing\n  end\n\n  use_native_modules!\nend\n\ntarget 'examples-tvOS' do\n  # Pods for examples-tvOS\n\n  target 'examples-tvOSTests' do\n    inherit! :search_paths\n    # Pods for testing\n  end\n\nend\n"
  },
  {
    "path": "examples/ios/examples/AppDelegate.h",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <React/RCTBridgeDelegate.h>\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>\n\n@property (nonatomic, strong) UIWindow *window;\n\n@end\n"
  },
  {
    "path": "examples/ios/examples/AppDelegate.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import \"AppDelegate.h\"\n\n#import <React/RCTBridge.h>\n#import <React/RCTBundleURLProvider.h>\n#import <React/RCTRootView.h>\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];\n  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge\n                                                   moduleName:@\"examples\"\n                                            initialProperties:nil];\n\n  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];\n\n  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n  UIViewController *rootViewController = [UIViewController new];\n  rootViewController.view = rootView;\n  self.window.rootViewController = rootViewController;\n  [self.window makeKeyAndVisible];\n  return YES;\n}\n\n- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n{\n#if DEBUG\n  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\" fallbackResource:nil];\n#else\n  return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n#endif\n}\n\n@end\n"
  },
  {
    "path": "examples/ios/examples/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7702\" systemVersion=\"14D136\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7701\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Powered by React Native\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"examples\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "examples/ios/examples/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "examples/ios/examples/Images.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "examples/ios/examples/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDisplayName</key>\n\t<string>examples</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string></string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "examples/ios/examples/main.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <UIKit/UIKit.h>\n\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n  @autoreleasepool {\n    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n  }\n}\n"
  },
  {
    "path": "examples/ios/examples-tvOS/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSExceptionDomains</key>\n\t\t<dict>\n\t\t\t<key>localhost</key>\n\t\t\t<dict>\n\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string></string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "examples/ios/examples-tvOSTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "examples/ios/examples.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t00E356F31AD99517003FC87E /* examplesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* examplesTests.m */; };\n\t\t073B8355E279210B358A0178 /* libPods-examplesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C4131D052E7D6F8A4D054A8 /* libPods-examplesTests.a */; };\n\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };\n\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };\n\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };\n\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };\n\t\t2DCD954D1E0B4F2C00145EB5 /* examplesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* examplesTests.m */; };\n\t\t5F23F3D973322DEDD3AC231D /* libPods-examples-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8593F66191A8FFA04628E590 /* libPods-examples-tvOS.a */; };\n\t\tACA2E00B7D57720E802A98DA /* libPods-examples.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C64610AFBA96E83FDDA6BCF5 /* libPods-examples.a */; };\n\t\tF78C1DD9D4E6AF9D5A195B5D /* libPods-examples-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AE58C94385B3990A15FEBEAB /* libPods-examples-tvOSTests.a */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 13B07F861A680F5B00A75B9A;\n\t\t\tremoteInfo = examples;\n\t\t};\n\t\t2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;\n\t\t\tremoteInfo = \"examples-tvOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t005A27D0448C5695A79AB311 /* Pods-examples-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples-tvOSTests.release.xcconfig\"; path = \"Target Support Files/Pods-examples-tvOSTests/Pods-examples-tvOSTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = \"<group>\"; };\n\t\t00E356EE1AD99517003FC87E /* examplesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = examplesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t00E356F21AD99517003FC87E /* examplesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = examplesTests.m; sourceTree = \"<group>\"; };\n\t\t13B07F961A680F5B00A75B9A /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = examples/AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = examples/AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\t13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = examples/Images.xcassets; sourceTree = \"<group>\"; };\n\t\t13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = examples/Info.plist; sourceTree = \"<group>\"; };\n\t\t13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = examples/main.m; sourceTree = \"<group>\"; };\n\t\t2D02E47B1E0B4A5D006451C7 /* examples-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"examples-tvOS.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t2D02E4901E0B4A5D006451C7 /* examples-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"examples-tvOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t33E1C601310E71BFA99167B2 /* Pods-examples-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples-tvOS.debug.xcconfig\"; path = \"Target Support Files/Pods-examples-tvOS/Pods-examples-tvOS.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t60FA21D121821EE076453629 /* Pods-examples-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples-tvOSTests.debug.xcconfig\"; path = \"Target Support Files/Pods-examples-tvOSTests/Pods-examples-tvOSTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t630CDFB4166145771886AB02 /* Pods-examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples.debug.xcconfig\"; path = \"Target Support Files/Pods-examples/Pods-examples.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t7C4131D052E7D6F8A4D054A8 /* libPods-examplesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-examplesTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t8593F66191A8FFA04628E590 /* libPods-examples-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-examples-tvOS.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t92B5115BF52F24D6F9494D7E /* Pods-examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples.release.xcconfig\"; path = \"Target Support Files/Pods-examples/Pods-examples.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tA8CCE8BE1CFAF9D3C9A30B40 /* Pods-examplesTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examplesTests.debug.xcconfig\"; path = \"Target Support Files/Pods-examplesTests/Pods-examplesTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tA8F6826D16AA3CAAF25E7693 /* Pods-examples-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examples-tvOS.release.xcconfig\"; path = \"Target Support Files/Pods-examples-tvOS/Pods-examples-tvOS.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tAE58C94385B3990A15FEBEAB /* libPods-examples-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-examples-tvOSTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC64610AFBA96E83FDDA6BCF5 /* libPods-examples.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-examples.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD75E96F6BB25B7F4475E8247 /* Pods-examplesTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-examplesTests.release.xcconfig\"; path = \"Target Support Files/Pods-examplesTests/Pods-examplesTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };\n\t\tED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t00E356EB1AD99517003FC87E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t073B8355E279210B358A0178 /* libPods-examplesTests.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tACA2E00B7D57720E802A98DA /* libPods-examples.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t5F23F3D973322DEDD3AC231D /* libPods-examples-tvOS.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tF78C1DD9D4E6AF9D5A195B5D /* libPods-examples-tvOSTests.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t00E356EF1AD99517003FC87E /* examplesTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F21AD99517003FC87E /* examplesTests.m */,\n\t\t\t\t00E356F01AD99517003FC87E /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = examplesTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t00E356F01AD99517003FC87E /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t00E356F11AD99517003FC87E /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t13B07FAE1A68108700A75B9A /* examples */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t008F07F21AC5B25A0029DE68 /* main.jsbundle */,\n\t\t\t\t13B07FAF1A68108700A75B9A /* AppDelegate.h */,\n\t\t\t\t13B07FB01A68108700A75B9A /* AppDelegate.m */,\n\t\t\t\t13B07FB51A68108700A75B9A /* Images.xcassets */,\n\t\t\t\t13B07FB61A68108700A75B9A /* Info.plist */,\n\t\t\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */,\n\t\t\t\t13B07FB71A68108700A75B9A /* main.m */,\n\t\t\t);\n\t\t\tname = examples;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tED297162215061F000B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\tED2971642150620600B7C4FE /* JavaScriptCore.framework */,\n\t\t\t\tC64610AFBA96E83FDDA6BCF5 /* libPods-examples.a */,\n\t\t\t\t8593F66191A8FFA04628E590 /* libPods-examples-tvOS.a */,\n\t\t\t\tAE58C94385B3990A15FEBEAB /* libPods-examples-tvOSTests.a */,\n\t\t\t\t7C4131D052E7D6F8A4D054A8 /* libPods-examplesTests.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t8006AD69FE8EAFA8CF40E998 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t630CDFB4166145771886AB02 /* Pods-examples.debug.xcconfig */,\n\t\t\t\t92B5115BF52F24D6F9494D7E /* Pods-examples.release.xcconfig */,\n\t\t\t\t33E1C601310E71BFA99167B2 /* Pods-examples-tvOS.debug.xcconfig */,\n\t\t\t\tA8F6826D16AA3CAAF25E7693 /* Pods-examples-tvOS.release.xcconfig */,\n\t\t\t\t60FA21D121821EE076453629 /* Pods-examples-tvOSTests.debug.xcconfig */,\n\t\t\t\t005A27D0448C5695A79AB311 /* Pods-examples-tvOSTests.release.xcconfig */,\n\t\t\t\tA8CCE8BE1CFAF9D3C9A30B40 /* Pods-examplesTests.debug.xcconfig */,\n\t\t\t\tD75E96F6BB25B7F4475E8247 /* Pods-examplesTests.release.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tpath = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t832341AE1AAA6A7D00B99B32 /* Libraries */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Libraries;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t83CBB9F61A601CBA00E9B192 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FAE1A68108700A75B9A /* examples */,\n\t\t\t\t832341AE1AAA6A7D00B99B32 /* Libraries */,\n\t\t\t\t00E356EF1AD99517003FC87E /* examplesTests */,\n\t\t\t\t83CBBA001A601CBA00E9B192 /* Products */,\n\t\t\t\t2D16E6871FA4F8E400B85C8A /* Frameworks */,\n\t\t\t\t8006AD69FE8EAFA8CF40E998 /* Pods */,\n\t\t\t);\n\t\t\tindentWidth = 2;\n\t\t\tsourceTree = \"<group>\";\n\t\t\ttabWidth = 2;\n\t\t\tusesTabs = 0;\n\t\t};\n\t\t83CBBA001A601CBA00E9B192 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07F961A680F5B00A75B9A /* examples.app */,\n\t\t\t\t00E356EE1AD99517003FC87E /* examplesTests.xctest */,\n\t\t\t\t2D02E47B1E0B4A5D006451C7 /* examples-tvOS.app */,\n\t\t\t\t2D02E4901E0B4A5D006451C7 /* examples-tvOSTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t00E356ED1AD99517003FC87E /* examplesTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"examplesTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t1E3654ADFD28571C966571ED /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t00E356EA1AD99517003FC87E /* Sources */,\n\t\t\t\t00E356EB1AD99517003FC87E /* Frameworks */,\n\t\t\t\t00E356EC1AD99517003FC87E /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = examplesTests;\n\t\t\tproductName = examplesTests;\n\t\t\tproductReference = 00E356EE1AD99517003FC87E /* examplesTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t13B07F861A680F5B00A75B9A /* examples */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"examples\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t88A3D288572FEFD4D2BECAC5 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tFD10A7F022414F080027D42C /* Start Packager */,\n\t\t\t\t13B07F871A680F5B00A75B9A /* Sources */,\n\t\t\t\t13B07F8C1A680F5B00A75B9A /* Frameworks */,\n\t\t\t\t13B07F8E1A680F5B00A75B9A /* Resources */,\n\t\t\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = examples;\n\t\t\tproductName = examples;\n\t\t\tproductReference = 13B07F961A680F5B00A75B9A /* examples.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E47A1E0B4A5D006451C7 /* examples-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"examples-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t43FFDE46011B0B8541D10623 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tFD10A7F122414F3F0027D42C /* Start Packager */,\n\t\t\t\t2D02E4771E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E4781E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E4791E0B4A5D006451C7 /* Resources */,\n\t\t\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"examples-tvOS\";\n\t\t\tproductName = \"examples-tvOS\";\n\t\t\tproductReference = 2D02E47B1E0B4A5D006451C7 /* examples-tvOS.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t2D02E48F1E0B4A5D006451C7 /* examples-tvOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"examples-tvOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tF563263ABC39B3FF843D3A78 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t2D02E48C1E0B4A5D006451C7 /* Sources */,\n\t\t\t\t2D02E48D1E0B4A5D006451C7 /* Frameworks */,\n\t\t\t\t2D02E48E1E0B4A5D006451C7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"examples-tvOSTests\";\n\t\t\tproductName = \"examples-tvOSTests\";\n\t\t\tproductReference = 2D02E4901E0B4A5D006451C7 /* examples-tvOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t83CBB9F71A601CBA00E9B192 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = Facebook;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t00E356ED1AD99517003FC87E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t\tTestTargetID = 13B07F861A680F5B00A75B9A;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E47A1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t2D02E48F1E0B4A5D006451C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = 2D02E47A1E0B4A5D006451C7;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"examples\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 83CBB9F61A601CBA00E9B192;\n\t\t\tproductRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t13B07F861A680F5B00A75B9A /* examples */,\n\t\t\t\t00E356ED1AD99517003FC87E /* examplesTests */,\n\t\t\t\t2D02E47A1E0B4A5D006451C7 /* examples-tvOS */,\n\t\t\t\t2D02E48F1E0B4A5D006451C7 /* examples-tvOSTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t00E356EC1AD99517003FC87E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F8E1A680F5B00A75B9A /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,\n\t\t\t\t13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4791E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48E1E0B4A5D006451C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native code and images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n\t\t1E3654ADFD28571C966571ED /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-examplesTests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Bundle React Native Code And Images\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export NODE_BINARY=node\\n../node_modules/react-native/scripts/react-native-xcode.sh\";\n\t\t};\n\t\t43FFDE46011B0B8541D10623 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-examples-tvOS-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t88A3D288572FEFD4D2BECAC5 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-examples-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tF563263ABC39B3FF843D3A78 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-examples-tvOSTests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tFD10A7F022414F080027D42C /* Start Packager */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Start Packager\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > \\\"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\\\"\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n    if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n      echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n      exit 2\\n    fi\\n  else\\n    open \\\"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\\\" || echo \\\"Can't start packager automatically\\\"\\n  fi\\nfi\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tFD10A7F122414F3F0027D42C /* Start Packager */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Start Packager\";\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > \\\"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\\\"\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n    if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n      echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n      exit 2\\n    fi\\n  else\\n    open \\\"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\\\" || echo \\\"Can't start packager automatically\\\"\\n  fi\\nfi\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t00E356EA1AD99517003FC87E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t00E356F31AD99517003FC87E /* examplesTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t13B07F871A680F5B00A75B9A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,\n\t\t\t\t13B07FC11A68108700A75B9A /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E4771E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,\n\t\t\t\t2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t2D02E48C1E0B4A5D006451C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2DCD954D1E0B4F2C00145EB5 /* examplesTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t00E356F51AD99517003FC87E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 13B07F861A680F5B00A75B9A /* examples */;\n\t\t\ttargetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;\n\t\t};\n\t\t2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 2D02E47A1E0B4A5D006451C7 /* examples-tvOS */;\n\t\t\ttargetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t13B07FB21A68108700A75B9A /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tpath = examples;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t00E356F61AD99517003FC87E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = A8CCE8BE1CFAF9D3C9A30B40 /* Pods-examplesTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = examplesTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/examples.app/examples\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t00E356F71AD99517003FC87E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = D75E96F6BB25B7F4475E8247 /* Pods-examplesTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tINFOPLIST_FILE = examplesTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/examples.app/examples\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t13B07F941A680F5B00A75B9A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 630CDFB4166145771886AB02 /* Pods-examples.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEAD_CODE_STRIPPING = NO;\n\t\t\t\tINFOPLIST_FILE = examples/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = examples;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t13B07F951A680F5B00A75B9A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 92B5115BF52F24D6F9494D7E /* Pods-examples.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tINFOPLIST_FILE = examples/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = examples;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4971E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 33E1C601310E71BFA99167B2 /* Pods-examples-tvOS.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"examples-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.examples-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E4981E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = A8F6826D16AA3CAAF25E7693 /* Pods-examples-tvOS.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"examples-tvOS/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.examples-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 9.2;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2D02E4991E0B4A5E006451C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 60FA21D121821EE076453629 /* Pods-examples-tvOSTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"examples-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.examples-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/examples-tvOS.app/examples-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2D02E49A1E0B4A5E006451C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 005A27D0448C5695A79AB311 /* Pods-examples-tvOSTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"examples-tvOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"-ObjC\",\n\t\t\t\t\t\"-lc++\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.facebook.REACT.examples-tvOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/examples-tvOS.app/examples-tvOS\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 10.1;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t83CBBA201A601CBA00E9B192 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t83CBBA211A601CBA00E9B192 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget \"examplesTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t00E356F61AD99517003FC87E /* Debug */,\n\t\t\t\t00E356F71AD99517003FC87E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget \"examples\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t13B07F941A680F5B00A75B9A /* Debug */,\n\t\t\t\t13B07F951A680F5B00A75B9A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"examples-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4971E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E4981E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget \"examples-tvOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2D02E4991E0B4A5E006451C7 /* Debug */,\n\t\t\t\t2D02E49A1E0B4A5E006451C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject \"examples\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t83CBBA201A601CBA00E9B192 /* Debug */,\n\t\t\t\t83CBBA211A601CBA00E9B192 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;\n}\n"
  },
  {
    "path": "examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"NO\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D2A28121D9B038B00D4039D\"\n               BuildableName = \"libReact.a\"\n               BlueprintName = \"React-tvOS\"\n               ReferencedContainer = \"container:../node_modules/react-native/React/React.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n               BuildableName = \"examples-tvOS.app\"\n               BlueprintName = \"examples-tvOS\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E48F1E0B4A5D006451C7\"\n               BuildableName = \"examples-tvOSTests.xctest\"\n               BlueprintName = \"examples-tvOSTests\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"2D02E48F1E0B4A5D006451C7\"\n               BuildableName = \"examples-tvOSTests.xctest\"\n               BlueprintName = \"examples-tvOSTests\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"examples-tvOS.app\"\n            BlueprintName = \"examples-tvOS\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"examples-tvOS.app\"\n            BlueprintName = \"examples-tvOS\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"2D02E47A1E0B4A5D006451C7\"\n            BuildableName = \"examples-tvOS.app\"\n            BlueprintName = \"examples-tvOS\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0940\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"NO\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"83CBBA2D1A601D0E00E9B192\"\n               BuildableName = \"libReact.a\"\n               BlueprintName = \"React\"\n               ReferencedContainer = \"container:../node_modules/react-native/React/React.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n               BuildableName = \"examples.app\"\n               BlueprintName = \"examples\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"00E356ED1AD99517003FC87E\"\n               BuildableName = \"examplesTests.xctest\"\n               BlueprintName = \"examplesTests\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"00E356ED1AD99517003FC87E\"\n               BuildableName = \"examplesTests.xctest\"\n               BlueprintName = \"examplesTests\"\n               ReferencedContainer = \"container:examples.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"examples.app\"\n            BlueprintName = \"examples\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"examples.app\"\n            BlueprintName = \"examples\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"13B07F861A680F5B00A75B9A\"\n            BuildableName = \"examples.app\"\n            BlueprintName = \"examples\"\n            ReferencedContainer = \"container:examples.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "examples/ios/examples.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:examples.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Pods/Pods.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "examples/ios/examplesTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "examples/ios/examplesTests/examplesTests.m",
    "content": "/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n#import <React/RCTLog.h>\n#import <React/RCTRootView.h>\n\n#define TIMEOUT_SECONDS 600\n#define TEXT_TO_LOOK_FOR @\"Welcome to React Native!\"\n\n@interface examplesTests : XCTestCase\n\n@end\n\n@implementation examplesTests\n\n- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test\n{\n  if (test(view)) {\n    return YES;\n  }\n  for (UIView *subview in [view subviews]) {\n    if ([self findSubviewInView:subview matching:test]) {\n      return YES;\n    }\n  }\n  return NO;\n}\n\n- (void)testRendersWelcomeScreen\n{\n  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];\n  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];\n  BOOL foundElement = NO;\n\n  __block NSString *redboxError = nil;\n  RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {\n    if (level >= RCTLogLevelError) {\n      redboxError = message;\n    }\n  });\n\n  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {\n    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];\n\n    foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {\n      if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {\n        return YES;\n      }\n      return NO;\n    }];\n  }\n\n  RCTSetLogFunction(RCTDefaultLogFunction);\n\n  XCTAssertNil(redboxError, @\"RedBox error: %@\", redboxError);\n  XCTAssertTrue(foundElement, @\"Couldn't find element with text '%@' in %d seconds\", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);\n}\n\n\n@end\n"
  },
  {
    "path": "examples/metro.config.js",
    "content": "/**\n * Metro configuration for React Native\n * https://github.com/facebook/react-native\n *\n * @format\n */\n\nmodule.exports = {\n  transformer: {\n    getTransformOptions: async () => ({\n      transform: {\n        experimentalImportSupport: false,\n        inlineRequires: false,\n      },\n    }),\n  },\n};\n"
  },
  {
    "path": "examples/package.json",
    "content": "{\n  \"name\": \"examples\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"rm -rf node_modules/react-native-swiper/examples && react-native start || react-native start\",\n    \"test\": \"jest\",\n    \"lint\": \"eslint .\"\n  },\n  \"dependencies\": {\n    \"react\": \"16.8.6\",\n    \"react-model\": \"^3.0.0\",\n    \"react-native\": \"0.60.5\",\n    \"react-native-gesture-handler\": \"^1.4.1\",\n    \"react-native-reanimated\": \"^1.3.0\",\n    \"react-native-screens\": \"^1.0.0-alpha.23\",\n    \"react-native-swiper\": \"../\",\n    \"react-navigation\": \"^4.0.10\",\n    \"react-navigation-stack\": \"^1.9.3\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.6.0\",\n    \"@babel/runtime\": \"^7.6.0\",\n    \"@react-native-community/eslint-config\": \"^0.0.5\",\n    \"@types/react\": \"^16.9.2\",\n    \"@types/react-native\": \"^0.60.15\",\n    \"babel-jest\": \"^24.9.0\",\n    \"detox\": \"^14.3.4\",\n    \"eslint\": \"^6.4.0\",\n    \"jest\": \"^24.9.0\",\n    \"metro-react-native-babel-preset\": \"^0.56.0\",\n    \"react-test-renderer\": \"16.8.6\"\n  },\n  \"jest\": {\n    \"preset\": \"react-native\"\n  },\n  \"detox\": {\n    \"test-runner\": \"jest\",\n    \"configurations\": {\n      \"ios.sim.debug\": {\n        \"binaryPath\": \"ios/build/examples/Build/Products/Debug-iphonesimulator/examples.app\",\n        \"build\": \"xcodebuild -workspace ios/examples.xcworkspace -scheme examples -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build\",\n        \"type\": \"ios.simulator\",\n        \"name\": \"iPhone 7\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "index.d.ts",
    "content": "import {\n  ViewStyle,\n  StyleProp,\n  NativeSyntheticEvent,\n  NativeScrollEvent,\n  ScrollViewProps\n} from 'react-native'\nimport { Component } from 'react'\n\ndeclare module 'react-native-swiper' {\n  interface SwiperState {\n    autoplayEnd: false\n    loopJump: false\n    width: number\n    height: number\n    offset: {\n      x: number\n      y: number\n    }\n    total: number\n    index: number\n    dir: 'x' | 'y'\n  }\n\n  interface SwiperInternals extends SwiperState {\n    isScrolling: boolean\n  }\n\n  interface SwiperProps\n    extends Omit<ScrollViewProps, 'onScrollBeginDrag' | 'onMomentumScrollEnd'> {\n    // Basic\n    // If true, the scroll view's children are arranged horizontally in a row instead of vertically in a column.\n    horizontal?: boolean\n    // If no specify default enable fullscreen mode by flex: 1.\n    loop?: boolean\n    // Index number of initial slide.\n    index?: number\n    // Set to true make control buttons visible.\n    showsButtons?: boolean\n    // Set to false to disable continuous loop mode.\n    autoplay?: boolean\n    // Called with the new index when the user swiped\n    onIndexChanged?: (index: number) => void\n\n    // Custom basic style & content\n    // Set to true enable auto play mode.\n    width?: number\n    // If no specify default fullscreen mode by flex: 1.\n    height?: number\n    // See default style in source.\n    style?: StyleProp<ViewStyle>\n    // Customize the View container.\n    containerStyle?: StyleProp<ViewStyle>\n    // Only load current index slide , loadMinimalSize slides before and after.\n    loadMinimal?: boolean\n    // see loadMinimal\n    loadMinimalSize?: number\n    // Custom loader to display when slides aren't loaded\n    loadMinimalLoader?: React.ReactNode\n\n    // Pagination\n    // Set to true make pagination visible.\n    showsPagination?: boolean\n    // Custom styles will merge with the default styles.\n    paginationStyle?: StyleProp<ViewStyle>\n    // Complete control how to render pagination with three params (index, total, context) ref to this.state.index / this.state.total / this, For example: show numbers instead of dots.\n    renderPagination?: (\n      index: number,\n      total: number,\n      swiper: Swiper\n    ) => React.ReactNode\n    // Allow custom the dot element.\n    dot?: React.ReactNode\n    // Allow custom the active-dot element.\n    activeDot?: React.ReactNode\n    // Allow custom the active-dot element.\n    dotStyle?: StyleProp<ViewStyle>\n    // Allow custom the active-dot element.\n    dotColor?: string\n    // Allow custom the active-dot element.\n    activeDotColor?: string\n    // Allow custom the active-dot element.\n    activeDotStyle?: StyleProp<ViewStyle>\n\n    // Autoplay\n    // Delay between auto play transitions (in second).\n    autoplayTimeout?: number\n    // Cycle direction control.\n    autoplayDirection?: boolean\n\n    // Control buttons\n    // Set to true make control buttons visible.\n    buttonWrapperStyle?: StyleProp<ViewStyle>\n    // Allow custom the next button.\n    nextButton?: React.ReactNode\n    // Allow custom the prev button.\n    prevButton?: React.ReactNode\n\n    // Supported ScrollResponder\n    // When animation begins after letting up\n    onScrollBeginDrag?: (\n      e: NativeSyntheticEvent<NativeScrollEvent>,\n      state: SwiperInternals,\n      swiper: Swiper\n    ) => void\n    // Makes no sense why this occurs first during bounce\n    onMomentumScrollEnd?: (\n      e: NativeSyntheticEvent<NativeScrollEvent>,\n      state: SwiperInternals,\n      swiper: Swiper\n    ) => void\n    // Immediately after onMomentumScrollEnd\n    onTouchStartCapture?: any\n    // Same, but bubble phase\n    onTouchStart?: any\n    // You could hold the touch start for a long time\n    onTouchEnd?: any\n    // When lifting up - you could pause forever before * lifting\n    onResponderRelease?: any\n\n    // If true, the scroll view stops on multiples of the scroll view's size when scrolling. This can be used for\n    // horizontal pagination.\n    pagingEnabled?: boolean\n    // Set to true if you want to show horizontal scroll bar.\n    showsHorizontalScrollIndicator?: boolean\n    // Set to true if you want to show vertical scroll bar.\n    showsVerticalScrollIndicator?: boolean\n    // If true, the scroll view bounces when it reaches the end of the content if the content is larger then the\n    // scroll view along the axis of the scroll direction. If false, it disables all bouncing even if the\n    // alwaysBounce* props are true.\n    bounces?: boolean\n    // If true, the scroll view scrolls to top when the status bar is tapped.\n    scrollsToTop?: boolean\n    // If true, offscreen child views (whose overflow value is hidden) are removed from their native backing\n    // superview when offscreen. This canimprove scrolling performance on long lists.\n    removeClippedSubviews?: boolean\n    // Set to true if you need adjust content insets automation.\n    automaticallyAdjustContentInsets?: boolean\n    // Enables/Disables swiping\n    scrollEnabled?: boolean\n  }\n\n  export default class Swiper extends Component<SwiperProps, SwiperState> {\n    scrollBy: (index?: number, animated?: boolean) => void\n    scrollTo: (index: number, animated?: boolean) => void\n  }\n}\n"
  },
  {
    "path": "index.js",
    "content": "import Swiper from './src/'\n/**\n * Resolve ES6 and CommonJS compatibility issues\n * 1. CommonJS code\n *    const Swiper = require('react-native-swiper');\n * 2. ES6 code\n *    import Swiper from 'react-native-swiper';\n */\nmodule.exports = Swiper;\nmodule.exports.default = Swiper;\n"
  },
  {
    "path": "index.js.flow",
    "content": "// @flow strict\n\n// eslint-disable-next-line\nimport { Component, type Node } from 'react';\n\ndeclare module 'react-native-swiper' {\n  // eslint-disable-next-line no-undef\n  declare export type SwiperProps = $ReadOnly<{|\n    // Basic\n    // If true, the scroll view's children are arranged horizontally in a row instead of vertically in a column.\n    horizontal?: ?boolean,\n    // If no specify default enable fullscreen mode by flex: 1.\n    loop?: ?boolean,\n    // Index number of initial slide.\n    index?: ?number,\n    // Set to true make control buttons visible.\n    showsButtons?: ?boolean,\n    // Set to false to disable continuous loop mode.\n    autoplay?: ?boolean,\n    // Called with the new index when the user swiped\n    onIndexChanged?: ?(index?: number) => void,\n\n    // Custom basic style & content\n    // Set to true enable auto play mode.\n    width?: ?number,\n    // If no specify default fullscreen mode by flex: 1.\n    height?: ?number,\n    // See default style in source.\n    style?: ?Object,\n    // Only load current index slide , loadMinimalSize slides before and after.\n    loadMinimal?: ?boolean,\n    // see loadMinimal\n    loadMinimalSize?: ?boolean,\n    // Custom loader to display when slides aren't loaded\n    loadMinimalLoader?: ?boolean,\n\n    // Pagination\n    // Set to true make pagination visible.\n    showsPagination?: ?boolean,\n    // Custom styles will merge with the default styles.\n    paginationStyle?: ?Object,\n    // Complete control how to render pagination with three params (index, total, context) ref to this.state.index / this.state.total / this, For example: show numbers instead of dots.\n    renderPagination?: ?(index: number, total: number, context: any) => Node,\n    // Allow custom the dot element.\n    dot?: ?Node,\n    // Allow custom the active-dot element.\n    activeDot?: ?Node,\n    // Allow custom the active-dot element.\n    dotStyle?: ?Object,\n    // Allow custom the active-dot element.\n    dotColor?: ?string,\n    // Allow custom the active-dot element.\n    activeDotColor?: ?string,\n    // Allow custom the active-dot element.\n    activeDotStyle?: ?Object,\n\n    // Autoplay\n    // Delay between auto play transitions (in second).\n    autoplayTimeout?: ?number,\n    // Cycle direction control.\n    autoplayDirection?: ?boolean,\n\n    // Control buttons\n    // Set to true make control buttons visible.\n    buttonWrapperStyle?: ?Object,\n    // Allow custom the next button.\n    nextButton?: ?Node,\n    // Allow custom the prev button.\n    prevButton?: ?Node,\n\n    // Supported ScrollResponder\n    // When animation begins after letting up\n    onScrollBeginDrag?: ?(event?: any, state?: any, context?: any) => void,\n    // Makes no sense why this occurs first during bounce\n    onMomentumScrollEnd?: ?(event?: any, state?: any, context?: any) => void,\n    // Immediately after onMomentumScrollEnd\n    onTouchStartCapture?: ?(event?: any, state?: any, context?: any) => void,\n    // Same, but bubble phase\n    onTouchStart?: ?(event?: any, state?: any, context?: any) => void,\n    // You could hold the touch start for a long time\n    onTouchEnd?: ?(event?: any, state?: any, context?: any) => void,\n    // When lifting up - you could pause forever before * lifting\n    onResponderRelease?: ?(event?: any, state?: any, context?: any) => void,\n\n    // If true, the scroll view stops on multiples of the scroll view's size when scrolling. This can be used for\n    // horizontal pagination.\n    pagingEnabled?: ?boolean,\n    // Set to true if you want to show horizontal scroll bar.\n    showsHorizontalScrollIndicator?: ?boolean,\n    // Set to true if you want to show vertical scroll bar.\n    showsVerticalScrollIndicator?: ?boolean,\n    // If true, the scroll view bounces when it reaches the end of the content if the content is larger then the\n    // scroll view along the axis of the scroll direction. If false, it disables all bouncing even if the\n    // alwaysBounce* props are true.\n    bounces?: ?boolean,\n    // If true, the scroll view scrolls to top when the status bar is tapped.\n    scrollsToTop?: ?boolean,\n    // If true, offscreen child views (whose overflow value is hidden) are removed from their native backing\n    // superview when offscreen. This canimprove scrolling performance on long lists.\n    removeClippedSubviews?: ?boolean,\n    // Set to true if you need adjust content insets automation.\n    automaticallyAdjustContentInsets?: ?boolean,\n    // Enables/Disables swiping\n    scrollEnabled?: ?boolean\n  |}>;\n\n  // eslint-disable-next-line no-undef\n  declare export default class Swiper extends Component<SwiperProps> {\n    scrollBy(index: number, animated?: boolean): void;\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"react-native-swiper\",\n  \"keywords\": [\n    \"react-component\",\n    \"react-native\",\n    \"ios\"\n  ],\n  \"version\": \"1.6.0-rc.2\",\n  \"description\": \"Swiper component for React Native.\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"commit\": \"npx git-cz\",\n    \"start\": \"react-native start\",\n    \"lint\": \"standard | snazzy\",\n    \"update\": \"updtr\",\n    \"precommit\": \"git diff --name-only --cached --relative | grep '\\\\.jsx\\\\?$' | xargs standard | snazzy; if [ $? -ne 0 ]; then exit 1; fi\",\n    \"test\": \"npm run lint\"\n  },\n  \"pre-commit\": {\n    \"run\": [\n      \"precommit\"\n    ],\n    \"silent\": true\n  },\n  \"standard\": {\n    \"parser\": \"babel-eslint\",\n    \"global\": [\n      \"__DEV__\",\n      \"FormData\",\n      \"requestAnimationFrame\",\n      \"alert\",\n      \"setImmediate\",\n      \"fetch\"\n    ],\n    \"ignore\": [\n      \"dist/\",\n      \"mock/\",\n      \"node_modules/\"\n    ]\n  },\n  \"ava\": {\n    \"babel\": \"inherit\",\n    \"require\": []\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/leecade/react-native-swiper.git\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/leecade/react-native-swiper/issues\"\n  },\n  \"homepage\": \"https://github.com/leecade/react-native-swiper#readme\",\n  \"devDependencies\": {\n    \"babel-eslint\": \"^8.0.1\",\n    \"rimraf\": \"^2.5.4\",\n    \"snazzy\": \"^7.1.0\",\n    \"standard\": \"^13.0.1\",\n    \"updtr\": \"^2.0.0\"\n  },\n  \"dependencies\": {\n    \"prop-types\": \"^15.5.10\"\n  },\n  \"config\": {\n    \"commitizen\": {\n      \"path\": \"cz-conventional-changelog\"\n    }\n  }\n}\n"
  },
  {
    "path": "src/index.js",
    "content": "/**\n * react-native-swiper\n * @author leecade<leecade@163.com>\n */\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n  Text,\n  View,\n  ViewPropTypes,\n  ScrollView,\n  Dimensions,\n  TouchableOpacity,\n  Platform,\n  ActivityIndicator\n} from 'react-native'\n\n/**\n * Default styles\n * @type {StyleSheetPropType}\n */\nconst styles = {\n  container: {\n    backgroundColor: 'transparent',\n    position: 'relative',\n    flex: 1\n  },\n\n  wrapperIOS: {\n    backgroundColor: 'transparent'\n  },\n\n  wrapperAndroid: {\n    backgroundColor: 'transparent',\n    flex: 1\n  },\n\n  slide: {\n    backgroundColor: 'transparent'\n  },\n\n  pagination_x: {\n    position: 'absolute',\n    bottom: 25,\n    left: 0,\n    right: 0,\n    flexDirection: 'row',\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: 'transparent'\n  },\n\n  pagination_y: {\n    position: 'absolute',\n    right: 15,\n    top: 0,\n    bottom: 0,\n    flexDirection: 'column',\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: 'transparent'\n  },\n\n  title: {\n    height: 30,\n    justifyContent: 'center',\n    position: 'absolute',\n    paddingLeft: 10,\n    bottom: -30,\n    left: 0,\n    flexWrap: 'nowrap',\n    width: 250,\n    backgroundColor: 'transparent'\n  },\n\n  buttonWrapper: {\n    backgroundColor: 'transparent',\n    flexDirection: 'row',\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    flex: 1,\n    paddingHorizontal: 10,\n    paddingVertical: 10,\n    justifyContent: 'space-between',\n    alignItems: 'center'\n  },\n\n  buttonText: {\n    fontSize: 50,\n    color: '#007aff'\n  }\n}\n\n// missing `module.exports = exports['default'];` with babel6\n// export default React.createClass({\nexport default class extends Component {\n  /**\n   * Props Validation\n   * @type {Object}\n   */\n  static propTypes = {\n    horizontal: PropTypes.bool,\n    children: PropTypes.node.isRequired,\n    containerStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number]),\n    style: PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.number,\n      PropTypes.array\n    ]),\n    scrollViewStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number]),\n    pagingEnabled: PropTypes.bool,\n    showsHorizontalScrollIndicator: PropTypes.bool,\n    showsVerticalScrollIndicator: PropTypes.bool,\n    bounces: PropTypes.bool,\n    scrollsToTop: PropTypes.bool,\n    removeClippedSubviews: PropTypes.bool,\n    automaticallyAdjustContentInsets: PropTypes.bool,\n    showsPagination: PropTypes.bool,\n    showsButtons: PropTypes.bool,\n    disableNextButton: PropTypes.bool,\n    disablePrevButton: PropTypes.bool,\n    loadMinimal: PropTypes.bool,\n    loadMinimalSize: PropTypes.number,\n    loadMinimalLoader: PropTypes.element,\n    loop: PropTypes.bool,\n    autoplay: PropTypes.bool,\n    autoplayTimeout: PropTypes.number,\n    autoplayDirection: PropTypes.bool,\n    index: PropTypes.number,\n    renderPagination: PropTypes.func,\n    dotStyle: PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.number,\n      PropTypes.array\n    ]),\n    activeDotStyle: PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.number,\n      PropTypes.array\n    ]),\n    dotColor: PropTypes.string,\n    activeDotColor: PropTypes.string,\n    /**\n     * Called when the index has changed because the user swiped.\n     */\n    onIndexChanged: PropTypes.func\n  }\n\n  /**\n   * Default props\n   * @return {object} props\n   * @see http://facebook.github.io/react-native/docs/scrollview.html\n   */\n  static defaultProps = {\n    horizontal: true,\n    pagingEnabled: true,\n    showsHorizontalScrollIndicator: false,\n    showsVerticalScrollIndicator: false,\n    bounces: false,\n    scrollsToTop: false,\n    removeClippedSubviews: true,\n    automaticallyAdjustContentInsets: false,\n    showsPagination: true,\n    showsButtons: false,\n    disableNextButton: false,\n    disablePrevButton: false,\n    loop: true,\n    loadMinimal: false,\n    loadMinimalSize: 1,\n    autoplay: false,\n    autoplayTimeout: 2.5,\n    autoplayDirection: true,\n    index: 0,\n    onIndexChanged: () => null\n  }\n\n  /**\n   * Init states\n   * @return {object} states\n   */\n  state = this.initState(this.props)\n\n  /**\n   * Initial render flag\n   * @type {bool}\n   */\n  initialRender = true\n\n  /**\n   * autoplay timer\n   * @type {null}\n   */\n  autoplayTimer = null\n  loopJumpTimer = null\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if (!nextProps.autoplay && this.autoplayTimer)\n      clearTimeout(this.autoplayTimer)\n    if (nextProps.index === this.props.index) return\n    this.setState(\n      this.initState(nextProps, this.props.index !== nextProps.index)\n    )\n  }\n\n  componentDidMount() {\n    this.autoplay()\n  }\n\n  componentWillUnmount() {\n    this.autoplayTimer && clearTimeout(this.autoplayTimer)\n    this.loopJumpTimer && clearTimeout(this.loopJumpTimer)\n  }\n\n  UNSAFE_componentWillUpdate(nextProps, nextState) {\n    // If the index has changed, we notify the parent via the onIndexChanged callback\n    if (this.state.index !== nextState.index)\n      this.props.onIndexChanged(nextState.index)\n  }\n\n  componentDidUpdate(prevProps) {\n    // If autoplay props updated to true, autoplay immediately\n    if (this.props.autoplay && !prevProps.autoplay) {\n      this.autoplay()\n    }\n    if (this.props.children !== prevProps.children) {\n      if (this.props.loadMinimal && Platform.OS === 'ios') {\n        this.setState({ ...this.props, index: this.state.index })\n      } else {\n        this.setState(\n          this.initState({ ...this.props, index: this.state.index }, true)\n        )\n      }\n    }\n  }\n\n  initState(props, updateIndex = false) {\n    // set the current state\n    const state = this.state || { width: 0, height: 0, offset: { x: 0, y: 0 } }\n\n    const initState = {\n      autoplayEnd: false,\n      children: null,\n      loopJump: false,\n      offset: {}\n    }\n\n    // Support Optional render page\n    initState.children = Array.isArray(props.children)\n      ? props.children.filter(child => child)\n      : props.children\n\n    initState.total = initState.children ? initState.children.length || 1 : 0\n\n    if (state.total === initState.total && !updateIndex) {\n      // retain the index\n      initState.index = state.index\n    } else {\n      initState.index =\n        initState.total > 1 ? Math.min(props.index, initState.total - 1) : 0\n    }\n\n    // Default: horizontal\n    const { width, height } = Dimensions.get('window')\n\n    initState.dir = props.horizontal === false ? 'y' : 'x'\n\n    if (props.width) {\n      initState.width = props.width\n    } else if (this.state && this.state.width) {\n      initState.width = this.state.width\n    } else {\n      initState.width = width\n    }\n\n    if (props.height) {\n      initState.height = props.height\n    } else if (this.state && this.state.height) {\n      initState.height = this.state.height\n    } else {\n      initState.height = height\n    }\n\n    initState.offset[initState.dir] =\n      initState.dir === 'y' ? initState.height * props.index : initState.width * props.index\n\n    this.internals = {\n      ...this.internals,\n      isScrolling: false\n    }\n    return initState\n  }\n\n  // include internals with state\n  fullState() {\n    return Object.assign({}, this.state, this.internals)\n  }\n\n  onLayout = event => {\n    const { width, height } = event.nativeEvent.layout\n    const offset = (this.internals.offset = {})\n    const state = { width, height }\n\n    if (this.state.total > 1) {\n      let setup = this.state.index\n      if (this.props.loop) {\n        setup++\n      }\n      offset[this.state.dir] =\n        this.state.dir === 'y' ? height * setup : width * setup\n    }\n\n    // only update the offset in state if needed, updating offset while swiping\n    // causes some bad jumping / stuttering\n    if (!this.state.offset) {\n      state.offset = offset\n    }\n\n    // related to https://github.com/leecade/react-native-swiper/issues/570\n    // contentOffset is not working in react 0.48.x so we need to use scrollTo\n    // to emulate offset.\n    if(this.state.total > 1) {\n      this.scrollView.scrollTo({ ...offset, animated: false })\n    }\n\t\n    if (this.initialRender) {\n      this.initialRender = false\n    }\n\n    this.setState(state)\n  }\n\n  loopJump = () => {\n    if (!this.state.loopJump) return\n    const i = this.state.index + (this.props.loop ? 1 : 0)\n    const scrollView = this.scrollView\n    this.loopJumpTimer = setTimeout(\n      () => {\n        if (scrollView.setPageWithoutAnimation) {\n          scrollView.setPageWithoutAnimation(i)\n        } else {\n          if (this.state.index === 0) {\n            scrollView.scrollTo(\n              this.props.horizontal === false\n                ? { x: 0, y: this.state.height, animated: false }\n                : { x: this.state.width, y: 0, animated: false }\n            )\n          } else if (this.state.index === this.state.total - 1) {\n            this.props.horizontal === false\n              ? this.scrollView.scrollTo({\n                  x: 0,\n                  y: this.state.height * this.state.total,\n                  animated: false\n                })\n              : this.scrollView.scrollTo({\n                  x: this.state.width * this.state.total,\n                  y: 0,\n                  animated: false\n                })\n          }\n        }\n      },\n      // Important Parameter\n      // ViewPager 50ms, ScrollView 300ms\n      scrollView.setPageWithoutAnimation ? 50 : 300\n    )\n  }\n\n  /**\n   * Automatic rolling\n   */\n  autoplay = () => {\n    if (\n      !Array.isArray(this.state.children) ||\n      !this.props.autoplay ||\n      this.internals.isScrolling ||\n      this.state.autoplayEnd\n    )\n      return\n\n    this.autoplayTimer && clearTimeout(this.autoplayTimer)\n    this.autoplayTimer = setTimeout(() => {\n      if (\n        !this.props.loop &&\n        (this.props.autoplayDirection\n          ? this.state.index === this.state.total - 1\n          : this.state.index === 0)\n      )\n        return this.setState({ autoplayEnd: true })\n\n      this.scrollBy(this.props.autoplayDirection ? 1 : -1)\n    }, this.props.autoplayTimeout * 1000)\n  }\n\n  /**\n   * Scroll begin handle\n   * @param  {object} e native event\n   */\n  onScrollBegin = e => {\n    // update scroll state\n    this.internals.isScrolling = true\n    this.props.onScrollBeginDrag &&\n      this.props.onScrollBeginDrag(e, this.fullState(), this)\n  }\n\n  /**\n   * Scroll end handle\n   * @param  {object} e native event\n   */\n  onScrollEnd = e => {\n    // update scroll state\n    this.internals.isScrolling = false\n\n    // making our events coming from android compatible to updateIndex logic\n    if (!e.nativeEvent.contentOffset) {\n      if (this.state.dir === 'x') {\n        e.nativeEvent.contentOffset = {\n          x: e.nativeEvent.position * this.state.width\n        }\n      } else {\n        e.nativeEvent.contentOffset = {\n          y: e.nativeEvent.position * this.state.height\n        }\n      }\n    }\n\n    this.updateIndex(e.nativeEvent.contentOffset, this.state.dir, () => {\n      this.autoplay()\n      this.loopJump()\n    })\n    // if `onMomentumScrollEnd` registered will be called here\n    this.props.onMomentumScrollEnd &&\n      this.props.onMomentumScrollEnd(e, this.fullState(), this)\n  }\n\n  /*\n   * Drag end handle\n   * @param {object} e native event\n   */\n  onScrollEndDrag = e => {\n    const { contentOffset } = e.nativeEvent\n    const { horizontal } = this.props\n    const { children, index } = this.state\n    const { offset } = this.internals\n    const previousOffset = horizontal ? offset.x : offset.y\n    const newOffset = horizontal ? contentOffset.x : contentOffset.y\n\n    if (\n      previousOffset === newOffset &&\n      (index === 0 || index === children.length - 1)\n    ) {\n      this.internals.isScrolling = false\n    }\n  }\n\n  /**\n   * Update index after scroll\n   * @param  {object} offset content offset\n   * @param  {string} dir    'x' || 'y'\n   */\n  updateIndex = (offset, dir, cb) => {\n    const state = this.state\n    // Android ScrollView will not scrollTo certain offset when props change\n    let index = state.index\n    if (!this.internals.offset)\n      // Android not setting this onLayout first? https://github.com/leecade/react-native-swiper/issues/582\n      this.internals.offset = {}\n    const diff = offset[dir] - (this.internals.offset[dir] || 0)\n    const step = dir === 'x' ? state.width : state.height\n    let loopJump = false\n\n    // Do nothing if offset no change.\n    if (!diff) return\n\n    // Note: if touch very very quickly and continuous,\n    // the variation of `index` more than 1.\n    // parseInt() ensures it's always an integer\n    index = parseInt(index + Math.round(diff / step))\n\n    if (this.props.loop) {\n      if (index <= -1) {\n        index = state.total - 1\n        offset[dir] = step * state.total\n        loopJump = true\n      } else if (index >= state.total) {\n        index = 0\n        offset[dir] = step\n        loopJump = true\n      }\n    }\n\n    const newState = {}\n    newState.index = index\n    newState.loopJump = loopJump\n\n    this.internals.offset = offset\n\n    // only update offset in state if loopJump is true\n    if (loopJump) {\n      // when swiping to the beginning of a looping set for the third time,\n      // the new offset will be the same as the last one set in state.\n      // Setting the offset to the same thing will not do anything,\n      // so we increment it by 1 then immediately set it to what it should be,\n      // after render.\n      if (offset[dir] === this.internals.offset[dir]) {\n        newState.offset = { x: 0, y: 0 }\n        newState.offset[dir] = offset[dir] + 1\n        this.setState(newState, () => {\n          this.setState({ offset: offset }, cb)\n        })\n      } else {\n        newState.offset = offset\n        this.setState(newState, cb)\n      }\n    } else {\n      this.setState(newState, cb)\n    }\n  }\n\n  /**\n   * Scroll by index\n   * @param  {number} index offset index\n   * @param  {bool} animated\n   */\n\n  scrollBy = (index, animated = true) => {\n    if (this.internals.isScrolling || this.state.total < 2) return\n    const state = this.state\n    const diff = (this.props.loop ? 1 : 0) + index + this.state.index\n    let x = 0\n    let y = 0\n    if (state.dir === 'x') x = diff * state.width\n    if (state.dir === 'y') y = diff * state.height\n\n    this.scrollView && this.scrollView.scrollTo({ x, y, animated })\n\n    // update scroll state\n    this.internals.isScrolling = true\n    this.setState({\n      autoplayEnd: false\n    })\n\n    // trigger onScrollEnd manually in android\n    if (!animated || Platform.OS !== 'ios') {\n      setImmediate(() => {\n        this.onScrollEnd({\n          nativeEvent: {\n            position: diff\n          }\n        })\n      })\n    }\n  }\n\n  /**\n   * Scroll to index\n   * @param  {number} index page\n   * @param  {bool} animated\n   */\n\n  scrollTo = (index, animated = true) => {\n    if (\n      this.internals.isScrolling ||\n      this.state.total < 2 ||\n      index == this.state.index\n    )\n      return\n\n    const state = this.state\n    const diff = this.state.index + (index - this.state.index)\n\n    let x = 0\n    let y = 0\n    if (state.dir === 'x') x = diff * state.width\n    if (state.dir === 'y') y = diff * state.height\n\n    this.scrollView && this.scrollView.scrollTo({ x, y, animated })\n\n    // update scroll state\n    this.internals.isScrolling = true\n    this.setState({\n      autoplayEnd: false\n    })\n\n    // trigger onScrollEnd manually in android\n    if (!animated || Platform.OS !== 'ios') {\n      setImmediate(() => {\n        this.onScrollEnd({\n          nativeEvent: {\n            position: diff\n          }\n        })\n      })\n    }\n  }\n\n  scrollViewPropOverrides = () => {\n    const props = this.props\n    let overrides = {}\n\n    /*\n    const scrollResponders = [\n      'onMomentumScrollBegin',\n      'onTouchStartCapture',\n      'onTouchStart',\n      'onTouchEnd',\n      'onResponderRelease',\n    ]\n    */\n\n    for (let prop in props) {\n      // if(~scrollResponders.indexOf(prop)\n      if (\n        typeof props[prop] === 'function' &&\n        prop !== 'onMomentumScrollEnd' &&\n        prop !== 'renderPagination' &&\n        prop !== 'onScrollBeginDrag'\n      ) {\n        let originResponder = props[prop]\n        overrides[prop] = e => originResponder(e, this.fullState(), this)\n      }\n    }\n\n    return overrides\n  }\n\n  /**\n   * Render pagination\n   * @return {object} react-dom\n   */\n  renderPagination = () => {\n    // By default, dots only show when `total` >= 2\n    if (this.state.total <= 1) return null\n\n    let dots = []\n    const ActiveDot = this.props.activeDot || (\n      <View\n        style={[\n          {\n            backgroundColor: this.props.activeDotColor || '#007aff',\n            width: 8,\n            height: 8,\n            borderRadius: 4,\n            marginLeft: 3,\n            marginRight: 3,\n            marginTop: 3,\n            marginBottom: 3\n          },\n          this.props.activeDotStyle\n        ]}\n      />\n    )\n    const Dot = this.props.dot || (\n      <View\n        style={[\n          {\n            backgroundColor: this.props.dotColor || 'rgba(0,0,0,.2)',\n            width: 8,\n            height: 8,\n            borderRadius: 4,\n            marginLeft: 3,\n            marginRight: 3,\n            marginTop: 3,\n            marginBottom: 3\n          },\n          this.props.dotStyle\n        ]}\n      />\n    )\n    for (let i = 0; i < this.state.total; i++) {\n      dots.push(\n        i === this.state.index\n          ? React.cloneElement(ActiveDot, { key: i })\n          : React.cloneElement(Dot, { key: i })\n      )\n    }\n\n    return (\n      <View\n        pointerEvents=\"none\"\n        style={[\n          styles['pagination_' + this.state.dir],\n          this.props.paginationStyle\n        ]}\n      >\n        {dots}\n      </View>\n    )\n  }\n\n  renderTitle = () => {\n    const child = this.state.children[this.state.index]\n    const title = child && child.props && child.props.title\n    return title ? (\n      <View style={styles.title}>\n        {this.state.children[this.state.index].props.title}\n      </View>\n    ) : null\n  }\n\n  renderNextButton = () => {\n    let button = null\n\n    if (this.props.loop || this.state.index !== this.state.total - 1) {\n      button = this.props.nextButton || <Text style={styles.buttonText}>›</Text>\n    }\n\n    return (\n      <TouchableOpacity\n        onPress={() => button !== null && this.scrollBy(1)}\n        disabled={this.props.disableNextButton}\n      >\n        <View>{button}</View>\n      </TouchableOpacity>\n    )\n  }\n\n  renderPrevButton = () => {\n    let button = null\n\n    if (this.props.loop || this.state.index !== 0) {\n      button = this.props.prevButton || <Text style={styles.buttonText}>‹</Text>\n    }\n\n    return (\n      <TouchableOpacity\n        onPress={() => button !== null && this.scrollBy(-1)}\n        disabled={this.props.disablePrevButton}\n      >\n        <View>{button}</View>\n      </TouchableOpacity>\n    )\n  }\n\n  renderButtons = () => {\n    return (\n      <View\n        pointerEvents=\"box-none\"\n        style={[\n          styles.buttonWrapper,\n          {\n            width: this.state.width,\n            height: this.state.height\n          },\n          this.props.buttonWrapperStyle\n        ]}\n      >\n        {this.renderPrevButton()}\n        {this.renderNextButton()}\n      </View>\n    )\n  }\n\n  refScrollView = view => {\n    this.scrollView = view\n  }\n\n  onPageScrollStateChanged = state => {\n    switch (state) {\n      case 'dragging':\n        return this.onScrollBegin()\n\n      case 'idle':\n      case 'settling':\n        if (this.props.onTouchEnd) this.props.onTouchEnd()\n    }\n  }\n\n  renderScrollView = pages => {\n    return (\n      <ScrollView\n        ref={this.refScrollView}\n        {...this.props}\n        {...this.scrollViewPropOverrides()}\n        contentContainerStyle={[styles.wrapperIOS, this.props.style]}\n        contentOffset={this.state.offset}\n        onScrollBeginDrag={this.onScrollBegin}\n        onMomentumScrollEnd={this.onScrollEnd}\n        onScrollEndDrag={this.onScrollEndDrag}\n        style={this.props.scrollViewStyle}\n      >\n        {pages}\n      </ScrollView>\n    )\n  }\n\n  /**\n   * Default render\n   * @return {object} react-dom\n   */\n  render() {\n    const { index, total, width, height, children } = this.state\n    const {\n      containerStyle,\n      loop,\n      loadMinimal,\n      loadMinimalSize,\n      loadMinimalLoader,\n      renderPagination,\n      showsButtons,\n      showsPagination\n    } = this.props\n    // let dir = state.dir\n    // let key = 0\n    const loopVal = loop ? 1 : 0\n    let pages = []\n\n    const pageStyle = [{ width: width, height: height }, styles.slide]\n    const pageStyleLoading = {\n      width,\n      height,\n      flex: 1,\n      justifyContent: 'center',\n      alignItems: 'center'\n    }\n\n    // For make infinite at least total > 1\n    if (total > 1) {\n      // Re-design a loop model for avoid img flickering\n      pages = Object.keys(children)\n      if (loop) {\n        pages.unshift(total - 1 + '')\n        pages.push('0')\n      }\n\n      pages = pages.map((page, i) => {\n        if (loadMinimal) {\n          if (\n            (i >= index + loopVal - loadMinimalSize &&\n              i <= index + loopVal + loadMinimalSize) ||\n            // The real first swiper should be keep\n            (loop && i === 1) ||\n            // The real last swiper should be keep\n            (loop && i === total - 1)\n          ) {\n            return (\n              <View style={pageStyle} key={i}>\n                {children[page]}\n              </View>\n            )\n          } else {\n            return (\n              <View style={pageStyleLoading} key={i}>\n                {loadMinimalLoader ? loadMinimalLoader : <ActivityIndicator />}\n              </View>\n            )\n          }\n        } else {\n          return (\n            <View style={pageStyle} key={i}>\n              {children[page]}\n            </View>\n          )\n        }\n      })\n    } else {\n      pages = (\n        <View style={pageStyle} key={0}>\n          {children}\n        </View>\n      )\n    }\n\n    return (\n      <View style={[styles.container, containerStyle]} onLayout={this.onLayout}>\n        {this.renderScrollView(pages)}\n        {showsPagination &&\n          (renderPagination\n            ? renderPagination(index, total, this)\n            : this.renderPagination())}\n        {this.renderTitle()}\n        {showsButtons && this.renderButtons()}\n      </View>\n    )\n  }\n}\n"
  }
]