@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.
@@ -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, _dateFns.intervalToDuration)({
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, _dateFns.intervalToDuration)({
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, _dateFns.differenceInHours)(refDate.current, devalueTime) > 0) {
46
- const distanceLabel = (0, _dateFns.formatDistanceToNow)(devalueTime, {
47
- addSuffix: true,
48
- locale: _locale.de
49
- }).charAt(0).toUpperCase() + (0, _dateFns.formatDistanceToNow)(devalueTime, {
50
- addSuffix: true,
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, _dateFns.differenceInMinutes)(refDate.current, devalueTime) > 0) {
54
+ } else if ((0, _date.differenceInMinutes)(refDate.current, devalueTime) > 0) {
55
55
  text = 'Vor ##MINUTES## Min. ##SECONDS## Sek. (##TIME## Uhr)';
56
56
  }
57
- return text.replace('##MINUTES##', minutesShowValue).replace('##SECONDS##', secondsShowValue).replace('##TIME##', (0, _dateFns.format)(devalueTime, 'HH:mm'));
58
- }, [minutesShowValue, secondsShowValue, devalueTime]);
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":["_dateFns","require","_react","_interopRequireWildcard","_chaynsApi","_locale","_Timer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Timer","devalueTime","color","textColor","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","formatDistanceToNow","addSuffix","locale","de","charAt","toUpperCase","slice","differenceInMinutes","replace","format","createElement","Container","$baseFontSize","$borderSize","$height","$color","$textColor","$backgroundColor","onPointerDownCapture","Time","_default","exports"],"sources":["../../../../src/components/timer/Timer.tsx"],"sourcesContent":["import {\n differenceInHours,\n differenceInMinutes,\n format,\n formatDistanceToNow,\n intervalToDuration,\n} from 'date-fns';\nimport React, { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { vibrate } from 'chayns-api';\n\nimport { de } from 'date-fns/locale';\nimport { Container, Time } from './Timer.styles';\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 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 formatDistanceToNow(devalueTime, {\n addSuffix: true,\n locale: de,\n })\n .charAt(0)\n .toUpperCase() +\n formatDistanceToNow(devalueTime, { addSuffix: true, locale: de }).slice(1);\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 return text\n .replace('##MINUTES##', minutesShowValue)\n .replace('##SECONDS##', secondsShowValue)\n .replace('##TIME##', format(devalueTime, 'HH:mm'));\n }, [minutesShowValue, secondsShowValue, devalueTime]);\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":[]}
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":";;;;;;AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAK0B,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAQ1B,MAAMW,KAAoC,GAAGA,CAAC;EAAEC,WAAW;EAAEC,KAAK;EAAEC,SAAS,GAAG;AAAQ,CAAC,KAAK;EAC1F,MAAM;IAACC,MAAM,EAACC;EAAS,CAAC,GAAG,IAAAC,sBAAW,EAAC,CAAC;EAExC,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAC,IAAIC,IAAI,CAAC,CAAC,CAAC;EAClC,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EACpC,IAAAC,wBAAkB,EAAC;IACfC,KAAK,EAAEb,WAAW;IAClBc,GAAG,EAAE,IAAIN,IAAI,CAAC;EAClB,CAAC,CACL,CAAC;EACD,MAAMO,gBAAgB,GAAG,IAAAC,cAAO,EAC5B,MAAMC,IAAI,CAACC,GAAG,CAACT,QAAQ,CAACU,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EACnD,CAACX,QAAQ,CAACU,OAAO,CACrB,CAAC;EACD,MAAME,gBAAgB,GAAG,IAAAL,cAAO,EAC5B,MAAMC,IAAI,CAACC,GAAG,CAACT,QAAQ,CAACa,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC,EACnD,CAACX,QAAQ,CAACa,OAAO,CACrB,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACZjB,OAAO,CAACkB,OAAO,GAAG,IAAIhB,IAAI,CAAC,CAAC;IAC5B,MAAMiB,QAAQ,GAAGC,WAAW,CAAC,MAAM;MAC/BpB,OAAO,CAACkB,OAAO,GAAG,IAAIhB,IAAI,CAAC,CAAC;MAC5BE,WAAW,CACP,IAAAE,wBAAkB,EAAC;QACfC,KAAK,EAAEb,WAAW;QAClBc,GAAG,EAAER,OAAO,CAACkB;MACjB,CAAC,CACL,CAAC;IACL,CAAC,EAAE,GAAG,CAAC;IACP,OAAO,MAAMG,aAAa,CAACF,QAAQ,CAAC;EACxC,CAAC,EAAE,CAACzB,WAAW,CAAC,CAAC;EAEjB,MAAM4B,wBAAwB,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAC/C,KAAK,IAAAC,kBAAO,EAAC;MAAEC,OAAO,EAAE,CAAC,EAAE,CAAC;MAAEC,oBAAoB,EAAE;IAAE,CAAC,CAAC;EAC5D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,KAAK,GAAG,IAAAjB,cAAO,EAAC,MAAM;IACxB,IAAIkB,IAAI,GAAG,qCAAqC;IAChD,IAAI,IAAAC,uBAAiB,EAAC7B,OAAO,CAACkB,OAAO,EAAExB,WAAW,CAAC,GAAG,CAAC,EAAE;MACrD,MAAMoC,aAAa,GACf,IAAAC,oBAAc,EAAC;QAACC,IAAI,EAAE,IAAI9B,IAAI,CAAC,CAAC;QAAE+B,WAAW,EAAEvC,WAAW;QAAEI;MAAQ,CAAC,CAAC;MAC1E8B,IAAI,GAAG,GAAGE,aAAa,iBAAiB;IAC5C,CAAC,MAAM,IAAI,IAAAI,yBAAmB,EAAClC,OAAO,CAACkB,OAAO,EAAExB,WAAW,CAAC,GAAG,CAAC,EAAE;MAC9DkC,IAAI,GAAG,sDAAsD;IACjE;IAEA,MAAMO,UAAU,GAAGA,CAACH,IAAU,EAAEI,YAAoB,KAAa;MAC7D,MAAMC,KAAK,GAAGL,IAAI,CAACM,QAAQ,CAAC,CAAC,CAACxB,QAAQ,CAAC,CAAC,CAACyB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACzD,MAAM1B,OAAO,GAAGmB,IAAI,CAACQ,UAAU,CAAC,CAAC,CAAC1B,QAAQ,CAAC,CAAC,CAACyB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MAE7D,IAAIH,YAAY,KAAK,OAAO,EAAE;QAC1B,OAAO,GAAGC,KAAK,IAAIxB,OAAO,EAAE;MAChC;MACA,OAAO,EAAE;IACb,CAAC;IAED,OAAOe,IAAI,CACNa,OAAO,CAAC,aAAa,EAAEhC,gBAAgB,CAAC,CACxCgC,OAAO,CAAC,aAAa,EAAE1B,gBAAgB,CAAC,CACxC0B,OAAO,CAAC,UAAU,EAAEN,UAAU,CAACzC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC9D,CAAC,EAAE,CAACA,WAAW,EAAEe,gBAAgB,EAAEM,gBAAgB,EAAEjB,QAAQ,CAAC,CAAC;EAE/D,oBACI/B,MAAA,CAAAY,OAAA,CAAA+D,aAAA,CAACvE,MAAA,CAAAwE,SAAS;IACNC,aAAa,EAAE,EAAG;IAClBC,WAAW,EAAE,CAAE;IACfC,OAAO,EAAE,EAAG;IACZC,MAAM,EAAEpD,KAAM;IACdqD,UAAU,EAAEpD,SAAU;IACtBqD,gBAAgB,EAAEtD,KAAM;IACxBuD,oBAAoB,EAAE5B;EAAyB,gBAE/CvD,MAAA,CAAAY,OAAA,CAAA+D,aAAA,CAACvE,MAAA,CAAAgF,IAAI,QAAExB,KAAY,CACZ,CAAC;AAEpB,CAAC;AAAC,IAAAyB,QAAA,GAAAC,OAAA,CAAA1E,OAAA,GAEac,KAAK","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 = formatDistanceToNow(devalueTime, {
40
- addSuffix: true,
41
- locale: de
42
- }).charAt(0).toUpperCase() + formatDistanceToNow(devalueTime, {
43
- addSuffix: true,
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
- return text.replace('##MINUTES##', minutesShowValue).replace('##SECONDS##', secondsShowValue).replace('##TIME##', format(devalueTime, 'HH:mm'));
51
- }, [minutesShowValue, secondsShowValue, devalueTime]);
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":["differenceInHours","differenceInMinutes","format","formatDistanceToNow","intervalToDuration","React","useCallback","useEffect","useMemo","useRef","useState","vibrate","de","Container","Time","Timer","_ref","devalueTime","color","textColor","refDate","Date","distance","setDistance","start","end","minutesShowValue","Math","max","minutes","toString","secondsShowValue","seconds","current","interval","setInterval","clearInterval","handlePointerDownCapture","pattern","iOSFeedbackVibration","label","text","distanceLabel","addSuffix","locale","charAt","toUpperCase","slice","replace","createElement","$baseFontSize","$borderSize","$height","$color","$textColor","$backgroundColor","onPointerDownCapture"],"sources":["../../../../src/components/timer/Timer.tsx"],"sourcesContent":["import {\n differenceInHours,\n differenceInMinutes,\n format,\n formatDistanceToNow,\n intervalToDuration,\n} from 'date-fns';\nimport React, { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { vibrate } from 'chayns-api';\n\nimport { de } from 'date-fns/locale';\nimport { Container, Time } from './Timer.styles';\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 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 formatDistanceToNow(devalueTime, {\n addSuffix: true,\n locale: de,\n })\n .charAt(0)\n .toUpperCase() +\n formatDistanceToNow(devalueTime, { addSuffix: true, locale: de }).slice(1);\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 return text\n .replace('##MINUTES##', minutesShowValue)\n .replace('##SECONDS##', secondsShowValue)\n .replace('##TIME##', format(devalueTime, 'HH:mm'));\n }, [minutesShowValue, secondsShowValue, devalueTime]);\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":[]}
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.919",
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.919",
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": "67d7d33928760499972ab2185ad3ee09120c2d9a"
84
+ "gitHead": "7b1332c3aa20828cbf959627dc1addd3553a863e"
86
85
  }