@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "50.2.9-2a85dc.2+2a85dc9",
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-2a85dc.2+2a85dc9",
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": "2a85dc9757d55df75c2e5688b716d77f376cb498"
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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"}
@@ -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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"}
@@ -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;