react-native-timer-picker 2.6.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/commonjs/components/DurationScroll/DurationScroll.js +426 -0
  2. package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -0
  3. package/dist/commonjs/components/DurationScroll/index.js +27 -0
  4. package/dist/commonjs/components/DurationScroll/index.js.map +1 -0
  5. package/dist/commonjs/components/DurationScroll/types.js +6 -0
  6. package/dist/commonjs/components/DurationScroll/types.js.map +1 -0
  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 +27 -0
  10. package/dist/commonjs/components/Modal/index.js.map +1 -0
  11. package/dist/commonjs/components/Modal/styles.js +25 -0
  12. package/dist/commonjs/components/Modal/styles.js.map +1 -0
  13. package/dist/commonjs/components/Modal/types.js +6 -0
  14. package/dist/commonjs/components/Modal/types.js.map +1 -0
  15. package/dist/commonjs/components/PickerItem/PickerItem.js +48 -0
  16. package/dist/commonjs/components/PickerItem/PickerItem.js.map +1 -0
  17. package/dist/commonjs/components/PickerItem/index.js +14 -0
  18. package/dist/commonjs/components/PickerItem/index.js.map +1 -0
  19. package/dist/commonjs/components/TimerPicker/TimerPicker.js +266 -0
  20. package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -0
  21. package/dist/commonjs/components/TimerPicker/index.js +39 -0
  22. package/dist/commonjs/components/TimerPicker/index.js.map +1 -0
  23. package/dist/commonjs/components/TimerPicker/styles.js +140 -0
  24. package/dist/commonjs/components/TimerPicker/styles.js.map +1 -0
  25. package/dist/commonjs/components/TimerPicker/types.js +6 -0
  26. package/dist/commonjs/components/TimerPicker/types.js.map +1 -0
  27. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +173 -0
  28. package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  29. package/dist/commonjs/components/TimerPickerModal/index.js +39 -0
  30. package/dist/commonjs/components/TimerPickerModal/index.js.map +1 -0
  31. package/dist/commonjs/components/TimerPickerModal/styles.js +95 -0
  32. package/dist/commonjs/components/TimerPickerModal/styles.js.map +1 -0
  33. package/dist/commonjs/components/TimerPickerModal/types.js +6 -0
  34. package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -0
  35. package/dist/commonjs/index.js +21 -0
  36. package/dist/commonjs/index.js.map +1 -0
  37. package/dist/commonjs/tests/DurationScroll.test.js +163 -0
  38. package/dist/commonjs/tests/DurationScroll.test.js.map +1 -0
  39. package/dist/commonjs/tests/Modal.test.js +99 -0
  40. package/dist/commonjs/tests/Modal.test.js.map +1 -0
  41. package/dist/commonjs/tests/TimerPicker.test.js +161 -0
  42. package/dist/commonjs/tests/TimerPicker.test.js.map +1 -0
  43. package/dist/commonjs/tests/TimerPickerModal.test.js +276 -0
  44. package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -0
  45. package/dist/commonjs/tests/colorToRgba.test.js +176 -0
  46. package/dist/commonjs/tests/colorToRgba.test.js.map +1 -0
  47. package/dist/commonjs/tests/generateNumbers.test.js +350 -0
  48. package/dist/commonjs/tests/generateNumbers.test.js.map +1 -0
  49. package/dist/commonjs/tests/getAdjustedLimit.test.js +324 -0
  50. package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -0
  51. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js +424 -0
  52. package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  53. package/dist/commonjs/tests/getInitialScrollIndex.test.js +396 -0
  54. package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -0
  55. package/dist/commonjs/tests/getSafeInitialValue.test.js +499 -0
  56. package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -0
  57. package/dist/commonjs/tests/padNumber.test.js +301 -0
  58. package/dist/commonjs/tests/padNumber.test.js.map +1 -0
  59. package/dist/commonjs/utils/colorToRgba.js +87 -0
  60. package/dist/commonjs/utils/colorToRgba.js.map +1 -0
  61. package/dist/commonjs/utils/generateNumbers.js +124 -0
  62. package/dist/commonjs/utils/generateNumbers.js.map +1 -0
  63. package/dist/commonjs/utils/getAdjustedLimit.js +58 -0
  64. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -0
  65. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +62 -0
  66. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  67. package/dist/commonjs/utils/getInitialScrollIndex.js +57 -0
  68. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -0
  69. package/dist/commonjs/utils/getSafeInitialValue.js +41 -0
  70. package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -0
  71. package/dist/commonjs/utils/padNumber.js +40 -0
  72. package/dist/commonjs/utils/padNumber.js.map +1 -0
  73. package/dist/module/components/DurationScroll/DurationScroll.js +418 -0
  74. package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -0
  75. package/dist/module/components/DurationScroll/index.js +3 -0
  76. package/dist/module/components/DurationScroll/index.js.map +1 -0
  77. package/dist/module/components/DurationScroll/types.js +2 -0
  78. package/dist/module/components/DurationScroll/types.js.map +1 -0
  79. package/dist/module/components/Modal/Modal.js +99 -0
  80. package/dist/module/components/Modal/Modal.js.map +1 -0
  81. package/dist/module/components/Modal/index.js +3 -0
  82. package/dist/module/components/Modal/index.js.map +1 -0
  83. package/dist/module/components/Modal/styles.js +19 -0
  84. package/dist/module/components/Modal/styles.js.map +1 -0
  85. package/dist/module/components/Modal/types.js +2 -0
  86. package/dist/module/components/Modal/types.js.map +1 -0
  87. package/dist/module/components/PickerItem/PickerItem.js +41 -0
  88. package/dist/module/components/PickerItem/PickerItem.js.map +1 -0
  89. package/dist/module/components/PickerItem/index.js +2 -0
  90. package/dist/module/components/PickerItem/index.js.map +1 -0
  91. package/dist/module/components/TimerPicker/TimerPicker.js +258 -0
  92. package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -0
  93. package/dist/module/components/TimerPicker/index.js +4 -0
  94. package/dist/module/components/TimerPicker/index.js.map +1 -0
  95. package/dist/module/components/TimerPicker/styles.js +133 -0
  96. package/dist/module/components/TimerPicker/styles.js.map +1 -0
  97. package/dist/module/components/TimerPicker/types.js +2 -0
  98. package/dist/module/components/TimerPicker/types.js.map +1 -0
  99. package/dist/module/components/TimerPickerModal/TimerPickerModal.js +165 -0
  100. package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
  101. package/dist/module/components/TimerPickerModal/index.js +4 -0
  102. package/dist/module/components/TimerPickerModal/index.js.map +1 -0
  103. package/dist/module/components/TimerPickerModal/styles.js +88 -0
  104. package/dist/module/components/TimerPickerModal/styles.js.map +1 -0
  105. package/dist/module/components/TimerPickerModal/types.js +2 -0
  106. package/dist/module/components/TimerPickerModal/types.js.map +1 -0
  107. package/dist/module/index.js +3 -0
  108. package/dist/module/index.js.map +1 -0
  109. package/dist/module/tests/DurationScroll.test.js +160 -0
  110. package/dist/module/tests/DurationScroll.test.js.map +1 -0
  111. package/dist/module/tests/Modal.test.js +96 -0
  112. package/dist/module/tests/Modal.test.js.map +1 -0
  113. package/dist/module/tests/TimerPicker.test.js +159 -0
  114. package/dist/module/tests/TimerPicker.test.js.map +1 -0
  115. package/dist/module/tests/TimerPickerModal.test.js +273 -0
  116. package/dist/module/tests/TimerPickerModal.test.js.map +1 -0
  117. package/dist/module/tests/colorToRgba.test.js +174 -0
  118. package/dist/module/tests/colorToRgba.test.js.map +1 -0
  119. package/dist/module/tests/generateNumbers.test.js +348 -0
  120. package/dist/module/tests/generateNumbers.test.js.map +1 -0
  121. package/dist/module/tests/getAdjustedLimit.test.js +322 -0
  122. package/dist/module/tests/getAdjustedLimit.test.js.map +1 -0
  123. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js +422 -0
  124. package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -0
  125. package/dist/module/tests/getInitialScrollIndex.test.js +394 -0
  126. package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -0
  127. package/dist/module/tests/getSafeInitialValue.test.js +496 -0
  128. package/dist/module/tests/getSafeInitialValue.test.js.map +1 -0
  129. package/dist/module/tests/padNumber.test.js +299 -0
  130. package/dist/module/tests/padNumber.test.js.map +1 -0
  131. package/dist/module/utils/colorToRgba.js +80 -0
  132. package/dist/module/utils/colorToRgba.js.map +1 -0
  133. package/dist/module/utils/generateNumbers.js +117 -0
  134. package/dist/module/utils/generateNumbers.js.map +1 -0
  135. package/dist/module/utils/getAdjustedLimit.js +51 -0
  136. package/dist/module/utils/getAdjustedLimit.js.map +1 -0
  137. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +55 -0
  138. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  139. package/dist/module/utils/getInitialScrollIndex.js +50 -0
  140. package/dist/module/utils/getInitialScrollIndex.js.map +1 -0
  141. package/dist/module/utils/getSafeInitialValue.js +34 -0
  142. package/dist/module/utils/getSafeInitialValue.js.map +1 -0
  143. package/dist/module/utils/padNumber.js +33 -0
  144. package/dist/module/utils/padNumber.js.map +1 -0
  145. package/dist/typescript/components/DurationScroll/DurationScroll.d.ts +4 -0
  146. package/dist/typescript/components/DurationScroll/index.d.ts +2 -0
  147. package/dist/typescript/components/DurationScroll/types.d.ts +70 -0
  148. package/dist/typescript/components/Modal/Modal.d.ts +5 -0
  149. package/dist/typescript/components/Modal/index.d.ts +2 -0
  150. package/dist/typescript/components/Modal/styles.d.ts +17 -0
  151. package/dist/typescript/components/Modal/types.d.ts +16 -0
  152. package/dist/typescript/components/PickerItem/PickerItem.d.ts +19 -0
  153. package/dist/typescript/components/PickerItem/index.d.ts +1 -0
  154. package/dist/typescript/components/TimerPicker/TimerPicker.d.ts +4 -0
  155. package/dist/typescript/components/TimerPicker/index.d.ts +3 -0
  156. package/dist/typescript/components/TimerPicker/styles.d.ts +1583 -0
  157. package/dist/typescript/components/TimerPicker/types.d.ts +91 -0
  158. package/dist/typescript/components/TimerPickerModal/TimerPickerModal.d.ts +4 -0
  159. package/dist/typescript/components/TimerPickerModal/index.d.ts +3 -0
  160. package/dist/typescript/components/TimerPickerModal/styles.d.ts +952 -0
  161. package/dist/typescript/components/TimerPickerModal/types.d.ts +56 -0
  162. package/dist/typescript/index.d.ts +4 -0
  163. package/dist/typescript/tests/DurationScroll.test.d.ts +1 -0
  164. package/dist/typescript/tests/Modal.test.d.ts +1 -0
  165. package/dist/typescript/tests/TimerPicker.test.d.ts +1 -0
  166. package/dist/typescript/tests/TimerPickerModal.test.d.ts +1 -0
  167. package/dist/typescript/tests/colorToRgba.test.d.ts +1 -0
  168. package/dist/typescript/tests/generateNumbers.test.d.ts +1 -0
  169. package/dist/typescript/tests/getAdjustedLimit.test.d.ts +1 -0
  170. package/dist/typescript/tests/getDurationAndIndexFromScrollOffset.test.d.ts +1 -0
  171. package/dist/typescript/tests/getInitialScrollIndex.test.d.ts +1 -0
  172. package/dist/typescript/tests/getSafeInitialValue.test.d.ts +1 -0
  173. package/dist/typescript/tests/padNumber.test.d.ts +1 -0
  174. package/dist/typescript/utils/colorToRgba.d.ts +38 -0
  175. package/dist/typescript/utils/generateNumbers.d.ts +80 -0
  176. package/dist/typescript/utils/getAdjustedLimit.d.ts +30 -0
  177. package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +49 -0
  178. package/dist/typescript/utils/getInitialScrollIndex.d.ts +46 -0
  179. package/dist/typescript/utils/getSafeInitialValue.d.ts +38 -0
  180. package/dist/typescript/utils/padNumber.d.ts +28 -0
  181. package/package.json +3 -2
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("@testing-library/react-native");
5
+ var _reactNative2 = require("react-native");
6
+ var _TimerPickerModal = _interopRequireDefault(require("../components/TimerPickerModal"));
7
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
+ 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); }
9
+ describe("TimerPickerModal", () => {
10
+ const mockOnConfirm = jest.fn();
11
+ const mockOnCancel = jest.fn();
12
+ beforeEach(() => {
13
+ jest.useFakeTimers();
14
+ });
15
+ afterEach(() => {
16
+ jest.runOnlyPendingTimers();
17
+ jest.useRealTimers();
18
+ (0, _reactNative.cleanup)();
19
+ });
20
+ const defaultProps = {
21
+ onCancel: mockOnCancel,
22
+ onConfirm: mockOnConfirm,
23
+ setIsVisible: jest.fn(),
24
+ visible: true
25
+ };
26
+ it("renders without crashing", () => {
27
+ const {
28
+ getByTestId
29
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
30
+ const component = getByTestId("timer-picker-modal");
31
+ expect(component).toBeDefined();
32
+ });
33
+ it("calls onConfirm when Confirm button is pressed", () => {
34
+ const {
35
+ getByText
36
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
37
+ const confirmButton = getByText("Confirm");
38
+ _reactNative.fireEvent.press(confirmButton);
39
+ expect(mockOnConfirm).toHaveBeenCalled();
40
+ });
41
+ it("calls onCancel when Cancel button is pressed", () => {
42
+ const {
43
+ getByText
44
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
45
+ const cancelButton = getByText("Cancel");
46
+ _reactNative.fireEvent.press(cancelButton);
47
+ expect(mockOnCancel).toHaveBeenCalled();
48
+ });
49
+ it("hides the modal when Cancel button is pressed", () => {
50
+ const setIsVisibleMock = jest.fn();
51
+ const {
52
+ getByText
53
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
54
+ setIsVisible: setIsVisibleMock
55
+ })));
56
+ const cancelButton = getByText("Cancel");
57
+ _reactNative.fireEvent.press(cancelButton);
58
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
59
+ });
60
+ it("hides the modal when overlay is pressed", () => {
61
+ const setIsVisibleMock = jest.fn();
62
+ const {
63
+ getByTestId
64
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
65
+ closeOnOverlayPress: true,
66
+ setIsVisible: setIsVisibleMock
67
+ })));
68
+ const overlay = getByTestId("modal-backdrop");
69
+ _reactNative.fireEvent.press(overlay);
70
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
71
+ });
72
+ it("calls onConfirm with selected duration when Confirm button is pressed", () => {
73
+ const {
74
+ getByText
75
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
76
+ // Select duration in TimerPicker, assuming its interaction is tested separately
77
+ const confirmButton = getByText("Confirm");
78
+ _reactNative.fireEvent.press(confirmButton);
79
+ expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));
80
+ });
81
+ it("renders but is not visible when visible prop is false", () => {
82
+ const {
83
+ getByTestId
84
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
85
+ visible: false
86
+ })));
87
+ const modal = getByTestId("timer-picker-modal");
88
+ expect(modal).toBeDefined();
89
+ // Modal component still renders but with visible={false}
90
+ expect(modal.props.visible).toBe(false);
91
+ });
92
+ it("renders with custom button labels", () => {
93
+ const {
94
+ getByText
95
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
96
+ cancelButtonText: "Dismiss",
97
+ confirmButtonText: "OK"
98
+ })));
99
+ expect(getByText("OK")).toBeDefined();
100
+ expect(getByText("Dismiss")).toBeDefined();
101
+ });
102
+ it("renders with custom modal title", () => {
103
+ const {
104
+ getByText
105
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
106
+ modalTitle: "Select Time"
107
+ })));
108
+ expect(getByText("Select Time")).toBeDefined();
109
+ });
110
+ it("does not close on overlay press when closeOnOverlayPress is false", () => {
111
+ const setIsVisibleMock = jest.fn();
112
+ const {
113
+ getByTestId
114
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
115
+ closeOnOverlayPress: false,
116
+ setIsVisible: setIsVisibleMock
117
+ })));
118
+ const overlay = getByTestId("modal-backdrop");
119
+ _reactNative.fireEvent.press(overlay);
120
+ expect(setIsVisibleMock).not.toHaveBeenCalled();
121
+ });
122
+ it("hides Cancel button when hideCancelButton is true", () => {
123
+ const {
124
+ queryByText
125
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
126
+ hideCancelButton: true
127
+ })));
128
+ expect(queryByText("Cancel")).toBeNull();
129
+ });
130
+ it("renders with initial value", () => {
131
+ const {
132
+ getByTestId
133
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
134
+ initialValue: {
135
+ hours: 2,
136
+ minutes: 30,
137
+ seconds: 0
138
+ }
139
+ })));
140
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
141
+ });
142
+ it("renders with custom intervals", () => {
143
+ const {
144
+ getByTestId
145
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
146
+ hourInterval: 2,
147
+ minuteInterval: 15,
148
+ secondInterval: 5
149
+ })));
150
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
151
+ });
152
+ it("calls both onCancel and setIsVisible when Cancel is pressed", () => {
153
+ const setIsVisibleMock = jest.fn();
154
+ const onCancelMock = jest.fn();
155
+ const {
156
+ getByText
157
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
158
+ onCancel: onCancelMock,
159
+ setIsVisible: setIsVisibleMock
160
+ })));
161
+ const cancelButton = getByText("Cancel");
162
+ _reactNative.fireEvent.press(cancelButton);
163
+ expect(onCancelMock).toHaveBeenCalled();
164
+ expect(setIsVisibleMock).toHaveBeenCalledWith(false);
165
+ });
166
+ it("hides specific time units when respective hide props are provided", () => {
167
+ const {
168
+ getByTestId
169
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
170
+ hideHours: true,
171
+ hideSeconds: true
172
+ })));
173
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
174
+ // Note: The specific duration scroll test IDs would be in the TimerPicker component
175
+ });
176
+ it("renders without crashing with all optional props", () => {
177
+ const {
178
+ getByTestId
179
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
180
+ cancelButtonText: "Close",
181
+ confirmButtonText: "Done",
182
+ hideDays: false,
183
+ hideHours: false,
184
+ hideMinutes: false,
185
+ hideSeconds: false,
186
+ hourLabel: "h",
187
+ minuteLabel: "m",
188
+ modalTitle: "Pick Duration",
189
+ secondLabel: "s"
190
+ })));
191
+ expect(getByTestId("timer-picker-modal")).toBeDefined();
192
+ });
193
+ it("renders custom cancel button when provided", () => {
194
+ const CustomButton = ({
195
+ onPress
196
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
197
+ onPress: onPress,
198
+ testID: "custom-cancel-button"
199
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Cancel"));
200
+ const {
201
+ getByTestId
202
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
203
+ cancelButton: /*#__PURE__*/_react.default.createElement(CustomButton, null)
204
+ })));
205
+ expect(getByTestId("custom-cancel-button")).toBeDefined();
206
+ });
207
+ it("renders custom confirm button when provided", () => {
208
+ const CustomButton = ({
209
+ onPress
210
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
211
+ onPress: onPress,
212
+ testID: "custom-confirm-button"
213
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Confirm"));
214
+ const {
215
+ getByTestId
216
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
217
+ confirmButton: /*#__PURE__*/_react.default.createElement(CustomButton, null)
218
+ })));
219
+ expect(getByTestId("custom-confirm-button")).toBeDefined();
220
+ });
221
+ it("calls onCancel when custom cancel button is pressed", () => {
222
+ const CustomButton = ({
223
+ onPress
224
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
225
+ onPress: onPress,
226
+ testID: "custom-cancel-button"
227
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Cancel"));
228
+ const {
229
+ getByTestId
230
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
231
+ cancelButton: /*#__PURE__*/_react.default.createElement(CustomButton, null)
232
+ })));
233
+ const customCancelButton = getByTestId("custom-cancel-button");
234
+ _reactNative.fireEvent.press(customCancelButton);
235
+ expect(mockOnCancel).toHaveBeenCalled();
236
+ });
237
+ it("calls onConfirm when custom confirm button is pressed", () => {
238
+ const CustomButton = ({
239
+ onPress
240
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
241
+ onPress: onPress,
242
+ testID: "custom-confirm-button"
243
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Confirm"));
244
+ const {
245
+ getByTestId
246
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
247
+ confirmButton: /*#__PURE__*/_react.default.createElement(CustomButton, null)
248
+ })));
249
+ const customConfirmButton = getByTestId("custom-confirm-button");
250
+ _reactNative.fireEvent.press(customConfirmButton);
251
+ expect(mockOnConfirm).toHaveBeenCalled();
252
+ });
253
+ it("renders both custom cancel and confirm buttons when provided", () => {
254
+ const CustomCancelButton = ({
255
+ onPress
256
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
257
+ onPress: onPress,
258
+ testID: "custom-cancel-button"
259
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Cancel"));
260
+ const CustomConfirmButton = ({
261
+ onPress
262
+ }) => /*#__PURE__*/_react.default.createElement(_reactNative2.TouchableOpacity, {
263
+ onPress: onPress,
264
+ testID: "custom-confirm-button"
265
+ }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Custom Confirm"));
266
+ const {
267
+ getByTestId
268
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
269
+ cancelButton: /*#__PURE__*/_react.default.createElement(CustomCancelButton, null),
270
+ confirmButton: /*#__PURE__*/_react.default.createElement(CustomConfirmButton, null)
271
+ })));
272
+ expect(getByTestId("custom-cancel-button")).toBeDefined();
273
+ expect(getByTestId("custom-confirm-button")).toBeDefined();
274
+ });
275
+ });
276
+ //# sourceMappingURL=TimerPickerModal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNative2","_TimerPickerModal","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","describe","mockOnConfirm","jest","fn","mockOnCancel","beforeEach","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","cleanup","defaultProps","onCancel","onConfirm","setIsVisible","visible","it","getByTestId","render","createElement","component","expect","toBeDefined","getByText","confirmButton","fireEvent","press","toHaveBeenCalled","cancelButton","setIsVisibleMock","toHaveBeenCalledWith","closeOnOverlayPress","overlay","objectContaining","modal","props","toBe","cancelButtonText","confirmButtonText","modalTitle","not","queryByText","hideCancelButton","toBeNull","initialValue","hours","minutes","seconds","hourInterval","minuteInterval","secondInterval","onCancelMock","hideHours","hideSeconds","hideDays","hideMinutes","hourLabel","minuteLabel","secondLabel","CustomButton","onPress","TouchableOpacity","testID","Text","customCancelButton","customConfirmButton","CustomCancelButton","CustomConfirmButton"],"sources":["TimerPickerModal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\nimport { TouchableOpacity, Text } from \"react-native\";\n\nimport TimerPickerModal from \"../components/TimerPickerModal\";\n\ndescribe(\"TimerPickerModal\", () => {\n const mockOnConfirm = jest.fn();\n const mockOnCancel = jest.fn();\n\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n cleanup();\n });\n\n const defaultProps = {\n onCancel: mockOnCancel,\n onConfirm: mockOnConfirm,\n setIsVisible: jest.fn(),\n visible: true,\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 {...defaultProps} setIsVisible={setIsVisibleMock} />\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 {...defaultProps} closeOnOverlayPress setIsVisible={setIsVisibleMock} />\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 it(\"renders but is not visible when visible prop is false\", () => {\n const { getByTestId } = render(<TimerPickerModal {...defaultProps} visible={false} />);\n const modal = getByTestId(\"timer-picker-modal\");\n expect(modal).toBeDefined();\n // Modal component still renders but with visible={false}\n expect(modal.props.visible).toBe(false);\n });\n\n it(\"renders with custom button labels\", () => {\n const { getByText } = render(\n <TimerPickerModal {...defaultProps} cancelButtonText=\"Dismiss\" confirmButtonText=\"OK\" />\n );\n expect(getByText(\"OK\")).toBeDefined();\n expect(getByText(\"Dismiss\")).toBeDefined();\n });\n\n it(\"renders with custom modal title\", () => {\n const { getByText } = render(<TimerPickerModal {...defaultProps} modalTitle=\"Select Time\" />);\n expect(getByText(\"Select Time\")).toBeDefined();\n });\n\n it(\"does not close on overlay press when closeOnOverlayPress is false\", () => {\n const setIsVisibleMock = jest.fn();\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n closeOnOverlayPress={false}\n setIsVisible={setIsVisibleMock}\n />\n );\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(setIsVisibleMock).not.toHaveBeenCalled();\n });\n\n it(\"hides Cancel button when hideCancelButton is true\", () => {\n const { queryByText } = render(<TimerPickerModal {...defaultProps} hideCancelButton />);\n expect(queryByText(\"Cancel\")).toBeNull();\n });\n\n it(\"renders with initial value\", () => {\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} initialValue={{ hours: 2, minutes: 30, seconds: 0 }} />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n\n it(\"renders with custom intervals\", () => {\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} hourInterval={2} minuteInterval={15} secondInterval={5} />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n\n it(\"calls both onCancel and setIsVisible when Cancel is pressed\", () => {\n const setIsVisibleMock = jest.fn();\n const onCancelMock = jest.fn();\n const { getByText } = render(\n <TimerPickerModal {...defaultProps} onCancel={onCancelMock} setIsVisible={setIsVisibleMock} />\n );\n const cancelButton = getByText(\"Cancel\");\n fireEvent.press(cancelButton);\n expect(onCancelMock).toHaveBeenCalled();\n expect(setIsVisibleMock).toHaveBeenCalledWith(false);\n });\n\n it(\"hides specific time units when respective hide props are provided\", () => {\n const { getByTestId } = render(<TimerPickerModal {...defaultProps} hideHours hideSeconds />);\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n // Note: The specific duration scroll test IDs would be in the TimerPicker component\n });\n\n it(\"renders without crashing with all optional props\", () => {\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n cancelButtonText=\"Close\"\n confirmButtonText=\"Done\"\n hideDays={false}\n hideHours={false}\n hideMinutes={false}\n hideSeconds={false}\n hourLabel=\"h\"\n minuteLabel=\"m\"\n modalTitle=\"Pick Duration\"\n secondLabel=\"s\"\n />\n );\n expect(getByTestId(\"timer-picker-modal\")).toBeDefined();\n });\n\n it(\"renders custom cancel button when provided\", () => {\n const CustomButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-cancel-button\">\n <Text>Custom Cancel</Text>\n </TouchableOpacity>\n );\n\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} cancelButton={<CustomButton />} />\n );\n expect(getByTestId(\"custom-cancel-button\")).toBeDefined();\n });\n\n it(\"renders custom confirm button when provided\", () => {\n const CustomButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-confirm-button\">\n <Text>Custom Confirm</Text>\n </TouchableOpacity>\n );\n\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} confirmButton={<CustomButton />} />\n );\n expect(getByTestId(\"custom-confirm-button\")).toBeDefined();\n });\n\n it(\"calls onCancel when custom cancel button is pressed\", () => {\n const CustomButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-cancel-button\">\n <Text>Custom Cancel</Text>\n </TouchableOpacity>\n );\n\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} cancelButton={<CustomButton />} />\n );\n const customCancelButton = getByTestId(\"custom-cancel-button\");\n fireEvent.press(customCancelButton);\n expect(mockOnCancel).toHaveBeenCalled();\n });\n\n it(\"calls onConfirm when custom confirm button is pressed\", () => {\n const CustomButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-confirm-button\">\n <Text>Custom Confirm</Text>\n </TouchableOpacity>\n );\n\n const { getByTestId } = render(\n <TimerPickerModal {...defaultProps} confirmButton={<CustomButton />} />\n );\n const customConfirmButton = getByTestId(\"custom-confirm-button\");\n fireEvent.press(customConfirmButton);\n expect(mockOnConfirm).toHaveBeenCalled();\n });\n\n it(\"renders both custom cancel and confirm buttons when provided\", () => {\n const CustomCancelButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-cancel-button\">\n <Text>Custom Cancel</Text>\n </TouchableOpacity>\n );\n const CustomConfirmButton = ({ onPress }: { onPress?: () => void }) => (\n <TouchableOpacity onPress={onPress} testID=\"custom-confirm-button\">\n <Text>Custom Confirm</Text>\n </TouchableOpacity>\n );\n\n const { getByTestId } = render(\n <TimerPickerModal\n {...defaultProps}\n cancelButton={<CustomCancelButton />}\n confirmButton={<CustomConfirmButton />}\n />\n );\n expect(getByTestId(\"custom-cancel-button\")).toBeDefined();\n expect(getByTestId(\"custom-confirm-button\")).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ var _colorToRgba = require("../utils/colorToRgba");
4
+ describe("colorToRgba", () => {
5
+ describe("named colors", () => {
6
+ it("converts 'transparent' to rgba", () => {
7
+ expect((0, _colorToRgba.colorToRgba)({
8
+ color: "transparent"
9
+ })).toBe("rgba(0, 0, 0, 0)");
10
+ });
11
+ it("converts 'black' to rgba", () => {
12
+ expect((0, _colorToRgba.colorToRgba)({
13
+ color: "black"
14
+ })).toBe("rgba(0, 0, 0, 1)");
15
+ });
16
+ it("converts 'white' to rgba", () => {
17
+ expect((0, _colorToRgba.colorToRgba)({
18
+ color: "white"
19
+ })).toBe("rgba(255, 255, 255, 1)");
20
+ });
21
+ it("converts 'blue' to rgba", () => {
22
+ expect((0, _colorToRgba.colorToRgba)({
23
+ color: "blue"
24
+ })).toBe("rgba(0, 0, 255, 1)");
25
+ });
26
+ it("converts 'green' to rgba", () => {
27
+ expect((0, _colorToRgba.colorToRgba)({
28
+ color: "green"
29
+ })).toBe("rgba(0, 128, 0, 1)");
30
+ });
31
+ it("converts 'gray' to rgba", () => {
32
+ expect((0, _colorToRgba.colorToRgba)({
33
+ color: "gray"
34
+ })).toBe("rgba(128, 128, 128, 1)");
35
+ });
36
+ it("converts 'red' to rgba", () => {
37
+ expect((0, _colorToRgba.colorToRgba)({
38
+ color: "red"
39
+ })).toBe("rgba(255, 0, 0, 1)");
40
+ });
41
+ });
42
+ describe("RGB format", () => {
43
+ it("converts rgb color to rgba with default opacity", () => {
44
+ expect((0, _colorToRgba.colorToRgba)({
45
+ color: "rgb(255, 0, 0)"
46
+ })).toBe("rgba(255, 0, 0, 1)");
47
+ });
48
+ it("converts rgb color to rgba with custom opacity", () => {
49
+ expect((0, _colorToRgba.colorToRgba)({
50
+ color: "rgb(255, 0, 0)",
51
+ opacity: 0.5
52
+ })).toBe("rgba(255, 0, 0, 0.5)");
53
+ });
54
+ it("converts rgb color with spaces", () => {
55
+ expect((0, _colorToRgba.colorToRgba)({
56
+ color: "rgb(128, 64, 32)"
57
+ })).toBe("rgba(128, 64, 32, 1)");
58
+ });
59
+ it("converts rgb color with no spaces", () => {
60
+ expect((0, _colorToRgba.colorToRgba)({
61
+ color: "rgb(128,64,32)"
62
+ })).toBe("rgba(128, 64, 32, 1)");
63
+ });
64
+ it("handles rgb with zero values", () => {
65
+ expect((0, _colorToRgba.colorToRgba)({
66
+ color: "rgb(0, 0, 0)"
67
+ })).toBe("rgba(0, 0, 0, 1)");
68
+ });
69
+ it("handles rgb with max values", () => {
70
+ expect((0, _colorToRgba.colorToRgba)({
71
+ color: "rgb(255, 255, 255)"
72
+ })).toBe("rgba(255, 255, 255, 1)");
73
+ });
74
+ });
75
+ describe("hex format", () => {
76
+ it("converts 6-digit hex color to rgba", () => {
77
+ expect((0, _colorToRgba.colorToRgba)({
78
+ color: "#FF0000"
79
+ })).toBe("rgba(255, 0, 0, 1)");
80
+ });
81
+ it("converts 6-digit hex color with custom opacity", () => {
82
+ expect((0, _colorToRgba.colorToRgba)({
83
+ color: "#FF0000",
84
+ opacity: 0.7
85
+ })).toBe("rgba(255, 0, 0, 0.7)");
86
+ });
87
+ it("converts 3-digit hex color to rgba", () => {
88
+ expect((0, _colorToRgba.colorToRgba)({
89
+ color: "#F00"
90
+ })).toBe("rgba(255, 0, 0, 1)");
91
+ });
92
+ it("converts 3-digit hex color with custom opacity", () => {
93
+ expect((0, _colorToRgba.colorToRgba)({
94
+ color: "#F00",
95
+ opacity: 0.3
96
+ })).toBe("rgba(255, 0, 0, 0.3)");
97
+ });
98
+ it("converts lowercase hex color", () => {
99
+ expect((0, _colorToRgba.colorToRgba)({
100
+ color: "#ff0000"
101
+ })).toBe("rgba(255, 0, 0, 1)");
102
+ });
103
+ it("converts mixed case hex color", () => {
104
+ expect((0, _colorToRgba.colorToRgba)({
105
+ color: "#Ff00Aa"
106
+ })).toBe("rgba(255, 0, 170, 1)");
107
+ });
108
+ it("converts hex black", () => {
109
+ expect((0, _colorToRgba.colorToRgba)({
110
+ color: "#000000"
111
+ })).toBe("rgba(0, 0, 0, 1)");
112
+ });
113
+ it("converts hex white", () => {
114
+ expect((0, _colorToRgba.colorToRgba)({
115
+ color: "#FFFFFF"
116
+ })).toBe("rgba(255, 255, 255, 1)");
117
+ });
118
+ it("converts 3-digit gray hex", () => {
119
+ expect((0, _colorToRgba.colorToRgba)({
120
+ color: "#888"
121
+ })).toBe("rgba(136, 136, 136, 1)");
122
+ });
123
+ });
124
+ describe("opacity handling", () => {
125
+ it("uses opacity 1 when not provided", () => {
126
+ expect((0, _colorToRgba.colorToRgba)({
127
+ color: "#FF0000"
128
+ })).toBe("rgba(255, 0, 0, 1)");
129
+ });
130
+ it("handles opacity 0", () => {
131
+ expect((0, _colorToRgba.colorToRgba)({
132
+ color: "#FF0000",
133
+ opacity: 0
134
+ })).toBe("rgba(255, 0, 0, 0)");
135
+ });
136
+ it("handles opacity 1", () => {
137
+ expect((0, _colorToRgba.colorToRgba)({
138
+ color: "#FF0000",
139
+ opacity: 1
140
+ })).toBe("rgba(255, 0, 0, 1)");
141
+ });
142
+ it("handles decimal opacity", () => {
143
+ expect((0, _colorToRgba.colorToRgba)({
144
+ color: "#FF0000",
145
+ opacity: 0.42
146
+ })).toBe("rgba(255, 0, 0, 0.42)");
147
+ });
148
+ it("ignores opacity for named color 'transparent'", () => {
149
+ expect((0, _colorToRgba.colorToRgba)({
150
+ color: "transparent",
151
+ opacity: 0.5
152
+ })).toBe("rgba(0, 0, 0, 0)");
153
+ });
154
+ });
155
+ describe("edge cases", () => {
156
+ it("returns original color for unknown format", () => {
157
+ const unknownColor = "hsl(120, 100%, 50%)";
158
+ expect((0, _colorToRgba.colorToRgba)({
159
+ color: unknownColor
160
+ })).toBe(unknownColor);
161
+ });
162
+ it("returns original color for invalid named color", () => {
163
+ const invalidColor = "magenta";
164
+ expect((0, _colorToRgba.colorToRgba)({
165
+ color: invalidColor
166
+ })).toBe(invalidColor);
167
+ });
168
+ it("returns original color for malformed hex", () => {
169
+ const malformedHex = "#GG0000";
170
+ expect((0, _colorToRgba.colorToRgba)({
171
+ color: malformedHex
172
+ })).toBe(malformedHex);
173
+ });
174
+ });
175
+ });
176
+ //# sourceMappingURL=colorToRgba.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_colorToRgba","require","describe","it","expect","colorToRgba","color","toBe","opacity","unknownColor","invalidColor","malformedHex"],"sources":["colorToRgba.test.ts"],"sourcesContent":["import { colorToRgba } from \"../utils/colorToRgba\";\n\ndescribe(\"colorToRgba\", () => {\n describe(\"named colors\", () => {\n it(\"converts 'transparent' to rgba\", () => {\n expect(colorToRgba({ color: \"transparent\" })).toBe(\"rgba(0, 0, 0, 0)\");\n });\n\n it(\"converts 'black' to rgba\", () => {\n expect(colorToRgba({ color: \"black\" })).toBe(\"rgba(0, 0, 0, 1)\");\n });\n\n it(\"converts 'white' to rgba\", () => {\n expect(colorToRgba({ color: \"white\" })).toBe(\"rgba(255, 255, 255, 1)\");\n });\n\n it(\"converts 'blue' to rgba\", () => {\n expect(colorToRgba({ color: \"blue\" })).toBe(\"rgba(0, 0, 255, 1)\");\n });\n\n it(\"converts 'green' to rgba\", () => {\n expect(colorToRgba({ color: \"green\" })).toBe(\"rgba(0, 128, 0, 1)\");\n });\n\n it(\"converts 'gray' to rgba\", () => {\n expect(colorToRgba({ color: \"gray\" })).toBe(\"rgba(128, 128, 128, 1)\");\n });\n\n it(\"converts 'red' to rgba\", () => {\n expect(colorToRgba({ color: \"red\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n });\n\n describe(\"RGB format\", () => {\n it(\"converts rgb color to rgba with default opacity\", () => {\n expect(colorToRgba({ color: \"rgb(255, 0, 0)\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"converts rgb color to rgba with custom opacity\", () => {\n expect(colorToRgba({ color: \"rgb(255, 0, 0)\", opacity: 0.5 })).toBe(\"rgba(255, 0, 0, 0.5)\");\n });\n\n it(\"converts rgb color with spaces\", () => {\n expect(colorToRgba({ color: \"rgb(128, 64, 32)\" })).toBe(\"rgba(128, 64, 32, 1)\");\n });\n\n it(\"converts rgb color with no spaces\", () => {\n expect(colorToRgba({ color: \"rgb(128,64,32)\" })).toBe(\"rgba(128, 64, 32, 1)\");\n });\n\n it(\"handles rgb with zero values\", () => {\n expect(colorToRgba({ color: \"rgb(0, 0, 0)\" })).toBe(\"rgba(0, 0, 0, 1)\");\n });\n\n it(\"handles rgb with max values\", () => {\n expect(colorToRgba({ color: \"rgb(255, 255, 255)\" })).toBe(\"rgba(255, 255, 255, 1)\");\n });\n });\n\n describe(\"hex format\", () => {\n it(\"converts 6-digit hex color to rgba\", () => {\n expect(colorToRgba({ color: \"#FF0000\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"converts 6-digit hex color with custom opacity\", () => {\n expect(colorToRgba({ color: \"#FF0000\", opacity: 0.7 })).toBe(\"rgba(255, 0, 0, 0.7)\");\n });\n\n it(\"converts 3-digit hex color to rgba\", () => {\n expect(colorToRgba({ color: \"#F00\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"converts 3-digit hex color with custom opacity\", () => {\n expect(colorToRgba({ color: \"#F00\", opacity: 0.3 })).toBe(\"rgba(255, 0, 0, 0.3)\");\n });\n\n it(\"converts lowercase hex color\", () => {\n expect(colorToRgba({ color: \"#ff0000\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"converts mixed case hex color\", () => {\n expect(colorToRgba({ color: \"#Ff00Aa\" })).toBe(\"rgba(255, 0, 170, 1)\");\n });\n\n it(\"converts hex black\", () => {\n expect(colorToRgba({ color: \"#000000\" })).toBe(\"rgba(0, 0, 0, 1)\");\n });\n\n it(\"converts hex white\", () => {\n expect(colorToRgba({ color: \"#FFFFFF\" })).toBe(\"rgba(255, 255, 255, 1)\");\n });\n\n it(\"converts 3-digit gray hex\", () => {\n expect(colorToRgba({ color: \"#888\" })).toBe(\"rgba(136, 136, 136, 1)\");\n });\n });\n\n describe(\"opacity handling\", () => {\n it(\"uses opacity 1 when not provided\", () => {\n expect(colorToRgba({ color: \"#FF0000\" })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"handles opacity 0\", () => {\n expect(colorToRgba({ color: \"#FF0000\", opacity: 0 })).toBe(\"rgba(255, 0, 0, 0)\");\n });\n\n it(\"handles opacity 1\", () => {\n expect(colorToRgba({ color: \"#FF0000\", opacity: 1 })).toBe(\"rgba(255, 0, 0, 1)\");\n });\n\n it(\"handles decimal opacity\", () => {\n expect(colorToRgba({ color: \"#FF0000\", opacity: 0.42 })).toBe(\"rgba(255, 0, 0, 0.42)\");\n });\n\n it(\"ignores opacity for named color 'transparent'\", () => {\n expect(colorToRgba({ color: \"transparent\", opacity: 0.5 })).toBe(\"rgba(0, 0, 0, 0)\");\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"returns original color for unknown format\", () => {\n const unknownColor = \"hsl(120, 100%, 50%)\";\n expect(colorToRgba({ color: unknownColor })).toBe(unknownColor);\n });\n\n it(\"returns original color for invalid named color\", () => {\n const invalidColor = \"magenta\";\n expect(colorToRgba({ color: invalidColor })).toBe(invalidColor);\n });\n\n it(\"returns original color for malformed hex\", () => {\n const malformedHex = \"#GG0000\";\n expect(colorToRgba({ color: malformedHex })).toBe(malformedHex);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}