From 0072940bc1295d88fbbe747987979ff09932d7a3 Mon Sep 17 00:00:00 2001 From: Srijan Gupta Date: Wed, 17 May 2017 23:36:34 +0530 Subject: [PATCH] add resizeMode and thumbnailSource optional --- .DS_Store | Bin 0 -> 6148 bytes README.md | 4 ++++ example/images/placeholder@2x.png | Bin 0 -> 11740 bytes example/images/placeholder@3x.png | Bin 0 -> 18460 bytes example/index.js | 2 ++ index.js | 24 ++++++++++++++---------- 6 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 .DS_Store create mode 100755 example/images/placeholder@2x.png create mode 100755 example/images/placeholder@3x.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e04219e6ba40135daee3b26497f59f6c10d2d3b4 GIT binary patch literal 6148 zcmeHK%}&BV5S|5;5@Y0GBFDXWwZgN5%GxfpqO`++}(1a>_568OJd*3-dw|YIgKXl@7wz z$SpI#3@kH{*4;dv|EE8{|Cfun#|$t7YsG-bG@6Y%F3Fs&D~qGER-(31NhmMTI4?m% i9mSYSM{xmF3Hl`&h_=B*BYIHyBA{sCh8g%%20j4=3{u(v literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 3020bf0..309dcc7 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,11 @@ import ProgressiveImage from 'react-native-progressive-image' const TheProgressiveImage = () => ``` @@ -36,6 +38,7 @@ const TheProgressiveImage = () => | Prop | Description | Default | |---|---|---| +| **`placeHolderSource`** | PlaceHolder source (e.g. require('./image.jpg')). | None | | **`imageSource`** | Image source (e.g. { uri: 'https://facebook.github.io/react/img/logo_og.png' }). | None | | **`thumbnailSource`** | Should be a low resolution version of the image used in `imageSource`. | None | | **`thumbnailBlurRadius`** | Blur radius for the low resolution thumbnail (iOS only). | `5` | @@ -44,6 +47,7 @@ const TheProgressiveImage = () => | **`thumbnailFadeDuration`** | Fade-in duration for the thumbnail in ms. | `250` | | **`onLoadThumbnail`** | Callback function that gets called when the thumbnail is loaded. | `noop` | | **`onLoadImage`** | Callback function that gets called when the main image is loaded. | `noop` | +| **`resizeMode`** | Image resizeMode (e.g. resizeMode="cover". | None | ## Credits diff --git a/example/images/placeholder@2x.png b/example/images/placeholder@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..308881f69035d263b71037cc79e3a48bcd48d46a GIT binary patch literal 11740 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 literal 0 HcmV?d00001 diff --git a/example/images/placeholder@3x.png b/example/images/placeholder@3x.png new file mode 100755 index 0000000000000000000000000000000000000000..62353dce9c508530e067a09425f49f672e89ef2e GIT binary patch literal 18460 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 P00000NkvXXu0mjfps5;j literal 0 HcmV?d00001 diff --git a/example/index.js b/example/index.js index bc5e7e5..013ed74 100644 --- a/example/index.js +++ b/example/index.js @@ -9,9 +9,11 @@ import ProgressiveImage from 'react-native-progressive-image' const TheProgressiveImage = () => export default () => diff --git a/index.js b/index.js index dd1b6e8..a6da013 100644 --- a/index.js +++ b/index.js @@ -30,19 +30,21 @@ export default class ProgressiveImage extends Component { return ( + {this.props.thumbnailSource && + this.onLoadThumbnail()} + blurRadius={this.props.thumbnailBlurRadius} + /> + } this.onLoadThumbnail()} - blurRadius={this.props.thumbnailBlurRadius} - /> - this.onLoadImage()} @@ -69,9 +71,10 @@ ProgressiveImage.propTypes = { imageFadeDuration: PropTypes.number.isRequired, onLoadThumbnail: PropTypes.func.isRequired, onLoadImage: PropTypes.func.isRequired, - thumbnailSource: PropTypes.object.isRequired, + thumbnailSource: PropTypes.object, thumbnailFadeDuration: PropTypes.number.isRequired, thumbnailBlurRadius: PropTypes.number, + resizeMode: PropTypes.string.isRequired } ProgressiveImage.defaultProps = { @@ -80,4 +83,5 @@ ProgressiveImage.defaultProps = { thumbnailBlurRadius: 5, onLoadThumbnail: Function.prototype, onLoadImage: Function.prototype, + resizeMode: 'cover' }