@chayns-components/devalue-slider 5.0.0-beta.919 → 5.0.0-beta.921
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/cjs/components/timer/Timer.js +23 -15
- package/lib/cjs/components/timer/Timer.js.map +1 -1
- package/lib/cjs/utils/date.js +91 -0
- package/lib/cjs/utils/date.js.map +1 -0
- package/lib/esm/components/timer/Timer.js +20 -12
- package/lib/esm/components/timer/Timer.js.map +1 -1
- package/lib/esm/utils/date.js +80 -0
- package/lib/esm/utils/date.js.map +1 -0
- package/lib/types/utils/date.d.ts +23 -0
- package/package.json +4 -5
|
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _dateFns = require("date-fns");
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
8
|
var _chaynsApi = require("chayns-api");
|
|
10
|
-
var _locale = require("date-fns/locale");
|
|
11
9
|
var _Timer = require("./Timer.styles");
|
|
10
|
+
var _date = require("../../utils/date");
|
|
12
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
13
|
const Timer = ({
|
|
@@ -16,8 +15,11 @@ const Timer = ({
|
|
|
16
15
|
color,
|
|
17
16
|
textColor = 'white'
|
|
18
17
|
}) => {
|
|
18
|
+
const {
|
|
19
|
+
active: language
|
|
20
|
+
} = (0, _chaynsApi.getLanguage)();
|
|
19
21
|
const refDate = (0, _react.useRef)(new Date());
|
|
20
|
-
const [distance, setDistance] = (0, _react.useState)((0,
|
|
22
|
+
const [distance, setDistance] = (0, _react.useState)((0, _date.intervalToDuration)({
|
|
21
23
|
start: devalueTime,
|
|
22
24
|
end: new Date()
|
|
23
25
|
}));
|
|
@@ -27,7 +29,7 @@ const Timer = ({
|
|
|
27
29
|
refDate.current = new Date();
|
|
28
30
|
const interval = setInterval(() => {
|
|
29
31
|
refDate.current = new Date();
|
|
30
|
-
setDistance((0,
|
|
32
|
+
setDistance((0, _date.intervalToDuration)({
|
|
31
33
|
start: devalueTime,
|
|
32
34
|
end: refDate.current
|
|
33
35
|
}));
|
|
@@ -42,20 +44,26 @@ const Timer = ({
|
|
|
42
44
|
}, []);
|
|
43
45
|
const label = (0, _react.useMemo)(() => {
|
|
44
46
|
let text = 'Vor ##SECONDS## Sek. (##TIME## Uhr)';
|
|
45
|
-
if ((0,
|
|
46
|
-
const distanceLabel = (0,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
locale: _locale.de
|
|
52
|
-
}).slice(1);
|
|
47
|
+
if ((0, _date.differenceInHours)(refDate.current, devalueTime) > 0) {
|
|
48
|
+
const distanceLabel = (0, _date.getTimeTillNow)({
|
|
49
|
+
date: new Date(),
|
|
50
|
+
currentDate: devalueTime,
|
|
51
|
+
language
|
|
52
|
+
});
|
|
53
53
|
text = `${distanceLabel} (##TIME## Uhr)`;
|
|
54
|
-
} else if ((0,
|
|
54
|
+
} else if ((0, _date.differenceInMinutes)(refDate.current, devalueTime) > 0) {
|
|
55
55
|
text = 'Vor ##MINUTES## Min. ##SECONDS## Sek. (##TIME## Uhr)';
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
const formatTime = (date, formatString) => {
|
|
58
|
+
const hours = date.getHours().toString().padStart(2, '0');
|
|
59
|
+
const minutes = date.getMinutes().toString().padStart(2, '0');
|
|
60
|
+
if (formatString === 'HH:mm') {
|
|
61
|
+
return `${hours}:${minutes}`;
|
|
62
|
+
}
|
|
63
|
+
return '';
|
|
64
|
+
};
|
|
65
|
+
return text.replace('##MINUTES##', minutesShowValue).replace('##SECONDS##', secondsShowValue).replace('##TIME##', formatTime(devalueTime, 'HH:mm'));
|
|
66
|
+
}, [devalueTime, minutesShowValue, secondsShowValue, language]);
|
|
59
67
|
return /*#__PURE__*/_react.default.createElement(_Timer.Container, {
|
|
60
68
|
$baseFontSize: 17,
|
|
61
69
|
$borderSize: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","names":["
|
|
1
|
+
{"version":3,"file":"Timer.js","names":["_react","_interopRequireWildcard","require","_chaynsApi","_Timer","_date","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Timer","devalueTime","color","textColor","active","language","getLanguage","refDate","useRef","Date","distance","setDistance","useState","intervalToDuration","start","end","minutesShowValue","useMemo","Math","max","minutes","toString","secondsShowValue","seconds","useEffect","current","interval","setInterval","clearInterval","handlePointerDownCapture","useCallback","vibrate","pattern","iOSFeedbackVibration","label","text","differenceInHours","distanceLabel","getTimeTillNow","date","currentDate","differenceInMinutes","formatTime","formatString","hours","getHours","padStart","getMinutes","replace","createElement","Container","$baseFontSize","$borderSize","$height","$color","$textColor","$backgroundColor","onPointerDownCapture","Time","_default","exports"],"sources":["../../../../src/components/timer/Timer.tsx"],"sourcesContent":["\nimport React, { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {getLanguage, vibrate} from 'chayns-api';\n\nimport { Container, Time } from './Timer.styles';\nimport {\n differenceInHours,\n differenceInMinutes,\n getTimeTillNow,\n intervalToDuration\n} from \"../../utils/date\";\n\nexport type TimerProps = {\n color: string;\n devalueTime: Date;\n textColor?: string;\n};\n\nconst Timer: FunctionComponent<TimerProps> = ({ devalueTime, color, textColor = 'white' }) => {\n const {active:language } = getLanguage()\n\n const refDate = useRef(new Date());\n const [distance, setDistance] = useState(\n intervalToDuration({\n start: devalueTime,\n end: new Date(),\n }),\n );\n const minutesShowValue = useMemo(\n () => Math.max(distance.minutes ?? 0, 0).toString(),\n [distance.minutes],\n );\n const secondsShowValue = useMemo(\n () => Math.max(distance.seconds ?? 0, 0).toString(),\n [distance.seconds],\n );\n\n useEffect(() => {\n refDate.current = new Date();\n const interval = setInterval(() => {\n refDate.current = new Date();\n setDistance(\n intervalToDuration({\n start: devalueTime,\n end: refDate.current,\n }),\n );\n }, 500);\n return () => clearInterval(interval);\n }, [devalueTime]);\n\n const handlePointerDownCapture = useCallback(() => {\n void vibrate({ pattern: [50], iOSFeedbackVibration: 7 });\n }, []);\n\n const label = useMemo(() => {\n let text = 'Vor ##SECONDS## Sek. (##TIME## Uhr)';\n if (differenceInHours(refDate.current, devalueTime) > 0) {\n const distanceLabel =\n getTimeTillNow({date: new Date(), currentDate: devalueTime, language});\n text = `${distanceLabel} (##TIME## Uhr)`;\n } else if (differenceInMinutes(refDate.current, devalueTime) > 0) {\n text = 'Vor ##MINUTES## Min. ##SECONDS## Sek. (##TIME## Uhr)';\n }\n\n const formatTime = (date: Date, formatString: string): string => {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n\n if (formatString === 'HH:mm') {\n return `${hours}:${minutes}`;\n }\n return '';\n };\n\n return text\n .replace('##MINUTES##', minutesShowValue)\n .replace('##SECONDS##', secondsShowValue)\n .replace('##TIME##', formatTime(devalueTime, 'HH:mm'));\n }, [devalueTime, minutesShowValue, secondsShowValue, language]);\n\n return (\n <Container\n $baseFontSize={17}\n $borderSize={2}\n $height={50}\n $color={color}\n $textColor={textColor}\n $backgroundColor={color}\n onPointerDownCapture={handlePointerDownCapture}\n >\n <Time>{label}</Time>\n </Container>\n );\n};\n\nexport default Timer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.subHours = exports.intervalToDuration = exports.getTimeTillNow = exports.differenceInMinutes = exports.differenceInHours = exports.addSeconds = void 0;
|
|
7
|
+
var _chaynsApi = require("chayns-api");
|
|
8
|
+
const addSeconds = (date, seconds) => {
|
|
9
|
+
const result = new Date(date);
|
|
10
|
+
result.setSeconds(date.getSeconds() + seconds);
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
exports.addSeconds = addSeconds;
|
|
14
|
+
const subHours = (date, hours) => {
|
|
15
|
+
const result = new Date(date);
|
|
16
|
+
result.setHours(date.getHours() - hours);
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
exports.subHours = subHours;
|
|
20
|
+
const differenceInHours = (date1, date2) => {
|
|
21
|
+
const diffInMilliseconds = date1.getTime() - date2.getTime();
|
|
22
|
+
return Math.floor(diffInMilliseconds / (1000 * 60 * 60)); // Millisekunden in Stunden umrechnen
|
|
23
|
+
};
|
|
24
|
+
exports.differenceInHours = differenceInHours;
|
|
25
|
+
const getTimeTillNow = ({
|
|
26
|
+
date,
|
|
27
|
+
currentDate,
|
|
28
|
+
language = _chaynsApi.Language.English
|
|
29
|
+
}) => {
|
|
30
|
+
const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);
|
|
31
|
+
const isPast = diffInSeconds > 0;
|
|
32
|
+
const units = [{
|
|
33
|
+
label: 'year',
|
|
34
|
+
seconds: 31536000
|
|
35
|
+
}, {
|
|
36
|
+
label: 'month',
|
|
37
|
+
seconds: 2592000
|
|
38
|
+
}, {
|
|
39
|
+
label: 'day',
|
|
40
|
+
seconds: 86400
|
|
41
|
+
}, {
|
|
42
|
+
label: 'hour',
|
|
43
|
+
seconds: 3600
|
|
44
|
+
}, {
|
|
45
|
+
label: 'minute',
|
|
46
|
+
seconds: 60
|
|
47
|
+
}, {
|
|
48
|
+
label: 'second',
|
|
49
|
+
seconds: 1
|
|
50
|
+
}];
|
|
51
|
+
const absDiff = Math.abs(diffInSeconds);
|
|
52
|
+
const {
|
|
53
|
+
label,
|
|
54
|
+
seconds
|
|
55
|
+
} = units.find(u => absDiff >= u.seconds) || {
|
|
56
|
+
label: 'second',
|
|
57
|
+
seconds: 1
|
|
58
|
+
};
|
|
59
|
+
const count = Math.floor(absDiff / seconds);
|
|
60
|
+
const formatter = new Intl.RelativeTimeFormat(language, {
|
|
61
|
+
numeric: 'auto'
|
|
62
|
+
});
|
|
63
|
+
return formatter.format(isPast ? -count : count, label);
|
|
64
|
+
};
|
|
65
|
+
exports.getTimeTillNow = getTimeTillNow;
|
|
66
|
+
const intervalToDuration = interval => {
|
|
67
|
+
const startTime = interval.start.getTime();
|
|
68
|
+
const endTime = interval.end.getTime();
|
|
69
|
+
const diffInMilliseconds = endTime - startTime;
|
|
70
|
+
const years = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24 * 365.25));
|
|
71
|
+
const months = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24 * 365.25) / (1000 * 60 * 60 * 24 * 30));
|
|
72
|
+
const days = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24 * 30) / (1000 * 60 * 60 * 24));
|
|
73
|
+
const hours = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24) / (1000 * 60 * 60));
|
|
74
|
+
const minutes = Math.floor(diffInMilliseconds % (1000 * 60 * 60) / (1000 * 60));
|
|
75
|
+
const seconds = Math.floor(diffInMilliseconds % (1000 * 60) / 1000);
|
|
76
|
+
return {
|
|
77
|
+
years,
|
|
78
|
+
months,
|
|
79
|
+
days,
|
|
80
|
+
hours,
|
|
81
|
+
minutes,
|
|
82
|
+
seconds
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.intervalToDuration = intervalToDuration;
|
|
86
|
+
const differenceInMinutes = (date1, date2) => {
|
|
87
|
+
const diffInMilliseconds = date1.getTime() - date2.getTime();
|
|
88
|
+
return Math.floor(diffInMilliseconds / (1000 * 60)); // Millisekunden in Minuten umrechnen
|
|
89
|
+
};
|
|
90
|
+
exports.differenceInMinutes = differenceInMinutes;
|
|
91
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","names":["_chaynsApi","require","addSeconds","date","seconds","result","Date","setSeconds","getSeconds","exports","subHours","hours","setHours","getHours","differenceInHours","date1","date2","diffInMilliseconds","getTime","Math","floor","getTimeTillNow","currentDate","language","Language","English","diffInSeconds","isPast","units","label","absDiff","abs","find","u","count","formatter","Intl","RelativeTimeFormat","numeric","format","intervalToDuration","interval","startTime","start","endTime","end","years","months","days","minutes","differenceInMinutes"],"sources":["../../../src/utils/date.ts"],"sourcesContent":["import {Language} from \"chayns-api\";\n\nexport const addSeconds = (date: Date, seconds: number): Date => {\n const result = new Date(date);\n result.setSeconds(date.getSeconds() + seconds);\n return result;\n};\n\nexport const subHours = (date: Date, hours: number): Date => {\n const result = new Date(date);\n result.setHours(date.getHours() - hours);\n return result;\n};\n\nexport const differenceInHours = (date1: Date, date2: Date): number => {\n const diffInMilliseconds = date1.getTime() - date2.getTime();\n return Math.floor(diffInMilliseconds / (1000 * 60 * 60)); // Millisekunden in Stunden umrechnen\n};\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n }: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n {label: 'year', seconds: 31536000},\n {label: 'month', seconds: 2592000},\n {label: 'day', seconds: 86400},\n {label: 'hour', seconds: 3600},\n {label: 'minute', seconds: 60},\n {label: 'second', seconds: 1},\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const {label, seconds} = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, {numeric: 'auto'});\n\n return formatter.format(isPast ? -count : count, label);\n};\n\nexport const intervalToDuration = (interval: { start: Date, end: Date }): { years: number, months: number, days: number, hours: number, minutes: number, seconds: number } => {\n const startTime = interval.start.getTime();\n const endTime = interval.end.getTime();\n const diffInMilliseconds = endTime - startTime;\n\n const years = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24 * 365.25));\n const months = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24 * 365.25)) / (1000 * 60 * 60 * 24 * 30));\n const days = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24 * 30)) / (1000 * 60 * 60 * 24));\n const hours = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n const minutes = Math.floor((diffInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));\n const seconds = Math.floor((diffInMilliseconds % (1000 * 60)) / 1000);\n\n return { years, months, days, hours, minutes, seconds };\n};\n\nexport const differenceInMinutes = (date1: Date, date2: Date): number => {\n const diffInMilliseconds = date1.getTime() - date2.getTime();\n return Math.floor(diffInMilliseconds / (1000 * 60)); // Millisekunden in Minuten umrechnen\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { differenceInHours, differenceInMinutes, format, formatDistanceToNow, intervalToDuration } from 'date-fns';
|
|
2
1
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { vibrate } from 'chayns-api';
|
|
4
|
-
import { de } from 'date-fns/locale';
|
|
2
|
+
import { getLanguage, vibrate } from 'chayns-api';
|
|
5
3
|
import { Container, Time } from './Timer.styles';
|
|
4
|
+
import { differenceInHours, differenceInMinutes, getTimeTillNow, intervalToDuration } from "../../utils/date";
|
|
6
5
|
const Timer = _ref => {
|
|
7
6
|
let {
|
|
8
7
|
devalueTime,
|
|
9
8
|
color,
|
|
10
9
|
textColor = 'white'
|
|
11
10
|
} = _ref;
|
|
11
|
+
const {
|
|
12
|
+
active: language
|
|
13
|
+
} = getLanguage();
|
|
12
14
|
const refDate = useRef(new Date());
|
|
13
15
|
const [distance, setDistance] = useState(intervalToDuration({
|
|
14
16
|
start: devalueTime,
|
|
@@ -36,19 +38,25 @@ const Timer = _ref => {
|
|
|
36
38
|
const label = useMemo(() => {
|
|
37
39
|
let text = 'Vor ##SECONDS## Sek. (##TIME## Uhr)';
|
|
38
40
|
if (differenceInHours(refDate.current, devalueTime) > 0) {
|
|
39
|
-
const distanceLabel =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
locale: de
|
|
45
|
-
}).slice(1);
|
|
41
|
+
const distanceLabel = getTimeTillNow({
|
|
42
|
+
date: new Date(),
|
|
43
|
+
currentDate: devalueTime,
|
|
44
|
+
language
|
|
45
|
+
});
|
|
46
46
|
text = `${distanceLabel} (##TIME## Uhr)`;
|
|
47
47
|
} else if (differenceInMinutes(refDate.current, devalueTime) > 0) {
|
|
48
48
|
text = 'Vor ##MINUTES## Min. ##SECONDS## Sek. (##TIME## Uhr)';
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const formatTime = (date, formatString) => {
|
|
51
|
+
const hours = date.getHours().toString().padStart(2, '0');
|
|
52
|
+
const minutes = date.getMinutes().toString().padStart(2, '0');
|
|
53
|
+
if (formatString === 'HH:mm') {
|
|
54
|
+
return `${hours}:${minutes}`;
|
|
55
|
+
}
|
|
56
|
+
return '';
|
|
57
|
+
};
|
|
58
|
+
return text.replace('##MINUTES##', minutesShowValue).replace('##SECONDS##', secondsShowValue).replace('##TIME##', formatTime(devalueTime, 'HH:mm'));
|
|
59
|
+
}, [devalueTime, minutesShowValue, secondsShowValue, language]);
|
|
52
60
|
return /*#__PURE__*/React.createElement(Container, {
|
|
53
61
|
$baseFontSize: 17,
|
|
54
62
|
$borderSize: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","names":["
|
|
1
|
+
{"version":3,"file":"Timer.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","getLanguage","vibrate","Container","Time","differenceInHours","differenceInMinutes","getTimeTillNow","intervalToDuration","Timer","_ref","devalueTime","color","textColor","active","language","refDate","Date","distance","setDistance","start","end","minutesShowValue","Math","max","minutes","toString","secondsShowValue","seconds","current","interval","setInterval","clearInterval","handlePointerDownCapture","pattern","iOSFeedbackVibration","label","text","distanceLabel","date","currentDate","formatTime","formatString","hours","getHours","padStart","getMinutes","replace","createElement","$baseFontSize","$borderSize","$height","$color","$textColor","$backgroundColor","onPointerDownCapture"],"sources":["../../../../src/components/timer/Timer.tsx"],"sourcesContent":["\nimport React, { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {getLanguage, vibrate} from 'chayns-api';\n\nimport { Container, Time } from './Timer.styles';\nimport {\n differenceInHours,\n differenceInMinutes,\n getTimeTillNow,\n intervalToDuration\n} from \"../../utils/date\";\n\nexport type TimerProps = {\n color: string;\n devalueTime: Date;\n textColor?: string;\n};\n\nconst Timer: FunctionComponent<TimerProps> = ({ devalueTime, color, textColor = 'white' }) => {\n const {active:language } = getLanguage()\n\n const refDate = useRef(new Date());\n const [distance, setDistance] = useState(\n intervalToDuration({\n start: devalueTime,\n end: new Date(),\n }),\n );\n const minutesShowValue = useMemo(\n () => Math.max(distance.minutes ?? 0, 0).toString(),\n [distance.minutes],\n );\n const secondsShowValue = useMemo(\n () => Math.max(distance.seconds ?? 0, 0).toString(),\n [distance.seconds],\n );\n\n useEffect(() => {\n refDate.current = new Date();\n const interval = setInterval(() => {\n refDate.current = new Date();\n setDistance(\n intervalToDuration({\n start: devalueTime,\n end: refDate.current,\n }),\n );\n }, 500);\n return () => clearInterval(interval);\n }, [devalueTime]);\n\n const handlePointerDownCapture = useCallback(() => {\n void vibrate({ pattern: [50], iOSFeedbackVibration: 7 });\n }, []);\n\n const label = useMemo(() => {\n let text = 'Vor ##SECONDS## Sek. (##TIME## Uhr)';\n if (differenceInHours(refDate.current, devalueTime) > 0) {\n const distanceLabel =\n getTimeTillNow({date: new Date(), currentDate: devalueTime, language});\n text = `${distanceLabel} (##TIME## Uhr)`;\n } else if (differenceInMinutes(refDate.current, devalueTime) > 0) {\n text = 'Vor ##MINUTES## Min. ##SECONDS## Sek. (##TIME## Uhr)';\n }\n\n const formatTime = (date: Date, formatString: string): string => {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n\n if (formatString === 'HH:mm') {\n return `${hours}:${minutes}`;\n }\n return '';\n };\n\n return text\n .replace('##MINUTES##', minutesShowValue)\n .replace('##SECONDS##', secondsShowValue)\n .replace('##TIME##', formatTime(devalueTime, 'HH:mm'));\n }, [devalueTime, minutesShowValue, secondsShowValue, language]);\n\n return (\n <Container\n $baseFontSize={17}\n $borderSize={2}\n $height={50}\n $color={color}\n $textColor={textColor}\n $backgroundColor={color}\n onPointerDownCapture={handlePointerDownCapture}\n >\n <Time>{label}</Time>\n </Container>\n );\n};\n\nexport default Timer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Language } from "chayns-api";
|
|
2
|
+
export const addSeconds = (date, seconds) => {
|
|
3
|
+
const result = new Date(date);
|
|
4
|
+
result.setSeconds(date.getSeconds() + seconds);
|
|
5
|
+
return result;
|
|
6
|
+
};
|
|
7
|
+
export const subHours = (date, hours) => {
|
|
8
|
+
const result = new Date(date);
|
|
9
|
+
result.setHours(date.getHours() - hours);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
export const differenceInHours = (date1, date2) => {
|
|
13
|
+
const diffInMilliseconds = date1.getTime() - date2.getTime();
|
|
14
|
+
return Math.floor(diffInMilliseconds / (1000 * 60 * 60)); // Millisekunden in Stunden umrechnen
|
|
15
|
+
};
|
|
16
|
+
export const getTimeTillNow = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
date,
|
|
19
|
+
currentDate,
|
|
20
|
+
language = Language.English
|
|
21
|
+
} = _ref;
|
|
22
|
+
const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);
|
|
23
|
+
const isPast = diffInSeconds > 0;
|
|
24
|
+
const units = [{
|
|
25
|
+
label: 'year',
|
|
26
|
+
seconds: 31536000
|
|
27
|
+
}, {
|
|
28
|
+
label: 'month',
|
|
29
|
+
seconds: 2592000
|
|
30
|
+
}, {
|
|
31
|
+
label: 'day',
|
|
32
|
+
seconds: 86400
|
|
33
|
+
}, {
|
|
34
|
+
label: 'hour',
|
|
35
|
+
seconds: 3600
|
|
36
|
+
}, {
|
|
37
|
+
label: 'minute',
|
|
38
|
+
seconds: 60
|
|
39
|
+
}, {
|
|
40
|
+
label: 'second',
|
|
41
|
+
seconds: 1
|
|
42
|
+
}];
|
|
43
|
+
const absDiff = Math.abs(diffInSeconds);
|
|
44
|
+
const {
|
|
45
|
+
label,
|
|
46
|
+
seconds
|
|
47
|
+
} = units.find(u => absDiff >= u.seconds) || {
|
|
48
|
+
label: 'second',
|
|
49
|
+
seconds: 1
|
|
50
|
+
};
|
|
51
|
+
const count = Math.floor(absDiff / seconds);
|
|
52
|
+
const formatter = new Intl.RelativeTimeFormat(language, {
|
|
53
|
+
numeric: 'auto'
|
|
54
|
+
});
|
|
55
|
+
return formatter.format(isPast ? -count : count, label);
|
|
56
|
+
};
|
|
57
|
+
export const intervalToDuration = interval => {
|
|
58
|
+
const startTime = interval.start.getTime();
|
|
59
|
+
const endTime = interval.end.getTime();
|
|
60
|
+
const diffInMilliseconds = endTime - startTime;
|
|
61
|
+
const years = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24 * 365.25));
|
|
62
|
+
const months = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24 * 365.25) / (1000 * 60 * 60 * 24 * 30));
|
|
63
|
+
const days = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24 * 30) / (1000 * 60 * 60 * 24));
|
|
64
|
+
const hours = Math.floor(diffInMilliseconds % (1000 * 60 * 60 * 24) / (1000 * 60 * 60));
|
|
65
|
+
const minutes = Math.floor(diffInMilliseconds % (1000 * 60 * 60) / (1000 * 60));
|
|
66
|
+
const seconds = Math.floor(diffInMilliseconds % (1000 * 60) / 1000);
|
|
67
|
+
return {
|
|
68
|
+
years,
|
|
69
|
+
months,
|
|
70
|
+
days,
|
|
71
|
+
hours,
|
|
72
|
+
minutes,
|
|
73
|
+
seconds
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export const differenceInMinutes = (date1, date2) => {
|
|
77
|
+
const diffInMilliseconds = date1.getTime() - date2.getTime();
|
|
78
|
+
return Math.floor(diffInMilliseconds / (1000 * 60)); // Millisekunden in Minuten umrechnen
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","names":["Language","addSeconds","date","seconds","result","Date","setSeconds","getSeconds","subHours","hours","setHours","getHours","differenceInHours","date1","date2","diffInMilliseconds","getTime","Math","floor","getTimeTillNow","_ref","currentDate","language","English","diffInSeconds","isPast","units","label","absDiff","abs","find","u","count","formatter","Intl","RelativeTimeFormat","numeric","format","intervalToDuration","interval","startTime","start","endTime","end","years","months","days","minutes","differenceInMinutes"],"sources":["../../../src/utils/date.ts"],"sourcesContent":["import {Language} from \"chayns-api\";\n\nexport const addSeconds = (date: Date, seconds: number): Date => {\n const result = new Date(date);\n result.setSeconds(date.getSeconds() + seconds);\n return result;\n};\n\nexport const subHours = (date: Date, hours: number): Date => {\n const result = new Date(date);\n result.setHours(date.getHours() - hours);\n return result;\n};\n\nexport const differenceInHours = (date1: Date, date2: Date): number => {\n const diffInMilliseconds = date1.getTime() - date2.getTime();\n return Math.floor(diffInMilliseconds / (1000 * 60 * 60)); // Millisekunden in Stunden umrechnen\n};\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n }: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n {label: 'year', seconds: 31536000},\n {label: 'month', seconds: 2592000},\n {label: 'day', seconds: 86400},\n {label: 'hour', seconds: 3600},\n {label: 'minute', seconds: 60},\n {label: 'second', seconds: 1},\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const {label, seconds} = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, {numeric: 'auto'});\n\n return formatter.format(isPast ? -count : count, label);\n};\n\nexport const intervalToDuration = (interval: { start: Date, end: Date }): { years: number, months: number, days: number, hours: number, minutes: number, seconds: number } => {\n const startTime = interval.start.getTime();\n const endTime = interval.end.getTime();\n const diffInMilliseconds = endTime - startTime;\n\n const years = Math.floor(diffInMilliseconds / (1000 * 60 * 60 * 24 * 365.25));\n const months = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24 * 365.25)) / (1000 * 60 * 60 * 24 * 30));\n const days = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24 * 30)) / (1000 * 60 * 60 * 24));\n const hours = Math.floor((diffInMilliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n const minutes = Math.floor((diffInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));\n const seconds = Math.floor((diffInMilliseconds % (1000 * 60)) / 1000);\n\n return { years, months, days, hours, minutes, seconds };\n};\n\nexport const differenceInMinutes = (date1: Date, date2: Date): number => {\n const diffInMilliseconds = date1.getTime() - date2.getTime();\n return Math.floor(diffInMilliseconds / (1000 * 60)); // Millisekunden in Minuten umrechnen\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Language } from "chayns-api";
|
|
2
|
+
export declare const addSeconds: (date: Date, seconds: number) => Date;
|
|
3
|
+
export declare const subHours: (date: Date, hours: number) => Date;
|
|
4
|
+
export declare const differenceInHours: (date1: Date, date2: Date) => number;
|
|
5
|
+
interface GetTimeTillNow {
|
|
6
|
+
date: Date;
|
|
7
|
+
currentDate: Date;
|
|
8
|
+
language: Language;
|
|
9
|
+
}
|
|
10
|
+
export declare const getTimeTillNow: ({ date, currentDate, language, }: GetTimeTillNow) => string;
|
|
11
|
+
export declare const intervalToDuration: (interval: {
|
|
12
|
+
start: Date;
|
|
13
|
+
end: Date;
|
|
14
|
+
}) => {
|
|
15
|
+
years: number;
|
|
16
|
+
months: number;
|
|
17
|
+
days: number;
|
|
18
|
+
hours: number;
|
|
19
|
+
minutes: number;
|
|
20
|
+
seconds: number;
|
|
21
|
+
};
|
|
22
|
+
export declare const differenceInMinutes: (date1: Date, date2: Date) => number;
|
|
23
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/devalue-slider",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.921",
|
|
4
4
|
"description": "A slider to devalue something.",
|
|
5
5
|
"siteEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -51,9 +51,8 @@
|
|
|
51
51
|
"url": "https://github.com/TobitSoftware/chayns-components/issues"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
55
|
-
"@react-hook/size": "^2.1.2"
|
|
56
|
-
"date-fns": "^3.6.0"
|
|
54
|
+
"@chayns-components/core": "^5.0.0-beta.921",
|
|
55
|
+
"@react-hook/size": "^2.1.2"
|
|
57
56
|
},
|
|
58
57
|
"devDependencies": {
|
|
59
58
|
"@babel/cli": "^7.25.9",
|
|
@@ -82,5 +81,5 @@
|
|
|
82
81
|
"publishConfig": {
|
|
83
82
|
"access": "public"
|
|
84
83
|
},
|
|
85
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "7b1332c3aa20828cbf959627dc1addd3553a863e"
|
|
86
85
|
}
|