@draftbit/core 50.2.9-2a85dc.2 → 50.2.9-472baa.2
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/lib/commonjs/index.js +1 -1
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/index.js +0 -1
- package/lib/typescript/src/index.js.map +1 -1
- package/lib/typescript/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/index.js +0 -1
- package/src/index.js.map +1 -1
- package/src/index.tsx +0 -1
- package/lib/commonjs/components/Timer.js +0 -1
- package/lib/typescript/src/components/Timer.d.ts +0 -19
- package/lib/typescript/src/components/Timer.js +0 -81
- package/lib/typescript/src/components/Timer.js.map +0 -1
- package/src/components/Timer.js +0 -81
- package/src/components/Timer.js.map +0 -1
- package/src/components/Timer.tsx +0 -138
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "50.2.9-
|
|
3
|
+
"version": "50.2.9-472baa.2+472baaa",
|
|
4
4
|
"description": "Core (non-native) Components",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"types": "lib/typescript/src/index.d.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@date-io/date-fns": "^1.3.13",
|
|
43
43
|
"@draftbit/react-theme-provider": "^2.1.1",
|
|
44
|
-
"@draftbit/theme": "^50.2.9-
|
|
44
|
+
"@draftbit/theme": "^50.2.9-472baa.2+472baaa",
|
|
45
45
|
"@expo/vector-icons": "^14.0.0",
|
|
46
46
|
"@gorhom/bottom-sheet": "5.0.0-alpha.7",
|
|
47
47
|
"@material-ui/core": "^4.11.0",
|
|
@@ -118,5 +118,5 @@
|
|
|
118
118
|
],
|
|
119
119
|
"testEnvironment": "node"
|
|
120
120
|
},
|
|
121
|
-
"gitHead": "
|
|
121
|
+
"gitHead": "472baaa718fc2bda65905bf554387fd464ac1d06"
|
|
122
122
|
}
|
package/src/index.js
CHANGED
|
@@ -49,7 +49,6 @@ export { default as SimpleStyleScrollView } from "./components/SimpleStyleScroll
|
|
|
49
49
|
export { default as SimpleStyleSectionList } from "./components/SimpleStyleScrollables/SimpleStyleSectionList";
|
|
50
50
|
export { default as SimpleStyleSwipeableList } from "./components/SimpleStyleScrollables/SimpleStyleSwipeableList";
|
|
51
51
|
export { default as LoadingIndicator } from "./components/LoadingIndicator";
|
|
52
|
-
export { default as Timer } from "./components/Timer";
|
|
53
52
|
/* Deprecated: Fix or Delete! */
|
|
54
53
|
export { default as AccordionItem } from "./deprecated-components/AccordionItem";
|
|
55
54
|
export { default as AvatarEdit } from "./deprecated-components/AvatarEdit";
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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"}
|
package/src/index.tsx
CHANGED
|
@@ -80,7 +80,6 @@ export { default as SimpleStyleScrollView } from "./components/SimpleStyleScroll
|
|
|
80
80
|
export { default as SimpleStyleSectionList } from "./components/SimpleStyleScrollables/SimpleStyleSectionList";
|
|
81
81
|
export { default as SimpleStyleSwipeableList } from "./components/SimpleStyleScrollables/SimpleStyleSwipeableList";
|
|
82
82
|
export { default as LoadingIndicator } from "./components/LoadingIndicator";
|
|
83
|
-
export { default as Timer } from "./components/Timer";
|
|
84
83
|
|
|
85
84
|
/* Deprecated: Fix or Delete! */
|
|
86
85
|
export { default as AccordionItem } from "./deprecated-components/AccordionItem";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _this=this,_jsxFileName="/home/runner/work/react-native-jigsaw/react-native-jigsaw/packages/core/src/components/Timer.tsx";import React,{useState,useEffect,useRef,useImperativeHandle,forwardRef}from"react";import{Text,StyleSheet}from"react-native";import{jsx as _jsx}from"react/jsx-runtime";var Timer=forwardRef(function(_ref,ref){var style=_ref.style,initialTime=_ref.initialTime,_ref$updateInterval=_ref.updateInterval,updateInterval=_ref$updateInterval===void 0?1000:_ref$updateInterval,_ref$format=_ref.format,format=_ref$format===void 0?"mm:ss":_ref$format,onTimerChange=_ref.onTimerChange,onTimerEnd=_ref.onTimerEnd,_ref$countDirection=_ref.countDirection,countDirection=_ref$countDirection===void 0?"up":_ref$countDirection,timerEndTime=_ref.timerEndTime;var defaultInitialTime=countDirection==="up"?0:100000;var _useState=useState(initialTime!=null?initialTime:defaultInitialTime),_useState2=_slicedToArray(_useState,2),time=_useState2[0],setTime=_useState2[1];var timerRef=useRef(null);useEffect(function(){onTimerChange==null?void 0:onTimerChange(time);},[time]);useImperativeHandle(ref,function(){return{start:startTimer,stop:stopTimer,reset:resetTimer};});var startTimer=function startTimer(){if(timerRef.current)return;timerRef.current=setInterval(function(){setTime(function(prevTime){var newTime=countDirection==="up"?prevTime+updateInterval:prevTime-updateInterval;if(newTime<=0&&countDirection==="down"){clearTimer();onTimerEnd==null?void 0:onTimerEnd();return 0;}if(countDirection==="up"&&timerEndTime!==undefined&&newTime>=timerEndTime){clearTimer();onTimerEnd==null?void 0:onTimerEnd();return timerEndTime;}return newTime;});},updateInterval);};var stopTimer=function stopTimer(){return clearTimer();};var resetTimer=function resetTimer(){var newTime=arguments.length>0&&arguments[0]!==undefined?arguments[0]:initialTime!=null?initialTime:defaultInitialTime;clearTimer();setTime(newTime);};var clearTimer=function clearTimer(){if(timerRef.current){clearInterval(timerRef.current);timerRef.current=null;}};useEffect(function(){return function(){return clearTimer();};},[]);var formatTime=function formatTime(milliseconds){var totalSeconds=Math.floor(milliseconds/1000);var hours=Math.floor(totalSeconds/3600);var minutes=Math.floor((totalSeconds-hours*3600)/60);var seconds=totalSeconds-hours*3600-minutes*60;var ms=milliseconds%1000;var formattedHours=String(hours).padStart(2,"0");var formattedMinutes=String(minutes).padStart(2,"0");var formattedSeconds=String(seconds).padStart(2,"0");var formattedMs=String(ms).padStart(3,"0");return format.replace("hh",formattedHours).replace("mm",formattedMinutes).replace("ss",formattedSeconds).replace("ms",formattedMs);};return _jsx(Text,{style:[styles.defaultTimerStyle,style],children:formatTime(time)});});var styles=StyleSheet.create({defaultTimerStyle:{fontSize:24,textAlign:"center"}});export default Timer;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { TextStyle } from "react-native";
|
|
3
|
-
interface TimerProps {
|
|
4
|
-
style?: TextStyle;
|
|
5
|
-
initialTime?: number;
|
|
6
|
-
updateInterval?: number;
|
|
7
|
-
format?: "ss" | "mm:ss" | "hh:mm:ss" | "ss:ms" | "mm:ss:ms" | "hh:mm:ss:ms";
|
|
8
|
-
onTimerChange?: (time: number) => void;
|
|
9
|
-
onTimerEnd?: () => void;
|
|
10
|
-
countDirection?: "up" | "down";
|
|
11
|
-
timerEndTime?: number;
|
|
12
|
-
}
|
|
13
|
-
export interface TimerHandle {
|
|
14
|
-
start: () => void;
|
|
15
|
-
stop: () => void;
|
|
16
|
-
reset: (newTime?: number) => void;
|
|
17
|
-
}
|
|
18
|
-
declare const Timer: React.ForwardRefExoticComponent<TimerProps & React.RefAttributes<TimerHandle>>;
|
|
19
|
-
export default Timer;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect, useRef, useImperativeHandle, forwardRef, } from "react";
|
|
2
|
-
import { Text, StyleSheet } from "react-native";
|
|
3
|
-
const Timer = forwardRef(({ style, initialTime, updateInterval = 1000, format = "mm:ss", onTimerChange, onTimerEnd, countDirection = "up", timerEndTime, }, ref) => {
|
|
4
|
-
const defaultInitialTime = countDirection === "up" ? 0 : 100000;
|
|
5
|
-
const [time, setTime] = useState(initialTime !== null && initialTime !== void 0 ? initialTime : defaultInitialTime);
|
|
6
|
-
const timerRef = useRef(null);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
onTimerChange === null || onTimerChange === void 0 ? void 0 : onTimerChange(time);
|
|
9
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10
|
-
}, [time]);
|
|
11
|
-
useImperativeHandle(ref, () => ({
|
|
12
|
-
start: startTimer,
|
|
13
|
-
stop: stopTimer,
|
|
14
|
-
reset: resetTimer,
|
|
15
|
-
}));
|
|
16
|
-
const startTimer = () => {
|
|
17
|
-
if (timerRef.current)
|
|
18
|
-
return;
|
|
19
|
-
timerRef.current = setInterval(() => {
|
|
20
|
-
setTime((prevTime) => {
|
|
21
|
-
const newTime = countDirection === "up"
|
|
22
|
-
? prevTime + updateInterval
|
|
23
|
-
: prevTime - updateInterval;
|
|
24
|
-
// Count down
|
|
25
|
-
if (newTime <= 0 && countDirection === "down") {
|
|
26
|
-
clearTimer();
|
|
27
|
-
onTimerEnd === null || onTimerEnd === void 0 ? void 0 : onTimerEnd();
|
|
28
|
-
return 0;
|
|
29
|
-
}
|
|
30
|
-
// Count up
|
|
31
|
-
if (countDirection === "up" &&
|
|
32
|
-
timerEndTime !== undefined &&
|
|
33
|
-
newTime >= timerEndTime) {
|
|
34
|
-
clearTimer();
|
|
35
|
-
onTimerEnd === null || onTimerEnd === void 0 ? void 0 : onTimerEnd();
|
|
36
|
-
return timerEndTime;
|
|
37
|
-
}
|
|
38
|
-
return newTime;
|
|
39
|
-
});
|
|
40
|
-
}, updateInterval);
|
|
41
|
-
};
|
|
42
|
-
const stopTimer = () => clearTimer();
|
|
43
|
-
const resetTimer = (newTime = initialTime !== null && initialTime !== void 0 ? initialTime : defaultInitialTime) => {
|
|
44
|
-
clearTimer();
|
|
45
|
-
setTime(newTime);
|
|
46
|
-
};
|
|
47
|
-
const clearTimer = () => {
|
|
48
|
-
if (timerRef.current) {
|
|
49
|
-
clearInterval(timerRef.current);
|
|
50
|
-
timerRef.current = null;
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
useEffect(() => {
|
|
54
|
-
return () => clearTimer();
|
|
55
|
-
}, []);
|
|
56
|
-
const formatTime = (milliseconds) => {
|
|
57
|
-
const totalSeconds = Math.floor(milliseconds / 1000);
|
|
58
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
59
|
-
const minutes = Math.floor((totalSeconds - hours * 3600) / 60);
|
|
60
|
-
const seconds = totalSeconds - hours * 3600 - minutes * 60;
|
|
61
|
-
const ms = milliseconds % 1000;
|
|
62
|
-
const formattedHours = String(hours).padStart(2, "0");
|
|
63
|
-
const formattedMinutes = String(minutes).padStart(2, "0");
|
|
64
|
-
const formattedSeconds = String(seconds).padStart(2, "0");
|
|
65
|
-
const formattedMs = String(ms).padStart(3, "0");
|
|
66
|
-
return format
|
|
67
|
-
.replace("hh", formattedHours)
|
|
68
|
-
.replace("mm", formattedMinutes)
|
|
69
|
-
.replace("ss", formattedSeconds)
|
|
70
|
-
.replace("ms", formattedMs);
|
|
71
|
-
};
|
|
72
|
-
return (React.createElement(Text, { style: [styles.defaultTimerStyle, style] }, formatTime(time)));
|
|
73
|
-
});
|
|
74
|
-
const styles = StyleSheet.create({
|
|
75
|
-
defaultTimerStyle: {
|
|
76
|
-
fontSize: 24,
|
|
77
|
-
textAlign: "center",
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
export default Timer;
|
|
81
|
-
//# sourceMappingURL=Timer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../../src/components/Timer.tsx"],"names":[],"mappings":"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"}
|
package/src/components/Timer.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect, useRef, useImperativeHandle, forwardRef, } from "react";
|
|
2
|
-
import { Text, StyleSheet } from "react-native";
|
|
3
|
-
const Timer = forwardRef(({ style, initialTime, updateInterval = 1000, format = "mm:ss", onTimerChange, onTimerEnd, countDirection = "up", timerEndTime, }, ref) => {
|
|
4
|
-
const defaultInitialTime = countDirection === "up" ? 0 : 100000;
|
|
5
|
-
const [time, setTime] = useState(initialTime !== null && initialTime !== void 0 ? initialTime : defaultInitialTime);
|
|
6
|
-
const timerRef = useRef(null);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
onTimerChange === null || onTimerChange === void 0 ? void 0 : onTimerChange(time);
|
|
9
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10
|
-
}, [time]);
|
|
11
|
-
useImperativeHandle(ref, () => ({
|
|
12
|
-
start: startTimer,
|
|
13
|
-
stop: stopTimer,
|
|
14
|
-
reset: resetTimer,
|
|
15
|
-
}));
|
|
16
|
-
const startTimer = () => {
|
|
17
|
-
if (timerRef.current)
|
|
18
|
-
return;
|
|
19
|
-
timerRef.current = setInterval(() => {
|
|
20
|
-
setTime((prevTime) => {
|
|
21
|
-
const newTime = countDirection === "up"
|
|
22
|
-
? prevTime + updateInterval
|
|
23
|
-
: prevTime - updateInterval;
|
|
24
|
-
// Count down
|
|
25
|
-
if (newTime <= 0 && countDirection === "down") {
|
|
26
|
-
clearTimer();
|
|
27
|
-
onTimerEnd === null || onTimerEnd === void 0 ? void 0 : onTimerEnd();
|
|
28
|
-
return 0;
|
|
29
|
-
}
|
|
30
|
-
// Count up
|
|
31
|
-
if (countDirection === "up" &&
|
|
32
|
-
timerEndTime !== undefined &&
|
|
33
|
-
newTime >= timerEndTime) {
|
|
34
|
-
clearTimer();
|
|
35
|
-
onTimerEnd === null || onTimerEnd === void 0 ? void 0 : onTimerEnd();
|
|
36
|
-
return timerEndTime;
|
|
37
|
-
}
|
|
38
|
-
return newTime;
|
|
39
|
-
});
|
|
40
|
-
}, updateInterval);
|
|
41
|
-
};
|
|
42
|
-
const stopTimer = () => clearTimer();
|
|
43
|
-
const resetTimer = (newTime = initialTime !== null && initialTime !== void 0 ? initialTime : defaultInitialTime) => {
|
|
44
|
-
clearTimer();
|
|
45
|
-
setTime(newTime);
|
|
46
|
-
};
|
|
47
|
-
const clearTimer = () => {
|
|
48
|
-
if (timerRef.current) {
|
|
49
|
-
clearInterval(timerRef.current);
|
|
50
|
-
timerRef.current = null;
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
useEffect(() => {
|
|
54
|
-
return () => clearTimer();
|
|
55
|
-
}, []);
|
|
56
|
-
const formatTime = (milliseconds) => {
|
|
57
|
-
const totalSeconds = Math.floor(milliseconds / 1000);
|
|
58
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
59
|
-
const minutes = Math.floor((totalSeconds - hours * 3600) / 60);
|
|
60
|
-
const seconds = totalSeconds - hours * 3600 - minutes * 60;
|
|
61
|
-
const ms = milliseconds % 1000;
|
|
62
|
-
const formattedHours = String(hours).padStart(2, "0");
|
|
63
|
-
const formattedMinutes = String(minutes).padStart(2, "0");
|
|
64
|
-
const formattedSeconds = String(seconds).padStart(2, "0");
|
|
65
|
-
const formattedMs = String(ms).padStart(3, "0");
|
|
66
|
-
return format
|
|
67
|
-
.replace("hh", formattedHours)
|
|
68
|
-
.replace("mm", formattedMinutes)
|
|
69
|
-
.replace("ss", formattedSeconds)
|
|
70
|
-
.replace("ms", formattedMs);
|
|
71
|
-
};
|
|
72
|
-
return (React.createElement(Text, { style: [styles.defaultTimerStyle, style] }, formatTime(time)));
|
|
73
|
-
});
|
|
74
|
-
const styles = StyleSheet.create({
|
|
75
|
-
defaultTimerStyle: {
|
|
76
|
-
fontSize: 24,
|
|
77
|
-
textAlign: "center",
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
export default Timer;
|
|
81
|
-
//# sourceMappingURL=Timer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["Timer.tsx"],"names":[],"mappings":"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"}
|
package/src/components/Timer.tsx
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
useState,
|
|
3
|
-
useEffect,
|
|
4
|
-
useRef,
|
|
5
|
-
useImperativeHandle,
|
|
6
|
-
forwardRef,
|
|
7
|
-
} from "react";
|
|
8
|
-
import { Text, StyleSheet, TextStyle } from "react-native";
|
|
9
|
-
|
|
10
|
-
interface TimerProps {
|
|
11
|
-
style?: TextStyle;
|
|
12
|
-
initialTime?: number;
|
|
13
|
-
updateInterval?: number;
|
|
14
|
-
format?: "ss" | "mm:ss" | "hh:mm:ss" | "ss:ms" | "mm:ss:ms" | "hh:mm:ss:ms";
|
|
15
|
-
onTimerChange?: (time: number) => void;
|
|
16
|
-
onTimerEnd?: () => void;
|
|
17
|
-
countDirection?: "up" | "down";
|
|
18
|
-
timerEndTime?: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface TimerHandle {
|
|
22
|
-
start: () => void;
|
|
23
|
-
stop: () => void;
|
|
24
|
-
reset: (newTime?: number) => void;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const Timer = forwardRef<TimerHandle, TimerProps>(
|
|
28
|
-
(
|
|
29
|
-
{
|
|
30
|
-
style,
|
|
31
|
-
initialTime,
|
|
32
|
-
updateInterval = 1000,
|
|
33
|
-
format = "mm:ss",
|
|
34
|
-
onTimerChange,
|
|
35
|
-
onTimerEnd,
|
|
36
|
-
countDirection = "up",
|
|
37
|
-
timerEndTime,
|
|
38
|
-
},
|
|
39
|
-
ref
|
|
40
|
-
) => {
|
|
41
|
-
const defaultInitialTime = countDirection === "up" ? 0 : 100000;
|
|
42
|
-
const [time, setTime] = useState(initialTime ?? defaultInitialTime);
|
|
43
|
-
const timerRef = useRef<NodeJS.Timeout | null>(null);
|
|
44
|
-
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
onTimerChange?.(time);
|
|
47
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
-
}, [time]);
|
|
49
|
-
|
|
50
|
-
useImperativeHandle(ref, () => ({
|
|
51
|
-
start: startTimer,
|
|
52
|
-
stop: stopTimer,
|
|
53
|
-
reset: resetTimer,
|
|
54
|
-
}));
|
|
55
|
-
|
|
56
|
-
const startTimer = () => {
|
|
57
|
-
if (timerRef.current) return;
|
|
58
|
-
timerRef.current = setInterval(() => {
|
|
59
|
-
setTime((prevTime) => {
|
|
60
|
-
const newTime =
|
|
61
|
-
countDirection === "up"
|
|
62
|
-
? prevTime + updateInterval
|
|
63
|
-
: prevTime - updateInterval;
|
|
64
|
-
// Count down
|
|
65
|
-
if (newTime <= 0 && countDirection === "down") {
|
|
66
|
-
clearTimer();
|
|
67
|
-
onTimerEnd?.();
|
|
68
|
-
return 0;
|
|
69
|
-
}
|
|
70
|
-
// Count up
|
|
71
|
-
if (
|
|
72
|
-
countDirection === "up" &&
|
|
73
|
-
timerEndTime !== undefined &&
|
|
74
|
-
newTime >= timerEndTime
|
|
75
|
-
) {
|
|
76
|
-
clearTimer();
|
|
77
|
-
onTimerEnd?.();
|
|
78
|
-
return timerEndTime;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return newTime;
|
|
82
|
-
});
|
|
83
|
-
}, updateInterval);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const stopTimer = () => clearTimer();
|
|
87
|
-
|
|
88
|
-
const resetTimer = (
|
|
89
|
-
newTime: number = initialTime ?? defaultInitialTime
|
|
90
|
-
) => {
|
|
91
|
-
clearTimer();
|
|
92
|
-
setTime(newTime);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const clearTimer = () => {
|
|
96
|
-
if (timerRef.current) {
|
|
97
|
-
clearInterval(timerRef.current);
|
|
98
|
-
timerRef.current = null;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
useEffect(() => {
|
|
103
|
-
return () => clearTimer();
|
|
104
|
-
}, []);
|
|
105
|
-
|
|
106
|
-
const formatTime = (milliseconds: number): string => {
|
|
107
|
-
const totalSeconds = Math.floor(milliseconds / 1000);
|
|
108
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
109
|
-
const minutes = Math.floor((totalSeconds - hours * 3600) / 60);
|
|
110
|
-
const seconds = totalSeconds - hours * 3600 - minutes * 60;
|
|
111
|
-
const ms = milliseconds % 1000;
|
|
112
|
-
|
|
113
|
-
const formattedHours = String(hours).padStart(2, "0");
|
|
114
|
-
const formattedMinutes = String(minutes).padStart(2, "0");
|
|
115
|
-
const formattedSeconds = String(seconds).padStart(2, "0");
|
|
116
|
-
const formattedMs = String(ms).padStart(3, "0");
|
|
117
|
-
|
|
118
|
-
return format
|
|
119
|
-
.replace("hh", formattedHours)
|
|
120
|
-
.replace("mm", formattedMinutes)
|
|
121
|
-
.replace("ss", formattedSeconds)
|
|
122
|
-
.replace("ms", formattedMs);
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
return (
|
|
126
|
-
<Text style={[styles.defaultTimerStyle, style]}>{formatTime(time)}</Text>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
const styles = StyleSheet.create({
|
|
132
|
-
defaultTimerStyle: {
|
|
133
|
-
fontSize: 24,
|
|
134
|
-
textAlign: "center",
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
export default Timer;
|