@aplus-frontend/ui
Version:
70 lines (69 loc) • 2.09 kB
JavaScript
import { unref as d, computed as b, ref as P } from "vue";
import { getPtg as T } from "./useSizes.mjs";
const J = (j, k, y, L, v, R) => {
const a = d(j).map((e) => [e.min, e.max]), C = b(() => d(L) || 0), O = (e) => e * C.value;
function l(e, f) {
return typeof e == "string" ? O(T(e)) : e ?? f;
}
const I = P([]), E = [], m = P(null), U = () => d(y).map(O);
return [
(e) => {
I.value = U(), m.value = {
index: e,
confirmed: !1
};
},
(e, f) => {
let n = null;
const S = d(m), i = d(I), r = d(C);
if ((!S || !S.confirmed) && f !== 0) {
if (f > 0)
n = e, m.value = {
index: e,
confirmed: !0
};
else
for (let u = e; u >= 0; u -= 1)
if (i[u] > 0 && d(k)[u].resizable) {
n = u, m.value = {
index: u,
confirmed: !0
};
break;
}
}
const o = n ?? S?.index ?? e, t = [...i], c = o + 1, z = l(a[o][0], 0), g = l(a[c][0], 0), p = l(
a[o][1],
r
), h = l(
a[c][1],
r
);
let s = f;
return t[o] + s < z && (s = z - t[o]), t[c] - s < g && (s = t[c] - g), t[o] + s > p && (s = p - t[o]), t[c] - s > h && (s = t[c] - h), t[o] += s, t[c] -= s, v(t), t;
},
() => {
m.value = null;
},
(e, f) => {
const n = U(), S = R ? f === "start" ? "end" : "start" : f, i = S === "start" ? e : e + 1, r = S === "start" ? e + 1 : e, o = n[i], t = n[r];
if (o !== 0 && t !== 0)
n[i] = 0, n[r] += o, E[e] = o;
else {
const c = d(C), z = o + t, g = l(a[i][0], 0), p = l(
a[i][1],
c
), h = l(a[r][0], 0), s = l(
a[r][1],
c
), u = Math.max(g, z - s), _ = (Math.min(p, z - h) - u) / 2, x = E[e], M = z - x;
x && x <= s && x >= h && M <= p && M >= g ? (n[r] = x, n[i] = M) : (n[i] -= _, n[r] += _);
}
return v(n), n;
},
b(() => m.value?.index)
];
};
export {
J as useResize
};