{"_id":"@anindya2791/react-native-tab-view","_rev":"1-80d3b289e023b0733a60097ffa517896","name":"@anindya2791/react-native-tab-view","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anindya2791/react-native-tab-view","version":"1.0.0","description":"Tab view component for React Native","main":"src/index.js","scripts":{"test":"jest","flow":"flow","lint":"eslint .","precommit":"yarn lint && yarn flow && yarn test"},"keywords":["react-native-component","react-component","react-native","ios","android","tab","swipe","scrollable","coverflow"],"repository":{"type":"git","url":"git+https://github.com/react-native-community/react-native-tab-view.git"},"author":{"name":"Satyajit Sahoo","email":"satyajit.happy@gmail.com","url":"https://github.com/satya164/"},"license":"MIT","bugs":{"url":"https://github.com/react-native-community/react-native-tab-view/issues"},"homepage":"https://github.com/react-native-community/react-native-tab-view#readme","dependencies":{"prop-types":"^15.6.1"},"devDependencies":{"@expo/vector-icons":"^6.3.1","babel-jest":"^22.4.4","babel-preset-react-native":"^4.0.0","enzyme":"3.3.0","enzyme-adapter-react-16":"^1.1.1","enzyme-to-json":"^3.3.4","eslint":"^4.19.1","eslint-config-satya164":"^1.0.2","eslint-plugin-react-native-globals":"^0.1.2","flow-bin":"~0.67.1","husky":"^0.14.3","jest":"^22.4.4","prettier":"^1.13.4","react":"16.3.1","react-dom":"16.3.1","react-native":"~0.55.4","react-test-renderer":"16.3.1"},"peerDependencies":{"react":"*","react-native":"*"},"jest":{"preset":"react-native","setupFiles":["<rootDir>/__setup__/enzyme.js"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules"],"snapshotSerializers":["enzyme-to-json/serializer"]},"directories":{"example":"example"},"gitHead":"0f575a67911777ef348dff73fe6c9de34d1eadb7","_id":"@anindya2791/react-native-tab-view@1.0.0","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-1NvEmUTK/ExuEHwyAuWGyRAfvDPaOMng9otunv+gLIgwd0FdvVLwmPNbprEDH+rnT1ZOnaFVHG+AsaDqHM+25g==","shasum":"ead809e524693cadc9a6d79a93c627cedbbfd599","tarball":"https://registry.npmjs.org/@anindya2791/react-native-tab-view/-/react-native-tab-view-1.0.0.tgz","fileCount":16,"unpackedSize":68185,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK1D1iiGWBcJlvYUA7Tky8r0UORkw/vCN7HD2zLUwc3AIhAOsdGX94wVrJ2+joNpnrlzRJWhcckATbnwA4d78ElpSA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZTX7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpINQ//Uw6pfhByrZTz7hoxLbLmZ0GQK/JirVEFqLCdM3I3dFpUyJZh\r\nDNykcBHcf9sCUhM2LbYLz3wnEle0cSREE3dRnvqhqWHw5GkJL8XpMTONutJH\r\n9wznaQSnTGPz1t0ZhgDk9WFLFCiSlAQtDg6X4rl8pEYik0MYTJIVxnRiI30M\r\nkW0AAALDHwD4MDvocfyfVVKFcrt3k8ftrVi2i+PY7zLsi6tN1fG6hO4LqnZQ\r\nhtWxZNyYkZpR//cCGddn4YLJtRoMO0UHr86G5RcgahCQ9qiMZ+E+krbLOZ0r\r\nNBEqEiedCtgMFuAty21PL36USOzXVUXuMKpkIMgjIxOScwtAW+aIfvoK2ce+\r\nwdp8VRG334wvmemsWUKRSg6zxuchAheMqJEzFkN/dN4AnVOvsCHYOsputJ2y\r\nrmKb03xDWhkI2r6vdASGTXpoOwAJkJHXOL6LZ8CIJzSRggO3C5aYb6mBiaxY\r\nQsqDzyc6Se1xT22DYd78oEZxrsRJKLzIdGUA8II/jJevcTXMZstS2rZc6Ida\r\n2mSnkWgNFAfXjM5Hfyrs4y5qJsepNjDxLwPv4D3GC6WBTxDfOouQYUmWLO3G\r\nL22Nr6rd2Xuut/+iW8zUZlvOHEMNmZuzgiIMPlYXFKATLa878Rf2zwVRDiLA\r\nRwpghvgE2OTTQhQCE/U2pZpgRGlNXeEwif4=\r\n=FYcM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anindya2791","email":"amukherjee528@gmail.com"},"maintainers":[{"name":"anindya2791","email":"amukherjee528@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-tab-view_1.0.0_1667577339200_0.39755980058674334"},"_hasShrinkwrap":false},"1.1.0":{"name":"@anindya2791/react-native-tab-view","version":"1.1.0","description":"Tab view component for React Native","main":"src/index.js","scripts":{"test":"jest","flow":"flow","lint":"eslint .","precommit":"yarn lint && yarn flow && yarn test"},"keywords":["react-native-component","react-component","react-native","ios","android","tab","swipe","scrollable","coverflow"],"repository":{"type":"git","url":"git+https://github.com/react-native-community/react-native-tab-view.git"},"author":{"name":"Satyajit Sahoo","email":"satyajit.happy@gmail.com","url":"https://github.com/satya164/"},"license":"MIT","bugs":{"url":"https://github.com/react-native-community/react-native-tab-view/issues"},"homepage":"https://github.com/react-native-community/react-native-tab-view#readme","dependencies":{"prop-types":"^15.6.1"},"devDependencies":{"@expo/vector-icons":"^6.3.1","babel-jest":"^22.4.4","babel-preset-react-native":"^4.0.0","enzyme":"3.3.0","enzyme-adapter-react-16":"^1.1.1","enzyme-to-json":"^3.3.4","eslint":"^4.19.1","eslint-config-satya164":"^1.0.2","eslint-plugin-react-native-globals":"^0.1.2","flow-bin":"~0.67.1","husky":"^0.14.3","jest":"^22.4.4","prettier":"^1.13.4","react":"16.3.1","react-dom":"16.3.1","react-native":"~0.55.4","react-test-renderer":"16.3.1"},"peerDependencies":{"react":"*","react-native":"*"},"jest":{"preset":"react-native","setupFiles":["<rootDir>/__setup__/enzyme.js"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules"],"snapshotSerializers":["enzyme-to-json/serializer"]},"directories":{"example":"example"},"gitHead":"fcb73fd727dba1ccf0f7a9dd640b0a1b31fd21f0","_id":"@anindya2791/react-native-tab-view@1.1.0","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-JxTyfJQzRPTdf6x34jnW+yRrpd6n/dUHYDU6zEWJQF+f4dzvSQdznTt84vxSuM6l3c32zpeqybvVt3qedkV2cA==","shasum":"db0ed4bcf73b724187c289d37c99c79aa3405707","tarball":"https://registry.npmjs.org/@anindya2791/react-native-tab-view/-/react-native-tab-view-1.1.0.tgz","fileCount":16,"unpackedSize":68134,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuAncG/EpTdz9lIxpZY9NDQzp3Y8g+Yy/LKRaVjoMTiAIgQvhhC4eVJA+fXuFBfVw8Yql8HD8EAa7S8GXygnecfLM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyROFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpeTg//bovDSH+CUcK5gNn4jvAYw0nKDeuqhFlM4211kPe289mWxnhn\r\nrPr9xgBpd7Zd5EkyIvb2OMCaUiSnTn5gIQ91JUFOcZ7i+Dy50HHwTotPj5bc\r\n0RxZUiUC2WPWpEK4x34dLiuYrqBaim+0gJvbBebZH9ZbYBrgGINL+hUwbZAd\r\nJIcjS/2gJTcdqfKn/eH6SNBKU9uQPrpHiMNvxefx23rgaobrh/BK9jCDDQl1\r\n4O5+BJIBuibJ9hDzka1/B3LdRplRbO68R20RPwyCC2Bnx43QDbxnntzHazKA\r\n17AK72pRjiTgLLFz/x5vFAqDsr8+GgdEZi3ykkR4YXma3TnUorxVs/GrZowE\r\nK6hfwRD1/Tx5VRsRPDDxYJn7VGlPqbt8ck5hgXYO4tX+lDub4FsAw8R9jPbg\r\nJXYDVA4kXqRa4yTxwD1U4vXWrnojKi9+Z1CGECIfSeCxIEoXcxut9g16QXaL\r\nzE9n8IGvkvDyL/TvN1OA5jJJgb8fxG65NRGjD4DFsLI5X6THqKl5B55ZX4LB\r\njs7IgFYfG1y2V+vy1EZ6BzvH2ZG46bHo7KRlxGPts25QXiLgma5s2laZuSJH\r\nugv06KRH2RrfMKxqzicMJaSRFs5sK3ZJqAqc1PDdxNMaAlWu3JonTHXeaggy\r\nh01v6kzjAY9VBQzaBAjeP5kdGd2NaLAOTbI=\r\n=js4T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anindya2791","email":"amukherjee528@gmail.com"},"maintainers":[{"name":"anindya2791","email":"amukherjee528@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-tab-view_1.1.0_1674122116930_0.985787999656635"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-04T15:55:39.121Z","1.0.0":"2022-11-04T15:55:39.406Z","modified":"2023-01-19T09:55:17.170Z","1.1.0":"2023-01-19T09:55:17.092Z"},"maintainers":[{"name":"anindya2791","email":"amukherjee528@gmail.com"}],"description":"Tab view component for React Native","homepage":"https://github.com/react-native-community/react-native-tab-view#readme","keywords":["react-native-component","react-component","react-native","ios","android","tab","swipe","scrollable","coverflow"],"repository":{"type":"git","url":"git+https://github.com/react-native-community/react-native-tab-view.git"},"author":{"name":"Satyajit Sahoo","email":"satyajit.happy@gmail.com","url":"https://github.com/satya164/"},"bugs":{"url":"https://github.com/react-native-community/react-native-tab-view/issues"},"license":"MIT","readme":"# React Native Tab View\n\n[![Build Status][build-badge]][build]\n[![Version][version-badge]][package]\n[![MIT License][license-badge]][license]\n\nA cross-platform Tab View component for React Native.\n\nThis is a JavaScript-only implementation of swipeable tab views. It's super customizable, allowing you to do things like coverflow.\n\n- [Run the example app to see it in action](https://expo.io/@satya164/react-native-tab-view-demos).\n- Checkout the [example/](https://github.com/react-native-community/react-native-tab-view/tree/master/example) folder for source code.\n\n## Features\n\n- Smooth animations and gestures\n- Scrollable tabs\n- Supports both top and bottom tab bars\n- Follows Material Design spec\n- Highly customizable\n- Fully typed with [Flow](https://flow.org/)\n\n## Demo\n\n<a href=\"https://raw.githubusercontent.com/satya164/react-native-tab-view/master/demo/demo.mp4\"><img src=\"https://raw.githubusercontent.com/satya164/react-native-tab-view/master/demo/demo.gif\" width=\"360\"></a>\n\n## Installation\n\n```sh\nyarn add react-native-tab-view\n```\n\n## Quick Start\n\n```js\nimport * as React from 'react';\nimport { View, StyleSheet, Dimensions } from 'react-native';\nimport { TabView, TabBar, SceneMap } from 'react-native-tab-view';\n\nconst FirstRoute = () => (\n  <View style={[styles.container, { backgroundColor: '#ff4081' }]} />\n);\nconst SecondRoute = () => (\n  <View style={[styles.container, { backgroundColor: '#673ab7' }]} />\n);\n\nexport default class TabViewExample extends React.Component {\n  state = {\n    index: 0,\n    routes: [\n      { key: 'first', title: 'First' },\n      { key: 'second', title: 'Second' },\n    ],\n  };\n\n  _handleIndexChange = index => this.setState({ index });\n\n  render() {\n    return (\n      <TabView\n        navigationState={this.state}\n        renderScene={SceneMap({\n          first: FirstRoute,\n          second: SecondRoute,\n        })}\n        onIndexChange={this._handleIndexChange}\n        initialLayout={{ width: Dimensions.get('window').width }}\n      />\n    );\n  }\n}\n```\n\n## Integration with React Navigation\n\nReact Navigation integration can be achieved by the [react-navigation-tabs](https://github.com/react-navigation/react-navigation-tabs) package. Note that while it's easier to use, it is not as flexible as using the library directly.\n\n## Examples on Snack\n\n- [Quick Start](https://snack.expo.io/@satya164/react-native-tab-view-quick-start)\n- [Custom Tab Bar](https://snack.expo.io/@satya164/custom-tabbar-example)\n\n## API reference\n\nThe package exports a `TabView` component which is the one you'd use to render the tab view, a `TabBar` component which is the default tab bar implementation, as well as several pager components for more fine-grained control.\n\nIn a trivial app, you'd mostly only use `TabView` and `TabBar`.\n\n### `<TabView />`\n\nContainer component responsible for rendering and managing tabs.\n\n#### Example\n\n```js\n<TabView\n  navigationState={this.state}\n  onIndexChange={index => this.setState({ index })}\n  renderScene={SceneMap({\n    first: FirstRoute,\n    second: SecondRoute,\n  })}\n/>\n```\n\n#### Props\n\n- `navigationState` (required): the current navigation state, should contain a `routes` array containing the list of tabs, and an `index` property representing the current tab.\n- `onIndexChange` (required): callback for when the current tab index changes, should update the navigation state.\n- `renderScene` (required): callback which returns a React Element to use as the scene for a tab.\n- `renderTabBar`: callback which returns a custom React Element to use as the tab bar.\n- `renderPager`: callback which returns a custom React Element to handle swipe gesture and animation.\n- `canJumpToTab`: callback which returns a boolean indicating whether jumping to the tab is allowed.\n- `initialLayout`: object containing the initial `height` and `width`, can be passed to prevent the one frame delay in rendering.\n- `tabBarPosition`: position of the tab bar, `'top'` or `'bottom'`. Defaults to `'top'`.\n\nAny other props are passed to the underlying pager.\n\n### `<TabBar />`\n\nMaterial design themed tab bar. To pass props to the tab bar, you'd need to use the `renderTabBar` prop of `TabView` to render the `TabBar` and pass additional props.\n\n#### Example\n\n```js\nrenderTabBar={props =>\n  <TabBar\n    {...props}\n    indicatorStyle={{ backgroundColor: 'pink' }}\n  />\n}\n```\n\n#### Props\n\n- `getLabelText`: callback which returns the label text to use for a tab. Defaults to uppercased route title.\n- `getAccessible`: callback which returns a boolean to indicate whether to mark a tab as `accessible`. Defaults to `true`.\n- `getAccessibilityLabel`: callback which returns an accessibility label for the tab. Defaults to route title.\n- `getTestID`: callback which returns a test id for the tab.\n- `renderIcon`: callback which returns a custom React Element to be used as a icon.\n- `renderLabel`: callback which returns a custom React Element to be used as a label.\n- `renderIndicator`: callback which returns a custom React Element to be used as a tab indicator.\n- `renderBadge`: callback which returns a custom React Element to be used as a badge.\n- `onTabPress`: callback invoked on tab press, useful for things like scroll to top.\n- `pressColor`: color for material ripple (Android >= 5.0 only).\n- `pressOpacity`: opacity for pressed tab (iOS and Android < 5.0 only).\n- `scrollEnabled`: whether to enable scrollable tabs.\n- `bounces`: whether the tab bar bounces when scrolling.\n- `useNativeDriver`: whether to use native animations.\n- `tabStyle`: style object for the individual tabs in the tab bar.\n- `indicatorStyle`: style object for the active indicator.\n- `labelStyle`: style object for the tab item label.\n- `style`: style object for the tab bar.\n\n### `<PagerPan />`\n\nCross-platform pager based on the [`PanResponder`](https://facebook.github.io/react-native/docs/panresponder.html).\n\n#### Props\n\n- `animationEnabled`: whether to enable page change animation.\n- `swipeEnabled`: whether to enable swipe gestures.\n- `swipeDistanceThreshold`: minimum swipe distance to trigger page switch.\n- `swipeVelocityThreshold`: minimum swipe velocity to trigger page switch.\n- `onSwipeStart`: optional callback when a swipe gesture starts.\n- `onSwipeEnd`: optional callback when a swipe gesture ends.\n- `onAnimationEnd`: optional callback when the transition animation ends.\n- `getTestID`: optional callback which receives the current scene and returns a test id for the tab.\n- `children`: React Element(s) to render.\n\n### `<PagerScroll />`\n\nCross-platform pager based on [`ScrollView`](https://facebook.github.io/react-native/docs/scrollview.html) (default on iOS).\n\n#### Props\n\n- `animationEnabled`: whether to enable page change animation.\n- `swipeEnabled`: whether to enable swipe gestures.\n- `onSwipeStart`: optional callback when a swipe gesture starts.\n- `onSwipeEnd`: optional callback when a swipe gesture ends.\n- `onAnimationEnd`: optional callback when the transition animation ends.\n- `getTestID`: optional callback which receives the current scene and returns a test id for the tab.\n- `children`: React Element(s) to render.\n\nThere are some caveats when using this pager on Android, such as poor support for intial index other than `0` and weird animation curves.\n\n### `<PagerAndroid />`\n\nAndroid only pager based on `ViewPagerAndroid` (default on Android).\n\n#### Props\n\n- `animationEnabled`: whether to enable page change animation.\n- `swipeEnabled`: whether to enable swipe gestures.\n- `onSwipeStart`: optional callback when a swipe gesture starts.\n- `onSwipeEnd`: optional callback when a swipe gesture ends.\n- `onAnimationEnd`: optional callback when the transition animation ends.\n- `keyboardDismissMode`: whether the keyboard gets dismissed in response to a drag in [ViewPagerAndroid](https://facebook.github.io/react-native/docs/viewpagerandroid.html#keyboarddismissmode) (Default: `on-drag`).\n- `getTestID`: optional callback which receives the current scene and returns a test id for the tab.\n- `children`: React Element(s) to render.\n\n### `<PagerExperimental />`\n\nCross-platform pager component based on [`react-native-gesture-handler`](https://github.com/kmagiera/react-native-gesture-handler).\n\n#### Props\n\n- `GestureHandler`: the gesture handler module to use.\n- `animationEnabled`: whether to enable page change animation.\n- `swipeEnabled`: whether to enable swipe gestures.\n- `onSwipeStart`: optional callback when a swipe gesture starts.\n- `onSwipeEnd`: optional callback when a swipe gesture ends.\n- `onAnimationEnd`: optional callback when the transition animation ends.\n- `useNativeDriver`: whether to use native animations.\n- `getTestID`: optional callback which receives the current scene and returns a test id for the tab.\n- `children`: React Element(s) to render.\n\nThis pager is still experimental. To use this pager, you'll need to [link the `react-native-gesture-handler` library](https://github.com/kmagiera/react-native-gesture-handler#installation), and pass it as a prop to the pager:\n\n```js\nimport * as GestureHandler from 'react-native-gesture-handler';\n\n...\n\n<PagerExperimental {...props} GestureHandler={GestureHandler} />\n```\n\n### `SceneMap`\n\nHelper function which takes an object with the mapping of `route.key` to React components and returns a function to use with `renderScene` prop.\n\n```js\nrenderScene = SceneMap({\n  first: FirstRoute,\n  second: SecondRoute,\n});\n```\n\nEach scene receives the following props:\n\n- `route`: the current route rendered by the component\n- `jumpTo`: method to jump to other tabs, takes a `route.key` as it's argument\n\nAll the scenes rendered with `SceneMap` are optimized using `React.PureComponent` and don't re-render when parent's props or states change. If you don't want this behaviour, or want to pass additional props to your scene components, use `renderScene` directly instead of using `SceneMap`.\n\n```js\nrenderScene = ({ route }) => {\n  switch (route.key) {\n  case 'first':\n    return <FirstRoute />;\n  case 'second':\n    return <SecondRoute />;\n  default:\n    return null;\n  }\n```\n\nIf you don't use `SceneMap`, you will need to take care of optimizing the individual scenes.\n\n## Optimization Tips\n\n### Use native driver\n\nUsing native animations and gestures can greatly improve the performance. To use native animations and gestures, you will need to use `PagerExperimental` as your pager and pass `useNativeDriver` in `TabView`.\n\n```js\n<TabView\n  navigationState={this.state}\n  renderPager={this._renderPager}\n  renderScene={this._renderScene}\n  renderTabBar={this._renderTabBar}\n  onIndexChange={this._handleIndexChange}\n  useNativeDriver\n/>\n```\n\n_NOTE:_ Native animations are supported only for properties such as `opacity` and `translation`. If you are using a custom tab bar or indicator, you need to make sure that you animate only these style properties.\n\n### Avoid unnecessary re-renders\n\nThe `renderScene` function is called every time the index changes. If your `renderScene` function is expensive, it's good idea move each route to a separate component if they don't depend on the index, and apply `shouldComponentUpdate` to prevent unnecessary re-renders.\n\nFor example, instead of:\n\n```js\nrenderScene = ({ route }) => {\n  switch (route.key) {\n    case 'home':\n      return (\n        <View style={styles.page}>\n          <Avatar />\n          <NewsFeed />\n        </View>\n      );\n    default:\n      return null;\n  }\n};\n```\n\nDo the following:\n\n```js\nrenderScene = ({ route }) => {\n  switch (route.key) {\n    case 'home':\n      return <HomeComponent />;\n    default:\n      return null;\n  }\n};\n```\n\nWhere `<HomeComponent />` is a `PureComponent`.\n\n### Avoid one frame delay\n\nWe need to measure the width of the container and hence need to wait before rendering some elements on the screen. If you know the initial width upfront, you can pass it in and we won't need to wait for measuring it. Most of the time, it's just the window width.\n\nFor example, pass the following `initialLayout` to `TabView`:\n\n```js\nconst initialLayout = {\n  height: 0,\n  width: Dimensions.get('window').width,\n};\n```\n\nThe tab view will still react to changes in the dimension and adjust accordingly to accommodate things like orientation change.\n\n### Optimize large number of routes\n\nIf you've a large number of routes, especially images, it can slow the animation down a lot. You can instead render a limited number of routes.\n\nFor example, do the following to render only 2 routes on each side:\n\n```js\nrenderScene = ({ route }) => {\n  if (Math.abs(this.state.index - this.state.routes.indexOf(route)) > 2) {\n    return null;\n  }\n\n  return <MySceneComponent route={route} />;\n};\n```\n\n## Contributing\n\nWhile developing, you can run the [example app](/example/README.md) to test your changes.\n\nMake sure the tests still pass, and your code passes Flow and ESLint. Run the following to verify:\n\n```sh\nyarn test\nyarn flow\nyarn lint\n```\n\nTo fix formatting errors, run the following:\n\n```sh\nyarn lint -- --fix\n```\n\nRemember to add tests for your change if possible.\n\n<!-- badges -->\n\n[build-badge]: https://img.shields.io/circleci/project/github/react-native-community/react-native-tab-view/master.svg?style=flat-square\n[build]: https://circleci.com/gh/react-native-community/react-native-tab-view\n[version-badge]: https://img.shields.io/npm/v/react-native-tab-view.svg?style=flat-square\n[package]: https://www.npmjs.com/package/react-native-tab-view\n[license-badge]: https://img.shields.io/npm/l/react-native-tab-view.svg?style=flat-square\n[license]: https://opensource.org/licenses/MIT\n","readmeFilename":"README.md"}