laif-ds
Version:
Design System di Laif con componenti React basati su principi di Atomic Design
60 lines (59 loc) • 2.25 kB
JavaScript
"use client";
import { getDefaultOptions as u } from "./_lib/defaultOptions.js";
import { formatters as f } from "./_lib/format/formatters.js";
import { longFormatters as d } from "./_lib/format/longFormatters.js";
import { isProtectedWeekYearToken as g, isProtectedDayOfYearToken as h, warnOrThrowProtectedError as w } from "./_lib/protectedTokens.js";
import { isValid as D } from "./isValid.js";
import { toDate as T } from "./toDate.js";
import { enUS as O } from "./locale/en-US.js";
const E = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g, v = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g, C = /^'([^]*?)'?$/, S = /''/g, R = /[a-zA-Z]/;
function L(o, a, r) {
const n = u(), i = r?.locale ?? n.locale ?? O, m = r?.firstWeekContainsDate ?? r?.locale?.options?.firstWeekContainsDate ?? n.firstWeekContainsDate ?? n.locale?.options?.firstWeekContainsDate ?? 1, p = r?.weekStartsOn ?? r?.locale?.options?.weekStartsOn ?? n.weekStartsOn ?? n.locale?.options?.weekStartsOn ?? 0, s = T(o, r?.in);
if (!D(s))
throw new RangeError("Invalid time value");
let c = a.match(v).map((t) => {
const e = t[0];
if (e === "p" || e === "P") {
const l = d[e];
return l(t, i.formatLong);
}
return t;
}).join("").match(E).map((t) => {
if (t === "''")
return { isToken: !1, value: "'" };
const e = t[0];
if (e === "'")
return { isToken: !1, value: W(t) };
if (f[e])
return { isToken: !0, value: t };
if (e.match(R))
throw new RangeError(
"Format string contains an unescaped latin alphabet character `" + e + "`"
);
return { isToken: !1, value: t };
});
i.localize.preprocessor && (c = i.localize.preprocessor(s, c));
const k = {
firstWeekContainsDate: m,
weekStartsOn: p,
locale: i
};
return c.map((t) => {
if (!t.isToken) return t.value;
const e = t.value;
(!r?.useAdditionalWeekYearTokens && g(e) || !r?.useAdditionalDayOfYearTokens && h(e)) && w(e, a, String(o));
const l = f[e[0]];
return l(s, e, i.localize, k);
}).join("");
}
function W(o) {
const a = o.match(C);
return a ? a[1].replace(S, "'") : o;
}
export {
L as default,
L as format,
L as formatDate,
f as formatters,
d as longFormatters
};