@kahi-ui/framework
Version:
Straight-forward Svelte UI for the Web
61 lines (60 loc) • 2.24 kB
JavaScript
import { Temporal } from "../../vendor/js-temporal-polyfill";
import { DEFAULT_HOUR, DEFAULT_HOUR_12, DEFAULT_LOCALE, DEFAULT_MINUTE } from "../locale";
import { from_timestamp, to_timestamp } from "./timestamps";
const DEFAULT_FORMAT_OPTIONS = {
hour: DEFAULT_HOUR,
hour_12: DEFAULT_HOUR_12,
minute: DEFAULT_MINUTE,
};
const RESET_UNITS = {
second: 0,
};
export function add_minutes(timestamp, minutes) {
const time = from_timestamp(timestamp).add({ minutes });
return to_timestamp(time);
}
export function format_minute(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,
});
}
export function get_minute(timestamp) {
return from_timestamp(timestamp).hour;
}
export function includes_minute(timestamp, targets) {
const source_time = from_timestamp(timestamp, RESET_UNITS);
return !!targets.find((target, index) => {
const target_time = from_timestamp(target, RESET_UNITS);
return source_time.equals(target_time);
});
}
export function is_minute(timestamp, target) {
const source_time = from_timestamp(timestamp, RESET_UNITS);
const target_time = from_timestamp(target, RESET_UNITS);
return source_time.equals(target_time);
}
export function is_minute_in_range(timestamp, minimum, maximum, inclusive = false) {
const time = from_timestamp(timestamp, RESET_UNITS);
if (maximum) {
const maximum_date = from_timestamp(maximum, RESET_UNITS);
if (Temporal.PlainTime.compare(maximum_date, time) < (inclusive ? 0 : 1))
return false;
}
if (minimum) {
const minimum_date = from_timestamp(minimum, RESET_UNITS);
if (Temporal.PlainTime.compare(minimum_date, time) > (inclusive ? 0 : -1))
return false;
}
return true;
}
export function now_minute() {
const time = Temporal.Now.plainTimeISO();
return to_timestamp(time, RESET_UNITS);
}
export function subtract_minutes(timestamp, minutes) {
const time = from_timestamp(timestamp).subtract({ minutes });
return to_timestamp(time);
}