react-native-app-onboard 0.1.9 → 0.2.1

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 (80) 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 +63 -79
  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/color.js +308 -0
  21. package/lib/commonjs/utils/color.js.map +1 -0
  22. package/lib/commonjs/utils/persistence.js +51 -0
  23. package/lib/commonjs/utils/persistence.js.map +1 -0
  24. package/lib/module/components/CustomPages.js +31 -55
  25. package/lib/module/components/CustomPages.js.map +1 -1
  26. package/lib/module/components/OnboardingPages.js +64 -79
  27. package/lib/module/components/OnboardingPages.js.map +1 -1
  28. package/lib/module/components/Page.js +8 -3
  29. package/lib/module/components/Page.js.map +1 -1
  30. package/lib/module/components/Pagination.js +76 -14
  31. package/lib/module/components/Pagination.js.map +1 -1
  32. package/lib/module/components/Swiper.js +59 -86
  33. package/lib/module/components/Swiper.js.map +1 -1
  34. package/lib/module/components/button.js +3 -1
  35. package/lib/module/components/button.js.map +1 -1
  36. package/lib/module/context/OnboardingContext.js +102 -22
  37. package/lib/module/context/OnboardingContext.js.map +1 -1
  38. package/lib/module/hooks/useOnboarding.js +1 -1
  39. package/lib/module/hooks/useOnboarding.js.map +1 -1
  40. package/lib/module/index.js +8 -1
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/utils/color.js +299 -0
  43. package/lib/module/utils/color.js.map +1 -0
  44. package/lib/module/utils/persistence.js +42 -0
  45. package/lib/module/utils/persistence.js.map +1 -0
  46. package/lib/typescript/src/components/CustomPages.d.ts +6 -2
  47. package/lib/typescript/src/components/CustomPages.d.ts.map +1 -1
  48. package/lib/typescript/src/components/OnboardingPages.d.ts +6 -2
  49. package/lib/typescript/src/components/OnboardingPages.d.ts.map +1 -1
  50. package/lib/typescript/src/components/Page.d.ts +2 -0
  51. package/lib/typescript/src/components/Page.d.ts.map +1 -1
  52. package/lib/typescript/src/components/Pagination.d.ts +9 -0
  53. package/lib/typescript/src/components/Pagination.d.ts.map +1 -1
  54. package/lib/typescript/src/components/Swiper.d.ts.map +1 -1
  55. package/lib/typescript/src/components/button.d.ts.map +1 -1
  56. package/lib/typescript/src/context/OnboardingContext.d.ts +9 -0
  57. package/lib/typescript/src/context/OnboardingContext.d.ts.map +1 -1
  58. package/lib/typescript/src/hooks/useOnboarding.d.ts +3 -0
  59. package/lib/typescript/src/hooks/useOnboarding.d.ts.map +1 -1
  60. package/lib/typescript/src/index.d.ts +4 -0
  61. package/lib/typescript/src/index.d.ts.map +1 -1
  62. package/lib/typescript/src/types/index.d.ts +13 -0
  63. package/lib/typescript/src/types/index.d.ts.map +1 -1
  64. package/lib/typescript/src/utils/color.d.ts +18 -0
  65. package/lib/typescript/src/utils/color.d.ts.map +1 -0
  66. package/lib/typescript/src/utils/persistence.d.ts +31 -0
  67. package/lib/typescript/src/utils/persistence.d.ts.map +1 -0
  68. package/package.json +12 -6
  69. package/src/components/CustomPages.tsx +62 -69
  70. package/src/components/OnboardingPages.tsx +86 -89
  71. package/src/components/Page.tsx +8 -2
  72. package/src/components/Pagination.tsx +117 -29
  73. package/src/components/Swiper.tsx +65 -87
  74. package/src/components/button.tsx +6 -1
  75. package/src/context/OnboardingContext.tsx +145 -26
  76. package/src/hooks/useOnboarding.tsx +1 -3
  77. package/src/index.tsx +16 -1
  78. package/src/types/index.ts +13 -0
  79. package/src/utils/color.ts +284 -0
  80. package/src/utils/persistence.ts +58 -0
@@ -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 = _reactNative.Dimensions.get('window').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 setCurrentPage = index => {
26
- setPage(index);
27
- setProgress(getProgress(index));
28
- setIsDone(index === numberOfScreens - 1);
29
- };
30
- const nextPage = (animated = true) => {
31
- if (flatListRef.current && currentPage < numberOfScreens - 1) {
32
- flatListRef.current.scrollToOffset({
33
- offset: width * (currentPage + 1),
34
- animated: animated
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
- setCurrentPage(currentPage + 1);
37
- }
38
- };
39
- const scrollTo = (index, animated = true) => {
40
- if (flatListRef.current && index >= 0) {
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: index * width,
43
- animated: 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
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","OnboardingContext","exports","React","createContext","undefined","OnboardingProvider","children","width","Dimensions","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,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAyD,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA2BlD,MAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAAGE,cAAK,CAACC,aAAa,CAElDC,SAAS,CAAC;AAEL,MAAMC,kBAAqD,GAAGA,CAAC;EACpEC,QAAQ;EACRC,KAAK,GAAGC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACF,KAAK;EACtCG,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,GAAGf,cAAK,CAACgB,QAAQ,CAAC,CAAC,CAAC;EAChD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGlB,cAAK,CAACgB,QAAQ,CAACN,WAAW,CAAC,CAAC,CAAC,CAAC;EAC9D,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAGpB,cAAK,CAACgB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACK,YAAY,EAAEC,eAAe,CAAC,GAAGtB,cAAK,CAACgB,QAAQ,CACpDP,aACF,CAAC;EACD,MAAMc,WAAW,GAAGvB,cAAK,CAACwB,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,EAAE1B,KAAK,IAAIS,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,GAAGrB,KAAK;QACrBuB,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,oBACE5B,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAACpC,iBAAiB,CAACqC,QAAQ;IAACC,KAAK,EAAEH;EAAa,GAC7C7B,QACyB,CAAC;AAEjC,CAAC;AAACL,OAAA,CAAAI,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","OnboardingContext","exports","React","createContext","undefined","OnboardingProvider","children","width","widthProp","numberOfScreens","scrollEnabled","onPageChange","scrollAnimationDuration","autoPlay","autoPlayInterval","loop","Dimensions","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","Animated","Value","id","addListener","value","_flatListRef$current","scrollToOffset","offset","animated","removeListener","animateToOffset","stopAnimation","setValue","timing","toValue","duration","useNativeDriver","start","setCurrentPage","index","AccessibilityInfo","announceForAccessibility","nextPage","previousPage","scrollTo","pauseAutoPlay","resumeAutoPlay","timer","setTimeout","clearTimeout","contextValue","createElement","Provider"],"sourceRoot":"../../../src","sources":["context/OnboardingContext.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
10
10
  const useOnboarding = () => {
11
11
  const context = _react.default.useContext(_OnboardingContext.OnboardingContext);
12
12
  if (!context) {
13
- throw new Error('useOnboardingContext must be used within an OnboardingProvider');
13
+ throw new Error('useOnboarding must be used within an OnboardingProvider');
14
14
  }
15
15
  return context;
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_OnboardingContext","e","__esModule","default","useOnboarding","context","React","useContext","OnboardingContext","Error","exports"],"sourceRoot":"../../../src","sources":["hooks/useOnboarding.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAiE,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1D,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAMC,OAAO,GAAGC,cAAK,CAACC,UAAU,CAACC,oCAAiB,CAAC;EACnD,IAAI,CAACH,OAAO,EAAE;IACZ,MAAM,IAAII,KAAK,CACb,gEACF,CAAC;EACH;EACA,OAAOJ,OAAO;AAChB,CAAC;AAACK,OAAA,CAAAN,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_OnboardingContext","e","__esModule","default","useOnboarding","context","React","useContext","OnboardingContext","Error","exports"],"sourceRoot":"../../../src","sources":["hooks/useOnboarding.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAiE,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1D,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAMC,OAAO,GAAGC,cAAK,CAACC,UAAU,CAACC,oCAAiB,CAAC;EACnD,IAAI,CAACH,OAAO,EAAE;IACZ,MAAM,IAAII,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAOJ,OAAO;AAChB,CAAC;AAACK,OAAA,CAAAN,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -4,6 +4,30 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Onboarding = Onboarding;
7
+ Object.defineProperty(exports, "createOnboardingStorage", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _persistence.createOnboardingStorage;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "hasCompletedOnboarding", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _persistence.hasCompletedOnboarding;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "markOnboardingComplete", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _persistence.markOnboardingComplete;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "resetOnboarding", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _persistence.resetOnboarding;
29
+ }
30
+ });
7
31
  Object.defineProperty(exports, "useOnboarding", {
8
32
  enumerable: true,
9
33
  get: function () {
@@ -11,16 +35,23 @@ Object.defineProperty(exports, "useOnboarding", {
11
35
  }
12
36
  });
13
37
  var _react = _interopRequireDefault(require("react"));
14
- var _Swiper = require("./components/Swiper");
38
+ var _components = require("./components");
15
39
  var _OnboardingContext = require("./context/OnboardingContext");
16
40
  var _useOnboarding = require("./hooks/useOnboarding");
41
+ var _persistence = require("./utils/persistence");
17
42
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
43
  function Onboarding(props) {
19
44
  var _props$pages;
20
45
  const numberOfScreens = _react.default.Children.count(props.children);
21
46
  return /*#__PURE__*/_react.default.createElement(_OnboardingContext.OnboardingProvider, {
47
+ width: props.width,
22
48
  scrollEnabled: props.scrollEnabled,
49
+ onPageChange: props.onPageChange,
50
+ scrollAnimationDuration: props.scrollAnimationDuration,
51
+ autoPlay: props.autoPlay,
52
+ autoPlayInterval: props.autoPlayInterval,
53
+ loop: props.loop,
23
54
  numberOfScreens: numberOfScreens || ((_props$pages = props.pages) === null || _props$pages === void 0 ? void 0 : _props$pages.length) || 0
24
- }, /*#__PURE__*/_react.default.createElement(_Swiper.Swiper, props, props.children));
55
+ }, /*#__PURE__*/_react.default.createElement(_components.Swiper, props, props.children));
25
56
  }
26
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_Swiper","_OnboardingContext","_useOnboarding","e","__esModule","default","Onboarding","props","_props$pages","numberOfScreens","React","Children","count","children","createElement","OnboardingProvider","scrollEnabled","pages","length","Swiper"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAGA,IAAAG,cAAA,GAAAH,OAAA;AAAsD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/C,SAASG,UAAUA,CAACC,KAAsB,EAAE;EAAA,IAAAC,YAAA;EACjD,MAAMC,eAAe,GAAGC,cAAK,CAACC,QAAQ,CAACC,KAAK,CAACL,KAAK,CAACM,QAAQ,CAAC;EAC5D,oBACEhB,MAAA,CAAAQ,OAAA,CAAAS,aAAA,CAACb,kBAAA,CAAAc,kBAAkB;IACjBC,aAAa,EAAET,KAAK,CAACS,aAAc;IACnCP,eAAe,EAAEA,eAAe,MAAAD,YAAA,GAAID,KAAK,CAACU,KAAK,cAAAT,YAAA,uBAAXA,YAAA,CAAaU,MAAM,KAAI;EAAE,gBAE7DrB,MAAA,CAAAQ,OAAA,CAAAS,aAAA,CAACd,OAAA,CAAAmB,MAAM,EAAKZ,KAAK,EAAGA,KAAK,CAACM,QAAiB,CACzB,CAAC;AAEzB","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_components","_OnboardingContext","_useOnboarding","_persistence","e","__esModule","default","Onboarding","props","_props$pages","numberOfScreens","React","Children","count","children","createElement","OnboardingProvider","width","scrollEnabled","onPageChange","scrollAnimationDuration","autoPlay","autoPlayInterval","loop","pages","length","Swiper"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAGA,IAAAG,cAAA,GAAAH,OAAA;AAGA,IAAAI,YAAA,GAAAJ,OAAA;AAK6B,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGtB,SAASG,UAAUA,CAACC,KAAsB,EAAE;EAAA,IAAAC,YAAA;EACjD,MAAMC,eAAe,GAAGC,cAAK,CAACC,QAAQ,CAACC,KAAK,CAACL,KAAK,CAACM,QAAQ,CAAC;EAC5D,oBACEjB,MAAA,CAAAS,OAAA,CAAAS,aAAA,CAACd,kBAAA,CAAAe,kBAAkB;IACjBC,KAAK,EAAET,KAAK,CAACS,KAAM;IACnBC,aAAa,EAAEV,KAAK,CAACU,aAAc;IACnCC,YAAY,EAAEX,KAAK,CAACW,YAAa;IACjCC,uBAAuB,EAAEZ,KAAK,CAACY,uBAAwB;IACvDC,QAAQ,EAAEb,KAAK,CAACa,QAAS;IACzBC,gBAAgB,EAAEd,KAAK,CAACc,gBAAiB;IACzCC,IAAI,EAAEf,KAAK,CAACe,IAAK;IACjBb,eAAe,EAAEA,eAAe,MAAAD,YAAA,GAAID,KAAK,CAACgB,KAAK,cAAAf,YAAA,uBAAXA,YAAA,CAAagB,MAAM,KAAI;EAAE,gBAE7D5B,MAAA,CAAAS,OAAA,CAAAS,aAAA,CAACf,WAAA,CAAA0B,MAAM,EAAKlB,KAAK,EAAGA,KAAK,CAACM,QAAiB,CACzB,CAAC;AAEzB","ignoreList":[]}
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.darken = darken;
7
+ exports.getBrightness = getBrightness;
8
+ exports.lighten = lighten;
9
+ exports.setAlpha = setAlpha;
10
+ /**
11
+ * Minimal color helpers — a tiny, dependency-free replacement for the subset of
12
+ * tinycolor2 this library used: perceived brightness, HSL-based lighten/darken,
13
+ * and producing an `rgba()` string with a custom alpha.
14
+ *
15
+ * Accepts hex (`#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`), `rgb()`/`rgba()`, and
16
+ * CSS named colors. Invalid input resolves to black, matching tinycolor's
17
+ * behavior of treating unparseable colors as having zero brightness.
18
+ */
19
+
20
+ // CSS extended color keywords (same set tinycolor recognizes).
21
+ const NAMED_COLORS = {
22
+ aliceblue: '#f0f8ff',
23
+ antiquewhite: '#faebd7',
24
+ aqua: '#00ffff',
25
+ aquamarine: '#7fffd4',
26
+ azure: '#f0ffff',
27
+ beige: '#f5f5dc',
28
+ bisque: '#ffe4c4',
29
+ black: '#000000',
30
+ blanchedalmond: '#ffebcd',
31
+ blue: '#0000ff',
32
+ blueviolet: '#8a2be2',
33
+ brown: '#a52a2a',
34
+ burlywood: '#deb887',
35
+ cadetblue: '#5f9ea0',
36
+ chartreuse: '#7fff00',
37
+ chocolate: '#d2691e',
38
+ coral: '#ff7f50',
39
+ cornflowerblue: '#6495ed',
40
+ cornsilk: '#fff8dc',
41
+ crimson: '#dc143c',
42
+ cyan: '#00ffff',
43
+ darkblue: '#00008b',
44
+ darkcyan: '#008b8b',
45
+ darkgoldenrod: '#b8860b',
46
+ darkgray: '#a9a9a9',
47
+ darkgreen: '#006400',
48
+ darkgrey: '#a9a9a9',
49
+ darkkhaki: '#bdb76b',
50
+ darkmagenta: '#8b008b',
51
+ darkolivegreen: '#556b2f',
52
+ darkorange: '#ff8c00',
53
+ darkorchid: '#9932cc',
54
+ darkred: '#8b0000',
55
+ darksalmon: '#e9967a',
56
+ darkseagreen: '#8fbc8f',
57
+ darkslateblue: '#483d8b',
58
+ darkslategray: '#2f4f4f',
59
+ darkslategrey: '#2f4f4f',
60
+ darkturquoise: '#00ced1',
61
+ darkviolet: '#9400d3',
62
+ deeppink: '#ff1493',
63
+ deepskyblue: '#00bfff',
64
+ dimgray: '#696969',
65
+ dimgrey: '#696969',
66
+ dodgerblue: '#1e90ff',
67
+ firebrick: '#b22222',
68
+ floralwhite: '#fffaf0',
69
+ forestgreen: '#228b22',
70
+ fuchsia: '#ff00ff',
71
+ gainsboro: '#dcdcdc',
72
+ ghostwhite: '#f8f8ff',
73
+ gold: '#ffd700',
74
+ goldenrod: '#daa520',
75
+ gray: '#808080',
76
+ green: '#008000',
77
+ greenyellow: '#adff2f',
78
+ grey: '#808080',
79
+ honeydew: '#f0fff0',
80
+ hotpink: '#ff69b4',
81
+ indianred: '#cd5c5c',
82
+ indigo: '#4b0082',
83
+ ivory: '#fffff0',
84
+ khaki: '#f0e68c',
85
+ lavender: '#e6e6fa',
86
+ lavenderblush: '#fff0f5',
87
+ lawngreen: '#7cfc00',
88
+ lemonchiffon: '#fffacd',
89
+ lightblue: '#add8e6',
90
+ lightcoral: '#f08080',
91
+ lightcyan: '#e0ffff',
92
+ lightgoldenrodyellow: '#fafad2',
93
+ lightgray: '#d3d3d3',
94
+ lightgreen: '#90ee90',
95
+ lightgrey: '#d3d3d3',
96
+ lightpink: '#ffb6c1',
97
+ lightsalmon: '#ffa07a',
98
+ lightseagreen: '#20b2aa',
99
+ lightskyblue: '#87cefa',
100
+ lightslategray: '#778899',
101
+ lightslategrey: '#778899',
102
+ lightsteelblue: '#b0c4de',
103
+ lightyellow: '#ffffe0',
104
+ lime: '#00ff00',
105
+ limegreen: '#32cd32',
106
+ linen: '#faf0e6',
107
+ magenta: '#ff00ff',
108
+ maroon: '#800000',
109
+ mediumaquamarine: '#66cdaa',
110
+ mediumblue: '#0000cd',
111
+ mediumorchid: '#ba55d3',
112
+ mediumpurple: '#9370db',
113
+ mediumseagreen: '#3cb371',
114
+ mediumslateblue: '#7b68ee',
115
+ mediumspringgreen: '#00fa9a',
116
+ mediumturquoise: '#48d1cc',
117
+ mediumvioletred: '#c71585',
118
+ midnightblue: '#191970',
119
+ mintcream: '#f5fffa',
120
+ mistyrose: '#ffe4e1',
121
+ moccasin: '#ffe4b5',
122
+ navajowhite: '#ffdead',
123
+ navy: '#000080',
124
+ oldlace: '#fdf5e6',
125
+ olive: '#808000',
126
+ olivedrab: '#6b8e23',
127
+ orange: '#ffa500',
128
+ orangered: '#ff4500',
129
+ orchid: '#da70d6',
130
+ palegoldenrod: '#eee8aa',
131
+ palegreen: '#98fb98',
132
+ paleturquoise: '#afeeee',
133
+ palevioletred: '#db7093',
134
+ papayawhip: '#ffefd5',
135
+ peachpuff: '#ffdab9',
136
+ peru: '#cd853f',
137
+ pink: '#ffc0cb',
138
+ plum: '#dda0dd',
139
+ powderblue: '#b0e0e6',
140
+ purple: '#800080',
141
+ rebeccapurple: '#663399',
142
+ red: '#ff0000',
143
+ rosybrown: '#bc8f8f',
144
+ royalblue: '#4169e1',
145
+ saddlebrown: '#8b4513',
146
+ salmon: '#fa8072',
147
+ sandybrown: '#f4a460',
148
+ seagreen: '#2e8b57',
149
+ seashell: '#fff5ee',
150
+ sienna: '#a0522d',
151
+ silver: '#c0c0c0',
152
+ skyblue: '#87ceeb',
153
+ slateblue: '#6a5acd',
154
+ slategray: '#708090',
155
+ slategrey: '#708090',
156
+ snow: '#fffafa',
157
+ springgreen: '#00ff7f',
158
+ steelblue: '#4682b4',
159
+ tan: '#d2b48c',
160
+ teal: '#008080',
161
+ thistle: '#d8bfd8',
162
+ tomato: '#ff6347',
163
+ turquoise: '#40e0d0',
164
+ violet: '#ee82ee',
165
+ wheat: '#f5deb3',
166
+ white: '#ffffff',
167
+ whitesmoke: '#f5f5f5',
168
+ yellow: '#ffff00',
169
+ yellowgreen: '#9acd32'
170
+ };
171
+ const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
172
+ function parse(input) {
173
+ let color = (input || '').trim().toLowerCase();
174
+ const named = NAMED_COLORS[color];
175
+ if (named) color = named;
176
+ if (color[0] === '#') {
177
+ let hex = color.slice(1);
178
+ if (hex.length === 3 || hex.length === 4) {
179
+ hex = hex.split('').map(c => c + c).join('');
180
+ }
181
+ const r = parseInt(hex.slice(0, 2), 16);
182
+ const g = parseInt(hex.slice(2, 4), 16);
183
+ const b = parseInt(hex.slice(4, 6), 16);
184
+ const a = hex.length === 8 ? parseInt(hex.slice(6, 8), 16) / 255 : 1;
185
+ if (![r, g, b].some(Number.isNaN)) return {
186
+ r,
187
+ g,
188
+ b,
189
+ a
190
+ };
191
+ }
192
+ const rgb = color.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+)\s*)?\)$/);
193
+ if (rgb) {
194
+ return {
195
+ r: Number(rgb[1]),
196
+ g: Number(rgb[2]),
197
+ b: Number(rgb[3]),
198
+ a: rgb[4] !== undefined ? Number(rgb[4]) : 1
199
+ };
200
+ }
201
+ return {
202
+ r: 0,
203
+ g: 0,
204
+ b: 0,
205
+ a: 1
206
+ };
207
+ }
208
+ function rgbToHsl({
209
+ r,
210
+ g,
211
+ b
212
+ }) {
213
+ const rn = r / 255;
214
+ const gn = g / 255;
215
+ const bn = b / 255;
216
+ const max = Math.max(rn, gn, bn);
217
+ const min = Math.min(rn, gn, bn);
218
+ const l = (max + min) / 2;
219
+ let h = 0;
220
+ let s = 0;
221
+ if (max !== min) {
222
+ const d = max - min;
223
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
224
+ switch (max) {
225
+ case rn:
226
+ h = (gn - bn) / d + (gn < bn ? 6 : 0);
227
+ break;
228
+ case gn:
229
+ h = (bn - rn) / d + 2;
230
+ break;
231
+ default:
232
+ h = (rn - gn) / d + 4;
233
+ }
234
+ h /= 6;
235
+ }
236
+ return {
237
+ h,
238
+ s,
239
+ l
240
+ };
241
+ }
242
+ function hslToRgb(h, s, l) {
243
+ if (s === 0) {
244
+ const v = l * 255;
245
+ return {
246
+ r: v,
247
+ g: v,
248
+ b: v
249
+ };
250
+ }
251
+ const hue2rgb = (p, q, t) => {
252
+ let tt = t;
253
+ if (tt < 0) tt += 1;
254
+ if (tt > 1) tt -= 1;
255
+ if (tt < 1 / 6) return p + (q - p) * 6 * tt;
256
+ if (tt < 1 / 2) return q;
257
+ if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;
258
+ return p;
259
+ };
260
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
261
+ const p = 2 * l - q;
262
+ return {
263
+ r: hue2rgb(p, q, h + 1 / 3) * 255,
264
+ g: hue2rgb(p, q, h) * 255,
265
+ b: hue2rgb(p, q, h - 1 / 3) * 255
266
+ };
267
+ }
268
+ const toHex = n => Math.round(clamp(n, 0, 255)).toString(16).padStart(2, '0');
269
+
270
+ /** Perceived brightness on a 0–255 scale (W3C formula, as tinycolor uses). */
271
+ function getBrightness(input) {
272
+ const {
273
+ r,
274
+ g,
275
+ b
276
+ } = parse(input);
277
+ return (r * 299 + g * 587 + b * 114) / 1000;
278
+ }
279
+ function adjustLightness(input, delta) {
280
+ const hsl = rgbToHsl(parse(input));
281
+ const {
282
+ r,
283
+ g,
284
+ b
285
+ } = hslToRgb(hsl.h, hsl.s, clamp(hsl.l + delta, 0, 1));
286
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
287
+ }
288
+
289
+ /** Lighten by `amount` percent (HSL lightness), returning a hex string. */
290
+ function lighten(input, amount = 10) {
291
+ return adjustLightness(input, amount / 100);
292
+ }
293
+
294
+ /** Darken by `amount` percent (HSL lightness), returning a hex string. */
295
+ function darken(input, amount = 10) {
296
+ return adjustLightness(input, -amount / 100);
297
+ }
298
+
299
+ /** Return an `rgba()` string for `input` with the given alpha. */
300
+ function setAlpha(input, alpha) {
301
+ const {
302
+ r,
303
+ g,
304
+ b
305
+ } = parse(input);
306
+ return `rgba(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}, ${alpha})`;
307
+ }
308
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NAMED_COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","clamp","value","min","max","Math","parse","input","color","trim","toLowerCase","named","hex","slice","length","split","map","c","join","r","parseInt","g","b","a","some","Number","isNaN","rgb","match","undefined","rgbToHsl","rn","gn","bn","l","h","s","d","hslToRgb","v","hue2rgb","p","q","t","tt","toHex","n","round","toString","padStart","getBrightness","adjustLightness","delta","hsl","lighten","amount","darken","setAlpha","alpha"],"sourceRoot":"../../../src","sources":["utils/color.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createOnboardingStorage = createOnboardingStorage;
7
+ exports.hasCompletedOnboarding = hasCompletedOnboarding;
8
+ exports.markOnboardingComplete = markOnboardingComplete;
9
+ exports.resetOnboarding = resetOnboarding;
10
+ /**
11
+ * Minimal AsyncStorage-compatible interface. Any storage that implements these
12
+ * three methods works (e.g. @react-native-async-storage/async-storage,
13
+ * expo-secure-store wrappers, or an in-memory mock in tests). Keeping the
14
+ * dependency injected means this library does not have to ship a storage peer
15
+ * dependency of its own.
16
+ */
17
+
18
+ const DEFAULT_KEY = '@react-native-app-onboard/completed';
19
+ const COMPLETED_VALUE = 'true';
20
+
21
+ /**
22
+ * Returns whether the user has previously completed onboarding stored under
23
+ * `key`. Defaults to a namespaced key so callers usually only pass the storage.
24
+ */
25
+ async function hasCompletedOnboarding(storage, key = DEFAULT_KEY) {
26
+ const value = await storage.getItem(key);
27
+ return value === COMPLETED_VALUE;
28
+ }
29
+
30
+ /** Marks onboarding as completed so it can be skipped on subsequent launches. */
31
+ async function markOnboardingComplete(storage, key = DEFAULT_KEY) {
32
+ await storage.setItem(key, COMPLETED_VALUE);
33
+ }
34
+
35
+ /** Clears the stored completion flag (useful for "replay onboarding" actions). */
36
+ async function resetOnboarding(storage, key = DEFAULT_KEY) {
37
+ await storage.removeItem(key);
38
+ }
39
+
40
+ /**
41
+ * Convenience factory that binds a storage adapter (and optional key) once and
42
+ * returns ready-to-call helpers, so app code doesn't repeat the storage arg.
43
+ */
44
+ function createOnboardingStorage(storage, key = DEFAULT_KEY) {
45
+ return {
46
+ hasCompleted: () => hasCompletedOnboarding(storage, key),
47
+ markComplete: () => markOnboardingComplete(storage, key),
48
+ reset: () => resetOnboarding(storage, key)
49
+ };
50
+ }
51
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_KEY","COMPLETED_VALUE","hasCompletedOnboarding","storage","key","value","getItem","markOnboardingComplete","setItem","resetOnboarding","removeItem","createOnboardingStorage","hasCompleted","markComplete","reset"],"sourceRoot":"../../../src","sources":["utils/persistence.ts"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,MAAMA,WAAW,GAAG,qCAAqC;AACzD,MAAMC,eAAe,GAAG,MAAM;;AAE9B;AACA;AACA;AACA;AACO,eAAeC,sBAAsBA,CAC1CC,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACP;EAClB,MAAMK,KAAK,GAAG,MAAMF,OAAO,CAACG,OAAO,CAACF,GAAG,CAAC;EACxC,OAAOC,KAAK,KAAKJ,eAAe;AAClC;;AAEA;AACO,eAAeM,sBAAsBA,CAC1CJ,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACV;EACf,MAAMG,OAAO,CAACK,OAAO,CAACJ,GAAG,EAAEH,eAAe,CAAC;AAC7C;;AAEA;AACO,eAAeQ,eAAeA,CACnCN,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACV;EACf,MAAMG,OAAO,CAACO,UAAU,CAACN,GAAG,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACO,SAASO,uBAAuBA,CACrCR,OAAiC,EACjCC,GAAW,GAAGJ,WAAW,EACzB;EACA,OAAO;IACLY,YAAY,EAAEA,CAAA,KAAMV,sBAAsB,CAACC,OAAO,EAAEC,GAAG,CAAC;IACxDS,YAAY,EAAEA,CAAA,KAAMN,sBAAsB,CAACJ,OAAO,EAAEC,GAAG,CAAC;IACxDU,KAAK,EAAEA,CAAA,KAAML,eAAe,CAACN,OAAO,EAAEC,GAAG;EAC3C,CAAC;AACH","ignoreList":[]}