ranui
Version:
A framework-agnostic Web Components UI library built on native custom elements, with TypeScript types, light/dark theming, SSR and PWA support.
185 lines (184 loc) • 6.54 kB
JavaScript
function B(t) {
return Math.abs(t = Math.round(t)) >= 1e21 ? t.toLocaleString("en").replace(/,/g, "") : t.toString(10);
}
function z(t, n) {
if (!isFinite(t) || t === 0) return null;
var o = (t = n ? t.toExponential(n - 1) : t.toExponential()).indexOf("e"), i = t.slice(0, o);
return [i.length > 1 ? i[0] + i.slice(2) : i, +t.slice(o + 1)];
}
function H(t) {
return t = z(Math.abs(t)), t ? t[1] : NaN;
}
function J(t, n) {
return function(o, i) {
for (var a = o.length, f = [], c = 0, s = t[0], M = 0; a > 0 && s > 0 && (M + s + 1 > i && (s = Math.max(1, i - M)), f.push(o.substring(a -= s, a + s)), !((M += s + 1) > i)); )
s = t[c = (c + 1) % t.length];
return f.reverse().join(n);
};
}
function K(t) {
return function(n) {
return n.replace(/[0-9]/g, function(o) {
return t[+o];
});
};
}
var Q = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
function E(t) {
if (!(n = Q.exec(t))) throw new Error("invalid format: " + t);
var n;
return new F({
fill: n[1],
align: n[2],
sign: n[3],
symbol: n[4],
zero: n[5],
width: n[6],
comma: n[7],
precision: n[8] && n[8].slice(1),
trim: n[9],
type: n[10]
});
}
E.prototype = F.prototype;
function F(t) {
this.fill = t.fill === void 0 ? " " : t.fill + "", this.align = t.align === void 0 ? ">" : t.align + "", this.sign = t.sign === void 0 ? "-" : t.sign + "", this.symbol = t.symbol === void 0 ? "" : t.symbol + "", this.zero = !!t.zero, this.width = t.width === void 0 ? void 0 : +t.width, this.comma = !!t.comma, this.precision = t.precision === void 0 ? void 0 : +t.precision, this.trim = !!t.trim, this.type = t.type === void 0 ? "" : t.type + "";
}
F.prototype.toString = function() {
return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type;
};
function V(t) {
t: for (var n = t.length, o = 1, i = -1, a; o < n; ++o) switch (t[o]) {
case ".":
i = a = o;
break;
case "0":
i === 0 && (i = o), a = o;
break;
default:
if (!+t[o]) break t;
i > 0 && (i = 0);
break;
}
return i > 0 ? t.slice(0, i) + t.slice(a + 1) : t;
}
var A;
function W(t, n) {
var o = z(t, n);
if (!o) return A = void 0, t.toPrecision(n);
var i = o[0], a = o[1], f = a - (A = Math.max(-8, Math.min(8, Math.floor(a / 3))) * 3) + 1, c = i.length;
return f === c ? i : f > c ? i + new Array(f - c + 1).join("0") : f > 0 ? i.slice(0, f) + "." + i.slice(f) : "0." + new Array(1 - f).join("0") + z(t, Math.max(0, n + f - 1))[0];
}
function G(t, n) {
var o = z(t, n);
if (!o) return t + "";
var i = o[0], a = o[1];
return a < 0 ? "0." + new Array(-a).join("0") + i : i.length > a + 1 ? i.slice(0, a + 1) + "." + i.slice(a + 1) : i + new Array(a - i.length + 2).join("0");
}
var I = {
"%": (t, n) => (t * 100).toFixed(n),
b: (t) => Math.round(t).toString(2),
c: (t) => t + "",
d: B,
e: (t, n) => t.toExponential(n),
f: (t, n) => t.toFixed(n),
g: (t, n) => t.toPrecision(n),
o: (t) => Math.round(t).toString(8),
p: (t, n) => G(t * 100, n),
r: G,
s: W,
X: (t) => Math.round(t).toString(16).toUpperCase(),
x: (t) => Math.round(t).toString(16)
};
function X(t) {
return t;
}
var O = Array.prototype.map, R = [
"y",
"z",
"a",
"f",
"p",
"n",
"µ",
"m",
"",
"k",
"M",
"G",
"T",
"P",
"E",
"Z",
"Y"
];
function tt(t) {
var n = t.grouping === void 0 || t.thousands === void 0 ? X : J(O.call(t.grouping, Number), t.thousands + ""), o = t.currency === void 0 ? "" : t.currency[0] + "", i = t.currency === void 0 ? "" : t.currency[1] + "", a = t.decimal === void 0 ? "." : t.decimal + "", f = t.numerals === void 0 ? X : K(O.call(t.numerals, String)), c = t.percent === void 0 ? "%" : t.percent + "", s = t.minus === void 0 ? "−" : t.minus + "", M = t.nan === void 0 ? "NaN" : t.nan + "";
function $(e, g) {
e = E(e);
var b = e.fill, p = e.align, d = e.sign, w = e.symbol, v = e.zero, j = e.width, N = e.comma, y = e.precision, T = e.trim, h = e.type;
h === "n" ? (N = !0, h = "g") : I[h] || (y === void 0 && (y = 12), T = !0, h = "g"), (v || b === "0" && p === "=") && (v = !0, b = "0", p = "=");
var Y = (g && g.prefix !== void 0 ? g.prefix : "") + (w === "$" ? o : w === "#" && /[boxX]/.test(h) ? "0" + h.toLowerCase() : ""), Z = (w === "$" ? i : /[%p]/.test(h) ? c : "") + (g && g.suffix !== void 0 ? g.suffix : ""), C = I[h], q = /[defgprs%]/.test(h);
y = y === void 0 ? 6 : /[gprs]/.test(h) ? Math.max(1, Math.min(21, y)) : Math.max(0, Math.min(20, y));
function L(r) {
var l = Y, m = Z, x, D, S;
if (h === "c")
m = C(r) + m, r = "";
else {
r = +r;
var k = r < 0 || 1 / r < 0;
if (r = isNaN(r) ? M : C(Math.abs(r), y), T && (r = V(r)), k && +r == 0 && d !== "+" && (k = !1), l = (k ? d === "(" ? d : s : d === "-" || d === "(" ? "" : d) + l, m = (h === "s" && !isNaN(r) && A !== void 0 ? R[8 + A / 3] : "") + m + (k && d === "(" ? ")" : ""), q) {
for (x = -1, D = r.length; ++x < D; ) if (S = r.charCodeAt(x), 48 > S || S > 57) {
m = (S === 46 ? a + r.slice(x + 1) : r.slice(x)) + m, r = r.slice(0, x);
break;
}
}
}
N && !v && (r = n(r, 1 / 0));
var P = l.length + r.length + m.length, u = P < j ? new Array(j - P + 1).join(b) : "";
switch (N && v && (r = n(u + r, u.length ? j - m.length : 1 / 0), u = ""), p) {
case "<":
r = l + r + m + u;
break;
case "=":
r = l + u + r + m;
break;
case "^":
r = u.slice(0, P = u.length >> 1) + l + r + m + u.slice(P);
break;
default:
r = u + l + r + m;
break;
}
return f(r);
}
return L.toString = function() {
return e + "";
}, L;
}
function U(e, g) {
var b = Math.max(-8, Math.min(8, Math.floor(H(g) / 3))) * 3, p = Math.pow(10, -b), d = $((e = E(e), e.type = "f", e), { suffix: R[8 + b / 3] });
return function(w) {
return d(p * w);
};
}
return {
format: $,
formatPrefix: U
};
}
var _, nt, rt;
it({
thousands: ",",
grouping: [3],
currency: ["$", ""]
});
function it(t) {
return _ = tt(t), nt = _.format, rt = _.formatPrefix, _;
}
export {
H as i,
rt as n,
E as r,
nt as t
};