react-native-app-onboard 0.1.9 → 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.
Files changed (73) hide show
  1. package/README.md +89 -7
  2. package/lib/commonjs/components/CustomPages.js +31 -55
  3. package/lib/commonjs/components/CustomPages.js.map +1 -1
  4. package/lib/commonjs/components/OnboardingPages.js +59 -74
  5. package/lib/commonjs/components/OnboardingPages.js.map +1 -1
  6. package/lib/commonjs/components/Page.js +8 -3
  7. package/lib/commonjs/components/Page.js.map +1 -1
  8. package/lib/commonjs/components/Pagination.js +75 -13
  9. package/lib/commonjs/components/Pagination.js.map +1 -1
  10. package/lib/commonjs/components/Swiper.js +58 -85
  11. package/lib/commonjs/components/Swiper.js.map +1 -1
  12. package/lib/commonjs/components/button.js +3 -1
  13. package/lib/commonjs/components/button.js.map +1 -1
  14. package/lib/commonjs/context/OnboardingContext.js +101 -21
  15. package/lib/commonjs/context/OnboardingContext.js.map +1 -1
  16. package/lib/commonjs/hooks/useOnboarding.js +1 -1
  17. package/lib/commonjs/hooks/useOnboarding.js.map +1 -1
  18. package/lib/commonjs/index.js +33 -2
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/utils/persistence.js +51 -0
  21. package/lib/commonjs/utils/persistence.js.map +1 -0
  22. package/lib/module/components/CustomPages.js +31 -55
  23. package/lib/module/components/CustomPages.js.map +1 -1
  24. package/lib/module/components/OnboardingPages.js +60 -75
  25. package/lib/module/components/OnboardingPages.js.map +1 -1
  26. package/lib/module/components/Page.js +8 -3
  27. package/lib/module/components/Page.js.map +1 -1
  28. package/lib/module/components/Pagination.js +76 -14
  29. package/lib/module/components/Pagination.js.map +1 -1
  30. package/lib/module/components/Swiper.js +59 -86
  31. package/lib/module/components/Swiper.js.map +1 -1
  32. package/lib/module/components/button.js +3 -1
  33. package/lib/module/components/button.js.map +1 -1
  34. package/lib/module/context/OnboardingContext.js +102 -22
  35. package/lib/module/context/OnboardingContext.js.map +1 -1
  36. package/lib/module/hooks/useOnboarding.js +1 -1
  37. package/lib/module/hooks/useOnboarding.js.map +1 -1
  38. package/lib/module/index.js +8 -1
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/module/utils/persistence.js +42 -0
  41. package/lib/module/utils/persistence.js.map +1 -0
  42. package/lib/typescript/src/components/CustomPages.d.ts +6 -2
  43. package/lib/typescript/src/components/CustomPages.d.ts.map +1 -1
  44. package/lib/typescript/src/components/OnboardingPages.d.ts +6 -2
  45. package/lib/typescript/src/components/OnboardingPages.d.ts.map +1 -1
  46. package/lib/typescript/src/components/Page.d.ts +2 -0
  47. package/lib/typescript/src/components/Page.d.ts.map +1 -1
  48. package/lib/typescript/src/components/Pagination.d.ts +9 -0
  49. package/lib/typescript/src/components/Pagination.d.ts.map +1 -1
  50. package/lib/typescript/src/components/Swiper.d.ts.map +1 -1
  51. package/lib/typescript/src/components/button.d.ts.map +1 -1
  52. package/lib/typescript/src/context/OnboardingContext.d.ts +9 -0
  53. package/lib/typescript/src/context/OnboardingContext.d.ts.map +1 -1
  54. package/lib/typescript/src/hooks/useOnboarding.d.ts +3 -0
  55. package/lib/typescript/src/hooks/useOnboarding.d.ts.map +1 -1
  56. package/lib/typescript/src/index.d.ts +4 -0
  57. package/lib/typescript/src/index.d.ts.map +1 -1
  58. package/lib/typescript/src/types/index.d.ts +13 -0
  59. package/lib/typescript/src/types/index.d.ts.map +1 -1
  60. package/lib/typescript/src/utils/persistence.d.ts +31 -0
  61. package/lib/typescript/src/utils/persistence.d.ts.map +1 -0
  62. package/package.json +13 -3
  63. package/src/components/CustomPages.tsx +62 -69
  64. package/src/components/OnboardingPages.tsx +79 -82
  65. package/src/components/Page.tsx +8 -2
  66. package/src/components/Pagination.tsx +121 -29
  67. package/src/components/Swiper.tsx +65 -87
  68. package/src/components/button.tsx +6 -1
  69. package/src/context/OnboardingContext.tsx +145 -26
  70. package/src/hooks/useOnboarding.tsx +1 -3
  71. package/src/index.tsx +16 -1
  72. package/src/types/index.ts +13 -0
  73. package/src/utils/persistence.ts +58 -0
@@ -4,12 +4,12 @@ const {
4
4
  width,
5
5
  height
6
6
  } = Dimensions.get('window');
7
- const potrait = height > width;
7
+ const portrait = height > width;
8
8
  export function OnboardingPage(props) {
9
9
  return /*#__PURE__*/React.createElement(View, {
10
10
  style: [styles.container, {
11
11
  width: props.width
12
- }, props.containerStyle, props.swap && styles.swapStyle]
12
+ }, props.containerStyle, props.swap && styles.swapStyle, props.mirror && styles.mirror]
13
13
  }, /*#__PURE__*/React.createElement(View, {
14
14
  style: [styles.imageContainer, props.imageContainerStyle]
15
15
  }, props.image), /*#__PURE__*/React.createElement(View, {
@@ -43,7 +43,7 @@ const styles = StyleSheet.create({
43
43
  },
44
44
  imageContainer: {
45
45
  flex: 0,
46
- paddingBottom: potrait ? 60 : 10,
46
+ paddingBottom: portrait ? 60 : 10,
47
47
  alignItems: 'center',
48
48
  width: '100%'
49
49
  },
@@ -52,6 +52,11 @@ const styles = StyleSheet.create({
52
52
  },
53
53
  swapStyle: {
54
54
  flexDirection: 'column-reverse'
55
+ },
56
+ mirror: {
57
+ transform: [{
58
+ scaleX: -1
59
+ }]
55
60
  }
56
61
  });
57
62
  //# sourceMappingURL=Page.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","Text","StyleSheet","Dimensions","React","width","height","get","potrait","OnboardingPage","props","createElement","style","styles","container","containerStyle","swap","swapStyle","imageContainer","imageContainerStyle","image","titleContainer","titleContainerStyle","title","color","titleStyle","subtitle","subtitleStyle","create","flex","justifyContent","alignItems","flexDirection","fontSize","fontWeight","paddingBottom","textAlign","marginHorizontal"],"sourceRoot":"../../../src","sources":["components/Page.tsx"],"mappings":"AAAA,SACEA,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,UAAU,QAIL,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AAiBzB,MAAM;EAAEC,KAAK;EAAEC;AAAO,CAAC,GAAGH,UAAU,CAACI,GAAG,CAAC,QAAQ,CAAC;AAClD,MAAMC,OAAO,GAAGF,MAAM,GAAGD,KAAK;AAE9B,OAAO,SAASI,cAAcA,CAACC,KAAW,EAAE;EAC1C,oBACEN,KAAA,CAAAO,aAAA,CAACX,IAAI;IACHY,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAET,KAAK,EAAEK,KAAK,CAACL;IAAM,CAAC,EACtBK,KAAK,CAACK,cAAc,EACpBL,KAAK,CAACM,IAAI,IAAIH,MAAM,CAACI,SAAS;EAC9B,gBAEFb,KAAA,CAAAO,aAAA,CAACX,IAAI;IAACY,KAAK,EAAE,CAACC,MAAM,CAACK,cAAc,EAAER,KAAK,CAACS,mBAAmB;EAAE,GAC7DT,KAAK,CAACU,KACH,CAAC,eACPhB,KAAA,CAAAO,aAAA,CAACX,IAAI;IAACY,KAAK,EAAE,CAACC,MAAM,CAACQ,cAAc,EAAEX,KAAK,CAACY,mBAAmB;EAAE,gBAC9DlB,KAAA,CAAAO,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACU,KAAK,EACZ;MACEC,KAAK,EAAEd,KAAK,CAACc;IACf,CAAC,EACDd,KAAK,CAACe,UAAU;EAChB,GAEDf,KAAK,CAACa,KACH,CAAC,eACPnB,KAAA,CAAAO,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACa,QAAQ,EACf;MACEF,KAAK,EAAEd,KAAK,CAACc;IACf,CAAC,EACDd,KAAK,CAACiB,aAAa;EACnB,GAEDjB,KAAK,CAACgB,QACH,CACF,CACF,CAAC;AAEX;AAEA,MAAMb,MAAM,GAAGX,UAAU,CAAC0B,MAAM,CAAC;EAC/Bd,SAAS,EAAE;IACTe,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE;EACjB,CAAC;EACDT,KAAK,EAAE;IACLU,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE;EACb,CAAC;EACDV,QAAQ,EAAE;IACRO,QAAQ,EAAE,EAAE;IACZG,SAAS,EAAE;EACb,CAAC;EACDlB,cAAc,EAAE;IACdW,IAAI,EAAE,CAAC;IACPM,aAAa,EAAE3B,OAAO,GAAG,EAAE,GAAG,EAAE;IAChCuB,UAAU,EAAE,QAAQ;IACpB1B,KAAK,EAAE;EACT,CAAC;EACDgB,cAAc,EAAE;IACdgB,gBAAgB,EAAE;EACpB,CAAC;EACDpB,SAAS,EAAE;IACTe,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["View","Text","StyleSheet","Dimensions","React","width","height","get","portrait","OnboardingPage","props","createElement","style","styles","container","containerStyle","swap","swapStyle","mirror","imageContainer","imageContainerStyle","image","titleContainer","titleContainerStyle","title","color","titleStyle","subtitle","subtitleStyle","create","flex","justifyContent","alignItems","flexDirection","fontSize","fontWeight","paddingBottom","textAlign","marginHorizontal","transform","scaleX"],"sourceRoot":"../../../src","sources":["components/Page.tsx"],"mappings":"AAAA,SACEA,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,UAAU,QAIL,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AAmBzB,MAAM;EAAEC,KAAK;EAAEC;AAAO,CAAC,GAAGH,UAAU,CAACI,GAAG,CAAC,QAAQ,CAAC;AAClD,MAAMC,QAAQ,GAAGF,MAAM,GAAGD,KAAK;AAE/B,OAAO,SAASI,cAAcA,CAACC,KAAW,EAAE;EAC1C,oBACEN,KAAA,CAAAO,aAAA,CAACX,IAAI;IACHY,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAET,KAAK,EAAEK,KAAK,CAACL;IAAM,CAAC,EACtBK,KAAK,CAACK,cAAc,EACpBL,KAAK,CAACM,IAAI,IAAIH,MAAM,CAACI,SAAS,EAC9BP,KAAK,CAACQ,MAAM,IAAIL,MAAM,CAACK,MAAM;EAC7B,gBAEFd,KAAA,CAAAO,aAAA,CAACX,IAAI;IAACY,KAAK,EAAE,CAACC,MAAM,CAACM,cAAc,EAAET,KAAK,CAACU,mBAAmB;EAAE,GAC7DV,KAAK,CAACW,KACH,CAAC,eACPjB,KAAA,CAAAO,aAAA,CAACX,IAAI;IAACY,KAAK,EAAE,CAACC,MAAM,CAACS,cAAc,EAAEZ,KAAK,CAACa,mBAAmB;EAAE,gBAC9DnB,KAAA,CAAAO,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACW,KAAK,EACZ;MACEC,KAAK,EAAEf,KAAK,CAACe;IACf,CAAC,EACDf,KAAK,CAACgB,UAAU;EAChB,GAEDhB,KAAK,CAACc,KACH,CAAC,eACPpB,KAAA,CAAAO,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACc,QAAQ,EACf;MACEF,KAAK,EAAEf,KAAK,CAACe;IACf,CAAC,EACDf,KAAK,CAACkB,aAAa;EACnB,GAEDlB,KAAK,CAACiB,QACH,CACF,CACF,CAAC;AAEX;AAEA,MAAMd,MAAM,GAAGX,UAAU,CAAC2B,MAAM,CAAC;EAC/Bf,SAAS,EAAE;IACTgB,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE;EACjB,CAAC;EACDT,KAAK,EAAE;IACLU,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE;EACb,CAAC;EACDV,QAAQ,EAAE;IACRO,QAAQ,EAAE,EAAE;IACZG,SAAS,EAAE;EACb,CAAC;EACDlB,cAAc,EAAE;IACdW,IAAI,EAAE,CAAC;IACPM,aAAa,EAAE5B,QAAQ,GAAG,EAAE,GAAG,EAAE;IACjCwB,UAAU,EAAE,QAAQ;IACpB3B,KAAK,EAAE;EACT,CAAC;EACDiB,cAAc,EAAE;IACdgB,gBAAgB,EAAE;EACpB,CAAC;EACDrB,SAAS,EAAE;IACTgB,aAAa,EAAE;EACjB,CAAC;EACDf,MAAM,EAAE;IACNqB,SAAS,EAAE,CAAC;MAAEC,MAAM,EAAE,CAAC;IAAE,CAAC;EAC5B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,28 +1,61 @@
1
- import { View, Animated, StyleSheet } from 'react-native';
1
+ 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); }
2
+ import { View, Pressable, Animated, StyleSheet } from 'react-native';
2
3
  import React from 'react';
4
+ import tinycolor from 'tinycolor2';
3
5
  import { useOnboarding } from '../hooks/useOnboarding';
4
6
  import { Button } from './button';
5
7
  export function Pagination(props) {
6
8
  const {
7
- isDone
9
+ isDone,
10
+ currentPage,
11
+ progress,
12
+ scrollTo,
13
+ previousPage
8
14
  } = useOnboarding();
9
15
  const dots = Array.from({
10
16
  length: props.numberOfScreens
11
17
  }, (_, i) => i);
12
18
  const width = props.width;
19
+ const showPrevious = props.showPrevious && currentPage > 0;
13
20
  return /*#__PURE__*/React.createElement(View, {
14
21
  style: [styles.pagination, {
15
22
  backgroundColor: props.backgroundColor
16
23
  }, props.paginationContainerStyle]
17
24
  }, /*#__PURE__*/React.createElement(View, {
18
25
  style: [styles.buttons, styles.leftButton, props.buttonLeftContainerStyle]
19
- }, props.showSkip && !props.hasSkipPosition && /*#__PURE__*/React.createElement(Button, {
26
+ }, showPrevious && /*#__PURE__*/React.createElement(Button, {
27
+ onPress: () => previousPage(),
28
+ buttonTextStyle: props.previousLabelStyle,
29
+ buttonStyle: props.previousButtonContainerStyle,
30
+ label: props.previousLabel || 'Back'
31
+ }), !showPrevious && props.showSkip && !props.hasSkipPosition && /*#__PURE__*/React.createElement(Button, {
20
32
  onPress: props.onSkip,
21
33
  buttonTextStyle: props.skipLabelStyle,
22
34
  buttonStyle: props.skipButtonContainerStyle,
23
35
  label: props.skipLabel || 'Skip'
24
- })), /*#__PURE__*/React.createElement(View, {
25
- style: styles.dotsContainer
36
+ })), props.paginationStyle === 'progress' ? /*#__PURE__*/React.createElement(View, {
37
+ accessible: true,
38
+ accessibilityRole: "progressbar",
39
+ accessibilityValue: {
40
+ min: 0,
41
+ max: 100,
42
+ now: progress
43
+ },
44
+ style: [styles.progressTrack,
45
+ // Derive a faint track from the (background-aware) fill color so it
46
+ // stays visible on both light and dark pages.
47
+ {
48
+ backgroundColor: tinycolor(props.color).setAlpha(0.25).toRgbString()
49
+ },
50
+ // Mirror the fill direction so it grows from the trailing edge.
51
+ props.mirror && styles.mirror, props.progressBarStyle]
52
+ }, /*#__PURE__*/React.createElement(View, {
53
+ style: [styles.progressFill, {
54
+ backgroundColor: props.color,
55
+ width: `${progress}%`
56
+ }, props.progressBarFillStyle]
57
+ })) : /*#__PURE__*/React.createElement(View, {
58
+ style: [styles.dotsContainer, props.mirror && styles.mirror, props.dotsContainerStyle]
26
59
  }, dots.map((_, i) => {
27
60
  const inputRange = [(i - 1) * width, i * width, (i + 1) * width];
28
61
  const dotOpacity = props.animatedValue.interpolate({
@@ -30,13 +63,27 @@ export function Pagination(props) {
30
63
  outputRange: [0.3, 1, 0.3],
31
64
  extrapolate: 'clamp'
32
65
  });
33
- return /*#__PURE__*/React.createElement(Animated.View, {
66
+ const dotProps = {
67
+ accessibilityRole: props.dotsAreTappable ? 'button' : 'image',
68
+ accessibilityLabel: `Page ${i + 1} of ${props.numberOfScreens}`,
69
+ accessibilityState: {
70
+ selected: i === currentPage
71
+ }
72
+ };
73
+ const dot = /*#__PURE__*/React.createElement(Animated.View, {
34
74
  key: i,
35
75
  style: [styles.dot, {
36
76
  backgroundColor: props.color,
37
77
  opacity: dotOpacity
38
- }, props.dotsContainerStyle]
78
+ }]
39
79
  });
80
+ return props.dotsAreTappable ? /*#__PURE__*/React.createElement(Pressable, _extends({
81
+ key: i,
82
+ onPress: () => scrollTo(i),
83
+ hitSlop: 8
84
+ }, dotProps), dot) : /*#__PURE__*/React.createElement(View, _extends({
85
+ key: i
86
+ }, dotProps), dot);
40
87
  })), /*#__PURE__*/React.createElement(View, {
41
88
  style: [styles.buttons, styles.rightButton, props.buttonRightContainerStyle]
42
89
  }, !isDone && props.showNext && /*#__PURE__*/React.createElement(Button, {
@@ -69,22 +116,37 @@ const styles = StyleSheet.create({
69
116
  },
70
117
  dotsContainer: {
71
118
  flexDirection: 'row',
72
- flex: 1,
73
- justifyContent: 'center'
119
+ flex: 2,
120
+ justifyContent: 'center',
121
+ alignItems: 'center'
122
+ },
123
+ progressTrack: {
124
+ flex: 2,
125
+ height: 6,
126
+ borderRadius: 3,
127
+ marginHorizontal: 16,
128
+ overflow: 'hidden'
129
+ },
130
+ progressFill: {
131
+ height: '100%',
132
+ borderRadius: 3
74
133
  },
75
134
  text: {
76
135
  fontSize: 16
77
136
  },
78
137
  buttons: {
79
- minWidth: 200
138
+ flex: 1
80
139
  },
81
140
  rightButton: {
82
- alignItems: 'flex-end',
83
- paddingRight: 30
141
+ alignItems: 'flex-end'
84
142
  },
85
143
  leftButton: {
86
- alignItems: 'flex-start',
87
- paddingLeft: 30
144
+ alignItems: 'flex-start'
145
+ },
146
+ mirror: {
147
+ transform: [{
148
+ scaleX: -1
149
+ }]
88
150
  }
89
151
  });
90
152
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","Animated","StyleSheet","React","useOnboarding","Button","Pagination","props","isDone","dots","Array","from","length","numberOfScreens","_","i","width","createElement","style","styles","pagination","backgroundColor","paginationContainerStyle","buttons","leftButton","buttonLeftContainerStyle","showSkip","hasSkipPosition","onPress","onSkip","buttonTextStyle","skipLabelStyle","buttonStyle","skipButtonContainerStyle","label","skipLabel","dotsContainer","map","inputRange","dotOpacity","animatedValue","interpolate","outputRange","extrapolate","key","dot","color","opacity","dotsContainerStyle","rightButton","buttonRightContainerStyle","showNext","onNext","nextLabel","nextLabelStyle","nextButtonContainerStyle","showDone","onDone","doneLabel","doneLabelStyle","doneButtonContainerStyle","create","flexDirection","justifyContent","alignItems","height","paddingVertical","paddingHorizontal","borderRadius","marginHorizontal","flex","text","fontSize","minWidth","paddingRight","paddingLeft"],"sourceRoot":"../../../src","sources":["components/Pagination.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["View","Pressable","Animated","StyleSheet","React","tinycolor","useOnboarding","Button","Pagination","props","isDone","currentPage","progress","scrollTo","previousPage","dots","Array","from","length","numberOfScreens","_","i","width","showPrevious","createElement","style","styles","pagination","backgroundColor","paginationContainerStyle","buttons","leftButton","buttonLeftContainerStyle","onPress","buttonTextStyle","previousLabelStyle","buttonStyle","previousButtonContainerStyle","label","previousLabel","showSkip","hasSkipPosition","onSkip","skipLabelStyle","skipButtonContainerStyle","skipLabel","paginationStyle","accessible","accessibilityRole","accessibilityValue","min","max","now","progressTrack","color","setAlpha","toRgbString","mirror","progressBarStyle","progressFill","progressBarFillStyle","dotsContainer","dotsContainerStyle","map","inputRange","dotOpacity","animatedValue","interpolate","outputRange","extrapolate","dotProps","dotsAreTappable","accessibilityLabel","accessibilityState","selected","dot","key","opacity","_extends","hitSlop","rightButton","buttonRightContainerStyle","showNext","onNext","nextLabel","nextLabelStyle","nextButtonContainerStyle","showDone","onDone","doneLabel","doneLabelStyle","doneButtonContainerStyle","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":[]}
@@ -1,101 +1,74 @@
1
+ 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); }
1
2
  import React from 'react';
2
3
  import { OnboardingPages } from './OnboardingPages';
3
4
  import { CustomPages } from './CustomPages';
4
- import { Animated } from 'react-native';
5
+ import { Animated, I18nManager } from 'react-native';
5
6
  import { useOnboarding } from '../hooks/useOnboarding';
6
7
  export const Swiper = props => {
7
- const scrollX = React.useRef(new Animated.Value(0)).current;
8
+ // `scrollX` is always JS-driven because the background-color interpolation
9
+ // cannot run on the native thread. When `useNativeDriver` is enabled we also
10
+ // keep `nativeScrollX`, driven natively, for transform/opacity animations
11
+ // (the pagination dots), and mirror its offset onto `scrollX` via a JS
12
+ // listener so the color interpolation keeps working.
13
+ const scrollX = React.useMemo(() => new Animated.Value(0), []);
14
+ const nativeScrollX = React.useMemo(() => new Animated.Value(0), []);
15
+ const nativeDriverEnabled = props.useNativeDriver ?? false;
16
+ const dotsAnimatedValue = nativeDriverEnabled ? nativeScrollX : scrollX;
17
+
18
+ // Direction handling: default to the device direction. We only mirror
19
+ // manually (via scaleX) when the requested direction differs from the
20
+ // device's — when they match, React Native already lays the row out
21
+ // correctly and an extra flip would double-invert it.
22
+ const rtl = props.rtl ?? I18nManager.isRTL;
23
+ const mirror = rtl !== I18nManager.isRTL;
8
24
  const {
9
- flatListRef,
25
+ setFlatListRef,
10
26
  setCurrentPage,
11
27
  currentPage,
12
28
  numberOfScreens,
13
29
  nextPage,
14
- scrollEnabled
30
+ scrollEnabled,
31
+ pauseAutoPlay
15
32
  } = useOnboarding();
33
+ const onScroll = React.useMemo(() => nativeDriverEnabled ? Animated.event([{
34
+ nativeEvent: {
35
+ contentOffset: {
36
+ x: nativeScrollX
37
+ }
38
+ }
39
+ }], {
40
+ useNativeDriver: true,
41
+ listener: event => scrollX.setValue(event.nativeEvent.contentOffset.x)
42
+ }) : Animated.event([{
43
+ nativeEvent: {
44
+ contentOffset: {
45
+ x: scrollX
46
+ }
47
+ }
48
+ }], {
49
+ useNativeDriver: false
50
+ }), [nativeDriverEnabled, nativeScrollX, scrollX]);
51
+
52
+ // Stop autoplay as soon as the user takes manual control of the slider.
53
+ const onScrollBeginDrag = React.useCallback(() => pauseAutoPlay(), [pauseAutoPlay]);
54
+ const shared = {
55
+ setFlatListRef,
56
+ scrollX,
57
+ dotsAnimatedValue,
58
+ onScroll,
59
+ onScrollBeginDrag,
60
+ setPage: setCurrentPage,
61
+ currentPage,
62
+ numberOfScreens,
63
+ nextPage,
64
+ scrollEnabled,
65
+ mirror
66
+ };
16
67
  if (props.children) {
17
- return /*#__PURE__*/React.createElement(CustomPages, {
18
- customFooter: props.customFooter,
19
- showPagination: props.showPagination,
20
- flatListRef: flatListRef,
21
- scrollX: scrollX,
22
- setPage: setCurrentPage,
23
- scrollEnabled: scrollEnabled,
24
- currentPage: currentPage,
25
- numberOfScreens: numberOfScreens,
26
- nextPage: nextPage,
27
- showDone: props.showDone,
28
- showNext: props.showNext,
29
- onDone: props.onDone,
30
- skipButtonContainerStyle: props.skipButtonContainerStyle,
31
- nextButtonContainerStyle: props.nextButtonContainerStyle,
32
- doneButtonContainerStyle: props.doneButtonContainerStyle,
33
- skipButtonPosition: props.skipButtonPosition,
34
- paginationContainerStyle: props.paginationContainerStyle,
35
- paginationPosition: props.paginationPosition,
36
- nextLabel: props.nextLabel,
37
- skipLabel: props.skipLabel,
38
- doneLabel: props.doneLabel,
39
- showSkip: props.showSkip,
40
- onSkip: props.onSkip,
41
- scrollAnimationDuration: props.scrollAnimationDuration,
42
- buttonLeftContainerStyle: props.buttonLeftContainerStyle,
43
- buttonRightContainerStyle: props.buttonRightContainerStyle,
44
- dotsContainerStyle: props.dotsContainerStyle,
45
- doneLabelStyle: props.doneLabelStyle,
46
- skipLabelStyle: props.skipLabelStyle,
47
- nextLabelStyle: props.nextLabelStyle,
48
- width: props.width,
49
- color: props.color,
50
- useNativeDriver: props.useNativeDriver,
51
- imageContainerStyle: props.imageContainerStyle,
52
- containerStyle: props.containerStyle,
53
- titleContainerStyle: props.titleContainerStyle,
54
- titleStyle: props.titleStyle,
55
- subtitleStyle: props.subtitleStyle,
56
- swap: props.swap
57
- }, props.children);
68
+ return /*#__PURE__*/React.createElement(CustomPages, _extends({}, props, shared), props.children);
58
69
  }
59
- return /*#__PURE__*/React.createElement(OnboardingPages, {
60
- showDone: props.showDone,
61
- customFooter: props.customFooter,
62
- flatListRef: flatListRef,
63
- scrollX: scrollX,
64
- setPage: setCurrentPage,
65
- currentPage: currentPage,
66
- paginationPosition: props.paginationPosition,
67
- nextPage: nextPage,
68
- showSkip: props.showSkip,
69
- onDone: props.onDone,
70
- pages: props.pages || [],
71
- width: props.width,
72
- showNext: props.showNext,
73
- skipButtonContainerStyle: props.skipButtonContainerStyle,
74
- nextButtonContainerStyle: props.nextButtonContainerStyle,
75
- doneButtonContainerStyle: props.doneButtonContainerStyle,
76
- skipLabelStyle: props.skipLabelStyle,
77
- skipButtonPosition: props.skipButtonPosition,
78
- showPagination: props.showPagination,
79
- color: props.color,
80
- onSkip: props.onSkip,
81
- swap: props.swap,
82
- scrollEnabled: scrollEnabled,
83
- nextLabel: props.nextLabel,
84
- skipLabel: props.skipLabel,
85
- doneLabel: props.doneLabel,
86
- scrollAnimationDuration: props.scrollAnimationDuration,
87
- buttonLeftContainerStyle: props.buttonLeftContainerStyle,
88
- buttonRightContainerStyle: props.buttonRightContainerStyle,
89
- dotsContainerStyle: props.dotsContainerStyle,
90
- doneLabelStyle: props.doneLabelStyle,
91
- nextLabelStyle: props.nextLabelStyle,
92
- useNativeDriver: props.useNativeDriver,
93
- imageContainerStyle: props.imageContainerStyle,
94
- containerStyle: props.containerStyle,
95
- titleContainerStyle: props.titleContainerStyle,
96
- titleStyle: props.titleStyle,
97
- subtitleStyle: props.subtitleStyle,
98
- paginationContainerStyle: props.paginationContainerStyle
99
- });
70
+ return /*#__PURE__*/React.createElement(OnboardingPages, _extends({}, props, shared, {
71
+ pages: props.pages || []
72
+ }));
100
73
  };
101
74
  //# sourceMappingURL=Swiper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","OnboardingPages","CustomPages","Animated","useOnboarding","Swiper","props","scrollX","useRef","Value","current","flatListRef","setCurrentPage","currentPage","numberOfScreens","nextPage","scrollEnabled","children","createElement","customFooter","showPagination","setPage","showDone","showNext","onDone","skipButtonContainerStyle","nextButtonContainerStyle","doneButtonContainerStyle","skipButtonPosition","paginationContainerStyle","paginationPosition","nextLabel","skipLabel","doneLabel","showSkip","onSkip","scrollAnimationDuration","buttonLeftContainerStyle","buttonRightContainerStyle","dotsContainerStyle","doneLabelStyle","skipLabelStyle","nextLabelStyle","width","color","useNativeDriver","imageContainerStyle","containerStyle","titleContainerStyle","titleStyle","subtitleStyle","swap","pages"],"sourceRoot":"../../../src","sources":["components/Swiper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","OnboardingPages","CustomPages","Animated","I18nManager","useOnboarding","Swiper","props","scrollX","useMemo","Value","nativeScrollX","nativeDriverEnabled","useNativeDriver","dotsAnimatedValue","rtl","isRTL","mirror","setFlatListRef","setCurrentPage","currentPage","numberOfScreens","nextPage","scrollEnabled","pauseAutoPlay","onScroll","event","nativeEvent","contentOffset","x","listener","setValue","onScrollBeginDrag","useCallback","shared","setPage","children","createElement","_extends","pages"],"sourceRoot":"../../../src","sources":["components/Swiper.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,WAAW,QAAQ,eAAe;AAC3C,SACEC,QAAQ,EACRC,WAAW,QAGN,cAAc;AACrB,SAASC,aAAa,QAAQ,wBAAwB;AAGtD,OAAO,MAAMC,MAAiC,GAAIC,KAAK,IAAK;EAC1D;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGR,KAAK,CAACS,OAAO,CAAC,MAAM,IAAIN,QAAQ,CAACO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EAC9D,MAAMC,aAAa,GAAGX,KAAK,CAACS,OAAO,CAAC,MAAM,IAAIN,QAAQ,CAACO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACpE,MAAME,mBAAmB,GAAGL,KAAK,CAACM,eAAe,IAAI,KAAK;EAC1D,MAAMC,iBAAiB,GAAGF,mBAAmB,GAAGD,aAAa,GAAGH,OAAO;;EAEvE;EACA;EACA;EACA;EACA,MAAMO,GAAG,GAAGR,KAAK,CAACQ,GAAG,IAAIX,WAAW,CAACY,KAAK;EAC1C,MAAMC,MAAM,GAAGF,GAAG,KAAKX,WAAW,CAACY,KAAK;EAExC,MAAM;IACJE,cAAc;IACdC,cAAc;IACdC,WAAW;IACXC,eAAe;IACfC,QAAQ;IACRC,aAAa;IACbC;EACF,CAAC,GAAGnB,aAAa,CAAC,CAAC;EAEnB,MAAMoB,QAAQ,GAAGzB,KAAK,CAACS,OAAO,CAC5B,MACEG,mBAAmB,GACfT,QAAQ,CAACuB,KAAK,CACZ,CAAC;IAAEC,WAAW,EAAE;MAAEC,aAAa,EAAE;QAAEC,CAAC,EAAElB;MAAc;IAAE;EAAE,CAAC,CAAC,EAC1D;IACEE,eAAe,EAAE,IAAI;IACrBiB,QAAQ,EAAGJ,KAA8C,IACvDlB,OAAO,CAACuB,QAAQ,CAACL,KAAK,CAACC,WAAW,CAACC,aAAa,CAACC,CAAC;EACtD,CACF,CAAC,GACD1B,QAAQ,CAACuB,KAAK,CAAC,CAAC;IAAEC,WAAW,EAAE;MAAEC,aAAa,EAAE;QAAEC,CAAC,EAAErB;MAAQ;IAAE;EAAE,CAAC,CAAC,EAAE;IACnEK,eAAe,EAAE;EACnB,CAAC,CAAC,EACR,CAACD,mBAAmB,EAAED,aAAa,EAAEH,OAAO,CAC9C,CAAC;;EAED;EACA,MAAMwB,iBAAiB,GAAGhC,KAAK,CAACiC,WAAW,CACzC,MAAMT,aAAa,CAAC,CAAC,EACrB,CAACA,aAAa,CAChB,CAAC;EAED,MAAMU,MAAM,GAAG;IACbhB,cAAc;IACdV,OAAO;IACPM,iBAAiB;IACjBW,QAAQ;IACRO,iBAAiB;IACjBG,OAAO,EAAEhB,cAAc;IACvBC,WAAW;IACXC,eAAe;IACfC,QAAQ;IACRC,aAAa;IACbN;EACF,CAAC;EAED,IAAIV,KAAK,CAAC6B,QAAQ,EAAE;IAClB,oBACEpC,KAAA,CAAAqC,aAAA,CAACnC,WAAW,EAAAoC,QAAA,KAAK/B,KAAK,EAAM2B,MAAM,GAC/B3B,KAAK,CAAC6B,QACI,CAAC;EAElB;EAEA,oBAAOpC,KAAA,CAAAqC,aAAA,CAACpC,eAAe,EAAAqC,QAAA,KAAK/B,KAAK,EAAM2B,MAAM;IAAEK,KAAK,EAAEhC,KAAK,CAACgC,KAAK,IAAI;EAAG,EAAE,CAAC;AAC7E,CAAC","ignoreList":[]}
@@ -3,7 +3,9 @@ import React from 'react';
3
3
  export const Button = props => {
4
4
  return typeof props.label === 'string' ? /*#__PURE__*/React.createElement(TouchableOpacity, {
5
5
  onPress: props.onPress,
6
- style: props.buttonStyle
6
+ style: props.buttonStyle,
7
+ accessibilityRole: "button",
8
+ accessibilityLabel: props.label
7
9
  }, /*#__PURE__*/React.createElement(Text, {
8
10
  style: [styles.text, {
9
11
  color: props.color || 'white'
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","Text","TouchableOpacity","React","Button","props","label","createElement","onPress","style","buttonStyle","styles","text","color","buttonTextStyle","SkipButton","top","left","position","undefined","right","skipButton","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,SACEA,UAAU,EACVC,IAAI,EACJC,gBAAgB,QAIX,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AAUzB,OAAO,MAAMC,MAAM,GAAIC,KAAkB,IAAK;EAC5C,OAAO,OAAOA,KAAK,CAACC,KAAK,KAAK,QAAQ,gBACpCH,KAAA,CAAAI,aAAA,CAACL,gBAAgB;IAACM,OAAO,EAAEH,KAAK,CAACG,OAAQ;IAACC,KAAK,EAAEJ,KAAK,CAACK;EAAY,gBACjEP,KAAA,CAAAI,aAAA,CAACN,IAAI;IACHQ,KAAK,EAAE,CACLE,MAAM,CAACC,IAAI,EACX;MACEC,KAAK,EAAER,KAAK,CAACQ,KAAK,IAAI;IACxB,CAAC,EACDR,KAAK,CAACS,eAAe;EACrB,GAEDT,KAAK,CAACC,KACH,CACU,CAAC,GAEnBD,KAAK,CAACC,KACP;AACH,CAAC;AAED,OAAO,MAAMS,UAAU,GACrBV,KAEC,IACE;EACH,MAAMK,WAAW,GAAG;IAClBM,GAAG,EAAE,EAAE;IACPC,IAAI,EAAEZ,KAAK,CAACa,QAAQ,KAAK,UAAU,GAAG,EAAE,GAAGC,SAAS;IACpDC,KAAK,EAAEf,KAAK,CAACa,QAAQ,KAAK,WAAW,GAAG,EAAE,GAAGC;EAC/C,CAAC;EAED,oBACEhB,KAAA,CAAAI,aAAA,CAACH,MAAM;IACLE,KAAK,EAAED,KAAK,CAACC,KAAK,IAAI,MAAO;IAC7BE,OAAO,EAAEH,KAAK,CAACG,OAAQ;IACvBE,WAAW,EAAE,CAACC,MAAM,CAACU,UAAU,EAAEX,WAAW,EAAEL,KAAK,CAACK,WAAW,CAAE;IACjEI,eAAe,EAAET,KAAK,CAACS,eAAgB;IACvCD,KAAK,EAAER,KAAK,CAACQ;EAAM,CACpB,CAAC;AAEN,CAAC;AAED,MAAMF,MAAM,GAAGX,UAAU,CAACsB,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;EACDb,IAAI,EAAE;IACJyB,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;EACDtB,UAAU,EAAE;IACVH,QAAQ,EAAE,UAAU;IACpB0B,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","Text","TouchableOpacity","React","Button","props","label","createElement","onPress","style","buttonStyle","accessibilityRole","accessibilityLabel","styles","text","color","buttonTextStyle","SkipButton","top","left","position","undefined","right","skipButton","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,SACEA,UAAU,EACVC,IAAI,EACJC,gBAAgB,QAIX,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AAUzB,OAAO,MAAMC,MAAM,GAAIC,KAAkB,IAAK;EAC5C,OAAO,OAAOA,KAAK,CAACC,KAAK,KAAK,QAAQ,gBACpCH,KAAA,CAAAI,aAAA,CAACL,gBAAgB;IACfM,OAAO,EAAEH,KAAK,CAACG,OAAQ;IACvBC,KAAK,EAAEJ,KAAK,CAACK,WAAY;IACzBC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAEP,KAAK,CAACC;EAAM,gBAEhCH,KAAA,CAAAI,aAAA,CAACN,IAAI;IACHQ,KAAK,EAAE,CACLI,MAAM,CAACC,IAAI,EACX;MACEC,KAAK,EAAEV,KAAK,CAACU,KAAK,IAAI;IACxB,CAAC,EACDV,KAAK,CAACW,eAAe;EACrB,GAEDX,KAAK,CAACC,KACH,CACU,CAAC,GAEnBD,KAAK,CAACC,KACP;AACH,CAAC;AAED,OAAO,MAAMW,UAAU,GACrBZ,KAEC,IACE;EACH,MAAMK,WAAW,GAAG;IAClBQ,GAAG,EAAE,EAAE;IACPC,IAAI,EAAEd,KAAK,CAACe,QAAQ,KAAK,UAAU,GAAG,EAAE,GAAGC,SAAS;IACpDC,KAAK,EAAEjB,KAAK,CAACe,QAAQ,KAAK,WAAW,GAAG,EAAE,GAAGC;EAC/C,CAAC;EAED,oBACElB,KAAA,CAAAI,aAAA,CAACH,MAAM;IACLE,KAAK,EAAED,KAAK,CAACC,KAAK,IAAI,MAAO;IAC7BE,OAAO,EAAEH,KAAK,CAACG,OAAQ;IACvBE,WAAW,EAAE,CAACG,MAAM,CAACU,UAAU,EAAEb,WAAW,EAAEL,KAAK,CAACK,WAAW,CAAE;IACjEM,eAAe,EAAEX,KAAK,CAACW,eAAgB;IACvCD,KAAK,EAAEV,KAAK,CAACU;EAAM,CACpB,CAAC;AAEN,CAAC;AAED,MAAMF,MAAM,GAAGb,UAAU,CAACwB,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;EACDb,IAAI,EAAE;IACJyB,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;EACDtB,UAAU,EAAE;IACVH,QAAQ,EAAE,UAAU;IACpB0B,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,12 +1,18 @@
1
1
  import React from 'react';
2
- import { Dimensions } from 'react-native';
2
+ import { AccessibilityInfo, Animated, Dimensions } from 'react-native';
3
3
  export const OnboardingContext = /*#__PURE__*/React.createContext(undefined);
4
4
  export const OnboardingProvider = ({
5
5
  children,
6
- width = Dimensions.get('window').width,
6
+ width: widthProp,
7
7
  numberOfScreens,
8
- scrollEnabled
8
+ scrollEnabled,
9
+ onPageChange,
10
+ scrollAnimationDuration,
11
+ autoPlay = false,
12
+ autoPlayInterval = 3000,
13
+ loop = false
9
14
  }) => {
15
+ const width = widthProp ?? Dimensions.get('window').width;
10
16
  const getProgress = page => {
11
17
  return Math.round((page + 1) / numberOfScreens * 100);
12
18
  };
@@ -15,40 +21,114 @@ export const OnboardingProvider = ({
15
21
  const [isDone, setIsDone] = React.useState(false);
16
22
  const [enableScroll, setEnableScroll] = React.useState(scrollEnabled);
17
23
  const flatListRef = React.useRef(null);
18
- const setCurrentPage = index => {
19
- setPage(index);
20
- setProgress(getProgress(index));
21
- setIsDone(index === numberOfScreens - 1);
22
- };
23
- const nextPage = (animated = true) => {
24
- if (flatListRef.current && currentPage < numberOfScreens - 1) {
25
- flatListRef.current.scrollToOffset({
26
- offset: width * (currentPage + 1),
27
- animated: animated
24
+ const setFlatListRef = React.useCallback(node => {
25
+ flatListRef.current = node;
26
+ }, []);
27
+ // Tracks the latest page so timers/animations read a fresh value without
28
+ // needing to be recreated on every page change.
29
+ const currentPageRef = React.useRef(0);
30
+ const [isAutoPlaying, setIsAutoPlaying] = React.useState(autoPlay);
31
+
32
+ // Keep autoplay in sync if the `autoPlay` prop is toggled after mount.
33
+ React.useEffect(() => {
34
+ setIsAutoPlaying(autoPlay);
35
+ }, [autoPlay]);
36
+
37
+ // Dedicated value used to honor a custom scrollAnimationDuration. FlatList's
38
+ // own animated scroll has a fixed, platform-controlled duration, so when a
39
+ // duration is requested we drive the offset manually via this value.
40
+ const scrollAnim = React.useMemo(() => new Animated.Value(0), []);
41
+ React.useEffect(() => {
42
+ const id = scrollAnim.addListener(({
43
+ value
44
+ }) => {
45
+ var _flatListRef$current;
46
+ (_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 || _flatListRef$current.scrollToOffset({
47
+ offset: value,
48
+ animated: false
28
49
  });
29
- setCurrentPage(currentPage + 1);
30
- }
31
- };
32
- const scrollTo = (index, animated = true) => {
33
- if (flatListRef.current && index >= 0) {
50
+ });
51
+ return () => scrollAnim.removeListener(id);
52
+ }, [scrollAnim]);
53
+ const animateToOffset = React.useCallback((offset, animated) => {
54
+ if (!flatListRef.current) return;
55
+ if (animated && scrollAnimationDuration) {
56
+ scrollAnim.stopAnimation();
57
+ scrollAnim.setValue(width * currentPageRef.current);
58
+ Animated.timing(scrollAnim, {
59
+ toValue: offset,
60
+ duration: scrollAnimationDuration,
61
+ useNativeDriver: false
62
+ }).start();
63
+ } else {
34
64
  flatListRef.current.scrollToOffset({
35
- offset: index * width,
36
- animated: animated
65
+ offset,
66
+ animated
37
67
  });
68
+ }
69
+ }, [scrollAnim, scrollAnimationDuration, width]);
70
+ const setCurrentPage = React.useCallback(index => {
71
+ setPage(index);
72
+ currentPageRef.current = index;
73
+ setProgress(Math.round((index + 1) / numberOfScreens * 100));
74
+ setIsDone(index === numberOfScreens - 1);
75
+ onPageChange === null || onPageChange === void 0 || onPageChange(index);
76
+ // No-op when no screen reader is active; announces the page otherwise.
77
+ AccessibilityInfo.announceForAccessibility(`Page ${index + 1} of ${numberOfScreens}`);
78
+ }, [numberOfScreens, onPageChange]);
79
+ const nextPage = React.useCallback((animated = true) => {
80
+ const current = currentPageRef.current;
81
+ if (current < numberOfScreens - 1) {
82
+ animateToOffset(width * (current + 1), animated);
83
+ setCurrentPage(current + 1);
84
+ } else if (loop) {
85
+ animateToOffset(0, animated);
86
+ setCurrentPage(0);
87
+ }
88
+ }, [numberOfScreens, loop, width, animateToOffset, setCurrentPage]);
89
+ const previousPage = React.useCallback((animated = true) => {
90
+ const current = currentPageRef.current;
91
+ if (current > 0) {
92
+ animateToOffset(width * (current - 1), animated);
93
+ setCurrentPage(current - 1);
94
+ } else if (loop) {
95
+ animateToOffset(width * (numberOfScreens - 1), animated);
96
+ setCurrentPage(numberOfScreens - 1);
97
+ }
98
+ }, [numberOfScreens, loop, width, animateToOffset, setCurrentPage]);
99
+ const scrollTo = React.useCallback((index, animated = true) => {
100
+ if (index >= 0 && index < numberOfScreens) {
101
+ animateToOffset(index * width, animated);
38
102
  setCurrentPage(index);
39
103
  }
40
- };
104
+ }, [numberOfScreens, width, animateToOffset, setCurrentPage]);
105
+ const pauseAutoPlay = React.useCallback(() => setIsAutoPlaying(false), []);
106
+ const resumeAutoPlay = React.useCallback(() => setIsAutoPlaying(autoPlay), [autoPlay]);
107
+
108
+ // Autoplay timer. Recreated whenever the page changes so it always advances
109
+ // from the current position; pauses when the user interacts with the slider.
110
+ React.useEffect(() => {
111
+ if (!isAutoPlaying || numberOfScreens <= 1) return;
112
+ if (!loop && currentPage >= numberOfScreens - 1) return;
113
+ const timer = setTimeout(() => nextPage(true), autoPlayInterval);
114
+ return () => clearTimeout(timer);
115
+ }, [isAutoPlaying, currentPage, numberOfScreens, autoPlayInterval, loop, nextPage]);
41
116
  const contextValue = {
42
117
  scrollEnabled: enableScroll,
43
118
  enableScroll: setEnableScroll,
119
+ width,
44
120
  currentPage,
45
121
  numberOfScreens,
46
122
  nextPage,
123
+ previousPage,
47
124
  setCurrentPage,
48
125
  flatListRef,
126
+ setFlatListRef,
49
127
  scrollTo,
50
128
  progress,
51
- isDone
129
+ isDone,
130
+ pauseAutoPlay,
131
+ resumeAutoPlay
52
132
  };
53
133
  return /*#__PURE__*/React.createElement(OnboardingContext.Provider, {
54
134
  value: contextValue
@@ -1 +1 @@
1
- {"version":3,"names":["React","Dimensions","OnboardingContext","createContext","undefined","OnboardingProvider","children","width","get","numberOfScreens","scrollEnabled","getProgress","page","Math","round","currentPage","setPage","useState","progress","setProgress","isDone","setIsDone","enableScroll","setEnableScroll","flatListRef","useRef","setCurrentPage","index","nextPage","animated","current","scrollToOffset","offset","scrollTo","contextValue","createElement","Provider","value"],"sourceRoot":"../../../src","sources":["context/OnboardingContext.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAuB,cAAc;AA2BxD,OAAO,MAAMC,iBAAiB,gBAAGF,KAAK,CAACG,aAAa,CAElDC,SAAS,CAAC;AAEZ,OAAO,MAAMC,kBAAqD,GAAGA,CAAC;EACpEC,QAAQ;EACRC,KAAK,GAAGN,UAAU,CAACO,GAAG,CAAC,QAAQ,CAAC,CAACD,KAAK;EACtCE,eAAe;EACfC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAIC,IAAY,IAAK;IACpC,OAAOC,IAAI,CAACC,KAAK,CAAE,CAACF,IAAI,GAAG,CAAC,IAAIH,eAAe,GAAI,GAAG,CAAC;EACzD,CAAC;EAED,MAAM,CAACM,WAAW,EAAEC,OAAO,CAAC,GAAGhB,KAAK,CAACiB,QAAQ,CAAC,CAAC,CAAC;EAChD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGnB,KAAK,CAACiB,QAAQ,CAACN,WAAW,CAAC,CAAC,CAAC,CAAC;EAC9D,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAGrB,KAAK,CAACiB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACK,YAAY,EAAEC,eAAe,CAAC,GAAGvB,KAAK,CAACiB,QAAQ,CACpDP,aACF,CAAC;EACD,MAAMc,WAAW,GAAGxB,KAAK,CAACyB,MAAM,CAAW,IAAI,CAAC;EAEhD,MAAMC,cAAc,GAAIC,KAAa,IAAK;IACxCX,OAAO,CAACW,KAAK,CAAC;IACdR,WAAW,CAACR,WAAW,CAACgB,KAAK,CAAC,CAAC;IAC/BN,SAAS,CAACM,KAAK,KAAKlB,eAAe,GAAG,CAAC,CAAC;EAC1C,CAAC;EAED,MAAMmB,QAAQ,GAAGA,CAACC,QAAiB,GAAG,IAAI,KAAK;IAC7C,IAAIL,WAAW,CAACM,OAAO,IAAIf,WAAW,GAAGN,eAAe,GAAG,CAAC,EAAE;MAC5De,WAAW,CAACM,OAAO,CAACC,cAAc,CAAC;QACjCC,MAAM,EAAEzB,KAAK,IAAIQ,WAAW,GAAG,CAAC,CAAC;QACjCc,QAAQ,EAAEA;MACZ,CAAC,CAAC;MACFH,cAAc,CAACX,WAAW,GAAG,CAAC,CAAC;IACjC;EACF,CAAC;EAED,MAAMkB,QAAQ,GAAGA,CAACN,KAAa,EAAEE,QAAiB,GAAG,IAAI,KAAK;IAC5D,IAAIL,WAAW,CAACM,OAAO,IAAIH,KAAK,IAAI,CAAC,EAAE;MACrCH,WAAW,CAACM,OAAO,CAACC,cAAc,CAAC;QACjCC,MAAM,EAAEL,KAAK,GAAGpB,KAAK;QACrBsB,QAAQ,EAAEA;MACZ,CAAC,CAAC;MACFH,cAAc,CAACC,KAAK,CAAC;IACvB;EACF,CAAC;EAED,MAAMO,YAAmC,GAAG;IAC1CxB,aAAa,EAAEY,YAAY;IAC3BA,YAAY,EAAEC,eAAe;IAC7BR,WAAW;IACXN,eAAe;IACfmB,QAAQ;IACRF,cAAc;IACdF,WAAW;IACXS,QAAQ;IACRf,QAAQ;IACRE;EACF,CAAC;EAED,oBACEpB,KAAA,CAAAmC,aAAA,CAACjC,iBAAiB,CAACkC,QAAQ;IAACC,KAAK,EAAEH;EAAa,GAC7C5B,QACyB,CAAC;AAEjC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","AccessibilityInfo","Animated","Dimensions","OnboardingContext","createContext","undefined","OnboardingProvider","children","width","widthProp","numberOfScreens","scrollEnabled","onPageChange","scrollAnimationDuration","autoPlay","autoPlayInterval","loop","get","getProgress","page","Math","round","currentPage","setPage","useState","progress","setProgress","isDone","setIsDone","enableScroll","setEnableScroll","flatListRef","useRef","setFlatListRef","useCallback","node","current","currentPageRef","isAutoPlaying","setIsAutoPlaying","useEffect","scrollAnim","useMemo","Value","id","addListener","value","_flatListRef$current","scrollToOffset","offset","animated","removeListener","animateToOffset","stopAnimation","setValue","timing","toValue","duration","useNativeDriver","start","setCurrentPage","index","announceForAccessibility","nextPage","previousPage","scrollTo","pauseAutoPlay","resumeAutoPlay","timer","setTimeout","clearTimeout","contextValue","createElement","Provider"],"sourceRoot":"../../../src","sources":["context/OnboardingContext.tsx"],"mappings":"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","ignoreList":[]}