UNPKG

@beesoft/react-dragula

Version:
1,017 lines (1,016 loc) 32.2 kB
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 };