@charlite/react-temporal 0.0.0-stage → 1.1.1
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/CHANGELOG.md +106 -0
- package/LICENSE +21 -0
- package/README.md +178 -2
- package/dist/hooks/useTemporalAdd.d.ts +7 -0
- package/dist/hooks/useTemporalCalendar.d.ts +4 -0
- package/dist/hooks/useTemporalClock.d.ts +5 -0
- package/dist/hooks/useTemporalCompare.d.ts +7 -0
- package/dist/hooks/useTemporalCountdown.d.ts +5 -0
- package/dist/hooks/useTemporalCountdownStatus.d.ts +11 -0
- package/dist/hooks/useTemporalDiff.d.ts +5 -0
- package/dist/hooks/useTemporalDuration.d.ts +5 -0
- package/dist/hooks/useTemporalElapsed.d.ts +5 -0
- package/dist/hooks/useTemporalFormat.d.ts +7 -0
- package/dist/hooks/useTemporalFrom.d.ts +5 -0
- package/dist/hooks/useTemporalInterval.d.ts +6 -0
- package/dist/hooks/useTemporalLocalDate.d.ts +5 -0
- package/dist/hooks/useTemporalMonth.d.ts +5 -0
- package/dist/hooks/useTemporalNow.d.ts +6 -0
- package/dist/hooks/useTemporalParse.d.ts +3 -0
- package/dist/hooks/useTemporalRange.d.ts +5 -0
- package/dist/hooks/useTemporalRelative.d.ts +6 -0
- package/dist/hooks/useTemporalSafeParse.d.ts +5 -0
- package/dist/hooks/useTemporalSchedule.d.ts +9 -0
- package/dist/hooks/useTemporalStopwatch.d.ts +11 -0
- package/dist/hooks/useTemporalTimeZone.d.ts +4 -0
- package/dist/hooks/useTemporalWeek.d.ts +5 -0
- package/dist/hooks/useTemporalWithin.d.ts +5 -0
- package/dist/hooks/useTemporalYear.d.ts +5 -0
- package/dist/hooks/useTemporalZonedNow.d.ts +6 -0
- package/dist/index.cjs +507 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.esm.js +477 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/internal/durationKey.d.ts +5 -0
- package/dist/internal/useLatest.d.ts +2 -0
- package/dist/internal/useTemporalTicker.d.ts +11 -0
- package/dist/temporal.d.ts +20 -0
- package/dist/types.d.ts +35 -0
- package/dist/utils/formatRelative.d.ts +6 -0
- package/dist/utils/parseTemporal.d.ts +2 -0
- package/docs/README.md +53 -0
- package/docs/api-reference.md +331 -0
- package/docs/getting-started.md +111 -0
- package/docs/installation.md +87 -0
- package/docs/migration.md +143 -0
- package/docs/polyfill.md +89 -0
- package/docs/typescript.md +86 -0
- package/package.json +117 -4
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var temporalPolyfill = require('temporal-polyfill');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* True when the host exposes a native `globalThis.Temporal` implementation.
|
|
8
|
+
*/
|
|
9
|
+
function hasNativeTemporal() {
|
|
10
|
+
return typeof globalThis !== 'undefined' && globalThis.Temporal !== undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Returns the Temporal namespace, preferring native host support
|
|
14
|
+
* (Chrome 144+, Firefox 139+, Edge 144+, Node.js 26+) and falling back to
|
|
15
|
+
* `temporal-polyfill` (smaller, spec-current) when native is missing.
|
|
16
|
+
*
|
|
17
|
+
* You may still install `@js-temporal/polyfill` in your app for typing or tooling;
|
|
18
|
+
* this package does not load it automatically.
|
|
19
|
+
*/
|
|
20
|
+
function getTemporal() {
|
|
21
|
+
if (hasNativeTemporal()) {
|
|
22
|
+
return globalThis.Temporal;
|
|
23
|
+
}
|
|
24
|
+
return temporalPolyfill.Temporal;
|
|
25
|
+
}
|
|
26
|
+
/** Cached Temporal namespace for hot paths inside hooks. */
|
|
27
|
+
const Temporal = getTemporal();
|
|
28
|
+
|
|
29
|
+
/** Keeps a ref to the latest value (for callbacks inside intervals/timeouts). */
|
|
30
|
+
function useLatest(value) {
|
|
31
|
+
const ref = react.useRef(value);
|
|
32
|
+
react.useEffect(() => {
|
|
33
|
+
ref.current = value;
|
|
34
|
+
}, [value]);
|
|
35
|
+
return ref;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Shared interval driver for live clock hooks.
|
|
40
|
+
*/
|
|
41
|
+
function useTemporalTicker({ intervalMs, getSnapshot, pauseWhenHidden = false, enabled = true, }) {
|
|
42
|
+
const getSnapshotRef = useLatest(getSnapshot);
|
|
43
|
+
const [value, setValue] = react.useState(() => getSnapshotRef.current());
|
|
44
|
+
react.useEffect(() => {
|
|
45
|
+
if (!enabled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const tick = () => setValue(getSnapshotRef.current());
|
|
49
|
+
if (pauseWhenHidden && typeof document !== 'undefined') {
|
|
50
|
+
const onVisibility = () => {
|
|
51
|
+
if (!document.hidden) {
|
|
52
|
+
tick();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
document.addEventListener('visibilitychange', onVisibility);
|
|
56
|
+
const id = setInterval(() => {
|
|
57
|
+
if (!document.hidden) {
|
|
58
|
+
tick();
|
|
59
|
+
}
|
|
60
|
+
}, intervalMs);
|
|
61
|
+
return () => {
|
|
62
|
+
clearInterval(id);
|
|
63
|
+
document.removeEventListener('visibilitychange', onVisibility);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const id = setInterval(tick, intervalMs);
|
|
67
|
+
return () => clearInterval(id);
|
|
68
|
+
}, [enabled, intervalMs, pauseWhenHidden, getSnapshotRef]);
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Returns the current time as a Temporal.Instant (or ZonedDateTime when timeZone is set),
|
|
74
|
+
* updating at the configured interval.
|
|
75
|
+
*/
|
|
76
|
+
function useTemporalNow(options) {
|
|
77
|
+
const { intervalMs = 1000, timeZone, pauseWhenHidden = false } = options ?? {};
|
|
78
|
+
const getNow = react.useCallback(() => timeZone ? Temporal.Now.zonedDateTimeISO(timeZone) : Temporal.Now.instant(), [timeZone]);
|
|
79
|
+
return useTemporalTicker({
|
|
80
|
+
intervalMs,
|
|
81
|
+
pauseWhenHidden,
|
|
82
|
+
getSnapshot: getNow,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Returns the current Temporal.Instant, updating at a configurable interval.
|
|
88
|
+
*/
|
|
89
|
+
function useTemporalClock(options) {
|
|
90
|
+
const { intervalMs = 1000, pauseWhenHidden = false } = options ?? {};
|
|
91
|
+
const getNow = react.useCallback(() => Temporal.Now.instant(), []);
|
|
92
|
+
return useTemporalTicker({
|
|
93
|
+
intervalMs,
|
|
94
|
+
pauseWhenHidden,
|
|
95
|
+
getSnapshot: getNow,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Returns the current Temporal.ZonedDateTime for the given IANA time zone,
|
|
101
|
+
* updating at a configurable interval.
|
|
102
|
+
*/
|
|
103
|
+
function useTemporalZonedNow(timeZone, options) {
|
|
104
|
+
const { intervalMs = 1000, pauseWhenHidden = false } = options ?? {};
|
|
105
|
+
const getNow = react.useCallback(() => Temporal.Now.zonedDateTimeISO(timeZone), [timeZone]);
|
|
106
|
+
return useTemporalTicker({
|
|
107
|
+
intervalMs,
|
|
108
|
+
pauseWhenHidden,
|
|
109
|
+
getSnapshot: getNow,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Stable string key for `Temporal.DurationLike` values in hook dependency arrays. */
|
|
114
|
+
function durationKey(duration) {
|
|
115
|
+
return Temporal.Duration.from(duration).toString();
|
|
116
|
+
}
|
|
117
|
+
/** Milliseconds for a duration-like value (for timers). */
|
|
118
|
+
function durationToMilliseconds(duration) {
|
|
119
|
+
return Temporal.Duration.from(duration).total({ unit: 'milliseconds' });
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Runs a callback at a given Temporal.Duration interval.
|
|
124
|
+
* Duration values are normalized for stable effect dependencies.
|
|
125
|
+
*/
|
|
126
|
+
function useTemporalInterval(callback, duration) {
|
|
127
|
+
const savedCallback = useLatest(callback);
|
|
128
|
+
const key = durationKey(duration);
|
|
129
|
+
react.useEffect(() => {
|
|
130
|
+
const ms = durationToMilliseconds(duration);
|
|
131
|
+
const id = setInterval(() => savedCallback.current(), ms);
|
|
132
|
+
return () => clearInterval(id);
|
|
133
|
+
}, [key, savedCallback]);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Returns a Temporal.Duration between two instants.
|
|
138
|
+
*/
|
|
139
|
+
function useTemporalDuration(start, end) {
|
|
140
|
+
return react.useMemo(() => start.until(end), [start, end]);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Validates and returns the calendar ID for a given calendar name.
|
|
145
|
+
*/
|
|
146
|
+
function useTemporalCalendar(id) {
|
|
147
|
+
return react.useMemo(() => Temporal.PlainDate.from({ year: 2000, month: 1, day: 1, calendar: id }).calendarId, [id]);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Validates and returns the time zone ID for a given IANA time zone name.
|
|
152
|
+
*/
|
|
153
|
+
function useTemporalTimeZone(id) {
|
|
154
|
+
return react.useMemo(() => Temporal.ZonedDateTime.from({
|
|
155
|
+
year: 2000,
|
|
156
|
+
month: 1,
|
|
157
|
+
day: 1,
|
|
158
|
+
timeZone: id,
|
|
159
|
+
}).timeZoneId, [id]);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Formats a Temporal object using Intl via Temporal's toLocaleString.
|
|
164
|
+
*/
|
|
165
|
+
function useTemporalFormat(temporalObj, locales, options) {
|
|
166
|
+
return react.useMemo(() => temporalObj.toLocaleString(locales, options), [temporalObj, locales, options]);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Returns an array of Temporal.PlainDate between start and end (inclusive).
|
|
171
|
+
*/
|
|
172
|
+
function useTemporalRange(start, end) {
|
|
173
|
+
return react.useMemo(() => {
|
|
174
|
+
const dates = [];
|
|
175
|
+
let current = start;
|
|
176
|
+
while (Temporal.PlainDate.compare(current, end) <= 0) {
|
|
177
|
+
dates.push(current);
|
|
178
|
+
current = current.add({ days: 1 });
|
|
179
|
+
}
|
|
180
|
+
return dates;
|
|
181
|
+
}, [start, end]);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const RELATIVE_UNITS = [
|
|
185
|
+
{ unit: 'year', seconds: 31_536_000 },
|
|
186
|
+
{ unit: 'month', seconds: 2_592_000 },
|
|
187
|
+
{ unit: 'week', seconds: 604_800 },
|
|
188
|
+
{ unit: 'day', seconds: 86_400 },
|
|
189
|
+
{ unit: 'hour', seconds: 3_600 },
|
|
190
|
+
{ unit: 'minute', seconds: 60 },
|
|
191
|
+
{ unit: 'second', seconds: 1 },
|
|
192
|
+
];
|
|
193
|
+
/**
|
|
194
|
+
* Formats the span from `from` to `to` with Intl.RelativeTimeFormat.
|
|
195
|
+
* Chooses the coarsest unit that still represents the span without awkward rounding
|
|
196
|
+
* (e.g. 90 minutes instead of 2 hours).
|
|
197
|
+
*/
|
|
198
|
+
function formatRelativeTime(totalSeconds, locales, options) {
|
|
199
|
+
const rtf = new Intl.RelativeTimeFormat(locales, { numeric: 'auto', ...options });
|
|
200
|
+
const abs = Math.abs(totalSeconds);
|
|
201
|
+
for (const entry of RELATIVE_UNITS) {
|
|
202
|
+
if (abs < entry.seconds) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
const value = totalSeconds / entry.seconds;
|
|
206
|
+
const rounded = Math.round(value);
|
|
207
|
+
if (entry.unit === 'hour' &&
|
|
208
|
+
Math.abs(rounded) >= 1 &&
|
|
209
|
+
Math.abs(value - rounded) > 0.01 &&
|
|
210
|
+
abs >= 60) {
|
|
211
|
+
return rtf.format(Math.round(totalSeconds / 60), 'minute');
|
|
212
|
+
}
|
|
213
|
+
return rtf.format(rounded, entry.unit);
|
|
214
|
+
}
|
|
215
|
+
return rtf.format(0, 'second');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Returns a locale-aware relative time string between two instants
|
|
220
|
+
* (e.g. "in 3 hours", "2 days ago") using Intl.RelativeTimeFormat.
|
|
221
|
+
*/
|
|
222
|
+
function useTemporalRelative(from, to, locales, options) {
|
|
223
|
+
return react.useMemo(() => {
|
|
224
|
+
const totalSeconds = from.until(to).total('seconds');
|
|
225
|
+
return formatRelativeTime(totalSeconds, locales, options);
|
|
226
|
+
}, [from, to, locales, options]);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Returns the remaining seconds until a target Temporal.Instant.
|
|
231
|
+
*/
|
|
232
|
+
function useTemporalCountdown(target, options) {
|
|
233
|
+
const { intervalMs = 1000, onComplete } = options ?? {};
|
|
234
|
+
const completedRef = react.useRef(false);
|
|
235
|
+
const onCompleteRef = useLatest(onComplete ?? (() => { }));
|
|
236
|
+
const getRemaining = react.useCallback(() => Math.max(0, Math.floor(Temporal.Now.instant().until(target).total('seconds'))), [target]);
|
|
237
|
+
const remaining = useTemporalTicker({
|
|
238
|
+
intervalMs,
|
|
239
|
+
getSnapshot: getRemaining,
|
|
240
|
+
});
|
|
241
|
+
react.useEffect(() => {
|
|
242
|
+
completedRef.current = false;
|
|
243
|
+
}, [target]);
|
|
244
|
+
react.useEffect(() => {
|
|
245
|
+
if (remaining === 0 && !completedRef.current) {
|
|
246
|
+
completedRef.current = true;
|
|
247
|
+
onCompleteRef.current();
|
|
248
|
+
}
|
|
249
|
+
}, [remaining, onCompleteRef]);
|
|
250
|
+
return remaining;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Countdown with structured status (seconds + completion flag).
|
|
255
|
+
*/
|
|
256
|
+
function useTemporalCountdownStatus(target, options) {
|
|
257
|
+
const seconds = useTemporalCountdown(target, options);
|
|
258
|
+
return react.useMemo(() => ({
|
|
259
|
+
seconds,
|
|
260
|
+
isComplete: seconds === 0,
|
|
261
|
+
}), [seconds]);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Schedules a callback to run at a specific Temporal.Instant.
|
|
266
|
+
*/
|
|
267
|
+
function useTemporalSchedule(callback, instant, options) {
|
|
268
|
+
const { runIfPast = true } = options ?? {};
|
|
269
|
+
const savedCallback = useLatest(callback);
|
|
270
|
+
react.useEffect(() => {
|
|
271
|
+
const now = Temporal.Now.instant();
|
|
272
|
+
const ms = instant.epochMilliseconds - now.epochMilliseconds;
|
|
273
|
+
if (ms <= 0) {
|
|
274
|
+
if (runIfPast) {
|
|
275
|
+
savedCallback.current();
|
|
276
|
+
}
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
const id = setTimeout(() => savedCallback.current(), ms);
|
|
280
|
+
return () => clearTimeout(id);
|
|
281
|
+
}, [instant, runIfPast, savedCallback]);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
function parseTemporal(kind, input) {
|
|
285
|
+
switch (kind) {
|
|
286
|
+
case 'instant':
|
|
287
|
+
return Temporal.Instant.from(input);
|
|
288
|
+
case 'plainDate':
|
|
289
|
+
return Temporal.PlainDate.from(input);
|
|
290
|
+
case 'plainTime':
|
|
291
|
+
return Temporal.PlainTime.from(input);
|
|
292
|
+
case 'plainDateTime':
|
|
293
|
+
return Temporal.PlainDateTime.from(input);
|
|
294
|
+
case 'zonedDateTime':
|
|
295
|
+
return Temporal.ZonedDateTime.from(input);
|
|
296
|
+
default: {
|
|
297
|
+
const _exhaustive = kind;
|
|
298
|
+
return _exhaustive;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Parses an ISO string into the requested Temporal type (memoized on `input`).
|
|
305
|
+
*/
|
|
306
|
+
function useTemporalFrom(kind, input) {
|
|
307
|
+
return react.useMemo(() => parseTemporal(kind, input), [kind, input]);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/** Parses an ISO string to Temporal.Instant. */
|
|
311
|
+
function useTemporalParse(isoString) {
|
|
312
|
+
return useTemporalFrom('instant', isoString);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Like `useTemporalFrom`, but returns `{ value, error }` instead of throwing.
|
|
317
|
+
*/
|
|
318
|
+
function useTemporalSafeParse(kind, input) {
|
|
319
|
+
return react.useMemo(() => {
|
|
320
|
+
try {
|
|
321
|
+
return { value: parseTemporal(kind, input), error: null };
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
return {
|
|
325
|
+
value: null,
|
|
326
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}, [kind, input]);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Returns the difference between two instants as a Temporal.Duration.
|
|
334
|
+
*/
|
|
335
|
+
function useTemporalDiff(a, b) {
|
|
336
|
+
return react.useMemo(() => a.until(b), [a, b]);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Returns all dates in the ISO week (Monday–Sunday) containing the given PlainDate.
|
|
341
|
+
*/
|
|
342
|
+
function useTemporalWeek(date) {
|
|
343
|
+
return react.useMemo(() => {
|
|
344
|
+
const weekDay = date.dayOfWeek;
|
|
345
|
+
const start = date.subtract({ days: weekDay - 1 });
|
|
346
|
+
return Array.from({ length: 7 }, (_, i) => start.add({ days: i }));
|
|
347
|
+
}, [date]);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Returns all dates in the month of a given Temporal.PlainDate.
|
|
352
|
+
*/
|
|
353
|
+
function useTemporalMonth(date) {
|
|
354
|
+
return react.useMemo(() => {
|
|
355
|
+
const days = Temporal.PlainDate.from({
|
|
356
|
+
year: date.year,
|
|
357
|
+
month: date.month,
|
|
358
|
+
day: 1,
|
|
359
|
+
}).daysInMonth;
|
|
360
|
+
return Array.from({ length: days }, (_, i) => Temporal.PlainDate.from({ year: date.year, month: date.month, day: i + 1 }));
|
|
361
|
+
}, [date]);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Returns the first day of each month in the year of a given Temporal.PlainDate.
|
|
366
|
+
*/
|
|
367
|
+
function useTemporalYear(date) {
|
|
368
|
+
return react.useMemo(() => Array.from({ length: 12 }, (_, i) => Temporal.PlainDate.from({ year: date.year, month: i + 1, day: 1 })), [date]);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Returns elapsed whole seconds since a past `Temporal.Instant` (0 if the instant is in the future).
|
|
373
|
+
*/
|
|
374
|
+
function useTemporalElapsed(since, options) {
|
|
375
|
+
const { intervalMs = 1000, pauseWhenHidden = false } = options ?? {};
|
|
376
|
+
const getElapsed = react.useCallback(() => {
|
|
377
|
+
const seconds = since.until(Temporal.Now.instant()).total('seconds');
|
|
378
|
+
return Math.max(0, Math.floor(seconds));
|
|
379
|
+
}, [since]);
|
|
380
|
+
return useTemporalTicker({
|
|
381
|
+
intervalMs,
|
|
382
|
+
pauseWhenHidden,
|
|
383
|
+
getSnapshot: getElapsed,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Live stopwatch from a fixed start instant, updating on an interval.
|
|
389
|
+
*/
|
|
390
|
+
function useTemporalStopwatch(start, options) {
|
|
391
|
+
const { intervalMs = 100, pauseWhenHidden = false } = options ?? {};
|
|
392
|
+
const getElapsed = react.useCallback(() => start.until(Temporal.Now.instant()), [start]);
|
|
393
|
+
const elapsed = useTemporalTicker({
|
|
394
|
+
intervalMs,
|
|
395
|
+
pauseWhenHidden,
|
|
396
|
+
getSnapshot: getElapsed,
|
|
397
|
+
});
|
|
398
|
+
const seconds = react.useMemo(() => Math.max(0, Math.floor(elapsed.total('seconds'))), [elapsed]);
|
|
399
|
+
return { elapsed, seconds };
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Returns today's calendar date in the given IANA time zone, updating across midnight.
|
|
404
|
+
*/
|
|
405
|
+
function useTemporalLocalDate(timeZone, options) {
|
|
406
|
+
const { intervalMs = 60_000, pauseWhenHidden = false } = options ?? {};
|
|
407
|
+
const getDate = react.useCallback(() => Temporal.Now.zonedDateTimeISO(timeZone).toPlainDate(), [timeZone]);
|
|
408
|
+
return useTemporalTicker({
|
|
409
|
+
intervalMs,
|
|
410
|
+
pauseWhenHidden,
|
|
411
|
+
getSnapshot: getDate,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function isInstant$1(value) {
|
|
416
|
+
return typeof value === 'object' && value !== null && 'epochMilliseconds' in value && !('year' in value);
|
|
417
|
+
}
|
|
418
|
+
function isPlainDate$1(value) {
|
|
419
|
+
return (typeof value === 'object' &&
|
|
420
|
+
value !== null &&
|
|
421
|
+
'year' in value &&
|
|
422
|
+
'month' in value &&
|
|
423
|
+
'day' in value &&
|
|
424
|
+
!('epochMilliseconds' in value));
|
|
425
|
+
}
|
|
426
|
+
function compareValues(a, b) {
|
|
427
|
+
if (isInstant$1(a) && isInstant$1(b)) {
|
|
428
|
+
return Temporal.Instant.compare(a, b);
|
|
429
|
+
}
|
|
430
|
+
if (isPlainDate$1(a) && isPlainDate$1(b)) {
|
|
431
|
+
return Temporal.PlainDate.compare(a, b);
|
|
432
|
+
}
|
|
433
|
+
throw new TypeError('useTemporalCompare requires two Instants or two PlainDates');
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Memoized Temporal compare result: negative if `a` is before `b`, positive if after, 0 if equal.
|
|
437
|
+
*/
|
|
438
|
+
function useTemporalCompare(a, b) {
|
|
439
|
+
return react.useMemo(() => compareValues(a, b), [a, b]);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
function isInstant(value) {
|
|
443
|
+
return typeof value === 'object' && value !== null && 'epochMilliseconds' in value && !('year' in value);
|
|
444
|
+
}
|
|
445
|
+
function isPlainDate(value) {
|
|
446
|
+
return (typeof value === 'object' &&
|
|
447
|
+
value !== null &&
|
|
448
|
+
'year' in value &&
|
|
449
|
+
'month' in value &&
|
|
450
|
+
'day' in value &&
|
|
451
|
+
!('epochMilliseconds' in value));
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* True when `value` is inclusively between `start` and `end`.
|
|
455
|
+
*/
|
|
456
|
+
function useTemporalWithin(value, start, end) {
|
|
457
|
+
return react.useMemo(() => {
|
|
458
|
+
if (isInstant(value) && isInstant(start) && isInstant(end)) {
|
|
459
|
+
return (Temporal.Instant.compare(value, start) >= 0 &&
|
|
460
|
+
Temporal.Instant.compare(value, end) <= 0);
|
|
461
|
+
}
|
|
462
|
+
if (isPlainDate(value) && isPlainDate(start) && isPlainDate(end)) {
|
|
463
|
+
return (Temporal.PlainDate.compare(value, start) >= 0 &&
|
|
464
|
+
Temporal.PlainDate.compare(value, end) <= 0);
|
|
465
|
+
}
|
|
466
|
+
throw new TypeError('useTemporalWithin requires matching Instant or PlainDate operands');
|
|
467
|
+
}, [value, start, end]);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Memoized `temporal.add(duration)` for PlainDate or Instant values.
|
|
472
|
+
*/
|
|
473
|
+
function useTemporalAdd(value, duration) {
|
|
474
|
+
const key = durationKey(duration);
|
|
475
|
+
return react.useMemo(() => value.add(duration), [value, key]);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
exports.Temporal = Temporal;
|
|
479
|
+
exports.getTemporal = getTemporal;
|
|
480
|
+
exports.hasNativeTemporal = hasNativeTemporal;
|
|
481
|
+
exports.useTemporalAdd = useTemporalAdd;
|
|
482
|
+
exports.useTemporalCalendar = useTemporalCalendar;
|
|
483
|
+
exports.useTemporalClock = useTemporalClock;
|
|
484
|
+
exports.useTemporalCompare = useTemporalCompare;
|
|
485
|
+
exports.useTemporalCountdown = useTemporalCountdown;
|
|
486
|
+
exports.useTemporalCountdownStatus = useTemporalCountdownStatus;
|
|
487
|
+
exports.useTemporalDiff = useTemporalDiff;
|
|
488
|
+
exports.useTemporalDuration = useTemporalDuration;
|
|
489
|
+
exports.useTemporalElapsed = useTemporalElapsed;
|
|
490
|
+
exports.useTemporalFormat = useTemporalFormat;
|
|
491
|
+
exports.useTemporalFrom = useTemporalFrom;
|
|
492
|
+
exports.useTemporalInterval = useTemporalInterval;
|
|
493
|
+
exports.useTemporalLocalDate = useTemporalLocalDate;
|
|
494
|
+
exports.useTemporalMonth = useTemporalMonth;
|
|
495
|
+
exports.useTemporalNow = useTemporalNow;
|
|
496
|
+
exports.useTemporalParse = useTemporalParse;
|
|
497
|
+
exports.useTemporalRange = useTemporalRange;
|
|
498
|
+
exports.useTemporalRelative = useTemporalRelative;
|
|
499
|
+
exports.useTemporalSafeParse = useTemporalSafeParse;
|
|
500
|
+
exports.useTemporalSchedule = useTemporalSchedule;
|
|
501
|
+
exports.useTemporalStopwatch = useTemporalStopwatch;
|
|
502
|
+
exports.useTemporalTimeZone = useTemporalTimeZone;
|
|
503
|
+
exports.useTemporalWeek = useTemporalWeek;
|
|
504
|
+
exports.useTemporalWithin = useTemporalWithin;
|
|
505
|
+
exports.useTemporalYear = useTemporalYear;
|
|
506
|
+
exports.useTemporalZonedNow = useTemporalZonedNow;
|
|
507
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/temporal.ts","../src/internal/useLatest.ts","../src/internal/useTemporalTicker.ts","../src/hooks/useTemporalNow.ts","../src/hooks/useTemporalClock.ts","../src/hooks/useTemporalZonedNow.ts","../src/internal/durationKey.ts","../src/hooks/useTemporalInterval.ts","../src/hooks/useTemporalDuration.ts","../src/hooks/useTemporalCalendar.ts","../src/hooks/useTemporalTimeZone.ts","../src/hooks/useTemporalFormat.ts","../src/hooks/useTemporalRange.ts","../src/utils/formatRelative.ts","../src/hooks/useTemporalRelative.ts","../src/hooks/useTemporalCountdown.ts","../src/hooks/useTemporalCountdownStatus.ts","../src/hooks/useTemporalSchedule.ts","../src/utils/parseTemporal.ts","../src/hooks/useTemporalFrom.ts","../src/hooks/useTemporalParse.ts","../src/hooks/useTemporalSafeParse.ts","../src/hooks/useTemporalDiff.ts","../src/hooks/useTemporalWeek.ts","../src/hooks/useTemporalMonth.ts","../src/hooks/useTemporalYear.ts","../src/hooks/useTemporalElapsed.ts","../src/hooks/useTemporalStopwatch.ts","../src/hooks/useTemporalLocalDate.ts","../src/hooks/useTemporalCompare.ts","../src/hooks/useTemporalWithin.ts","../src/hooks/useTemporalAdd.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["TemporalPolyfill","useRef","useEffect","useState","useCallback","useMemo","isInstant","isPlainDate"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { getTemporal, hasNativeTemporal, Temporal } from './temporal';
|
|
2
|
+
export type { TemporalNamespace } from './temporal';
|
|
3
|
+
export * from './types';
|
|
4
|
+
export * from './hooks/useTemporalNow';
|
|
5
|
+
export * from './hooks/useTemporalClock';
|
|
6
|
+
export * from './hooks/useTemporalZonedNow';
|
|
7
|
+
export * from './hooks/useTemporalInterval';
|
|
8
|
+
export * from './hooks/useTemporalDuration';
|
|
9
|
+
export * from './hooks/useTemporalCalendar';
|
|
10
|
+
export * from './hooks/useTemporalTimeZone';
|
|
11
|
+
export * from './hooks/useTemporalFormat';
|
|
12
|
+
export * from './hooks/useTemporalRange';
|
|
13
|
+
export * from './hooks/useTemporalRelative';
|
|
14
|
+
export * from './hooks/useTemporalCountdown';
|
|
15
|
+
export * from './hooks/useTemporalCountdownStatus';
|
|
16
|
+
export * from './hooks/useTemporalSchedule';
|
|
17
|
+
export * from './hooks/useTemporalParse';
|
|
18
|
+
export * from './hooks/useTemporalFrom';
|
|
19
|
+
export * from './hooks/useTemporalSafeParse';
|
|
20
|
+
export * from './hooks/useTemporalDiff';
|
|
21
|
+
export * from './hooks/useTemporalWeek';
|
|
22
|
+
export * from './hooks/useTemporalMonth';
|
|
23
|
+
export * from './hooks/useTemporalYear';
|
|
24
|
+
export * from './hooks/useTemporalElapsed';
|
|
25
|
+
export * from './hooks/useTemporalStopwatch';
|
|
26
|
+
export * from './hooks/useTemporalLocalDate';
|
|
27
|
+
export * from './hooks/useTemporalCompare';
|
|
28
|
+
export * from './hooks/useTemporalWithin';
|
|
29
|
+
export * from './hooks/useTemporalAdd';
|