MCPcopy Create free account
hub / github.com/adobe/react-spectrum / cycleTime

Function cycleTime

packages/@internationalized/date/src/manipulation.ts:378–413  ·  view source on GitHub ↗
(
  value: Time | CalendarDateTime,
  field: TimeField,
  amount: number,
  options?: CycleTimeOptions
)

Source from the content-addressed store, hash-verified

376 options?: CycleTimeOptions
377): Time;
378export function cycleTime(
379 value: Time | CalendarDateTime,
380 field: TimeField,
381 amount: number,
382 options?: CycleTimeOptions
383): Mutable<Time | CalendarDateTime> {
384 let mutable: Mutable<Time | CalendarDateTime> = value.copy();
385
386 switch (field) {
387 case 'hour': {
388 let hours = value.hour;
389 let min = 0;
390 let max = 23;
391 if (options?.hourCycle === 12) {
392 let isPM = hours >= 12;
393 min = isPM ? 12 : 0;
394 max = isPM ? 23 : 11;
395 }
396 mutable.hour = cycleValue(hours, amount, min, max, options?.round);
397 break;
398 }
399 case 'minute':
400 mutable.minute = cycleValue(value.minute, amount, 0, 59, options?.round);
401 break;
402 case 'second':
403 mutable.second = cycleValue(value.second, amount, 0, 59, options?.round);
404 break;
405 case 'millisecond':
406 mutable.millisecond = cycleValue(value.millisecond, amount, 0, 999, options?.round);
407 break;
408 default:
409 throw new Error('Unsupported field ' + field);
410 }
411
412 return mutable;
413}
414
415function cycleValue(value: number, amount: number, min: number, max: number, round = false) {
416 if (round) {

Callers 3

cycleMethod · 0.90
cycleMethod · 0.90
cycleZonedFunction · 0.85

Calls 2

cycleValueFunction · 0.70
copyMethod · 0.65

Tested by

no test coverage detected