UNPKG

@aplus-frontend/ui

Version:

59 lines (58 loc) 1.47 kB
import { computed as u, unref as r, ref as b } from "vue"; function c(s) { return typeof s == "string" && s.endsWith("%"); } function l(s) { return Number(s.slice(0, -1)) / 100; } const I = (s, p) => { const g = u(() => r(s).map((e) => e.size)), f = u(() => r(s).length), i = u(() => r(p) || 0), x = (e) => e * r(i), z = b( r(s).map( (e) => e.defaultSize || e["default-size"] ) ), m = u(() => { const e = []; for (let o = 0; o < f.value; o += 1) e[o] = g.value[o] ?? z.value[o]; return e; }), v = u(() => { let e = [], o = 0; for (let n = 0; n < f.value; n += 1) { const t = m.value[n]; if (c(t)) e[n] = l(t); else if (t || t === 0) { const d = Number(t); Number.isNaN(d) || (e[n] = d / i.value); } else o += 1, e[n] = void 0; } const a = e.reduce((n, t) => n + (t || 0), 0); if (a > 1 || !o) { const n = 1 / a; e = e.map((t) => t === void 0 ? 0 : t * n); } else { const n = (1 - a) / o; e = e.map((t) => t === void 0 ? n : t); } return e; }), S = u(() => r(v).map(x)), P = u( () => r(s).map((e) => c(e.min) ? l(e.min) : (e.min || 0) / i.value) ), N = u( () => r(s).map((e) => c(e.max) ? l(e.max) : (e.max || i.value) / i.value) ); return [ u(() => p?.value ? r(S) : r(m)), S, v, P, N, (e) => { z.value = e; } ]; }; export { l as getPtg, I as useSizes };