react-native-timer-picker 2.2.2 → 2.2.3
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.
- package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +8 -2
- package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
- package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
- package/dist/module/components/TimerPickerModal/TimerPickerModal.js +8 -2
- package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
- package/dist/module/components/TimerPickerModal/types.js.map +1 -1
- package/dist/typescript/components/TimerPickerModal/types.d.ts +4 -4
- package/package.json +1 -1
|
@@ -97,8 +97,14 @@ const TimerPickerModal = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
97
97
|
reset,
|
|
98
98
|
setValue: (value, options) => {
|
|
99
99
|
var _timerPickerRef$curre3;
|
|
100
|
-
setSelectedDuration(
|
|
101
|
-
|
|
100
|
+
setSelectedDuration(prev => ({
|
|
101
|
+
...prev,
|
|
102
|
+
...value
|
|
103
|
+
}));
|
|
104
|
+
setConfirmedDuration(prev => ({
|
|
105
|
+
...prev,
|
|
106
|
+
...value
|
|
107
|
+
}));
|
|
102
108
|
(_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || _timerPickerRef$curre3.setValue(value, options);
|
|
103
109
|
},
|
|
104
110
|
latestDuration: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getSafeInitialValue","_Modal","_interopRequireDefault","_TimerPicker","_styles","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_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","days","hours","minutes","seconds","selectedDuration","setSelectedDuration","useState","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","useEffect","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$days","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","useCallback","duration","useImperativeHandle","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","_timerPickerRef$curre7","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":["TimerPickerModal.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\";\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 days: initialValue?.days,\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.days,\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n days: confirmedDuration.days,\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 days: latestDuration?.days?.current ?? selectedDuration.days,\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: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => {\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 days: timerPickerRef.current?.latestDuration?.days,\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":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AASA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAD,sBAAA,CAAAJ,OAAA;AAGA,IAAAM,OAAA,GAAAN,OAAA;AAA0C,SAAAI,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,CAAAQ,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,SAAA,WAAAA,QAAA,GAAAH,MAAA,CAAAI,MAAA,GAAAJ,MAAA,CAAAI,MAAA,CAAAC,IAAA,eAAAf,CAAA,aAAAN,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAG,CAAA,GAAAmB,SAAA,CAAAtB,CAAA,YAAAK,CAAA,IAAAF,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAZ,CAAA,EAAAE,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAF,CAAA,CAAAE,CAAA,aAAAC,CAAA,KAAAa,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAG1C,MAAMG,gBAAgB,gBAAG,IAAAC,iBAAU,EAC/B,CAACC,KAAK,EAAEC,GAAG,KAAK;EACZ,MAAM;IACFC,oBAAoB;IACpBC,2BAA2B;IAC3BC,gBAAgB,GAAG,QAAQ;IAC3BC,mBAAmB;IACnBC,iBAAiB,GAAG,SAAS;IAC7BC,cAAc;IACdC,qBAAqB;IACrBC,gBAAgB,GAAG,KAAK;IACxBC,YAAY;IACZC,UAAU;IACVC,UAAU;IACVC,eAAe;IACfC,QAAQ;IACRC,SAAS;IACTC,gBAAgB;IAChBC,YAAY;IACZC,MAAM,EAAEC,YAAY;IACpBC,OAAO;IACP,GAAGC;EACP,CAAC,GAAGrB,KAAK;EAET,MAAMkB,MAAM,GAAG,IAAAI,sBAAc,EAACH,YAAY,EAAE;IACxCI,aAAa,EAAEC,OAAO,CAACZ,UAAU;EACrC,CAAC,CAAC;EAEF,MAAMa,cAAc,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EAEnD,MAAMC,gBAAgB,GAAG,IAAAC,wCAAmB,EAAC;IACzCC,IAAI,EAAEnB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEmB,IAAI;IACxBC,KAAK,EAAEpB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEoB,KAAK;IAC1BC,OAAO,EAAErB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEqB,OAAO;IAC9BC,OAAO,EAAEtB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEsB;EAC3B,CAAC,CAAC;EAEF,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GACzC,IAAAC,eAAQ,EAACR,gBAAgB,CAAC;EAC9B,MAAM,CAACS,iBAAiB,EAAEC,oBAAoB,CAAC,GAC3C,IAAAF,eAAQ,EAACR,gBAAgB,CAAC;EAE9B,MAAMW,KAAK,GAAIC,OAAgC,IAAK;IAAA,IAAAC,qBAAA;IAChDN,mBAAmB,CAACP,gBAAgB,CAAC;IACrCU,oBAAoB,CAACV,gBAAgB,CAAC;IACtC,CAAAa,qBAAA,GAAAf,cAAc,CAACgB,OAAO,cAAAD,qBAAA,eAAtBA,qBAAA,CAAwBF,KAAK,CAACC,OAAO,CAAC;EAC1C,CAAC;;EAED;EACA,IAAAG,gBAAS,EAAC,MAAM;IACZJ,KAAK,CAAC,CAAC;IACP;EACJ,CAAC,EAAE,CACCX,gBAAgB,CAACE,IAAI,EACrBF,gBAAgB,CAACG,KAAK,EACtBH,gBAAgB,CAACI,OAAO,EACxBJ,gBAAgB,CAACK,OAAO,CAC3B,CAAC;EAEF,MAAMW,gBAAgB,GAAGA,CAAA,KAAM;IAC3BT,mBAAmB,CAAC;MAChBL,IAAI,EAAEO,iBAAiB,CAACP,IAAI;MAC5BC,KAAK,EAAEM,iBAAiB,CAACN,KAAK;MAC9BC,OAAO,EAAEK,iBAAiB,CAACL,OAAO;MAClCC,OAAO,EAAEI,iBAAiB,CAACJ;IAC/B,CAAC,CAAC;IACFf,YAAY,CAAC,KAAK,CAAC;EACvB,CAAC;EAED,MAAM2B,cAAc,GAAGA,CAAA,KAAM;IAAA,IAAAC,sBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACzB,MAAMC,cAAc,IAAAL,sBAAA,GAAGpB,cAAc,CAACgB,OAAO,cAAAI,sBAAA,uBAAtBA,sBAAA,CAAwBK,cAAc;IAE7D,MAAMC,WAAW,GAAG;MAChBtB,IAAI,EAAE,CAAAqB,cAAc,aAAdA,cAAc,gBAAAJ,oBAAA,GAAdI,cAAc,CAAErB,IAAI,cAAAiB,oBAAA,uBAApBA,oBAAA,CAAsBL,OAAO,KAAIR,gBAAgB,CAACJ,IAAI;MAC5DC,KAAK,EAAE,CAAAoB,cAAc,aAAdA,cAAc,gBAAAH,qBAAA,GAAdG,cAAc,CAAEpB,KAAK,cAAAiB,qBAAA,uBAArBA,qBAAA,CAAuBN,OAAO,KAAIR,gBAAgB,CAACH,KAAK;MAC/DC,OAAO,EACH,CAAAmB,cAAc,aAAdA,cAAc,gBAAAF,qBAAA,GAAdE,cAAc,CAAEnB,OAAO,cAAAiB,qBAAA,uBAAvBA,qBAAA,CAAyBP,OAAO,KAChCR,gBAAgB,CAACF,OAAO;MAC5BC,OAAO,EACH,CAAAkB,cAAc,aAAdA,cAAc,gBAAAD,qBAAA,GAAdC,cAAc,CAAElB,OAAO,cAAAiB,qBAAA,uBAAvBA,qBAAA,CAAyBR,OAAO,KAChCR,gBAAgB,CAACD;IACzB,CAAC;IACDK,oBAAoB,CAACc,WAAW,CAAC;IACjCpC,SAAS,CAACoC,WAAW,CAAC;EAC1B,CAAC;EAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;IACxBnC,YAAY,CAAC,KAAK,CAAC;IACnBiB,mBAAmB,CAACE,iBAAiB,CAAC;IACtCtB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG,CAAC;EAChB,CAAC;;EAED;EACA,MAAMuC,qBAAqB,GAAG,IAAAC,kBAAW,EACpCC,QAKA,IAAK;IACFrB,mBAAmB,CAACqB,QAAQ,CAAC;IAC7BvC,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAGuC,QAAQ,CAAC;EAChC,CAAC,EACD,CAACvC,gBAAgB,CACrB,CAAC;EAED,IAAAwC,0BAAmB,EAACvD,GAAG,EAAE;IAAA,IAAAwD,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAAA,OAAO;MAC5BtB,KAAK;MACLuB,QAAQ,EAAEA,CAACC,KAAK,EAAEvB,OAAO,KAAK;QAAA,IAAAwB,sBAAA;QAC1B7B,mBAAmB,CAAC4B,KAAK,CAAC;QAC1BzB,oBAAoB,CAACyB,KAAK,CAAC;QAC3B,CAAAC,sBAAA,GAAAtC,cAAc,CAACgB,OAAO,cAAAsB,sBAAA,eAAtBA,sBAAA,CAAwBF,QAAQ,CAACC,KAAK,EAAEvB,OAAO,CAAC;MACpD,CAAC;MACDW,cAAc,EAAE;QACZrB,IAAI,GAAA4B,sBAAA,GAAEhC,cAAc,CAACgB,OAAO,cAAAgB,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBP,cAAc,cAAAO,sBAAA,uBAAtCA,sBAAA,CAAwC5B,IAAI;QAClDC,KAAK,GAAA4B,sBAAA,GAAEjC,cAAc,CAACgB,OAAO,cAAAiB,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBR,cAAc,cAAAQ,sBAAA,uBAAtCA,sBAAA,CAAwC5B,KAAK;QACpDC,OAAO,GAAA4B,sBAAA,GAAElC,cAAc,CAACgB,OAAO,cAAAkB,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBT,cAAc,cAAAS,sBAAA,uBAAtCA,sBAAA,CAAwC5B,OAAO;QACxDC,OAAO,GAAA4B,sBAAA,GAAEnC,cAAc,CAACgB,OAAO,cAAAmB,sBAAA,gBAAAA,sBAAA,GAAtBA,sBAAA,CAAwBV,cAAc,cAAAU,sBAAA,uBAAtCA,sBAAA,CAAwC5B;MACrD;IACJ,CAAC;EAAA,CAAC,CAAC;EAEH,oBACIpE,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAAC/F,MAAA,CAAAM,OAAK,EAAAiB,QAAA;IACFyE,SAAS,EAAE7C,OAAQ;IACnB8C,cAAc,EACV7D,mBAAmB,GAAGsC,gBAAgB,GAAGwB;EAC5C,GACGxD,UAAU;IACdyD,MAAM,EAAC;EAAoB,iBAC3BxG,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAAsG,IAAI,EAAA7E,QAAA,KAAKe,cAAc;IAAE+D,KAAK,EAAEpD,MAAM,CAACqD;EAAU,iBAC9C3G,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAAsG,IAAI,EAAA7E,QAAA,KACGgB,qBAAqB;IACzB8D,KAAK,EAAEpD,MAAM,CAACsD;EAAiB,IAC9B5D,UAAU,gBACPhD,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAA0G,IAAI,EAAAjF,QAAA,KACGqB,eAAe;IACnByD,KAAK,EAAEpD,MAAM,CAACN;EAAW,IACxBA,UACC,CAAC,GACP,IAAI,eACRhD,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAAC7F,YAAA,CAAAI,OAAW,EAAAiB,QAAA;IACRS,GAAG,EAAEwB,cAAe;IACpBf,YAAY,EAAE0B;EAAkB,GAC5Bf,UAAU;IACdqD,6BAA6B;IAC7B1D,gBAAgB,EAAEqC,qBAAsB;IACxCnC,MAAM,EAAEA,MAAM,CAACyD;EAAkB,EACpC,CAAC,eACF/G,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAAsG,IAAI,EAAA7E,QAAA,KACGU,oBAAoB;IACxBoE,KAAK,EAAEpD,MAAM,CAAC0D;EAAgB,IAC7B,CAACnE,gBAAgB,gBACd7C,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAA8G,gBAAgB,EAAArF,QAAA,KACTW,2BAA2B;IAC/B2E,OAAO,EAAE1B;EAAc,iBACvBxF,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAA0G,IAAI;IACDH,KAAK,EAAE,CACHpD,MAAM,CAAC6D,MAAM,EACb7D,MAAM,CAAC8D,YAAY;EACrB,GACD5E,gBACC,CACQ,CAAC,GACnB,IAAI,eACRxC,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAA8G,gBAAgB,EAAArF,QAAA,KACTW,2BAA2B;IAC/B2E,OAAO,EAAElC;EAAe,iBACxBhF,MAAA,CAAAW,OAAA,CAAAyF,aAAA,CAACjG,YAAA,CAAA0G,IAAI;IACDH,KAAK,EAAE,CACHpD,MAAM,CAAC6D,MAAM,EACb7D,MAAM,CAAC+D,aAAa;EACtB,GACD3E,iBACC,CACQ,CAChB,CACJ,CACJ,CACH,CAAC;AAEhB,CACJ,CAAC;AAAC,IAAA4E,QAAA,GAAAC,OAAA,CAAA5G,OAAA,gBAEa6G,cAAK,CAACC,IAAI,CAACvF,gBAAgB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getSafeInitialValue","_Modal","_interopRequireDefault","_TimerPicker","_styles","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_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","days","hours","minutes","seconds","selectedDuration","setSelectedDuration","useState","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","useEffect","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$days","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","useCallback","duration","useImperativeHandle","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","_timerPickerRef$curre7","setValue","value","_timerPickerRef$curre3","prev","createElement","isVisible","onOverlayPress","undefined","testID","View","style","container","contentContainer","Text","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","TouchableOpacity","onPress","button","cancelButton","confirmButton","_default","exports","React","memo"],"sources":["TimerPickerModal.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\";\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 days: initialValue?.days,\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.days,\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n days: confirmedDuration.days,\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 days: latestDuration?.days?.current ?? selectedDuration.days,\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: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n setConfirmedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n days: timerPickerRef.current?.latestDuration?.days,\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 +1 @@
|
|
|
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
|
|
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":[]}
|
|
@@ -89,8 +89,14 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
89
89
|
reset,
|
|
90
90
|
setValue: (value, options) => {
|
|
91
91
|
var _timerPickerRef$curre3;
|
|
92
|
-
setSelectedDuration(
|
|
93
|
-
|
|
92
|
+
setSelectedDuration(prev => ({
|
|
93
|
+
...prev,
|
|
94
|
+
...value
|
|
95
|
+
}));
|
|
96
|
+
setConfirmedDuration(prev => ({
|
|
97
|
+
...prev,
|
|
98
|
+
...value
|
|
99
|
+
}));
|
|
94
100
|
(_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || _timerPickerRef$curre3.setValue(value, options);
|
|
95
101
|
},
|
|
96
102
|
latestDuration: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","getSafeInitialValue","Modal","TimerPicker","generateStyles","TimerPickerModal","props","ref","buttonContainerProps","buttonTouchableOpacityProps","cancelButtonText","closeOnOverlayPress","confirmButtonText","containerProps","contentContainerProps","hideCancelButton","initialValue","modalProps","modalTitle","modalTitleProps","onCancel","onConfirm","onDurationChange","setIsVisible","styles","customStyles","visible","otherProps","hasModalTitle","Boolean","timerPickerRef","safeInitialValue","days","hours","minutes","seconds","selectedDuration","setSelectedDuration","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$days","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","duration","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","_timerPickerRef$curre7","setValue","value","_timerPickerRef$curre3","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","onPress","button","cancelButton","confirmButton","memo"],"sources":["TimerPickerModal.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\";\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 days: initialValue?.days,\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.days,\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n days: confirmedDuration.days,\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 days: latestDuration?.days?.current ?? selectedDuration.days,\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: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => {\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 days: timerPickerRef.current?.latestDuration?.days,\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":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","getSafeInitialValue","Modal","TimerPicker","generateStyles","TimerPickerModal","props","ref","buttonContainerProps","buttonTouchableOpacityProps","cancelButtonText","closeOnOverlayPress","confirmButtonText","containerProps","contentContainerProps","hideCancelButton","initialValue","modalProps","modalTitle","modalTitleProps","onCancel","onConfirm","onDurationChange","setIsVisible","styles","customStyles","visible","otherProps","hasModalTitle","Boolean","timerPickerRef","safeInitialValue","days","hours","minutes","seconds","selectedDuration","setSelectedDuration","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$days","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","duration","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","_timerPickerRef$curre7","setValue","value","_timerPickerRef$curre3","prev","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","onPress","button","cancelButton","confirmButton","memo"],"sources":["TimerPickerModal.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\";\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 days: initialValue?.days,\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.days,\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n days: confirmedDuration.days,\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 days: latestDuration?.days?.current ?? selectedDuration.days,\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: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n setConfirmedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n days: timerPickerRef.current?.latestDuration?.days,\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 +1 @@
|
|
|
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
|
|
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":[]}
|
|
@@ -14,10 +14,10 @@ export interface TimerPickerModalRef {
|
|
|
14
14
|
animated?: boolean;
|
|
15
15
|
}) => void;
|
|
16
16
|
setValue: (value: {
|
|
17
|
-
days
|
|
18
|
-
hours
|
|
19
|
-
minutes
|
|
20
|
-
seconds
|
|
17
|
+
days?: number;
|
|
18
|
+
hours?: number;
|
|
19
|
+
minutes?: number;
|
|
20
|
+
seconds?: number;
|
|
21
21
|
}, options?: {
|
|
22
22
|
animated?: boolean;
|
|
23
23
|
}) => void;
|