react-native-timer-picker 1.2.8 → 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 +30 -10
  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 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_DurationScroll","_interopRequireDefault","_TimerPicker","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","TimerPicker","forwardRef","_ref","ref","onDurationChange","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","LinearGradient","pickerContainerProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","checkedPadWithNItems","Math","round","useMemo","generateStyles","selectedHours","setSelectedHours","useState","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","useEffect","hours","minutes","seconds","hoursDurationScrollRef","useRef","minutesDurationScrollRef","secondsDurationScrollRef","useImperativeHandle","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","createElement","View","style","pickerContainer","testID","numberOfItems","label","initialValue","limit","padNumbersWithZero","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { View } from \"react-native\";\n\nimport DurationScroll, { DurationScrollRef, LimitType } from \"./DurationScroll\";\n\nimport { generateStyles, CustomTimerPickerStyles } from \"./TimerPicker.styles\";\nimport { LinearGradientProps } from \"./DurationScroll\";\n\nexport interface TimerPickerRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n}\n\nexport interface TimerPickerProps {\n onDurationChange?: (duration: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n initialHours?: number;\n initialMinutes?: number;\n initialSeconds?: number;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourLimit?: LimitType;\n minuteLimit?: LimitType;\n secondLimit?: LimitType;\n hourLabel?: string | React.ReactElement;\n minuteLabel?: string | React.ReactElement;\n secondLabel?: string | React.ReactElement;\n padWithNItems?: number;\n disableInfiniteScroll?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n topPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n bottomPickerGradientOverlayProps?: Partial<LinearGradientProps>;\n styles?: CustomTimerPickerStyles;\n}\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (\n {\n onDurationChange,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel = \"h\",\n minuteLabel = \"m\",\n secondLabel = \"s\",\n padWithNItems = 1,\n disableInfiniteScroll = false,\n LinearGradient,\n pickerContainerProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(initialHours);\n const [selectedMinutes, setSelectedMinutes] = useState(initialMinutes);\n const [selectedSeconds, setSelectedSeconds] = useState(initialSeconds);\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(initialHours);\n setSelectedMinutes(initialMinutes);\n setSelectedSeconds(initialSeconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n numberOfItems={23}\n label={hourLabel}\n initialValue={initialHours}\n onDurationChange={setSelectedHours}\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={hourLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-hour\"\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n numberOfItems={59}\n label={minuteLabel}\n initialValue={initialMinutes}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={minuteLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-minute\"\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n numberOfItems={59}\n label={secondLabel}\n initialValue={initialSeconds}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero\n pickerGradientOverlayProps={pickerGradientOverlayProps}\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n disableInfiniteScroll={disableInfiniteScroll}\n padWithNItems={checkedPadWithNItems}\n limit={secondLimit}\n LinearGradient={LinearGradient}\n styles={styles}\n testID=\"duration-scroll-second\"\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateStyles = void 0;
7
+ var _reactNative = require("react-native");
8
+ /* eslint-disable @typescript-eslint/no-explicit-any */
9
+
10
+ const DARK_MODE_BACKGROUND_COLOR = "#232323";
11
+ const DARK_MODE_TEXT_COLOR = "#E9E9E9";
12
+ const LIGHT_MODE_BACKGROUND_COLOR = "#F1F1F1";
13
+ const LIGHT_MODE_TEXT_COLOR = "#1B1B1B";
14
+ const generateStyles = customStyles => _reactNative.StyleSheet.create({
15
+ container: {
16
+ justifyContent: "center",
17
+ alignItems: "center",
18
+ overflow: "hidden",
19
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.container)
20
+ },
21
+ contentContainer: {
22
+ 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,
23
+ justifyContent: "center",
24
+ alignItems: "center",
25
+ borderRadius: 20,
26
+ padding: 20,
27
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.contentContainer)
28
+ },
29
+ buttonContainer: {
30
+ flexDirection: "row",
31
+ marginTop: 25,
32
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.buttonContainer)
33
+ },
34
+ button: {
35
+ marginHorizontal: 12,
36
+ paddingVertical: 10,
37
+ paddingHorizontal: 20,
38
+ borderWidth: 1,
39
+ borderRadius: 10,
40
+ fontSize: 16,
41
+ overflow: "hidden",
42
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
43
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.button)
44
+ },
45
+ cancelButton: {
46
+ borderColor: "gray",
47
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : "gray",
48
+ backgroundColor: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? "gray" : undefined,
49
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
50
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.cancelButton)
51
+ },
52
+ confirmButton: {
53
+ borderColor: "green",
54
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : "green",
55
+ backgroundColor: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? "green" : undefined,
56
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
57
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.confirmButton)
58
+ },
59
+ modalTitle: {
60
+ fontSize: 24,
61
+ fontWeight: "bold",
62
+ marginBottom: 15,
63
+ color: (customStyles === null || customStyles === void 0 ? void 0 : customStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
64
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.text),
65
+ ...(customStyles === null || customStyles === void 0 ? void 0 : customStyles.modalTitle)
66
+ }
67
+ });
68
+ exports.generateStyles = generateStyles;
69
+ //# sourceMappingURL=TimerPickerModal.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","StyleSheet","create","container","justifyContent","alignItems","overflow","contentContainer","backgroundColor","theme","borderRadius","padding","buttonContainer","flexDirection","marginTop","button","marginHorizontal","paddingVertical","paddingHorizontal","borderWidth","fontSize","text","cancelButton","borderColor","color","undefined","confirmButton","modalTitle","fontWeight","marginBottom","exports"],"sources":["TimerPickerModal.styles.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { StyleSheet } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"./TimerPicker/TimerPicker.styles\";\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n container?: any;\n contentContainer?: any;\n buttonContainer?: any;\n button?: any;\n cancelButton?: any;\n confirmButton?: any;\n modalTitle?: 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: CustomTimerPickerModalStyles | undefined\n) =>\n StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n ...customStyles?.container,\n },\n contentContainer: {\n backgroundColor:\n customStyles?.backgroundColor ?? customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR,\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: 20,\n padding: 20,\n ...customStyles?.contentContainer,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginTop: 25,\n ...customStyles?.buttonContainer,\n },\n button: {\n marginHorizontal: 12,\n paddingVertical: 10,\n paddingHorizontal: 20,\n borderWidth: 1,\n borderRadius: 10,\n fontSize: 16,\n overflow: \"hidden\",\n ...customStyles?.text,\n ...customStyles?.button,\n },\n cancelButton: {\n borderColor: \"gray\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"gray\" : undefined,\n ...customStyles?.text,\n ...customStyles?.cancelButton,\n },\n confirmButton: {\n borderColor: \"green\",\n color:\n customStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n backgroundColor:\n customStyles?.theme === \"dark\" ? \"green\" : undefined,\n ...customStyles?.text,\n ...customStyles?.confirmButton,\n },\n modalTitle: {\n fontSize: 24,\n fontWeight: \"bold\",\n marginBottom: 15,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.modalTitle,\n },\n });\n"],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _TimerPicker = _interopRequireDefault(require("./TimerPicker"));
10
+ var _Modal = _interopRequireDefault(require("./Modal"));
11
+ var _TimerPickerModal = require("./TimerPickerModal.styles");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ 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); }
16
+ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
17
+ let {
18
+ visible,
19
+ setIsVisible,
20
+ onConfirm,
21
+ onCancel,
22
+ onDurationChange,
23
+ closeOnOverlayPress,
24
+ initialHours = 0,
25
+ initialMinutes = 0,
26
+ initialSeconds = 0,
27
+ hideHours = false,
28
+ hideMinutes = false,
29
+ hideSeconds = false,
30
+ hourLimit,
31
+ minuteLimit,
32
+ secondLimit,
33
+ hourLabel = "h",
34
+ minuteLabel = "m",
35
+ secondLabel = "s",
36
+ padWithNItems = 1,
37
+ disableInfiniteScroll = false,
38
+ hideCancelButton = false,
39
+ confirmButtonText = "Confirm",
40
+ cancelButtonText = "Cancel",
41
+ modalTitle,
42
+ LinearGradient,
43
+ modalProps,
44
+ containerProps,
45
+ contentContainerProps,
46
+ pickerContainerProps,
47
+ buttonContainerProps,
48
+ buttonTouchableOpacityProps,
49
+ modalTitleProps,
50
+ pickerGradientOverlayProps,
51
+ topPickerGradientOverlayProps,
52
+ bottomPickerGradientOverlayProps,
53
+ styles: customStyles
54
+ } = _ref;
55
+ const styles = (0, _TimerPickerModal.generateStyles)(customStyles);
56
+ const [selectedDuration, setSelectedDuration] = (0, _react.useState)({
57
+ hours: initialHours,
58
+ minutes: initialMinutes,
59
+ seconds: initialSeconds
60
+ });
61
+ const [confirmedDuration, setConfirmedDuration] = (0, _react.useState)({
62
+ hours: initialHours,
63
+ minutes: initialMinutes,
64
+ seconds: initialSeconds
65
+ });
66
+ const hideModal = () => {
67
+ setSelectedDuration({
68
+ hours: confirmedDuration.hours,
69
+ minutes: confirmedDuration.minutes,
70
+ seconds: confirmedDuration.seconds
71
+ });
72
+ setIsVisible(false);
73
+ };
74
+ const confirm = () => {
75
+ setConfirmedDuration(selectedDuration);
76
+ onConfirm(selectedDuration);
77
+ };
78
+ const cancel = () => {
79
+ setIsVisible(false);
80
+ setSelectedDuration(confirmedDuration);
81
+ onCancel === null || onCancel === void 0 || onCancel();
82
+ };
83
+
84
+ // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker
85
+ const durationChange = (0, _react.useCallback)(duration => {
86
+ setSelectedDuration(duration);
87
+ onDurationChange === null || onDurationChange === void 0 || onDurationChange(duration);
88
+ }, [onDurationChange]);
89
+ const timerPickerRef = (0, _react.useRef)(null);
90
+ (0, _react.useImperativeHandle)(ref, () => ({
91
+ reset: options => {
92
+ var _timerPickerRef$curre;
93
+ const initialDuration = {
94
+ hours: initialHours,
95
+ minutes: initialMinutes,
96
+ seconds: initialSeconds
97
+ };
98
+ setSelectedDuration(initialDuration);
99
+ setConfirmedDuration(initialDuration);
100
+ (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
101
+ },
102
+ setValue: (value, options) => {
103
+ var _timerPickerRef$curre2;
104
+ setSelectedDuration(value);
105
+ setConfirmedDuration(value);
106
+ (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 || _timerPickerRef$curre2.setValue(value, options);
107
+ }
108
+ }));
109
+ return /*#__PURE__*/_react.default.createElement(_Modal.default, _extends({
110
+ isVisible: visible,
111
+ onOverlayPress: closeOnOverlayPress ? hideModal : undefined
112
+ }, modalProps, {
113
+ testID: "timer-picker-modal"
114
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({}, containerProps, {
115
+ style: styles.container
116
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({}, contentContainerProps, {
117
+ style: styles.contentContainer
118
+ }), modalTitle ? /*#__PURE__*/_react.default.createElement(_reactNative.Text, _extends({}, modalTitleProps, {
119
+ style: styles.modalTitle
120
+ }), modalTitle) : null, /*#__PURE__*/_react.default.createElement(_TimerPicker.default, {
121
+ ref: timerPickerRef,
122
+ onDurationChange: durationChange,
123
+ initialHours: confirmedDuration.hours,
124
+ initialMinutes: confirmedDuration.minutes,
125
+ initialSeconds: confirmedDuration.seconds,
126
+ hideHours: hideHours,
127
+ hideMinutes: hideMinutes,
128
+ hideSeconds: hideSeconds,
129
+ hourLimit: hourLimit,
130
+ minuteLimit: minuteLimit,
131
+ secondLimit: secondLimit,
132
+ hourLabel: hourLabel,
133
+ minuteLabel: minuteLabel,
134
+ secondLabel: secondLabel,
135
+ padWithNItems: padWithNItems,
136
+ disableInfiniteScroll: disableInfiniteScroll,
137
+ LinearGradient: LinearGradient,
138
+ pickerContainerProps: pickerContainerProps,
139
+ pickerGradientOverlayProps: pickerGradientOverlayProps,
140
+ topPickerGradientOverlayProps: topPickerGradientOverlayProps,
141
+ bottomPickerGradientOverlayProps: bottomPickerGradientOverlayProps,
142
+ styles: customStyles
143
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({}, buttonContainerProps, {
144
+ style: styles.buttonContainer
145
+ }), !hideCancelButton ? /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, _extends({
146
+ onPress: cancel
147
+ }, buttonTouchableOpacityProps), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
148
+ style: [styles.button, styles.cancelButton]
149
+ }, cancelButtonText)) : null, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, _extends({
150
+ onPress: confirm
151
+ }, buttonTouchableOpacityProps), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
152
+ style: [styles.button, styles.confirmButton]
153
+ }, confirmButtonText))))));
154
+ });
155
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(TimerPickerModal);
156
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TimerPicker","_interopRequireDefault","_Modal","_TimerPickerModal","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","TimerPickerModal","forwardRef","_ref","ref","visible","setIsVisible","onConfirm","onCancel","onDurationChange","closeOnOverlayPress","initialHours","initialMinutes","initialSeconds","hideHours","hideMinutes","hideSeconds","hourLimit","minuteLimit","secondLimit","hourLabel","minuteLabel","secondLabel","padWithNItems","disableInfiniteScroll","hideCancelButton","confirmButtonText","cancelButtonText","modalTitle","LinearGradient","modalProps","containerProps","contentContainerProps","pickerContainerProps","buttonContainerProps","buttonTouchableOpacityProps","modalTitleProps","pickerGradientOverlayProps","topPickerGradientOverlayProps","bottomPickerGradientOverlayProps","styles","customStyles","generateStyles","selectedDuration","setSelectedDuration","useState","hours","minutes","seconds","confirmedDuration","setConfirmedDuration","hideModal","confirm","cancel","durationChange","useCallback","duration","timerPickerRef","useRef","useImperativeHandle","reset","options","_timerPickerRef$curre","initialDuration","current","setValue","value","_timerPickerRef$curre2","createElement","isVisible","onOverlayPress","undefined","testID","View","style","container","contentContainer","Text","buttonContainer","TouchableOpacity","onPress","button","cancelButton","confirmButton","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport TimerPicker, { TimerPickerProps, TimerPickerRef } from \"./TimerPicker\";\nimport Modal from \"./Modal\";\n\nimport {\n generateStyles,\n CustomTimerPickerModalStyles,\n} from \"./TimerPickerModal.styles\";\n\nexport interface TimerPickerModalRef {\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n visible: boolean;\n setIsVisible: (isVisible: boolean) => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n onCancel?: () => void;\n closeOnOverlayPress?: boolean;\n hideCancelButton?: boolean;\n confirmButtonText?: string;\n cancelButtonText?: string;\n modalTitle?: string;\n modalProps?: React.ComponentProps<typeof Modal>;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n styles?: CustomTimerPickerModalStyles;\n}\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (\n {\n visible,\n setIsVisible,\n onConfirm,\n onCancel,\n onDurationChange,\n closeOnOverlayPress,\n initialHours = 0,\n initialMinutes = 0,\n initialSeconds = 0,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLimit,\n minuteLimit,\n secondLimit,\n hourLabel = \"h\",\n minuteLabel = \"m\",\n secondLabel = \"s\",\n padWithNItems = 1,\n disableInfiniteScroll = false,\n hideCancelButton = false,\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n modalTitle,\n LinearGradient,\n modalProps,\n containerProps,\n contentContainerProps,\n pickerContainerProps,\n buttonContainerProps,\n buttonTouchableOpacityProps,\n modalTitleProps,\n pickerGradientOverlayProps,\n topPickerGradientOverlayProps,\n bottomPickerGradientOverlayProps,\n styles: customStyles,\n },\n ref\n ): React.ReactElement => {\n const styles = generateStyles(customStyles);\n\n const [selectedDuration, setSelectedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n const [confirmedDuration, setConfirmedDuration] = useState({\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n });\n\n const hideModal = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirm = () => {\n setConfirmedDuration(selectedDuration);\n onConfirm(selectedDuration);\n };\n\n const cancel = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChange = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n const initialDuration = {\n hours: initialHours,\n minutes: initialMinutes,\n seconds: initialSeconds,\n };\n setSelectedDuration(initialDuration);\n setConfirmedDuration(initialDuration);\n timerPickerRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={closeOnOverlayPress ? hideModal : undefined}\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n onDurationChange={durationChange}\n initialHours={confirmedDuration.hours}\n initialMinutes={confirmedDuration.minutes}\n initialSeconds={confirmedDuration.seconds}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n hourLimit={hourLimit}\n minuteLimit={minuteLimit}\n secondLimit={secondLimit}\n hourLabel={hourLabel}\n minuteLabel={minuteLabel}\n secondLabel={secondLabel}\n padWithNItems={padWithNItems}\n disableInfiniteScroll={disableInfiniteScroll}\n LinearGradient={LinearGradient}\n pickerContainerProps={pickerContainerProps}\n pickerGradientOverlayProps={\n pickerGradientOverlayProps\n }\n topPickerGradientOverlayProps={\n topPickerGradientOverlayProps\n }\n bottomPickerGradientOverlayProps={\n bottomPickerGradientOverlayProps\n }\n styles={customStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n onPress={cancel}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n onPress={confirm}\n {...buttonTouchableOpacityProps}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "TimerPicker", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _TimerPicker.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "TimerPickerModal", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _components.default;
16
+ }
17
+ });
18
+ var _components = _interopRequireDefault(require("./components"));
19
+ var _TimerPicker = _interopRequireDefault(require("./components/TimerPicker"));
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","_interopRequireDefault","require","_TimerPicker","obj","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export {\n default as TimerPickerModal,\n type TimerPickerModalProps,\n type TimerPickerModalRef,\n} from \"./components\";\n\nexport {\n default as TimerPicker,\n type TimerPickerProps,\n type TimerPickerRef,\n} from \"./components/TimerPicker\";\n\nexport { type CustomTimerPickerModalStyles } from \"./components/TimerPickerModal.styles\";\nexport { type CustomTimerPickerStyles } from \"./components/TimerPicker/TimerPicker.styles\";\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAMA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAIkC,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("@testing-library/react-native");
5
+ var _DurationScroll = _interopRequireDefault(require("../components/TimerPicker/DurationScroll"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ describe("DurationScroll", () => {
8
+ const onDurationChangeMock = jest.fn();
9
+ const emptyStyles = {
10
+ pickerContainer: {},
11
+ pickerLabelContainer: {},
12
+ pickerLabel: {},
13
+ pickerItemContainer: {},
14
+ pickerItem: {},
15
+ pickerGradientOverlay: {}
16
+ };
17
+ it("renders without crashing", () => {
18
+ const {
19
+ getByTestId
20
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
21
+ numberOfItems: 1,
22
+ onDurationChange: onDurationChangeMock,
23
+ padWithNItems: 0,
24
+ styles: emptyStyles,
25
+ testID: "duration-scroll"
26
+ }));
27
+ const component = getByTestId("duration-scroll");
28
+ expect(component).toBeDefined();
29
+ });
30
+ it("renders the correct number of items", () => {
31
+ const {
32
+ getAllByTestId
33
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
34
+ numberOfItems: 2,
35
+ onDurationChange: onDurationChangeMock,
36
+ padWithNItems: 1,
37
+ styles: emptyStyles
38
+ }));
39
+ const items = getAllByTestId("picker-item");
40
+ expect(items).toHaveLength(7);
41
+ });
42
+ it("renders the label if provided", () => {
43
+ const {
44
+ getByText
45
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_DurationScroll.default, {
46
+ numberOfItems: 59,
47
+ label: "Duration",
48
+ onDurationChange: onDurationChangeMock,
49
+ padWithNItems: 1,
50
+ styles: emptyStyles
51
+ }));
52
+ const label = getByText("Duration");
53
+ expect(label).toBeDefined();
54
+ });
55
+ });
56
+ //# sourceMappingURL=DurationScroll.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_DurationScroll","obj","__esModule","default","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerGradientOverlay","it","getByTestId","render","createElement","numberOfItems","onDurationChange","padWithNItems","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { render } from \"@testing-library/react-native\";\nimport DurationScroll from \"../components/TimerPicker/DurationScroll\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerGradientOverlay: {},\n };\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n numberOfItems={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n numberOfItems={2}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(7);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n numberOfItems={59}\n label=\"Duration\"\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAsE,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtEG,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EAC7B,MAAMC,oBAAoB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACtC,MAAMC,WAAW,GAAG;IAChBC,eAAe,EAAE,CAAC,CAAC;IACnBC,oBAAoB,EAAE,CAAC,CAAC;IACxBC,WAAW,EAAE,CAAC,CAAC;IACfC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,UAAU,EAAE,CAAC,CAAC;IACdC,qBAAqB,EAAE,CAAC;EAC5B,CAAC;EAEDC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,mBAAM,gBAC1BrB,MAAA,CAAAO,OAAA,CAAAe,aAAA,CAAClB,eAAA,CAAAG,OAAc;MACXgB,aAAa,EAAE,CAAE;MACjBC,gBAAgB,EAAEf,oBAAqB;MACvCgB,aAAa,EAAE,CAAE;MACjBC,MAAM,EAAEd,WAAY;MACpBe,MAAM,EAAC;IAAiB,CAC3B,CACL,CAAC;IACD,MAAMC,SAAS,GAAGR,WAAW,CAAC,iBAAiB,CAAC;IAChDS,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFX,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC5C,MAAM;MAAEY;IAAe,CAAC,GAAG,IAAAV,mBAAM,gBAC7BrB,MAAA,CAAAO,OAAA,CAAAe,aAAA,CAAClB,eAAA,CAAAG,OAAc;MACXgB,aAAa,EAAE,CAAE;MACjBC,gBAAgB,EAAEf,oBAAqB;MACvCgB,aAAa,EAAE,CAAE;MACjBC,MAAM,EAAEd;IAAY,CACvB,CACL,CAAC;IACD,MAAMoB,KAAK,GAAGD,cAAc,CAAC,aAAa,CAAC;IAC3CF,MAAM,CAACG,KAAK,CAAC,CAACC,YAAY,CAAC,CAAC,CAAC;EACjC,CAAC,CAAC;EAEFd,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACtC,MAAM;MAAEe;IAAU,CAAC,GAAG,IAAAb,mBAAM,gBACxBrB,MAAA,CAAAO,OAAA,CAAAe,aAAA,CAAClB,eAAA,CAAAG,OAAc;MACXgB,aAAa,EAAE,EAAG;MAClBY,KAAK,EAAC,UAAU;MAChBX,gBAAgB,EAAEf,oBAAqB;MACvCgB,aAAa,EAAE,CAAE;MACjBC,MAAM,EAAEd;IAAY,CACvB,CACL,CAAC;IACD,MAAMuB,KAAK,GAAGD,SAAS,CAAC,UAAU,CAAC;IACnCL,MAAM,CAACM,KAAK,CAAC,CAACL,WAAW,CAAC,CAAC;EAC/B,CAAC,CAAC;AAEN,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("react-native");
5
+ var _reactNative2 = require("@testing-library/react-native");
6
+ var _Modal = _interopRequireDefault(require("../components/Modal"));
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ describe("Modal", () => {
9
+ it("renders without crashing", () => {
10
+ const {
11
+ getByTestId
12
+ } = (0, _reactNative2.render)( /*#__PURE__*/_react.default.createElement(_Modal.default, null));
13
+ const component = getByTestId("modal");
14
+ expect(component).toBeDefined();
15
+ });
16
+ it("renders children when visible", () => {
17
+ const {
18
+ getByText
19
+ } = (0, _reactNative2.render)( /*#__PURE__*/_react.default.createElement(_Modal.default, {
20
+ isVisible: true
21
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "Modal Content")));
22
+ const content = getByText("Modal Content");
23
+ expect(content).toBeDefined();
24
+ });
25
+ it("calls onOverlayPress when overlay is pressed", () => {
26
+ const onOverlayPressMock = jest.fn();
27
+ const {
28
+ getByTestId
29
+ } = (0, _reactNative2.render)( /*#__PURE__*/_react.default.createElement(_Modal.default, {
30
+ isVisible: true,
31
+ onOverlayPress: onOverlayPressMock
32
+ }));
33
+ const overlay = getByTestId("modal-backdrop");
34
+ _reactNative2.fireEvent.press(overlay);
35
+ expect(onOverlayPressMock).toHaveBeenCalled();
36
+ });
37
+
38
+ // Add more test cases to cover different interactions, scenarios, and edge cases
39
+ });
40
+ //# sourceMappingURL=Modal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_Modal","obj","__esModule","default","describe","it","getByTestId","render","createElement","component","expect","toBeDefined","getByText","isVisible","Text","content","onOverlayPressMock","jest","fn","onOverlayPress","overlay","fireEvent","press","toHaveBeenCalled"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from \"react-native\";\nimport { render, fireEvent } from \"@testing-library/react-native\";\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<Modal />);\n const component = getByTestId(\"modal\");\n expect(component).toBeDefined();\n });\n\n it(\"renders children when visible\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Modal Content\"}</Text>\n </Modal>\n );\n const content = getByText(\"Modal Content\");\n expect(content).toBeDefined();\n });\n\n it(\"calls onOverlayPress when overlay is pressed\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(\n <Modal isVisible onOverlayPress={onOverlayPressMock} />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalled();\n });\n\n // Add more test cases to cover different interactions, scenarios, and edge cases\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExCG,QAAQ,CAAC,OAAO,EAAE,MAAM;EACpBC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,oBAAM,gBAACZ,MAAA,CAAAQ,OAAA,CAAAK,aAAA,CAACR,MAAA,CAAAG,OAAK,MAAE,CAAC,CAAC;IACzC,MAAMM,SAAS,GAAGH,WAAW,CAAC,OAAO,CAAC;IACtCI,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFN,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACtC,MAAM;MAAEO;IAAU,CAAC,GAAG,IAAAL,oBAAM,gBACxBZ,MAAA,CAAAQ,OAAA,CAAAK,aAAA,CAACR,MAAA,CAAAG,OAAK;MAACU,SAAS;IAAA,gBACZlB,MAAA,CAAAQ,OAAA,CAAAK,aAAA,CAACV,YAAA,CAAAgB,IAAI,QAAE,eAAsB,CAC1B,CACX,CAAC;IACD,MAAMC,OAAO,GAAGH,SAAS,CAAC,eAAe,CAAC;IAC1CF,MAAM,CAACK,OAAO,CAAC,CAACJ,WAAW,CAAC,CAAC;EACjC,CAAC,CAAC;EAEFN,EAAE,CAAC,8CAA8C,EAAE,MAAM;IACrD,MAAMW,kBAAkB,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IACpC,MAAM;MAAEZ;IAAY,CAAC,GAAG,IAAAC,oBAAM,gBAC1BZ,MAAA,CAAAQ,OAAA,CAAAK,aAAA,CAACR,MAAA,CAAAG,OAAK;MAACU,SAAS;MAACM,cAAc,EAAEH;IAAmB,CAAE,CAC1D,CAAC;IACD,MAAMI,OAAO,GAAGd,WAAW,CAAC,gBAAgB,CAAC;IAC7Ce,uBAAS,CAACC,KAAK,CAACF,OAAO,CAAC;IACxBV,MAAM,CAACM,kBAAkB,CAAC,CAACO,gBAAgB,CAAC,CAAC;EACjD,CAAC,CAAC;;EAEF;AACJ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("@testing-library/react-native");
5
+ var _TimerPicker = _interopRequireDefault(require("../components/TimerPicker"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ describe("TimerPicker", () => {
8
+ it("renders without crashing", () => {
9
+ const {
10
+ getByTestId
11
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_TimerPicker.default, null));
12
+ const component = getByTestId("timer-picker");
13
+ expect(component).toBeDefined();
14
+ });
15
+ it("renders without crashing with negative padWithNItems", () => {
16
+ const {
17
+ getByTestId
18
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_TimerPicker.default, {
19
+ padWithNItems: -1
20
+ }));
21
+ const component = getByTestId("timer-picker");
22
+ expect(component).toBeDefined();
23
+ });
24
+ it("hides minutes and seconds when respective hide props are provided", () => {
25
+ const {
26
+ queryByTestId
27
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_TimerPicker.default, {
28
+ hideMinutes: true,
29
+ hideSeconds: true
30
+ }));
31
+ const minutePicker = queryByTestId("duration-scroll-minute");
32
+ const secondPicker = queryByTestId("duration-scroll-second");
33
+ expect(minutePicker).toBeNull();
34
+ expect(secondPicker).toBeNull();
35
+ });
36
+ });
37
+ //# sourceMappingURL=TimerPicker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_TimerPicker","obj","__esModule","default","describe","it","getByTestId","render","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideMinutes","hideSeconds","minutePicker","secondPicker","toBeNull"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { render } from \"@testing-library/react-native\";\nimport TimerPicker from \"../components/TimerPicker\";\n\ndescribe(\"TimerPicker\", () => {\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPicker />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"renders without crashing with negative padWithNItems\", () => {\n const { getByTestId } = render(<TimerPicker padWithNItems={-1} />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"hides minutes and seconds when respective hide props are provided\", () => {\n const { queryByTestId } = render(\n <TimerPicker hideMinutes hideSeconds />\n );\n const minutePicker = queryByTestId(\"duration-scroll-minute\");\n const secondPicker = queryByTestId(\"duration-scroll-second\");\n expect(minutePicker).toBeNull();\n expect(secondPicker).toBeNull();\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAoD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEpDG,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC1BC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,mBAAM,gBAACX,MAAA,CAAAO,OAAA,CAAAK,aAAA,CAACR,YAAA,CAAAG,OAAW,MAAE,CAAC,CAAC;IAC/C,MAAMM,SAAS,GAAGH,WAAW,CAAC,cAAc,CAAC;IAC7CI,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFN,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC7D,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,mBAAM,gBAACX,MAAA,CAAAO,OAAA,CAAAK,aAAA,CAACR,YAAA,CAAAG,OAAW;MAACS,aAAa,EAAE,CAAC;IAAE,CAAE,CAAC,CAAC;IAClE,MAAMH,SAAS,GAAGH,WAAW,CAAC,cAAc,CAAC;IAC7CI,MAAM,CAACD,SAAS,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFN,EAAE,CAAC,mEAAmE,EAAE,MAAM;IAC1E,MAAM;MAAEQ;IAAc,CAAC,GAAG,IAAAN,mBAAM,gBAC5BX,MAAA,CAAAO,OAAA,CAAAK,aAAA,CAACR,YAAA,CAAAG,OAAW;MAACW,WAAW;MAACC,WAAW;IAAA,CAAE,CAC1C,CAAC;IACD,MAAMC,YAAY,GAAGH,aAAa,CAAC,wBAAwB,CAAC;IAC5D,MAAMI,YAAY,GAAGJ,aAAa,CAAC,wBAAwB,CAAC;IAC5DH,MAAM,CAACM,YAAY,CAAC,CAACE,QAAQ,CAAC,CAAC;IAC/BR,MAAM,CAACO,YAAY,CAAC,CAACC,QAAQ,CAAC,CAAC;EACnC,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("@testing-library/react-native");
5
+ var _components = _interopRequireDefault(require("../components"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ 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); }
8
+ describe("TimerPickerModal", () => {
9
+ const mockOnConfirm = jest.fn();
10
+ const mockOnCancel = jest.fn();
11
+ const defaultProps = {
12
+ visible: true,
13
+ setIsVisible: jest.fn(),
14
+ onConfirm: mockOnConfirm,
15
+ onCancel: mockOnCancel
16
+ };
17
+ it("renders without crashing", () => {
18
+ const {
19
+ getByTestId
20
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, defaultProps));
21
+ const component = getByTestId("timer-picker-modal");
22
+ expect(component).toBeDefined();
23
+ });
24
+ it("calls onConfirm when Confirm button is pressed", () => {
25
+ const {
26
+ getByText
27
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, defaultProps));
28
+ const confirmButton = getByText("Confirm");
29
+ _reactNative.fireEvent.press(confirmButton);
30
+ expect(mockOnConfirm).toHaveBeenCalled();
31
+ });
32
+ it("calls onCancel when Cancel button is pressed", () => {
33
+ const {
34
+ getByText
35
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, defaultProps));
36
+ const cancelButton = getByText("Cancel");
37
+ _reactNative.fireEvent.press(cancelButton);
38
+ expect(mockOnCancel).toHaveBeenCalled();
39
+ });
40
+ it("hides the modal when Cancel button is pressed", () => {
41
+ const setIsVisibleMock = jest.fn();
42
+ const {
43
+ getByText
44
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, _extends({}, defaultProps, {
45
+ setIsVisible: setIsVisibleMock
46
+ })));
47
+ const cancelButton = getByText("Cancel");
48
+ _reactNative.fireEvent.press(cancelButton);
49
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
50
+ });
51
+ it("hides the modal when overlay is pressed", () => {
52
+ const setIsVisibleMock = jest.fn();
53
+ const {
54
+ getByTestId
55
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, _extends({}, defaultProps, {
56
+ setIsVisible: setIsVisibleMock,
57
+ closeOnOverlayPress: true
58
+ })));
59
+ const overlay = getByTestId("modal-backdrop");
60
+ _reactNative.fireEvent.press(overlay);
61
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
62
+ });
63
+ it("calls onConfirm with selected duration when Confirm button is pressed", () => {
64
+ const {
65
+ getByText
66
+ } = (0, _reactNative.render)( /*#__PURE__*/_react.default.createElement(_components.default, defaultProps));
67
+ // Select duration in TimerPicker, assuming its interaction is tested separately
68
+ const confirmButton = getByText("Confirm");
69
+ _reactNative.fireEvent.press(confirmButton);
70
+ expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));
71
+ });
72
+ });
73
+ //# sourceMappingURL=TimerPickerModal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_components","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","describe","mockOnConfirm","jest","fn","mockOnCancel","defaultProps","visible","setIsVisible","onConfirm","onCancel","it","getByTestId","render","createElement","component","expect","toBeDefined","getByText","confirmButton","fireEvent","press","toHaveBeenCalled","cancelButton","setIsVisibleMock","toHaveBeenCalledWith","closeOnOverlayPress","overlay","objectContaining"],"sources":["TimerPickerModal.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { render, fireEvent } from \"@testing-library/react-native\";\nimport TimerPickerModal from \"../components\";\n\ndescribe(\"TimerPickerModal\", () => {\n const mockOnConfirm = jest.fn();\n const mockOnCancel = jest.fn();\n\n const defaultProps = {\n visible: true,\n setIsVisible: jest.fn(),\n onConfirm: mockOnConfirm,\n onCancel: mockOnCancel,\n };\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPickerModal {...defaultProps} />);\n const component = getByTestId(\"timer-picker-modal\");\n expect(component).toBeDefined();\n });\n\n it(\"calls onConfirm when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalled();\n });\n\n it(\"calls onCancel when Cancel button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(mockOnCancel).toHaveBeenCalled();\n });\n\n it(\"hides the modal when Cancel button is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByText } = render(\n <TimerPickerModal\n {...defaultProps}\n setIsVisible={setIsVisibleMock}\n />\n );\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"hides the modal when overlay is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n setIsVisible={setIsVisibleMock}\n closeOnOverlayPress\n />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"calls onConfirm with selected duration when Confirm button is pressed\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} />);\n // Select duration in TimerPicker, assuming its interaction is tested separately\n const confirmButton = getByText(\"Confirm\");\n fireEvent.press(confirmButton);\n expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));\n });\n});\n"],"mappings":"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"}