fluid-dnd
Version:
An agnostic drag and drop library to sort all kind of lists. With current support for vue, react and svelte
52 lines (51 loc) • 1.27 kB
JavaScript
import { u as B, c as C, h as g, i as L, D as N, j as F, e as O, g as _, f as G, o as M, a as u, k as v, r as T, l as R } from "./index-CU_UvYra.js";
function w(s, n, t, e) {
const { delayBeforeInsert: r } = s, [l, E, i] = B(
s,
t,
e
), h = (o, a, c, m, S) => {
const y = C(
a,
"insert",
s.direction,
c
), { onInsertEvent: A } = s, D = g(c);
for (const [I, d] of D.entries())
L(d, N) && I >= o && i(d, y);
F(a, !1, S), setTimeout(() => {
A(o, m), f(o, c, s), l(a), b(a, n), O(n, 0, !0);
}, r);
}, b = (o, a) => {
const [c] = _(o, a);
for (const m of [...c, o])
G(m);
};
return [h];
}
const j = (s) => Array.from(s.addedNodes ?? []).values().filter((t) => !R(t)).toArray().length > 0, f = (s, n, t) => {
const { insertingFromClass: e, animationDuration: r } = t, l = M(
() => {
const i = g(n)[s];
u(i, e), u(i, v), setTimeout(() => {
T(i, v), T(i, e), l.disconnect();
}, r);
},
n,
{
childList: !0
},
j
);
}, P = (s, n, t, e) => {
if (!n)
return;
const { onInsertEvent: r, delayBeforeInsert: l } = s;
setTimeout(() => {
r(t, e), f(t, n, s);
}, l);
};
export {
w as default,
P as insertToListEmpty
};