소스 검색

refactor: use setup refactor

xiaoxian521 3 년 전
부모
커밋
ff329b1e8e

+ 1 - 1
index.html

@@ -6,7 +6,7 @@
     <link rel="stylesheet" href="/iconfont.css" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>后台管理系统</title>
-    <script src="https://cdn.bootcdn.net/ajax/libs/Sortable/1.13.0/Sortable.js"></script>
+    <script src="/sortable.min.js"></script>
     <script>
       window.process = {};
     </script>

+ 1 - 0
package.json

@@ -41,6 +41,7 @@
     "pinia": "^2.0.0-rc.6",
     "resize-observer-polyfill": "^1.5.1",
     "responsive-storage": "^1.0.9",
+    "sortablejs": "1.13.0",
     "v-contextmenu": "^3.0.0",
     "vue": "^3.2.11",
     "vue-i18n": "^9.2.0-beta.3",

+ 2607 - 0
public/sortable.min.js

@@ -0,0 +1,2607 @@
+/*! Sortable 1.13.0 - MIT | git://github.com/SortableJS/Sortable.git */
+!(function (t, e) {
+  "object" == typeof exports && "undefined" != typeof module
+    ? (module.exports = e())
+    : "function" == typeof define && define.amd
+    ? define(e)
+    : ((t = t || self).Sortable = e());
+})(this, function () {
+  "use strict";
+  function o(t) {
+    return (o =
+      "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
+        ? function (t) {
+            return typeof t;
+          }
+        : function (t) {
+            return t &&
+              "function" == typeof Symbol &&
+              t.constructor === Symbol &&
+              t !== Symbol.prototype
+              ? "symbol"
+              : typeof t;
+          })(t);
+  }
+  function a() {
+    return (a =
+      Object.assign ||
+      function (t) {
+        for (var e = 1; e < arguments.length; e++) {
+          var n = arguments[e];
+          for (var o in n)
+            Object.prototype.hasOwnProperty.call(n, o) && (t[o] = n[o]);
+        }
+        return t;
+      }).apply(this, arguments);
+  }
+  function I(i) {
+    for (var t = 1; t < arguments.length; t++) {
+      var r = null != arguments[t] ? arguments[t] : {},
+        e = Object.keys(r);
+      "function" == typeof Object.getOwnPropertySymbols &&
+        (e = e.concat(
+          Object.getOwnPropertySymbols(r).filter(function (t) {
+            return Object.getOwnPropertyDescriptor(r, t).enumerable;
+          })
+        )),
+        e.forEach(function (t) {
+          var e, n, o;
+          (e = i),
+            (o = r[(n = t)]),
+            n in e
+              ? Object.defineProperty(e, n, {
+                  value: o,
+                  enumerable: !0,
+                  configurable: !0,
+                  writable: !0
+                })
+              : (e[n] = o);
+        });
+    }
+    return i;
+  }
+  function l(t, e) {
+    if (null == t) return {};
+    var n,
+      o,
+      i = (function (t, e) {
+        if (null == t) return {};
+        var n,
+          o,
+          i = {},
+          r = Object.keys(t);
+        for (o = 0; o < r.length; o++)
+          (n = r[o]), 0 <= e.indexOf(n) || (i[n] = t[n]);
+        return i;
+      })(t, e);
+    if (Object.getOwnPropertySymbols) {
+      var r = Object.getOwnPropertySymbols(t);
+      for (o = 0; o < r.length; o++)
+        (n = r[o]),
+          0 <= e.indexOf(n) ||
+            (Object.prototype.propertyIsEnumerable.call(t, n) && (i[n] = t[n]));
+    }
+    return i;
+  }
+  function e(t) {
+    return (
+      (function (t) {
+        if (Array.isArray(t)) {
+          for (var e = 0, n = new Array(t.length); e < t.length; e++)
+            n[e] = t[e];
+          return n;
+        }
+      })(t) ||
+      (function (t) {
+        if (
+          Symbol.iterator in Object(t) ||
+          "[object Arguments]" === Object.prototype.toString.call(t)
+        )
+          return Array.from(t);
+      })(t) ||
+      (function () {
+        throw new TypeError("Invalid attempt to spread non-iterable instance");
+      })()
+    );
+  }
+  function t(t) {
+    if ("undefined" != typeof window && window.navigator)
+      return !!navigator.userAgent.match(t);
+  }
+  var w = t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),
+    E = t(/Edge/i),
+    c = t(/firefox/i),
+    u = t(/safari/i) && !t(/chrome/i) && !t(/android/i),
+    n = t(/iP(ad|od|hone)/i),
+    i = t(/chrome/i) && t(/android/i),
+    r = { capture: !1, passive: !1 };
+  function d(t, e, n) {
+    t.addEventListener(e, n, !w && r);
+  }
+  function s(t, e, n) {
+    t.removeEventListener(e, n, !w && r);
+  }
+  function h(t, e) {
+    if (e) {
+      if ((">" === e[0] && (e = e.substring(1)), t))
+        try {
+          if (t.matches) return t.matches(e);
+          if (t.msMatchesSelector) return t.msMatchesSelector(e);
+          if (t.webkitMatchesSelector) return t.webkitMatchesSelector(e);
+        } catch (t) {
+          return !1;
+        }
+      return !1;
+    }
+  }
+  function P(t, e, n, o) {
+    if (t) {
+      n = n || document;
+      do {
+        if (
+          (null != e &&
+            (">" === e[0] ? t.parentNode === n && h(t, e) : h(t, e))) ||
+          (o && t === n)
+        )
+          return t;
+        if (t === n) break;
+      } while (
+        (t =
+          (i = t).host && i !== document && i.host.nodeType
+            ? i.host
+            : i.parentNode)
+      );
+    }
+    var i;
+    return null;
+  }
+  var f,
+    p = /\s+/g;
+  function k(t, e, n) {
+    if (t && e)
+      if (t.classList) t.classList[n ? "add" : "remove"](e);
+      else {
+        var o = (" " + t.className + " ")
+          .replace(p, " ")
+          .replace(" " + e + " ", " ");
+        t.className = (o + (n ? " " + e : "")).replace(p, " ");
+      }
+  }
+  function R(t, e, n) {
+    var o = t && t.style;
+    if (o) {
+      if (void 0 === n)
+        return (
+          document.defaultView && document.defaultView.getComputedStyle
+            ? (n = document.defaultView.getComputedStyle(t, ""))
+            : t.currentStyle && (n = t.currentStyle),
+          void 0 === e ? n : n[e]
+        );
+      e in o || -1 !== e.indexOf("webkit") || (e = "-webkit-" + e),
+        (o[e] = n + ("string" == typeof n ? "" : "px"));
+    }
+  }
+  function v(t, e) {
+    var n = "";
+    if ("string" == typeof t) n = t;
+    else
+      do {
+        var o = R(t, "transform");
+        o && "none" !== o && (n = o + " " + n);
+      } while (!e && (t = t.parentNode));
+    var i =
+      window.DOMMatrix ||
+      window.WebKitCSSMatrix ||
+      window.CSSMatrix ||
+      window.MSCSSMatrix;
+    return i && new i(n);
+  }
+  function g(t, e, n) {
+    if (t) {
+      var o = t.getElementsByTagName(e),
+        i = 0,
+        r = o.length;
+      if (n) for (; i < r; i++) n(o[i], i);
+      return o;
+    }
+    return [];
+  }
+  function A() {
+    var t = document.scrollingElement;
+    return t || document.documentElement;
+  }
+  function X(t, e, n, o, i) {
+    if (t.getBoundingClientRect || t === window) {
+      var r, a, l, s, c, u, d;
+      if (
+        ((d =
+          t !== window && t.parentNode && t !== A()
+            ? ((a = (r = t.getBoundingClientRect()).top),
+              (l = r.left),
+              (s = r.bottom),
+              (c = r.right),
+              (u = r.height),
+              r.width)
+            : ((l = a = 0),
+              (s = window.innerHeight),
+              (c = window.innerWidth),
+              (u = window.innerHeight),
+              window.innerWidth)),
+        (e || n) && t !== window && ((i = i || t.parentNode), !w))
+      )
+        do {
+          if (
+            i &&
+            i.getBoundingClientRect &&
+            ("none" !== R(i, "transform") ||
+              (n && "static" !== R(i, "position")))
+          ) {
+            var h = i.getBoundingClientRect();
+            (a -= h.top + parseInt(R(i, "border-top-width"))),
+              (l -= h.left + parseInt(R(i, "border-left-width"))),
+              (s = a + r.height),
+              (c = l + r.width);
+            break;
+          }
+        } while ((i = i.parentNode));
+      if (o && t !== window) {
+        var f = v(i || t),
+          p = f && f.a,
+          g = f && f.d;
+        f && ((s = (a /= g) + (u /= g)), (c = (l /= p) + (d /= p)));
+      }
+      return { top: a, left: l, bottom: s, right: c, width: d, height: u };
+    }
+  }
+  function Y(t, e, n) {
+    for (var o = H(t, !0), i = X(t)[e]; o; ) {
+      var r = X(o)[n];
+      if (!("top" === n || "left" === n ? r <= i : i <= r)) return o;
+      if (o === A()) break;
+      o = H(o, !1);
+    }
+    return !1;
+  }
+  function m(t, e, n) {
+    for (var o = 0, i = 0, r = t.children; i < r.length; ) {
+      if (
+        "none" !== r[i].style.display &&
+        r[i] !== Rt.ghost &&
+        r[i] !== Rt.dragged &&
+        P(r[i], n.draggable, t, !1)
+      ) {
+        if (o === e) return r[i];
+        o++;
+      }
+      i++;
+    }
+    return null;
+  }
+  function B(t, e) {
+    for (
+      var n = t.lastElementChild;
+      n && (n === Rt.ghost || "none" === R(n, "display") || (e && !h(n, e)));
+
+    )
+      n = n.previousElementSibling;
+    return n || null;
+  }
+  function F(t, e) {
+    var n = 0;
+    if (!t || !t.parentNode) return -1;
+    for (; (t = t.previousElementSibling); )
+      "TEMPLATE" === t.nodeName.toUpperCase() ||
+        t === Rt.clone ||
+        (e && !h(t, e)) ||
+        n++;
+    return n;
+  }
+  function b(t) {
+    var e = 0,
+      n = 0,
+      o = A();
+    if (t)
+      do {
+        var i = v(t),
+          r = i.a,
+          a = i.d;
+        (e += t.scrollLeft * r), (n += t.scrollTop * a);
+      } while (t !== o && (t = t.parentNode));
+    return [e, n];
+  }
+  function H(t, e) {
+    if (!t || !t.getBoundingClientRect) return A();
+    var n = t,
+      o = !1;
+    do {
+      if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) {
+        var i = R(n);
+        if (
+          (n.clientWidth < n.scrollWidth &&
+            ("auto" == i.overflowX || "scroll" == i.overflowX)) ||
+          (n.clientHeight < n.scrollHeight &&
+            ("auto" == i.overflowY || "scroll" == i.overflowY))
+        ) {
+          if (!n.getBoundingClientRect || n === document.body) return A();
+          if (o || e) return n;
+          o = !0;
+        }
+      }
+    } while ((n = n.parentNode));
+    return A();
+  }
+  function y(t, e) {
+    return (
+      Math.round(t.top) === Math.round(e.top) &&
+      Math.round(t.left) === Math.round(e.left) &&
+      Math.round(t.height) === Math.round(e.height) &&
+      Math.round(t.width) === Math.round(e.width)
+    );
+  }
+  function D(e, n) {
+    return function () {
+      if (!f) {
+        var t = arguments;
+        1 === t.length ? e.call(this, t[0]) : e.apply(this, t),
+          (f = setTimeout(function () {
+            f = void 0;
+          }, n));
+      }
+    };
+  }
+  function L(t, e, n) {
+    (t.scrollLeft += e), (t.scrollTop += n);
+  }
+  function S(t) {
+    var e = window.Polymer,
+      n = window.jQuery || window.Zepto;
+    return e && e.dom
+      ? e.dom(t).cloneNode(!0)
+      : n
+      ? n(t).clone(!0)[0]
+      : t.cloneNode(!0);
+  }
+  function _(t, e) {
+    R(t, "position", "absolute"),
+      R(t, "top", e.top),
+      R(t, "left", e.left),
+      R(t, "width", e.width),
+      R(t, "height", e.height);
+  }
+  function C(t) {
+    R(t, "position", ""),
+      R(t, "top", ""),
+      R(t, "left", ""),
+      R(t, "width", ""),
+      R(t, "height", "");
+  }
+  var j = "Sortable" + new Date().getTime();
+  function T() {
+    var e,
+      o = [];
+    return {
+      captureAnimationState: function () {
+        (o = []),
+          this.options.animation &&
+            [].slice.call(this.el.children).forEach(function (t) {
+              if ("none" !== R(t, "display") && t !== Rt.ghost) {
+                o.push({ target: t, rect: X(t) });
+                var e = I({}, o[o.length - 1].rect);
+                if (t.thisAnimationDuration) {
+                  var n = v(t, !0);
+                  n && ((e.top -= n.f), (e.left -= n.e));
+                }
+                t.fromRect = e;
+              }
+            });
+      },
+      addAnimationState: function (t) {
+        o.push(t);
+      },
+      removeAnimationState: function (t) {
+        o.splice(
+          (function (t, e) {
+            for (var n in t)
+              if (t.hasOwnProperty(n))
+                for (var o in e)
+                  if (e.hasOwnProperty(o) && e[o] === t[n][o]) return Number(n);
+            return -1;
+          })(o, { target: t }),
+          1
+        );
+      },
+      animateAll: function (t) {
+        var c = this;
+        if (!this.options.animation)
+          return clearTimeout(e), void ("function" == typeof t && t());
+        var u = !1,
+          d = 0;
+        o.forEach(function (t) {
+          var e = 0,
+            n = t.target,
+            o = n.fromRect,
+            i = X(n),
+            r = n.prevFromRect,
+            a = n.prevToRect,
+            l = t.rect,
+            s = v(n, !0);
+          s && ((i.top -= s.f), (i.left -= s.e)),
+            (n.toRect = i),
+            n.thisAnimationDuration &&
+              y(r, i) &&
+              !y(o, i) &&
+              (l.top - i.top) / (l.left - i.left) ==
+                (o.top - i.top) / (o.left - i.left) &&
+              (e = (function (t, e, n, o) {
+                return (
+                  (Math.sqrt(
+                    Math.pow(e.top - t.top, 2) + Math.pow(e.left - t.left, 2)
+                  ) /
+                    Math.sqrt(
+                      Math.pow(e.top - n.top, 2) + Math.pow(e.left - n.left, 2)
+                    )) *
+                  o.animation
+                );
+              })(l, r, a, c.options)),
+            y(i, o) ||
+              ((n.prevFromRect = o),
+              (n.prevToRect = i),
+              e || (e = c.options.animation),
+              c.animate(n, l, i, e)),
+            e &&
+              ((u = !0),
+              (d = Math.max(d, e)),
+              clearTimeout(n.animationResetTimer),
+              (n.animationResetTimer = setTimeout(function () {
+                (n.animationTime = 0),
+                  (n.prevFromRect = null),
+                  (n.fromRect = null),
+                  (n.prevToRect = null),
+                  (n.thisAnimationDuration = null);
+              }, e)),
+              (n.thisAnimationDuration = e));
+        }),
+          clearTimeout(e),
+          u
+            ? (e = setTimeout(function () {
+                "function" == typeof t && t();
+              }, d))
+            : "function" == typeof t && t(),
+          (o = []);
+      },
+      animate: function (t, e, n, o) {
+        if (o) {
+          R(t, "transition", ""), R(t, "transform", "");
+          var i = v(this.el),
+            r = i && i.a,
+            a = i && i.d,
+            l = (e.left - n.left) / (r || 1),
+            s = (e.top - n.top) / (a || 1);
+          (t.animatingX = !!l),
+            (t.animatingY = !!s),
+            R(t, "transform", "translate3d(" + l + "px," + s + "px,0)"),
+            (this.forRepaintDummy = (function (t) {
+              return t.offsetWidth;
+            })(t)),
+            R(
+              t,
+              "transition",
+              "transform " +
+                o +
+                "ms" +
+                (this.options.easing ? " " + this.options.easing : "")
+            ),
+            R(t, "transform", "translate3d(0,0,0)"),
+            "number" == typeof t.animated && clearTimeout(t.animated),
+            (t.animated = setTimeout(function () {
+              R(t, "transition", ""),
+                R(t, "transform", ""),
+                (t.animated = !1),
+                (t.animatingX = !1),
+                (t.animatingY = !1);
+            }, o));
+        }
+      }
+    };
+  }
+  var x = [],
+    M = { initializeByDefault: !0 },
+    O = {
+      mount: function (e) {
+        for (var t in M) !M.hasOwnProperty(t) || t in e || (e[t] = M[t]);
+        x.forEach(function (t) {
+          if (t.pluginName === e.pluginName)
+            throw "Sortable: Cannot mount plugin ".concat(
+              e.pluginName,
+              " more than once"
+            );
+        }),
+          x.push(e);
+      },
+      pluginEvent: function (e, n, o) {
+        var t = this;
+        (this.eventCanceled = !1),
+          (o.cancel = function () {
+            t.eventCanceled = !0;
+          });
+        var i = e + "Global";
+        x.forEach(function (t) {
+          n[t.pluginName] &&
+            (n[t.pluginName][i] && n[t.pluginName][i](I({ sortable: n }, o)),
+            n.options[t.pluginName] &&
+              n[t.pluginName][e] &&
+              n[t.pluginName][e](I({ sortable: n }, o)));
+        });
+      },
+      initializePlugins: function (o, i, r, t) {
+        for (var e in (x.forEach(function (t) {
+          var e = t.pluginName;
+          if (o.options[e] || t.initializeByDefault) {
+            var n = new t(o, i, o.options);
+            (n.sortable = o),
+              (n.options = o.options),
+              (o[e] = n),
+              a(r, n.defaults);
+          }
+        }),
+        o.options))
+          if (o.options.hasOwnProperty(e)) {
+            var n = this.modifyOption(o, e, o.options[e]);
+            void 0 !== n && (o.options[e] = n);
+          }
+      },
+      getEventProperties: function (e, n) {
+        var o = {};
+        return (
+          x.forEach(function (t) {
+            "function" == typeof t.eventProperties &&
+              a(o, t.eventProperties.call(n[t.pluginName], e));
+          }),
+          o
+        );
+      },
+      modifyOption: function (e, n, o) {
+        var i;
+        return (
+          x.forEach(function (t) {
+            e[t.pluginName] &&
+              t.optionListeners &&
+              "function" == typeof t.optionListeners[n] &&
+              (i = t.optionListeners[n].call(e[t.pluginName], o));
+          }),
+          i
+        );
+      }
+    };
+  function N(t) {
+    var e = t.sortable,
+      n = t.rootEl,
+      o = t.name,
+      i = t.targetEl,
+      r = t.cloneEl,
+      a = t.toEl,
+      l = t.fromEl,
+      s = t.oldIndex,
+      c = t.newIndex,
+      u = t.oldDraggableIndex,
+      d = t.newDraggableIndex,
+      h = t.originalEvent,
+      f = t.putSortable,
+      p = t.extraEventProperties;
+    if ((e = e || (n && n[j]))) {
+      var g,
+        v = e.options,
+        m = "on" + o.charAt(0).toUpperCase() + o.substr(1);
+      !window.CustomEvent || w || E
+        ? (g = document.createEvent("Event")).initEvent(o, !0, !0)
+        : (g = new CustomEvent(o, { bubbles: !0, cancelable: !0 })),
+        (g.to = a || n),
+        (g.from = l || n),
+        (g.item = i || n),
+        (g.clone = r),
+        (g.oldIndex = s),
+        (g.newIndex = c),
+        (g.oldDraggableIndex = u),
+        (g.newDraggableIndex = d),
+        (g.originalEvent = h),
+        (g.pullMode = f ? f.lastPutMode : void 0);
+      var b = I({}, p, O.getEventProperties(o, e));
+      for (var y in b) g[y] = b[y];
+      n && n.dispatchEvent(g), v[m] && v[m].call(e, g);
+    }
+  }
+  function K(t, e, n) {
+    var o = 2 < arguments.length && void 0 !== n ? n : {},
+      i = o.evt,
+      r = l(o, ["evt"]);
+    O.pluginEvent.bind(Rt)(
+      t,
+      e,
+      I(
+        {
+          dragEl: z,
+          parentEl: G,
+          ghostEl: U,
+          rootEl: q,
+          nextEl: V,
+          lastDownEl: Z,
+          cloneEl: Q,
+          cloneHidden: $,
+          dragStarted: dt,
+          putSortable: it,
+          activeSortable: Rt.active,
+          originalEvent: i,
+          oldIndex: J,
+          oldDraggableIndex: et,
+          newIndex: tt,
+          newDraggableIndex: nt,
+          hideGhostForTarget: At,
+          unhideGhostForTarget: It,
+          cloneNowHidden: function () {
+            $ = !0;
+          },
+          cloneNowShown: function () {
+            $ = !1;
+          },
+          dispatchSortableEvent: function (t) {
+            W({ sortable: e, name: t, originalEvent: i });
+          }
+        },
+        r
+      )
+    );
+  }
+  function W(t) {
+    N(
+      I(
+        {
+          putSortable: it,
+          cloneEl: Q,
+          targetEl: z,
+          rootEl: q,
+          oldIndex: J,
+          oldDraggableIndex: et,
+          newIndex: tt,
+          newDraggableIndex: nt
+        },
+        t
+      )
+    );
+  }
+  var z,
+    G,
+    U,
+    q,
+    V,
+    Z,
+    Q,
+    $,
+    J,
+    tt,
+    et,
+    nt,
+    ot,
+    it,
+    rt,
+    at,
+    lt,
+    st,
+    ct,
+    ut,
+    dt,
+    ht,
+    ft,
+    pt,
+    gt,
+    vt = !1,
+    mt = !1,
+    bt = [],
+    yt = !1,
+    wt = !1,
+    Et = [],
+    Dt = !1,
+    St = [],
+    _t = "undefined" != typeof document,
+    Ct = n,
+    Tt = E || w ? "cssFloat" : "float",
+    xt = _t && !i && !n && "draggable" in document.createElement("div"),
+    Mt = (function () {
+      if (_t) {
+        if (w) return !1;
+        var t = document.createElement("x");
+        return (
+          (t.style.cssText = "pointer-events:auto"),
+          "auto" === t.style.pointerEvents
+        );
+      }
+    })(),
+    Ot = function (t, e) {
+      var n = R(t),
+        o =
+          parseInt(n.width) -
+          parseInt(n.paddingLeft) -
+          parseInt(n.paddingRight) -
+          parseInt(n.borderLeftWidth) -
+          parseInt(n.borderRightWidth),
+        i = m(t, 0, e),
+        r = m(t, 1, e),
+        a = i && R(i),
+        l = r && R(r),
+        s = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + X(i).width,
+        c = l && parseInt(l.marginLeft) + parseInt(l.marginRight) + X(r).width;
+      if ("flex" === n.display)
+        return "column" === n.flexDirection ||
+          "column-reverse" === n.flexDirection
+          ? "vertical"
+          : "horizontal";
+      if ("grid" === n.display)
+        return n.gridTemplateColumns.split(" ").length <= 1
+          ? "vertical"
+          : "horizontal";
+      if (i && a.float && "none" !== a.float) {
+        var u = "left" === a.float ? "left" : "right";
+        return !r || ("both" !== l.clear && l.clear !== u)
+          ? "horizontal"
+          : "vertical";
+      }
+      return i &&
+        ("block" === a.display ||
+          "flex" === a.display ||
+          "table" === a.display ||
+          "grid" === a.display ||
+          (o <= s && "none" === n[Tt]) ||
+          (r && "none" === n[Tt] && o < s + c))
+        ? "vertical"
+        : "horizontal";
+    },
+    Nt = function (t) {
+      function s(a, l) {
+        return function (t, e, n, o) {
+          var i =
+            t.options.group.name &&
+            e.options.group.name &&
+            t.options.group.name === e.options.group.name;
+          if (null == a && (l || i)) return !0;
+          if (null == a || !1 === a) return !1;
+          if (l && "clone" === a) return a;
+          if ("function" == typeof a) return s(a(t, e, n, o), l)(t, e, n, o);
+          var r = (l ? t : e).options.group.name;
+          return (
+            !0 === a ||
+            ("string" == typeof a && a === r) ||
+            (a.join && -1 < a.indexOf(r))
+          );
+        };
+      }
+      var e = {},
+        n = t.group;
+      (n && "object" == o(n)) || (n = { name: n }),
+        (e.name = n.name),
+        (e.checkPull = s(n.pull, !0)),
+        (e.checkPut = s(n.put)),
+        (e.revertClone = n.revertClone),
+        (t.group = e);
+    },
+    At = function () {
+      !Mt && U && R(U, "display", "none");
+    },
+    It = function () {
+      !Mt && U && R(U, "display", "");
+    };
+  _t &&
+    document.addEventListener(
+      "click",
+      function (t) {
+        if (mt)
+          return (
+            t.preventDefault(),
+            t.stopPropagation && t.stopPropagation(),
+            t.stopImmediatePropagation && t.stopImmediatePropagation(),
+            (mt = !1)
+          );
+      },
+      !0
+    );
+  function Pt(t) {
+    if (z) {
+      var e = (function (r, a) {
+        var l;
+        return (
+          bt.some(function (t) {
+            if (!B(t)) {
+              var e = X(t),
+                n = t[j].options.emptyInsertThreshold,
+                o = r >= e.left - n && r <= e.right + n,
+                i = a >= e.top - n && a <= e.bottom + n;
+              return n && o && i ? (l = t) : void 0;
+            }
+          }),
+          l
+        );
+      })((t = t.touches ? t.touches[0] : t).clientX, t.clientY);
+      if (e) {
+        var n = {};
+        for (var o in t) t.hasOwnProperty(o) && (n[o] = t[o]);
+        (n.target = n.rootEl = e),
+          (n.preventDefault = void 0),
+          (n.stopPropagation = void 0),
+          e[j]._onDragOver(n);
+      }
+    }
+  }
+  function kt(t) {
+    z && z.parentNode[j]._isOutsideThisEl(t.target);
+  }
+  function Rt(t, e) {
+    if (!t || !t.nodeType || 1 !== t.nodeType)
+      throw "Sortable: `el` must be an HTMLElement, not ".concat(
+        {}.toString.call(t)
+      );
+    (this.el = t), (this.options = e = a({}, e)), (t[j] = this);
+    var n = {
+      group: null,
+      sort: !0,
+      disabled: !1,
+      store: null,
+      handle: null,
+      draggable: /^[uo]l$/i.test(t.nodeName) ? ">li" : ">*",
+      swapThreshold: 1,
+      invertSwap: !1,
+      invertedSwapThreshold: null,
+      removeCloneOnHide: !0,
+      direction: function () {
+        return Ot(t, this.options);
+      },
+      ghostClass: "sortable-ghost",
+      chosenClass: "sortable-chosen",
+      dragClass: "sortable-drag",
+      ignore: "a, img",
+      filter: null,
+      preventOnFilter: !0,
+      animation: 0,
+      easing: null,
+      setData: function (t, e) {
+        t.setData("Text", e.textContent);
+      },
+      dropBubble: !1,
+      dragoverBubble: !1,
+      dataIdAttr: "data-id",
+      delay: 0,
+      delayOnTouchOnly: !1,
+      touchStartThreshold:
+        (Number.parseInt ? Number : window).parseInt(
+          window.devicePixelRatio,
+          10
+        ) || 1,
+      forceFallback: !1,
+      fallbackClass: "sortable-fallback",
+      fallbackOnBody: !1,
+      fallbackTolerance: 0,
+      fallbackOffset: { x: 0, y: 0 },
+      supportPointer:
+        !1 !== Rt.supportPointer && "PointerEvent" in window && !u,
+      emptyInsertThreshold: 5
+    };
+    for (var o in (O.initializePlugins(this, t, n), n)) o in e || (e[o] = n[o]);
+    for (var i in (Nt(e), this))
+      "_" === i.charAt(0) &&
+        "function" == typeof this[i] &&
+        (this[i] = this[i].bind(this));
+    (this.nativeDraggable = !e.forceFallback && xt),
+      this.nativeDraggable && (this.options.touchStartThreshold = 1),
+      e.supportPointer
+        ? d(t, "pointerdown", this._onTapStart)
+        : (d(t, "mousedown", this._onTapStart),
+          d(t, "touchstart", this._onTapStart)),
+      this.nativeDraggable && (d(t, "dragover", this), d(t, "dragenter", this)),
+      bt.push(this.el),
+      e.store && e.store.get && this.sort(e.store.get(this) || []),
+      a(this, T());
+  }
+  function Xt(t, e, n, o, i, r, a, l) {
+    var s,
+      c,
+      u = t[j],
+      d = u.options.onMove;
+    return (
+      !window.CustomEvent || w || E
+        ? (s = document.createEvent("Event")).initEvent("move", !0, !0)
+        : (s = new CustomEvent("move", { bubbles: !0, cancelable: !0 })),
+      (s.to = e),
+      (s.from = t),
+      (s.dragged = n),
+      (s.draggedRect = o),
+      (s.related = i || e),
+      (s.relatedRect = r || X(e)),
+      (s.willInsertAfter = l),
+      (s.originalEvent = a),
+      t.dispatchEvent(s),
+      d && (c = d.call(u, s, a)),
+      c
+    );
+  }
+  function Yt(t) {
+    t.draggable = !1;
+  }
+  function Bt() {
+    Dt = !1;
+  }
+  function Ft(t) {
+    for (
+      var e = t.tagName + t.className + t.src + t.href + t.textContent,
+        n = e.length,
+        o = 0;
+      n--;
+
+    )
+      o += e.charCodeAt(n);
+    return o.toString(36);
+  }
+  function Ht(t) {
+    return setTimeout(t, 0);
+  }
+  function Lt(t) {
+    return clearTimeout(t);
+  }
+  (Rt.prototype = {
+    constructor: Rt,
+    _isOutsideThisEl: function (t) {
+      this.el.contains(t) || t === this.el || (ht = null);
+    },
+    _getDirection: function (t, e) {
+      return "function" == typeof this.options.direction
+        ? this.options.direction.call(this, t, e, z)
+        : this.options.direction;
+    },
+    _onTapStart: function (e) {
+      if (e.cancelable) {
+        var n = this,
+          o = this.el,
+          t = this.options,
+          i = t.preventOnFilter,
+          r = e.type,
+          a =
+            (e.touches && e.touches[0]) ||
+            (e.pointerType && "touch" === e.pointerType && e),
+          l = (a || e).target,
+          s =
+            (e.target.shadowRoot &&
+              ((e.path && e.path[0]) ||
+                (e.composedPath && e.composedPath()[0]))) ||
+            l,
+          c = t.filter;
+        if (
+          ((function (t) {
+            St.length = 0;
+            var e = t.getElementsByTagName("input"),
+              n = e.length;
+            for (; n--; ) {
+              var o = e[n];
+              o.checked && St.push(o);
+            }
+          })(o),
+          !z &&
+            !(
+              (/mousedown|pointerdown/.test(r) && 0 !== e.button) ||
+              t.disabled
+            ) &&
+            !s.isContentEditable &&
+            (this.nativeDraggable ||
+              !u ||
+              !l ||
+              "SELECT" !== l.tagName.toUpperCase()) &&
+            !(((l = P(l, t.draggable, o, !1)) && l.animated) || Z === l))
+        ) {
+          if (((J = F(l)), (et = F(l, t.draggable)), "function" == typeof c)) {
+            if (c.call(this, e, l, this))
+              return (
+                W({
+                  sortable: n,
+                  rootEl: s,
+                  name: "filter",
+                  targetEl: l,
+                  toEl: o,
+                  fromEl: o
+                }),
+                K("filter", n, { evt: e }),
+                void (i && e.cancelable && e.preventDefault())
+              );
+          } else if (
+            c &&
+            (c = c.split(",").some(function (t) {
+              if ((t = P(s, t.trim(), o, !1)))
+                return (
+                  W({
+                    sortable: n,
+                    rootEl: t,
+                    name: "filter",
+                    targetEl: l,
+                    fromEl: o,
+                    toEl: o
+                  }),
+                  K("filter", n, { evt: e }),
+                  !0
+                );
+            }))
+          )
+            return void (i && e.cancelable && e.preventDefault());
+          (t.handle && !P(s, t.handle, o, !1)) ||
+            this._prepareDragStart(e, a, l);
+        }
+      }
+    },
+    _prepareDragStart: function (t, e, n) {
+      var o,
+        i = this,
+        r = i.el,
+        a = i.options,
+        l = r.ownerDocument;
+      if (n && !z && n.parentNode === r) {
+        var s = X(n);
+        if (
+          ((q = r),
+          (G = (z = n).parentNode),
+          (V = z.nextSibling),
+          (Z = n),
+          (ot = a.group),
+          (rt = {
+            target: (Rt.dragged = z),
+            clientX: (e || t).clientX,
+            clientY: (e || t).clientY
+          }),
+          (ct = rt.clientX - s.left),
+          (ut = rt.clientY - s.top),
+          (this._lastX = (e || t).clientX),
+          (this._lastY = (e || t).clientY),
+          (z.style["will-change"] = "all"),
+          (o = function () {
+            K("delayEnded", i, { evt: t }),
+              Rt.eventCanceled
+                ? i._onDrop()
+                : (i._disableDelayedDragEvents(),
+                  !c && i.nativeDraggable && (z.draggable = !0),
+                  i._triggerDragStart(t, e),
+                  W({ sortable: i, name: "choose", originalEvent: t }),
+                  k(z, a.chosenClass, !0));
+          }),
+          a.ignore.split(",").forEach(function (t) {
+            g(z, t.trim(), Yt);
+          }),
+          d(l, "dragover", Pt),
+          d(l, "mousemove", Pt),
+          d(l, "touchmove", Pt),
+          d(l, "mouseup", i._onDrop),
+          d(l, "touchend", i._onDrop),
+          d(l, "touchcancel", i._onDrop),
+          c &&
+            this.nativeDraggable &&
+            ((this.options.touchStartThreshold = 4), (z.draggable = !0)),
+          K("delayStart", this, { evt: t }),
+          !a.delay ||
+            (a.delayOnTouchOnly && !e) ||
+            (this.nativeDraggable && (E || w)))
+        )
+          o();
+        else {
+          if (Rt.eventCanceled) return void this._onDrop();
+          d(l, "mouseup", i._disableDelayedDrag),
+            d(l, "touchend", i._disableDelayedDrag),
+            d(l, "touchcancel", i._disableDelayedDrag),
+            d(l, "mousemove", i._delayedDragTouchMoveHandler),
+            d(l, "touchmove", i._delayedDragTouchMoveHandler),
+            a.supportPointer &&
+              d(l, "pointermove", i._delayedDragTouchMoveHandler),
+            (i._dragStartTimer = setTimeout(o, a.delay));
+        }
+      }
+    },
+    _delayedDragTouchMoveHandler: function (t) {
+      var e = t.touches ? t.touches[0] : t;
+      Math.max(
+        Math.abs(e.clientX - this._lastX),
+        Math.abs(e.clientY - this._lastY)
+      ) >=
+        Math.floor(
+          this.options.touchStartThreshold /
+            ((this.nativeDraggable && window.devicePixelRatio) || 1)
+        ) && this._disableDelayedDrag();
+    },
+    _disableDelayedDrag: function () {
+      z && Yt(z),
+        clearTimeout(this._dragStartTimer),
+        this._disableDelayedDragEvents();
+    },
+    _disableDelayedDragEvents: function () {
+      var t = this.el.ownerDocument;
+      s(t, "mouseup", this._disableDelayedDrag),
+        s(t, "touchend", this._disableDelayedDrag),
+        s(t, "touchcancel", this._disableDelayedDrag),
+        s(t, "mousemove", this._delayedDragTouchMoveHandler),
+        s(t, "touchmove", this._delayedDragTouchMoveHandler),
+        s(t, "pointermove", this._delayedDragTouchMoveHandler);
+    },
+    _triggerDragStart: function (t, e) {
+      (e = e || ("touch" == t.pointerType && t)),
+        !this.nativeDraggable || e
+          ? this.options.supportPointer
+            ? d(document, "pointermove", this._onTouchMove)
+            : d(document, e ? "touchmove" : "mousemove", this._onTouchMove)
+          : (d(z, "dragend", this), d(q, "dragstart", this._onDragStart));
+      try {
+        document.selection
+          ? Ht(function () {
+              document.selection.empty();
+            })
+          : window.getSelection().removeAllRanges();
+      } catch (t) {}
+    },
+    _dragStarted: function (t, e) {
+      if (((vt = !1), q && z)) {
+        K("dragStarted", this, { evt: e }),
+          this.nativeDraggable && d(document, "dragover", kt);
+        var n = this.options;
+        t || k(z, n.dragClass, !1),
+          k(z, n.ghostClass, !0),
+          (Rt.active = this),
+          t && this._appendGhost(),
+          W({ sortable: this, name: "start", originalEvent: e });
+      } else this._nulling();
+    },
+    _emulateDragOver: function () {
+      if (at) {
+        (this._lastX = at.clientX), (this._lastY = at.clientY), At();
+        for (
+          var t = document.elementFromPoint(at.clientX, at.clientY), e = t;
+          t &&
+          t.shadowRoot &&
+          (t = t.shadowRoot.elementFromPoint(at.clientX, at.clientY)) !== e;
+
+        )
+          e = t;
+        if ((z.parentNode[j]._isOutsideThisEl(t), e))
+          do {
+            if (e[j]) {
+              if (
+                e[j]._onDragOver({
+                  clientX: at.clientX,
+                  clientY: at.clientY,
+                  target: t,
+                  rootEl: e
+                }) &&
+                !this.options.dragoverBubble
+              )
+                break;
+            }
+            t = e;
+          } while ((e = e.parentNode));
+        It();
+      }
+    },
+    _onTouchMove: function (t) {
+      if (rt) {
+        var e = this.options,
+          n = e.fallbackTolerance,
+          o = e.fallbackOffset,
+          i = t.touches ? t.touches[0] : t,
+          r = U && v(U, !0),
+          a = U && r && r.a,
+          l = U && r && r.d,
+          s = Ct && gt && b(gt),
+          c =
+            (i.clientX - rt.clientX + o.x) / (a || 1) +
+            (s ? s[0] - Et[0] : 0) / (a || 1),
+          u =
+            (i.clientY - rt.clientY + o.y) / (l || 1) +
+            (s ? s[1] - Et[1] : 0) / (l || 1);
+        if (!Rt.active && !vt) {
+          if (
+            n &&
+            Math.max(
+              Math.abs(i.clientX - this._lastX),
+              Math.abs(i.clientY - this._lastY)
+            ) < n
+          )
+            return;
+          this._onDragStart(t, !0);
+        }
+        if (U) {
+          r
+            ? ((r.e += c - (lt || 0)), (r.f += u - (st || 0)))
+            : (r = { a: 1, b: 0, c: 0, d: 1, e: c, f: u });
+          var d = "matrix("
+            .concat(r.a, ",")
+            .concat(r.b, ",")
+            .concat(r.c, ",")
+            .concat(r.d, ",")
+            .concat(r.e, ",")
+            .concat(r.f, ")");
+          R(U, "webkitTransform", d),
+            R(U, "mozTransform", d),
+            R(U, "msTransform", d),
+            R(U, "transform", d),
+            (lt = c),
+            (st = u),
+            (at = i);
+        }
+        t.cancelable && t.preventDefault();
+      }
+    },
+    _appendGhost: function () {
+      if (!U) {
+        var t = this.options.fallbackOnBody ? document.body : q,
+          e = X(z, !0, Ct, !0, t),
+          n = this.options;
+        if (Ct) {
+          for (
+            gt = t;
+            "static" === R(gt, "position") &&
+            "none" === R(gt, "transform") &&
+            gt !== document;
+
+          )
+            gt = gt.parentNode;
+          gt !== document.body && gt !== document.documentElement
+            ? (gt === document && (gt = A()),
+              (e.top += gt.scrollTop),
+              (e.left += gt.scrollLeft))
+            : (gt = A()),
+            (Et = b(gt));
+        }
+        k((U = z.cloneNode(!0)), n.ghostClass, !1),
+          k(U, n.fallbackClass, !0),
+          k(U, n.dragClass, !0),
+          R(U, "transition", ""),
+          R(U, "transform", ""),
+          R(U, "box-sizing", "border-box"),
+          R(U, "margin", 0),
+          R(U, "top", e.top),
+          R(U, "left", e.left),
+          R(U, "width", e.width),
+          R(U, "height", e.height),
+          R(U, "opacity", "0.8"),
+          R(U, "position", Ct ? "absolute" : "fixed"),
+          R(U, "zIndex", "100000"),
+          R(U, "pointerEvents", "none"),
+          (Rt.ghost = U),
+          t.appendChild(U),
+          R(
+            U,
+            "transform-origin",
+            (ct / parseInt(U.style.width)) * 100 +
+              "% " +
+              (ut / parseInt(U.style.height)) * 100 +
+              "%"
+          );
+      }
+    },
+    _onDragStart: function (t, e) {
+      var n = this,
+        o = t.dataTransfer,
+        i = n.options;
+      K("dragStart", this, { evt: t }),
+        Rt.eventCanceled
+          ? this._onDrop()
+          : (K("setupClone", this),
+            Rt.eventCanceled ||
+              (((Q = S(z)).draggable = !1),
+              (Q.style["will-change"] = ""),
+              this._hideClone(),
+              k(Q, this.options.chosenClass, !1),
+              (Rt.clone = Q)),
+            (n.cloneId = Ht(function () {
+              K("clone", n),
+                Rt.eventCanceled ||
+                  (n.options.removeCloneOnHide || q.insertBefore(Q, z),
+                  n._hideClone(),
+                  W({ sortable: n, name: "clone" }));
+            })),
+            e || k(z, i.dragClass, !0),
+            e
+              ? ((mt = !0), (n._loopId = setInterval(n._emulateDragOver, 50)))
+              : (s(document, "mouseup", n._onDrop),
+                s(document, "touchend", n._onDrop),
+                s(document, "touchcancel", n._onDrop),
+                o &&
+                  ((o.effectAllowed = "move"),
+                  i.setData && i.setData.call(n, o, z)),
+                d(document, "drop", n),
+                R(z, "transform", "translateZ(0)")),
+            (vt = !0),
+            (n._dragStartId = Ht(n._dragStarted.bind(n, e, t))),
+            d(document, "selectstart", n),
+            (dt = !0),
+            u && R(document.body, "user-select", "none"));
+    },
+    _onDragOver: function (n) {
+      var o,
+        i,
+        r,
+        a,
+        l = this.el,
+        s = n.target,
+        e = this.options,
+        t = e.group,
+        c = Rt.active,
+        u = ot === t,
+        d = e.sort,
+        h = it || c,
+        f = this,
+        p = !1;
+      if (!Dt) {
+        if (
+          (void 0 !== n.preventDefault && n.cancelable && n.preventDefault(),
+          (s = P(s, e.draggable, l, !0)),
+          M("dragOver"),
+          Rt.eventCanceled)
+        )
+          return p;
+        if (
+          z.contains(n.target) ||
+          (s.animated && s.animatingX && s.animatingY) ||
+          f._ignoreWhileAnimating === s
+        )
+          return N(!1);
+        if (
+          ((mt = !1),
+          c &&
+            !e.disabled &&
+            (u
+              ? d || (r = !q.contains(z))
+              : it === this ||
+                ((this.lastPutMode = ot.checkPull(this, c, z, n)) &&
+                  t.checkPut(this, c, z, n))))
+        ) {
+          if (
+            ((a = "vertical" === this._getDirection(n, s)),
+            (o = X(z)),
+            M("dragOverValid"),
+            Rt.eventCanceled)
+          )
+            return p;
+          if (r)
+            return (
+              (G = q),
+              O(),
+              this._hideClone(),
+              M("revert"),
+              Rt.eventCanceled || (V ? q.insertBefore(z, V) : q.appendChild(z)),
+              N(!0)
+            );
+          var g = B(l, e.draggable);
+          if (
+            !g ||
+            ((function (t, e, n) {
+              var o = X(B(n.el, n.options.draggable));
+              return e
+                ? t.clientX > o.right + 10 ||
+                    (t.clientX <= o.right &&
+                      t.clientY > o.bottom &&
+                      t.clientX >= o.left)
+                : (t.clientX > o.right && t.clientY > o.top) ||
+                    (t.clientX <= o.right && t.clientY > o.bottom + 10);
+            })(n, a, this) &&
+              !g.animated)
+          ) {
+            if (g === z) return N(!1);
+            if (
+              (g && l === n.target && (s = g),
+              s && (i = X(s)),
+              !1 !== Xt(q, l, z, o, s, i, n, !!s))
+            )
+              return O(), l.appendChild(z), (G = l), A(), N(!0);
+          } else if (s.parentNode === l) {
+            i = X(s);
+            var v,
+              m,
+              b,
+              y = z.parentNode !== l,
+              w = !(function (t, e, n) {
+                var o = n ? t.left : t.top,
+                  i = n ? t.right : t.bottom,
+                  r = n ? t.width : t.height,
+                  a = n ? e.left : e.top,
+                  l = n ? e.right : e.bottom,
+                  s = n ? e.width : e.height;
+                return o === a || i === l || o + r / 2 === a + s / 2;
+              })(
+                (z.animated && z.toRect) || o,
+                (s.animated && s.toRect) || i,
+                a
+              ),
+              E = a ? "top" : "left",
+              D = Y(s, "top", "top") || Y(z, "top", "top"),
+              S = D ? D.scrollTop : void 0;
+            if (
+              (ht !== s &&
+                ((m = i[E]), (yt = !1), (wt = (!w && e.invertSwap) || y)),
+              0 !==
+                (v = (function (t, e, n, o, i, r, a, l) {
+                  var s = o ? t.clientY : t.clientX,
+                    c = o ? n.height : n.width,
+                    u = o ? n.top : n.left,
+                    d = o ? n.bottom : n.right,
+                    h = !1;
+                  if (!a)
+                    if (l && pt < c * i) {
+                      if (
+                        (!yt &&
+                          (1 === ft
+                            ? u + (c * r) / 2 < s
+                            : s < d - (c * r) / 2) &&
+                          (yt = !0),
+                        yt)
+                      )
+                        h = !0;
+                      else if (1 === ft ? s < u + pt : d - pt < s) return -ft;
+                    } else if (
+                      u + (c * (1 - i)) / 2 < s &&
+                      s < d - (c * (1 - i)) / 2
+                    )
+                      return (function (t) {
+                        return F(z) < F(t) ? 1 : -1;
+                      })(e);
+                  if (
+                    (h = h || a) &&
+                    (s < u + (c * r) / 2 || d - (c * r) / 2 < s)
+                  )
+                    return u + c / 2 < s ? 1 : -1;
+                  return 0;
+                })(
+                  n,
+                  s,
+                  i,
+                  a,
+                  w ? 1 : e.swapThreshold,
+                  null == e.invertedSwapThreshold
+                    ? e.swapThreshold
+                    : e.invertedSwapThreshold,
+                  wt,
+                  ht === s
+                )))
+            )
+              for (
+                var _ = F(z);
+                (_ -= v),
+                  (b = G.children[_]) &&
+                    ("none" === R(b, "display") || b === U);
+
+              );
+            if (0 === v || b === s) return N(!1);
+            ft = v;
+            var C = (ht = s).nextElementSibling,
+              T = !1,
+              x = Xt(q, l, z, o, s, i, n, (T = 1 === v));
+            if (!1 !== x)
+              return (
+                (1 !== x && -1 !== x) || (T = 1 === x),
+                (Dt = !0),
+                setTimeout(Bt, 30),
+                O(),
+                T && !C
+                  ? l.appendChild(z)
+                  : s.parentNode.insertBefore(z, T ? C : s),
+                D && L(D, 0, S - D.scrollTop),
+                (G = z.parentNode),
+                void 0 === m || wt || (pt = Math.abs(m - X(s)[E])),
+                A(),
+                N(!0)
+              );
+          }
+          if (l.contains(z)) return N(!1);
+        }
+        return !1;
+      }
+      function M(t, e) {
+        K(
+          t,
+          f,
+          I(
+            {
+              evt: n,
+              isOwner: u,
+              axis: a ? "vertical" : "horizontal",
+              revert: r,
+              dragRect: o,
+              targetRect: i,
+              canSort: d,
+              fromSortable: h,
+              target: s,
+              completed: N,
+              onMove: function (t, e) {
+                return Xt(q, l, z, o, t, X(t), n, e);
+              },
+              changed: A
+            },
+            e
+          )
+        );
+      }
+      function O() {
+        M("dragOverAnimationCapture"),
+          f.captureAnimationState(),
+          f !== h && h.captureAnimationState();
+      }
+      function N(t) {
+        return (
+          M("dragOverCompleted", { insertion: t }),
+          t &&
+            (u ? c._hideClone() : c._showClone(f),
+            f !== h &&
+              (k(z, it ? it.options.ghostClass : c.options.ghostClass, !1),
+              k(z, e.ghostClass, !0)),
+            it !== f && f !== Rt.active
+              ? (it = f)
+              : f === Rt.active && it && (it = null),
+            h === f && (f._ignoreWhileAnimating = s),
+            f.animateAll(function () {
+              M("dragOverAnimationComplete"), (f._ignoreWhileAnimating = null);
+            }),
+            f !== h && (h.animateAll(), (h._ignoreWhileAnimating = null))),
+          ((s === z && !z.animated) || (s === l && !s.animated)) && (ht = null),
+          e.dragoverBubble ||
+            n.rootEl ||
+            s === document ||
+            (z.parentNode[j]._isOutsideThisEl(n.target), t || Pt(n)),
+          !e.dragoverBubble && n.stopPropagation && n.stopPropagation(),
+          (p = !0)
+        );
+      }
+      function A() {
+        (tt = F(z)),
+          (nt = F(z, e.draggable)),
+          W({
+            sortable: f,
+            name: "change",
+            toEl: l,
+            newIndex: tt,
+            newDraggableIndex: nt,
+            originalEvent: n
+          });
+      }
+    },
+    _ignoreWhileAnimating: null,
+    _offMoveEvents: function () {
+      s(document, "mousemove", this._onTouchMove),
+        s(document, "touchmove", this._onTouchMove),
+        s(document, "pointermove", this._onTouchMove),
+        s(document, "dragover", Pt),
+        s(document, "mousemove", Pt),
+        s(document, "touchmove", Pt);
+    },
+    _offUpEvents: function () {
+      var t = this.el.ownerDocument;
+      s(t, "mouseup", this._onDrop),
+        s(t, "touchend", this._onDrop),
+        s(t, "pointerup", this._onDrop),
+        s(t, "touchcancel", this._onDrop),
+        s(document, "selectstart", this);
+    },
+    _onDrop: function (t) {
+      var e = this.el,
+        n = this.options;
+      (tt = F(z)),
+        (nt = F(z, n.draggable)),
+        K("drop", this, { evt: t }),
+        (G = z && z.parentNode),
+        (tt = F(z)),
+        (nt = F(z, n.draggable)),
+        Rt.eventCanceled ||
+          ((yt = wt = vt = !1),
+          clearInterval(this._loopId),
+          clearTimeout(this._dragStartTimer),
+          Lt(this.cloneId),
+          Lt(this._dragStartId),
+          this.nativeDraggable &&
+            (s(document, "drop", this), s(e, "dragstart", this._onDragStart)),
+          this._offMoveEvents(),
+          this._offUpEvents(),
+          u && R(document.body, "user-select", ""),
+          R(z, "transform", ""),
+          t &&
+            (dt &&
+              (t.cancelable && t.preventDefault(),
+              n.dropBubble || t.stopPropagation()),
+            U && U.parentNode && U.parentNode.removeChild(U),
+            (q === G || (it && "clone" !== it.lastPutMode)) &&
+              Q &&
+              Q.parentNode &&
+              Q.parentNode.removeChild(Q),
+            z &&
+              (this.nativeDraggable && s(z, "dragend", this),
+              Yt(z),
+              (z.style["will-change"] = ""),
+              dt &&
+                !vt &&
+                k(z, it ? it.options.ghostClass : this.options.ghostClass, !1),
+              k(z, this.options.chosenClass, !1),
+              W({
+                sortable: this,
+                name: "unchoose",
+                toEl: G,
+                newIndex: null,
+                newDraggableIndex: null,
+                originalEvent: t
+              }),
+              q !== G
+                ? (0 <= tt &&
+                    (W({
+                      rootEl: G,
+                      name: "add",
+                      toEl: G,
+                      fromEl: q,
+                      originalEvent: t
+                    }),
+                    W({
+                      sortable: this,
+                      name: "remove",
+                      toEl: G,
+                      originalEvent: t
+                    }),
+                    W({
+                      rootEl: G,
+                      name: "sort",
+                      toEl: G,
+                      fromEl: q,
+                      originalEvent: t
+                    }),
+                    W({
+                      sortable: this,
+                      name: "sort",
+                      toEl: G,
+                      originalEvent: t
+                    })),
+                  it && it.save())
+                : tt !== J &&
+                  0 <= tt &&
+                  (W({
+                    sortable: this,
+                    name: "update",
+                    toEl: G,
+                    originalEvent: t
+                  }),
+                  W({
+                    sortable: this,
+                    name: "sort",
+                    toEl: G,
+                    originalEvent: t
+                  })),
+              Rt.active &&
+                ((null != tt && -1 !== tt) || ((tt = J), (nt = et)),
+                W({ sortable: this, name: "end", toEl: G, originalEvent: t }),
+                this.save())))),
+        this._nulling();
+    },
+    _nulling: function () {
+      K("nulling", this),
+        (q =
+          z =
+          G =
+          U =
+          V =
+          Q =
+          Z =
+          $ =
+          rt =
+          at =
+          dt =
+          tt =
+          nt =
+          J =
+          et =
+          ht =
+          ft =
+          it =
+          ot =
+          Rt.dragged =
+          Rt.ghost =
+          Rt.clone =
+          Rt.active =
+            null),
+        St.forEach(function (t) {
+          t.checked = !0;
+        }),
+        (St.length = lt = st = 0);
+    },
+    handleEvent: function (t) {
+      switch (t.type) {
+        case "drop":
+        case "dragend":
+          this._onDrop(t);
+          break;
+        case "dragenter":
+        case "dragover":
+          z &&
+            (this._onDragOver(t),
+            (function (t) {
+              t.dataTransfer && (t.dataTransfer.dropEffect = "move");
+              t.cancelable && t.preventDefault();
+            })(t));
+          break;
+        case "selectstart":
+          t.preventDefault();
+      }
+    },
+    toArray: function () {
+      for (
+        var t,
+          e = [],
+          n = this.el.children,
+          o = 0,
+          i = n.length,
+          r = this.options;
+        o < i;
+        o++
+      )
+        P((t = n[o]), r.draggable, this.el, !1) &&
+          e.push(t.getAttribute(r.dataIdAttr) || Ft(t));
+      return e;
+    },
+    sort: function (t, e) {
+      var o = {},
+        i = this.el;
+      this.toArray().forEach(function (t, e) {
+        var n = i.children[e];
+        P(n, this.options.draggable, i, !1) && (o[t] = n);
+      }, this),
+        e && this.captureAnimationState(),
+        t.forEach(function (t) {
+          o[t] && (i.removeChild(o[t]), i.appendChild(o[t]));
+        }),
+        e && this.animateAll();
+    },
+    save: function () {
+      var t = this.options.store;
+      t && t.set && t.set(this);
+    },
+    closest: function (t, e) {
+      return P(t, e || this.options.draggable, this.el, !1);
+    },
+    option: function (t, e) {
+      var n = this.options;
+      if (void 0 === e) return n[t];
+      var o = O.modifyOption(this, t, e);
+      (n[t] = void 0 !== o ? o : e), "group" === t && Nt(n);
+    },
+    destroy: function () {
+      K("destroy", this);
+      var t = this.el;
+      (t[j] = null),
+        s(t, "mousedown", this._onTapStart),
+        s(t, "touchstart", this._onTapStart),
+        s(t, "pointerdown", this._onTapStart),
+        this.nativeDraggable &&
+          (s(t, "dragover", this), s(t, "dragenter", this)),
+        Array.prototype.forEach.call(
+          t.querySelectorAll("[draggable]"),
+          function (t) {
+            t.removeAttribute("draggable");
+          }
+        ),
+        this._onDrop(),
+        this._disableDelayedDragEvents(),
+        bt.splice(bt.indexOf(this.el), 1),
+        (this.el = t = null);
+    },
+    _hideClone: function () {
+      if (!$) {
+        if ((K("hideClone", this), Rt.eventCanceled)) return;
+        R(Q, "display", "none"),
+          this.options.removeCloneOnHide &&
+            Q.parentNode &&
+            Q.parentNode.removeChild(Q),
+          ($ = !0);
+      }
+    },
+    _showClone: function (t) {
+      if ("clone" === t.lastPutMode) {
+        if ($) {
+          if ((K("showClone", this), Rt.eventCanceled)) return;
+          z.parentNode != q || this.options.group.revertClone
+            ? V
+              ? q.insertBefore(Q, V)
+              : q.appendChild(Q)
+            : q.insertBefore(Q, z),
+            this.options.group.revertClone && this.animate(z, Q),
+            R(Q, "display", ""),
+            ($ = !1);
+        }
+      } else this._hideClone();
+    }
+  }),
+    _t &&
+      d(document, "touchmove", function (t) {
+        (Rt.active || vt) && t.cancelable && t.preventDefault();
+      }),
+    (Rt.utils = {
+      on: d,
+      off: s,
+      css: R,
+      find: g,
+      is: function (t, e) {
+        return !!P(t, e, t, !1);
+      },
+      extend: function (t, e) {
+        if (t && e) for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
+        return t;
+      },
+      throttle: D,
+      closest: P,
+      toggleClass: k,
+      clone: S,
+      index: F,
+      nextTick: Ht,
+      cancelNextTick: Lt,
+      detectDirection: Ot,
+      getChild: m
+    }),
+    (Rt.get = function (t) {
+      return t[j];
+    }),
+    (Rt.mount = function () {
+      for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)
+        e[n] = arguments[n];
+      e[0].constructor === Array && (e = e[0]),
+        e.forEach(function (t) {
+          if (!t.prototype || !t.prototype.constructor)
+            throw "Sortable: Mounted plugin must be a constructor function, not ".concat(
+              {}.toString.call(t)
+            );
+          t.utils && (Rt.utils = I({}, Rt.utils, t.utils)), O.mount(t);
+        });
+    }),
+    (Rt.create = function (t, e) {
+      return new Rt(t, e);
+    });
+  var jt,
+    Kt,
+    Wt,
+    zt,
+    Gt,
+    Ut,
+    qt = [],
+    Vt = !(Rt.version = "1.13.0");
+  function Zt() {
+    qt.forEach(function (t) {
+      clearInterval(t.pid);
+    }),
+      (qt = []);
+  }
+  function Qt() {
+    clearInterval(Ut);
+  }
+  function $t(t) {
+    var e = t.originalEvent,
+      n = t.putSortable,
+      o = t.dragEl,
+      i = t.activeSortable,
+      r = t.dispatchSortableEvent,
+      a = t.hideGhostForTarget,
+      l = t.unhideGhostForTarget;
+    if (e) {
+      var s = n || i;
+      a();
+      var c =
+          e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e,
+        u = document.elementFromPoint(c.clientX, c.clientY);
+      l(),
+        s &&
+          !s.el.contains(u) &&
+          (r("spill"), this.onSpill({ dragEl: o, putSortable: n }));
+    }
+  }
+  var Jt,
+    te = D(function (n, t, e, o) {
+      if (t.scroll) {
+        var i,
+          r = (n.touches ? n.touches[0] : n).clientX,
+          a = (n.touches ? n.touches[0] : n).clientY,
+          l = t.scrollSensitivity,
+          s = t.scrollSpeed,
+          c = A(),
+          u = !1;
+        Kt !== e &&
+          ((Kt = e),
+          Zt(),
+          (jt = t.scroll),
+          (i = t.scrollFn),
+          !0 === jt && (jt = H(e, !0)));
+        var d = 0,
+          h = jt;
+        do {
+          var f = h,
+            p = X(f),
+            g = p.top,
+            v = p.bottom,
+            m = p.left,
+            b = p.right,
+            y = p.width,
+            w = p.height,
+            E = void 0,
+            D = void 0,
+            S = f.scrollWidth,
+            _ = f.scrollHeight,
+            C = R(f),
+            T = f.scrollLeft,
+            x = f.scrollTop;
+          D =
+            f === c
+              ? ((E =
+                  y < S &&
+                  ("auto" === C.overflowX ||
+                    "scroll" === C.overflowX ||
+                    "visible" === C.overflowX)),
+                w < _ &&
+                  ("auto" === C.overflowY ||
+                    "scroll" === C.overflowY ||
+                    "visible" === C.overflowY))
+              : ((E =
+                  y < S &&
+                  ("auto" === C.overflowX || "scroll" === C.overflowX)),
+                w < _ && ("auto" === C.overflowY || "scroll" === C.overflowY));
+          var M =
+              E &&
+              (Math.abs(b - r) <= l && T + y < S) -
+                (Math.abs(m - r) <= l && !!T),
+            O =
+              D &&
+              (Math.abs(v - a) <= l && x + w < _) -
+                (Math.abs(g - a) <= l && !!x);
+          if (!qt[d]) for (var N = 0; N <= d; N++) qt[N] || (qt[N] = {});
+          (qt[d].vx == M && qt[d].vy == O && qt[d].el === f) ||
+            ((qt[d].el = f),
+            (qt[d].vx = M),
+            (qt[d].vy = O),
+            clearInterval(qt[d].pid),
+            (0 == M && 0 == O) ||
+              ((u = !0),
+              (qt[d].pid = setInterval(
+                function () {
+                  o && 0 === this.layer && Rt.active._onTouchMove(Gt);
+                  var t = qt[this.layer].vy ? qt[this.layer].vy * s : 0,
+                    e = qt[this.layer].vx ? qt[this.layer].vx * s : 0;
+                  ("function" == typeof i &&
+                    "continue" !==
+                      i.call(
+                        Rt.dragged.parentNode[j],
+                        e,
+                        t,
+                        n,
+                        Gt,
+                        qt[this.layer].el
+                      )) ||
+                    L(qt[this.layer].el, e, t);
+                }.bind({ layer: d }),
+                24
+              )))),
+            d++;
+        } while (t.bubbleScroll && h !== c && (h = H(h, !1)));
+        Vt = u;
+      }
+    }, 30);
+  function ee() {}
+  function ne() {}
+  (ee.prototype = {
+    startIndex: null,
+    dragStart: function (t) {
+      var e = t.oldDraggableIndex;
+      this.startIndex = e;
+    },
+    onSpill: function (t) {
+      var e = t.dragEl,
+        n = t.putSortable;
+      this.sortable.captureAnimationState(), n && n.captureAnimationState();
+      var o = m(this.sortable.el, this.startIndex, this.options);
+      o ? this.sortable.el.insertBefore(e, o) : this.sortable.el.appendChild(e),
+        this.sortable.animateAll(),
+        n && n.animateAll();
+    },
+    drop: $t
+  }),
+    a(ee, { pluginName: "revertOnSpill" }),
+    (ne.prototype = {
+      onSpill: function (t) {
+        var e = t.dragEl,
+          n = t.putSortable || this.sortable;
+        n.captureAnimationState(),
+          e.parentNode && e.parentNode.removeChild(e),
+          n.animateAll();
+      },
+      drop: $t
+    }),
+    a(ne, { pluginName: "removeOnSpill" });
+  var oe,
+    ie,
+    re,
+    ae,
+    le,
+    se = [],
+    ce = [],
+    ue = !1,
+    de = !1,
+    he = !1;
+  function fe(o, i) {
+    ce.forEach(function (t, e) {
+      var n = i.children[t.sortableIndex + (o ? Number(e) : 0)];
+      n ? i.insertBefore(t, n) : i.appendChild(t);
+    });
+  }
+  function pe() {
+    se.forEach(function (t) {
+      t !== re && t.parentNode && t.parentNode.removeChild(t);
+    });
+  }
+  return (
+    Rt.mount(
+      new (function () {
+        function t() {
+          for (var t in ((this.defaults = {
+            scroll: !0,
+            scrollSensitivity: 30,
+            scrollSpeed: 10,
+            bubbleScroll: !0
+          }),
+          this))
+            "_" === t.charAt(0) &&
+              "function" == typeof this[t] &&
+              (this[t] = this[t].bind(this));
+        }
+        return (
+          (t.prototype = {
+            dragStarted: function (t) {
+              var e = t.originalEvent;
+              this.sortable.nativeDraggable
+                ? d(document, "dragover", this._handleAutoScroll)
+                : this.options.supportPointer
+                ? d(document, "pointermove", this._handleFallbackAutoScroll)
+                : e.touches
+                ? d(document, "touchmove", this._handleFallbackAutoScroll)
+                : d(document, "mousemove", this._handleFallbackAutoScroll);
+            },
+            dragOverCompleted: function (t) {
+              var e = t.originalEvent;
+              this.options.dragOverBubble ||
+                e.rootEl ||
+                this._handleAutoScroll(e);
+            },
+            drop: function () {
+              this.sortable.nativeDraggable
+                ? s(document, "dragover", this._handleAutoScroll)
+                : (s(document, "pointermove", this._handleFallbackAutoScroll),
+                  s(document, "touchmove", this._handleFallbackAutoScroll),
+                  s(document, "mousemove", this._handleFallbackAutoScroll)),
+                Qt(),
+                Zt(),
+                clearTimeout(f),
+                (f = void 0);
+            },
+            nulling: function () {
+              (Gt = Kt = jt = Vt = Ut = Wt = zt = null), (qt.length = 0);
+            },
+            _handleFallbackAutoScroll: function (t) {
+              this._handleAutoScroll(t, !0);
+            },
+            _handleAutoScroll: function (e, n) {
+              var o = this,
+                i = (e.touches ? e.touches[0] : e).clientX,
+                r = (e.touches ? e.touches[0] : e).clientY,
+                t = document.elementFromPoint(i, r);
+              if (((Gt = e), n || E || w || u)) {
+                te(e, this.options, t, n);
+                var a = H(t, !0);
+                !Vt ||
+                  (Ut && i === Wt && r === zt) ||
+                  (Ut && Qt(),
+                  (Ut = setInterval(function () {
+                    var t = H(document.elementFromPoint(i, r), !0);
+                    t !== a && ((a = t), Zt()), te(e, o.options, t, n);
+                  }, 10)),
+                  (Wt = i),
+                  (zt = r));
+              } else {
+                if (!this.options.bubbleScroll || H(t, !0) === A())
+                  return void Zt();
+                te(e, this.options, H(t, !1), !1);
+              }
+            }
+          }),
+          a(t, { pluginName: "scroll", initializeByDefault: !0 })
+        );
+      })()
+    ),
+    Rt.mount(ne, ee),
+    Rt.mount(
+      new (function () {
+        function t() {
+          this.defaults = { swapClass: "sortable-swap-highlight" };
+        }
+        return (
+          (t.prototype = {
+            dragStart: function (t) {
+              var e = t.dragEl;
+              Jt = e;
+            },
+            dragOverValid: function (t) {
+              var e = t.completed,
+                n = t.target,
+                o = t.onMove,
+                i = t.activeSortable,
+                r = t.changed,
+                a = t.cancel;
+              if (i.options.swap) {
+                var l = this.sortable.el,
+                  s = this.options;
+                if (n && n !== l) {
+                  var c = Jt;
+                  (Jt = !1 !== o(n) ? (k(n, s.swapClass, !0), n) : null),
+                    c && c !== Jt && k(c, s.swapClass, !1);
+                }
+                r(), e(!0), a();
+              }
+            },
+            drop: function (t) {
+              var e = t.activeSortable,
+                n = t.putSortable,
+                o = t.dragEl,
+                i = n || this.sortable,
+                r = this.options;
+              Jt && k(Jt, r.swapClass, !1),
+                Jt &&
+                  (r.swap || (n && n.options.swap)) &&
+                  o !== Jt &&
+                  (i.captureAnimationState(),
+                  i !== e && e.captureAnimationState(),
+                  (function (t, e) {
+                    var n,
+                      o,
+                      i = t.parentNode,
+                      r = e.parentNode;
+                    if (!i || !r || i.isEqualNode(e) || r.isEqualNode(t))
+                      return;
+                    (n = F(t)), (o = F(e)), i.isEqualNode(r) && n < o && o++;
+                    i.insertBefore(e, i.children[n]),
+                      r.insertBefore(t, r.children[o]);
+                  })(o, Jt),
+                  i.animateAll(),
+                  i !== e && e.animateAll());
+            },
+            nulling: function () {
+              Jt = null;
+            }
+          }),
+          a(t, {
+            pluginName: "swap",
+            eventProperties: function () {
+              return { swapItem: Jt };
+            }
+          })
+        );
+      })()
+    ),
+    Rt.mount(
+      new (function () {
+        function t(o) {
+          for (var t in this)
+            "_" === t.charAt(0) &&
+              "function" == typeof this[t] &&
+              (this[t] = this[t].bind(this));
+          o.options.supportPointer
+            ? d(document, "pointerup", this._deselectMultiDrag)
+            : (d(document, "mouseup", this._deselectMultiDrag),
+              d(document, "touchend", this._deselectMultiDrag)),
+            d(document, "keydown", this._checkKeyDown),
+            d(document, "keyup", this._checkKeyUp),
+            (this.defaults = {
+              selectedClass: "sortable-selected",
+              multiDragKey: null,
+              setData: function (t, e) {
+                var n = "";
+                se.length && ie === o
+                  ? se.forEach(function (t, e) {
+                      n += (e ? ", " : "") + t.textContent;
+                    })
+                  : (n = e.textContent),
+                  t.setData("Text", n);
+              }
+            });
+        }
+        return (
+          (t.prototype = {
+            multiDragKeyDown: !1,
+            isMultiDrag: !1,
+            delayStartGlobal: function (t) {
+              var e = t.dragEl;
+              re = e;
+            },
+            delayEnded: function () {
+              this.isMultiDrag = ~se.indexOf(re);
+            },
+            setupClone: function (t) {
+              var e = t.sortable,
+                n = t.cancel;
+              if (this.isMultiDrag) {
+                for (var o = 0; o < se.length; o++)
+                  ce.push(S(se[o])),
+                    (ce[o].sortableIndex = se[o].sortableIndex),
+                    (ce[o].draggable = !1),
+                    (ce[o].style["will-change"] = ""),
+                    k(ce[o], this.options.selectedClass, !1),
+                    se[o] === re && k(ce[o], this.options.chosenClass, !1);
+                e._hideClone(), n();
+              }
+            },
+            clone: function (t) {
+              var e = t.sortable,
+                n = t.rootEl,
+                o = t.dispatchSortableEvent,
+                i = t.cancel;
+              this.isMultiDrag &&
+                (this.options.removeCloneOnHide ||
+                  (se.length && ie === e && (fe(!0, n), o("clone"), i())));
+            },
+            showClone: function (t) {
+              var e = t.cloneNowShown,
+                n = t.rootEl,
+                o = t.cancel;
+              this.isMultiDrag &&
+                (fe(!1, n),
+                ce.forEach(function (t) {
+                  R(t, "display", "");
+                }),
+                e(),
+                (le = !1),
+                o());
+            },
+            hideClone: function (t) {
+              var e = this,
+                n = (t.sortable, t.cloneNowHidden),
+                o = t.cancel;
+              this.isMultiDrag &&
+                (ce.forEach(function (t) {
+                  R(t, "display", "none"),
+                    e.options.removeCloneOnHide &&
+                      t.parentNode &&
+                      t.parentNode.removeChild(t);
+                }),
+                n(),
+                (le = !0),
+                o());
+            },
+            dragStartGlobal: function (t) {
+              t.sortable;
+              !this.isMultiDrag && ie && ie.multiDrag._deselectMultiDrag(),
+                se.forEach(function (t) {
+                  t.sortableIndex = F(t);
+                }),
+                (se = se.sort(function (t, e) {
+                  return t.sortableIndex - e.sortableIndex;
+                })),
+                (he = !0);
+            },
+            dragStarted: function (t) {
+              var e = this,
+                n = t.sortable;
+              if (this.isMultiDrag) {
+                if (
+                  this.options.sort &&
+                  (n.captureAnimationState(), this.options.animation)
+                ) {
+                  se.forEach(function (t) {
+                    t !== re && R(t, "position", "absolute");
+                  });
+                  var o = X(re, !1, !0, !0);
+                  se.forEach(function (t) {
+                    t !== re && _(t, o);
+                  }),
+                    (ue = de = !0);
+                }
+                n.animateAll(function () {
+                  (ue = de = !1),
+                    e.options.animation &&
+                      se.forEach(function (t) {
+                        C(t);
+                      }),
+                    e.options.sort && pe();
+                });
+              }
+            },
+            dragOver: function (t) {
+              var e = t.target,
+                n = t.completed,
+                o = t.cancel;
+              de && ~se.indexOf(e) && (n(!1), o());
+            },
+            revert: function (t) {
+              var e = t.fromSortable,
+                n = t.rootEl,
+                o = t.sortable,
+                i = t.dragRect;
+              1 < se.length &&
+                (se.forEach(function (t) {
+                  o.addAnimationState({ target: t, rect: de ? X(t) : i }),
+                    C(t),
+                    (t.fromRect = i),
+                    e.removeAnimationState(t);
+                }),
+                (de = !1),
+                (function (o, i) {
+                  se.forEach(function (t, e) {
+                    var n = i.children[t.sortableIndex + (o ? Number(e) : 0)];
+                    n ? i.insertBefore(t, n) : i.appendChild(t);
+                  });
+                })(!this.options.removeCloneOnHide, n));
+            },
+            dragOverCompleted: function (t) {
+              var e = t.sortable,
+                n = t.isOwner,
+                o = t.insertion,
+                i = t.activeSortable,
+                r = t.parentEl,
+                a = t.putSortable,
+                l = this.options;
+              if (o) {
+                if (
+                  (n && i._hideClone(),
+                  (ue = !1),
+                  l.animation &&
+                    1 < se.length &&
+                    (de || (!n && !i.options.sort && !a)))
+                ) {
+                  var s = X(re, !1, !0, !0);
+                  se.forEach(function (t) {
+                    t !== re && (_(t, s), r.appendChild(t));
+                  }),
+                    (de = !0);
+                }
+                if (!n)
+                  if ((de || pe(), 1 < se.length)) {
+                    var c = le;
+                    i._showClone(e),
+                      i.options.animation &&
+                        !le &&
+                        c &&
+                        ce.forEach(function (t) {
+                          i.addAnimationState({ target: t, rect: ae }),
+                            (t.fromRect = ae),
+                            (t.thisAnimationDuration = null);
+                        });
+                  } else i._showClone(e);
+              }
+            },
+            dragOverAnimationCapture: function (t) {
+              var e = t.dragRect,
+                n = t.isOwner,
+                o = t.activeSortable;
+              if (
+                (se.forEach(function (t) {
+                  t.thisAnimationDuration = null;
+                }),
+                o.options.animation && !n && o.multiDrag.isMultiDrag)
+              ) {
+                ae = a({}, e);
+                var i = v(re, !0);
+                (ae.top -= i.f), (ae.left -= i.e);
+              }
+            },
+            dragOverAnimationComplete: function () {
+              de && ((de = !1), pe());
+            },
+            drop: function (t) {
+              var e = t.originalEvent,
+                n = t.rootEl,
+                o = t.parentEl,
+                i = t.sortable,
+                r = t.dispatchSortableEvent,
+                a = t.oldIndex,
+                l = t.putSortable,
+                s = l || this.sortable;
+              if (e) {
+                var c = this.options,
+                  u = o.children;
+                if (!he)
+                  if (
+                    (c.multiDragKey &&
+                      !this.multiDragKeyDown &&
+                      this._deselectMultiDrag(),
+                    k(re, c.selectedClass, !~se.indexOf(re)),
+                    ~se.indexOf(re))
+                  )
+                    se.splice(se.indexOf(re), 1),
+                      (oe = null),
+                      N({
+                        sortable: i,
+                        rootEl: n,
+                        name: "deselect",
+                        targetEl: re,
+                        originalEvt: e
+                      });
+                  else {
+                    if (
+                      (se.push(re),
+                      N({
+                        sortable: i,
+                        rootEl: n,
+                        name: "select",
+                        targetEl: re,
+                        originalEvt: e
+                      }),
+                      e.shiftKey && oe && i.el.contains(oe))
+                    ) {
+                      var d,
+                        h,
+                        f = F(oe),
+                        p = F(re);
+                      if (~f && ~p && f !== p)
+                        for (
+                          d = f < p ? ((h = f), p) : ((h = p), f + 1);
+                          h < d;
+                          h++
+                        )
+                          ~se.indexOf(u[h]) ||
+                            (k(u[h], c.selectedClass, !0),
+                            se.push(u[h]),
+                            N({
+                              sortable: i,
+                              rootEl: n,
+                              name: "select",
+                              targetEl: u[h],
+                              originalEvt: e
+                            }));
+                    } else oe = re;
+                    ie = s;
+                  }
+                if (he && this.isMultiDrag) {
+                  if ((o[j].options.sort || o !== n) && 1 < se.length) {
+                    var g = X(re),
+                      v = F(re, ":not(." + this.options.selectedClass + ")");
+                    if (
+                      (!ue && c.animation && (re.thisAnimationDuration = null),
+                      s.captureAnimationState(),
+                      !ue &&
+                        (c.animation &&
+                          ((re.fromRect = g),
+                          se.forEach(function (t) {
+                            if (((t.thisAnimationDuration = null), t !== re)) {
+                              var e = de ? X(t) : g;
+                              (t.fromRect = e),
+                                s.addAnimationState({ target: t, rect: e });
+                            }
+                          })),
+                        pe(),
+                        se.forEach(function (t) {
+                          u[v] ? o.insertBefore(t, u[v]) : o.appendChild(t),
+                            v++;
+                        }),
+                        a === F(re)))
+                    ) {
+                      var m = !1;
+                      se.forEach(function (t) {
+                        t.sortableIndex === F(t) || (m = !0);
+                      }),
+                        m && r("update");
+                    }
+                    se.forEach(function (t) {
+                      C(t);
+                    }),
+                      s.animateAll();
+                  }
+                  ie = s;
+                }
+                (n === o || (l && "clone" !== l.lastPutMode)) &&
+                  ce.forEach(function (t) {
+                    t.parentNode && t.parentNode.removeChild(t);
+                  });
+              }
+            },
+            nullingGlobal: function () {
+              (this.isMultiDrag = he = !1), (ce.length = 0);
+            },
+            destroyGlobal: function () {
+              this._deselectMultiDrag(),
+                s(document, "pointerup", this._deselectMultiDrag),
+                s(document, "mouseup", this._deselectMultiDrag),
+                s(document, "touchend", this._deselectMultiDrag),
+                s(document, "keydown", this._checkKeyDown),
+                s(document, "keyup", this._checkKeyUp);
+            },
+            _deselectMultiDrag: function (t) {
+              if (
+                !(
+                  (void 0 !== he && he) ||
+                  ie !== this.sortable ||
+                  (t &&
+                    P(
+                      t.target,
+                      this.options.draggable,
+                      this.sortable.el,
+                      !1
+                    )) ||
+                  (t && 0 !== t.button)
+                )
+              )
+                for (; se.length; ) {
+                  var e = se[0];
+                  k(e, this.options.selectedClass, !1),
+                    se.shift(),
+                    N({
+                      sortable: this.sortable,
+                      rootEl: this.sortable.el,
+                      name: "deselect",
+                      targetEl: e,
+                      originalEvt: t
+                    });
+                }
+            },
+            _checkKeyDown: function (t) {
+              t.key === this.options.multiDragKey &&
+                (this.multiDragKeyDown = !0);
+            },
+            _checkKeyUp: function (t) {
+              t.key === this.options.multiDragKey &&
+                (this.multiDragKeyDown = !1);
+            }
+          }),
+          a(t, {
+            pluginName: "multiDrag",
+            utils: {
+              select: function (t) {
+                var e = t.parentNode[j];
+                e &&
+                  e.options.multiDrag &&
+                  !~se.indexOf(t) &&
+                  (ie &&
+                    ie !== e &&
+                    (ie.multiDrag._deselectMultiDrag(), (ie = e)),
+                  k(t, e.options.selectedClass, !0),
+                  se.push(t));
+              },
+              deselect: function (t) {
+                var e = t.parentNode[j],
+                  n = se.indexOf(t);
+                e &&
+                  e.options.multiDrag &&
+                  ~n &&
+                  (k(t, e.options.selectedClass, !1), se.splice(n, 1));
+              }
+            },
+            eventProperties: function () {
+              var n = this,
+                o = [],
+                i = [];
+              return (
+                se.forEach(function (t) {
+                  var e;
+                  o.push({ multiDragElement: t, index: t.sortableIndex }),
+                    (e =
+                      de && t !== re
+                        ? -1
+                        : de
+                        ? F(t, ":not(." + n.options.selectedClass + ")")
+                        : F(t)),
+                    i.push({ multiDragElement: t, index: e });
+                }),
+                {
+                  items: e(se),
+                  clones: [].concat(ce),
+                  oldIndicies: o,
+                  newIndicies: i
+                }
+              );
+            },
+            optionListeners: {
+              multiDragKey: function (t) {
+                return (
+                  "ctrl" === (t = t.toLowerCase())
+                    ? (t = "Control")
+                    : 1 < t.length &&
+                      (t = t.charAt(0).toUpperCase() + t.substr(1)),
+                  t
+                );
+              }
+            }
+          })
+        );
+      })()
+    ),
+    Rt
+  );
+});

+ 10 - 17
src/views/components/button/index.vue

@@ -1,24 +1,17 @@
+<script setup lang="ts">
+import { ref } from "vue";
+
+const url = ref(
+  process.env.NODE_ENV === "production"
+    ? "/manages/html/button.html"
+    : "/html/button.html"
+);
+</script>
+
 <template>
   <iframe :src="url" frameborder="0" class="iframe"></iframe>
 </template>
 
-<script lang="ts">
-import { ref } from "vue";
-export default {
-  name: "reButton",
-  setup() {
-    const url = ref(
-      process.env.NODE_ENV === "production"
-        ? "/manages/html/button.html"
-        : "/html/button.html"
-    );
-    return {
-      url
-    };
-  }
-};
-</script>
-
 <style scoped>
 .iframe {
   width: 98%;

+ 6 - 17
src/views/components/contextmenu/index.vue

@@ -1,3 +1,9 @@
+<script setup lang="ts">
+import basic from "./basic.vue";
+import menuGroup from "./menuGroup.vue";
+import menuDynamic from "./menuDynamic.vue";
+</script>
+
 <template>
   <div style="margin: 10px">
     <el-row :gutter="24">
@@ -16,20 +22,3 @@
     </el-row>
   </div>
 </template>
-
-<script lang="ts">
-import basic from "./basic.vue";
-import menuGroup from "./menuGroup.vue";
-import menuDynamic from "./menuDynamic.vue";
-export default {
-  name: "reContextmenu",
-  components: {
-    basic,
-    menuGroup,
-    menuDynamic
-  },
-  setup() {
-    return {};
-  }
-};
-</script>

+ 4 - 15
src/views/components/count-to/index.vue

@@ -1,3 +1,7 @@
+<script setup lang="ts">
+import { ReNormalCountTo, ReboundCountTo } from "/@/components/ReCountTo";
+</script>
+
 <template>
   <div style="margin: 10px">
     <el-row :gutter="24">
@@ -30,21 +34,6 @@
   </div>
 </template>
 
-<script lang="ts">
-import { ReNormalCountTo, ReboundCountTo } from "/@/components/ReCountTo";
-
-export default {
-  name: "reCountTo",
-  components: {
-    ReNormalCountTo,
-    ReboundCountTo
-  },
-  setup() {
-    return {};
-  }
-};
-</script>
-
 <style lang="scss" scoped>
 .flex {
   display: flex;

+ 24 - 38
src/views/components/cropping/index.vue

@@ -1,3 +1,27 @@
+<script setup lang="ts">
+import { ref, nextTick, getCurrentInstance } from "vue";
+import Cropper from "/@/components/ReCropper";
+import img from "./picture.jpeg";
+
+const instance = getCurrentInstance();
+let info = ref<object>("");
+let cropperImg = ref<string>("");
+
+const onCropper = (): void => {
+  nextTick(() => {
+    instance.refs.refCropper.cropper.getCroppedCanvas().toBlob(blob => {
+      let fileReader: FileReader = new FileReader();
+      fileReader.onloadend = (e: ProgressEvent) => {
+        // @ts-ignore
+        cropperImg.value = e.target.result;
+        info.value = instance.refs.refCropper.cropper.getData();
+      };
+      fileReader.readAsDataURL(blob);
+    }, "image/jpeg");
+  });
+};
+</script>
+
 <template>
   <div style="margin: 10px">
     <div class="cropper-container">
@@ -9,44 +33,6 @@
   </div>
 </template>
 
-<script lang="ts">
-import { ref, nextTick, getCurrentInstance } from "vue";
-import Cropper from "/@/components/ReCropper";
-import img from "./picture.jpeg";
-
-export default {
-  name: "reCropping",
-  components: {
-    Cropper
-  },
-  setup() {
-    const instance = getCurrentInstance();
-    let info = ref("");
-    let cropperImg = ref("");
-
-    const onCropper = (): void => {
-      nextTick(() => {
-        instance.refs.refCropper.cropper.getCroppedCanvas().toBlob(blob => {
-          let fileReader: FileReader = new FileReader();
-          fileReader.onloadend = (e: any) => {
-            cropperImg.value = e.target.result;
-            info.value = instance.refs.refCropper.cropper.getData();
-          };
-          fileReader.readAsDataURL(blob);
-        }, "image/jpeg");
-      });
-    };
-
-    return {
-      img,
-      info,
-      cropperImg,
-      onCropper
-    };
-  }
-};
-</script>
-
 <style scoped>
 .cropper-container {
   display: flex;

+ 48 - 58
src/views/components/draggable/index.vue

@@ -1,3 +1,51 @@
+<script setup lang="ts">
+import { ref, onMounted } from "vue";
+import draggable from "vuedraggable/src/vuedraggable";
+
+let gridLists = ref<Array<Object>>([
+  { grid: "cn", num: 1 },
+  { grid: "cn", num: 2 },
+  { grid: "cn", num: 3 },
+  { grid: "cn", num: 4 },
+  { grid: "cn", num: 5 },
+  { grid: "cn", num: 6 },
+  { grid: "cn", num: 7 },
+  { grid: "cn", num: 8 },
+  { grid: "cn", num: 9 }
+]);
+
+let lists = ref<Array<Object>>([
+  { people: "cn", id: 1, name: "www.itxst.com" },
+  { people: "cn", id: 2, name: "www.baidu.com" },
+  { people: "cn", id: 3, name: "www.taobao.com" },
+  { people: "cn", id: 4, name: "www.google.com" }
+]);
+
+let cutLists = ref<Array<Object>>([
+  { people: "cn", id: 1, name: "cut1" },
+  { people: "cn", id: 2, name: "cut2" },
+  { people: "cn", id: 3, name: "cut3" },
+  { people: "cn", id: 4, name: "cut4" }
+]);
+
+const change = (evt): void => {
+  console.log("evt: ", evt);
+};
+
+onMounted(() => {
+  // 使用原生sortable实现元素位置切换
+  // @ts-ignore
+  // eslint-disable-next-line no-undef
+  new Sortable(document.querySelector(".cut-container"), {
+    swap: true,
+    forceFallback: true,
+    chosenClass: "chosen",
+    swapClass: "highlight",
+    animation: 300
+  });
+});
+</script>
+
 <template>
   <div class="drag-container">
     <!-- grid列表拖拽 -->
@@ -72,64 +120,6 @@
   </div>
 </template>
 
-<script lang="ts">
-import draggable from "vuedraggable/src/vuedraggable";
-import { reactive, toRefs, onMounted } from "vue";
-export default {
-  name: "reDraggable",
-  components: { draggable },
-  setup() {
-    const myArray = reactive({
-      gridLists: [
-        { grid: "cn", num: 1 },
-        { grid: "cn", num: 2 },
-        { grid: "cn", num: 3 },
-        { grid: "cn", num: 4 },
-        { grid: "cn", num: 5 },
-        { grid: "cn", num: 6 },
-        { grid: "cn", num: 7 },
-        { grid: "cn", num: 8 },
-        { grid: "cn", num: 9 }
-      ],
-      lists: [
-        { people: "cn", id: 1, name: "www.itxst.com" },
-        { people: "cn", id: 2, name: "www.baidu.com" },
-        { people: "cn", id: 3, name: "www.taobao.com" },
-        { people: "cn", id: 4, name: "www.google.com" }
-      ],
-      cutLists: [
-        { people: "cn", id: 1, name: "cut1" },
-        { people: "cn", id: 2, name: "cut2" },
-        { people: "cn", id: 3, name: "cut3" },
-        { people: "cn", id: 4, name: "cut4" }
-      ]
-    });
-
-    const change = (evt): void => {
-      console.log("evt: ", evt);
-    };
-
-    onMounted(() => {
-      // 使用原生sortable实现元素位置切换
-      // @ts-ignore
-      // eslint-disable-next-line no-undef
-      new Sortable(document.querySelector(".cut-container"), {
-        swap: true,
-        forceFallback: true,
-        chosenClass: "chosen",
-        swapClass: "highlight",
-        animation: 300
-      });
-    });
-
-    return {
-      ...toRefs(myArray),
-      change
-    };
-  }
-};
-</script>
-
 <style lang="scss" scoped>
 /* grid列表拖拽 */
 .grid-container {

+ 4 - 13
src/views/components/map/index.vue

@@ -1,22 +1,13 @@
+<script setup lang="ts">
+import { Amap } from "/@/components/ReMap";
+</script>
+
 <template>
   <div class="map">
     <Amap />
   </div>
 </template>
 
-<script lang="ts">
-import { Amap } from "/@/components/ReMap";
-export default {
-  name: "reMap",
-  components: {
-    Amap
-  },
-  setup() {
-    return {};
-  }
-};
-</script>
-
 <style scoped>
 .map {
   width: 100%;

+ 48 - 62
src/views/components/seamless-scroll/index.vue

@@ -1,3 +1,51 @@
+<script setup lang="ts">
+import { ref, unref } from "vue";
+import { templateRef } from "@vueuse/core";
+import SeamlessScroll from "/@/components/ReSeamlessScroll";
+
+// eslint-disable-next-line no-undef
+const scroll = templateRef<ElRef | null>("scroll", null);
+
+let listData = ref<Array<Object>>([
+  {
+    title: "无缝滚动第一行无缝滚动第一行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第二行无缝滚动第二行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第三行无缝滚动第三行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第四行无缝滚动第四行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第五行无缝滚动第五行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第六行无缝滚动第六行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第七行无缝滚动第七行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第八行无缝滚动第八行!!!!!!!!!!"
+  },
+  {
+    title: "无缝滚动第九行无缝滚动第九行!!!!!!!!!!"
+  }
+]);
+
+let classOption = ref<Object>({
+  direction: "top"
+});
+
+function changeDirection(val) {
+  unref(scroll).reset();
+  unref(classOption).direction = val;
+}
+</script>
+
 <template>
   <el-space wrap>
     <el-card class="box-card">
@@ -60,68 +108,6 @@
   </el-space>
 </template>
 
-<script lang="ts">
-import { ref, unref } from "vue";
-import { templateRef } from "@vueuse/core";
-
-import SeamlessScroll from "/@/components/ReSeamlessScroll";
-export default {
-  name: "reSeamlessScroll",
-  components: {
-    SeamlessScroll
-  },
-  setup() {
-    // eslint-disable-next-line no-undef
-    const scroll = templateRef<ElRef | null>("scroll", null);
-
-    let listData = ref([
-      {
-        title: "无缝滚动第一行无缝滚动第一行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第二行无缝滚动第二行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第三行无缝滚动第三行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第四行无缝滚动第四行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第五行无缝滚动第五行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第六行无缝滚动第六行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第七行无缝滚动第七行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第八行无缝滚动第八行!!!!!!!!!!"
-      },
-      {
-        title: "无缝滚动第九行无缝滚动第九行!!!!!!!!!!"
-      }
-    ]);
-
-    let classOption = ref({
-      direction: "top"
-    });
-
-    function changeDirection(val) {
-      unref(scroll).reset();
-      unref(classOption).direction = val;
-    }
-
-    return {
-      listData,
-      classOption,
-      changeDirection
-    };
-  }
-};
-</script>
-
 <style lang="scss" scoped>
 .box-card {
   margin: 10px;

+ 23 - 35
src/views/components/selector/index.vue

@@ -1,3 +1,26 @@
+<script setup lang="ts">
+import { ref } from "vue";
+import Selector from "/@/components/ReSelector";
+
+let selectRange = ref<string>("");
+let dataLists = ref<Array<Object>>([
+  {
+    title: "基本使用",
+    echo: [],
+    disabled: false
+  },
+  {
+    title: "回显模式",
+    echo: [2, 7],
+    disabled: true
+  }
+]);
+
+const selectedVal = ({ left, right }): void => {
+  selectRange.value = `${left}-${right}`;
+};
+</script>
+
 <template>
   <div>
     <el-card
@@ -21,38 +44,3 @@
     </el-card>
   </div>
 </template>
-
-<script lang="ts">
-import { ref } from "vue";
-import Selector from "/@/components/ReSelector";
-
-export default {
-  name: "reSelector",
-  components: { Selector },
-  setup() {
-    let selectRange = ref(null);
-    let dataLists = ref([
-      {
-        title: "基本使用",
-        echo: [],
-        disabled: false
-      },
-      {
-        title: "回显模式",
-        echo: [2, 7],
-        disabled: true
-      }
-    ]);
-
-    const selectedVal = ({ left, right }) => {
-      selectRange.value = `${left}-${right}`;
-    };
-
-    return {
-      selectedVal,
-      selectRange,
-      dataLists
-    };
-  }
-};
-</script>

+ 17 - 29
src/views/components/split-pane/index.vue

@@ -1,3 +1,20 @@
+<script setup lang="ts">
+import splitpane, { ContextProps } from "/@/components/ReSplitPane";
+import { reactive } from "vue";
+
+const settingLR: ContextProps = reactive({
+  minPercent: 20,
+  defaultPercent: 40,
+  split: "vertical"
+});
+
+const settingTB: ContextProps = reactive({
+  minPercent: 20,
+  defaultPercent: 40,
+  split: "horizontal"
+});
+</script>
+
 <template>
   <div class="split-pane">
     <splitpane :splitSet="settingLR">
@@ -22,35 +39,6 @@
   </div>
 </template>
 
-<script lang="ts">
-import splitpane, { ContextProps } from "/@/components/ReSplitPane";
-import { reactive } from "vue";
-export default {
-  name: "reSplitPane",
-  components: {
-    splitpane
-  },
-  setup() {
-    const settingLR: ContextProps = reactive({
-      minPercent: 20,
-      defaultPercent: 40,
-      split: "vertical"
-    });
-
-    const settingTB: ContextProps = reactive({
-      minPercent: 20,
-      defaultPercent: 40,
-      split: "horizontal"
-    });
-
-    return {
-      settingLR,
-      settingTB
-    };
-  }
-};
-</script>
-
 <style lang="scss" scoped>
 $W: 100%;
 $H: 80vh;

+ 20 - 25
src/views/components/video/index.vue

@@ -1,8 +1,4 @@
-<template>
-  <div id="mse"></div>
-</template>
-
-<script lang="ts">
+<script setup lang="ts">
 import { onMounted } from "vue";
 import Player from "xgplayer/dist/simple_player";
 import volume from "xgplayer/dist/controls/volume";
@@ -10,28 +6,27 @@ import playbackRate from "xgplayer/dist/controls/playbackRate";
 import screenShot from "xgplayer/dist/controls/screenShot";
 import { deviceDetection } from "/@/utils/deviceDetection";
 
-export default {
-  name: "reVideo",
-  setup() {
-    onMounted(() => {
-      new Player({
-        id: "mse",
-        autoplay: false,
-        screenShot: true,
-        url: "https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4",
-        poster:
-          "https://s2.pstatp.com/cdn/expire-1-M/byted-player-videos/1.0.0/poster.jpg",
-        fluid: deviceDetection(),
-        controlPlugins: [volume, playbackRate, screenShot],
-        playbackRate: [0.5, 0.75, 1, 1.5, 2] //传入倍速可选数组
-      });
-    });
-    return {};
-  }
-};
+onMounted(() => {
+  new Player({
+    id: "mse",
+    autoplay: false,
+    screenShot: true,
+    url: "https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4",
+    poster:
+      "https://s2.pstatp.com/cdn/expire-1-M/byted-player-videos/1.0.0/poster.jpg",
+    fluid: deviceDetection(),
+    controlPlugins: [volume, playbackRate, screenShot],
+    //传入倍速可选数组
+    playbackRate: [0.5, 0.75, 1, 1.5, 2]
+  });
+});
 </script>
 
-<style lang="scss" scoped>
+<template>
+  <div id="mse"></div>
+</template>
+
+<style scoped>
 #mse {
   flex: auto;
 }

+ 1 - 1
src/views/permission/button/index.vue

@@ -2,7 +2,7 @@
 import { ref } from "vue";
 import { storageSession } from "/@/utils/storage";
 
-const auth = ref(storageSession.getItem("info").username || "admin");
+const auth = ref<Boolean>(storageSession.getItem("info").username || "admin");
 
 function changRole(value) {
   storageSession.setItem("info", {

+ 1 - 1
src/views/permission/page/index.vue

@@ -2,7 +2,7 @@
 import { ref, unref } from "vue";
 import { storageSession } from "/@/utils/storage";
 
-let purview: string = ref(storageSession.getItem("info").username);
+let purview = ref<string>(storageSession.getItem("info").username);
 
 function changRole() {
   if (unref(purview) === "admin") {

+ 24 - 24
types/global.d.ts

@@ -16,53 +16,53 @@ declare global {
     };
     lastBuildTime: string;
   };
-  declare interface Window {
+  interface Window {
     // Global vue app instance
     __APP__: App<Element>;
-    webkitCancelAnimationFrame: (id?: any) => any;
-    webkitRequestAnimationFrame: (id?: any) => any;
-    mozCancelAnimationFrame: (id?: any) => any;
-    oCancelAnimationFrame: (id?: any) => any;
-    msCancelAnimationFrame: (id?: any) => any;
-    mozRequestAnimationFrame: (id?: any) => any;
-    oRequestAnimationFrame: (id?: any) => any;
-    msRequestAnimationFrame: (id?: any) => any;
+    webkitCancelAnimationFrame: (handle: number) => void;
+    webkitRequestAnimationFrame: (callback: FrameRequestCallback) => number;
+    mozCancelAnimationFrame: (id?: string) => any;
+    oCancelAnimationFrame: (id?: string) => any;
+    msCancelAnimationFrame: (id?: string) => any;
+    mozRequestAnimationFrame: (id?: string) => any;
+    oRequestAnimationFrame: (id?: string) => any;
+    msRequestAnimationFrame: (id?: string) => any;
   }
 
   // vue
-  declare type PropType<T> = VuePropType<T>;
+  type PropType<T> = VuePropType<T>;
 
-  export type Writable<T> = {
+  type Writable<T> = {
     -readonly [P in keyof T]: T[P];
   };
 
-  declare type Nullable<T> = T | null;
-  declare type NonNullable<T> = T extends null | undefined ? never : T;
-  declare type Recordable<T = any> = Record<string, T>;
-  declare type ReadonlyRecordable<T = any> = {
+  type Nullable<T> = T | null;
+  type NonNullable<T> = T extends null | undefined ? never : T;
+  type Recordable<T = any> = Record<string, T>;
+  type ReadonlyRecordable<T = any> = {
     readonly [key: string]: T;
   };
-  declare type Indexable<T = any> = {
+  type Indexable<T = any> = {
     [key: string]: T;
   };
-  declare type DeepPartial<T> = {
+  type DeepPartial<T> = {
     [P in keyof T]?: DeepPartial<T[P]>;
   };
-  declare type TimeoutHandle = ReturnType<typeof setTimeout>;
-  declare type IntervalHandle = ReturnType<typeof setInterval>;
+  type TimeoutHandle = ReturnType<typeof setTimeout>;
+  type IntervalHandle = ReturnType<typeof setInterval>;
 
-  declare interface ChangeEvent extends Event {
+  interface ChangeEvent extends Event {
     target: HTMLInputElement;
   }
 
-  declare interface WheelEvent {
+  interface WheelEvent {
     path?: EventTarget[];
   }
   interface ImportMetaEnv extends ViteEnv {
     __: unknown;
   }
 
-  declare interface ViteEnv {
+  interface ViteEnv {
     VITE_PORT: number;
     VITE_USE_MOCK: boolean;
     VITE_USE_PWA: boolean;
@@ -79,9 +79,9 @@ declare global {
     VITE_GENERATE_UI: string;
   }
 
-  declare function parseInt(s: string | number, radix?: number): number;
+  function parseInt(s: string | number, radix?: number): number;
 
-  declare function parseFloat(string: string | number): number;
+  function parseFloat(string: string | number): number;
 
   namespace JSX {
     // tslint:disable no-empty-interface

+ 5 - 0
yarn.lock

@@ -3865,6 +3865,11 @@ snake-case@^3.0.4:
     dot-case "^3.0.4"
     tslib "^2.0.3"
 
+sortablejs@1.13.0:
+  version "1.13.0"
+  resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz#3ab2473f8c69ca63569e80b1cd1b5669b51269e9"
+  integrity sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg==
+
 sortablejs@1.14.0:
   version "1.14.0"
   resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8"