react-native-timer-picker 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +227 -152
  2. package/dist/commonjs/components/DurationScroll/DurationScroll.js +417 -0
  3. package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -0
  4. package/dist/commonjs/components/DurationScroll/index.js +20 -392
  5. package/dist/commonjs/components/DurationScroll/index.js.map +1 -1
  6. package/dist/commonjs/components/DurationScroll/types.js.map +1 -1
  7. package/dist/commonjs/components/Modal/Modal.js +107 -0
  8. package/dist/commonjs/components/Modal/Modal.js.map +1 -0
  9. package/dist/commonjs/components/Modal/index.js +20 -101
  10. package/dist/commonjs/components/Modal/index.js.map +1 -1
  11. package/dist/commonjs/components/TimerPicker/TimerPicker.js +225 -0
  12. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -0
  13. package/dist/commonjs/components/TimerPicker/index.js +29 -166
  14. package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
  15. package/dist/commonjs/components/TimerPicker/styles.js +1 -1
  16. package/dist/commonjs/components/TimerPicker/styles.js.map +1 -1
  17. package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
  18. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +143 -0
  19. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  20. package/dist/commonjs/components/TimerPickerModal/index.js +30 -131
  21. package/dist/commonjs/components/TimerPickerModal/index.js.map +1 -1
  22. package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
  23. package/dist/commonjs/index.js +9 -13
  24. package/dist/commonjs/index.js.map +1 -1
  25. package/dist/commonjs/tests/TimerPicker.test.js +4 -1
  26. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
  27. package/dist/commonjs/utils/colorToRgba.js +35 -4
  28. package/dist/commonjs/utils/colorToRgba.js.map +1 -1
  29. package/dist/commonjs/utils/generateNumbers.js +67 -0
  30. package/dist/commonjs/utils/generateNumbers.js.map +1 -1
  31. package/dist/commonjs/utils/getAdjustedLimit.js +25 -0
  32. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  33. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +38 -0
  34. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  35. package/dist/commonjs/utils/getInitialScrollIndex.js +38 -0
  36. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -1
  37. package/dist/commonjs/utils/getSafeInitialValue.js +28 -0
  38. package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -1
  39. package/dist/commonjs/utils/padNumber.js +25 -0
  40. package/dist/commonjs/utils/padNumber.js.map +1 -1
  41. package/dist/module/components/DurationScroll/DurationScroll.js +410 -0
  42. package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -0
  43. package/dist/module/components/DurationScroll/index.js +2 -390
  44. package/dist/module/components/DurationScroll/index.js.map +1 -1
  45. package/dist/module/components/DurationScroll/types.js.map +1 -1
  46. package/dist/module/components/Modal/Modal.js +99 -0
  47. package/dist/module/components/Modal/Modal.js.map +1 -0
  48. package/dist/module/components/Modal/index.js +2 -98
  49. package/dist/module/components/Modal/index.js.map +1 -1
  50. package/dist/module/components/TimerPicker/TimerPicker.js +217 -0
  51. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -0
  52. package/dist/module/components/TimerPicker/index.js +3 -166
  53. package/dist/module/components/TimerPicker/index.js.map +1 -1
  54. package/dist/module/components/TimerPicker/styles.js +1 -1
  55. package/dist/module/components/TimerPicker/styles.js.map +1 -1
  56. package/dist/module/components/TimerPicker/types.js.map +1 -1
  57. package/dist/module/components/TimerPickerModal/TimerPickerModal.js +135 -0
  58. package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  59. package/dist/module/components/TimerPickerModal/index.js +3 -130
  60. package/dist/module/components/TimerPickerModal/index.js.map +1 -1
  61. package/dist/module/components/TimerPickerModal/types.js.map +1 -1
  62. package/dist/module/index.js +2 -6
  63. package/dist/module/index.js.map +1 -1
  64. package/dist/module/tests/TimerPicker.test.js +4 -1
  65. package/dist/module/tests/TimerPicker.test.js.map +1 -1
  66. package/dist/module/utils/colorToRgba.js +35 -4
  67. package/dist/module/utils/colorToRgba.js.map +1 -1
  68. package/dist/module/utils/generateNumbers.js +68 -0
  69. package/dist/module/utils/generateNumbers.js.map +1 -1
  70. package/dist/module/utils/getAdjustedLimit.js +25 -0
  71. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  72. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +38 -0
  73. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
  74. package/dist/module/utils/getInitialScrollIndex.js +38 -0
  75. package/dist/module/utils/getInitialScrollIndex.js.map +1 -1
  76. package/dist/module/utils/getSafeInitialValue.js +28 -0
  77. package/dist/module/utils/getSafeInitialValue.js.map +1 -1
  78. package/dist/module/utils/padNumber.js +25 -0
  79. package/dist/module/utils/padNumber.js.map +1 -1
  80. package/dist/typescript/components/DurationScroll/DurationScroll.d.ts +4 -0
  81. package/dist/typescript/components/DurationScroll/index.d.ts +2 -4
  82. package/dist/typescript/components/DurationScroll/types.d.ts +13 -9
  83. package/dist/typescript/components/Modal/Modal.d.ts +5 -0
  84. package/dist/typescript/components/Modal/index.d.ts +2 -5
  85. package/dist/typescript/components/TimerPicker/TimerPicker.d.ts +4 -0
  86. package/dist/typescript/components/TimerPicker/index.d.ts +3 -4
  87. package/dist/typescript/components/TimerPicker/styles.d.ts +1169 -771
  88. package/dist/typescript/components/TimerPicker/types.d.ts +26 -10
  89. package/dist/typescript/components/TimerPickerModal/TimerPickerModal.d.ts +4 -0
  90. package/dist/typescript/components/TimerPickerModal/index.d.ts +3 -4
  91. package/dist/typescript/components/TimerPickerModal/styles.d.ts +722 -474
  92. package/dist/typescript/components/TimerPickerModal/types.d.ts +8 -5
  93. package/dist/typescript/index.d.ts +2 -6
  94. package/dist/typescript/utils/colorToRgba.d.ts +34 -0
  95. package/dist/typescript/utils/generateNumbers.d.ts +66 -0
  96. package/dist/typescript/utils/getAdjustedLimit.d.ts +27 -2
  97. package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +38 -0
  98. package/dist/typescript/utils/getInitialScrollIndex.d.ts +38 -0
  99. package/dist/typescript/utils/getSafeInitialValue.d.ts +29 -0
  100. package/dist/typescript/utils/padNumber.d.ts +25 -0
  101. package/package.json +10 -27
@@ -3,138 +3,37 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _getSafeInitialValue = require("../../utils/getSafeInitialValue");
10
- var _Modal = _interopRequireDefault(require("../Modal"));
11
- var _TimerPicker = _interopRequireDefault(require("../TimerPicker"));
12
- var _styles = require("./styles");
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- 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); }
15
- 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 && {}.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; }
16
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
17
- const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
18
- const {
19
- buttonContainerProps,
20
- buttonTouchableOpacityProps,
21
- cancelButtonText = "Cancel",
22
- closeOnOverlayPress,
23
- confirmButtonText = "Confirm",
24
- containerProps,
25
- contentContainerProps,
26
- hideCancelButton = false,
27
- initialValue,
28
- modalProps,
29
- modalTitle,
30
- modalTitleProps,
31
- onCancel,
32
- onConfirm,
33
- onDurationChange,
34
- setIsVisible,
35
- styles: customStyles,
36
- visible,
37
- ...otherProps
38
- } = props;
39
- const styles = (0, _styles.generateStyles)(customStyles, {
40
- hasModalTitle: Boolean(modalTitle)
41
- });
42
- const timerPickerRef = (0, _react.useRef)(null);
43
- const safeInitialValue = (0, _getSafeInitialValue.getSafeInitialValue)({
44
- hours: initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours,
45
- minutes: initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes,
46
- seconds: initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds
6
+ var _exportNames = {};
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _TimerPickerModal.default;
11
+ }
12
+ });
13
+ var _TimerPickerModal = _interopRequireDefault(require("./TimerPickerModal"));
14
+ var _types = require("./types");
15
+ Object.keys(_types).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _types[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _types[key];
23
+ }
47
24
  });
48
- const [selectedDuration, setSelectedDuration] = (0, _react.useState)(safeInitialValue);
49
- const [confirmedDuration, setConfirmedDuration] = (0, _react.useState)(safeInitialValue);
50
- const reset = options => {
51
- var _timerPickerRef$curre;
52
- setSelectedDuration(safeInitialValue);
53
- setConfirmedDuration(safeInitialValue);
54
- (_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
55
- };
56
-
57
- // reset state if the initial value changes
58
- (0, _react.useEffect)(() => {
59
- reset();
60
- // eslint-disable-next-line react-hooks/exhaustive-deps
61
- }, [safeInitialValue.hours, safeInitialValue.minutes, safeInitialValue.seconds]);
62
- const hideModalHandler = () => {
63
- setSelectedDuration({
64
- hours: confirmedDuration.hours,
65
- minutes: confirmedDuration.minutes,
66
- seconds: confirmedDuration.seconds
67
- });
68
- setIsVisible(false);
69
- };
70
- const confirmHandler = () => {
71
- var _timerPickerRef$curre2, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
72
- const latestDuration = (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 ? void 0 : _timerPickerRef$curre2.latestDuration;
73
- const newDuration = {
74
- hours: (latestDuration === null || latestDuration === void 0 || (_latestDuration$hours = latestDuration.hours) === null || _latestDuration$hours === void 0 ? void 0 : _latestDuration$hours.current) ?? selectedDuration.hours,
75
- minutes: (latestDuration === null || latestDuration === void 0 || (_latestDuration$minut = latestDuration.minutes) === null || _latestDuration$minut === void 0 ? void 0 : _latestDuration$minut.current) ?? selectedDuration.minutes,
76
- seconds: (latestDuration === null || latestDuration === void 0 || (_latestDuration$secon = latestDuration.seconds) === null || _latestDuration$secon === void 0 ? void 0 : _latestDuration$secon.current) ?? selectedDuration.seconds
77
- };
78
- setConfirmedDuration(newDuration);
79
- onConfirm(newDuration);
80
- };
81
- const cancelHandler = () => {
82
- setIsVisible(false);
83
- setSelectedDuration(confirmedDuration);
84
- onCancel === null || onCancel === void 0 || onCancel();
85
- };
86
-
87
- // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker
88
- const durationChangeHandler = (0, _react.useCallback)(duration => {
89
- setSelectedDuration(duration);
90
- onDurationChange === null || onDurationChange === void 0 || onDurationChange(duration);
91
- }, [onDurationChange]);
92
- (0, _react.useImperativeHandle)(ref, () => {
93
- var _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6;
94
- return {
95
- reset,
96
- setValue: (value, options) => {
97
- var _timerPickerRef$curre3;
98
- setSelectedDuration(value);
99
- setConfirmedDuration(value);
100
- (_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || _timerPickerRef$curre3.setValue(value, options);
101
- },
102
- latestDuration: {
103
- hours: (_timerPickerRef$curre4 = timerPickerRef.current) === null || _timerPickerRef$curre4 === void 0 || (_timerPickerRef$curre4 = _timerPickerRef$curre4.latestDuration) === null || _timerPickerRef$curre4 === void 0 ? void 0 : _timerPickerRef$curre4.hours,
104
- minutes: (_timerPickerRef$curre5 = timerPickerRef.current) === null || _timerPickerRef$curre5 === void 0 || (_timerPickerRef$curre5 = _timerPickerRef$curre5.latestDuration) === null || _timerPickerRef$curre5 === void 0 ? void 0 : _timerPickerRef$curre5.minutes,
105
- seconds: (_timerPickerRef$curre6 = timerPickerRef.current) === null || _timerPickerRef$curre6 === void 0 || (_timerPickerRef$curre6 = _timerPickerRef$curre6.latestDuration) === null || _timerPickerRef$curre6 === void 0 ? void 0 : _timerPickerRef$curre6.seconds
106
- }
107
- };
25
+ });
26
+ var _styles = require("./styles");
27
+ Object.keys(_styles).forEach(function (key) {
28
+ if (key === "default" || key === "__esModule") return;
29
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
30
+ if (key in exports && exports[key] === _styles[key]) return;
31
+ Object.defineProperty(exports, key, {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _styles[key];
35
+ }
108
36
  });
109
- return /*#__PURE__*/_react.default.createElement(_Modal.default, _extends({
110
- isVisible: visible,
111
- onOverlayPress: closeOnOverlayPress ? hideModalHandler : 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, _extends({
121
- ref: timerPickerRef,
122
- initialValue: confirmedDuration
123
- }, otherProps, {
124
- aggressivelyGetLatestDuration: true,
125
- onDurationChange: durationChangeHandler,
126
- styles: styles.timerPickerStyles
127
- })), /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({}, buttonContainerProps, {
128
- style: styles.buttonContainer
129
- }), !hideCancelButton ? /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
130
- onPress: cancelHandler
131
- }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
132
- style: [styles.button, styles.cancelButton]
133
- }, cancelButtonText)) : null, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
134
- onPress: confirmHandler
135
- }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
136
- style: [styles.button, styles.confirmButton]
137
- }, confirmButtonText))))));
138
37
  });
139
- var _default = exports.default = /*#__PURE__*/_react.default.memo(TimerPickerModal);
38
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
140
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getSafeInitialValue","_Modal","_interopRequireDefault","_TimerPicker","_styles","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","TimerPickerModal","forwardRef","props","ref","buttonContainerProps","buttonTouchableOpacityProps","cancelButtonText","closeOnOverlayPress","confirmButtonText","containerProps","contentContainerProps","hideCancelButton","initialValue","modalProps","modalTitle","modalTitleProps","onCancel","onConfirm","onDurationChange","setIsVisible","styles","customStyles","visible","otherProps","generateStyles","hasModalTitle","Boolean","timerPickerRef","useRef","safeInitialValue","getSafeInitialValue","hours","minutes","seconds","selectedDuration","setSelectedDuration","useState","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","useEffect","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","useCallback","duration","useImperativeHandle","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","setValue","value","_timerPickerRef$curre3","createElement","isVisible","onOverlayPress","undefined","testID","View","style","container","contentContainer","Text","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","TouchableOpacity","onPress","button","cancelButton","confirmButton","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\n\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport { getSafeInitialValue } from \"../../utils/getSafeInitialValue\";\nimport Modal from \"../Modal\";\nimport TimerPicker from \"../TimerPicker\";\nimport type { TimerPickerRef } from \"../TimerPicker/types\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerModalRef, TimerPickerModalProps } from \"./types\";\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (props, ref) => {\n const {\n buttonContainerProps,\n buttonTouchableOpacityProps,\n cancelButtonText = \"Cancel\",\n closeOnOverlayPress,\n confirmButtonText = \"Confirm\",\n containerProps,\n contentContainerProps,\n hideCancelButton = false,\n initialValue,\n modalProps,\n modalTitle,\n modalTitleProps,\n onCancel,\n onConfirm,\n onDurationChange,\n setIsVisible,\n styles: customStyles,\n visible,\n ...otherProps\n } = props;\n\n const styles = generateStyles(customStyles, {\n hasModalTitle: Boolean(modalTitle),\n });\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const safeInitialValue = getSafeInitialValue({\n hours: initialValue?.hours,\n minutes: initialValue?.minutes,\n seconds: initialValue?.seconds,\n });\n\n const [selectedDuration, setSelectedDuration] =\n useState(safeInitialValue);\n const [confirmedDuration, setConfirmedDuration] =\n useState(safeInitialValue);\n\n const reset = (options?: { animated?: boolean }) => {\n setSelectedDuration(safeInitialValue);\n setConfirmedDuration(safeInitialValue);\n timerPickerRef.current?.reset(options);\n };\n\n // reset state if the initial value changes\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n\n const newDuration = {\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: { hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\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 initialValue={confirmedDuration}\n {...otherProps}\n aggressivelyGetLatestDuration\n onDurationChange={durationChangeHandler}\n styles={styles.timerPickerStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n {...buttonTouchableOpacityProps}\n onPress={cancelHandler}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n {...buttonTouchableOpacityProps}\n onPress={confirmHandler}>\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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","ignoreList":[]}
1
+ {"version":3,"names":["_TimerPickerModal","_interopRequireDefault","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_styles","e","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export { default } from \"./TimerPickerModal\";\n\nexport * from \"./types\";\n\nexport * from \"./styles\";\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAS,OAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,OAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,OAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAAyB,SAAAN,uBAAAgB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { MutableRefObject } from \"react\";\n\nimport type { View, TouchableOpacity, Text } from \"react-native\";\n\nimport type Modal from \"../Modal\";\nimport type { TimerPickerProps } from \"../TimerPicker/types\";\n\nimport type { CustomTimerPickerModalStyles } from \"./styles\";\n\nexport interface TimerPickerModalRef {\n latestDuration: {\n hours: MutableRefObject<number> | undefined;\n minutes: MutableRefObject<number> | undefined;\n seconds: MutableRefObject<number> | undefined;\n };\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 buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n cancelButtonText?: string;\n closeOnOverlayPress?: boolean;\n confirmButtonText?: string;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n hideCancelButton?: boolean;\n modalProps?: React.ComponentProps<typeof Modal>;\n modalTitle?: string;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n onCancel?: () => void;\n onConfirm: ({\n hours,\n minutes,\n seconds,\n }: {\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n setIsVisible: (isVisible: boolean) => void;\n styles?: CustomTimerPickerModalStyles;\n visible: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { View, TouchableOpacity, Text } from \"react-native\";\n\nimport type Modal from \"../Modal\";\nimport type { TimerPickerProps } from \"../TimerPicker/types\";\n\nimport type { CustomTimerPickerModalStyles } from \"./styles\";\n\nexport interface TimerPickerModalRef {\n latestDuration: {\n days: RefObject<number> | undefined;\n hours: RefObject<number> | undefined;\n minutes: RefObject<number> | undefined;\n seconds: RefObject<number> | undefined;\n };\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n}\n\nexport interface TimerPickerModalProps extends TimerPickerProps {\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n cancelButtonText?: string;\n closeOnOverlayPress?: boolean;\n confirmButtonText?: string;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n hideCancelButton?: boolean;\n modalProps?: React.ComponentProps<typeof Modal>;\n modalTitle?: string;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n onCancel?: () => void;\n onConfirm: ({\n days,\n hours,\n minutes,\n seconds,\n }: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n setIsVisible: (isVisible: boolean) => void;\n styles?: CustomTimerPickerModalStyles;\n visible: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "CustomTimerPickerModalStyles", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _styles.CustomTimerPickerModalStyles;
9
+ return _TimerPickerModal.CustomTimerPickerModalStyles;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "CustomTimerPickerStyles", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _styles2.CustomTimerPickerStyles;
15
+ return _TimerPicker.CustomTimerPickerStyles;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "TimerPicker", {
@@ -30,32 +30,28 @@ Object.defineProperty(exports, "TimerPickerModal", {
30
30
  Object.defineProperty(exports, "TimerPickerModalProps", {
31
31
  enumerable: true,
32
32
  get: function () {
33
- return _types.TimerPickerModalProps;
33
+ return _TimerPickerModal.TimerPickerModalProps;
34
34
  }
35
35
  });
36
36
  Object.defineProperty(exports, "TimerPickerModalRef", {
37
37
  enumerable: true,
38
38
  get: function () {
39
- return _types.TimerPickerModalRef;
39
+ return _TimerPickerModal.TimerPickerModalRef;
40
40
  }
41
41
  });
42
42
  Object.defineProperty(exports, "TimerPickerProps", {
43
43
  enumerable: true,
44
44
  get: function () {
45
- return _types2.TimerPickerProps;
45
+ return _TimerPicker.TimerPickerProps;
46
46
  }
47
47
  });
48
48
  Object.defineProperty(exports, "TimerPickerRef", {
49
49
  enumerable: true,
50
50
  get: function () {
51
- return _types2.TimerPickerRef;
51
+ return _TimerPicker.TimerPickerRef;
52
52
  }
53
53
  });
54
- var _TimerPickerModal = _interopRequireDefault(require("./components/TimerPickerModal"));
55
- var _types = require("./components/TimerPickerModal/types");
56
- var _styles = require("./components/TimerPickerModal/styles");
57
- var _TimerPicker = _interopRequireDefault(require("./components/TimerPicker"));
58
- var _types2 = require("./components/TimerPicker/types");
59
- var _styles2 = require("./components/TimerPicker/styles");
60
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
54
+ var _TimerPickerModal = _interopRequireWildcard(require("./components/TimerPickerModal"));
55
+ var _TimerPicker = _interopRequireWildcard(require("./components/TimerPicker"));
56
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
61
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_TimerPickerModal","_interopRequireDefault","require","_types","_styles","_TimerPicker","_types2","_styles2","e","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export { default as TimerPickerModal } from \"./components/TimerPickerModal\";\nexport {\n TimerPickerModalProps,\n TimerPickerModalRef,\n} from \"./components/TimerPickerModal/types\";\nexport { CustomTimerPickerModalStyles } from \"./components/TimerPickerModal/styles\";\n\nexport { default as TimerPicker } from \"./components/TimerPicker\";\nexport {\n TimerPickerProps,\n TimerPickerRef,\n} from \"./components/TimerPicker/types\";\nexport { CustomTimerPickerStyles } from \"./components/TimerPicker/styles\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAIA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAIA,IAAAK,QAAA,GAAAL,OAAA;AAA0E,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
1
+ {"version":3,"names":["_TimerPickerModal","_interopRequireWildcard","require","_TimerPicker","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["index.ts"],"sourcesContent":["export {\n default as TimerPickerModal,\n TimerPickerModalProps,\n TimerPickerModalRef,\n CustomTimerPickerModalStyles,\n} from \"./components/TimerPickerModal\";\n\nexport {\n default as TimerPicker,\n TimerPickerProps,\n TimerPickerRef,\n CustomTimerPickerStyles,\n} from \"./components/TimerPicker\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAF,uBAAA,CAAAC,OAAA;AAKkC,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}
@@ -23,15 +23,18 @@ describe("TimerPicker", () => {
23
23
  const component = getByTestId("timer-picker");
24
24
  expect(component).toBeDefined();
25
25
  });
26
- it("hides minutes and seconds when respective hide props are provided", () => {
26
+ it("hides days, minutes and seconds when respective hide props are provided", () => {
27
27
  const {
28
28
  queryByTestId
29
29
  } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, {
30
+ hideDays: true,
30
31
  hideMinutes: true,
31
32
  hideSeconds: true
32
33
  }));
34
+ const dayPicker = queryByTestId("duration-scroll-day");
33
35
  const minutePicker = queryByTestId("duration-scroll-minute");
34
36
  const secondPicker = queryByTestId("duration-scroll-second");
37
+ expect(dayPicker).toBeNull();
35
38
  expect(minutePicker).toBeNull();
36
39
  expect(secondPicker).toBeNull();
37
40
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_TimerPicker","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","describe","it","getByTestId","render","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideMinutes","hideSeconds","minutePicker","secondPicker","toBeNull","CustomFlatList","props","FlatList","testID","queryAllByTestId","customFlatList","toHaveLength"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\nimport { FlatList } from \"react-native\";\n\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 it(\"uses the custom FlatList component when provided\", () => {\n const CustomFlatList = (props) => (\n <FlatList {...props} testID=\"custom-flat-list\" />\n );\n const { queryAllByTestId } = render(\n <TimerPicker FlatList={CustomFlatList} />\n );\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAoD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,SAAA,WAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAP,CAAA,MAAAA,CAAA,GAAAQ,SAAA,CAAAC,MAAA,EAAAT,CAAA,UAAAU,CAAA,GAAAF,SAAA,CAAAR,CAAA,YAAAW,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAJ,QAAA,CAAAW,KAAA,OAAAN,SAAA;AAEpDO,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC1BC,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACjC,MAAM;MAAEC;IAAY,CAAC,GAAG,IAAAC,mBAAM,eAACxB,MAAA,CAAAQ,OAAA,CAAAiB,aAAA,CAACpB,YAAA,CAAAG,OAAW,MAAE,CAAC,CAAC;IAC/C,MAAMkB,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,eAACxB,MAAA,CAAAQ,OAAA,CAAAiB,aAAA,CAACpB,YAAA,CAAAG,OAAW;MAACqB,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,eAC5BxB,MAAA,CAAAQ,OAAA,CAAAiB,aAAA,CAACpB,YAAA,CAAAG,OAAW;MAACuB,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;EAEFb,EAAE,CAAC,kDAAkD,EAAE,MAAM;IACzD,MAAMc,cAAc,GAAIC,KAAK,iBACzBrC,MAAA,CAAAQ,OAAA,CAAAiB,aAAA,CAACrB,aAAA,CAAAkC,QAAQ,EAAA7B,QAAA,KAAK4B,KAAK;MAAEE,MAAM,EAAC;IAAkB,EAAE,CACnD;IACD,MAAM;MAAEC;IAAiB,CAAC,GAAG,IAAAhB,mBAAM,eAC/BxB,MAAA,CAAAQ,OAAA,CAAAiB,aAAA,CAACpB,YAAA,CAAAG,OAAW;MAAC8B,QAAQ,EAAEF;IAAe,CAAE,CAC5C,CAAC;IACD,MAAMK,cAAc,GAAGD,gBAAgB,CAAC,kBAAkB,CAAC;IAC3Db,MAAM,CAACc,cAAc,CAAC,CAACC,YAAY,CAAC,CAAC,CAAC;EAC1C,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_TimerPicker","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","describe","it","getByTestId","render","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideDays","hideMinutes","hideSeconds","dayPicker","minutePicker","secondPicker","toBeNull","CustomFlatList","props","FlatList","testID","queryAllByTestId","customFlatList","toHaveLength"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\nimport { FlatList } from \"react-native\";\n\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 days, minutes and seconds when respective hide props are provided\", () => {\n const { queryByTestId } = render(\n <TimerPicker hideDays hideMinutes hideSeconds />\n );\n const dayPicker = queryByTestId(\"duration-scroll-day\");\n const minutePicker = queryByTestId(\"duration-scroll-minute\");\n const secondPicker = queryByTestId(\"duration-scroll-second\");\n expect(dayPicker).toBeNull();\n expect(minutePicker).toBeNull();\n expect(secondPicker).toBeNull();\n });\n\n it(\"uses the custom FlatList component when provided\", () => {\n const CustomFlatList = (props) => (\n <FlatList {...props} testID=\"custom-flat-list\" />\n );\n const { queryAllByTestId } = render(\n <TimerPicker FlatList={CustomFlatList} />\n );\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -4,15 +4,46 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.colorToRgba = void 0;
7
+ /**
8
+ * Converts various color formats to RGBA string representation.
9
+ * This function is specifically required for expo-linear-gradient on iOS to handle transparent colors correctly.
10
+ * It supports named colors, RGB, and hex color formats.
11
+ *
12
+ * @param {Object} variables - The input variables object
13
+ * @param {string} variables.color - The color to convert. Can be:
14
+ * - Named color (e.g., 'transparent', 'black', 'white', 'blue', 'green', 'gray', 'red')
15
+ * - RGB format (e.g., 'rgb(255, 0, 0)')
16
+ * - Hex format (e.g., '#FF0000' or '#F00')
17
+ * @param {number} [variables.opacity=1] - The opacity value between 0 and 1
18
+ *
19
+ * @returns {string} The color in RGBA format (e.g., 'rgba(255, 0, 0, 0.5)')
20
+ *
21
+ * @example
22
+ * // Using named color
23
+ * colorToRgba({ color: 'transparent' })
24
+ * // Returns: 'rgba(0, 0, 0, 0)'
25
+ *
26
+ * @example
27
+ * // Using RGB with custom opacity
28
+ * colorToRgba({ color: 'rgb(255, 0, 0)', opacity: 0.5 })
29
+ * // Returns: 'rgba(255, 0, 0, 0.5)'
30
+ *
31
+ * @example
32
+ * // Using hex color
33
+ * colorToRgba({ color: '#FF0000' })
34
+ * // Returns: 'rgba(255, 0, 0, 1)'
35
+ *
36
+ * @example
37
+ * // Using short hex color
38
+ * colorToRgba({ color: '#F00' })
39
+ * // Returns: 'rgba(255, 0, 0, 1)'
40
+ */
7
41
  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
42
  const {
13
43
  color,
14
44
  opacity = 1
15
45
  } = variables;
46
+
16
47
  // Handle named colors
17
48
  const namedColors = {
18
49
  transparent: "rgba(0, 0, 0, 0)",
@@ -1 +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,OAAO,QAAQO,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;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,OAAO,QAAQJ,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;EAC/C;EAEA,OAAOD,KAAK,CAAC,CAAC;AAClB,CAAC;AAACyB,OAAA,CAAA3B,WAAA,GAAAA,WAAA","ignoreList":[]}
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":["/**\n * Converts various color formats to RGBA string representation.\n * This function is specifically required for expo-linear-gradient on iOS to handle transparent colors correctly.\n * It supports named colors, RGB, and hex color formats.\n *\n * @param {Object} variables - The input variables object\n * @param {string} variables.color - The color to convert. Can be:\n * - Named color (e.g., 'transparent', 'black', 'white', 'blue', 'green', 'gray', 'red')\n * - RGB format (e.g., 'rgb(255, 0, 0)')\n * - Hex format (e.g., '#FF0000' or '#F00')\n * @param {number} [variables.opacity=1] - The opacity value between 0 and 1\n *\n * @returns {string} The color in RGBA format (e.g., 'rgba(255, 0, 0, 0.5)')\n *\n * @example\n * // Using named color\n * colorToRgba({ color: 'transparent' })\n * // Returns: 'rgba(0, 0, 0, 0)'\n *\n * @example\n * // Using RGB with custom opacity\n * colorToRgba({ color: 'rgb(255, 0, 0)', opacity: 0.5 })\n * // Returns: 'rgba(255, 0, 0, 0.5)'\n *\n * @example\n * // Using hex color\n * colorToRgba({ color: '#FF0000' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n *\n * @example\n * // Using short hex color\n * colorToRgba({ color: '#F00' })\n * // Returns: 'rgba(255, 0, 0, 1)'\n */\nexport const colorToRgba = (variables: {\n color: string;\n opacity?: number;\n}): string => {\n const { color, opacity = 1 } = variables;\n\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":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,WAAW,GAAIC,SAG3B,IAAa;EACV,MAAM;IAAEC,KAAK;IAAEC,OAAO,GAAG;EAAE,CAAC,GAAGF,SAAS;;EAExC;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,OAAO,QAAQO,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;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,OAAO,QAAQJ,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKnB,OAAO,GAAG;EAC/C;EAEA,OAAOD,KAAK,CAAC,CAAC;AAClB,CAAC;AAACyB,OAAA,CAAA3B,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -5,6 +5,40 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.generateNumbers = exports.generate12HourNumbers = void 0;
7
7
  var _padNumber = require("./padNumber");
8
+ /**
9
+ * Generates an array of formatted numbers for a number picker, with support for infinite scroll,
10
+ * padding, and number repetition.
11
+ *
12
+ * @param {number} numberOfItems - Total number of items to generate
13
+ * @param {Object} options - Configuration options for number generation
14
+ * @param {boolean} [options.disableInfiniteScroll] - Whether to disable infinite scroll
15
+ * @param {number} options.interval - The interval between consecutive numbers
16
+ * @param {boolean} [options.padNumbersWithZero] - Whether to pad single-digit numbers with leading zeros
17
+ * @param {number} options.padWithNItems - Number of empty items to pad with
18
+ * @param {number} options.repeatNTimes - How many times to repeat the number sequence
19
+ *
20
+ * @returns {string[]} Array of formatted number strings
21
+ *
22
+ * @example
23
+ * // Generate numbers 0-9 with padding
24
+ * generateNumbers(10, {
25
+ * interval: 1,
26
+ * padWithNItems: 2,
27
+ * repeatNTimes: 1,
28
+ * padNumbersWithZero: true
29
+ * })
30
+ * // Returns: ['', '', '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '', '']
31
+ *
32
+ * @example
33
+ * // Generate even numbers with infinite scroll
34
+ * generateNumbers(5, {
35
+ * interval: 2,
36
+ * padWithNItems: 2,
37
+ * repeatNTimes: 3,
38
+ * disableInfiniteScroll: false
39
+ * })
40
+ * // Returns: ['0', '2', '4', '6', '8', '0', '2', '4', '6', '8', '0', '2', '4', '6', '8']
41
+ */
8
42
  const generateNumbers = (numberOfItems, options) => {
9
43
  if (numberOfItems <= 0) {
10
44
  return [];
@@ -25,6 +59,39 @@ const generateNumbers = (numberOfItems, options) => {
25
59
  }
26
60
  return numbers;
27
61
  };
62
+
63
+ /**
64
+ * Generates an array of formatted 12-hour time strings (AM/PM) for a time picker.
65
+ * Supports infinite scroll, padding, and number repetition.
66
+ *
67
+ * @param {Object} options - Configuration options for time generation
68
+ * @param {boolean} [options.disableInfiniteScroll] - Whether to disable infinite scroll
69
+ * @param {number} options.interval - The interval between hours (must be a divisor of 12)
70
+ * @param {boolean} [options.padNumbersWithZero] - Whether to pad single-digit hours with leading zeros
71
+ * @param {number} options.padWithNItems - Number of empty items to pad with
72
+ * @param {number} [options.repeatNTimes] - How many times to repeat the time sequence (defaults to 1)
73
+ *
74
+ * @returns {string[]} Array of formatted 12-hour time strings
75
+ *
76
+ * @example
77
+ * // Generate hours with 1-hour interval
78
+ * generate12HourNumbers({
79
+ * interval: 1,
80
+ * padWithNItems: 2,
81
+ * padNumbersWithZero: true
82
+ * })
83
+ * // Returns: ['', '', '12 AM', '01 AM', '02 AM', ..., '11 PM', '', '']
84
+ *
85
+ * @example
86
+ * // Generate hours with 2-hour interval and infinite scroll
87
+ * generate12HourNumbers({
88
+ * interval: 2,
89
+ * padWithNItems: 2,
90
+ * repeatNTimes: 2,
91
+ * disableInfiniteScroll: false
92
+ * })
93
+ * // Returns: ['12 AM', '2 AM', '4 AM', ..., '10 PM', '12 AM', '2 AM', ...]
94
+ */
28
95
  exports.generateNumbers = generateNumbers;
29
96
  const generate12HourNumbers = options => {
30
97
  let numbers = [];
@@ -1 +1 @@
1
- {"version":3,"names":["_padNumber","require","generateNumbers","numberOfItems","options","numbers","i","value","interval","push","padNumber","padWithZero","padNumbersWithZero","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","exports","generate12HourNumbers","hour"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padNumber } from \"./padNumber\";\n\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n disableInfiniteScroll?: boolean;\n interval: number;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n for (let i = 0; i < numberOfItems; i++) {\n const value = i * options.interval;\n numbers.push(\n padNumber(value, { padWithZero: options.padNumbersWithZero })\n );\n }\n\n if (options.repeatNTimes > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll || options.repeatNTimes === 1) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n\nexport const generate12HourNumbers = (options: {\n disableInfiniteScroll?: boolean;\n interval: number;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes?: number;\n}) => {\n let numbers: string[] = [];\n\n // Generate numbers from 0 to 11 for AM\n for (let i = 0; i < 12; i += options.interval) {\n numbers.push(\n `${padNumber(i, { padWithZero: options.padNumbersWithZero })} AM`\n );\n }\n\n // Generate numbers from 12 to 11 for PM\n for (let i = 12; i < 24; i += options.interval) {\n const hour = i > 12 ? i - 12 : i;\n numbers.push(\n `${padNumber(hour, { padWithZero: options.padNumbersWithZero })} PM`\n );\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n\n return numbers;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAGA,CAC3BC,aAAqB,EACrBC,OAMC,KACA;EACD,IAAID,aAAa,IAAI,CAAC,EAAE;IACpB,OAAO,EAAE;EACb;EAEA,IAAIE,OAAiB,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,aAAa,EAAEG,CAAC,EAAE,EAAE;IACpC,MAAMC,KAAK,GAAGD,CAAC,GAAGF,OAAO,CAACI,QAAQ;IAClCH,OAAO,CAACI,IAAI,CACR,IAAAC,oBAAS,EAACH,KAAK,EAAE;MAAEI,WAAW,EAAEP,OAAO,CAACQ;IAAmB,CAAC,CAChE,CAAC;EACL;EAEA,IAAIR,OAAO,CAACS,YAAY,GAAG,CAAC,EAAE;IAC1BR,OAAO,GAAGS,KAAK,CAACV,OAAO,CAACS,YAAY,CAAC,CAACE,IAAI,CAACV,OAAO,CAAC,CAACW,IAAI,CAAC,CAAC;EAC9D;EACA,IAAIZ,OAAO,CAACa,qBAAqB,IAAIb,OAAO,CAACS,YAAY,KAAK,CAAC,EAAE;IAC7DR,OAAO,CAACI,IAAI,CAAC,GAAGK,KAAK,CAACV,OAAO,CAACc,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDV,OAAO,CAACc,OAAO,CAAC,GAAGL,KAAK,CAACV,OAAO,CAACc,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EACA,OAAOV,OAAO;AAClB,CAAC;AAACe,OAAA,CAAAlB,eAAA,GAAAA,eAAA;AAEK,MAAMmB,qBAAqB,GAAIjB,OAMrC,IAAK;EACF,IAAIC,OAAiB,GAAG,EAAE;;EAE1B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAIF,OAAO,CAACI,QAAQ,EAAE;IAC3CH,OAAO,CAACI,IAAI,CACR,GAAG,IAAAC,oBAAS,EAACJ,CAAC,EAAE;MAAEK,WAAW,EAAEP,OAAO,CAACQ;IAAmB,CAAC,CAAC,KAChE,CAAC;EACL;;EAEA;EACA,KAAK,IAAIN,CAAC,GAAG,EAAE,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAIF,OAAO,CAACI,QAAQ,EAAE;IAC5C,MAAMc,IAAI,GAAGhB,CAAC,GAAG,EAAE,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC;IAChCD,OAAO,CAACI,IAAI,CACR,GAAG,IAAAC,oBAAS,EAACY,IAAI,EAAE;MAAEX,WAAW,EAAEP,OAAO,CAACQ;IAAmB,CAAC,CAAC,KACnE,CAAC;EACL;EAEA,IAAI,CAACR,OAAO,CAACS,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCR,OAAO,GAAGS,KAAK,CAACV,OAAO,CAACS,YAAY,CAAC,CAACE,IAAI,CAACV,OAAO,CAAC,CAACW,IAAI,CAAC,CAAC;EAC9D;EAEA,IAAIZ,OAAO,CAACa,qBAAqB,EAAE;IAC/BZ,OAAO,CAACI,IAAI,CAAC,GAAGK,KAAK,CAACV,OAAO,CAACc,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDV,OAAO,CAACc,OAAO,CAAC,GAAGL,KAAK,CAACV,OAAO,CAACc,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EAEA,OAAOV,OAAO;AAClB,CAAC;AAACe,OAAA,CAAAC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_padNumber","require","generateNumbers","numberOfItems","options","numbers","i","value","interval","push","padNumber","padWithZero","padNumbersWithZero","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","exports","generate12HourNumbers","hour"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padNumber } from \"./padNumber\";\n\n/**\n * Generates an array of formatted numbers for a number picker, with support for infinite scroll,\n * padding, and number repetition.\n *\n * @param {number} numberOfItems - Total number of items to generate\n * @param {Object} options - Configuration options for number generation\n * @param {boolean} [options.disableInfiniteScroll] - Whether to disable infinite scroll\n * @param {number} options.interval - The interval between consecutive numbers\n * @param {boolean} [options.padNumbersWithZero] - Whether to pad single-digit numbers with leading zeros\n * @param {number} options.padWithNItems - Number of empty items to pad with\n * @param {number} options.repeatNTimes - How many times to repeat the number sequence\n *\n * @returns {string[]} Array of formatted number strings\n *\n * @example\n * // Generate numbers 0-9 with padding\n * generateNumbers(10, {\n * interval: 1,\n * padWithNItems: 2,\n * repeatNTimes: 1,\n * padNumbersWithZero: true\n * })\n * // Returns: ['', '', '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '', '']\n *\n * @example\n * // Generate even numbers with infinite scroll\n * generateNumbers(5, {\n * interval: 2,\n * padWithNItems: 2,\n * repeatNTimes: 3,\n * disableInfiniteScroll: false\n * })\n * // Returns: ['0', '2', '4', '6', '8', '0', '2', '4', '6', '8', '0', '2', '4', '6', '8']\n */\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n disableInfiniteScroll?: boolean;\n interval: number;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n for (let i = 0; i < numberOfItems; i++) {\n const value = i * options.interval;\n numbers.push(\n padNumber(value, { padWithZero: options.padNumbersWithZero })\n );\n }\n\n if (options.repeatNTimes > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll || options.repeatNTimes === 1) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n\n/**\n * Generates an array of formatted 12-hour time strings (AM/PM) for a time picker.\n * Supports infinite scroll, padding, and number repetition.\n *\n * @param {Object} options - Configuration options for time generation\n * @param {boolean} [options.disableInfiniteScroll] - Whether to disable infinite scroll\n * @param {number} options.interval - The interval between hours (must be a divisor of 12)\n * @param {boolean} [options.padNumbersWithZero] - Whether to pad single-digit hours with leading zeros\n * @param {number} options.padWithNItems - Number of empty items to pad with\n * @param {number} [options.repeatNTimes] - How many times to repeat the time sequence (defaults to 1)\n *\n * @returns {string[]} Array of formatted 12-hour time strings\n *\n * @example\n * // Generate hours with 1-hour interval\n * generate12HourNumbers({\n * interval: 1,\n * padWithNItems: 2,\n * padNumbersWithZero: true\n * })\n * // Returns: ['', '', '12 AM', '01 AM', '02 AM', ..., '11 PM', '', '']\n *\n * @example\n * // Generate hours with 2-hour interval and infinite scroll\n * generate12HourNumbers({\n * interval: 2,\n * padWithNItems: 2,\n * repeatNTimes: 2,\n * disableInfiniteScroll: false\n * })\n * // Returns: ['12 AM', '2 AM', '4 AM', ..., '10 PM', '12 AM', '2 AM', ...]\n */\nexport const generate12HourNumbers = (options: {\n disableInfiniteScroll?: boolean;\n interval: number;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes?: number;\n}) => {\n let numbers: string[] = [];\n\n // Generate numbers from 0 to 11 for AM\n for (let i = 0; i < 12; i += options.interval) {\n numbers.push(\n `${padNumber(i, { padWithZero: options.padNumbersWithZero })} AM`\n );\n }\n\n // Generate numbers from 12 to 11 for PM\n for (let i = 12; i < 24; i += options.interval) {\n const hour = i > 12 ? i - 12 : i;\n numbers.push(\n `${padNumber(hour, { padWithZero: options.padNumbersWithZero })} PM`\n );\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n\n return numbers;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getAdjustedLimit = void 0;
7
+ /**
8
+ * Adjusts and validates the min/max limits for a scrollable number picker.
9
+ * Ensures limits are within valid bounds and handles edge cases.
10
+ *
11
+ * @param {Limit | undefined} limit - The input limit object containing optional min and max values
12
+ * @param {number} numberOfItems - Total number of items in the picker
13
+ * @param {number} interval - The interval between consecutive numbers
14
+ *
15
+ * @returns {{ max: number; min: number }} An object containing the adjusted min and max limits
16
+ *
17
+ * @example
18
+ * // With valid limits
19
+ * getAdjustedLimit({ min: 5, max: 15 }, 20, 1)
20
+ * // Returns: { max: 15, min: 5 }
21
+ *
22
+ * @example
23
+ * // With out-of-bounds limits
24
+ * getAdjustedLimit({ min: -5, max: 25 }, 20, 1)
25
+ * // Returns: { max: 19, min: 0 }
26
+ *
27
+ * @example
28
+ * // With invalid limits (max < min)
29
+ * getAdjustedLimit({ min: 15, max: 5 }, 20, 1)
30
+ * // Returns: { max: 19, min: 0 }
31
+ */
7
32
  const getAdjustedLimit = (limit, numberOfItems, interval) => {
8
33
  const maxValue = (numberOfItems - 1) * interval;
9
34
  if (!limit || !limit.max && !limit.min) {
@@ -1 +1 @@
1
- {"version":3,"names":["getAdjustedLimit","limit","numberOfItems","interval","maxValue","max","min","adjustedMaxLimit","Math","adjustedMinLimit","exports"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { LimitType } from \"../components/DurationScroll/types\";\n\nexport const getAdjustedLimit = (\n limit: LimitType | undefined,\n numberOfItems: number,\n interval: number\n): {\n max: number;\n min: number;\n} => {\n const maxValue = (numberOfItems - 1) * interval;\n\n if (!limit || (!limit.max && !limit.min)) {\n return {\n max: maxValue,\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, maxValue)\n : maxValue;\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: maxValue,\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,EACrBC,QAAgB,KAIf;EACD,MAAMC,QAAQ,GAAG,CAACF,aAAa,GAAG,CAAC,IAAIC,QAAQ;EAE/C,IAAI,CAACF,KAAK,IAAK,CAACA,KAAK,CAACI,GAAG,IAAI,CAACJ,KAAK,CAACK,GAAI,EAAE;IACtC,OAAO;MACHD,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGN,KAAK,CAACI,GAAG,GAC5BG,IAAI,CAACF,GAAG,CAACL,KAAK,CAACI,GAAG,EAAED,QAAQ,CAAC,GAC7BA,QAAQ;EACd,MAAMK,gBAAgB,GAAGR,KAAK,CAACK,GAAG,GAAGE,IAAI,CAACH,GAAG,CAACJ,KAAK,CAACK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE/D;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHJ,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHD,GAAG,EAAEE,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC;AAACC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["getAdjustedLimit","limit","numberOfItems","interval","maxValue","max","min","adjustedMaxLimit","Math","adjustedMinLimit","exports"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { Limit } from \"../components/DurationScroll/types\";\n\n/**\n * Adjusts and validates the min/max limits for a scrollable number picker.\n * Ensures limits are within valid bounds and handles edge cases.\n *\n * @param {Limit | undefined} limit - The input limit object containing optional min and max values\n * @param {number} numberOfItems - Total number of items in the picker\n * @param {number} interval - The interval between consecutive numbers\n *\n * @returns {{ max: number; min: number }} An object containing the adjusted min and max limits\n *\n * @example\n * // With valid limits\n * getAdjustedLimit({ min: 5, max: 15 }, 20, 1)\n * // Returns: { max: 15, min: 5 }\n *\n * @example\n * // With out-of-bounds limits\n * getAdjustedLimit({ min: -5, max: 25 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n *\n * @example\n * // With invalid limits (max < min)\n * getAdjustedLimit({ min: 15, max: 5 }, 20, 1)\n * // Returns: { max: 19, min: 0 }\n */\nexport const getAdjustedLimit = (\n limit: Limit | undefined,\n numberOfItems: number,\n interval: number\n): {\n max: number;\n min: number;\n} => {\n const maxValue = (numberOfItems - 1) * interval;\n\n if (!limit || (!limit.max && !limit.min)) {\n return {\n max: maxValue,\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, maxValue)\n : maxValue;\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: maxValue,\n min: 0,\n };\n }\n\n return {\n max: adjustedMaxLimit,\n min: adjustedMinLimit,\n };\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAGA,CAC5BC,KAAwB,EACxBC,aAAqB,EACrBC,QAAgB,KAIf;EACD,MAAMC,QAAQ,GAAG,CAACF,aAAa,GAAG,CAAC,IAAIC,QAAQ;EAE/C,IAAI,CAACF,KAAK,IAAK,CAACA,KAAK,CAACI,GAAG,IAAI,CAACJ,KAAK,CAACK,GAAI,EAAE;IACtC,OAAO;MACHD,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGN,KAAK,CAACI,GAAG,GAC5BG,IAAI,CAACF,GAAG,CAACL,KAAK,CAACI,GAAG,EAAED,QAAQ,CAAC,GAC7BA,QAAQ;EACd,MAAMK,gBAAgB,GAAGR,KAAK,CAACK,GAAG,GAAGE,IAAI,CAACH,GAAG,CAACJ,KAAK,CAACK,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE/D;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHJ,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHD,GAAG,EAAEE,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC;AAACC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA","ignoreList":[]}