UNPKG

@kahi-ui/framework

Version:

Straight-forward Svelte UI for the Web

60 lines (59 loc) 2.17 kB
import { Temporal } from "../../vendor/js-temporal-polyfill"; import { DEFAULT_HOUR, DEFAULT_HOUR_12, DEFAULT_LOCALE, DEFAULT_MINUTE, DEFAULT_SECOND, } from "../locale"; import { from_timestamp, to_timestamp } from "./timestamps"; const DEFAULT_FORMAT_OPTIONS = { hour: DEFAULT_HOUR, hour_12: DEFAULT_HOUR_12, minute: DEFAULT_MINUTE, second: DEFAULT_SECOND, }; export function add_seconds(timestamp, seconds) { const time = from_timestamp(timestamp).add({ seconds }); return to_timestamp(time); } export function format_second(timestamp, locale = DEFAULT_LOCALE, options = DEFAULT_FORMAT_OPTIONS) { const time = from_timestamp(timestamp); return time.toLocaleString(locale, { hour: options.hour, hour12: options.hour_12, minute: options.minute, second: options.second, }); } export function get_second(timestamp) { return from_timestamp(timestamp).hour; } export function includes_second(timestamp, targets) { const source_time = from_timestamp(timestamp); return !!targets.find((target, index) => { const target_time = from_timestamp(target); return source_time.equals(target_time); }); } export function is_second(timestamp, target) { const source_time = from_timestamp(timestamp); const target_time = from_timestamp(target); return source_time.equals(target_time); } export function is_second_in_range(timestamp, minimum, maximum, inclusive = false) { const time = from_timestamp(timestamp); if (maximum) { const maximum_date = from_timestamp(maximum); if (Temporal.PlainTime.compare(maximum_date, time) < (inclusive ? 0 : 1)) return false; } if (minimum) { const minimum_date = from_timestamp(minimum); if (Temporal.PlainTime.compare(minimum_date, time) > (inclusive ? 0 : -1)) return false; } return true; } export function now_second() { const time = Temporal.Now.plainTimeISO(); return to_timestamp(time); } export function subtract_seconds(timestamp, seconds) { const time = from_timestamp(timestamp).subtract({ seconds }); return to_timestamp(time); }