react-native-app-onboard 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -7
- package/lib/commonjs/components/CustomPages.js +31 -54
- package/lib/commonjs/components/CustomPages.js.map +1 -1
- package/lib/commonjs/components/OnboardingPages.js +59 -74
- package/lib/commonjs/components/OnboardingPages.js.map +1 -1
- package/lib/commonjs/components/Page.js +8 -3
- package/lib/commonjs/components/Page.js.map +1 -1
- package/lib/commonjs/components/Pagination.js +75 -13
- package/lib/commonjs/components/Pagination.js.map +1 -1
- package/lib/commonjs/components/Swiper.js +58 -85
- package/lib/commonjs/components/Swiper.js.map +1 -1
- package/lib/commonjs/components/button.js +3 -1
- package/lib/commonjs/components/button.js.map +1 -1
- package/lib/commonjs/context/OnboardingContext.js +101 -21
- package/lib/commonjs/context/OnboardingContext.js.map +1 -1
- package/lib/commonjs/hooks/useOnboarding.js +1 -1
- package/lib/commonjs/hooks/useOnboarding.js.map +1 -1
- package/lib/commonjs/index.js +33 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/persistence.js +51 -0
- package/lib/commonjs/utils/persistence.js.map +1 -0
- package/lib/module/components/CustomPages.js +31 -54
- package/lib/module/components/CustomPages.js.map +1 -1
- package/lib/module/components/OnboardingPages.js +60 -75
- package/lib/module/components/OnboardingPages.js.map +1 -1
- package/lib/module/components/Page.js +8 -3
- package/lib/module/components/Page.js.map +1 -1
- package/lib/module/components/Pagination.js +76 -14
- package/lib/module/components/Pagination.js.map +1 -1
- package/lib/module/components/Swiper.js +59 -86
- package/lib/module/components/Swiper.js.map +1 -1
- package/lib/module/components/button.js +3 -1
- package/lib/module/components/button.js.map +1 -1
- package/lib/module/context/OnboardingContext.js +102 -22
- package/lib/module/context/OnboardingContext.js.map +1 -1
- package/lib/module/hooks/useOnboarding.js +1 -1
- package/lib/module/hooks/useOnboarding.js.map +1 -1
- package/lib/module/index.js +8 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/persistence.js +42 -0
- package/lib/module/utils/persistence.js.map +1 -0
- package/lib/typescript/src/components/CustomPages.d.ts +6 -2
- package/lib/typescript/src/components/CustomPages.d.ts.map +1 -1
- package/lib/typescript/src/components/OnboardingPages.d.ts +6 -2
- package/lib/typescript/src/components/OnboardingPages.d.ts.map +1 -1
- package/lib/typescript/src/components/Page.d.ts +2 -0
- package/lib/typescript/src/components/Page.d.ts.map +1 -1
- package/lib/typescript/src/components/Pagination.d.ts +9 -0
- package/lib/typescript/src/components/Pagination.d.ts.map +1 -1
- package/lib/typescript/src/components/Swiper.d.ts.map +1 -1
- package/lib/typescript/src/components/button.d.ts.map +1 -1
- package/lib/typescript/src/context/OnboardingContext.d.ts +9 -0
- package/lib/typescript/src/context/OnboardingContext.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useOnboarding.d.ts +3 -0
- package/lib/typescript/src/hooks/useOnboarding.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +13 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/persistence.d.ts +31 -0
- package/lib/typescript/src/utils/persistence.d.ts.map +1 -0
- package/package.json +25 -4
- package/src/components/CustomPages.tsx +63 -69
- package/src/components/OnboardingPages.tsx +79 -82
- package/src/components/Page.tsx +8 -2
- package/src/components/Pagination.tsx +121 -29
- package/src/components/Swiper.tsx +65 -87
- package/src/components/button.tsx +6 -1
- package/src/context/OnboardingContext.tsx +145 -26
- package/src/hooks/useOnboarding.tsx +1 -3
- package/src/index.tsx +16 -1
- package/src/types/index.ts +13 -0
- package/src/utils/persistence.ts +58 -0
|
@@ -11,12 +11,12 @@ const {
|
|
|
11
11
|
width,
|
|
12
12
|
height
|
|
13
13
|
} = _reactNative.Dimensions.get('window');
|
|
14
|
-
const
|
|
14
|
+
const portrait = height > width;
|
|
15
15
|
function OnboardingPage(props) {
|
|
16
16
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
17
17
|
style: [styles.container, {
|
|
18
18
|
width: props.width
|
|
19
|
-
}, props.containerStyle, props.swap && styles.swapStyle]
|
|
19
|
+
}, props.containerStyle, props.swap && styles.swapStyle, props.mirror && styles.mirror]
|
|
20
20
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
21
21
|
style: [styles.imageContainer, props.imageContainerStyle]
|
|
22
22
|
}, props.image), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -50,7 +50,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
50
50
|
},
|
|
51
51
|
imageContainer: {
|
|
52
52
|
flex: 0,
|
|
53
|
-
paddingBottom:
|
|
53
|
+
paddingBottom: portrait ? 60 : 10,
|
|
54
54
|
alignItems: 'center',
|
|
55
55
|
width: '100%'
|
|
56
56
|
},
|
|
@@ -59,6 +59,11 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
59
59
|
},
|
|
60
60
|
swapStyle: {
|
|
61
61
|
flexDirection: 'column-reverse'
|
|
62
|
+
},
|
|
63
|
+
mirror: {
|
|
64
|
+
transform: [{
|
|
65
|
+
scaleX: -1
|
|
66
|
+
}]
|
|
62
67
|
}
|
|
63
68
|
});
|
|
64
69
|
//# sourceMappingURL=Page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","e","__esModule","default","width","height","Dimensions","get","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","e","__esModule","default","width","height","Dimensions","get","portrait","OnboardingPage","props","createElement","View","style","styles","container","containerStyle","swap","swapStyle","mirror","imageContainer","imageContainerStyle","image","titleContainer","titleContainerStyle","Text","title","color","titleStyle","subtitle","subtitleStyle","StyleSheet","create","flex","justifyContent","alignItems","flexDirection","fontSize","fontWeight","paddingBottom","textAlign","marginHorizontal","transform","scaleX"],"sourceRoot":"../../../src","sources":["components/Page.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAmB1B,MAAM;EAAEG,KAAK;EAAEC;AAAO,CAAC,GAAGC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC;AAClD,MAAMC,QAAQ,GAAGH,MAAM,GAAGD,KAAK;AAExB,SAASK,cAAcA,CAACC,KAAW,EAAE;EAC1C,oBACEX,MAAA,CAAAI,OAAA,CAAAQ,aAAA,CAACd,YAAA,CAAAe,IAAI;IACHC,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAEX,KAAK,EAAEM,KAAK,CAACN;IAAM,CAAC,EACtBM,KAAK,CAACM,cAAc,EACpBN,KAAK,CAACO,IAAI,IAAIH,MAAM,CAACI,SAAS,EAC9BR,KAAK,CAACS,MAAM,IAAIL,MAAM,CAACK,MAAM;EAC7B,gBAEFpB,MAAA,CAAAI,OAAA,CAAAQ,aAAA,CAACd,YAAA,CAAAe,IAAI;IAACC,KAAK,EAAE,CAACC,MAAM,CAACM,cAAc,EAAEV,KAAK,CAACW,mBAAmB;EAAE,GAC7DX,KAAK,CAACY,KACH,CAAC,eACPvB,MAAA,CAAAI,OAAA,CAAAQ,aAAA,CAACd,YAAA,CAAAe,IAAI;IAACC,KAAK,EAAE,CAACC,MAAM,CAACS,cAAc,EAAEb,KAAK,CAACc,mBAAmB;EAAE,gBAC9DzB,MAAA,CAAAI,OAAA,CAAAQ,aAAA,CAACd,YAAA,CAAA4B,IAAI;IACHZ,KAAK,EAAE,CACLC,MAAM,CAACY,KAAK,EACZ;MACEC,KAAK,EAAEjB,KAAK,CAACiB;IACf,CAAC,EACDjB,KAAK,CAACkB,UAAU;EAChB,GAEDlB,KAAK,CAACgB,KACH,CAAC,eACP3B,MAAA,CAAAI,OAAA,CAAAQ,aAAA,CAACd,YAAA,CAAA4B,IAAI;IACHZ,KAAK,EAAE,CACLC,MAAM,CAACe,QAAQ,EACf;MACEF,KAAK,EAAEjB,KAAK,CAACiB;IACf,CAAC,EACDjB,KAAK,CAACoB,aAAa;EACnB,GAEDpB,KAAK,CAACmB,QACH,CACF,CACF,CAAC;AAEX;AAEA,MAAMf,MAAM,GAAGiB,uBAAU,CAACC,MAAM,CAAC;EAC/BjB,SAAS,EAAE;IACTkB,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE;EACjB,CAAC;EACDV,KAAK,EAAE;IACLW,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE;EACb,CAAC;EACDX,QAAQ,EAAE;IACRQ,QAAQ,EAAE,EAAE;IACZG,SAAS,EAAE;EACb,CAAC;EACDpB,cAAc,EAAE;IACda,IAAI,EAAE,CAAC;IACPM,aAAa,EAAE/B,QAAQ,GAAG,EAAE,GAAG,EAAE;IACjC2B,UAAU,EAAE,QAAQ;IACpB/B,KAAK,EAAE;EACT,CAAC;EACDmB,cAAc,EAAE;IACdkB,gBAAgB,EAAE;EACpB,CAAC;EACDvB,SAAS,EAAE;IACTkB,aAAa,EAAE;EACjB,CAAC;EACDjB,MAAM,EAAE;IACNuB,SAAS,EAAE,CAAC;MAAEC,MAAM,EAAE,CAAC;IAAE,CAAC;EAC5B;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -6,30 +6,63 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Pagination = Pagination;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _tinycolor = _interopRequireDefault(require("tinycolor2"));
|
|
9
10
|
var _useOnboarding = require("../hooks/useOnboarding");
|
|
10
11
|
var _button = require("./button");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
12
14
|
function Pagination(props) {
|
|
13
15
|
const {
|
|
14
|
-
isDone
|
|
16
|
+
isDone,
|
|
17
|
+
currentPage,
|
|
18
|
+
progress,
|
|
19
|
+
scrollTo,
|
|
20
|
+
previousPage
|
|
15
21
|
} = (0, _useOnboarding.useOnboarding)();
|
|
16
22
|
const dots = Array.from({
|
|
17
23
|
length: props.numberOfScreens
|
|
18
24
|
}, (_, i) => i);
|
|
19
25
|
const width = props.width;
|
|
26
|
+
const showPrevious = props.showPrevious && currentPage > 0;
|
|
20
27
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
21
28
|
style: [styles.pagination, {
|
|
22
29
|
backgroundColor: props.backgroundColor
|
|
23
30
|
}, props.paginationContainerStyle]
|
|
24
31
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
25
32
|
style: [styles.buttons, styles.leftButton, props.buttonLeftContainerStyle]
|
|
26
|
-
},
|
|
33
|
+
}, showPrevious && /*#__PURE__*/_react.default.createElement(_button.Button, {
|
|
34
|
+
onPress: () => previousPage(),
|
|
35
|
+
buttonTextStyle: props.previousLabelStyle,
|
|
36
|
+
buttonStyle: props.previousButtonContainerStyle,
|
|
37
|
+
label: props.previousLabel || 'Back'
|
|
38
|
+
}), !showPrevious && props.showSkip && !props.hasSkipPosition && /*#__PURE__*/_react.default.createElement(_button.Button, {
|
|
27
39
|
onPress: props.onSkip,
|
|
28
40
|
buttonTextStyle: props.skipLabelStyle,
|
|
29
41
|
buttonStyle: props.skipButtonContainerStyle,
|
|
30
42
|
label: props.skipLabel || 'Skip'
|
|
31
|
-
})), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
32
|
-
|
|
43
|
+
})), props.paginationStyle === 'progress' ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
44
|
+
accessible: true,
|
|
45
|
+
accessibilityRole: "progressbar",
|
|
46
|
+
accessibilityValue: {
|
|
47
|
+
min: 0,
|
|
48
|
+
max: 100,
|
|
49
|
+
now: progress
|
|
50
|
+
},
|
|
51
|
+
style: [styles.progressTrack,
|
|
52
|
+
// Derive a faint track from the (background-aware) fill color so it
|
|
53
|
+
// stays visible on both light and dark pages.
|
|
54
|
+
{
|
|
55
|
+
backgroundColor: (0, _tinycolor.default)(props.color).setAlpha(0.25).toRgbString()
|
|
56
|
+
},
|
|
57
|
+
// Mirror the fill direction so it grows from the trailing edge.
|
|
58
|
+
props.mirror && styles.mirror, props.progressBarStyle]
|
|
59
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
60
|
+
style: [styles.progressFill, {
|
|
61
|
+
backgroundColor: props.color,
|
|
62
|
+
width: `${progress}%`
|
|
63
|
+
}, props.progressBarFillStyle]
|
|
64
|
+
})) : /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
65
|
+
style: [styles.dotsContainer, props.mirror && styles.mirror, props.dotsContainerStyle]
|
|
33
66
|
}, dots.map((_, i) => {
|
|
34
67
|
const inputRange = [(i - 1) * width, i * width, (i + 1) * width];
|
|
35
68
|
const dotOpacity = props.animatedValue.interpolate({
|
|
@@ -37,13 +70,27 @@ function Pagination(props) {
|
|
|
37
70
|
outputRange: [0.3, 1, 0.3],
|
|
38
71
|
extrapolate: 'clamp'
|
|
39
72
|
});
|
|
40
|
-
|
|
73
|
+
const dotProps = {
|
|
74
|
+
accessibilityRole: props.dotsAreTappable ? 'button' : 'image',
|
|
75
|
+
accessibilityLabel: `Page ${i + 1} of ${props.numberOfScreens}`,
|
|
76
|
+
accessibilityState: {
|
|
77
|
+
selected: i === currentPage
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const dot = /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
|
|
41
81
|
key: i,
|
|
42
82
|
style: [styles.dot, {
|
|
43
83
|
backgroundColor: props.color,
|
|
44
84
|
opacity: dotOpacity
|
|
45
|
-
}
|
|
85
|
+
}]
|
|
46
86
|
});
|
|
87
|
+
return props.dotsAreTappable ? /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, _extends({
|
|
88
|
+
key: i,
|
|
89
|
+
onPress: () => scrollTo(i),
|
|
90
|
+
hitSlop: 8
|
|
91
|
+
}, dotProps), dot) : /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
|
|
92
|
+
key: i
|
|
93
|
+
}, dotProps), dot);
|
|
47
94
|
})), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
48
95
|
style: [styles.buttons, styles.rightButton, props.buttonRightContainerStyle]
|
|
49
96
|
}, !isDone && props.showNext && /*#__PURE__*/_react.default.createElement(_button.Button, {
|
|
@@ -76,22 +123,37 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
76
123
|
},
|
|
77
124
|
dotsContainer: {
|
|
78
125
|
flexDirection: 'row',
|
|
79
|
-
flex:
|
|
80
|
-
justifyContent: 'center'
|
|
126
|
+
flex: 2,
|
|
127
|
+
justifyContent: 'center',
|
|
128
|
+
alignItems: 'center'
|
|
129
|
+
},
|
|
130
|
+
progressTrack: {
|
|
131
|
+
flex: 2,
|
|
132
|
+
height: 6,
|
|
133
|
+
borderRadius: 3,
|
|
134
|
+
marginHorizontal: 16,
|
|
135
|
+
overflow: 'hidden'
|
|
136
|
+
},
|
|
137
|
+
progressFill: {
|
|
138
|
+
height: '100%',
|
|
139
|
+
borderRadius: 3
|
|
81
140
|
},
|
|
82
141
|
text: {
|
|
83
142
|
fontSize: 16
|
|
84
143
|
},
|
|
85
144
|
buttons: {
|
|
86
|
-
|
|
145
|
+
flex: 1
|
|
87
146
|
},
|
|
88
147
|
rightButton: {
|
|
89
|
-
alignItems: 'flex-end'
|
|
90
|
-
paddingRight: 30
|
|
148
|
+
alignItems: 'flex-end'
|
|
91
149
|
},
|
|
92
150
|
leftButton: {
|
|
93
|
-
alignItems: 'flex-start'
|
|
94
|
-
|
|
151
|
+
alignItems: 'flex-start'
|
|
152
|
+
},
|
|
153
|
+
mirror: {
|
|
154
|
+
transform: [{
|
|
155
|
+
scaleX: -1
|
|
156
|
+
}]
|
|
95
157
|
}
|
|
96
158
|
});
|
|
97
159
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","_useOnboarding","_button","e","__esModule","default","Pagination","props","isDone","useOnboarding","dots","Array","from","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","_tinycolor","_useOnboarding","_button","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","Pagination","props","isDone","currentPage","progress","scrollTo","previousPage","useOnboarding","dots","Array","from","numberOfScreens","_","i","width","showPrevious","createElement","View","style","styles","pagination","backgroundColor","paginationContainerStyle","buttons","leftButton","buttonLeftContainerStyle","Button","onPress","buttonTextStyle","previousLabelStyle","buttonStyle","previousButtonContainerStyle","label","previousLabel","showSkip","hasSkipPosition","onSkip","skipLabelStyle","skipButtonContainerStyle","skipLabel","paginationStyle","accessible","accessibilityRole","accessibilityValue","min","max","now","progressTrack","tinycolor","color","setAlpha","toRgbString","mirror","progressBarStyle","progressFill","progressBarFillStyle","dotsContainer","dotsContainerStyle","map","inputRange","dotOpacity","animatedValue","interpolate","outputRange","extrapolate","dotProps","dotsAreTappable","accessibilityLabel","accessibilityState","selected","dot","Animated","key","opacity","Pressable","hitSlop","rightButton","buttonRightContainerStyle","showNext","onNext","nextLabel","nextLabelStyle","nextButtonContainerStyle","showDone","onDone","doneLabel","doneLabelStyle","doneButtonContainerStyle","StyleSheet","create","flexDirection","justifyContent","alignItems","height","paddingVertical","paddingHorizontal","borderRadius","marginHorizontal","flex","overflow","text","fontSize","transform","scaleX"],"sourceRoot":"../../../src","sources":["components/Pagination.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,100 +10,73 @@ var _CustomPages = require("./CustomPages");
|
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
11
|
var _useOnboarding = require("../hooks/useOnboarding");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
13
14
|
const Swiper = props => {
|
|
14
|
-
|
|
15
|
+
// `scrollX` is always JS-driven because the background-color interpolation
|
|
16
|
+
// cannot run on the native thread. When `useNativeDriver` is enabled we also
|
|
17
|
+
// keep `nativeScrollX`, driven natively, for transform/opacity animations
|
|
18
|
+
// (the pagination dots), and mirror its offset onto `scrollX` via a JS
|
|
19
|
+
// listener so the color interpolation keeps working.
|
|
20
|
+
const scrollX = _react.default.useMemo(() => new _reactNative.Animated.Value(0), []);
|
|
21
|
+
const nativeScrollX = _react.default.useMemo(() => new _reactNative.Animated.Value(0), []);
|
|
22
|
+
const nativeDriverEnabled = props.useNativeDriver ?? false;
|
|
23
|
+
const dotsAnimatedValue = nativeDriverEnabled ? nativeScrollX : scrollX;
|
|
24
|
+
|
|
25
|
+
// Direction handling: default to the device direction. We only mirror
|
|
26
|
+
// manually (via scaleX) when the requested direction differs from the
|
|
27
|
+
// device's — when they match, React Native already lays the row out
|
|
28
|
+
// correctly and an extra flip would double-invert it.
|
|
29
|
+
const rtl = props.rtl ?? _reactNative.I18nManager.isRTL;
|
|
30
|
+
const mirror = rtl !== _reactNative.I18nManager.isRTL;
|
|
15
31
|
const {
|
|
16
|
-
|
|
32
|
+
setFlatListRef,
|
|
17
33
|
setCurrentPage,
|
|
18
34
|
currentPage,
|
|
19
35
|
numberOfScreens,
|
|
20
36
|
nextPage,
|
|
21
|
-
scrollEnabled
|
|
37
|
+
scrollEnabled,
|
|
38
|
+
pauseAutoPlay
|
|
22
39
|
} = (0, _useOnboarding.useOnboarding)();
|
|
40
|
+
const onScroll = _react.default.useMemo(() => nativeDriverEnabled ? _reactNative.Animated.event([{
|
|
41
|
+
nativeEvent: {
|
|
42
|
+
contentOffset: {
|
|
43
|
+
x: nativeScrollX
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}], {
|
|
47
|
+
useNativeDriver: true,
|
|
48
|
+
listener: event => scrollX.setValue(event.nativeEvent.contentOffset.x)
|
|
49
|
+
}) : _reactNative.Animated.event([{
|
|
50
|
+
nativeEvent: {
|
|
51
|
+
contentOffset: {
|
|
52
|
+
x: scrollX
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}], {
|
|
56
|
+
useNativeDriver: false
|
|
57
|
+
}), [nativeDriverEnabled, nativeScrollX, scrollX]);
|
|
58
|
+
|
|
59
|
+
// Stop autoplay as soon as the user takes manual control of the slider.
|
|
60
|
+
const onScrollBeginDrag = _react.default.useCallback(() => pauseAutoPlay(), [pauseAutoPlay]);
|
|
61
|
+
const shared = {
|
|
62
|
+
setFlatListRef,
|
|
63
|
+
scrollX,
|
|
64
|
+
dotsAnimatedValue,
|
|
65
|
+
onScroll,
|
|
66
|
+
onScrollBeginDrag,
|
|
67
|
+
setPage: setCurrentPage,
|
|
68
|
+
currentPage,
|
|
69
|
+
numberOfScreens,
|
|
70
|
+
nextPage,
|
|
71
|
+
scrollEnabled,
|
|
72
|
+
mirror
|
|
73
|
+
};
|
|
23
74
|
if (props.children) {
|
|
24
|
-
return /*#__PURE__*/_react.default.createElement(_CustomPages.CustomPages, {
|
|
25
|
-
customFooter: props.customFooter,
|
|
26
|
-
showPagination: props.showPagination,
|
|
27
|
-
flatListRef: flatListRef,
|
|
28
|
-
scrollX: scrollX,
|
|
29
|
-
setPage: setCurrentPage,
|
|
30
|
-
scrollEnabled: scrollEnabled,
|
|
31
|
-
currentPage: currentPage,
|
|
32
|
-
numberOfScreens: numberOfScreens,
|
|
33
|
-
nextPage: nextPage,
|
|
34
|
-
showDone: props.showDone,
|
|
35
|
-
showNext: props.showNext,
|
|
36
|
-
onDone: props.onDone,
|
|
37
|
-
skipButtonContainerStyle: props.skipButtonContainerStyle,
|
|
38
|
-
nextButtonContainerStyle: props.nextButtonContainerStyle,
|
|
39
|
-
doneButtonContainerStyle: props.doneButtonContainerStyle,
|
|
40
|
-
skipButtonPosition: props.skipButtonPosition,
|
|
41
|
-
paginationContainerStyle: props.paginationContainerStyle,
|
|
42
|
-
paginationPosition: props.paginationPosition,
|
|
43
|
-
nextLabel: props.nextLabel,
|
|
44
|
-
skipLabel: props.skipLabel,
|
|
45
|
-
doneLabel: props.doneLabel,
|
|
46
|
-
showSkip: props.showSkip,
|
|
47
|
-
onSkip: props.onSkip,
|
|
48
|
-
scrollAnimationDuration: props.scrollAnimationDuration,
|
|
49
|
-
buttonLeftContainerStyle: props.buttonLeftContainerStyle,
|
|
50
|
-
buttonRightContainerStyle: props.buttonRightContainerStyle,
|
|
51
|
-
dotsContainerStyle: props.dotsContainerStyle,
|
|
52
|
-
doneLabelStyle: props.doneLabelStyle,
|
|
53
|
-
skipLabelStyle: props.skipLabelStyle,
|
|
54
|
-
nextLabelStyle: props.nextLabelStyle,
|
|
55
|
-
width: props.width,
|
|
56
|
-
color: props.color,
|
|
57
|
-
useNativeDriver: props.useNativeDriver,
|
|
58
|
-
imageContainerStyle: props.imageContainerStyle,
|
|
59
|
-
containerStyle: props.containerStyle,
|
|
60
|
-
titleContainerStyle: props.titleContainerStyle,
|
|
61
|
-
titleStyle: props.titleStyle,
|
|
62
|
-
subtitleStyle: props.subtitleStyle,
|
|
63
|
-
swap: props.swap
|
|
64
|
-
}, props.children);
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_CustomPages.CustomPages, _extends({}, props, shared), props.children);
|
|
65
76
|
}
|
|
66
|
-
return /*#__PURE__*/_react.default.createElement(_OnboardingPages.OnboardingPages, {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
flatListRef: flatListRef,
|
|
70
|
-
scrollX: scrollX,
|
|
71
|
-
setPage: setCurrentPage,
|
|
72
|
-
currentPage: currentPage,
|
|
73
|
-
paginationPosition: props.paginationPosition,
|
|
74
|
-
nextPage: nextPage,
|
|
75
|
-
showSkip: props.showSkip,
|
|
76
|
-
onDone: props.onDone,
|
|
77
|
-
pages: props.pages || [],
|
|
78
|
-
width: props.width,
|
|
79
|
-
showNext: props.showNext,
|
|
80
|
-
skipButtonContainerStyle: props.skipButtonContainerStyle,
|
|
81
|
-
nextButtonContainerStyle: props.nextButtonContainerStyle,
|
|
82
|
-
doneButtonContainerStyle: props.doneButtonContainerStyle,
|
|
83
|
-
skipLabelStyle: props.skipLabelStyle,
|
|
84
|
-
skipButtonPosition: props.skipButtonPosition,
|
|
85
|
-
showPagination: props.showPagination,
|
|
86
|
-
color: props.color,
|
|
87
|
-
onSkip: props.onSkip,
|
|
88
|
-
swap: props.swap,
|
|
89
|
-
scrollEnabled: scrollEnabled,
|
|
90
|
-
nextLabel: props.nextLabel,
|
|
91
|
-
skipLabel: props.skipLabel,
|
|
92
|
-
doneLabel: props.doneLabel,
|
|
93
|
-
scrollAnimationDuration: props.scrollAnimationDuration,
|
|
94
|
-
buttonLeftContainerStyle: props.buttonLeftContainerStyle,
|
|
95
|
-
buttonRightContainerStyle: props.buttonRightContainerStyle,
|
|
96
|
-
dotsContainerStyle: props.dotsContainerStyle,
|
|
97
|
-
doneLabelStyle: props.doneLabelStyle,
|
|
98
|
-
nextLabelStyle: props.nextLabelStyle,
|
|
99
|
-
useNativeDriver: props.useNativeDriver,
|
|
100
|
-
imageContainerStyle: props.imageContainerStyle,
|
|
101
|
-
containerStyle: props.containerStyle,
|
|
102
|
-
titleContainerStyle: props.titleContainerStyle,
|
|
103
|
-
titleStyle: props.titleStyle,
|
|
104
|
-
subtitleStyle: props.subtitleStyle,
|
|
105
|
-
paginationContainerStyle: props.paginationContainerStyle
|
|
106
|
-
});
|
|
77
|
+
return /*#__PURE__*/_react.default.createElement(_OnboardingPages.OnboardingPages, _extends({}, props, shared, {
|
|
78
|
+
pages: props.pages || []
|
|
79
|
+
}));
|
|
107
80
|
};
|
|
108
81
|
exports.Swiper = Swiper;
|
|
109
82
|
//# sourceMappingURL=Swiper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_OnboardingPages","_CustomPages","_reactNative","_useOnboarding","e","__esModule","default","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_OnboardingPages","_CustomPages","_reactNative","_useOnboarding","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","Swiper","props","scrollX","React","useMemo","Animated","Value","nativeScrollX","nativeDriverEnabled","useNativeDriver","dotsAnimatedValue","rtl","I18nManager","isRTL","mirror","setFlatListRef","setCurrentPage","currentPage","numberOfScreens","nextPage","scrollEnabled","pauseAutoPlay","useOnboarding","onScroll","event","nativeEvent","contentOffset","x","listener","setValue","onScrollBeginDrag","useCallback","shared","setPage","children","createElement","CustomPages","OnboardingPages","pages","exports"],"sourceRoot":"../../../src","sources":["components/Swiper.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,7 +10,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
10
10
|
const Button = props => {
|
|
11
11
|
return typeof props.label === 'string' ? /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
12
12
|
onPress: props.onPress,
|
|
13
|
-
style: props.buttonStyle
|
|
13
|
+
style: props.buttonStyle,
|
|
14
|
+
accessibilityRole: "button",
|
|
15
|
+
accessibilityLabel: props.label
|
|
14
16
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
15
17
|
style: [styles.text, {
|
|
16
18
|
color: props.color || 'white'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","e","__esModule","default","Button","props","label","createElement","TouchableOpacity","onPress","style","buttonStyle","Text","styles","text","color","buttonTextStyle","exports","SkipButton","top","left","position","undefined","right","skipButton","StyleSheet","create","pagination","flexDirection","justifyContent","alignItems","height","paddingVertical","paddingHorizontal","dot","width","borderRadius","backgroundColor","marginHorizontal","dotsContainer","flex","fontSize","buttons","minWidth","rightButton","paddingRight","leftButton","paddingLeft","zIndex"],"sourceRoot":"../../../src","sources":["components/button.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAUnB,MAAMG,MAAM,GAAIC,KAAkB,IAAK;EAC5C,OAAO,OAAOA,KAAK,CAACC,KAAK,KAAK,QAAQ,gBACpCP,MAAA,CAAAI,OAAA,CAAAI,aAAA,CAACV,YAAA,CAAAW,gBAAgB;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","e","__esModule","default","Button","props","label","createElement","TouchableOpacity","onPress","style","buttonStyle","accessibilityRole","accessibilityLabel","Text","styles","text","color","buttonTextStyle","exports","SkipButton","top","left","position","undefined","right","skipButton","StyleSheet","create","pagination","flexDirection","justifyContent","alignItems","height","paddingVertical","paddingHorizontal","dot","width","borderRadius","backgroundColor","marginHorizontal","dotsContainer","flex","fontSize","buttons","minWidth","rightButton","paddingRight","leftButton","paddingLeft","zIndex"],"sourceRoot":"../../../src","sources":["components/button.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAUnB,MAAMG,MAAM,GAAIC,KAAkB,IAAK;EAC5C,OAAO,OAAOA,KAAK,CAACC,KAAK,KAAK,QAAQ,gBACpCP,MAAA,CAAAI,OAAA,CAAAI,aAAA,CAACV,YAAA,CAAAW,gBAAgB;IACfC,OAAO,EAAEJ,KAAK,CAACI,OAAQ;IACvBC,KAAK,EAAEL,KAAK,CAACM,WAAY;IACzBC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAER,KAAK,CAACC;EAAM,gBAEhCP,MAAA,CAAAI,OAAA,CAAAI,aAAA,CAACV,YAAA,CAAAiB,IAAI;IACHJ,KAAK,EAAE,CACLK,MAAM,CAACC,IAAI,EACX;MACEC,KAAK,EAAEZ,KAAK,CAACY,KAAK,IAAI;IACxB,CAAC,EACDZ,KAAK,CAACa,eAAe;EACrB,GAEDb,KAAK,CAACC,KACH,CACU,CAAC,GAEnBD,KAAK,CAACC,KACP;AACH,CAAC;AAACa,OAAA,CAAAf,MAAA,GAAAA,MAAA;AAEK,MAAMgB,UAAU,GACrBf,KAEC,IACE;EACH,MAAMM,WAAW,GAAG;IAClBU,GAAG,EAAE,EAAE;IACPC,IAAI,EAAEjB,KAAK,CAACkB,QAAQ,KAAK,UAAU,GAAG,EAAE,GAAGC,SAAS;IACpDC,KAAK,EAAEpB,KAAK,CAACkB,QAAQ,KAAK,WAAW,GAAG,EAAE,GAAGC;EAC/C,CAAC;EAED,oBACEzB,MAAA,CAAAI,OAAA,CAAAI,aAAA,CAACH,MAAM;IACLE,KAAK,EAAED,KAAK,CAACC,KAAK,IAAI,MAAO;IAC7BG,OAAO,EAAEJ,KAAK,CAACI,OAAQ;IACvBE,WAAW,EAAE,CAACI,MAAM,CAACW,UAAU,EAAEf,WAAW,EAAEN,KAAK,CAACM,WAAW,CAAE;IACjEO,eAAe,EAAEb,KAAK,CAACa,eAAgB;IACvCD,KAAK,EAAEZ,KAAK,CAACY;EAAM,CACpB,CAAC;AAEN,CAAC;AAACE,OAAA,CAAAC,UAAA,GAAAA,UAAA;AAEF,MAAML,MAAM,GAAGY,uBAAU,CAACC,MAAM,CAAC;EAC/BC,UAAU,EAAE;IACVC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE;EACrB,CAAC;EACDC,GAAG,EAAE;IACHH,MAAM,EAAE,EAAE;IACVI,KAAK,EAAE,EAAE;IACTC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE,MAAM;IACvBC,gBAAgB,EAAE;EACpB,CAAC;EACDC,aAAa,EAAE;IACbX,aAAa,EAAE,KAAK;IACpBY,IAAI,EAAE,CAAC;IACPX,cAAc,EAAE;EAClB,CAAC;EACDf,IAAI,EAAE;IACJ2B,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IACPC,QAAQ,EAAE;EACZ,CAAC;EACDC,WAAW,EAAE;IACXd,UAAU,EAAE,UAAU;IACtBe,YAAY,EAAE;EAChB,CAAC;EACDC,UAAU,EAAE;IACVhB,UAAU,EAAE,YAAY;IACxBiB,WAAW,EAAE;EACf,CAAC;EACDvB,UAAU,EAAE;IACVH,QAAQ,EAAE,UAAU;IACpB2B,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -10,10 +10,16 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
10
10
|
const OnboardingContext = exports.OnboardingContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
11
11
|
const OnboardingProvider = ({
|
|
12
12
|
children,
|
|
13
|
-
width
|
|
13
|
+
width: widthProp,
|
|
14
14
|
numberOfScreens,
|
|
15
|
-
scrollEnabled
|
|
15
|
+
scrollEnabled,
|
|
16
|
+
onPageChange,
|
|
17
|
+
scrollAnimationDuration,
|
|
18
|
+
autoPlay = false,
|
|
19
|
+
autoPlayInterval = 3000,
|
|
20
|
+
loop = false
|
|
16
21
|
}) => {
|
|
22
|
+
const width = widthProp ?? _reactNative.Dimensions.get('window').width;
|
|
17
23
|
const getProgress = page => {
|
|
18
24
|
return Math.round((page + 1) / numberOfScreens * 100);
|
|
19
25
|
};
|
|
@@ -22,40 +28,114 @@ const OnboardingProvider = ({
|
|
|
22
28
|
const [isDone, setIsDone] = _react.default.useState(false);
|
|
23
29
|
const [enableScroll, setEnableScroll] = _react.default.useState(scrollEnabled);
|
|
24
30
|
const flatListRef = _react.default.useRef(null);
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
const setFlatListRef = _react.default.useCallback(node => {
|
|
32
|
+
flatListRef.current = node;
|
|
33
|
+
}, []);
|
|
34
|
+
// Tracks the latest page so timers/animations read a fresh value without
|
|
35
|
+
// needing to be recreated on every page change.
|
|
36
|
+
const currentPageRef = _react.default.useRef(0);
|
|
37
|
+
const [isAutoPlaying, setIsAutoPlaying] = _react.default.useState(autoPlay);
|
|
38
|
+
|
|
39
|
+
// Keep autoplay in sync if the `autoPlay` prop is toggled after mount.
|
|
40
|
+
_react.default.useEffect(() => {
|
|
41
|
+
setIsAutoPlaying(autoPlay);
|
|
42
|
+
}, [autoPlay]);
|
|
43
|
+
|
|
44
|
+
// Dedicated value used to honor a custom scrollAnimationDuration. FlatList's
|
|
45
|
+
// own animated scroll has a fixed, platform-controlled duration, so when a
|
|
46
|
+
// duration is requested we drive the offset manually via this value.
|
|
47
|
+
const scrollAnim = _react.default.useMemo(() => new _reactNative.Animated.Value(0), []);
|
|
48
|
+
_react.default.useEffect(() => {
|
|
49
|
+
const id = scrollAnim.addListener(({
|
|
50
|
+
value
|
|
51
|
+
}) => {
|
|
52
|
+
var _flatListRef$current;
|
|
53
|
+
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 || _flatListRef$current.scrollToOffset({
|
|
54
|
+
offset: value,
|
|
55
|
+
animated: false
|
|
35
56
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
39
|
-
const
|
|
40
|
-
if (flatListRef.current
|
|
57
|
+
});
|
|
58
|
+
return () => scrollAnim.removeListener(id);
|
|
59
|
+
}, [scrollAnim]);
|
|
60
|
+
const animateToOffset = _react.default.useCallback((offset, animated) => {
|
|
61
|
+
if (!flatListRef.current) return;
|
|
62
|
+
if (animated && scrollAnimationDuration) {
|
|
63
|
+
scrollAnim.stopAnimation();
|
|
64
|
+
scrollAnim.setValue(width * currentPageRef.current);
|
|
65
|
+
_reactNative.Animated.timing(scrollAnim, {
|
|
66
|
+
toValue: offset,
|
|
67
|
+
duration: scrollAnimationDuration,
|
|
68
|
+
useNativeDriver: false
|
|
69
|
+
}).start();
|
|
70
|
+
} else {
|
|
41
71
|
flatListRef.current.scrollToOffset({
|
|
42
|
-
offset
|
|
43
|
-
animated
|
|
72
|
+
offset,
|
|
73
|
+
animated
|
|
44
74
|
});
|
|
75
|
+
}
|
|
76
|
+
}, [scrollAnim, scrollAnimationDuration, width]);
|
|
77
|
+
const setCurrentPage = _react.default.useCallback(index => {
|
|
78
|
+
setPage(index);
|
|
79
|
+
currentPageRef.current = index;
|
|
80
|
+
setProgress(Math.round((index + 1) / numberOfScreens * 100));
|
|
81
|
+
setIsDone(index === numberOfScreens - 1);
|
|
82
|
+
onPageChange === null || onPageChange === void 0 || onPageChange(index);
|
|
83
|
+
// No-op when no screen reader is active; announces the page otherwise.
|
|
84
|
+
_reactNative.AccessibilityInfo.announceForAccessibility(`Page ${index + 1} of ${numberOfScreens}`);
|
|
85
|
+
}, [numberOfScreens, onPageChange]);
|
|
86
|
+
const nextPage = _react.default.useCallback((animated = true) => {
|
|
87
|
+
const current = currentPageRef.current;
|
|
88
|
+
if (current < numberOfScreens - 1) {
|
|
89
|
+
animateToOffset(width * (current + 1), animated);
|
|
90
|
+
setCurrentPage(current + 1);
|
|
91
|
+
} else if (loop) {
|
|
92
|
+
animateToOffset(0, animated);
|
|
93
|
+
setCurrentPage(0);
|
|
94
|
+
}
|
|
95
|
+
}, [numberOfScreens, loop, width, animateToOffset, setCurrentPage]);
|
|
96
|
+
const previousPage = _react.default.useCallback((animated = true) => {
|
|
97
|
+
const current = currentPageRef.current;
|
|
98
|
+
if (current > 0) {
|
|
99
|
+
animateToOffset(width * (current - 1), animated);
|
|
100
|
+
setCurrentPage(current - 1);
|
|
101
|
+
} else if (loop) {
|
|
102
|
+
animateToOffset(width * (numberOfScreens - 1), animated);
|
|
103
|
+
setCurrentPage(numberOfScreens - 1);
|
|
104
|
+
}
|
|
105
|
+
}, [numberOfScreens, loop, width, animateToOffset, setCurrentPage]);
|
|
106
|
+
const scrollTo = _react.default.useCallback((index, animated = true) => {
|
|
107
|
+
if (index >= 0 && index < numberOfScreens) {
|
|
108
|
+
animateToOffset(index * width, animated);
|
|
45
109
|
setCurrentPage(index);
|
|
46
110
|
}
|
|
47
|
-
};
|
|
111
|
+
}, [numberOfScreens, width, animateToOffset, setCurrentPage]);
|
|
112
|
+
const pauseAutoPlay = _react.default.useCallback(() => setIsAutoPlaying(false), []);
|
|
113
|
+
const resumeAutoPlay = _react.default.useCallback(() => setIsAutoPlaying(autoPlay), [autoPlay]);
|
|
114
|
+
|
|
115
|
+
// Autoplay timer. Recreated whenever the page changes so it always advances
|
|
116
|
+
// from the current position; pauses when the user interacts with the slider.
|
|
117
|
+
_react.default.useEffect(() => {
|
|
118
|
+
if (!isAutoPlaying || numberOfScreens <= 1) return;
|
|
119
|
+
if (!loop && currentPage >= numberOfScreens - 1) return;
|
|
120
|
+
const timer = setTimeout(() => nextPage(true), autoPlayInterval);
|
|
121
|
+
return () => clearTimeout(timer);
|
|
122
|
+
}, [isAutoPlaying, currentPage, numberOfScreens, autoPlayInterval, loop, nextPage]);
|
|
48
123
|
const contextValue = {
|
|
49
124
|
scrollEnabled: enableScroll,
|
|
50
125
|
enableScroll: setEnableScroll,
|
|
126
|
+
width,
|
|
51
127
|
currentPage,
|
|
52
128
|
numberOfScreens,
|
|
53
129
|
nextPage,
|
|
130
|
+
previousPage,
|
|
54
131
|
setCurrentPage,
|
|
55
132
|
flatListRef,
|
|
133
|
+
setFlatListRef,
|
|
56
134
|
scrollTo,
|
|
57
135
|
progress,
|
|
58
|
-
isDone
|
|
136
|
+
isDone,
|
|
137
|
+
pauseAutoPlay,
|
|
138
|
+
resumeAutoPlay
|
|
59
139
|
};
|
|
60
140
|
return /*#__PURE__*/_react.default.createElement(OnboardingContext.Provider, {
|
|
61
141
|
value: contextValue
|