@beesoft/react-dragula
Version:
1,017 lines (1,016 loc) • 32.2 kB
JavaScript
import mr, { memo as pr, useState as hr, useRef as ae, useEffect as fe } from "react";
var z = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function gr(o) {
return o && o.__esModule && Object.prototype.hasOwnProperty.call(o, "default") ? o.default : o;
}
var le = { exports: {} }, ue = {};
var Ue;
function Er() {
if (Ue) return ue;
Ue = 1;
var o = /* @__PURE__ */ Symbol.for("react.transitional.element"), r = /* @__PURE__ */ Symbol.for("react.fragment");
function a(i, u, c) {
var m = null;
if (c !== void 0 && (m = "" + c), u.key !== void 0 && (m = "" + u.key), "key" in u) {
c = {};
for (var p in u)
p !== "key" && (c[p] = u[p]);
} else c = u;
return u = c.ref, {
$$typeof: o,
type: i,
key: m,
ref: u !== void 0 ? u : null,
props: c
};
}
return ue.Fragment = r, ue.jsx = a, ue.jsxs = a, ue;
}
var se = {};
var Xe;
function br() {
return Xe || (Xe = 1, process.env.NODE_ENV !== "production" && (function() {
function o(e) {
if (e == null) return null;
if (typeof e == "function")
return e.$$typeof === Q ? null : e.displayName || e.name || null;
if (typeof e == "string") return e;
switch (e) {
case y:
return "Fragment";
case f:
return "Profiler";
case h:
return "StrictMode";
case E:
return "Suspense";
case R:
return "SuspenseList";
case A:
return "Activity";
}
if (typeof e == "object")
switch (typeof e.tag == "number" && console.error(
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
), e.$$typeof) {
case d:
return "Portal";
case g:
return e.displayName || "Context";
case S:
return (e._context.displayName || "Context") + ".Consumer";
case n:
var s = e.render;
return e = e.displayName, e || (e = s.displayName || s.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
case b:
return s = e.displayName || null, s !== null ? s : o(e.type) || "Memo";
case _:
s = e._payload, e = e._init;
try {
return o(e(s));
} catch {
}
}
return null;
}
function r(e) {
return "" + e;
}
function a(e) {
try {
r(e);
var s = !1;
} catch {
s = !0;
}
if (s) {
s = console;
var w = s.error, C = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
return w.call(
s,
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
C
), r(e);
}
}
function i(e) {
if (e === y) return "<>";
if (typeof e == "object" && e !== null && e.$$typeof === _)
return "<...>";
try {
var s = o(e);
return s ? "<" + s + ">" : "<...>";
} catch {
return "<...>";
}
}
function u() {
var e = ee.A;
return e === null ? null : e.getOwner();
}
function c() {
return Error("react-stack-top-frame");
}
function m(e) {
if (oe.call(e, "key")) {
var s = Object.getOwnPropertyDescriptor(e, "key").get;
if (s && s.isReactWarning) return !1;
}
return e.key !== void 0;
}
function p(e, s) {
function w() {
V || (V = !0, console.error(
"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
s
));
}
w.isReactWarning = !0, Object.defineProperty(e, "key", {
get: w,
configurable: !0
});
}
function x() {
var e = o(this.type);
return T[e] || (T[e] = !0, console.error(
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
)), e = this.props.ref, e !== void 0 ? e : null;
}
function P(e, s, w, C, G, te) {
var j = w.ref;
return e = {
$$typeof: Y,
type: e,
key: s,
props: w,
_owner: C
}, (j !== void 0 ? j : null) !== null ? Object.defineProperty(e, "ref", {
enumerable: !1,
get: x
}) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
configurable: !1,
enumerable: !1,
writable: !0,
value: 0
}), Object.defineProperty(e, "_debugInfo", {
configurable: !1,
enumerable: !1,
writable: !0,
value: null
}), Object.defineProperty(e, "_debugStack", {
configurable: !1,
enumerable: !1,
writable: !0,
value: G
}), Object.defineProperty(e, "_debugTask", {
configurable: !1,
enumerable: !1,
writable: !0,
value: te
}), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
}
function L(e, s, w, C, G, te) {
var j = s.children;
if (j !== void 0)
if (C)
if (ce(j)) {
for (C = 0; C < j.length; C++)
F(j[C]);
Object.freeze && Object.freeze(j);
} else
console.error(
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
);
else F(j);
if (oe.call(s, "key")) {
j = o(e);
var W = Object.keys(s).filter(function(ve) {
return ve !== "key";
});
C = 0 < W.length ? "{key: someKey, " + W.join(": ..., ") + ": ...}" : "{key: someKey}", J[j + C] || (W = 0 < W.length ? "{" + W.join(": ..., ") + ": ...}" : "{}", console.error(
`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,
C,
j,
W,
j
), J[j + C] = !0);
}
if (j = null, w !== void 0 && (a(w), j = "" + w), m(s) && (a(s.key), j = "" + s.key), "key" in s) {
w = {};
for (var ie in s)
ie !== "key" && (w[ie] = s[ie]);
} else w = s;
return j && p(
w,
typeof e == "function" ? e.displayName || e.name || "Unknown" : e
), P(
e,
j,
w,
u(),
G,
te
);
}
function F(e) {
O(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === _ && (e._payload.status === "fulfilled" ? O(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
}
function O(e) {
return typeof e == "object" && e !== null && e.$$typeof === Y;
}
var D = mr, Y = /* @__PURE__ */ Symbol.for("react.transitional.element"), d = /* @__PURE__ */ Symbol.for("react.portal"), y = /* @__PURE__ */ Symbol.for("react.fragment"), h = /* @__PURE__ */ Symbol.for("react.strict_mode"), f = /* @__PURE__ */ Symbol.for("react.profiler"), S = /* @__PURE__ */ Symbol.for("react.consumer"), g = /* @__PURE__ */ Symbol.for("react.context"), n = /* @__PURE__ */ Symbol.for("react.forward_ref"), E = /* @__PURE__ */ Symbol.for("react.suspense"), R = /* @__PURE__ */ Symbol.for("react.suspense_list"), b = /* @__PURE__ */ Symbol.for("react.memo"), _ = /* @__PURE__ */ Symbol.for("react.lazy"), A = /* @__PURE__ */ Symbol.for("react.activity"), Q = /* @__PURE__ */ Symbol.for("react.client.reference"), ee = D.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, oe = Object.prototype.hasOwnProperty, ce = Array.isArray, $ = console.createTask ? console.createTask : function() {
return null;
};
D = {
react_stack_bottom_frame: function(e) {
return e();
}
};
var V, T = {}, re = D.react_stack_bottom_frame.bind(
D,
c
)(), B = $(i(c)), J = {};
se.Fragment = y, se.jsx = function(e, s, w) {
var C = 1e4 > ee.recentlyCreatedOwnerStacks++;
return L(
e,
s,
w,
!1,
C ? Error("react-stack-top-frame") : re,
C ? $(i(e)) : B
);
}, se.jsxs = function(e, s, w) {
var C = 1e4 > ee.recentlyCreatedOwnerStacks++;
return L(
e,
s,
w,
!0,
C ? Error("react-stack-top-frame") : re,
C ? $(i(e)) : B
);
};
})()), se;
}
var Be;
function yr() {
return Be || (Be = 1, process.env.NODE_ENV === "production" ? le.exports = Er() : le.exports = br()), le.exports;
}
var Fe = yr();
const N = [];
for (let o = 0; o < 256; ++o)
N.push((o + 256).toString(16).slice(1));
function _r(o, r = 0) {
return (N[o[r + 0]] + N[o[r + 1]] + N[o[r + 2]] + N[o[r + 3]] + "-" + N[o[r + 4]] + N[o[r + 5]] + "-" + N[o[r + 6]] + N[o[r + 7]] + "-" + N[o[r + 8]] + N[o[r + 9]] + "-" + N[o[r + 10]] + N[o[r + 11]] + N[o[r + 12]] + N[o[r + 13]] + N[o[r + 14]] + N[o[r + 15]]).toLowerCase();
}
let be;
const Sr = new Uint8Array(16);
function kr() {
if (!be) {
if (typeof crypto > "u" || !crypto.getRandomValues)
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
be = crypto.getRandomValues.bind(crypto);
}
return be(Sr);
}
const Rr = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), $e = { randomUUID: Rr };
function ye(o, r, a) {
if ($e.randomUUID && !o)
return $e.randomUUID();
o = o || {};
const i = o.random ?? o.rng?.() ?? kr();
if (i.length < 16)
throw new Error("Random bytes length must be >= 16");
return i[6] = i[6] & 15 | 64, i[8] = i[8] & 63 | 128, _r(i);
}
function wr(o) {
return o == null ? !1 : typeof o == "object";
}
function Or(o) {
return Array.isArray(o) && o.every(wr);
}
var _e, Ve;
function Tr() {
return Ve || (Ve = 1, _e = function(r, a) {
return Array.prototype.slice.call(r, a);
}), _e;
}
var Se, We;
function Cr() {
if (We) return Se;
We = 1;
var o = typeof setImmediate == "function", r;
return o ? r = function(a) {
setImmediate(a);
} : r = function(a) {
setTimeout(a, 0);
}, Se = r, Se;
}
var ke, ze;
function xr() {
if (ze) return ke;
ze = 1;
var o = Cr();
return ke = function(a, i, u) {
a && o(function() {
a.apply(u || null, i || []);
});
}, ke;
}
var Re, Je;
function Ar() {
if (Je) return Re;
Je = 1;
var o = Tr(), r = xr();
return Re = function(i, u) {
var c = u || {}, m = {};
return i === void 0 && (i = {}), i.on = function(p, x) {
return m[p] ? m[p].push(x) : m[p] = [x], i;
}, i.once = function(p, x) {
return x._once = !0, i.on(p, x), i;
}, i.off = function(p, x) {
var P = arguments.length;
if (P === 1)
delete m[p];
else if (P === 0)
m = {};
else {
var L = m[p];
if (!L)
return i;
L.splice(L.indexOf(x), 1);
}
return i;
}, i.emit = function() {
var p = o(arguments);
return i.emitterSnapshot(p.shift()).apply(this, p);
}, i.emitterSnapshot = function(p) {
var x = (m[p] || []).slice(0);
return function() {
var P = o(arguments), L = this || i;
if (p === "error" && c.throws !== !1 && !x.length)
throw P.length === 1 ? P[0] : P;
return x.forEach(function(O) {
c.async ? r(O, P, L) : O.apply(L, P), O._once && i.off(p, O);
}), i;
};
}, i;
}, Re;
}
var we, Ge;
function jr() {
if (Ge) return we;
Ge = 1;
var o = z.CustomEvent;
function r() {
try {
var a = new o("cat", { detail: { foo: "bar" } });
return a.type === "cat" && a.detail.foo === "bar";
} catch {
}
return !1;
}
return we = r() ? o : (
// IE >= 9
typeof document < "u" && typeof document.createEvent == "function" ? function(i, u) {
var c = document.createEvent("CustomEvent");
return u ? c.initCustomEvent(i, u.bubbles, u.cancelable, u.detail) : c.initCustomEvent(i, !1, !1, void 0), c;
} : (
// IE <= 8
function(i, u) {
var c = document.createEventObject();
return c.type = i, u ? (c.bubbles = !!u.bubbles, c.cancelable = !!u.cancelable, c.detail = u.detail) : (c.bubbles = !1, c.cancelable = !1, c.detail = void 0), c;
}
)
), we;
}
var Oe, He;
function Ir() {
if (He) return Oe;
He = 1;
var o = [], r = "", a = /^on/;
for (r in z)
a.test(r) && o.push(r.slice(2));
return Oe = o, Oe;
}
var Te, Ke;
function Pr() {
if (Ke) return Te;
Ke = 1;
var o = jr(), r = Ir(), a = z.document, i = m, u = x, c = [];
z.addEventListener || (i = p, u = P), Te = {
add: i,
remove: u,
fabricate: L
};
function m(d, y, h, f) {
return d.addEventListener(y, h, f);
}
function p(d, y, h) {
return d.attachEvent("on" + y, O(d, y, h));
}
function x(d, y, h, f) {
return d.removeEventListener(y, h, f);
}
function P(d, y, h) {
var f = D(d, y, h);
if (f)
return d.detachEvent("on" + y, f);
}
function L(d, y, h) {
var f = r.indexOf(y) === -1 ? g() : S();
d.dispatchEvent ? d.dispatchEvent(f) : d.fireEvent("on" + y, f);
function S() {
var n;
return a.createEvent ? (n = a.createEvent("Event"), n.initEvent(y, !0, !0)) : a.createEventObject && (n = a.createEventObject()), n;
}
function g() {
return new o(y, { detail: h });
}
}
function F(d, y, h) {
return function(S) {
var g = S || z.event;
g.target = g.target || g.srcElement, g.preventDefault = g.preventDefault || function() {
g.returnValue = !1;
}, g.stopPropagation = g.stopPropagation || function() {
g.cancelBubble = !0;
}, g.which = g.which || g.keyCode, h.call(d, g);
};
}
function O(d, y, h) {
var f = D(d, y, h) || F(d, y, h);
return c.push({
wrapper: f,
element: d,
type: y,
fn: h
}), f;
}
function D(d, y, h) {
var f = Y(d, y, h);
if (f) {
var S = c[f].wrapper;
return c.splice(f, 1), S;
}
}
function Y(d, y, h) {
var f, S;
for (f = 0; f < c.length; f++)
if (S = c[f], S.element === d && S.type === y && S.fn === h)
return f;
}
return Te;
}
var Ce, Ze;
function Nr() {
if (Ze) return Ce;
Ze = 1;
var o = {}, r = "(?:^|\\s)", a = "(?:\\s|$)";
function i(m) {
var p = o[m];
return p ? p.lastIndex = 0 : o[m] = p = new RegExp(r + m + a, "g"), p;
}
function u(m, p) {
var x = m.className;
x.length ? i(p).test(x) || (m.className += " " + p) : m.className = p;
}
function c(m, p) {
m.className = m.className.replace(i(p), " ").trim();
}
return Ce = {
add: u,
rm: c
}, Ce;
}
var xe, Qe;
function Lr() {
if (Qe) return xe;
Qe = 1;
var o = Ar(), r = Pr(), a = Nr(), i = document, u = i.documentElement;
function c(n, E) {
var R = arguments.length;
R === 1 && Array.isArray(n) === !1 && (E = n, n = []);
var b, _, A, Q, ee, oe, ce, $, V, T, re, B = null, J, e = E || {};
e.moves === void 0 && (e.moves = O), e.accepts === void 0 && (e.accepts = O), e.invalid === void 0 && (e.invalid = or), e.containers === void 0 && (e.containers = n || []), e.isContainer === void 0 && (e.isContainer = F), e.copy === void 0 && (e.copy = !1), e.copySortSource === void 0 && (e.copySortSource = !1), e.revertOnSpill === void 0 && (e.revertOnSpill = !1), e.removeOnSpill === void 0 && (e.removeOnSpill = !1), e.direction === void 0 && (e.direction = "vertical"), e.ignoreInputTextSelection === void 0 && (e.ignoreInputTextSelection = !0), e.mirrorContainer === void 0 && (e.mirrorContainer = i.body);
var s = o({
containers: e.containers,
start: ar,
end: Ie,
cancel: De,
remove: Le,
destroy: j,
canMove: nr,
dragging: !1
});
return e.removeOnSpill === !0 && s.on("over", ir).on("out", ur), C(), s;
function w(t) {
return s.containers.indexOf(t) !== -1 || e.isContainer(t);
}
function C(t) {
var l = t ? "remove" : "add";
m(u, l, "mousedown", ie), m(u, l, "mouseup", pe);
}
function G(t) {
var l = t ? "remove" : "add";
m(u, l, "mousemove", ve);
}
function te(t) {
var l = t ? "remove" : "add";
r[l](u, "selectstart", W), r[l](u, "click", W);
}
function j() {
C(!0), pe({});
}
function W(t) {
J && t.preventDefault();
}
function ie(t) {
oe = t.clientX, ce = t.clientY;
var l = p(t) !== 1 || t.metaKey || t.ctrlKey;
if (!l) {
var v = t.target, k = me(v);
k && (J = k, G(), t.type === "mousedown" && (y(v) ? v.focus() : t.preventDefault()));
}
}
function ve(t) {
if (J) {
if (p(t) === 0) {
pe({});
return;
}
if (!(t.clientX !== void 0 && Math.abs(t.clientX - oe) <= (e.slideFactorX || 0) && t.clientY !== void 0 && Math.abs(t.clientY - ce) <= (e.slideFactorY || 0))) {
if (e.ignoreInputTextSelection) {
var l = g("clientX", t) || 0, v = g("clientY", t) || 0, k = i.elementFromPoint(l, v);
if (y(k))
return;
}
var q = J;
G(!0), te(), Ie(), je(q);
var I = x(A);
Q = g("pageX", t) - I.left, ee = g("pageY", t) - I.top, a.add(T || A, "gu-transit"), sr(), Ee(t);
}
}
}
function me(t) {
if (!(s.dragging && b) && !w(t)) {
for (var l = t; d(t) && w(d(t)) === !1; )
if (e.invalid(t, l) || (t = d(t), !t))
return;
var v = d(t);
if (v && !e.invalid(t, l)) {
var k = e.moves(t, v, l, f(t));
if (k)
return {
item: t,
source: v
};
}
}
}
function nr(t) {
return !!me(t);
}
function ar(t) {
var l = me(t);
l && je(l);
}
function je(t) {
lr(t.item, t.source) && (T = t.item.cloneNode(!0), s.emit("cloned", T, t.item, "copy")), _ = t.source, A = t.item, $ = V = f(t.item), s.dragging = !0, s.emit("drag", A, _);
}
function or() {
return !1;
}
function Ie() {
if (s.dragging) {
var t = T || A;
Ne(t, d(t));
}
}
function Pe() {
J = !1, G(!0), te(!0);
}
function pe(t) {
if (Pe(), !!s.dragging) {
var l = T || A, v = g("clientX", t) || 0, k = g("clientY", t) || 0, q = L(b, v, k), I = Ye(q, v, k);
I && (T && e.copySortSource || !T || I !== _) ? Ne(l, I) : e.removeOnSpill ? Le() : De();
}
}
function Ne(t, l) {
var v = d(t);
T && e.copySortSource && l === _ && v.removeChild(A), ge(l) ? s.emit("cancel", t, _, _) : s.emit("drop", t, l, _, V), he();
}
function Le() {
if (s.dragging) {
var t = T || A, l = d(t);
l && l.removeChild(t), s.emit(T ? "cancel" : "remove", t, l, _), he();
}
}
function De(t) {
if (s.dragging) {
var l = arguments.length > 0 ? t : e.revertOnSpill, v = T || A, k = d(v), q = ge(k);
q === !1 && l && (T ? k && k.removeChild(T) : _.insertBefore(v, $)), q || l ? s.emit("cancel", v, _, _) : s.emit("drop", v, k, _, V), he();
}
}
function he() {
var t = T || A;
Pe(), cr(), t && a.rm(t, "gu-transit"), re && clearTimeout(re), s.dragging = !1, B && s.emit("out", t, B, _), s.emit("dragend", t), _ = A = T = $ = V = re = B = null;
}
function ge(t, l) {
var v;
return l !== void 0 ? v = l : b ? v = V : v = f(T || A), t === _ && v === $;
}
function Ye(t, l, v) {
for (var k = t; k && !q(); )
k = d(k);
return k;
function q() {
var I = w(k);
if (I === !1)
return !1;
var ne = Me(k, t), M = qe(k, ne, l, v), H = ge(k, M);
return H ? !0 : e.accepts(A, k, _, M);
}
}
function Ee(t) {
if (!b)
return;
t.preventDefault();
var l = g("clientX", t) || 0, v = g("clientY", t) || 0, k = l - Q, q = v - ee;
b.style.left = k + "px", b.style.top = q + "px";
var I = T || A, ne = L(b, l, v), M = Ye(ne, l, v), H = M !== null && M !== B;
(H || M === null) && (dr(), B = M, fr());
var U = d(I);
if (M === _ && T && !e.copySortSource) {
U && U.removeChild(I);
return;
}
var X, Z = Me(M, ne);
if (Z !== null)
X = qe(M, Z, l, v);
else if (e.revertOnSpill === !0 && !T)
X = $, M = _;
else {
T && U && U.removeChild(I);
return;
}
(X === null && H || X !== I && X !== f(I)) && (V = X, M.insertBefore(I, X), s.emit("shadow", I, M, _));
function K(vr) {
s.emit(vr, I, B, _);
}
function fr() {
H && K("over");
}
function dr() {
B && K("out");
}
}
function ir(t) {
a.rm(t, "gu-hide");
}
function ur(t) {
s.dragging && a.add(t, "gu-hide");
}
function sr() {
if (!b) {
var t = A.getBoundingClientRect();
b = A.cloneNode(!0), b.style.width = D(t) + "px", b.style.height = Y(t) + "px", a.rm(b, "gu-transit"), a.add(b, "gu-mirror"), e.mirrorContainer.appendChild(b), m(u, "add", "mousemove", Ee), a.add(e.mirrorContainer, "gu-unselectable"), s.emit("cloned", b, A, "mirror");
}
}
function cr() {
b && (a.rm(e.mirrorContainer, "gu-unselectable"), m(u, "remove", "mousemove", Ee), d(b).removeChild(b), b = null);
}
function Me(t, l) {
for (var v = l; v !== t && d(v) !== t; )
v = d(v);
return v === u ? null : v;
}
function qe(t, l, v, k) {
var q = e.direction === "horizontal", I = l !== t ? M() : ne();
return I;
function ne() {
var U = t.children.length, X, Z, K;
for (X = 0; X < U; X++)
if (Z = t.children[X], K = Z.getBoundingClientRect(), q && K.left + K.width / 2 > v || !q && K.top + K.height / 2 > k)
return Z;
return null;
}
function M() {
var U = l.getBoundingClientRect();
return H(q ? v > U.left + D(U) / 2 : k > U.top + Y(U) / 2);
}
function H(U) {
return U ? f(l) : l;
}
}
function lr(t, l) {
return typeof e.copy == "boolean" ? e.copy : e.copy(t, l);
}
}
function m(n, E, R, b) {
var _ = {
mouseup: "touchend",
mousedown: "touchstart",
mousemove: "touchmove"
}, A = {
mouseup: "pointerup",
mousedown: "pointerdown",
mousemove: "pointermove"
}, Q = {
mouseup: "MSPointerUp",
mousedown: "MSPointerDown",
mousemove: "MSPointerMove"
};
z.navigator.pointerEnabled ? r[E](n, A[R], b) : z.navigator.msPointerEnabled ? r[E](n, Q[R], b) : (r[E](n, _[R], b), r[E](n, R, b));
}
function p(n) {
if (n.touches !== void 0)
return n.touches.length;
if (n.which !== void 0 && n.which !== 0)
return n.which;
if (n.buttons !== void 0)
return n.buttons;
var E = n.button;
if (E !== void 0)
return E & 1 ? 1 : E & 2 ? 3 : E & 4 ? 2 : 0;
}
function x(n) {
var E = n.getBoundingClientRect();
return {
left: E.left + P("scrollLeft", "pageXOffset"),
top: E.top + P("scrollTop", "pageYOffset")
};
}
function P(n, E) {
return typeof z[E] < "u" ? z[E] : u.clientHeight ? u[n] : i.body[n];
}
function L(n, E, R) {
n = n || {};
var b = n.className || "", _;
return n.className += " gu-hide", _ = i.elementFromPoint(E, R), n.className = b, _;
}
function F() {
return !1;
}
function O() {
return !0;
}
function D(n) {
return n.width || n.right - n.left;
}
function Y(n) {
return n.height || n.bottom - n.top;
}
function d(n) {
return n.parentNode === i ? null : n.parentNode;
}
function y(n) {
return n.tagName === "INPUT" || n.tagName === "TEXTAREA" || n.tagName === "SELECT" || h(n);
}
function h(n) {
return !n || n.contentEditable === "false" ? !1 : n.contentEditable === "true" ? !0 : h(d(n));
}
function f(n) {
return n.nextElementSibling || E();
function E() {
var R = n;
do
R = R.nextSibling;
while (R && R.nodeType !== 1);
return R;
}
}
function S(n) {
return n.targetTouches && n.targetTouches.length ? n.targetTouches[0] : n.changedTouches && n.changedTouches.length ? n.changedTouches[0] : n;
}
function g(n, E) {
var R = S(E), b = {
pageX: "clientX",
// IE8
pageY: "clientY"
// IE8
};
return n in b && !(n in R) && b[n] in R && (n = b[n]), R[n];
}
return xe = c, xe;
}
var Dr = Lr();
const er = /* @__PURE__ */ gr(Dr);
class de {
constructor(r = [], a) {
this.containers = r, this.options = a, this.options = {
...this.options,
accepts: this.defaultAccepts,
copy: this.defaultCopy,
copySortSource: a?.copySortSource
}, this._drake = er(this.containers, this.options);
}
static instance;
_drake;
// these are the saved listener arrays
dragListeners = [];
dragEndListeners = [];
dropListeners = [];
clonedListeners = [];
cancelListeners = [];
removeListeners = [];
shadowListeners = [];
overListeners = [];
outListeners = [];
get drake() {
return this._drake;
}
static getInstance(r = [], a) {
return this.instance ? r.length > 0 && this.instance.addContainers(r) : this.instance = new de(r, a), this.instance;
}
addContainers(r) {
if (this.containers.length > 0)
for (let a = 0, i = r.length; a < i; a++) {
const u = r[a].dataset.id, c = this.containers.findIndex(
(m) => m.dataset.id === u
);
c > -1 ? this.containers[c] = r[a] : this.containers.push(r[a]);
}
else
this.containers.push(...r);
this._drake.containers = this.containers;
}
addOptions(r) {
this.options = {
...this.options,
...r
}, this._drake.destroy(), this._drake = er(this.containers, this.options), this.addSavedListeners();
}
onDrag(r) {
this.dragListeners.push(r), this._drake.on("drag", r);
}
onDragEnd(r) {
this.dragEndListeners.push(r), this._drake.on("dragend", r);
}
onDrop(r) {
this.dropListeners.push(r), this._drake.on("drop", r);
}
on(r, a) {
switch (r) {
case "cancel":
this.cancelListeners.push(a);
break;
case "remove":
this.removeListeners.push(a);
break;
case "shadow":
this.shadowListeners.push(a);
break;
case "over":
this.overListeners.push(a);
break;
case "out":
this.outListeners.push(a);
break;
}
this._drake.on(r, a);
}
onCloned(r) {
this.clonedListeners.push(r), this._drake.on("cloned", r);
}
addSavedListeners() {
this.dragListeners.forEach((r) => this._drake.on("drag", r)), this.dragEndListeners.forEach((r) => this._drake.on("dragend", r)), this.dropListeners.forEach((r) => this._drake.on("drop", r)), this.clonedListeners.forEach((r) => this._drake.on("cloned", r)), this.cancelListeners.forEach((r) => this._drake.on("cancel", r)), this.removeListeners.forEach((r) => this._drake.on("remove", r)), this.shadowListeners.forEach((r) => this._drake.on("shadow", r)), this.overListeners.forEach((r) => this._drake.on("over", r)), this.outListeners.forEach((r) => this._drake.on("out", r));
}
defaultAccepts(r, a, i) {
const u = a.dataset.dragContainer, c = i.dataset.dragContainer;
return u === void 0 && c === void 0 ? !1 : u === c;
}
defaultCopy(r, a) {
const i = a.dataset.copy;
return i === void 0 ? !1 : i === "true";
}
}
function Yr(o) {
return o && o.__esModule && Object.prototype.hasOwnProperty.call(o, "default") ? o.default : o;
}
var rr, tr;
function Mr() {
return tr || (tr = 1, rr = function o(r, a) {
if (r === a) return !0;
if (r && a && typeof r == "object" && typeof a == "object") {
if (r.constructor !== a.constructor) return !1;
var i, u, c;
if (Array.isArray(r)) {
if (i = r.length, i != a.length) return !1;
for (u = i; u-- !== 0; )
if (!o(r[u], a[u])) return !1;
return !0;
}
if (r.constructor === RegExp) return r.source === a.source && r.flags === a.flags;
if (r.valueOf !== Object.prototype.valueOf) return r.valueOf() === a.valueOf();
if (r.toString !== Object.prototype.toString) return r.toString() === a.toString();
if (c = Object.keys(r), i = c.length, i !== Object.keys(a).length) return !1;
for (u = i; u-- !== 0; )
if (!Object.prototype.hasOwnProperty.call(a, c[u])) return !1;
for (u = i; u-- !== 0; ) {
var m = c[u];
if (!o(r[m], a[m])) return !1;
}
return !0;
}
return r !== r && a !== a;
}), rr;
}
var qr = Mr();
const Ae = /* @__PURE__ */ Yr(qr), Ur = ({
containerName: o,
copyItems: r = !1,
allowCopySorting: a = !1,
sortDirection: i = "vertical",
items: u,
identityField: c,
onItemsChanged: m,
className: p,
children: x
}) => {
const [P, L] = hr(), F = ae(ye()), O = ae(void 0), D = ae(void 0), Y = ae(void 0);
fe(() => {
D.current = de.getInstance(), Y.current && D.current?.addContainers([Y.current]), D.current?.onDrop((h, f, S) => {
const g = f, n = S;
Y.current?.isSameNode(g) && Y.current?.isSameNode(n) ? d(n.children) : Y.current?.isSameNode(g) && g.dataset.dragContainer === o ? d(g.children) : Y.current?.isSameNode(n) && n.dataset.dragContainer === o && d(n.children);
});
}, []), fe(() => {
D.current?.addOptions({
copySortSource: a
});
}, [a]), fe(() => {
if (u) {
if (!Or(u))
throw new Error("The passed items must be an array of objects");
const h = O.current?.map(({ _key: f, ...S }) => S);
if (!Ae(u, h)) {
const f = [];
for (let S = 0, g = u.length; S < g; S++) {
const n = u[S];
let E = -1;
c && O.current ? E = O.current.findIndex(
(R) => R[c] === n[c]
) : O.current && (E = O.current.findIndex((R) => Ae(R, n))), E > -1 && O.current ? f.push({
...n,
_key: O.current[E]._key
}) : f.push({
...n,
_key: ye()
});
}
O.current = f, L(f);
}
}
}, [u]);
const d = (h) => {
const f = [];
for (let S = 0, g = h.length; S < g; S++) {
const n = h[S], E = O.current?.find((R) => R._key === n.dataset.id);
if (E)
f.push(E);
else {
const R = n.dataset.id, _ = {
...JSON.parse(n.dataset.data || "{}"),
_key: R || ye()
};
f.push(_);
}
}
O.current = f, m?.(O.current);
}, y = (h) => {
D.current?.addContainers([h]), Y.current = h;
};
return /* @__PURE__ */ Fe.jsx(
"div",
{
ref: (h) => {
h && y(h);
},
className: p,
"data-id": F.current,
"data-drag-container": o,
"data-copy": r,
"data-copy-ordering": a,
"data-direction": i,
children: P && P.map((h) => {
const { _key: f, ...S } = h;
return /* @__PURE__ */ Fe.jsx("div", { "data-id": f, "data-data": JSON.stringify(S), children: x(S) }, f);
})
}
);
}, Br = pr(Ur), Fr = (o, r) => {
const a = ae(de.getInstance(o, r)), i = ae(r);
return fe(() => {
r && !Ae(i.current, r) && (a.current.addOptions(r), i.current = r);
}, [r?.moves]), a.current.drake;
};
export {
Br as DragulaContainer,
Fr as useDragula
};