react-native-timer-picker 1.2.11 → 1.4.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 (54) hide show
  1. package/README.md +22 -2
  2. package/dist/commonjs/components/Modal/index.js +13 -14
  3. package/dist/commonjs/components/Modal/index.js.map +1 -1
  4. package/dist/commonjs/components/TimerPicker/DurationScroll.js +72 -34
  5. package/dist/commonjs/components/TimerPicker/DurationScroll.js.map +1 -1
  6. package/dist/commonjs/components/TimerPicker/TimerPicker.styles.js +23 -3
  7. package/dist/commonjs/components/TimerPicker/TimerPicker.styles.js.map +1 -1
  8. package/dist/commonjs/components/TimerPicker/index.js +64 -47
  9. package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
  10. package/dist/commonjs/components/index.js +90 -69
  11. package/dist/commonjs/components/index.js.map +1 -1
  12. package/dist/commonjs/tests/Modal.test.js +3 -1
  13. package/dist/commonjs/tests/Modal.test.js.map +1 -1
  14. package/dist/commonjs/utils/generateNumbers.js +33 -10
  15. package/dist/commonjs/utils/generateNumbers.js.map +1 -1
  16. package/dist/commonjs/utils/padNumber.js +15 -0
  17. package/dist/commonjs/utils/padNumber.js.map +1 -0
  18. package/dist/module/components/Modal/index.js +13 -14
  19. package/dist/module/components/Modal/index.js.map +1 -1
  20. package/dist/module/components/TimerPicker/DurationScroll.js +73 -35
  21. package/dist/module/components/TimerPicker/DurationScroll.js.map +1 -1
  22. package/dist/module/components/TimerPicker/TimerPicker.styles.js +23 -3
  23. package/dist/module/components/TimerPicker/TimerPicker.styles.js.map +1 -1
  24. package/dist/module/components/TimerPicker/index.js +64 -47
  25. package/dist/module/components/TimerPicker/index.js.map +1 -1
  26. package/dist/module/components/index.js +90 -69
  27. package/dist/module/components/index.js.map +1 -1
  28. package/dist/module/tests/Modal.test.js +3 -1
  29. package/dist/module/tests/Modal.test.js.map +1 -1
  30. package/dist/module/utils/generateNumbers.js +31 -9
  31. package/dist/module/utils/generateNumbers.js.map +1 -1
  32. package/dist/module/utils/padNumber.js +8 -0
  33. package/dist/module/utils/padNumber.js.map +1 -0
  34. package/dist/typescript/components/TimerPicker/DurationScroll.d.ts +6 -1
  35. package/dist/typescript/components/TimerPicker/TimerPicker.styles.d.ts +4 -0
  36. package/dist/typescript/components/TimerPicker/index.d.ts +10 -1
  37. package/dist/typescript/components/index.d.ts +6 -1
  38. package/dist/typescript/utils/generateNumbers.d.ts +7 -2
  39. package/dist/typescript/utils/padNumber.d.ts +3 -0
  40. package/package.json +2 -2
  41. package/src/components/Modal/index.tsx +2 -2
  42. package/src/components/TimerPicker/DurationScroll.tsx +95 -12
  43. package/src/components/TimerPicker/TimerPicker.styles.ts +32 -1
  44. package/src/components/TimerPicker/index.tsx +39 -6
  45. package/src/components/index.tsx +45 -15
  46. package/src/tests/Modal.test.tsx +1 -1
  47. package/src/utils/generateNumbers.ts +40 -10
  48. package/src/utils/padNumber.ts +10 -0
  49. package/dist/commonjs/utils/padWithZero.js +0 -15
  50. package/dist/commonjs/utils/padWithZero.js.map +0 -1
  51. package/dist/module/utils/padWithZero.js +0 -8
  52. package/dist/module/utils/padWithZero.js.map +0 -1
  53. package/dist/typescript/utils/padWithZero.d.ts +0 -1
  54. package/src/utils/padWithZero.ts +0 -7
@@ -3,21 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.generateNumbers = void 0;
7
- var _padWithZero = require("./padWithZero");
6
+ exports.generateNumbers = exports.generate12HourNumbers = void 0;
7
+ var _padNumber = require("./padNumber");
8
8
  const generateNumbers = (numberOfItems, options) => {
9
9
  if (numberOfItems <= 0) {
10
10
  return [];
11
11
  }
12
12
  let numbers = [];
13
- if (options.padWithZero) {
14
- for (let i = 0; i <= numberOfItems; i++) {
15
- numbers.push((0, _padWithZero.padWithZero)(i));
16
- }
17
- } else {
18
- for (let i = 0; i <= numberOfItems; i++) {
19
- numbers.push(String(i));
20
- }
13
+ for (let i = 0; i <= numberOfItems; i++) {
14
+ numbers.push((0, _padNumber.padNumber)(i, {
15
+ padWithZero: options.padNumbersWithZero
16
+ }));
21
17
  }
22
18
  if ((options.repeatNTimes ?? 1) > 1) {
23
19
  numbers = Array(options.repeatNTimes).fill(numbers).flat();
@@ -29,4 +25,31 @@ const generateNumbers = (numberOfItems, options) => {
29
25
  return numbers;
30
26
  };
31
27
  exports.generateNumbers = generateNumbers;
28
+ const generate12HourNumbers = options => {
29
+ let numbers = [];
30
+
31
+ // Generate numbers from 0 to 11 for AM
32
+ for (let i = 0; i <= 11; i++) {
33
+ numbers.push(`${(0, _padNumber.padNumber)(i, {
34
+ padWithZero: options.padNumbersWithZero
35
+ })} AM`);
36
+ }
37
+
38
+ // Generate numbers from 12 to 11 for PM
39
+ for (let i = 12; i <= 23; i++) {
40
+ const hour = i > 12 ? i - 12 : i;
41
+ numbers.push(`${(0, _padNumber.padNumber)(hour, {
42
+ padWithZero: options.padNumbersWithZero
43
+ })} PM`);
44
+ }
45
+ if ((options.repeatNTimes ?? 1) > 1) {
46
+ numbers = Array(options.repeatNTimes).fill(numbers).flat();
47
+ }
48
+ if (options.disableInfiniteScroll) {
49
+ numbers.push(...Array(options.padWithNItems).fill(""));
50
+ numbers.unshift(...Array(options.padWithNItems).fill(""));
51
+ }
52
+ return numbers;
53
+ };
54
+ exports.generate12HourNumbers = generate12HourNumbers;
32
55
  //# sourceMappingURL=generateNumbers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_padWithZero","require","generateNumbers","numberOfItems","options","numbers","padWithZero","i","push","String","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","exports"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padWithZero } from \"./padWithZero\";\n\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n repeatNTimes?: number;\n padWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n padWithNItems: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n if (options.padWithZero) {\n for (let i = 0; i <= numberOfItems; i++) {\n numbers.push(padWithZero(i));\n }\n } else {\n for (let i = 0; i <= numberOfItems; i++) {\n numbers.push(String(i));\n }\n }\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAGA,CAC3BC,aAAqB,EACrBC,OAKC,KACA;EACD,IAAID,aAAa,IAAI,CAAC,EAAE;IACpB,OAAO,EAAE;EACb;EAEA,IAAIE,OAAiB,GAAG,EAAE;EAC1B,IAAID,OAAO,CAACE,WAAW,EAAE;IACrB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIJ,aAAa,EAAEI,CAAC,EAAE,EAAE;MACrCF,OAAO,CAACG,IAAI,CAAC,IAAAF,wBAAW,EAACC,CAAC,CAAC,CAAC;IAChC;EACJ,CAAC,MAAM;IACH,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIJ,aAAa,EAAEI,CAAC,EAAE,EAAE;MACrCF,OAAO,CAACG,IAAI,CAACC,MAAM,CAACF,CAAC,CAAC,CAAC;IAC3B;EACJ;EACA,IAAI,CAACH,OAAO,CAACM,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCL,OAAO,GAAGM,KAAK,CAACP,OAAO,CAACM,YAAY,CAAC,CAACE,IAAI,CAACP,OAAO,CAAC,CAACQ,IAAI,CAAC,CAAC;EAC9D;EACA,IAAIT,OAAO,CAACU,qBAAqB,EAAE;IAC/BT,OAAO,CAACG,IAAI,CAAC,GAAGG,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDP,OAAO,CAACW,OAAO,CAAC,GAAGL,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EACA,OAAOP,OAAO;AAClB,CAAC;AAACY,OAAA,CAAAf,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_padNumber","require","generateNumbers","numberOfItems","options","numbers","i","push","padNumber","padWithZero","padNumbersWithZero","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","exports","generate12HourNumbers","hour"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padNumber } from \"./padNumber\";\n\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n repeatNTimes?: number;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n padWithNItems: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n for (let i = 0; i <= numberOfItems; i++) {\n numbers.push(padNumber(i, { padWithZero: options.padNumbersWithZero }));\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n\nexport const generate12HourNumbers = (options: {\n repeatNTimes?: number;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n padWithNItems: number;\n}) => {\n let numbers: string[] = [];\n\n // Generate numbers from 0 to 11 for AM\n for (let i = 0; i <= 11; i++) {\n numbers.push(\n `${padNumber(i, { padWithZero: options.padNumbersWithZero })} AM`\n );\n }\n\n // Generate numbers from 12 to 11 for PM\n for (let i = 12; i <= 23; i++) {\n const hour = i > 12 ? i - 12 : i;\n numbers.push(\n `${padNumber(hour, { padWithZero: options.padNumbersWithZero })} PM`\n );\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n\n return numbers;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAGA,CAC3BC,aAAqB,EACrBC,OAKC,KACA;EACD,IAAID,aAAa,IAAI,CAAC,EAAE;IACpB,OAAO,EAAE;EACb;EAEA,IAAIE,OAAiB,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,aAAa,EAAEG,CAAC,EAAE,EAAE;IACrCD,OAAO,CAACE,IAAI,CAAC,IAAAC,oBAAS,EAACF,CAAC,EAAE;MAAEG,WAAW,EAAEL,OAAO,CAACM;IAAmB,CAAC,CAAC,CAAC;EAC3E;EAEA,IAAI,CAACN,OAAO,CAACO,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCN,OAAO,GAAGO,KAAK,CAACR,OAAO,CAACO,YAAY,CAAC,CAACE,IAAI,CAACR,OAAO,CAAC,CAACS,IAAI,CAAC,CAAC;EAC9D;EACA,IAAIV,OAAO,CAACW,qBAAqB,EAAE;IAC/BV,OAAO,CAACE,IAAI,CAAC,GAAGK,KAAK,CAACR,OAAO,CAACY,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDR,OAAO,CAACY,OAAO,CAAC,GAAGL,KAAK,CAACR,OAAO,CAACY,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EACA,OAAOR,OAAO;AAClB,CAAC;AAACa,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAEK,MAAMiB,qBAAqB,GAAIf,OAKrC,IAAK;EACF,IAAIC,OAAiB,GAAG,EAAE;;EAE1B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC1BD,OAAO,CAACE,IAAI,CACP,GAAE,IAAAC,oBAAS,EAACF,CAAC,EAAE;MAAEG,WAAW,EAAEL,OAAO,CAACM;IAAmB,CAAC,CAAE,KACjE,CAAC;EACL;;EAEA;EACA,KAAK,IAAIJ,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,MAAMc,IAAI,GAAGd,CAAC,GAAG,EAAE,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC;IAChCD,OAAO,CAACE,IAAI,CACP,GAAE,IAAAC,oBAAS,EAACY,IAAI,EAAE;MAAEX,WAAW,EAAEL,OAAO,CAACM;IAAmB,CAAC,CAAE,KACpE,CAAC;EACL;EAEA,IAAI,CAACN,OAAO,CAACO,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCN,OAAO,GAAGO,KAAK,CAACR,OAAO,CAACO,YAAY,CAAC,CAACE,IAAI,CAACR,OAAO,CAAC,CAACS,IAAI,CAAC,CAAC;EAC9D;EAEA,IAAIV,OAAO,CAACW,qBAAqB,EAAE;IAC/BV,OAAO,CAACE,IAAI,CAAC,GAAGK,KAAK,CAACR,OAAO,CAACY,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDR,OAAO,CAACY,OAAO,CAAC,GAAGL,KAAK,CAACR,OAAO,CAACY,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EAEA,OAAOR,OAAO;AAClB,CAAC;AAACa,OAAA,CAAAC,qBAAA,GAAAA,qBAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.padNumber = void 0;
7
+ const padNumber = (value, options) => {
8
+ if (value < 10) {
9
+ return (options !== null && options !== void 0 && options.padWithZero ? "0" : " ") + value;
10
+ } else {
11
+ return String(value);
12
+ }
13
+ };
14
+ exports.padNumber = padNumber;
15
+ //# sourceMappingURL=padNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["padNumber","value","options","padWithZero","String","exports"],"sources":["padNumber.ts"],"sourcesContent":["export const padNumber = (\n value: number,\n options?: { padWithZero?: boolean }\n): string => {\n if (value < 10) {\n return (options?.padWithZero ? \"0\" : \" \") + value;\n } else {\n return String(value);\n }\n};\n"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAGA,CACrBC,KAAa,EACbC,OAAmC,KAC1B;EACT,IAAID,KAAK,GAAG,EAAE,EAAE;IACZ,OAAO,CAACC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,WAAW,GAAG,GAAG,GAAG,GAAG,IAAIF,KAAK;EACrD,CAAC,MAAM;IACH,OAAOG,MAAM,CAACH,KAAK,CAAC;EACxB;AACJ,CAAC;AAACI,OAAA,CAAAL,SAAA,GAAAA,SAAA"}
@@ -3,19 +3,18 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
3
3
  import React, { useCallback, useEffect, useRef } from "react";
4
4
  import { Animated, Easing, Modal as ReactNativeModal, TouchableWithoutFeedback, useWindowDimensions } from "react-native";
5
5
  import { styles } from "./Modal.styles";
6
- export const Modal = _ref => {
7
- let {
8
- children,
9
- onOverlayPress,
10
- onHide,
11
- isVisible = false,
12
- animationDuration = 300,
13
- overlayOpacity = 0.4,
14
- modalProps,
15
- contentStyle,
16
- overlayStyle,
17
- testID
18
- } = _ref;
6
+ export const Modal = ({
7
+ children,
8
+ onOverlayPress,
9
+ onHide,
10
+ isVisible = false,
11
+ animationDuration = 300,
12
+ overlayOpacity = 0.4,
13
+ modalProps,
14
+ contentStyle,
15
+ overlayStyle,
16
+ testID = "modal"
17
+ }) => {
19
18
  const {
20
19
  width: screenWidth,
21
20
  height: screenHeight
@@ -82,7 +81,7 @@ export const Modal = _ref => {
82
81
  animationType: "fade",
83
82
  visible: isVisible
84
83
  }, modalProps, {
85
- testID: testID ?? "modal"
84
+ testID: testID
86
85
  }), /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
87
86
  onPress: onOverlayPress,
88
87
  testID: "modal-backdrop"
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useRef","Animated","Easing","Modal","ReactNativeModal","TouchableWithoutFeedback","useWindowDimensions","styles","_ref","children","onOverlayPress","onHide","isVisible","animationDuration","overlayOpacity","modalProps","contentStyle","overlayStyle","testID","width","screenWidth","height","screenHeight","isMounted","animatedOpacity","Value","current","show","backdropAnimatedStyle","opacity","interpolate","inputRange","outputRange","contentAnimatedStyle","transform","translateY","extrapolate","timing","easing","inOut","quad","useNativeDriver","duration","toValue","start","hide","createElement","_extends","transparent","animationType","visible","onPress","View","style","backdrop","content","pointerEvents","memo"],"sources":["index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useRef } from \"react\";\nimport {\n Animated,\n Easing,\n Modal as ReactNativeModal,\n TouchableWithoutFeedback,\n useWindowDimensions,\n} from \"react-native\";\n\nimport { styles } from \"./Modal.styles\";\n\ninterface ModalProps {\n children?: React.ReactElement;\n onOverlayPress?: () => void;\n onHide?: () => void;\n isVisible?: boolean;\n animationDuration?: number;\n overlayOpacity?: number;\n modalProps?: any;\n contentStyle?: any;\n overlayStyle?: any;\n testID?: string;\n}\n\nexport const Modal = ({\n children,\n onOverlayPress,\n onHide,\n isVisible = false,\n animationDuration = 300,\n overlayOpacity = 0.4,\n modalProps,\n contentStyle,\n overlayStyle,\n testID,\n}: ModalProps): React.ReactElement => {\n const { width: screenWidth, height: screenHeight } = useWindowDimensions();\n\n const isMounted = useRef(false);\n const animatedOpacity = useRef(new Animated.Value(0));\n\n useEffect(() => {\n isMounted.current = true;\n if (isVisible) {\n show();\n }\n\n return () => {\n isMounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backdropAnimatedStyle = {\n opacity: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [0, overlayOpacity],\n }),\n };\n const contentAnimatedStyle = {\n transform: [\n {\n translateY: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [screenHeight, 0],\n extrapolate: \"clamp\",\n }),\n },\n ],\n };\n\n const show = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 1,\n }).start();\n }, [animationDuration]);\n\n const hide = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 0,\n }).start(() => {\n if (isMounted.current) {\n onHide?.();\n }\n });\n }, [animationDuration, onHide]);\n\n useEffect(() => {\n if (isVisible) {\n show();\n } else {\n hide();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n return (\n <ReactNativeModal\n transparent\n animationType=\"fade\"\n visible={isVisible}\n {...modalProps}\n testID={testID ?? \"modal\"}>\n <TouchableWithoutFeedback\n onPress={onOverlayPress}\n testID=\"modal-backdrop\">\n <Animated.View\n style={[\n styles.backdrop,\n backdropAnimatedStyle,\n { width: screenWidth, height: screenHeight },\n overlayStyle,\n ]}\n />\n </TouchableWithoutFeedback>\n <Animated.View\n style={[styles.content, contentAnimatedStyle, contentStyle]}\n pointerEvents=\"box-none\">\n {children}\n </Animated.View>\n </ReactNativeModal>\n );\n};\n\nexport default React.memo(Modal);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","Animated","Easing","Modal","ReactNativeModal","TouchableWithoutFeedback","useWindowDimensions","styles","children","onOverlayPress","onHide","isVisible","animationDuration","overlayOpacity","modalProps","contentStyle","overlayStyle","testID","width","screenWidth","height","screenHeight","isMounted","animatedOpacity","Value","current","show","backdropAnimatedStyle","opacity","interpolate","inputRange","outputRange","contentAnimatedStyle","transform","translateY","extrapolate","timing","easing","inOut","quad","useNativeDriver","duration","toValue","start","hide","createElement","_extends","transparent","animationType","visible","onPress","View","style","backdrop","content","pointerEvents","memo"],"sources":["index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useRef } from \"react\";\nimport {\n Animated,\n Easing,\n Modal as ReactNativeModal,\n TouchableWithoutFeedback,\n useWindowDimensions,\n} from \"react-native\";\n\nimport { styles } from \"./Modal.styles\";\n\ninterface ModalProps {\n children?: React.ReactElement;\n onOverlayPress?: () => void;\n onHide?: () => void;\n isVisible?: boolean;\n animationDuration?: number;\n overlayOpacity?: number;\n modalProps?: any;\n contentStyle?: any;\n overlayStyle?: any;\n testID?: string;\n}\n\nexport const Modal = ({\n children,\n onOverlayPress,\n onHide,\n isVisible = false,\n animationDuration = 300,\n overlayOpacity = 0.4,\n modalProps,\n contentStyle,\n overlayStyle,\n testID = \"modal\",\n}: ModalProps): React.ReactElement => {\n const { width: screenWidth, height: screenHeight } = useWindowDimensions();\n\n const isMounted = useRef(false);\n const animatedOpacity = useRef(new Animated.Value(0));\n\n useEffect(() => {\n isMounted.current = true;\n if (isVisible) {\n show();\n }\n\n return () => {\n isMounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backdropAnimatedStyle = {\n opacity: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [0, overlayOpacity],\n }),\n };\n const contentAnimatedStyle = {\n transform: [\n {\n translateY: animatedOpacity.current.interpolate({\n inputRange: [0, 1],\n outputRange: [screenHeight, 0],\n extrapolate: \"clamp\",\n }),\n },\n ],\n };\n\n const show = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 1,\n }).start();\n }, [animationDuration]);\n\n const hide = useCallback(() => {\n Animated.timing(animatedOpacity.current, {\n easing: Easing.inOut(Easing.quad),\n // Using native driver in the modal makes the content flash\n useNativeDriver: true,\n duration: animationDuration,\n toValue: 0,\n }).start(() => {\n if (isMounted.current) {\n onHide?.();\n }\n });\n }, [animationDuration, onHide]);\n\n useEffect(() => {\n if (isVisible) {\n show();\n } else {\n hide();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n return (\n <ReactNativeModal\n transparent\n animationType=\"fade\"\n visible={isVisible}\n {...modalProps}\n testID={testID}>\n <TouchableWithoutFeedback\n onPress={onOverlayPress}\n testID=\"modal-backdrop\">\n <Animated.View\n style={[\n styles.backdrop,\n backdropAnimatedStyle,\n { width: screenWidth, height: screenHeight },\n overlayStyle,\n ]}\n />\n </TouchableWithoutFeedback>\n <Animated.View\n style={[styles.content, contentAnimatedStyle, contentStyle]}\n pointerEvents=\"box-none\">\n {children}\n </Animated.View>\n </ReactNativeModal>\n );\n};\n\nexport default React.memo(Modal);\n"],"mappings":"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"}
@@ -1,35 +1,42 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
  import React, { useRef, useCallback, forwardRef, useImperativeHandle } from "react";
3
3
  import { View, Text, FlatList } from "react-native";
4
- import { generateNumbers } from "../../utils/generateNumbers";
4
+ import { generate12HourNumbers, generateNumbers } from "../../utils/generateNumbers";
5
5
  import { colorToRgba } from "../../utils/colorToRgba";
6
6
  import { getAdjustedLimit } from "../../utils/getAdjustedLimit";
7
7
  import { getScrollIndex } from "../../utils/getScrollIndex";
8
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
9
  const KEY_EXTRACTOR = (_, index) => index.toString();
10
- const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
11
- let {
12
- numberOfItems,
13
- label,
14
- initialValue = 0,
15
- onDurationChange,
16
- padNumbersWithZero = false,
17
- disableInfiniteScroll = false,
18
- limit,
19
- padWithNItems,
20
- pickerGradientOverlayProps,
21
- topPickerGradientOverlayProps,
22
- bottomPickerGradientOverlayProps,
23
- LinearGradient,
24
- testID,
25
- styles
26
- } = _ref;
27
- const flatListRef = useRef(null);
28
- const data = generateNumbers(numberOfItems, {
29
- padWithZero: padNumbersWithZero,
10
+ const DurationScroll = /*#__PURE__*/forwardRef(({
11
+ numberOfItems,
12
+ label,
13
+ initialValue = 0,
14
+ onDurationChange,
15
+ padNumbersWithZero = false,
16
+ disableInfiniteScroll = false,
17
+ limit,
18
+ aggressivelyGetLatestDuration,
19
+ is12HourPicker,
20
+ amLabel,
21
+ pmLabel,
22
+ padWithNItems,
23
+ pickerGradientOverlayProps,
24
+ topPickerGradientOverlayProps,
25
+ bottomPickerGradientOverlayProps,
26
+ LinearGradient,
27
+ testID,
28
+ styles
29
+ }, ref) => {
30
+ const data = !is12HourPicker ? generateNumbers(numberOfItems, {
31
+ padNumbersWithZero,
32
+ repeatNTimes: 3,
33
+ disableInfiniteScroll,
34
+ padWithNItems
35
+ }) : generate12HourNumbers({
36
+ padNumbersWithZero,
30
37
  repeatNTimes: 3,
31
38
  disableInfiniteScroll,
32
- padWithNItems: padWithNItems
39
+ padWithNItems
33
40
  });
34
41
  const numberOfItemsToShow = 1 + padWithNItems * 2;
35
42
  const adjustedLimited = getAdjustedLimit(limit, numberOfItems);
@@ -39,6 +46,8 @@ const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
39
46
  padWithNItems,
40
47
  disableInfiniteScroll
41
48
  });
49
+ const latestDuration = useRef(0);
50
+ const flatListRef = useRef(null);
42
51
  useImperativeHandle(ref, () => ({
43
52
  reset: options => {
44
53
  var _flatListRef$current;
@@ -58,21 +67,50 @@ const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
58
67
  disableInfiniteScroll
59
68
  })
60
69
  });
61
- }
70
+ },
71
+ latestDuration: latestDuration
62
72
  }));
63
- const renderItem = useCallback(_ref2 => {
64
- let {
65
- item
66
- } = _ref2;
67
- const intItem = parseInt(item);
73
+ const renderItem = useCallback(({
74
+ item
75
+ }) => {
76
+ let stringItem = item;
77
+ let intItem;
78
+ let isAm;
79
+ if (!is12HourPicker) {
80
+ intItem = parseInt(item);
81
+ } else {
82
+ isAm = item.includes("AM");
83
+ stringItem = item.replace(/\s[AP]M/g, "");
84
+ intItem = parseInt(stringItem);
85
+ }
68
86
  return /*#__PURE__*/React.createElement(View, {
69
87
  key: item,
70
88
  style: styles.pickerItemContainer,
71
89
  testID: "picker-item"
72
90
  }, /*#__PURE__*/React.createElement(Text, {
73
91
  style: [styles.pickerItem, intItem > adjustedLimited.max || intItem < adjustedLimited.min ? styles.disabledPickerItem : {}]
74
- }, item));
75
- }, [adjustedLimited.max, adjustedLimited.min, styles.disabledPickerItem, styles.pickerItem, styles.pickerItemContainer]);
92
+ }, stringItem), is12HourPicker ? /*#__PURE__*/React.createElement(View, {
93
+ style: styles.pickerAmPmContainer,
94
+ pointerEvents: "none"
95
+ }, /*#__PURE__*/React.createElement(Text, {
96
+ style: [styles.pickerAmPmLabel]
97
+ }, isAm ? amLabel : pmLabel)) : null);
98
+ }, [adjustedLimited.max, adjustedLimited.min, amLabel, is12HourPicker, pmLabel, styles.disabledPickerItem, styles.pickerAmPmContainer, styles.pickerAmPmLabel, styles.pickerItem, styles.pickerItemContainer]);
99
+ const onScroll = useCallback(e => {
100
+ // this function is only used when the picker is in a modal
101
+ // it is used to ensure that the modal gets the latest duration on clicking
102
+ // the confirm button, even if the scrollview is still scrolling
103
+ const newIndex = Math.round(e.nativeEvent.contentOffset.y / styles.pickerItemContainer.height);
104
+ let newDuration = (disableInfiniteScroll ? newIndex : newIndex + padWithNItems) % (numberOfItems + 1);
105
+
106
+ // check limits
107
+ if (newDuration > adjustedLimited.max) {
108
+ newDuration = adjustedLimited.max;
109
+ } else if (newDuration < adjustedLimited.min) {
110
+ newDuration = adjustedLimited.min;
111
+ }
112
+ latestDuration.current = newDuration;
113
+ }, [adjustedLimited.max, adjustedLimited.min, disableInfiniteScroll, numberOfItems, padWithNItems, styles.pickerItemContainer.height]);
76
114
  const onMomentumScrollEnd = useCallback(e => {
77
115
  const newIndex = Math.round(e.nativeEvent.contentOffset.y / styles.pickerItemContainer.height);
78
116
  let newDuration = (disableInfiniteScroll ? newIndex : newIndex + padWithNItems) % (numberOfItems + 1);
@@ -101,11 +139,10 @@ const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
101
139
  }
102
140
  onDurationChange(newDuration);
103
141
  }, [adjustedLimited.max, adjustedLimited.min, data.length, disableInfiniteScroll, numberOfItems, onDurationChange, padWithNItems, styles.pickerItemContainer.height]);
104
- const onViewableItemsChanged = useCallback(_ref3 => {
142
+ const onViewableItemsChanged = useCallback(({
143
+ viewableItems
144
+ }) => {
105
145
  var _viewableItems$, _viewableItems$2;
106
- let {
107
- viewableItems
108
- } = _ref3;
109
146
  if ((_viewableItems$ = viewableItems[0]) !== null && _viewableItems$ !== void 0 && _viewableItems$.index && viewableItems[0].index < numberOfItems * 0.5) {
110
147
  var _flatListRef$current5;
111
148
  (_flatListRef$current5 = flatListRef.current) === null || _flatListRef$current5 === void 0 || _flatListRef$current5.scrollToIndex({
@@ -146,7 +183,7 @@ const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
146
183
  renderItem: renderItem,
147
184
  keyExtractor: KEY_EXTRACTOR,
148
185
  showsVerticalScrollIndicator: false,
149
- decelerationRate: 0.9,
186
+ decelerationRate: 0.88,
150
187
  scrollEventThrottle: 16,
151
188
  snapToAlignment: "start"
152
189
  // used in place of snapToOffset due to bug on Android
@@ -154,6 +191,7 @@ const DurationScroll = /*#__PURE__*/forwardRef((_ref, ref) => {
154
191
  snapToOffsets: [...Array(data.length)].map((_, i) => i * styles.pickerItemContainer.height),
155
192
  viewabilityConfigCallbackPairs: !disableInfiniteScroll ? viewabilityConfigCallbackPairs === null || viewabilityConfigCallbackPairs === void 0 ? void 0 : viewabilityConfigCallbackPairs.current : undefined,
156
193
  onMomentumScrollEnd: onMomentumScrollEnd,
194
+ onScroll: aggressivelyGetLatestDuration ? onScroll : undefined,
157
195
  testID: "duration-scroll-flatlist"
158
196
  }), /*#__PURE__*/React.createElement(View, {
159
197
  style: styles.pickerLabelContainer,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useCallback","forwardRef","useImperativeHandle","View","Text","FlatList","generateNumbers","colorToRgba","getAdjustedLimit","getScrollIndex","KEY_EXTRACTOR","_","index","toString","DurationScroll","_ref","ref","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","flatListRef","data","padWithZero","repeatNTimes","numberOfItemsToShow","adjustedLimited","initialScrollIndex","value","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","_ref2","item","intItem","parseInt","createElement","key","style","pickerItemContainer","pickerItem","max","min","disabledPickerItem","onMomentumScrollEnd","e","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","length","onViewableItemsChanged","_ref3","_viewableItems$","_viewableItems$2","viewableItems","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","i","undefined","pickerLabelContainer","pointerEvents","pickerLabel","Fragment","_extends","colors","pickerContainer","backgroundColor","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport { generateNumbers } from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const flatListRef = useRef<FlatList | null>(null);\n\n const data = generateNumbers(numberOfItems, {\n padWithZero: padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems: padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n const intItem = parseInt(item);\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {item}\n </Text>\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n styles.disabledPickerItem,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.9}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text style={styles.pickerLabel}>{label}</Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":";AAAA,OAAOA,KAAK,IACRC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,mBAAmB,QAChB,OAAO;AACd,SACIC,IAAI,EACJC,IAAI,EACJC,QAAQ,QAKL,cAAc;AAErB,SAASC,eAAe,QAAQ,6BAA6B;AAC7D,SAASC,WAAW,QAAQ,yBAAyB;AAErD,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,cAAc,QAAQ,4BAA4B;AA0C3D;AACA,MAAMC,aAAa,GAAGA,CAACC,CAAM,EAAEC,KAAa,KAAKA,KAAK,CAACC,QAAQ,CAAC,CAAC;AAEjE,MAAMC,cAAc,gBAAGb,UAAU,CAC7B,CAAAc,IAAA,EAiBIC,GAAG,KACkB;EAAA,IAjBrB;IACIC,aAAa;IACbC,KAAK;IACLC,YAAY,GAAG,CAAC;IAChBC,gBAAgB;IAChBC,kBAAkB,GAAG,KAAK;IAC1BC,qBAAqB,GAAG,KAAK;IAC7BC,KAAK;IACLC,aAAa;IACbC,0BAA0B;IAC1BC,6BAA6B;IAC7BC,gCAAgC;IAChCC,cAAc;IACdC,MAAM;IACNC;EACJ,CAAC,GAAAf,IAAA;EAGD,MAAMgB,WAAW,GAAGhC,MAAM,CAAkB,IAAI,CAAC;EAEjD,MAAMiC,IAAI,GAAG1B,eAAe,CAACW,aAAa,EAAE;IACxCgB,WAAW,EAAEZ,kBAAkB;IAC/Ba,YAAY,EAAE,CAAC;IACfZ,qBAAqB;IACrBE,aAAa,EAAEA;EACnB,CAAC,CAAC;EAEF,MAAMW,mBAAmB,GAAG,CAAC,GAAGX,aAAa,GAAG,CAAC;EAEjD,MAAMY,eAAe,GAAG5B,gBAAgB,CAACe,KAAK,EAAEN,aAAa,CAAC;EAE9D,MAAMoB,kBAAkB,GAAG5B,cAAc,CAAC;IACtC6B,KAAK,EAAEnB,YAAY;IACnBF,aAAa;IACbO,aAAa;IACbF;EACJ,CAAC,CAAC;EAEFpB,mBAAmB,CAACc,GAAG,EAAE,OAAO;IAC5BuB,KAAK,EAAGC,OAAO,IAAK;MAAA,IAAAC,oBAAA;MAChB,CAAAA,oBAAA,GAAAV,WAAW,CAACW,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,aAAa,CAAC;QAC/BC,QAAQ,EAAE,CAAAJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,QAAQ,KAAI,KAAK;QACpChC,KAAK,EAAEyB;MACX,CAAC,CAAC;IACN,CAAC;IACDQ,QAAQ,EAAEA,CAACP,KAAK,EAAEE,OAAO,KAAK;MAAA,IAAAM,qBAAA;MAC1B,CAAAA,qBAAA,GAAAf,WAAW,CAACW,OAAO,cAAAI,qBAAA,eAAnBA,qBAAA,CAAqBH,aAAa,CAAC;QAC/BC,QAAQ,EAAE,CAAAJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,QAAQ,KAAI,KAAK;QACpChC,KAAK,EAAEH,cAAc,CAAC;UAClB6B,KAAK,EAAEA,KAAK;UACZrB,aAAa;UACbO,aAAa;UACbF;QACJ,CAAC;MACL,CAAC,CAAC;IACN;EACJ,CAAC,CAAC,CAAC;EAEH,MAAMyB,UAAU,GAAG/C,WAAW,CAC1BgD,KAAA,IAAgC;IAAA,IAA/B;MAAEC;IAAuB,CAAC,GAAAD,KAAA;IACvB,MAAME,OAAO,GAAGC,QAAQ,CAACF,IAAI,CAAC;IAE9B,oBACInD,KAAA,CAAAsD,aAAA,CAACjD,IAAI;MACDkD,GAAG,EAAEJ,IAAK;MACVK,KAAK,EAAExB,MAAM,CAACyB,mBAAoB;MAClC1B,MAAM,EAAC;IAAa,gBACpB/B,KAAA,CAAAsD,aAAA,CAAChD,IAAI;MACDkD,KAAK,EAAE,CACHxB,MAAM,CAAC0B,UAAU,EACjBN,OAAO,GAAGd,eAAe,CAACqB,GAAG,IAC7BP,OAAO,GAAGd,eAAe,CAACsB,GAAG,GACvB5B,MAAM,CAAC6B,kBAAkB,GACzB,CAAC,CAAC;IACV,GACDV,IACC,CACJ,CAAC;EAEf,CAAC,EACD,CACIb,eAAe,CAACqB,GAAG,EACnBrB,eAAe,CAACsB,GAAG,EACnB5B,MAAM,CAAC6B,kBAAkB,EACzB7B,MAAM,CAAC0B,UAAU,EACjB1B,MAAM,CAACyB,mBAAmB,CAElC,CAAC;EAED,MAAMK,mBAAmB,GAAG5D,WAAW,CAClC6D,CAA0C,IAAK;IAC5C,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CACvBH,CAAC,CAACI,WAAW,CAACC,aAAa,CAACC,CAAC,GACzBrC,MAAM,CAACyB,mBAAmB,CAACa,MACnC,CAAC;IACD,IAAIC,WAAW,GACX,CAAC/C,qBAAqB,GAChBwC,QAAQ,GACRA,QAAQ,GAAGtC,aAAa,KAC7BP,aAAa,GAAG,CAAC,CAAC;;IAEvB;IACA,IAAIoD,WAAW,GAAGjC,eAAe,CAACqB,GAAG,EAAE;MAAA,IAAAa,qBAAA;MACnC,MAAMC,iBAAiB,GACnBT,QAAQ,IAAIO,WAAW,GAAGjC,eAAe,CAACqB,GAAG,CAAC;MAClD,CAAAa,qBAAA,GAAAvC,WAAW,CAACW,OAAO,cAAA4B,qBAAA,eAAnBA,qBAAA,CAAqB3B,aAAa,CAAC;QAC/BC,QAAQ,EAAE,IAAI;QACdhC,KAAK;QACD;QACA2D,iBAAiB,IAAI,CAAC,GAChBA,iBAAiB,GACjBnC,eAAe,CAACqB,GAAG,GAAG;MACpC,CAAC,CAAC,CAAC,CAAC;MACJY,WAAW,GAAGjC,eAAe,CAACqB,GAAG;IACrC,CAAC,MAAM,IAAIY,WAAW,GAAGjC,eAAe,CAACsB,GAAG,EAAE;MAAA,IAAAc,qBAAA;MAC1C,MAAMD,iBAAiB,GACnBT,QAAQ,IAAI1B,eAAe,CAACsB,GAAG,GAAGW,WAAW,CAAC;MAClD,CAAAG,qBAAA,GAAAzC,WAAW,CAACW,OAAO,cAAA8B,qBAAA,eAAnBA,qBAAA,CAAqB7B,aAAa,CAAC;QAC/BC,QAAQ,EAAE,IAAI;QACdhC,KAAK;QACD;QACA2D,iBAAiB,IAAIvC,IAAI,CAACyC,MAAM,GAAG,CAAC,GAC9BF,iBAAiB,GACjBnC,eAAe,CAACsB;MAC9B,CAAC,CAAC,CAAC,CAAC;MACJW,WAAW,GAAGjC,eAAe,CAACsB,GAAG;IACrC;IAEAtC,gBAAgB,CAACiD,WAAW,CAAC;EACjC,CAAC,EACD,CACIjC,eAAe,CAACqB,GAAG,EACnBrB,eAAe,CAACsB,GAAG,EACnB1B,IAAI,CAACyC,MAAM,EACXnD,qBAAqB,EACrBL,aAAa,EACbG,gBAAgB,EAChBI,aAAa,EACbM,MAAM,CAACyB,mBAAmB,CAACa,MAAM,CAEzC,CAAC;EAED,MAAMM,sBAAsB,GAAG1E,WAAW,CACtC2E,KAAA,IAAuD;IAAA,IAAAC,eAAA,EAAAC,gBAAA;IAAA,IAAtD;MAAEC;IAA8C,CAAC,GAAAH,KAAA;IAC9C,IACI,CAAAC,eAAA,GAAAE,aAAa,CAAC,CAAC,CAAC,cAAAF,eAAA,eAAhBA,eAAA,CAAkBhE,KAAK,IACvBkE,aAAa,CAAC,CAAC,CAAC,CAAClE,KAAK,GAAGK,aAAa,GAAG,GAAG,EAC9C;MAAA,IAAA8D,qBAAA;MACE,CAAAA,qBAAA,GAAAhD,WAAW,CAACW,OAAO,cAAAqC,qBAAA,eAAnBA,qBAAA,CAAqBpC,aAAa,CAAC;QAC/BC,QAAQ,EAAE,KAAK;QACfhC,KAAK,EAAEkE,aAAa,CAAC,CAAC,CAAC,CAAClE,KAAK,GAAGK;MACpC,CAAC,CAAC;IACN,CAAC,MAAM,IACH,CAAA4D,gBAAA,GAAAC,aAAa,CAAC,CAAC,CAAC,cAAAD,gBAAA,eAAhBA,gBAAA,CAAkBjE,KAAK,IACvBkE,aAAa,CAAC,CAAC,CAAC,CAAClE,KAAK,IAAIK,aAAa,GAAG,GAAG,EAC/C;MAAA,IAAA+D,qBAAA;MACE,CAAAA,qBAAA,GAAAjD,WAAW,CAACW,OAAO,cAAAsC,qBAAA,eAAnBA,qBAAA,CAAqBrC,aAAa,CAAC;QAC/BC,QAAQ,EAAE,KAAK;QACfhC,KAAK,EAAEkE,aAAa,CAAC,CAAC,CAAC,CAAClE,KAAK,GAAGK;MACpC,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAACA,aAAa,CAClB,CAAC;EAED,MAAMgE,aAAa,GAAGjF,WAAW,CAC7B,CAACW,CAAuC,EAAEC,KAAa,MAAM;IACzD6D,MAAM,EAAE3C,MAAM,CAACyB,mBAAmB,CAACa,MAAM;IACzCc,MAAM,EAAEpD,MAAM,CAACyB,mBAAmB,CAACa,MAAM,GAAGxD,KAAK;IACjDA;EACJ,CAAC,CAAC,EACF,CAACkB,MAAM,CAACyB,mBAAmB,CAACa,MAAM,CACtC,CAAC;EAED,MAAMe,8BAA8B,GAChCpF,MAAM,CAAiC,CACnC;IACIqF,iBAAiB,EAAE;MAAEC,gCAAgC,EAAE;IAAG,CAAC;IAC3DX,sBAAsB,EAAEA;EAC5B,CAAC,CACJ,CAAC;EAEN,oBACI5E,KAAA,CAAAsD,aAAA,CAACjD,IAAI;IACD0B,MAAM,EAAEA,MAAO;IACfyB,KAAK,EAAE;MACHc,MAAM,EACFtC,MAAM,CAACyB,mBAAmB,CAACa,MAAM,GAAGjC,mBAAmB;MAC3DmD,QAAQ,EAAE;IACd;EAAE,gBACFxF,KAAA,CAAAsD,aAAA,CAAC/C,QAAQ;IACLW,GAAG,EAAEe,WAAY;IACjBC,IAAI,EAAEA,IAAK;IACXiD,aAAa,EAAEA,aAAc;IAC7B5C,kBAAkB,EAAEA,kBAAmB;IACvCkD,UAAU,EAAEpD,mBAAoB;IAChCY,UAAU,EAAEA,UAAW;IACvByC,YAAY,EAAE9E,aAAc;IAC5B+E,4BAA4B,EAAE,KAAM;IACpCC,gBAAgB,EAAE,GAAI;IACtBC,mBAAmB,EAAE,EAAG;IACxBC,eAAe,EAAC;IAChB;IAAA;IACAC,aAAa,EAAE,CAAC,GAAGC,KAAK,CAAC9D,IAAI,CAACyC,MAAM,CAAC,CAAC,CAACsB,GAAG,CACtC,CAACpF,CAAC,EAAEqF,CAAC,KAAKA,CAAC,GAAGlE,MAAM,CAACyB,mBAAmB,CAACa,MAC7C,CAAE;IACFe,8BAA8B,EAC1B,CAAC7D,qBAAqB,GAChB6D,8BAA8B,aAA9BA,8BAA8B,uBAA9BA,8BAA8B,CAAEzC,OAAO,GACvCuD,SACT;IACDrC,mBAAmB,EAAEA,mBAAoB;IACzC/B,MAAM,EAAC;EAA0B,CACpC,CAAC,eACF/B,KAAA,CAAAsD,aAAA,CAACjD,IAAI;IAACmD,KAAK,EAAExB,MAAM,CAACoE,oBAAqB;IAACC,aAAa,EAAC;EAAM,GACzD,OAAOjF,KAAK,KAAK,QAAQ,gBACtBpB,KAAA,CAAAsD,aAAA,CAAChD,IAAI;IAACkD,KAAK,EAAExB,MAAM,CAACsE;EAAY,GAAElF,KAAY,CAAC,GAE/CA,KAAK,IAAI,IAEX,CAAC,EACNU,cAAc,gBACX9B,KAAA,CAAAsD,aAAA,CAAAtD,KAAA,CAAAuG,QAAA,qBACIvG,KAAA,CAAAsD,aAAA,CAACxB,cAAc,EAAA0E,QAAA;IACXC,MAAM,EAAE,CACJzE,MAAM,CAAC0E,eAAe,CAACC,eAAe,IAClC,OAAO,EACXlG,WAAW,CAAC;MACRmG,KAAK,EACD5E,MAAM,CAAC0E,eAAe,CACjBC,eAAe,IAAI,OAAO;MACnCE,OAAO,EAAE;IACb,CAAC,CAAC,CACJ;IACFC,KAAK,EAAE;MAAEC,CAAC,EAAE,CAAC;MAAE1C,CAAC,EAAE;IAAI,CAAE;IACxB2C,GAAG,EAAE;MAAED,CAAC,EAAE,CAAC;MAAE1C,CAAC,EAAE;IAAE,CAAE;IACpBgC,aAAa,EAAC;EAAM,GAChB1E,0BAA0B,EAC1BC,6BAA6B;IACjC4B,KAAK,EAAE,CAACxB,MAAM,CAACiF,qBAAqB,EAAE;MAAEC,GAAG,EAAE;IAAE,CAAC;EAAE,EACrD,CAAC,eACFlH,KAAA,CAAAsD,aAAA,CAACxB,cAAc,EAAA0E,QAAA;IACXC,MAAM,EAAE,CACJhG,WAAW,CAAC;MACRmG,KAAK,EACD5E,MAAM,CAAC0E,eAAe,CACjBC,eAAe,IAAI,OAAO;MACnCE,OAAO,EAAE;IACb,CAAC,CAAC,EACF7E,MAAM,CAAC0E,eAAe,CAACC,eAAe,IAClC,OAAO,CACb;IACFG,KAAK,EAAE;MAAEC,CAAC,EAAE,CAAC;MAAE1C,CAAC,EAAE;IAAE,CAAE;IACtB2C,GAAG,EAAE;MAAED,CAAC,EAAE,CAAC;MAAE1C,CAAC,EAAE;IAAI,CAAE;IACtBgC,aAAa,EAAC;EAAM,GAChB1E,0BAA0B,EAC1BE,gCAAgC;IACpC2B,KAAK,EAAE,CACHxB,MAAM,CAACiF,qBAAqB,EAC5B;MAAEE,MAAM,EAAE,CAAC;IAAE,CAAC;EAChB,EACL,CACH,CAAC,GACH,IACF,CAAC;AAEf,CACJ,CAAC;AAED,4BAAenH,KAAK,CAACoH,IAAI,CAACpG,cAAc,CAAC"}
1
+ {"version":3,"names":["React","useRef","useCallback","forwardRef","useImperativeHandle","View","Text","FlatList","generate12HourNumbers","generateNumbers","colorToRgba","getAdjustedLimit","getScrollIndex","KEY_EXTRACTOR","_","index","toString","DurationScroll","numberOfItems","label","initialValue","onDurationChange","padNumbersWithZero","disableInfiniteScroll","limit","aggressivelyGetLatestDuration","is12HourPicker","amLabel","pmLabel","padWithNItems","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","LinearGradient","testID","styles","ref","data","repeatNTimes","numberOfItemsToShow","adjustedLimited","initialScrollIndex","value","latestDuration","flatListRef","reset","options","_flatListRef$current","current","scrollToIndex","animated","setValue","_flatListRef$current2","renderItem","item","stringItem","intItem","isAm","parseInt","includes","replace","createElement","key","style","pickerItemContainer","pickerItem","max","min","disabledPickerItem","pickerAmPmContainer","pointerEvents","pickerAmPmLabel","onScroll","e","newIndex","Math","round","nativeEvent","contentOffset","y","height","newDuration","onMomentumScrollEnd","_flatListRef$current3","targetScrollIndex","_flatListRef$current4","length","onViewableItemsChanged","viewableItems","_viewableItems$","_viewableItems$2","_flatListRef$current5","_flatListRef$current6","getItemLayout","offset","viewabilityConfigCallbackPairs","viewabilityConfig","viewAreaCoveragePercentThreshold","overflow","windowSize","keyExtractor","showsVerticalScrollIndicator","decelerationRate","scrollEventThrottle","snapToAlignment","snapToOffsets","Array","map","i","undefined","pickerLabelContainer","pickerLabel","Fragment","_extends","colors","pickerContainer","backgroundColor","color","opacity","start","x","end","pickerGradientOverlay","top","bottom","memo"],"sources":["DurationScroll.tsx"],"sourcesContent":["import React, {\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n MutableRefObject,\n} from \"react\";\nimport {\n View,\n Text,\n FlatList,\n ViewabilityConfigCallbackPairs,\n ViewToken,\n NativeSyntheticEvent,\n NativeScrollEvent,\n} from \"react-native\";\n\nimport {\n generate12HourNumbers,\n generateNumbers,\n} from \"../../utils/generateNumbers\";\nimport { colorToRgba } from \"../../utils/colorToRgba\";\nimport { generateStyles } from \"./TimerPicker.styles\";\nimport { getAdjustedLimit } from \"../../utils/getAdjustedLimit\";\nimport { getScrollIndex } from \"../../utils/getScrollIndex\";\n\nexport interface DurationScrollRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (value: number, options?: { animated?: boolean }) => void;\n latestDuration: MutableRefObject<number>;\n}\n\ntype LinearGradientPoint = {\n x: number;\n y: number;\n};\n\nexport type LinearGradientProps = React.ComponentProps<typeof View> & {\n colors: string[];\n locations?: number[] | null;\n start?: LinearGradientPoint | null;\n end?: LinearGradientPoint | null;\n};\n\nexport type LimitType = {\n max?: number;\n min?: number;\n};\n\ninterface DurationScrollProps {\n numberOfItems: number;\n label?: string | React.ReactElement;\n initialValue?: number;\n onDurationChange: (duration: number) => void;\n padNumbersWithZero?: boolean;\n disableInfiniteScroll?: boolean;\n limit?: LimitType;\n aggressivelyGetLatestDuration: boolean;\n is12HourPicker?: boolean;\n amLabel?: string;\n pmLabel?: string;\n padWithNItems: number;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n testID?: string;\n styles: ReturnType<typeof generateStyles>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst KEY_EXTRACTOR = (_: any, index: number) => index.toString();\n\nconst DurationScroll = forwardRef<DurationScrollRef, DurationScrollProps>(\n (\n {\n numberOfItems,\n label,\n initialValue = 0,\n onDurationChange,\n padNumbersWithZero = false,\n disableInfiniteScroll = false,\n limit,\n aggressivelyGetLatestDuration,\n is12HourPicker,\n amLabel,\n pmLabel,\n padWithNItems,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n LinearGradient,\n testID,\n styles,\n },\n ref\n ): React.ReactElement => {\n const data = !is12HourPicker\n ? generateNumbers(numberOfItems, {\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n })\n : generate12HourNumbers({\n padNumbersWithZero,\n repeatNTimes: 3,\n disableInfiniteScroll,\n padWithNItems,\n });\n\n const numberOfItemsToShow = 1 + padWithNItems * 2;\n\n const adjustedLimited = getAdjustedLimit(limit, numberOfItems);\n\n const initialScrollIndex = getScrollIndex({\n value: initialValue,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n });\n\n const latestDuration = useRef(0);\n\n const flatListRef = useRef<FlatList | null>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: initialScrollIndex,\n });\n },\n setValue: (value, options) => {\n flatListRef.current?.scrollToIndex({\n animated: options?.animated ?? false,\n index: getScrollIndex({\n value: value,\n numberOfItems,\n padWithNItems,\n disableInfiniteScroll,\n }),\n });\n },\n latestDuration: latestDuration,\n }));\n\n const renderItem = useCallback(\n ({ item }: { item: string }) => {\n let stringItem = item;\n let intItem: number;\n let isAm: boolean | undefined;\n\n if (!is12HourPicker) {\n intItem = parseInt(item);\n } else {\n isAm = item.includes(\"AM\");\n stringItem = item.replace(/\\s[AP]M/g, \"\");\n intItem = parseInt(stringItem);\n }\n\n return (\n <View\n key={item}\n style={styles.pickerItemContainer}\n testID=\"picker-item\">\n <Text\n style={[\n styles.pickerItem,\n intItem > adjustedLimited.max ||\n intItem < adjustedLimited.min\n ? styles.disabledPickerItem\n : {},\n ]}>\n {stringItem}\n </Text>\n {is12HourPicker ? (\n <View\n style={styles.pickerAmPmContainer}\n pointerEvents=\"none\">\n <Text style={[styles.pickerAmPmLabel]}>\n {isAm ? amLabel : pmLabel}\n </Text>\n </View>\n ) : null}\n </View>\n );\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n amLabel,\n is12HourPicker,\n pmLabel,\n styles.disabledPickerItem,\n styles.pickerAmPmContainer,\n styles.pickerAmPmLabel,\n styles.pickerItem,\n styles.pickerItemContainer,\n ]\n );\n\n const onScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n // this function is only used when the picker is in a modal\n // it is used to ensure that the modal gets the latest duration on clicking\n // the confirm button, even if the scrollview is still scrolling\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n newDuration = adjustedLimited.min;\n }\n latestDuration.current = newDuration;\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const newIndex = Math.round(\n e.nativeEvent.contentOffset.y /\n styles.pickerItemContainer.height\n );\n let newDuration =\n (disableInfiniteScroll\n ? newIndex\n : newIndex + padWithNItems) %\n (numberOfItems + 1);\n\n // check limits\n if (newDuration > adjustedLimited.max) {\n const targetScrollIndex =\n newIndex - (newDuration - adjustedLimited.max);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex >= 0\n ? targetScrollIndex\n : adjustedLimited.max - 1,\n }); // scroll down to max\n newDuration = adjustedLimited.max;\n } else if (newDuration < adjustedLimited.min) {\n const targetScrollIndex =\n newIndex + (adjustedLimited.min - newDuration);\n flatListRef.current?.scrollToIndex({\n animated: true,\n index:\n // guard against scrolling beyond end of list\n targetScrollIndex <= data.length - 1\n ? targetScrollIndex\n : adjustedLimited.min,\n }); // scroll up to min\n newDuration = adjustedLimited.min;\n }\n\n onDurationChange(newDuration);\n },\n [\n adjustedLimited.max,\n adjustedLimited.min,\n data.length,\n disableInfiniteScroll,\n numberOfItems,\n onDurationChange,\n padWithNItems,\n styles.pickerItemContainer.height,\n ]\n );\n\n const onViewableItemsChanged = useCallback(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (\n viewableItems[0]?.index &&\n viewableItems[0].index < numberOfItems * 0.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index + numberOfItems,\n });\n } else if (\n viewableItems[0]?.index &&\n viewableItems[0].index >= numberOfItems * 2.5\n ) {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: viewableItems[0].index - numberOfItems,\n });\n }\n },\n [numberOfItems]\n );\n\n const getItemLayout = useCallback(\n (_: ArrayLike<string> | null | undefined, index: number) => ({\n length: styles.pickerItemContainer.height,\n offset: styles.pickerItemContainer.height * index,\n index,\n }),\n [styles.pickerItemContainer.height]\n );\n\n const viewabilityConfigCallbackPairs =\n useRef<ViewabilityConfigCallbackPairs>([\n {\n viewabilityConfig: { viewAreaCoveragePercentThreshold: 25 },\n onViewableItemsChanged: onViewableItemsChanged,\n },\n ]);\n\n return (\n <View\n testID={testID}\n style={{\n height:\n styles.pickerItemContainer.height * numberOfItemsToShow,\n overflow: \"hidden\",\n }}>\n <FlatList\n ref={flatListRef}\n data={data}\n getItemLayout={getItemLayout}\n initialScrollIndex={initialScrollIndex}\n windowSize={numberOfItemsToShow}\n renderItem={renderItem}\n keyExtractor={KEY_EXTRACTOR}\n showsVerticalScrollIndicator={false}\n decelerationRate={0.88}\n scrollEventThrottle={16}\n snapToAlignment=\"start\"\n // used in place of snapToOffset due to bug on Android\n snapToOffsets={[...Array(data.length)].map(\n (_, i) => i * styles.pickerItemContainer.height\n )}\n viewabilityConfigCallbackPairs={\n !disableInfiniteScroll\n ? viewabilityConfigCallbackPairs?.current\n : undefined\n }\n onMomentumScrollEnd={onMomentumScrollEnd}\n onScroll={\n aggressivelyGetLatestDuration ? onScroll : undefined\n }\n testID=\"duration-scroll-flatlist\"\n />\n <View style={styles.pickerLabelContainer} pointerEvents=\"none\">\n {typeof label === \"string\" ? (\n <Text style={styles.pickerLabel}>{label}</Text>\n ) : (\n label ?? null\n )}\n </View>\n {LinearGradient ? (\n <>\n <LinearGradient\n colors={[\n styles.pickerContainer.backgroundColor ??\n \"white\",\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n ]}\n start={{ x: 1, y: 0.3 }}\n end={{ x: 1, y: 1 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...topPickerGradientOverlayProps}\n style={[styles.pickerGradientOverlay, { top: 0 }]}\n />\n <LinearGradient\n colors={[\n colorToRgba({\n color:\n styles.pickerContainer\n .backgroundColor ?? \"white\",\n opacity: 0,\n }),\n styles.pickerContainer.backgroundColor ??\n \"white\",\n ]}\n start={{ x: 1, y: 0 }}\n end={{ x: 1, y: 0.7 }}\n pointerEvents=\"none\"\n {...pickerGradientOverlayProps}\n {...bottomPickerGradientOverlayProps}\n style={[\n styles.pickerGradientOverlay,\n { bottom: -1 },\n ]}\n />\n </>\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(DurationScroll);\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ const DARK_MODE_TEXT_COLOR = "#E9E9E9";
5
5
  const LIGHT_MODE_BACKGROUND_COLOR = "#F1F1F1";
6
6
  const LIGHT_MODE_TEXT_COLOR = "#1B1B1B";
7
7
  export const generateStyles = (customStyles, options) => {
8
- var _customStyles$pickerI, _customStyles$pickerI2, _customStyles$pickerI3;
8
+ var _customStyles$pickerL, _customStyles$text, _customStyles$pickerI, _customStyles$text2, _customStyles$pickerI2, _customStyles$pickerI3, _customStyles$pickerI4;
9
9
  return StyleSheet.create({
10
10
  pickerContainer: {
11
11
  flexDirection: "row",
@@ -19,17 +19,19 @@ export const generateStyles = (customStyles, options) => {
19
19
  top: 0,
20
20
  bottom: 0,
21
21
  justifyContent: "center",
22
+ minWidth: ((customStyles === null || customStyles === void 0 || (_customStyles$pickerL = customStyles.pickerLabel) === null || _customStyles$pickerL === void 0 ? void 0 : _customStyles$pickerL.fontSize) ?? (customStyles === null || customStyles === void 0 || (_customStyles$text = customStyles.text) === null || _customStyles$text === void 0 ? void 0 : _customStyles$text.fontSize) ?? 25) * 0.65,
22
23
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer)
23
24
  },
24
25
  pickerLabel: {
25
26
  fontSize: 18,
26
27
  fontWeight: "bold",
27
- marginTop: ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI = customStyles.pickerItem) === null || _customStyles$pickerI === void 0 ? void 0 : _customStyles$pickerI.fontSize) ?? 25) / 6,
28
+ marginTop: ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI = customStyles.pickerItem) === null || _customStyles$pickerI === void 0 ? void 0 : _customStyles$pickerI.fontSize) ?? (customStyles === null || customStyles === void 0 || (_customStyles$text2 = customStyles.text) === null || _customStyles$text2 === void 0 ? void 0 : _customStyles$text2.fontSize) ?? 25) / 6,
28
29
  color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
29
30
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
30
31
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel)
31
32
  },
32
33
  pickerItemContainer: {
34
+ flexDirection: "row",
33
35
  height: 50,
34
36
  justifyContent: "center",
35
37
  alignItems: "center",
@@ -43,6 +45,24 @@ export const generateStyles = (customStyles, options) => {
43
45
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
44
46
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem)
45
47
  },
48
+ pickerAmPmContainer: {
49
+ position: "absolute",
50
+ right: 0,
51
+ top: 0,
52
+ bottom: 0,
53
+ justifyContent: "center",
54
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer),
55
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerAmPmContainer)
56
+ },
57
+ pickerAmPmLabel: {
58
+ fontSize: 18,
59
+ fontWeight: "bold",
60
+ marginTop: ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI3 = customStyles.pickerItem) === null || _customStyles$pickerI3 === void 0 ? void 0 : _customStyles$pickerI3.fontSize) ?? 25) / 6,
61
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
62
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
63
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel),
64
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerAmPmLabel)
65
+ },
46
66
  disabledPickerItem: {
47
67
  opacity: 0.2,
48
68
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerItem)
@@ -51,7 +71,7 @@ export const generateStyles = (customStyles, options) => {
51
71
  position: "absolute",
52
72
  left: 0,
53
73
  right: 0,
54
- height: options.padWithNItems === 0 ? "30%" : ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI3 = customStyles.pickerItemContainer) === null || _customStyles$pickerI3 === void 0 ? void 0 : _customStyles$pickerI3.height) ?? 50) * 0.8,
74
+ height: options.padWithNItems === 0 ? "30%" : ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI4 = customStyles.pickerItemContainer) === null || _customStyles$pickerI4 === void 0 ? void 0 : _customStyles$pickerI4.height) ?? 50) * 0.8,
55
75
  ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerGradientOverlay)
56
76
  }
57
77
  });
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","options","_customStyles$pickerI","_customStyles$pickerI2","_customStyles$pickerI3","create","pickerContainer","flexDirection","marginRight","backgroundColor","theme","pickerLabelContainer","position","right","top","bottom","justifyContent","pickerLabel","fontSize","fontWeight","marginTop","pickerItem","color","text","pickerItemContainer","height","alignItems","width","textAlignVertical","disabledPickerItem","opacity","pickerGradientOverlay","left","padWithNItems"],"sources":["TimerPicker.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet } from \"react-native\";\n\nexport interface CustomTimerPickerStyles {\n theme?: \"light\" | \"dark\";\n backgroundColor?: string;\n text?: any;\n pickerContainer?: any;\n pickerLabelContainer?: any;\n pickerLabel?: any;\n pickerItemContainer?: any;\n pickerItem?: any;\n disabledPickerItem?: any;\n pickerGradientOverlay?: any;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerStyles | undefined,\n options: { padWithNItems: number }\n) =>\n StyleSheet.create({\n pickerContainer: {\n flexDirection: \"row\",\n marginRight: \"8%\",\n backgroundColor:\n customStyles?.backgroundColor ??\n (customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR),\n ...customStyles?.pickerContainer,\n },\n pickerLabelContainer: {\n position: \"absolute\",\n right: 4,\n top: 0,\n bottom: 0,\n justifyContent: \"center\",\n ...customStyles?.pickerLabelContainer,\n },\n pickerLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n marginTop: (customStyles?.pickerItem?.fontSize ?? 25) / 6,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n },\n pickerItemContainer: {\n height: 50,\n justifyContent: \"center\",\n alignItems: \"center\",\n width: (customStyles?.pickerItem?.fontSize ?? 25) * 3.6,\n ...customStyles?.pickerItemContainer,\n },\n pickerItem: {\n textAlignVertical: \"center\",\n fontSize: 25,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n },\n disabledPickerItem: {\n opacity: 0.2,\n ...customStyles?.disabledPickerItem,\n },\n pickerGradientOverlay: {\n position: \"absolute\",\n left: 0,\n right: 0,\n height:\n options.padWithNItems === 0\n ? \"30%\"\n : (customStyles?.pickerItemContainer?.height ?? 50) * 0.8,\n ...customStyles?.pickerGradientOverlay,\n },\n });\n"],"mappings":"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"}
1
+ {"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","options","_customStyles$pickerL","_customStyles$text","_customStyles$pickerI","_customStyles$text2","_customStyles$pickerI2","_customStyles$pickerI3","_customStyles$pickerI4","create","pickerContainer","flexDirection","marginRight","backgroundColor","theme","pickerLabelContainer","position","right","top","bottom","justifyContent","minWidth","pickerLabel","fontSize","text","fontWeight","marginTop","pickerItem","color","pickerItemContainer","height","alignItems","width","textAlignVertical","pickerAmPmContainer","pickerAmPmLabel","disabledPickerItem","opacity","pickerGradientOverlay","left","padWithNItems"],"sources":["TimerPicker.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet } from \"react-native\";\n\nexport interface CustomTimerPickerStyles {\n theme?: \"light\" | \"dark\";\n backgroundColor?: string;\n text?: any;\n pickerContainer?: any;\n pickerLabelContainer?: any;\n pickerLabel?: any;\n pickerAmPmContainer?: any;\n pickerAmPmLabel?: any;\n pickerItemContainer?: any;\n pickerItem?: any;\n disabledPickerItem?: any;\n pickerGradientOverlay?: any;\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerStyles | undefined,\n options: { padWithNItems: number }\n) =>\n StyleSheet.create({\n pickerContainer: {\n flexDirection: \"row\",\n marginRight: \"8%\",\n backgroundColor:\n customStyles?.backgroundColor ??\n (customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR),\n ...customStyles?.pickerContainer,\n },\n pickerLabelContainer: {\n position: \"absolute\",\n right: 4,\n top: 0,\n bottom: 0,\n justifyContent: \"center\",\n minWidth:\n (customStyles?.pickerLabel?.fontSize ??\n customStyles?.text?.fontSize ??\n 25) * 0.65,\n ...customStyles?.pickerLabelContainer,\n },\n pickerLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n marginTop:\n (customStyles?.pickerItem?.fontSize ??\n customStyles?.text?.fontSize ??\n 25) / 6,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n },\n pickerItemContainer: {\n flexDirection: \"row\",\n height: 50,\n justifyContent: \"center\",\n alignItems: \"center\",\n width: (customStyles?.pickerItem?.fontSize ?? 25) * 3.6,\n ...customStyles?.pickerItemContainer,\n },\n pickerItem: {\n textAlignVertical: \"center\",\n fontSize: 25,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n },\n pickerAmPmContainer: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n justifyContent: \"center\",\n ...customStyles?.pickerLabelContainer,\n ...customStyles?.pickerAmPmContainer,\n },\n pickerAmPmLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n marginTop: (customStyles?.pickerItem?.fontSize ?? 25) / 6,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n ...customStyles?.pickerAmPmLabel,\n },\n disabledPickerItem: {\n opacity: 0.2,\n ...customStyles?.disabledPickerItem,\n },\n pickerGradientOverlay: {\n position: \"absolute\",\n left: 0,\n right: 0,\n height:\n options.padWithNItems === 0\n ? \"30%\"\n : (customStyles?.pickerItemContainer?.height ?? 50) * 0.8,\n ...customStyles?.pickerGradientOverlay,\n },\n });\n"],"mappings":"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"}