├── .gitignore ├── CHANGELOG.md ├── Carousel.js ├── CarouselPager.android.js ├── CarouselPager.ios.js ├── LICENSE ├── README.md ├── npm-debug.log ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # JetBrains IDEs 4 | .idea -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.11.0 2 | - React 16 support (@abuinitski) 3 | 4 | ### 0.10.0 5 | - Fix horizontal scroll in RN v0.28 (@sghiassy, @dmccer) 6 | 7 | ### 0.9.1 8 | - onPageChange never called on indicator press on Android (@lideen) 9 | 10 | ### 0.9.0 11 | - Fix carousel in iOS with react-native 0.28 (@francisco-sanchez-molina) 12 | 13 | ### 0.8.0 14 | - Custom indicator content (@shidhincr) 15 | 16 | ### 0.7.0 17 | - Call createClass on React instead of React Native (@scottluptowski) 18 | 19 | ### 0.6.1 20 | - Hide inactive indicators (@scottluptowski) 21 | 22 | ### 0.6.0 23 | - Compute width on the fly (@mikelambert) 24 | - Android support (@mikelambert, @kushal) 25 | 26 | ### 0.5.0 27 | - Fix for pressing indicator with custom width (@juankiz) 28 | - Fix scrollWithoutAnimationTo deprecation warning (@juankiz) 29 | 30 | ### 0.4.6 31 | - Fix depreciated parameter for scrollTo (@ronaldx) 32 | 33 | ### 0.4.5 34 | - Fix scrolling to top when pressing iOS status bar (@juankiz) 35 | 36 | ### 0.4.4 37 | - Added indicatorOffset property (@regeda) 38 | 39 | ### 0.4.3 40 | - Fix for page loop animation 41 | 42 | ### 0.4.2 43 | - Fix for Dimension import 44 | 45 | ### 0.4.1 46 | - Remove duplicate width calculation when initialPage is defined (@ptmt) 47 | 48 | ### 0.4.0 49 | - Add autoplay and looping options (@PraiseGeek) 50 | 51 | ### 0.3.5 52 | - Add `indicatorSpace` prop (@alinz) 53 | 54 | ### 0.3.3 55 | - Add `indicatorSize` prop (@daviferreira) 56 | 57 | ### 0.3.2 58 | - Add `hideIndicators` prop (@daviferreira) 59 | 60 | ### 0.3.1 61 | - Add `onPageChange` prop (@unknownexception) 62 | 63 | ### 0.3.0 64 | - Bump react-native dependency 65 | 66 | ### 0.2.0 67 | - Add `indicatorAtBottom` prop (@imaffett) 68 | - Added new styles for the indicator positions (@imaffett) 69 | - Clicking the indicators will switch the card/page it is on. (@imaffett) 70 | - Set the background of the indicator to transparent. (@imaffett) 71 | - Set bounces=false on the ScrollView used for the Carousel (@imaffett) 72 | 73 | ### 0.1.0 74 | - Initial component 75 | -------------------------------------------------------------------------------- /Carousel.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var React = require('react'); 4 | var createReactClass = require('create-react-class'); 5 | var { 6 | Dimensions, 7 | StyleSheet, 8 | Text, 9 | View, 10 | } = require('react-native'); 11 | 12 | var TimerMixin = require('react-timer-mixin'); 13 | var CarouselPager = require('./CarouselPager'); 14 | 15 | var Carousel = createReactClass({ 16 | mixins: [TimerMixin], 17 | 18 | getDefaultProps() { 19 | return { 20 | hideIndicators: false, 21 | indicatorColor: '#000000', 22 | indicatorSize: 50, 23 | inactiveIndicatorColor: '#999999', 24 | indicatorAtBottom: true, 25 | indicatorOffset: 250, 26 | indicatorText: '•', 27 | inactiveIndicatorText: '•', 28 | width: null, 29 | initialPage: 0, 30 | indicatorSpace: 25, 31 | animate: true, 32 | delay: 1000, 33 | loop: true, 34 | }; 35 | }, 36 | 37 | getInitialState() { 38 | return { 39 | activePage: this.props.initialPage > 0 ? this.props.initialPage : 0, 40 | }; 41 | }, 42 | 43 | getWidth() { 44 | if (this.props.width !== null) { 45 | return this.props.width; 46 | } else { 47 | return Dimensions.get('window').width; 48 | } 49 | }, 50 | 51 | componentDidMount() { 52 | if (this.props.initialPage > 0) { 53 | this.refs.pager.scrollToPage(this.props.initialPage, false); 54 | } 55 | 56 | if (this.props.animate && this.props.children){ 57 | this._setUpTimer(); 58 | } 59 | }, 60 | 61 | indicatorPressed(activePage) { 62 | this.setState({activePage}); 63 | this.refs.pager.scrollToPage(activePage); 64 | }, 65 | 66 | renderPageIndicator() { 67 | if (this.props.hideIndicators === true) { 68 | return null; 69 | } 70 | 71 | var indicators = [], 72 | indicatorStyle = this.props.indicatorAtBottom ? { bottom: this.props.indicatorOffset } : { top: this.props.indicatorOffset }, 73 | style, position; 74 | 75 | position = { 76 | width: this.props.children.length * this.props.indicatorSpace, 77 | }; 78 | position.left = (this.getWidth() - position.width) / 2; 79 | 80 | for (var i = 0, l = this.props.children.length; i < l; i++) { 81 | if (typeof this.props.children[i] === "undefined") { 82 | continue; 83 | } 84 | 85 | style = i === this.state.activePage ? { color: this.props.indicatorColor } : { color: this.props.inactiveIndicatorColor }; 86 | indicators.push( 87 | 92 | { i === this.state.activePage ? this.props.indicatorText : this.props.inactiveIndicatorText } 93 | 94 | ); 95 | } 96 | 97 | if (indicators.length === 1) { 98 | return null; 99 | } 100 | 101 | return ( 102 | 103 | {indicators} 104 | 105 | ); 106 | }, 107 | 108 | _setUpTimer() { 109 | if (this.props.children.length > 1) { 110 | this.clearTimeout(this.timer); 111 | this.timer = this.setTimeout(this._animateNextPage, this.props.delay); 112 | } 113 | }, 114 | 115 | _animateNextPage() { 116 | var activePage = 0; 117 | if (this.state.activePage < this.props.children.length - 1) { 118 | activePage = this.state.activePage + 1; 119 | } else if (!this.props.loop) { 120 | return; 121 | } 122 | 123 | this.indicatorPressed(activePage); 124 | this._setUpTimer(); 125 | }, 126 | 127 | _onAnimationBegin() { 128 | this.clearTimeout(this.timer); 129 | }, 130 | 131 | _onAnimationEnd(activePage) { 132 | this.setState({activePage}); 133 | if (this.props.onPageChange) { 134 | this.props.onPageChange(activePage); 135 | } 136 | }, 137 | 138 | render() { 139 | return ( 140 | 141 | 148 | {this.props.children} 149 | 150 | {this.renderPageIndicator()} 151 | 152 | ); 153 | }, 154 | 155 | }); 156 | 157 | var styles = StyleSheet.create({ 158 | pageIndicator: { 159 | position: 'absolute', 160 | flexDirection: 'row', 161 | flex: 1, 162 | justifyContent: 'space-around', 163 | alignItems: 'center', 164 | alignSelf: 'center', 165 | backgroundColor:'transparent', 166 | }, 167 | }); 168 | 169 | module.exports = Carousel; 170 | -------------------------------------------------------------------------------- /CarouselPager.android.js: -------------------------------------------------------------------------------- 1 | var React = require('react'); 2 | var createReactClass = require('create-react-class'); 3 | var { 4 | View 5 | } = require('react-native'); 6 | import ViewPager from "@react-native-community/viewpager"; 7 | 8 | var CarouselPager = createReactClass({ 9 | 10 | scrollToPage(page, animated) { 11 | if (typeof animated === 'undefined') { 12 | animated = true; 13 | } 14 | if (animated) { 15 | this.refs.viewPager.setPage(page); 16 | } else { 17 | this.refs.viewPager.setPageWithoutAnimation(page); 18 | } 19 | this._onPageSelected(page); 20 | }, 21 | 22 | _onPageSelected(page) { 23 | this.props.onEnd(page); 24 | }, 25 | 26 | render() { 27 | return this._onPageSelected(e.nativeEvent.position)} 37 | scrollsToTop={false} 38 | > 39 | {this.props.children.map((c, idx) => {c})} 40 | ; 41 | }, 42 | }); 43 | 44 | module.exports = CarouselPager; 45 | -------------------------------------------------------------------------------- /CarouselPager.ios.js: -------------------------------------------------------------------------------- 1 | var React = require('react'); 2 | var createReactClass = require('create-react-class'); 3 | var { 4 | ScrollView, 5 | } = require('react-native'); 6 | 7 | var CarouselPager = createReactClass({ 8 | 9 | scrollToPage(page, animated) { 10 | if (typeof animated === 'undefined') { 11 | animated = true; 12 | } 13 | this.refs.scrollView.scrollTo({x: page * this.props.width, y: 0, animated: animated}); 14 | }, 15 | 16 | _onMomentumScrollEnd(e) { 17 | var activePage = e.nativeEvent.contentOffset.x / this.props.width; 18 | this.props.onEnd(activePage); 19 | }, 20 | 21 | render() { 22 | return 33 | {this.props.children} 34 | ; 35 | }, 36 | }); 37 | 38 | module.exports = CarouselPager; 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Alexey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Carousel component for react-native 2 | 3 | ### Installation 4 | ```bash 5 | npm install react-native-carousel 6 | ``` 7 | 8 | ### Properties 9 | 10 | ```js 11 | hideIndicators={false} // Set to true to hide the indicators 12 | indicatorColor="#FFFFFF" // Active indicator color 13 | indicatorSize={20} // Indicator bullet size 14 | indicatorSpace={15} // space between each indicator 15 | inactiveIndicatorColor="#999999" // Inactive indicator color 16 | indicatorAtBottom={true} // Set to false to show the indicators at the top 17 | indicatorOffset={250} // Indicator relative position from top or bottom 18 | onPageChange={callback} // Called when the active page changes 19 | inactiveIndicatorText= '•' // Inactive indicator content ( You can customize to use any Unicode character ) 20 | indicatorText= '•' // Active indicator content ( You can customize to use any Unicode character ) 21 | 22 | animate={true} // Enable carousel autoplay 23 | delay={1000} // Set Animation delay between slides 24 | loop={true} // Allow infinite looped animation. Depends on Prop {...animate} set to true. 25 | 26 | ``` 27 | 28 | ### Usage example 29 | 30 | Assuming you have `npm install -g react-native-cli`, first generate an app: 31 | 32 | react-native init RNCarousel 33 | cd RNCarousel 34 | npm install react-native-carousel --save 35 | 36 | Then paste the following into `RNCarousel/index.ios.js`: 37 | 38 | ```javascript 39 | 'use strict'; 40 | 41 | var React = require('react-native'); 42 | var { 43 | AppRegistry, 44 | StyleSheet, 45 | Text, 46 | View, 47 | } = React; 48 | 49 | var Carousel = require('react-native-carousel'); 50 | 51 | var RNCarousel = React.createClass({ 52 | render: function() { 53 | return ( 54 | 55 | 56 | Page 1 57 | 58 | 59 | Page 2 60 | 61 | 62 | Page 3 63 | 64 | 65 | ); 66 | } 67 | }); 68 | 69 | var styles = StyleSheet.create({ 70 | container: { 71 | width: 375, 72 | flex: 1, 73 | justifyContent: 'center', 74 | alignItems: 'center', 75 | backgroundColor: 'transparent', 76 | }, 77 | }); 78 | 79 | AppRegistry.registerComponent('RNCarousel', () => RNCarousel); 80 | ``` 81 | -------------------------------------------------------------------------------- /npm-debug.log: -------------------------------------------------------------------------------- 1 | 0 info it worked if it ends with ok 2 | 1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'publish' ] 3 | 2 info using npm@3.8.9 4 | 3 info using node@v6.2.0 5 | 4 verbose publish [ '.' ] 6 | 5 silly cache add args [ '.', null ] 7 | 6 verbose cache add spec . 8 | 7 silly cache add parsed spec Result { 9 | 7 silly cache add raw: '.', 10 | 7 silly cache add scope: null, 11 | 7 silly cache add name: null, 12 | 7 silly cache add rawSpec: '.', 13 | 7 silly cache add spec: '/Users/nick/Projects/react-native-carousel', 14 | 7 silly cache add type: 'directory' } 15 | 8 verbose addLocalDirectory /Users/nick/.npm/react-native-carousel/0.10.0/package.tgz not in flight; packing 16 | 9 verbose correctMkdir /Users/nick/.npm correctMkdir not in flight; initializing 17 | 10 info lifecycle react-native-carousel@0.10.0~prepublish: react-native-carousel@0.10.0 18 | 11 silly lifecycle react-native-carousel@0.10.0~prepublish: no script for prepublish, continuing 19 | 12 verbose tar pack [ '/Users/nick/.npm/react-native-carousel/0.10.0/package.tgz', 20 | 12 verbose tar pack '/Users/nick/Projects/react-native-carousel' ] 21 | 13 verbose tarball /Users/nick/.npm/react-native-carousel/0.10.0/package.tgz 22 | 14 verbose folder /Users/nick/Projects/react-native-carousel 23 | 15 verbose addLocalTarball adding from inside cache /Users/nick/.npm/react-native-carousel/0.10.0/package.tgz 24 | 16 verbose correctMkdir /Users/nick/.npm correctMkdir not in flight; initializing 25 | 17 silly cache afterAdd react-native-carousel@0.10.0 26 | 18 verbose afterAdd /Users/nick/.npm/react-native-carousel/0.10.0/package/package.json not in flight; writing 27 | 19 verbose correctMkdir /Users/nick/.npm correctMkdir not in flight; initializing 28 | 20 verbose afterAdd /Users/nick/.npm/react-native-carousel/0.10.0/package/package.json written 29 | 21 silly publish { name: 'react-native-carousel', 30 | 21 silly publish version: '0.10.0', 31 | 21 silly publish description: 'Simple carousel component for react-native', 32 | 21 silly publish main: 'Carousel.js', 33 | 21 silly publish scripts: { test: 'echo "Error: no test specified" && exit 1' }, 34 | 21 silly publish repository: 35 | 21 silly publish { type: 'git', 36 | 21 silly publish url: 'https://github.com/nick/react-native-carousel.git' }, 37 | 21 silly publish keywords: [ 'react-native', 'carousel' ], 38 | 21 silly publish author: 39 | 21 silly publish { name: 'Nick Poulden', 40 | 21 silly publish email: 'nick@poulden.com', 41 | 21 silly publish url: 'https://github.com/nick' }, 42 | 21 silly publish license: 'MIT', 43 | 21 silly publish bugs: { url: 'https://github.com/nick/react-native-carousel/issues' }, 44 | 21 silly publish homepage: 'https://github.com/nick/react-native-carousel', 45 | 21 silly publish dependencies: { 'react-timer-mixin': '^0.13.3' }, 46 | 21 silly publish peerDependencies: { 'react-native': '>=0.28 <1.0' }, 47 | 21 silly publish readme: '## Carousel component for react-native\n\n### Installation\n```bash\nnpm install react-native-carousel\n```\n\n###Properties\n\n```\nhideIndicators={false} // Set to true to hide the indicators\nindicatorColor="#FFFFFF" // Active indicator color\nindicatorSize={20} // Indicator bullet size\nindicatorSpace={15} // space between each indicator\ninactiveIndicatorColor="#999999" // Inactive indicator color\nindicatorAtBottom={true} // Set to false to show the indicators at the top\nindicatorOffset={250} // Indicator relative position from top or bottom\nonPageChange={callback} // Called when the active page changes\ninactiveIndicatorText= \'•\' // Inactive indicator content ( You can customize to use any Unicode character )\nindicatorText= \'•\' // Active indicator content ( You can customize to use any Unicode character )\n\nanimate={true} // Enable carousel autoplay\ndelay={1000} // Set Animation delay between slides\nloop={true} // Allow infinite looped animation. Depends on Prop {...animate} set to true.\n \n```\n\n### Usage example\n\nAssuming you have `npm install -g react-native-cli`, first generate an app:\n\n react-native init RNCarousel\n cd RNCarousel\n npm install react-native-carousel --save\n\nThen paste the following into `RNCarousel/index.ios.js`:\n\n```javascript\n\'use strict\';\n\nvar React = require(\'react-native\');\nvar {\n AppRegistry,\n StyleSheet,\n Text,\n View,\n} = React;\n\nvar Carousel = require(\'react-native-carousel\');\n\nvar RNCarousel = React.createClass({\n render: function() {\n return (\n \n \n Page 1\n \n \n Page 2\n \n \n Page 3\n \n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n width: 375,\n flex: 1,\n justifyContent: \'center\',\n alignItems: \'center\',\n backgroundColor: \'transparent\',\n },\n});\n\nAppRegistry.registerComponent(\'RNCarousel\', () => RNCarousel);\n```\n', 48 | 21 silly publish readmeFilename: 'README.md', 49 | 21 silly publish gitHead: 'cf8ca562178d72abbb5db5aa6984615222547f21', 50 | 21 silly publish _id: 'react-native-carousel@0.10.0', 51 | 21 silly publish _shasum: 'f4becc5ff46f66585d0ec9e42dce1efb1d7e571a', 52 | 21 silly publish _from: '.' } 53 | 22 verbose getPublishConfig undefined 54 | 23 silly mapToRegistry name react-native-carousel 55 | 24 silly mapToRegistry using default registry 56 | 25 silly mapToRegistry registry https://registry.npmjs.org/ 57 | 26 silly mapToRegistry data Result { 58 | 26 silly mapToRegistry raw: 'react-native-carousel', 59 | 26 silly mapToRegistry scope: null, 60 | 26 silly mapToRegistry name: 'react-native-carousel', 61 | 26 silly mapToRegistry rawSpec: '', 62 | 26 silly mapToRegistry spec: 'latest', 63 | 26 silly mapToRegistry type: 'tag' } 64 | 27 silly mapToRegistry uri https://registry.npmjs.org/react-native-carousel 65 | 28 verbose publish registryBase https://registry.npmjs.org/ 66 | 29 silly publish uploading /Users/nick/.npm/react-native-carousel/0.10.0/package.tgz 67 | 30 verbose request uri https://registry.npmjs.org/react-native-carousel 68 | 31 verbose request sending authorization for write operation 69 | 32 info attempt registry request try #1 at 12:31:22 PM 70 | 33 verbose request id d55ac47a92d6e2f4 71 | 34 http request PUT https://registry.npmjs.org/react-native-carousel 72 | 35 http 403 https://registry.npmjs.org/react-native-carousel 73 | 36 verbose headers { 'content-type': 'application/json', 74 | 36 verbose headers 'cache-control': 'max-age=300', 75 | 36 verbose headers 'content-length': '96', 76 | 36 verbose headers 'accept-ranges': 'bytes', 77 | 36 verbose headers date: 'Tue, 26 Jul 2016 18:31:23 GMT', 78 | 36 verbose headers via: '1.1 varnish', 79 | 36 verbose headers connection: 'keep-alive', 80 | 36 verbose headers 'x-served-by': 'cache-sjc3128-SJC', 81 | 36 verbose headers 'x-cache': 'MISS', 82 | 36 verbose headers 'x-cache-hits': '0', 83 | 36 verbose headers 'x-timer': 'S1469557883.327890,VS0,VE150', 84 | 36 verbose headers vary: 'Accept-Encoding' } 85 | 37 verbose request invalidating /Users/nick/.npm/registry.npmjs.org/react-native-carousel on PUT 86 | 38 error publish Failed PUT 403 87 | 39 verbose stack Error: "You cannot publish over the previously published version 0.10.0." : react-native-carousel 88 | 39 verbose stack at makeError (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:264:12) 89 | 39 verbose stack at CachingRegistryClient. (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:252:14) 90 | 39 verbose stack at Request._callback (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:172:14) 91 | 39 verbose stack at Request.self.callback (/usr/local/lib/node_modules/npm/node_modules/request/request.js:200:22) 92 | 39 verbose stack at emitTwo (events.js:106:13) 93 | 39 verbose stack at Request.emit (events.js:191:7) 94 | 39 verbose stack at Request. (/usr/local/lib/node_modules/npm/node_modules/request/request.js:1067:10) 95 | 39 verbose stack at emitOne (events.js:101:20) 96 | 39 verbose stack at Request.emit (events.js:188:7) 97 | 39 verbose stack at IncomingMessage. (/usr/local/lib/node_modules/npm/node_modules/request/request.js:988:12) 98 | 40 verbose statusCode 403 99 | 41 verbose pkgid react-native-carousel 100 | 42 verbose cwd /Users/nick/Projects/react-native-carousel 101 | 43 error Darwin 15.6.0 102 | 44 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "publish" 103 | 45 error node v6.2.0 104 | 46 error npm v3.8.9 105 | 47 error code E403 106 | 48 error "You cannot publish over the previously published version 0.10.0." : react-native-carousel 107 | 49 error If you need help, you may report this error at: 108 | 49 error 109 | 50 verbose exit [ 1, true ] 110 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-carousel", 3 | "version": "0.11.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@react-native-community/viewpager": { 8 | "version": "1.1.7", 9 | "resolved": "https://registry.npmjs.org/@react-native-community/viewpager/-/viewpager-1.1.7.tgz", 10 | "integrity": "sha512-k9v2KJtAprNPq7IZmedD2VLMePvPW+ohX3uDnkpoKritBji+/RtRmTKrdtPi3Uvp0toq/KtPttAds1dr7AZNpw==" 11 | }, 12 | "add": { 13 | "version": "2.0.6", 14 | "resolved": "https://registry.npmjs.org/add/-/add-2.0.6.tgz", 15 | "integrity": "sha1-JI8Kn25aUo7yKV2+7DBTITCuIjU=" 16 | }, 17 | "react-timer-mixin": { 18 | "version": "0.13.4", 19 | "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", 20 | "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q==" 21 | }, 22 | "yarn": { 23 | "version": "1.17.3", 24 | "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.17.3.tgz", 25 | "integrity": "sha512-CgA8o7nRZaQvmeF/WBx2FC7f9W/0X59T2IaLYqgMo6637wfp5mMEsM3YXoJtKUspnpmDJKl/gGFhnqS+sON7hA==" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-carousel", 3 | "version": "0.12.0", 4 | "description": "Simple carousel component for react-native", 5 | "main": "Carousel.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/nick/react-native-carousel.git" 12 | }, 13 | "keywords": [ 14 | "react-native", 15 | "carousel" 16 | ], 17 | "author": "Nick Poulden (https://github.com/nick)", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/nick/react-native-carousel/issues" 21 | }, 22 | "homepage": "https://github.com/nick/react-native-carousel", 23 | "dependencies": { 24 | "@react-native-community/viewpager": "^1.1.7", 25 | "react-timer-mixin": "^0.13.3" 26 | }, 27 | "peerDependencies": { 28 | "create-react-class": ">=15.6.2", 29 | "react-native": ">=0.28 <1.0" 30 | } 31 | } 32 | --------------------------------------------------------------------------------