@kahi-ui/framework
Version:
Straight-forward Svelte UI for the Web
60 lines (59 loc) • 2.17 kB
JavaScript
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);
}