From a2b93c3ac6a21f5d01f1f627a631874d17b66c91 Mon Sep 17 00:00:00 2001 From: Mark Seinen Date: Thu, 15 Feb 2018 09:28:57 +0100 Subject: [PATCH 01/10] After the scroller is finished, update the scroll position of the flatlist --- src/libraries/ViewPager/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/ViewPager/index.js b/src/libraries/ViewPager/index.js index b786ad1..8e3b88a 100644 --- a/src/libraries/ViewPager/index.js +++ b/src/libraries/ViewPager/index.js @@ -65,13 +65,13 @@ export default class ViewPager extends PureComponent { createScroller () { return new Scroller(true, (dx, dy, scroller) => { + const curX = this.scroller.getCurrX(); + this.refs['innerFlatList'] && this.refs['innerFlatList'].scrollToOffset({ offset: curX, animated: false }); if (dx === 0 && dy === 0 && scroller.isFinished()) { if (!this.activeGesture) { this.onPageScrollStateChanged('idle'); } } else { - const curX = this.scroller.getCurrX(); - this.refs['innerFlatList'] && this.refs['innerFlatList'].scrollToOffset({ offset: curX, animated: false }); let position = Math.floor(curX / (this.state.width + this.props.pageMargin)); position = this.validPage(position); From a212f8e8f8933b4bf1a8cbd4530e68068252c554 Mon Sep 17 00:00:00 2001 From: Alex Yu Date: Mon, 26 Feb 2018 20:23:21 -0600 Subject: [PATCH 02/10] expose image load events and bind responders --- src/Gallery.js | 20 ++++++++++++++++++-- src/libraries/TransformableImage/index.js | 7 +++++++ src/libraries/ViewTransformer/index.js | 8 ++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index 5cc4835..4ff5692 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -25,7 +25,9 @@ export default class Gallery extends PureComponent { removeClippedSubviews: PropTypes.bool, imageComponent: PropTypes.func, errorComponent: PropTypes.func, - flatListProps: PropTypes.object + flatListProps: PropTypes.object, + onLoad: PropTypes.func, + onLoadStart: PropTypes.func }; static defaultProps = { @@ -225,9 +227,23 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; + const { + onViewTransformed, + onTransformGestureReleased, + errorComponent, + imageComponent, + onError, + onLoad, + onLoadEnd, + onLoadStart + } = this.props; + return ( { onViewTransformed && onViewTransformed(transform, pageId); })} diff --git a/src/libraries/TransformableImage/index.js b/src/libraries/TransformableImage/index.js index 8ff8469..e30a04e 100644 --- a/src/libraries/TransformableImage/index.js +++ b/src/libraries/TransformableImage/index.js @@ -36,6 +36,7 @@ export default class TransformableImage extends PureComponent { constructor (props) { super(props); + this.onError = this.onError.bind(this); this.onLayout = this.onLayout.bind(this); this.onLoad = this.onLoad.bind(this); this.onLoadStart = this.onLoadStart.bind(this); @@ -75,6 +76,11 @@ export default class TransformableImage extends PureComponent { this._mounted = false; } + onError (e) { + this.props.onError && this.props.onError(e); + this.setState({ error: true }); + } + onLoadStart (e) { this.props.onLoadStart && this.props.onLoadStart(e); if (this.state.imageLoaded) { @@ -167,6 +173,7 @@ export default class TransformableImage extends PureComponent { source: image.source, style: [style, { backgroundColor: 'transparent' }], resizeMode: resizeMode, + onError: this.onError, onLoadStart: this.onLoadStart, onLoad: this.onLoad, capInsets: { left: 0.1, top: 0.1, right: 0.1, bottom: 0.1 } diff --git a/src/libraries/ViewTransformer/index.js b/src/libraries/ViewTransformer/index.js index f919e99..8eee8cb 100644 --- a/src/libraries/ViewTransformer/index.js +++ b/src/libraries/ViewTransformer/index.js @@ -100,10 +100,10 @@ export default class ViewTransformer extends React.Component { onStartShouldSetResponder: (evt, gestureState) => true, onMoveShouldSetResponderCapture: (evt, gestureState) => true, // onMoveShouldSetResponder: this.handleMove, - onResponderMove: this.onResponderMove, - onResponderGrant: this.onResponderGrant, - onResponderRelease: this.onResponderRelease, - onResponderTerminate: this.onResponderRelease, + onResponderMove: this.onResponderMove.bind(this), + onResponderGrant: this.onResponderGrant.bind(this), + onResponderRelease: this.onResponderRelease.bind(this), + onResponderTerminate: this.onResponderRelease.bind(this), onResponderTerminationRequest: (evt, gestureState) => false, // Do not allow parent view to intercept gesture onResponderSingleTapConfirmed: (evt, gestureState) => { this.props.onSingleTapConfirmed && this.props.onSingleTapConfirmed(); From 7aa4a5bea2b0b76c092c3c21ca39f2286853396d Mon Sep 17 00:00:00 2001 From: Dimitar Belchev Date: Tue, 27 Feb 2018 10:59:44 +0200 Subject: [PATCH 03/10] Image loading activity indicator added. --- src/Gallery.js | 6 ++-- src/libraries/ActivityIndicator/index.js | 26 ++++++++++++++ src/libraries/TransformableImage/index.js | 41 +++++++++++++---------- 3 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 src/libraries/ActivityIndicator/index.js diff --git a/src/Gallery.js b/src/Gallery.js index 5cc4835..7e79282 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import { View, ViewPropTypes } from 'react-native'; +import { View, ViewPropTypes, ActivityIndicator } from 'react-native'; import PropTypes from 'prop-types'; import { createResponder } from './libraries/GestureResponder'; import TransformableImage from './libraries/TransformableImage'; @@ -13,6 +13,7 @@ export default class Gallery extends PureComponent { static propTypes = { ...View.propTypes, images: PropTypes.arrayOf(PropTypes.object), + imageLoadingActivityIndicator: PropTypes.shape(ActivityIndicator.propTypes), initialPage: PropTypes.number, scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, pageMargin: PropTypes.number, @@ -225,7 +226,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; + const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent, imageLoadingActivityIndicator } = this.props; return ( { @@ -240,6 +241,7 @@ export default class Gallery extends PureComponent { errorComponent={errorComponent} imageComponent={imageComponent} image={pageData} + imageLoadingActivityIndicator={imageLoadingActivityIndicator} /> ); } diff --git a/src/libraries/ActivityIndicator/index.js b/src/libraries/ActivityIndicator/index.js new file mode 100644 index 0000000..27363c4 --- /dev/null +++ b/src/libraries/ActivityIndicator/index.js @@ -0,0 +1,26 @@ +import React from 'react'; +import {View, Platform, ActivityIndicator} from 'react-native'; +import PropTypes from 'prop-types'; + +const DEFAULT_LOADER_SIZE = Platform.OS === 'ios' ? 'large' : 50; + +const ActivityIndicatorComponent = (props) => { + return ( + + + + ); +}; + +ActivityIndicatorComponent.propTypes = ActivityIndicator.propTypes; + +export default ActivityIndicatorComponent; diff --git a/src/libraries/TransformableImage/index.js b/src/libraries/TransformableImage/index.js index 8ff8469..d3bf35e 100644 --- a/src/libraries/TransformableImage/index.js +++ b/src/libraries/TransformableImage/index.js @@ -1,7 +1,8 @@ import React, { PureComponent } from 'react'; -import { View, Text, Image, ViewPropTypes } from 'react-native'; +import { View, Text, Image, ViewPropTypes, ActivityIndicator } from 'react-native'; import PropTypes from 'prop-types'; import ViewTransformer from '../ViewTransformer'; +import ImageLoadingIndicator from '../ActivityIndicator'; export default class TransformableImage extends PureComponent { static propTypes = { @@ -22,7 +23,8 @@ export default class TransformableImage extends PureComponent { onViewTransformed: PropTypes.func, imageComponent: PropTypes.func, resizeMode: PropTypes.string, - errorComponent: PropTypes.func + errorComponent: PropTypes.func, + imageLoadingActivityIndicator: PropTypes.shape(ActivityIndicator.propTypes), }; static defaultProps = { @@ -142,7 +144,7 @@ export default class TransformableImage extends PureComponent { render () { const { imageDimensions, viewWidth, viewHeight, error, keyAccumulator, imageLoaded } = this.state; - const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed } = this.props; + const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed, imageLoadingActivityIndicator } = this.props; let maxScale = 1; let contentAspectRatio; @@ -175,21 +177,24 @@ export default class TransformableImage extends PureComponent { const content = imageComponent ? imageComponent(imageProps, imageDimensions) : ; return ( - - { error ? this.renderError() : content } - + + + { error ? this.renderError() : content } + + {!imageLoaded && } + ); } } From 293678c3ce2e2e78a6d456c8574b6e327d2f7507 Mon Sep 17 00:00:00 2001 From: Dimitar Belchev Date: Tue, 27 Feb 2018 11:28:36 +0200 Subject: [PATCH 04/10] Documentation added --- README.md | 1 + src/Gallery.js | 6 +++--- src/libraries/ActivityIndicator/index.js | 7 ++----- src/libraries/TransformableImage/index.js | 6 +++--- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a7d31d6..944fd6a 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Prop | Description | Type | Default `scrollViewStyle` | Custom style for the `FlatList` component | `object` | `{}` `onSingleTapConfirmed` | Fired after a single tap | `function` `onLongPress` | Fired after a long press | `function` +`imageLoadingIndicatorProps` | Props to be passed to the underlying image `ActivityIndicator` component | `object` | React Native `ActivityIndicator` defaults ## Scroll state and events diff --git a/src/Gallery.js b/src/Gallery.js index 7e79282..b7a71be 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -13,7 +13,7 @@ export default class Gallery extends PureComponent { static propTypes = { ...View.propTypes, images: PropTypes.arrayOf(PropTypes.object), - imageLoadingActivityIndicator: PropTypes.shape(ActivityIndicator.propTypes), + imageLoadingIndicatorProps: PropTypes.shape(ActivityIndicator.propTypes), initialPage: PropTypes.number, scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, pageMargin: PropTypes.number, @@ -226,7 +226,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent, imageLoadingActivityIndicator } = this.props; + const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent, imageLoadingIndicatorProps } = this.props; return ( { @@ -241,7 +241,7 @@ export default class Gallery extends PureComponent { errorComponent={errorComponent} imageComponent={imageComponent} image={pageData} - imageLoadingActivityIndicator={imageLoadingActivityIndicator} + imageLoadingIndicatorProps={imageLoadingIndicatorProps} /> ); } diff --git a/src/libraries/ActivityIndicator/index.js b/src/libraries/ActivityIndicator/index.js index 27363c4..919767a 100644 --- a/src/libraries/ActivityIndicator/index.js +++ b/src/libraries/ActivityIndicator/index.js @@ -1,8 +1,5 @@ import React from 'react'; -import {View, Platform, ActivityIndicator} from 'react-native'; -import PropTypes from 'prop-types'; - -const DEFAULT_LOADER_SIZE = Platform.OS === 'ios' ? 'large' : 50; +import {View, ActivityIndicator} from 'react-native'; const ActivityIndicatorComponent = (props) => { return ( @@ -16,7 +13,7 @@ const ActivityIndicatorComponent = (props) => { bottom: 0, left: 0 }}> - + ); }; diff --git a/src/libraries/TransformableImage/index.js b/src/libraries/TransformableImage/index.js index d3bf35e..34a3ba6 100644 --- a/src/libraries/TransformableImage/index.js +++ b/src/libraries/TransformableImage/index.js @@ -24,7 +24,7 @@ export default class TransformableImage extends PureComponent { imageComponent: PropTypes.func, resizeMode: PropTypes.string, errorComponent: PropTypes.func, - imageLoadingActivityIndicator: PropTypes.shape(ActivityIndicator.propTypes), + imageLoadingIndicatorProps: PropTypes.shape(ActivityIndicator.propTypes), }; static defaultProps = { @@ -144,7 +144,7 @@ export default class TransformableImage extends PureComponent { render () { const { imageDimensions, viewWidth, viewHeight, error, keyAccumulator, imageLoaded } = this.state; - const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed, imageLoadingActivityIndicator } = this.props; + const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed, imageLoadingIndicatorProps } = this.props; let maxScale = 1; let contentAspectRatio; @@ -193,7 +193,7 @@ export default class TransformableImage extends PureComponent { style={style}> { error ? this.renderError() : content } - {!imageLoaded && } + {!imageLoaded && } ); } From 29e2b214d59d879681b03e2acd9cf92b1adc3b1b Mon Sep 17 00:00:00 2001 From: Dimitar Belchev Date: Tue, 27 Feb 2018 11:46:32 +0200 Subject: [PATCH 05/10] Removed redundant attribute from ActivityIndicatorComponent --- src/libraries/ActivityIndicator/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libraries/ActivityIndicator/index.js b/src/libraries/ActivityIndicator/index.js index 919767a..b01dc71 100644 --- a/src/libraries/ActivityIndicator/index.js +++ b/src/libraries/ActivityIndicator/index.js @@ -4,7 +4,6 @@ import {View, ActivityIndicator} from 'react-native'; const ActivityIndicatorComponent = (props) => { return ( Date: Fri, 6 Apr 2018 14:28:52 -0700 Subject: [PATCH 06/10] fix(ViewTransformer): import findNodeHandle from react-native for improved tree shaking --- src/libraries/ViewTransformer/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/ViewTransformer/index.js b/src/libraries/ViewTransformer/index.js index f919e99..155a1eb 100644 --- a/src/libraries/ViewTransformer/index.js +++ b/src/libraries/ViewTransformer/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactNative, { View, Animated, Easing, NativeModules } from 'react-native'; +import { View, Animated, Easing, NativeModules, findNodeHandle } from 'react-native'; import Scroller from '../Scroller'; import PropTypes from 'prop-types'; import { createResponder } from '../GestureResponder'; @@ -161,7 +161,7 @@ export default class ViewTransformer extends React.Component { } measureLayout () { - let handle = ReactNative.findNodeHandle(this.refs['innerViewRef']); + let handle = findNodeHandle(this.refs['innerViewRef']); NativeModules.UIManager.measure(handle, (x, y, width, height, pageX, pageY) => { if (typeof pageX === 'number' && typeof pageY === 'number') { // avoid undefined values on Android devices if (this.state.pageX !== pageX || this.state.pageY !== pageY) { From 58a9f4d60eab8bb0b01e48142cc445f317fca320 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Thu, 30 Aug 2018 11:21:43 -0600 Subject: [PATCH 07/10] Add onEndReached props. --- README.md | 2 ++ src/Gallery.js | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index a7d31d6..7f40401 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,8 @@ Prop | Description | Type | Default `errorComponent` | Custom function to render the page of an image that couldn't be displayed | `function` | A `` with a stylized error `flatListProps` | Props to be passed to the underlying `FlatList` | `object` | `{windowSize: 3}` `pageMargin` | Blank space to show between images | `number` | `0` +`onEndReached` | Fired when the page index is within the `onEndReachedThreshold` of the `images` content | `function` +`onEndReachedThreshold` | How far from the end (in units of visible length of the list) the end of the list of images must be from the end of the content to trigger the onEndReached callback. Thus a value of 0.5 will trigger onEndReached when the end of the content is within half the visible length of the images. | `number` | `0.5` `onPageSelected` | Fired with the index of page that has been selected | `function` `onPageScrollStateChanged` | Called when page scrolling state has changed, see [scroll state and events](#scroll-state-and-events) | `function` `onPageScroll` | Scroll event, see [scroll state and events](#scroll-state-and-events) | `function` diff --git a/src/Gallery.js b/src/Gallery.js index 5cc4835..ced7020 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -16,6 +16,8 @@ export default class Gallery extends PureComponent { initialPage: PropTypes.number, scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, pageMargin: PropTypes.number, + onEndReached: PropTypes.func, + onEndReachedThreshold: PropTypes.number, onPageSelected: PropTypes.func, onPageScrollStateChanged: PropTypes.func, onPageScroll: PropTypes.func, @@ -32,6 +34,7 @@ export default class Gallery extends PureComponent { removeClippedSubviews: true, imageComponent: undefined, scrollViewStyle: {}, + onEndReachedThreshold: 0.5, flatListProps: DEFAULT_FLAT_LIST_PROPS }; @@ -215,6 +218,9 @@ export default class Gallery extends PureComponent { onPageSelected (page) { this.currentPage = page; this.props.onPageSelected && this.props.onPageSelected(page); + if (page + 1 > this.props.onEndReachedThreshold * this.props.images.length) { + this.props.onEndReached && this.props.onEndReached(); + } } onPageScrollStateChanged (state) { From 7bf3217821edbf1e3db113279712dc00dcfd7e89 Mon Sep 17 00:00:00 2001 From: Brent Vale Date: Mon, 19 Nov 2018 08:32:34 -0800 Subject: [PATCH 08/10] converted keyExtractor to string as is required by react-native --- src/libraries/ViewPager/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/ViewPager/index.js b/src/libraries/ViewPager/index.js index b786ad1..096d34f 100644 --- a/src/libraries/ViewPager/index.js +++ b/src/libraries/ViewPager/index.js @@ -260,7 +260,7 @@ export default class ViewPager extends PureComponent { } keyExtractor (item, index) { - return index; + return index.toString(); } renderRow ({ item, index }) { From 410b9ea4851d17db0ccc2154d43f4a59b63487b7 Mon Sep 17 00:00:00 2001 From: Brent Vale Date: Mon, 19 Nov 2018 08:34:07 -0800 Subject: [PATCH 09/10] properly spreads Flatlist props so passed in props are applied over other defined attributes --- src/libraries/ViewPager/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/ViewPager/index.js b/src/libraries/ViewPager/index.js index 096d34f..4727505 100644 --- a/src/libraries/ViewPager/index.js +++ b/src/libraries/ViewPager/index.js @@ -316,7 +316,6 @@ export default class ViewPager extends PureComponent { style={[style, { flex: 1 }]} {...gestureResponder}> ); From 872f298dcfc3f614b86c2175c33cf3aaf1c3e7cd Mon Sep 17 00:00:00 2001 From: Eren Date: Tue, 25 Jun 2019 19:25:48 +0300 Subject: [PATCH 10/10] expose image load events and bind responders --- src/.vs/VSWorkspaceState.json | 6 ++++++ src/.vs/slnx.sqlite | Bin 0 -> 126976 bytes src/.vs/src/v15/.suo | Bin 0 -> 12288 bytes 3 files changed, 6 insertions(+) create mode 100644 src/.vs/VSWorkspaceState.json create mode 100644 src/.vs/slnx.sqlite create mode 100644 src/.vs/src/v15/.suo diff --git a/src/.vs/VSWorkspaceState.json b/src/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6b61141 --- /dev/null +++ b/src/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/src/.vs/slnx.sqlite b/src/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..10fccf32e736123cfda0a80c51f1afd21ffe3958 GIT binary patch literal 126976 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

#p{AHqz)JK`HcQdlK8T_3x? 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 I-|dHg0Mf_S*#H0l literal 0 HcmV?d00001