react-native-timer-picker 1.2.7 → 1.2.9

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 (110) hide show
  1. package/dist/commonjs/components/Modal/Modal.styles.js +32 -0
  2. package/dist/commonjs/components/Modal/Modal.styles.js.map +1 -0
  3. package/dist/commonjs/components/Modal/index.js +108 -0
  4. package/dist/commonjs/components/Modal/index.js.map +1 -0
  5. package/dist/commonjs/components/TimerPicker/DurationScroll.js +210 -0
  6. package/dist/commonjs/components/TimerPicker/DurationScroll.js.map +1 -0
  7. package/dist/commonjs/components/TimerPicker/TimerPicker.styles.js +67 -0
  8. package/dist/commonjs/components/TimerPicker/TimerPicker.styles.js.map +1 -0
  9. package/dist/commonjs/components/TimerPicker/index.js +130 -0
  10. package/dist/commonjs/components/TimerPicker/index.js.map +1 -0
  11. package/dist/commonjs/components/TimerPickerModal.styles.js +69 -0
  12. package/dist/commonjs/components/TimerPickerModal.styles.js.map +1 -0
  13. package/dist/commonjs/components/index.js +156 -0
  14. package/dist/commonjs/components/index.js.map +1 -0
  15. package/dist/commonjs/index.js +21 -0
  16. package/dist/commonjs/index.js.map +1 -0
  17. package/dist/commonjs/tests/DurationScroll.test.js +56 -0
  18. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -0
  19. package/dist/commonjs/tests/Modal.test.js +40 -0
  20. package/dist/commonjs/tests/Modal.test.js.map +1 -0
  21. package/dist/commonjs/tests/TimerPicker.test.js +37 -0
  22. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -0
  23. package/dist/commonjs/tests/TimerPickerModal.test.js +73 -0
  24. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -0
  25. package/dist/commonjs/utils/colorToRgba.js +51 -0
  26. package/dist/commonjs/utils/colorToRgba.js.map +1 -0
  27. package/dist/commonjs/utils/generateNumbers.js +32 -0
  28. package/dist/commonjs/utils/generateNumbers.js.map +1 -0
  29. package/dist/commonjs/utils/getAdjustedLimit.js +32 -0
  30. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -0
  31. package/dist/commonjs/utils/getScrollIndex.js +17 -0
  32. package/dist/commonjs/utils/getScrollIndex.js.map +1 -0
  33. package/dist/commonjs/utils/padWithZero.js +15 -0
  34. package/dist/commonjs/utils/padWithZero.js.map +1 -0
  35. package/dist/module/components/Modal/Modal.styles.js +26 -0
  36. package/dist/module/components/Modal/Modal.styles.js.map +1 -0
  37. package/dist/module/components/Modal/index.js +100 -0
  38. package/dist/module/components/Modal/index.js.map +1 -0
  39. package/dist/module/components/TimerPicker/DurationScroll.js +202 -0
  40. package/dist/module/components/TimerPicker/DurationScroll.js.map +1 -0
  41. package/dist/module/components/TimerPicker/TimerPicker.styles.js +59 -0
  42. package/dist/module/components/TimerPicker/TimerPicker.styles.js.map +1 -0
  43. package/dist/module/components/TimerPicker/index.js +121 -0
  44. package/dist/module/components/TimerPicker/index.js.map +1 -0
  45. package/dist/module/components/TimerPickerModal.styles.js +61 -0
  46. package/dist/module/components/TimerPickerModal.styles.js.map +1 -0
  47. package/dist/module/components/index.js +147 -0
  48. package/dist/module/components/index.js.map +1 -0
  49. package/dist/module/index.js +3 -0
  50. package/dist/module/index.js.map +1 -0
  51. package/dist/module/tests/DurationScroll.test.js +53 -0
  52. package/dist/module/tests/DurationScroll.test.js.map +1 -0
  53. package/dist/module/tests/Modal.test.js +37 -0
  54. package/dist/module/tests/Modal.test.js.map +1 -0
  55. package/dist/module/tests/TimerPicker.test.js +34 -0
  56. package/dist/module/tests/TimerPicker.test.js.map +1 -0
  57. package/dist/module/tests/TimerPickerModal.test.js +70 -0
  58. package/dist/module/tests/TimerPickerModal.test.js.map +1 -0
  59. package/dist/module/utils/colorToRgba.js +44 -0
  60. package/dist/module/utils/colorToRgba.js.map +1 -0
  61. package/dist/module/utils/generateNumbers.js +25 -0
  62. package/dist/module/utils/generateNumbers.js.map +1 -0
  63. package/dist/module/utils/getAdjustedLimit.js +25 -0
  64. package/dist/module/utils/getAdjustedLimit.js.map +1 -0
  65. package/dist/module/utils/getScrollIndex.js +10 -0
  66. package/dist/module/utils/getScrollIndex.js.map +1 -0
  67. package/dist/module/utils/padWithZero.js +8 -0
  68. package/dist/module/utils/padWithZero.js.map +1 -0
  69. package/dist/typescript/index.d.ts +4 -0
  70. package/dist/{utils → typescript/utils}/colorToRgba.d.ts +1 -1
  71. package/dist/{utils → typescript/utils}/getScrollIndex.d.ts +1 -1
  72. package/package.json +29 -12
  73. package/{dist/components/Modal/Modal.styles.js → src/components/Modal/Modal.styles.ts} +4 -6
  74. package/src/components/Modal/index.tsx +134 -0
  75. package/src/components/TimerPicker/DurationScroll.tsx +337 -0
  76. package/src/components/TimerPicker/TimerPicker.styles.ts +87 -0
  77. package/src/components/TimerPicker/index.tsx +216 -0
  78. package/src/components/TimerPickerModal.styles.ts +87 -0
  79. package/src/components/index.tsx +243 -0
  80. package/src/index.ts +14 -0
  81. package/src/tests/DurationScroll.test.tsx +57 -0
  82. package/src/tests/Modal.test.tsx +34 -0
  83. package/src/tests/TimerPicker.test.tsx +27 -0
  84. package/src/tests/TimerPickerModal.test.tsx +70 -0
  85. package/{dist/utils/colorToRgba.js → src/utils/colorToRgba.ts} +18 -17
  86. package/src/utils/generateNumbers.ts +34 -0
  87. package/{dist/utils/getAdjustedLimit.js → src/utils/getAdjustedLimit.ts} +14 -7
  88. package/src/utils/getScrollIndex.ts +15 -0
  89. package/src/utils/padWithZero.ts +7 -0
  90. package/dist/components/Modal/index.js +0 -109
  91. package/dist/components/TimerPicker/DurationScroll.js +0 -211
  92. package/dist/components/TimerPicker/TimerPicker.styles.js +0 -41
  93. package/dist/components/TimerPicker/index.js +0 -81
  94. package/dist/components/TimerPickerModal.styles.js +0 -37
  95. package/dist/components/index.js +0 -118
  96. package/dist/index.d.ts +0 -4
  97. package/dist/index.js +0 -10
  98. package/dist/utils/generateNumbers.js +0 -30
  99. package/dist/utils/getScrollIndex.js +0 -10
  100. package/dist/utils/padWithZero.js +0 -12
  101. /package/dist/{components → typescript/components}/Modal/Modal.styles.d.ts +0 -0
  102. /package/dist/{components → typescript/components}/Modal/index.d.ts +0 -0
  103. /package/dist/{components → typescript/components}/TimerPicker/DurationScroll.d.ts +0 -0
  104. /package/dist/{components → typescript/components}/TimerPicker/TimerPicker.styles.d.ts +0 -0
  105. /package/dist/{components → typescript/components}/TimerPicker/index.d.ts +0 -0
  106. /package/dist/{components → typescript/components}/TimerPickerModal.styles.d.ts +0 -0
  107. /package/dist/{components → typescript/components}/index.d.ts +0 -0
  108. /package/dist/{utils → typescript/utils}/generateNumbers.d.ts +0 -0
  109. /package/dist/{utils → typescript/utils}/getAdjustedLimit.d.ts +0 -0
  110. /package/dist/{utils → typescript/utils}/padWithZero.d.ts +0 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.colorToRgba = void 0;
7
+ const colorToRgba = variables => {
8
+ // this function is required for expo-linear-gradient on iOS. To fade to transparent, we need
9
+ // to be able to add opacity to the background color. Supplying 'transparent' does not work
10
+ // because that is actually a transparent black (rgba(0, 0, 0, 1)), which results in dodgy rendering
11
+
12
+ const {
13
+ color,
14
+ opacity = 1
15
+ } = variables;
16
+ // Handle named colors
17
+ const namedColors = {
18
+ transparent: "rgba(0, 0, 0, 0)",
19
+ black: "rgba(0, 0, 0, 1)",
20
+ white: "rgba(255, 255, 255, 1)",
21
+ blue: "rgba(0, 0, 255, 1)",
22
+ green: "rgba(0, 128, 0, 1)",
23
+ gray: "rgba(128, 128, 128, 1)",
24
+ red: "rgba(255, 0, 0, 1)"
25
+ };
26
+ if (color in namedColors) {
27
+ return namedColors[color];
28
+ }
29
+
30
+ // Handle RGB format
31
+ if (color.startsWith("rgb(")) {
32
+ const rgbValues = color.replace("rgb(", "").replace(")", "").split(",").map(value => parseInt(value.trim(), 10));
33
+ const [r, g, b] = rgbValues;
34
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
35
+ }
36
+
37
+ // Handle hex format
38
+ if (color.startsWith("#")) {
39
+ let hexColor = color.slice(1);
40
+ if (hexColor.length === 3) {
41
+ hexColor = hexColor.split("").map(value => value + value).join("");
42
+ }
43
+ const r = parseInt(hexColor.slice(0, 2), 16);
44
+ const g = parseInt(hexColor.slice(2, 4), 16);
45
+ const b = parseInt(hexColor.slice(4, 6), 16);
46
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
47
+ }
48
+ return color; // Return unchanged if unable to parse
49
+ };
50
+ exports.colorToRgba = colorToRgba;
51
+ //# sourceMappingURL=colorToRgba.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["colorToRgba","variables","color","opacity","namedColors","transparent","black","white","blue","green","gray","red","startsWith","rgbValues","replace","split","map","value","parseInt","trim","r","g","b","hexColor","slice","length","join","exports"],"sources":["colorToRgba.ts"],"sourcesContent":["export const colorToRgba = (variables: { color: string; opacity?: number }) => {\n // this function is required for expo-linear-gradient on iOS. To fade to transparent, we need\n // to be able to add opacity to the background color. Supplying 'transparent' does not work\n // because that is actually a transparent black (rgba(0, 0, 0, 1)), which results in dodgy rendering\n\n const { color, opacity = 1 } = variables;\n // Handle named colors\n const namedColors: { [key: string]: string } = {\n transparent: \"rgba(0, 0, 0, 0)\",\n black: \"rgba(0, 0, 0, 1)\",\n white: \"rgba(255, 255, 255, 1)\",\n blue: \"rgba(0, 0, 255, 1)\",\n green: \"rgba(0, 128, 0, 1)\",\n gray: \"rgba(128, 128, 128, 1)\",\n red: \"rgba(255, 0, 0, 1)\",\n };\n\n if (color in namedColors) {\n return namedColors[color];\n }\n\n // Handle RGB format\n if (color.startsWith(\"rgb(\")) {\n const rgbValues = color\n .replace(\"rgb(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n .map((value) => parseInt(value.trim(), 10));\n const [r, g, b] = rgbValues;\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n // Handle hex format\n if (color.startsWith(\"#\")) {\n let hexColor = color.slice(1);\n if (hexColor.length === 3) {\n hexColor = hexColor\n .split(\"\")\n .map((value) => value + value)\n .join(\"\");\n }\n const r = parseInt(hexColor.slice(0, 2), 16);\n const g = parseInt(hexColor.slice(2, 4), 16);\n const b = parseInt(hexColor.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n\n return color; // Return unchanged if unable to parse\n};\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAIC,SAA8C,IAAK;EAC3E;EACA;EACA;;EAEA,MAAM;IAAEC,KAAK;IAAEC,OAAO,GAAG;EAAE,CAAC,GAAGF,SAAS;EACxC;EACA,MAAMG,WAAsC,GAAG;IAC3CC,WAAW,EAAE,kBAAkB;IAC/BC,KAAK,EAAE,kBAAkB;IACzBC,KAAK,EAAE,wBAAwB;IAC/BC,IAAI,EAAE,oBAAoB;IAC1BC,KAAK,EAAE,oBAAoB;IAC3BC,IAAI,EAAE,wBAAwB;IAC9BC,GAAG,EAAE;EACT,CAAC;EAED,IAAIT,KAAK,IAAIE,WAAW,EAAE;IACtB,OAAOA,WAAW,CAACF,KAAK,CAAC;EAC7B;;EAEA;EACA,IAAIA,KAAK,CAACU,UAAU,CAAC,MAAM,CAAC,EAAE;IAC1B,MAAMC,SAAS,GAAGX,KAAK,CAClBY,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CACnBA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAChBC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,KAAK,IAAKC,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAGT,SAAS;IAC3B,OAAQ,QAAOO,CAAE,KAAIC,CAAE,KAAIC,CAAE,KAAInB,OAAQ,GAAE;EAC/C;;EAEA;EACA,IAAID,KAAK,CAACU,UAAU,CAAC,GAAG,CAAC,EAAE;IACvB,IAAIW,QAAQ,GAAGrB,KAAK,CAACsB,KAAK,CAAC,CAAC,CAAC;IAC7B,IAAID,QAAQ,CAACE,MAAM,KAAK,CAAC,EAAE;MACvBF,QAAQ,GAAGA,QAAQ,CACdR,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,KAAK,IAAKA,KAAK,GAAGA,KAAK,CAAC,CAC7BS,IAAI,CAAC,EAAE,CAAC;IACjB;IACA,MAAMN,CAAC,GAAGF,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMH,CAAC,GAAGH,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAMF,CAAC,GAAGJ,QAAQ,CAACK,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5C,OAAQ,QAAOJ,CAAE,KAAIC,CAAE,KAAIC,CAAE,KAAInB,OAAQ,GAAE;EAC/C;EAEA,OAAOD,KAAK,CAAC,CAAC;AAClB,CAAC;AAACyB,OAAA,CAAA3B,WAAA,GAAAA,WAAA"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateNumbers = void 0;
7
+ var _padWithZero = require("./padWithZero");
8
+ const generateNumbers = (numberOfItems, options) => {
9
+ if (numberOfItems <= 0) {
10
+ return [];
11
+ }
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
+ }
21
+ }
22
+ if ((options.repeatNTimes ?? 1) > 1) {
23
+ numbers = Array(options.repeatNTimes).fill(numbers).flat();
24
+ }
25
+ if (options.disableInfiniteScroll) {
26
+ numbers.push(...Array(options.padWithNItems).fill(""));
27
+ numbers.unshift(...Array(options.padWithNItems).fill(""));
28
+ }
29
+ return numbers;
30
+ };
31
+ exports.generateNumbers = generateNumbers;
32
+ //# sourceMappingURL=generateNumbers.js.map
@@ -0,0 +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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAdjustedLimit = void 0;
7
+ const getAdjustedLimit = (limit, numberOfItems) => {
8
+ if (!limit || !limit.max && !limit.min) {
9
+ return {
10
+ max: numberOfItems,
11
+ min: 0
12
+ };
13
+ }
14
+
15
+ // guard against limits that are out of bounds
16
+ const adjustedMaxLimit = limit.max ? Math.min(limit.max, numberOfItems) : numberOfItems;
17
+ const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;
18
+
19
+ // guard against invalid limits
20
+ if (adjustedMaxLimit < adjustedMinLimit) {
21
+ return {
22
+ max: numberOfItems,
23
+ min: 0
24
+ };
25
+ }
26
+ return {
27
+ max: adjustedMaxLimit,
28
+ min: adjustedMinLimit
29
+ };
30
+ };
31
+ exports.getAdjustedLimit = getAdjustedLimit;
32
+ //# sourceMappingURL=getAdjustedLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAdjustedLimit","limit","numberOfItems","max","min","adjustedMaxLimit","Math","adjustedMinLimit","exports"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { LimitType } from \"../components/TimerPicker/DurationScroll\";\n\nexport const getAdjustedLimit = (\n limit: LimitType | undefined,\n numberOfItems: number\n): {\n max: number;\n min: number;\n} => {\n if (!limit || (!limit.max && !limit.min)) {\n return {\n max: numberOfItems,\n min: 0,\n };\n }\n\n // guard against limits that are out of bounds\n const adjustedMaxLimit = limit.max\n ? Math.min(limit.max, numberOfItems)\n : numberOfItems;\n const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;\n\n // guard against invalid limits\n if (adjustedMaxLimit < adjustedMinLimit) {\n return {\n max: numberOfItems,\n min: 0,\n };\n }\n\n return {\n max: adjustedMaxLimit,\n min: adjustedMinLimit,\n };\n};\n"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,GAAGA,CAC5BC,KAA4B,EAC5BC,aAAqB,KAIpB;EACD,IAAI,CAACD,KAAK,IAAK,CAACA,KAAK,CAACE,GAAG,IAAI,CAACF,KAAK,CAACG,GAAI,EAAE;IACtC,OAAO;MACHD,GAAG,EAAED,aAAa;MAClBE,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGJ,KAAK,CAACE,GAAG,GAC5BG,IAAI,CAACF,GAAG,CAACH,KAAK,CAACE,GAAG,EAAED,aAAa,CAAC,GAClCA,aAAa;EACnB,MAAMK,gBAAgB,GAAGN,KAAK,CAACG,GAAG,GAAGE,IAAI,CAACH,GAAG,CAACF,KAAK,CAACG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE/D;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHJ,GAAG,EAAED,aAAa;MAClBE,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHD,GAAG,EAAEE,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC;AAACC,OAAA,CAAAR,gBAAA,GAAAA,gBAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getScrollIndex = void 0;
7
+ const getScrollIndex = variables => {
8
+ const {
9
+ value,
10
+ numberOfItems,
11
+ padWithNItems,
12
+ disableInfiniteScroll
13
+ } = variables;
14
+ return (value + numberOfItems) % (numberOfItems * 3) + (disableInfiniteScroll ? padWithNItems : 0) - (padWithNItems - 1);
15
+ };
16
+ exports.getScrollIndex = getScrollIndex;
17
+ //# sourceMappingURL=getScrollIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getScrollIndex","variables","value","numberOfItems","padWithNItems","disableInfiniteScroll","exports"],"sources":["getScrollIndex.ts"],"sourcesContent":["export const getScrollIndex = (variables: {\n value: number;\n numberOfItems: number;\n padWithNItems: number;\n disableInfiniteScroll?: boolean;\n}) => {\n const { value, numberOfItems, padWithNItems, disableInfiniteScroll } =\n variables;\n\n return (\n ((value + numberOfItems) % (numberOfItems * 3)) +\n (disableInfiniteScroll ? padWithNItems : 0) -\n (padWithNItems - 1)\n );\n};\n"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAIC,SAK9B,IAAK;EACF,MAAM;IAAEC,KAAK;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAsB,CAAC,GAChEJ,SAAS;EAEb,OACK,CAACC,KAAK,GAAGC,aAAa,KAAKA,aAAa,GAAG,CAAC,CAAC,IAC7CE,qBAAqB,GAAGD,aAAa,GAAG,CAAC,CAAC,IAC1CA,aAAa,GAAG,CAAC,CAAC;AAE3B,CAAC;AAACE,OAAA,CAAAN,cAAA,GAAAA,cAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.padWithZero = void 0;
7
+ const padWithZero = value => {
8
+ if (value < 10) {
9
+ return "0" + value;
10
+ } else {
11
+ return String(value);
12
+ }
13
+ };
14
+ exports.padWithZero = padWithZero;
15
+ //# sourceMappingURL=padWithZero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["padWithZero","value","String","exports"],"sources":["padWithZero.ts"],"sourcesContent":["export const padWithZero = (value: number): string => {\n if (value < 10) {\n return \"0\" + value;\n } else {\n return String(value);\n }\n};"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAIC,KAAa,IAAa;EAClD,IAAIA,KAAK,GAAG,EAAE,EAAE;IACZ,OAAO,GAAG,GAAGA,KAAK;EACtB,CAAC,MAAM;IACH,OAAOC,MAAM,CAACD,KAAK,CAAC;EACxB;AACJ,CAAC;AAACE,OAAA,CAAAH,WAAA,GAAAA,WAAA"}
@@ -0,0 +1,26 @@
1
+ import { StyleSheet } from "react-native";
2
+ export const styles = StyleSheet.create({
3
+ container: {
4
+ position: "absolute",
5
+ top: 0,
6
+ left: 0,
7
+ right: 0,
8
+ bottom: 0
9
+ },
10
+ backdrop: {
11
+ position: "absolute",
12
+ top: 0,
13
+ bottom: 0,
14
+ left: 0,
15
+ right: 0,
16
+ backgroundColor: "black",
17
+ opacity: 0
18
+ },
19
+ content: {
20
+ flex: 1,
21
+ justifyContent: "center",
22
+ alignItems: "center",
23
+ zIndex: 1
24
+ }
25
+ });
26
+ //# sourceMappingURL=Modal.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","styles","create","container","position","top","left","right","bottom","backdrop","backgroundColor","opacity","content","flex","justifyContent","alignItems","zIndex"],"sources":["Modal.styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nexport const styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n backdrop: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: \"black\",\n opacity: 0,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n },\n});"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,MAAM,GAAGD,UAAU,CAACE,MAAM,CAAC;EACpCC,SAAS,EAAE;IACPC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACZ,CAAC;EACDC,QAAQ,EAAE;IACNL,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNG,MAAM,EAAE,CAAC;IACTF,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRG,eAAe,EAAE,OAAO;IACxBC,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE;EACZ;AACJ,CAAC,CAAC"}
@@ -0,0 +1,100 @@
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
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ import React, { useCallback, useEffect, useRef } from "react";
4
+ import { Animated, Easing, Modal as ReactNativeModal, TouchableWithoutFeedback, useWindowDimensions } from "react-native";
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;
19
+ const {
20
+ width: screenWidth,
21
+ height: screenHeight
22
+ } = useWindowDimensions();
23
+ const isMounted = useRef(false);
24
+ const animatedOpacity = useRef(new Animated.Value(0));
25
+ useEffect(() => {
26
+ isMounted.current = true;
27
+ if (isVisible) {
28
+ show();
29
+ }
30
+ return () => {
31
+ isMounted.current = false;
32
+ };
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ }, []);
35
+ const backdropAnimatedStyle = {
36
+ opacity: animatedOpacity.current.interpolate({
37
+ inputRange: [0, 1],
38
+ outputRange: [0, overlayOpacity]
39
+ })
40
+ };
41
+ const contentAnimatedStyle = {
42
+ transform: [{
43
+ translateY: animatedOpacity.current.interpolate({
44
+ inputRange: [0, 1],
45
+ outputRange: [screenHeight, 0],
46
+ extrapolate: "clamp"
47
+ })
48
+ }]
49
+ };
50
+ const show = useCallback(() => {
51
+ Animated.timing(animatedOpacity.current, {
52
+ easing: Easing.inOut(Easing.quad),
53
+ // Using native driver in the modal makes the content flash
54
+ useNativeDriver: true,
55
+ duration: animationDuration,
56
+ toValue: 1
57
+ }).start();
58
+ }, [animationDuration]);
59
+ const hide = useCallback(() => {
60
+ Animated.timing(animatedOpacity.current, {
61
+ easing: Easing.inOut(Easing.quad),
62
+ // Using native driver in the modal makes the content flash
63
+ useNativeDriver: true,
64
+ duration: animationDuration,
65
+ toValue: 0
66
+ }).start(() => {
67
+ if (isMounted.current) {
68
+ onHide === null || onHide === void 0 || onHide();
69
+ }
70
+ });
71
+ }, [animationDuration, onHide]);
72
+ useEffect(() => {
73
+ if (isVisible) {
74
+ show();
75
+ } else {
76
+ hide();
77
+ }
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ }, [isVisible]);
80
+ return /*#__PURE__*/React.createElement(ReactNativeModal, _extends({
81
+ transparent: true,
82
+ animationType: "fade",
83
+ visible: isVisible
84
+ }, modalProps, {
85
+ testID: testID ?? "modal"
86
+ }), /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
87
+ onPress: onOverlayPress,
88
+ testID: "modal-backdrop"
89
+ }, /*#__PURE__*/React.createElement(Animated.View, {
90
+ style: [styles.backdrop, backdropAnimatedStyle, {
91
+ width: screenWidth,
92
+ height: screenHeight
93
+ }, overlayStyle]
94
+ })), /*#__PURE__*/React.createElement(Animated.View, {
95
+ style: [styles.content, contentAnimatedStyle, contentStyle],
96
+ pointerEvents: "box-none"
97
+ }, children));
98
+ };
99
+ export default /*#__PURE__*/React.memo(Modal);
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,202 @@
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
+ import React, { useRef, useCallback, forwardRef, useImperativeHandle } from "react";
3
+ import { View, Text, FlatList } from "react-native";
4
+ import { generateNumbers } from "../../utils/generateNumbers";
5
+ import { colorToRgba } from "../../utils/colorToRgba";
6
+ import { getAdjustedLimit } from "../../utils/getAdjustedLimit";
7
+ import { getScrollIndex } from "../../utils/getScrollIndex";
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
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,
30
+ repeatNTimes: 3,
31
+ disableInfiniteScroll,
32
+ padWithNItems: padWithNItems
33
+ });
34
+ const numberOfItemsToShow = 1 + padWithNItems * 2;
35
+ const adjustedLimited = getAdjustedLimit(limit, numberOfItems);
36
+ const initialScrollIndex = getScrollIndex({
37
+ value: initialValue,
38
+ numberOfItems,
39
+ padWithNItems,
40
+ disableInfiniteScroll
41
+ });
42
+ useImperativeHandle(ref, () => ({
43
+ reset: options => {
44
+ var _flatListRef$current;
45
+ (_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 || _flatListRef$current.scrollToIndex({
46
+ animated: (options === null || options === void 0 ? void 0 : options.animated) ?? false,
47
+ index: initialScrollIndex
48
+ });
49
+ },
50
+ setValue: (value, options) => {
51
+ var _flatListRef$current2;
52
+ (_flatListRef$current2 = flatListRef.current) === null || _flatListRef$current2 === void 0 || _flatListRef$current2.scrollToIndex({
53
+ animated: (options === null || options === void 0 ? void 0 : options.animated) ?? false,
54
+ index: getScrollIndex({
55
+ value: value,
56
+ numberOfItems,
57
+ padWithNItems,
58
+ disableInfiniteScroll
59
+ })
60
+ });
61
+ }
62
+ }));
63
+ const renderItem = useCallback(_ref2 => {
64
+ let {
65
+ item
66
+ } = _ref2;
67
+ const intItem = parseInt(item);
68
+ return /*#__PURE__*/React.createElement(View, {
69
+ key: item,
70
+ style: styles.pickerItemContainer,
71
+ testID: "picker-item"
72
+ }, /*#__PURE__*/React.createElement(Text, {
73
+ style: [styles.pickerItem, intItem > adjustedLimited.max || intItem < adjustedLimited.min ? styles.disabledPickerItem : {}]
74
+ }, item));
75
+ }, [adjustedLimited.max, adjustedLimited.min, styles.disabledPickerItem, styles.pickerItem, styles.pickerItemContainer]);
76
+ const onMomentumScrollEnd = useCallback(e => {
77
+ const newIndex = Math.round(e.nativeEvent.contentOffset.y / styles.pickerItemContainer.height);
78
+ let newDuration = (disableInfiniteScroll ? newIndex : newIndex + padWithNItems) % (numberOfItems + 1);
79
+
80
+ // check limits
81
+ if (newDuration > adjustedLimited.max) {
82
+ var _flatListRef$current3;
83
+ const targetScrollIndex = newIndex - (newDuration - adjustedLimited.max);
84
+ (_flatListRef$current3 = flatListRef.current) === null || _flatListRef$current3 === void 0 || _flatListRef$current3.scrollToIndex({
85
+ animated: true,
86
+ index:
87
+ // guard against scrolling beyond end of list
88
+ targetScrollIndex >= 0 ? targetScrollIndex : adjustedLimited.max - 1
89
+ }); // scroll down to max
90
+ newDuration = adjustedLimited.max;
91
+ } else if (newDuration < adjustedLimited.min) {
92
+ var _flatListRef$current4;
93
+ const targetScrollIndex = newIndex + (adjustedLimited.min - newDuration);
94
+ (_flatListRef$current4 = flatListRef.current) === null || _flatListRef$current4 === void 0 || _flatListRef$current4.scrollToIndex({
95
+ animated: true,
96
+ index:
97
+ // guard against scrolling beyond end of list
98
+ targetScrollIndex <= data.length - 1 ? targetScrollIndex : adjustedLimited.min
99
+ }); // scroll up to min
100
+ newDuration = adjustedLimited.min;
101
+ }
102
+ onDurationChange(newDuration);
103
+ }, [adjustedLimited.max, adjustedLimited.min, data.length, disableInfiniteScroll, numberOfItems, onDurationChange, padWithNItems, styles.pickerItemContainer.height]);
104
+ const onViewableItemsChanged = useCallback(_ref3 => {
105
+ var _viewableItems$, _viewableItems$2;
106
+ let {
107
+ viewableItems
108
+ } = _ref3;
109
+ if ((_viewableItems$ = viewableItems[0]) !== null && _viewableItems$ !== void 0 && _viewableItems$.index && viewableItems[0].index < numberOfItems * 0.5) {
110
+ var _flatListRef$current5;
111
+ (_flatListRef$current5 = flatListRef.current) === null || _flatListRef$current5 === void 0 || _flatListRef$current5.scrollToIndex({
112
+ animated: false,
113
+ index: viewableItems[0].index + numberOfItems
114
+ });
115
+ } else if ((_viewableItems$2 = viewableItems[0]) !== null && _viewableItems$2 !== void 0 && _viewableItems$2.index && viewableItems[0].index >= numberOfItems * 2.5) {
116
+ var _flatListRef$current6;
117
+ (_flatListRef$current6 = flatListRef.current) === null || _flatListRef$current6 === void 0 || _flatListRef$current6.scrollToIndex({
118
+ animated: false,
119
+ index: viewableItems[0].index - numberOfItems
120
+ });
121
+ }
122
+ }, [numberOfItems]);
123
+ const getItemLayout = useCallback((_, index) => ({
124
+ length: styles.pickerItemContainer.height,
125
+ offset: styles.pickerItemContainer.height * index,
126
+ index
127
+ }), [styles.pickerItemContainer.height]);
128
+ const viewabilityConfigCallbackPairs = useRef([{
129
+ viewabilityConfig: {
130
+ viewAreaCoveragePercentThreshold: 25
131
+ },
132
+ onViewableItemsChanged: onViewableItemsChanged
133
+ }]);
134
+ return /*#__PURE__*/React.createElement(View, {
135
+ testID: testID,
136
+ style: {
137
+ height: styles.pickerItemContainer.height * numberOfItemsToShow,
138
+ overflow: "hidden"
139
+ }
140
+ }, /*#__PURE__*/React.createElement(FlatList, {
141
+ ref: flatListRef,
142
+ data: data,
143
+ getItemLayout: getItemLayout,
144
+ initialScrollIndex: initialScrollIndex,
145
+ windowSize: numberOfItemsToShow,
146
+ renderItem: renderItem,
147
+ keyExtractor: KEY_EXTRACTOR,
148
+ showsVerticalScrollIndicator: false,
149
+ decelerationRate: 0.9,
150
+ scrollEventThrottle: 16,
151
+ snapToAlignment: "start"
152
+ // used in place of snapToOffset due to bug on Android
153
+ ,
154
+ snapToOffsets: [...Array(data.length)].map((_, i) => i * styles.pickerItemContainer.height),
155
+ viewabilityConfigCallbackPairs: !disableInfiniteScroll ? viewabilityConfigCallbackPairs === null || viewabilityConfigCallbackPairs === void 0 ? void 0 : viewabilityConfigCallbackPairs.current : undefined,
156
+ onMomentumScrollEnd: onMomentumScrollEnd,
157
+ testID: "duration-scroll-flatlist"
158
+ }), /*#__PURE__*/React.createElement(View, {
159
+ style: styles.pickerLabelContainer,
160
+ pointerEvents: "none"
161
+ }, typeof label === "string" ? /*#__PURE__*/React.createElement(Text, {
162
+ style: styles.pickerLabel
163
+ }, label) : label ?? null), LinearGradient ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearGradient, _extends({
164
+ colors: [styles.pickerContainer.backgroundColor ?? "white", colorToRgba({
165
+ color: styles.pickerContainer.backgroundColor ?? "white",
166
+ opacity: 0
167
+ })],
168
+ start: {
169
+ x: 1,
170
+ y: 0.3
171
+ },
172
+ end: {
173
+ x: 1,
174
+ y: 1
175
+ },
176
+ pointerEvents: "none"
177
+ }, pickerGradientOverlayProps, topPickerGradientOverlayProps, {
178
+ style: [styles.pickerGradientOverlay, {
179
+ top: 0
180
+ }]
181
+ })), /*#__PURE__*/React.createElement(LinearGradient, _extends({
182
+ colors: [colorToRgba({
183
+ color: styles.pickerContainer.backgroundColor ?? "white",
184
+ opacity: 0
185
+ }), styles.pickerContainer.backgroundColor ?? "white"],
186
+ start: {
187
+ x: 1,
188
+ y: 0
189
+ },
190
+ end: {
191
+ x: 1,
192
+ y: 0.7
193
+ },
194
+ pointerEvents: "none"
195
+ }, pickerGradientOverlayProps, bottomPickerGradientOverlayProps, {
196
+ style: [styles.pickerGradientOverlay, {
197
+ bottom: -1
198
+ }]
199
+ }))) : null);
200
+ });
201
+ export default /*#__PURE__*/React.memo(DurationScroll);
202
+ //# sourceMappingURL=DurationScroll.js.map
@@ -0,0 +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":"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"}
@@ -0,0 +1,59 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { StyleSheet } from "react-native";
3
+ const DARK_MODE_BACKGROUND_COLOR = "#232323";
4
+ const DARK_MODE_TEXT_COLOR = "#E9E9E9";
5
+ const LIGHT_MODE_BACKGROUND_COLOR = "#F1F1F1";
6
+ const LIGHT_MODE_TEXT_COLOR = "#1B1B1B";
7
+ export const generateStyles = (customStyles, options) => {
8
+ var _customStyles$pickerI, _customStyles$pickerI2, _customStyles$pickerI3;
9
+ return StyleSheet.create({
10
+ pickerContainer: {
11
+ flexDirection: "row",
12
+ marginRight: "8%",
13
+ backgroundColor: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.backgroundColor) ?? ((customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_BACKGROUND_COLOR : LIGHT_MODE_BACKGROUND_COLOR),
14
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerContainer)
15
+ },
16
+ pickerLabelContainer: {
17
+ position: "absolute",
18
+ right: 4,
19
+ top: 0,
20
+ bottom: 0,
21
+ justifyContent: "center",
22
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabelContainer)
23
+ },
24
+ pickerLabel: {
25
+ fontSize: 18,
26
+ 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
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
29
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
30
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerLabel)
31
+ },
32
+ pickerItemContainer: {
33
+ height: 50,
34
+ justifyContent: "center",
35
+ alignItems: "center",
36
+ width: ((customStyles === null || customStyles === void 0 || (_customStyles$pickerI2 = customStyles.pickerItem) === null || _customStyles$pickerI2 === void 0 ? void 0 : _customStyles$pickerI2.fontSize) ?? 25) * 3.6,
37
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItemContainer)
38
+ },
39
+ pickerItem: {
40
+ textAlignVertical: "center",
41
+ fontSize: 25,
42
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
43
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
44
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerItem)
45
+ },
46
+ disabledPickerItem: {
47
+ opacity: 0.2,
48
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.disabledPickerItem)
49
+ },
50
+ pickerGradientOverlay: {
51
+ position: "absolute",
52
+ left: 0,
53
+ 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,
55
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerGradientOverlay)
56
+ }
57
+ });
58
+ };
59
+ //# sourceMappingURL=TimerPicker.styles.js.map