function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } /*! Sortable 1.15.2 - MIT | git://github.com/SortableJS/Sortable.git */ !function (t, e) { "object" == (typeof exports === "undefined" ? "undefined" : _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 e(e, t) { var n, o = Object.keys(e); return Object.getOwnPropertySymbols && (n = Object.getOwnPropertySymbols(e), t && (n = n.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable; })), o.push.apply(o, n)), o; } function I(o) { for (var t = 1; t < arguments.length; t++) { var i = null != arguments[t] ? arguments[t] : {}; t % 2 ? e(Object(i), !0).forEach(function (t) { var e, n; e = o, t = i[n = t], n in e ? Object.defineProperty(e, n, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[n] = t; }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(i)) : e(Object(i)).forEach(function (t) { Object.defineProperty(o, t, Object.getOwnPropertyDescriptor(i, t)); }); } return o; } 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, o = arguments[e]; for (n in o) { Object.prototype.hasOwnProperty.call(o, n) && (t[n] = o[n]); } } return t; }).apply(this, arguments); } function i(t, e) { if (null == t) return {}; var n, o = function (t, e) { if (null == t) return {}; for (var n, o = {}, i = Object.keys(t), r = 0; r < i.length; r++) { n = i[r], 0 <= e.indexOf(n) || (o[n] = t[n]); } return o; }(t, e); if (Object.getOwnPropertySymbols) for (var i = Object.getOwnPropertySymbols(t), r = 0; r < i.length; r++) { n = i[r], 0 <= e.indexOf(n) || Object.prototype.propertyIsEnumerable.call(t, n) && (o[n] = t[n]); } return o; } function r(t) { return function (t) { if (Array.isArray(t)) return l(t); }(t) || function (t) { if ("undefined" != typeof Symbol && null != t[Symbol.iterator] || null != t["@@iterator"]) return Array.from(t); }(t) || function (t, e) { if (t) { if ("string" == typeof t) return l(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); return "Map" === (n = "Object" === n && t.constructor ? t.constructor.name : n) || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? l(t, e) : void 0; } }(t) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function l(t, e) { (null == e || e > t.length) && (e = t.length); for (var n = 0, o = new Array(e); n < e; n++) { o[n] = t[n]; } return o; } function t(t) { if ("undefined" != typeof window && window.navigator) return !!navigator.userAgent.match(t); } var y = t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), w = t(/Edge/i), s = t(/firefox/i), u = t(/safari/i) && !t(/chrome/i) && !t(/android/i), n = t(/iP(ad|od|hone)/i), c = t(/chrome/i) && t(/android/i), d = { capture: !1, passive: !1 }; function h(t, e, n) { t.addEventListener(e, n, !y && d); } function f(t, e, n) { t.removeEventListener(e, n, !y && d); } function p(t, e) { if (e && (">" === 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; } } function P(t, e, n, o) { if (t) { n = n || document; do { if (null != e && (">" !== e[0] || t.parentNode === n) && p(t, e) || o && t === n) return t; } while (t !== n && (t = (i = t).host && i !== document && i.host.nodeType ? i.host : i.parentNode)); } var i; return null; } var g, m = /\s+/g; function k(t, e, n) { var o; t && e && (t.classList ? t.classList[n ? "add" : "remove"](e) : (o = (" " + t.className + " ").replace(m, " ").replace(" " + e + " ", " "), t.className = (o + (n ? " " + e : "")).replace(m, " "))); } 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]; o[e = !(e in o || -1 !== e.indexOf("webkit")) ? "-webkit-" + e : 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"); } while ((o && "none" !== o && (n = o + " " + n), !e && (t = t.parentNode))); var i = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; return i && new i(n); } function b(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 O() { 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 = t !== window && t.parentNode && t !== O() ? (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); if ((e || n) && t !== window && (i = i || t.parentNode, !y)) 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); return o && t !== window && (o = (e = v(i || t)) && e.a, t = e && e.d, e && (s = (a /= t) + (u /= t), c = (l /= o) + (d /= o))), { top: a, left: l, bottom: s, right: c, width: d, height: u }; } } function Y(t, e, n) { for (var o = M(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 === O()) break; o = M(o, !1); } return !1; } function B(t, e, n, o) { for (var i = 0, r = 0, a = t.children; r < a.length;) { if ("none" !== a[r].style.display && a[r] !== Ft.ghost && (o || a[r] !== Ft.dragged) && P(a[r], n.draggable, t, !1)) { if (i === e) return a[r]; i++; } r++; } return null; } function F(t, e) { for (var n = t.lastElementChild; n && (n === Ft.ghost || "none" === R(n, "display") || e && !p(n, e));) { n = n.previousElementSibling; } return n || null; } function j(t, e) { var n = 0; if (!t || !t.parentNode) return -1; for (; t = t.previousElementSibling;) { "TEMPLATE" === t.nodeName.toUpperCase() || t === Ft.clone || e && !p(t, e) || n++; } return n; } function E(t) { var e = 0, n = 0, o = O(); if (t) do { var i = v(t), r = i.a, i = i.d; } while ((e += t.scrollLeft * r, n += t.scrollTop * i, t !== o && (t = t.parentNode))); return [e, n]; } function M(t, e) { if (!t || !t.getBoundingClientRect) return O(); 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 O(); if (o || e) return n; o = !0; } } } while (n = n.parentNode); return O(); } function D(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 S(e, n) { return function () { var t; g || (1 === (t = arguments).length ? e.call(this, t[0]) : e.apply(this, t), g = setTimeout(function () { g = void 0; }, n)); }; } function H(t, e, n) { t.scrollLeft += e, t.scrollTop += n; } function _(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 C(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 T(t) { R(t, "position", ""), R(t, "top", ""), R(t, "left", ""), R(t, "width", ""), R(t, "height", ""); } function L(n, o, i) { var r = {}; return Array.from(n.children).forEach(function (t) { var e; P(t, o.draggable, n, !1) && !t.animated && t !== i && (e = X(t), r.left = Math.min(null !== (t = r.left) && void 0 !== t ? t : 1 / 0, e.left), r.top = Math.min(null !== (t = r.top) && void 0 !== t ? t : 1 / 0, e.top), r.right = Math.max(null !== (t = r.right) && void 0 !== t ? t : -1 / 0, e.right), r.bottom = Math.max(null !== (t = r.bottom) && void 0 !== t ? t : -1 / 0, e.bottom)); }), r.width = r.right - r.left, r.height = r.bottom - r.top, r.x = r.left, r.y = r.top, r; } var K = "Sortable" + new Date().getTime(); function x() { var e, o = []; return { captureAnimationState: function captureAnimationState() { o = [], this.options.animation && [].slice.call(this.el.children).forEach(function (t) { var e, n; "none" !== R(t, "display") && t !== Ft.ghost && (o.push({ target: t, rect: X(t) }), e = I({}, o[o.length - 1].rect), !t.thisAnimationDuration || (n = v(t, !0)) && (e.top -= n.f, e.left -= n.e), t.fromRect = e); }); }, addAnimationState: function addAnimationState(t) { o.push(t); }, removeAnimationState: function removeAnimationState(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 animateAll(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 && D(r, i) && !D(o, i) && (l.top - i.top) / (l.left - i.left) == (o.top - i.top) / (o.left - i.left) && (t = l, s = r, r = a, a = c.options, e = Math.sqrt(Math.pow(s.top - t.top, 2) + Math.pow(s.left - t.left, 2)) / Math.sqrt(Math.pow(s.top - r.top, 2) + Math.pow(s.left - r.left, 2)) * a.animation), D(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 animate(t, e, n, o) { var i, r; o && (R(t, "transition", ""), R(t, "transform", ""), i = (r = v(this.el)) && r.a, r = r && r.d, i = (e.left - n.left) / (i || 1), r = (e.top - n.top) / (r || 1), t.animatingX = !!i, t.animatingY = !!r, R(t, "transform", "translate3d(" + i + "px," + r + "px,0)"), this.forRepaintDummy = t.offsetWidth, 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 A = [], N = { initializeByDefault: !0 }, W = { mount: function mount(e) { for (var t in N) { !N.hasOwnProperty(t) || t in e || (e[t] = N[t]); } A.forEach(function (t) { if (t.pluginName === e.pluginName) throw "Sortable: Cannot mount plugin ".concat(e.pluginName, " more than once"); }), A.push(e); }, pluginEvent: function pluginEvent(e, n, o) { var t = this; this.eventCanceled = !1, o.cancel = function () { t.eventCanceled = !0; }; var i = e + "Global"; A.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 initializePlugins(n, o, i, t) { for (var e in A.forEach(function (t) { var e = t.pluginName; (n.options[e] || t.initializeByDefault) && ((t = new t(n, o, n.options)).sortable = n, t.options = n.options, n[e] = t, a(i, t.defaults)); }), n.options) { var r; n.options.hasOwnProperty(e) && void 0 !== (r = this.modifyOption(n, e, n.options[e])) && (n.options[e] = r); } }, getEventProperties: function getEventProperties(e, n) { var o = {}; return A.forEach(function (t) { "function" == typeof t.eventProperties && a(o, t.eventProperties.call(n[t.pluginName], e)); }), o; }, modifyOption: function modifyOption(e, n, o) { var i; return A.forEach(function (t) { e[t.pluginName] && t.optionListeners && "function" == typeof t.optionListeners[n] && (i = t.optionListeners[n].call(e[t.pluginName], o)); }), i; } }; function z(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[K]) { var g, m = e.options, t = "on" + o.charAt(0).toUpperCase() + o.substr(1); !window.CustomEvent || y || w ? (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 v, b = I(I({}, p), W.getEventProperties(o, e)); for (v in b) { g[v] = b[v]; } n && n.dispatchEvent(g), m[t] && m[t].call(e, g); } } function G(t, e) { var n = (o = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).evt, o = i(o, U); W.pluginEvent.bind(Ft)(t, e, I({ dragEl: V, parentEl: Z, ghostEl: $, rootEl: Q, nextEl: J, lastDownEl: tt, cloneEl: et, cloneHidden: nt, dragStarted: gt, putSortable: st, activeSortable: Ft.active, originalEvent: n, oldIndex: ot, oldDraggableIndex: rt, newIndex: it, newDraggableIndex: at, hideGhostForTarget: Rt, unhideGhostForTarget: Xt, cloneNowHidden: function cloneNowHidden() { nt = !0; }, cloneNowShown: function cloneNowShown() { nt = !1; }, dispatchSortableEvent: function dispatchSortableEvent(t) { q({ sortable: e, name: t, originalEvent: n }); } }, o)); } var U = ["evt"]; function q(t) { z(I({ putSortable: st, cloneEl: et, targetEl: V, rootEl: Q, oldIndex: ot, oldDraggableIndex: rt, newIndex: it, newDraggableIndex: at }, t)); } var V, Z, $, Q, J, tt, et, nt, ot, it, rt, at, lt, st, ct, ut, dt, ht, ft, pt, gt, mt, vt, bt, yt, wt = !1, Et = !1, Dt = [], St = !1, _t = !1, Ct = [], Tt = !1, xt = [], Ot = "undefined" != typeof document, Mt = n, At = w || y ? "cssFloat" : "float", Nt = Ot && !c && !n && "draggable" in document.createElement("div"), It = function () { if (Ot) { if (y) return !1; var t = document.createElement("x"); return t.style.cssText = "pointer-events:auto", "auto" === t.style.pointerEvents; } }(), Pt = function Pt(t, e) { var n = R(t), o = parseInt(n.width) - parseInt(n.paddingLeft) - parseInt(n.paddingRight) - parseInt(n.borderLeftWidth) - parseInt(n.borderRightWidth), i = B(t, 0, e), r = B(t, 1, e), a = i && R(i), l = r && R(r), s = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + X(i).width, t = 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"]) { e = "left" === a["float"] ? "left" : "right"; return !r || "both" !== l.clear && l.clear !== e ? "horizontal" : "vertical"; } return i && ("block" === a.display || "flex" === a.display || "table" === a.display || "grid" === a.display || o <= s && "none" === n[At] || r && "none" === n[At] && o < s + t) ? "vertical" : "horizontal"; }, kt = function kt(t) { function l(r, a) { 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 == r && (a || i)) return !0; if (null == r || !1 === r) return !1; if (a && "clone" === r) return r; if ("function" == typeof r) return l(r(t, e, n, o), a)(t, e, n, o); e = (a ? t : e).options.group.name; return !0 === r || "string" == typeof r && r === e || r.join && -1 < r.indexOf(e); }; } var e = {}, n = t.group; n && "object" == o(n) || (n = { name: n }), e.name = n.name, e.checkPull = l(n.pull, !0), e.checkPut = l(n.put), e.revertClone = n.revertClone, t.group = e; }, Rt = function Rt() { !It && $ && R($, "display", "none"); }, Xt = function Xt() { !It && $ && R($, "display", ""); }; Ot && !c && document.addEventListener("click", function (t) { if (Et) return t.preventDefault(), t.stopPropagation && t.stopPropagation(), t.stopImmediatePropagation && t.stopImmediatePropagation(), Et = !1; }, !0); function Yt(t) { if (V) { t = t.touches ? t.touches[0] : t; var e = (i = t.clientX, r = t.clientY, Dt.some(function (t) { var e = t[K].options.emptyInsertThreshold; if (e && !F(t)) { var n = X(t), o = i >= n.left - e && i <= n.right + e, e = r >= n.top - e && r <= n.bottom + e; return o && e ? a = t : void 0; } }), a); if (e) { var n, o = {}; for (n in t) { t.hasOwnProperty(n) && (o[n] = t[n]); } o.target = o.rootEl = e, o.preventDefault = void 0, o.stopPropagation = void 0, e[K]._onDragOver(o); } } var i, r, a; } function Bt(t) { V && V.parentNode[K]._isOutsideThisEl(t.target); } function Ft(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[K] = this; var n, o, i = { 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 direction() { return Pt(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 setData(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 !== Ft.supportPointer && "PointerEvent" in window && !u, emptyInsertThreshold: 5 }; for (n in W.initializePlugins(this, t, i), i) { n in e || (e[n] = i[n]); } for (o in kt(e), this) { "_" === o.charAt(0) && "function" == typeof this[o] && (this[o] = this[o].bind(this)); } this.nativeDraggable = !e.forceFallback && Nt, this.nativeDraggable && (this.options.touchStartThreshold = 1), e.supportPointer ? h(t, "pointerdown", this._onTapStart) : (h(t, "mousedown", this._onTapStart), h(t, "touchstart", this._onTapStart)), this.nativeDraggable && (h(t, "dragover", this), h(t, "dragenter", this)), Dt.push(this.el), e.store && e.store.get && this.sort(e.store.get(this) || []), a(this, x()); } function jt(t, e, n, o, i, r, a, l) { var s, c, u = t[K], d = u.options.onMove; return !window.CustomEvent || y || w ? (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), c = d ? d.call(u, s, a) : c; } function Ht(t) { t.draggable = !1; } function Lt() { Tt = !1; } function Kt(t) { return setTimeout(t, 0); } function Wt(t) { return clearTimeout(t); } Ft.prototype = { constructor: Ft, _isOutsideThisEl: function _isOutsideThisEl(t) { this.el.contains(t) || t === this.el || (mt = null); }, _getDirection: function _getDirection(t, e) { return "function" == typeof this.options.direction ? this.options.direction.call(this, t, e, V) : this.options.direction; }, _onTapStart: function _onTapStart(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) { xt.length = 0; var e = t.getElementsByTagName("input"), n = e.length; for (; n--;) { var o = e[n]; o.checked && xt.push(o); } }(o), !V && !(/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 || tt === l)) { if (ot = j(l), rt = j(l, t.draggable), "function" == typeof c) { if (c.call(this, e, l, this)) return q({ sortable: n, rootEl: s, name: "filter", targetEl: l, toEl: o, fromEl: o }), G("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 q({ sortable: n, rootEl: t, name: "filter", targetEl: l, fromEl: o, toEl: o }), G("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 _prepareDragStart(t, e, n) { var o, i = this, r = i.el, a = i.options, l = r.ownerDocument; n && !V && n.parentNode === r && (o = X(n), Q = r, Z = (V = n).parentNode, J = V.nextSibling, tt = n, lt = a.group, ct = { target: Ft.dragged = V, clientX: (e || t).clientX, clientY: (e || t).clientY }, ft = ct.clientX - o.left, pt = ct.clientY - o.top, this._lastX = (e || t).clientX, this._lastY = (e || t).clientY, V.style["will-change"] = "all", o = function o() { G("delayEnded", i, { evt: t }), Ft.eventCanceled ? i._onDrop() : (i._disableDelayedDragEvents(), !s && i.nativeDraggable && (V.draggable = !0), i._triggerDragStart(t, e), q({ sortable: i, name: "choose", originalEvent: t }), k(V, a.chosenClass, !0)); }, a.ignore.split(",").forEach(function (t) { b(V, t.trim(), Ht); }), h(l, "dragover", Yt), h(l, "mousemove", Yt), h(l, "touchmove", Yt), h(l, "mouseup", i._onDrop), h(l, "touchend", i._onDrop), h(l, "touchcancel", i._onDrop), s && this.nativeDraggable && (this.options.touchStartThreshold = 4, V.draggable = !0), G("delayStart", this, { evt: t }), !a.delay || a.delayOnTouchOnly && !e || this.nativeDraggable && (w || y) ? o() : Ft.eventCanceled ? this._onDrop() : (h(l, "mouseup", i._disableDelayedDrag), h(l, "touchend", i._disableDelayedDrag), h(l, "touchcancel", i._disableDelayedDrag), h(l, "mousemove", i._delayedDragTouchMoveHandler), h(l, "touchmove", i._delayedDragTouchMoveHandler), a.supportPointer && h(l, "pointermove", i._delayedDragTouchMoveHandler), i._dragStartTimer = setTimeout(o, a.delay))); }, _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(t) { t = t.touches ? t.touches[0] : t; Math.max(Math.abs(t.clientX - this._lastX), Math.abs(t.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag(); }, _disableDelayedDrag: function _disableDelayedDrag() { V && Ht(V), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents(); }, _disableDelayedDragEvents: function _disableDelayedDragEvents() { var t = this.el.ownerDocument; f(t, "mouseup", this._disableDelayedDrag), f(t, "touchend", this._disableDelayedDrag), f(t, "touchcancel", this._disableDelayedDrag), f(t, "mousemove", this._delayedDragTouchMoveHandler), f(t, "touchmove", this._delayedDragTouchMoveHandler), f(t, "pointermove", this._delayedDragTouchMoveHandler); }, _triggerDragStart: function _triggerDragStart(t, e) { e = e || "touch" == t.pointerType && t, !this.nativeDraggable || e ? this.options.supportPointer ? h(document, "pointermove", this._onTouchMove) : h(document, e ? "touchmove" : "mousemove", this._onTouchMove) : (h(V, "dragend", this), h(Q, "dragstart", this._onDragStart)); try { document.selection ? Kt(function () { document.selection.empty(); }) : window.getSelection().removeAllRanges(); } catch (t) {} }, _dragStarted: function _dragStarted(t, e) { var n; wt = !1, Q && V ? (G("dragStarted", this, { evt: e }), this.nativeDraggable && h(document, "dragover", Bt), n = this.options, t || k(V, n.dragClass, !1), k(V, n.ghostClass, !0), Ft.active = this, t && this._appendGhost(), q({ sortable: this, name: "start", originalEvent: e })) : this._nulling(); }, _emulateDragOver: function _emulateDragOver() { if (ut) { this._lastX = ut.clientX, this._lastY = ut.clientY, Rt(); for (var t = document.elementFromPoint(ut.clientX, ut.clientY), e = t; t && t.shadowRoot && (t = t.shadowRoot.elementFromPoint(ut.clientX, ut.clientY)) !== e;) { e = t; } if (V.parentNode[K]._isOutsideThisEl(t), e) do { if (e[K]) if (e[K]._onDragOver({ clientX: ut.clientX, clientY: ut.clientY, target: t, rootEl: e }) && !this.options.dragoverBubble) break; } while (e = (t = e).parentNode); Xt(); } }, _onTouchMove: function _onTouchMove(t) { if (ct) { var e = this.options, n = e.fallbackTolerance, o = e.fallbackOffset, i = t.touches ? t.touches[0] : t, r = $ && v($, !0), a = $ && r && r.a, l = $ && r && r.d, e = Mt && yt && E(yt), a = (i.clientX - ct.clientX + o.x) / (a || 1) + (e ? e[0] - Ct[0] : 0) / (a || 1), l = (i.clientY - ct.clientY + o.y) / (l || 1) + (e ? e[1] - Ct[1] : 0) / (l || 1); if (!Ft.active && !wt) { if (n && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < n) return; this._onDragStart(t, !0); } $ && (r ? (r.e += a - (dt || 0), r.f += l - (ht || 0)) : r = { a: 1, b: 0, c: 0, d: 1, e: a, f: l }, r = "matrix(".concat(r.a, ",").concat(r.b, ",").concat(r.c, ",").concat(r.d, ",").concat(r.e, ",").concat(r.f, ")"), R($, "webkitTransform", r), R($, "mozTransform", r), R($, "msTransform", r), R($, "transform", r), dt = a, ht = l, ut = i), t.cancelable && t.preventDefault(); } }, _appendGhost: function _appendGhost() { if (!$) { var t = this.options.fallbackOnBody ? document.body : Q, e = X(V, !0, Mt, !0, t), n = this.options; if (Mt) { for (yt = t; "static" === R(yt, "position") && "none" === R(yt, "transform") && yt !== document;) { yt = yt.parentNode; } yt !== document.body && yt !== document.documentElement ? (yt === document && (yt = O()), e.top += yt.scrollTop, e.left += yt.scrollLeft) : yt = O(), Ct = E(yt); } k($ = V.cloneNode(!0), n.ghostClass, !1), k($, n.fallbackClass, !0), k($, n.dragClass, !0), R($, "transition", ""), R($, "transform", ""), R($, "box-sizing", "border-box"), R($, "margin", 0), R($, "top", e.top), R($, "left", e.left), R($, "width", e.width), R($, "height", e.height), R($, "opacity", "0.8"), R($, "position", Mt ? "absolute" : "fixed"), R($, "zIndex", "100000"), R($, "pointerEvents", "none"), Ft.ghost = $, t.appendChild($), R($, "transform-origin", ft / parseInt($.style.width) * 100 + "% " + pt / parseInt($.style.height) * 100 + "%"); } }, _onDragStart: function _onDragStart(t, e) { var n = this, o = t.dataTransfer, i = n.options; G("dragStart", this, { evt: t }), Ft.eventCanceled ? this._onDrop() : (G("setupClone", this), Ft.eventCanceled || ((et = _(V)).removeAttribute("id"), et.draggable = !1, et.style["will-change"] = "", this._hideClone(), k(et, this.options.chosenClass, !1), Ft.clone = et), n.cloneId = Kt(function () { G("clone", n), Ft.eventCanceled || (n.options.removeCloneOnHide || Q.insertBefore(et, V), n._hideClone(), q({ sortable: n, name: "clone" })); }), e || k(V, i.dragClass, !0), e ? (Et = !0, n._loopId = setInterval(n._emulateDragOver, 50)) : (f(document, "mouseup", n._onDrop), f(document, "touchend", n._onDrop), f(document, "touchcancel", n._onDrop), o && (o.effectAllowed = "move", i.setData && i.setData.call(n, o, V)), h(document, "drop", n), R(V, "transform", "translateZ(0)")), wt = !0, n._dragStartId = Kt(n._dragStarted.bind(n, e, t)), h(document, "selectstart", n), gt = !0, u && R(document.body, "user-select", "none")); }, _onDragOver: function _onDragOver(n) { var o, i, r, t, e, a = this.el, l = n.target, s = this.options, c = s.group, u = Ft.active, d = lt === c, h = s.sort, f = st || u, p = this, g = !1; if (!Tt) { if (void 0 !== n.preventDefault && n.cancelable && n.preventDefault(), l = P(l, s.draggable, a, !0), O("dragOver"), Ft.eventCanceled) return g; if (V.contains(n.target) || l.animated && l.animatingX && l.animatingY || p._ignoreWhileAnimating === l) return A(!1); if (Et = !1, u && !s.disabled && (d ? h || (i = Z !== Q) : st === this || (this.lastPutMode = lt.checkPull(this, u, V, n)) && c.checkPut(this, u, V, n))) { if (r = "vertical" === this._getDirection(n, l), o = X(V), O("dragOverValid"), Ft.eventCanceled) return g; if (i) return Z = Q, M(), this._hideClone(), O("revert"), Ft.eventCanceled || (J ? Q.insertBefore(V, J) : Q.appendChild(V)), A(!0); var m = F(a, s.draggable); if (m && (S = n, c = r, x = X(F((D = this).el, D.options.draggable)), D = L(D.el, D.options, $), !(c ? S.clientX > D.right + 10 || S.clientY > x.bottom && S.clientX > x.left : S.clientY > D.bottom + 10 || S.clientX > x.right && S.clientY > x.top) || m.animated)) { if (m && (t = n, e = r, C = X(B((_ = this).el, 0, _.options, !0)), _ = L(_.el, _.options, $), e ? t.clientX < _.left - 10 || t.clientY < C.top && t.clientX < C.right : t.clientY < _.top - 10 || t.clientY < C.bottom && t.clientX < C.left)) { var v = B(a, 0, s, !0); if (v === V) return A(!1); if (E = X(l = v), !1 !== jt(Q, a, V, o, l, E, n, !1)) return M(), a.insertBefore(V, v), Z = a, N(), A(!0); } else if (l.parentNode === a) { var b, y, w, E = X(l), D = V.parentNode !== a, S = (S = V.animated && V.toRect || o, x = l.animated && l.toRect || E, _ = (e = r) ? S.left : S.top, t = e ? S.right : S.bottom, C = e ? S.width : S.height, v = e ? x.left : x.top, S = e ? x.right : x.bottom, x = e ? x.width : x.height, !(_ === v || t === S || _ + C / 2 === v + x / 2)), _ = r ? "top" : "left", C = Y(l, "top", "top") || Y(V, "top", "top"), v = C ? C.scrollTop : void 0; if (mt !== l && (y = E[_], St = !1, _t = !S && s.invertSwap || D), 0 !== (b = function (t, e, n, o, i, r, a, l) { var s = o ? t.clientY : t.clientX, c = o ? n.height : n.width, t = o ? n.top : n.left, o = o ? n.bottom : n.right, n = !1; if (!a) if (l && bt < c * i) { if (St = !St && (1 === vt ? t + c * r / 2 < s : s < o - c * r / 2) ? !0 : St) n = !0;else if (1 === vt ? s < t + bt : o - bt < s) return -vt; } else if (t + c * (1 - i) / 2 < s && s < o - c * (1 - i) / 2) return function (t) { return j(V) < j(t) ? 1 : -1; }(e); if ((n = n || a) && (s < t + c * r / 2 || o - c * r / 2 < s)) return t + c / 2 < s ? 1 : -1; return 0; }(n, l, E, r, S ? 1 : s.swapThreshold, null == s.invertedSwapThreshold ? s.swapThreshold : s.invertedSwapThreshold, _t, mt === l))) for (var T = j(V); (w = Z.children[T -= b]) && ("none" === R(w, "display") || w === $);) { ; } if (0 === b || w === l) return A(!1); vt = b; var x = (mt = l).nextElementSibling, D = !1, S = jt(Q, a, V, o, l, E, n, D = 1 === b); if (!1 !== S) return 1 !== S && -1 !== S || (D = 1 === S), Tt = !0, setTimeout(Lt, 30), M(), D && !x ? a.appendChild(V) : l.parentNode.insertBefore(V, D ? x : l), C && H(C, 0, v - C.scrollTop), Z = V.parentNode, void 0 === y || _t || (bt = Math.abs(y - X(l)[_])), N(), A(!0); } } else { if (m === V) return A(!1); if ((l = m && a === n.target ? m : l) && (E = X(l)), !1 !== jt(Q, a, V, o, l, E, n, !!l)) return M(), m && m.nextSibling ? a.insertBefore(V, m.nextSibling) : a.appendChild(V), Z = a, N(), A(!0); } if (a.contains(V)) return A(!1); } return !1; } function O(t, e) { G(t, p, I({ evt: n, isOwner: d, axis: r ? "vertical" : "horizontal", revert: i, dragRect: o, targetRect: E, canSort: h, fromSortable: f, target: l, completed: A, onMove: function onMove(t, e) { return jt(Q, a, V, o, t, X(t), n, e); }, changed: N }, e)); } function M() { O("dragOverAnimationCapture"), p.captureAnimationState(), p !== f && f.captureAnimationState(); } function A(t) { return O("dragOverCompleted", { insertion: t }), t && (d ? u._hideClone() : u._showClone(p), p !== f && (k(V, (st || u).options.ghostClass, !1), k(V, s.ghostClass, !0)), st !== p && p !== Ft.active ? st = p : p === Ft.active && st && (st = null), f === p && (p._ignoreWhileAnimating = l), p.animateAll(function () { O("dragOverAnimationComplete"), p._ignoreWhileAnimating = null; }), p !== f && (f.animateAll(), f._ignoreWhileAnimating = null)), (l === V && !V.animated || l === a && !l.animated) && (mt = null), s.dragoverBubble || n.rootEl || l === document || (V.parentNode[K]._isOutsideThisEl(n.target), t || Yt(n)), !s.dragoverBubble && n.stopPropagation && n.stopPropagation(), g = !0; } function N() { it = j(V), at = j(V, s.draggable), q({ sortable: p, name: "change", toEl: a, newIndex: it, newDraggableIndex: at, originalEvent: n }); } }, _ignoreWhileAnimating: null, _offMoveEvents: function _offMoveEvents() { f(document, "mousemove", this._onTouchMove), f(document, "touchmove", this._onTouchMove), f(document, "pointermove", this._onTouchMove), f(document, "dragover", Yt), f(document, "mousemove", Yt), f(document, "touchmove", Yt); }, _offUpEvents: function _offUpEvents() { var t = this.el.ownerDocument; f(t, "mouseup", this._onDrop), f(t, "touchend", this._onDrop), f(t, "pointerup", this._onDrop), f(t, "touchcancel", this._onDrop), f(document, "selectstart", this); }, _onDrop: function _onDrop(t) { var e = this.el, n = this.options; it = j(V), at = j(V, n.draggable), G("drop", this, { evt: t }), Z = V && V.parentNode, it = j(V), at = j(V, n.draggable), Ft.eventCanceled || (St = _t = wt = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Wt(this.cloneId), Wt(this._dragStartId), this.nativeDraggable && (f(document, "drop", this), f(e, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), u && R(document.body, "user-select", ""), R(V, "transform", ""), t && (gt && (t.cancelable && t.preventDefault(), n.dropBubble || t.stopPropagation()), $ && $.parentNode && $.parentNode.removeChild($), (Q === Z || st && "clone" !== st.lastPutMode) && et && et.parentNode && et.parentNode.removeChild(et), V && (this.nativeDraggable && f(V, "dragend", this), Ht(V), V.style["will-change"] = "", gt && !wt && k(V, (st || this).options.ghostClass, !1), k(V, this.options.chosenClass, !1), q({ sortable: this, name: "unchoose", toEl: Z, newIndex: null, newDraggableIndex: null, originalEvent: t }), Q !== Z ? (0 <= it && (q({ rootEl: Z, name: "add", toEl: Z, fromEl: Q, originalEvent: t }), q({ sortable: this, name: "remove", toEl: Z, originalEvent: t }), q({ rootEl: Z, name: "sort", toEl: Z, fromEl: Q, originalEvent: t }), q({ sortable: this, name: "sort", toEl: Z, originalEvent: t })), st && st.save()) : it !== ot && 0 <= it && (q({ sortable: this, name: "update", toEl: Z, originalEvent: t }), q({ sortable: this, name: "sort", toEl: Z, originalEvent: t })), Ft.active && (null != it && -1 !== it || (it = ot, at = rt), q({ sortable: this, name: "end", toEl: Z, originalEvent: t }), this.save())))), this._nulling(); }, _nulling: function _nulling() { G("nulling", this), Q = V = Z = $ = J = et = tt = nt = ct = ut = gt = it = at = ot = rt = mt = vt = st = lt = Ft.dragged = Ft.ghost = Ft.clone = Ft.active = null, xt.forEach(function (t) { t.checked = !0; }), xt.length = dt = ht = 0; }, handleEvent: function handleEvent(t) { switch (t.type) { case "drop": case "dragend": this._onDrop(t); break; case "dragenter": case "dragover": V && (this._onDragOver(t), function (t) { t.dataTransfer && (t.dataTransfer.dropEffect = "move"); t.cancelable && t.preventDefault(); }(t)); break; case "selectstart": t.preventDefault(); } }, toArray: function toArray() { 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) || function (t) { var e = t.tagName + t.className + t.src + t.href + t.textContent, n = e.length, o = 0; for (; n--;) { o += e.charCodeAt(n); } return o.toString(36); }(t)); } return e; }, sort: function sort(t, e) { var n = {}, o = this.el; this.toArray().forEach(function (t, e) { e = o.children[e]; P(e, this.options.draggable, o, !1) && (n[t] = e); }, this), e && this.captureAnimationState(), t.forEach(function (t) { n[t] && (o.removeChild(n[t]), o.appendChild(n[t])); }), e && this.animateAll(); }, save: function save() { var t = this.options.store; t && t.set && t.set(this); }, closest: function closest(t, e) { return P(t, e || this.options.draggable, this.el, !1); }, option: function option(t, e) { var n = this.options; if (void 0 === e) return n[t]; var o = W.modifyOption(this, t, e); n[t] = void 0 !== o ? o : e, "group" === t && kt(n); }, destroy: function destroy() { G("destroy", this); var t = this.el; t[K] = null, f(t, "mousedown", this._onTapStart), f(t, "touchstart", this._onTapStart), f(t, "pointerdown", this._onTapStart), this.nativeDraggable && (f(t, "dragover", this), f(t, "dragenter", this)), Array.prototype.forEach.call(t.querySelectorAll("[draggable]"), function (t) { t.removeAttribute("draggable"); }), this._onDrop(), this._disableDelayedDragEvents(), Dt.splice(Dt.indexOf(this.el), 1), this.el = t = null; }, _hideClone: function _hideClone() { nt || (G("hideClone", this), Ft.eventCanceled || (R(et, "display", "none"), this.options.removeCloneOnHide && et.parentNode && et.parentNode.removeChild(et), nt = !0)); }, _showClone: function _showClone(t) { "clone" === t.lastPutMode ? nt && (G("showClone", this), Ft.eventCanceled || (V.parentNode != Q || this.options.group.revertClone ? J ? Q.insertBefore(et, J) : Q.appendChild(et) : Q.insertBefore(et, V), this.options.group.revertClone && this.animate(V, et), R(et, "display", ""), nt = !1)) : this._hideClone(); } }, Ot && h(document, "touchmove", function (t) { (Ft.active || wt) && t.cancelable && t.preventDefault(); }), Ft.utils = { on: h, off: f, css: R, find: b, is: function is(t, e) { return !!P(t, e, t, !1); }, extend: function extend(t, e) { if (t && e) for (var n in e) { e.hasOwnProperty(n) && (t[n] = e[n]); } return t; }, throttle: S, closest: P, toggleClass: k, clone: _, index: j, nextTick: Kt, cancelNextTick: Wt, detectDirection: Pt, getChild: B }, Ft.get = function (t) { return t[K]; }, Ft.mount = function () { for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) { e[n] = arguments[n]; } (e = e[0].constructor === Array ? 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 && (Ft.utils = I(I({}, Ft.utils), t.utils)), W.mount(t); }); }, Ft.create = function (t, e) { return new Ft(t, e); }; var zt, Gt, Ut, qt, Vt, Zt, $t = [], Qt = !(Ft.version = "1.15.2"); function Jt() { $t.forEach(function (t) { clearInterval(t.pid); }), $t = []; } function te() { clearInterval(Zt); } var ee, ne = S(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 = O(), u = !1; Gt !== e && (Gt = e, Jt(), zt = t.scroll, i = t.scrollFn, !0 === zt && (zt = M(e, !0))); var d = 0, h = zt; do { var f = h, p = X(f), g = p.top, m = p.bottom, v = 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, p = 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)), T = E && (Math.abs(b - r) <= l && T + y < S) - (Math.abs(v - r) <= l && !!T), p = D && (Math.abs(m - a) <= l && p + w < _) - (Math.abs(g - a) <= l && !!p); if (!$t[d]) for (var x = 0; x <= d; x++) { $t[x] || ($t[x] = {}); } $t[d].vx == T && $t[d].vy == p && $t[d].el === f || ($t[d].el = f, $t[d].vx = T, $t[d].vy = p, clearInterval($t[d].pid), 0 == T && 0 == p || (u = !0, $t[d].pid = setInterval(function () { o && 0 === this.layer && Ft.active._onTouchMove(Vt); var t = $t[this.layer].vy ? $t[this.layer].vy * s : 0, e = $t[this.layer].vx ? $t[this.layer].vx * s : 0; "function" == typeof i && "continue" !== i.call(Ft.dragged.parentNode[K], e, t, n, Vt, $t[this.layer].el) || H($t[this.layer].el, e, t); }.bind({ layer: d }), 24))), d++; } while (t.bubbleScroll && h !== c && (h = M(h, !1))); Qt = u; } }, 30), c = function c(t) { var e = t.originalEvent, n = t.putSortable, o = t.dragEl, i = t.activeSortable, r = t.dispatchSortableEvent, a = t.hideGhostForTarget, t = t.unhideGhostForTarget; e && (i = n || i, a(), e = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e, e = document.elementFromPoint(e.clientX, e.clientY), t(), i && !i.el.contains(e) && (r("spill"), this.onSpill({ dragEl: o, putSortable: n }))); }; function oe() {} function ie() {} oe.prototype = { startIndex: null, dragStart: function dragStart(t) { t = t.oldDraggableIndex; this.startIndex = t; }, onSpill: function onSpill(t) { var e = t.dragEl, n = t.putSortable; this.sortable.captureAnimationState(), n && n.captureAnimationState(); t = B(this.sortable.el, this.startIndex, this.options); t ? this.sortable.el.insertBefore(e, t) : this.sortable.el.appendChild(e), this.sortable.animateAll(), n && n.animateAll(); }, drop: c }, a(oe, { pluginName: "revertOnSpill" }), ie.prototype = { onSpill: function onSpill(t) { var e = t.dragEl, t = t.putSortable || this.sortable; t.captureAnimationState(), e.parentNode && e.parentNode.removeChild(e), t.animateAll(); }, drop: c }, a(ie, { pluginName: "removeOnSpill" }); var re, ae, le, se, ce, ue = [], de = [], he = !1, fe = !1, pe = !1; function ge(n, o) { de.forEach(function (t, e) { e = o.children[t.sortableIndex + (n ? Number(e) : 0)]; e ? o.insertBefore(t, e) : o.appendChild(t); }); } function me() { ue.forEach(function (t) { t !== le && t.parentNode && t.parentNode.removeChild(t); }); } return Ft.mount(new function () { function t() { for (var t in this.defaults = { scroll: !0, forceAutoScrollFallback: !1, 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 dragStarted(t) { t = t.originalEvent; this.sortable.nativeDraggable ? h(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? h(document, "pointermove", this._handleFallbackAutoScroll) : t.touches ? h(document, "touchmove", this._handleFallbackAutoScroll) : h(document, "mousemove", this._handleFallbackAutoScroll); }, dragOverCompleted: function dragOverCompleted(t) { t = t.originalEvent; this.options.dragOverBubble || t.rootEl || this._handleAutoScroll(t); }, drop: function drop() { this.sortable.nativeDraggable ? f(document, "dragover", this._handleAutoScroll) : (f(document, "pointermove", this._handleFallbackAutoScroll), f(document, "touchmove", this._handleFallbackAutoScroll), f(document, "mousemove", this._handleFallbackAutoScroll)), te(), Jt(), clearTimeout(g), g = void 0; }, nulling: function nulling() { Vt = Gt = zt = Qt = Zt = Ut = qt = null, $t.length = 0; }, _handleFallbackAutoScroll: function _handleFallbackAutoScroll(t) { this._handleAutoScroll(t, !0); }, _handleAutoScroll: function _handleAutoScroll(e, n) { var o, i = this, r = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, t = document.elementFromPoint(r, a); Vt = e, n || this.options.forceAutoScrollFallback || w || y || u ? (ne(e, this.options, t, n), o = M(t, !0), !Qt || Zt && r === Ut && a === qt || (Zt && te(), Zt = setInterval(function () { var t = M(document.elementFromPoint(r, a), !0); t !== o && (o = t, Jt()), ne(e, i.options, t, n); }, 10), Ut = r, qt = a)) : this.options.bubbleScroll && M(t, !0) !== O() ? ne(e, this.options, M(t, !1), !1) : Jt(); } }, a(t, { pluginName: "scroll", initializeByDefault: !0 }); }()), Ft.mount(ie, oe), Ft.mount(new function () { function t() { this.defaults = { swapClass: "sortable-swap-highlight" }; } return t.prototype = { dragStart: function dragStart(t) { t = t.dragEl; ee = t; }, dragOverValid: function dragOverValid(t) { var e = t.completed, n = t.target, o = t.onMove, i = t.activeSortable, r = t.changed, a = t.cancel; i.options.swap && (t = this.sortable.el, i = this.options, n && n !== t && (t = ee, ee = !1 !== o(n) ? (k(n, i.swapClass, !0), n) : null, t && t !== ee && k(t, i.swapClass, !1)), r(), e(!0), a()); }, drop: function drop(t) { var e, n, o = t.activeSortable, i = t.putSortable, r = t.dragEl, a = i || this.sortable, l = this.options; ee && k(ee, l.swapClass, !1), ee && (l.swap || i && i.options.swap) && r !== ee && (a.captureAnimationState(), a !== o && o.captureAnimationState(), n = ee, t = (e = r).parentNode, l = n.parentNode, t && l && !t.isEqualNode(n) && !l.isEqualNode(e) && (i = j(e), r = j(n), t.isEqualNode(l) && i < r && r++, t.insertBefore(n, t.children[i]), l.insertBefore(e, l.children[r])), a.animateAll(), a !== o && o.animateAll()); }, nulling: function nulling() { ee = null; } }, a(t, { pluginName: "swap", eventProperties: function eventProperties() { return { swapItem: ee }; } }); }()), Ft.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.avoidImplicitDeselect || (o.options.supportPointer ? h(document, "pointerup", this._deselectMultiDrag) : (h(document, "mouseup", this._deselectMultiDrag), h(document, "touchend", this._deselectMultiDrag))), h(document, "keydown", this._checkKeyDown), h(document, "keyup", this._checkKeyUp), this.defaults = { selectedClass: "sortable-selected", multiDragKey: null, avoidImplicitDeselect: !1, setData: function setData(t, e) { var n = ""; ue.length && ae === o ? ue.forEach(function (t, e) { n += (e ? ", " : "") + t.textContent; }) : n = e.textContent, t.setData("Text", n); } }; } return t.prototype = { multiDragKeyDown: !1, isMultiDrag: !1, delayStartGlobal: function delayStartGlobal(t) { t = t.dragEl; le = t; }, delayEnded: function delayEnded() { this.isMultiDrag = ~ue.indexOf(le); }, setupClone: function setupClone(t) { var e = t.sortable, t = t.cancel; if (this.isMultiDrag) { for (var n = 0; n < ue.length; n++) { de.push(_(ue[n])), de[n].sortableIndex = ue[n].sortableIndex, de[n].draggable = !1, de[n].style["will-change"] = "", k(de[n], this.options.selectedClass, !1), ue[n] === le && k(de[n], this.options.chosenClass, !1); } e._hideClone(), t(); } }, clone: function clone(t) { var e = t.sortable, n = t.rootEl, o = t.dispatchSortableEvent, t = t.cancel; this.isMultiDrag && (this.options.removeCloneOnHide || ue.length && ae === e && (ge(!0, n), o("clone"), t())); }, showClone: function showClone(t) { var e = t.cloneNowShown, n = t.rootEl, t = t.cancel; this.isMultiDrag && (ge(!1, n), de.forEach(function (t) { R(t, "display", ""); }), e(), ce = !1, t()); }, hideClone: function hideClone(t) { var e = this, n = (t.sortable, t.cloneNowHidden), t = t.cancel; this.isMultiDrag && (de.forEach(function (t) { R(t, "display", "none"), e.options.removeCloneOnHide && t.parentNode && t.parentNode.removeChild(t); }), n(), ce = !0, t()); }, dragStartGlobal: function dragStartGlobal(t) { t.sortable; !this.isMultiDrag && ae && ae.multiDrag._deselectMultiDrag(), ue.forEach(function (t) { t.sortableIndex = j(t); }), ue = ue.sort(function (t, e) { return t.sortableIndex - e.sortableIndex; }), pe = !0; }, dragStarted: function dragStarted(t) { var e, n = this, t = t.sortable; this.isMultiDrag && (this.options.sort && (t.captureAnimationState(), this.options.animation && (ue.forEach(function (t) { t !== le && R(t, "position", "absolute"); }), e = X(le, !1, !0, !0), ue.forEach(function (t) { t !== le && C(t, e); }), he = fe = !0)), t.animateAll(function () { he = fe = !1, n.options.animation && ue.forEach(function (t) { T(t); }), n.options.sort && me(); })); }, dragOver: function dragOver(t) { var e = t.target, n = t.completed, t = t.cancel; fe && ~ue.indexOf(e) && (n(!1), t()); }, revert: function revert(t) { var n, o, e = t.fromSortable, i = t.rootEl, r = t.sortable, a = t.dragRect; 1 < ue.length && (ue.forEach(function (t) { r.addAnimationState({ target: t, rect: fe ? X(t) : a }), T(t), t.fromRect = a, e.removeAnimationState(t); }), fe = !1, n = !this.options.removeCloneOnHide, o = i, ue.forEach(function (t, e) { e = o.children[t.sortableIndex + (n ? Number(e) : 0)]; e ? o.insertBefore(t, e) : o.appendChild(t); })); }, dragOverCompleted: function dragOverCompleted(t) { var e, n = t.sortable, o = t.isOwner, i = t.insertion, r = t.activeSortable, a = t.parentEl, l = t.putSortable, t = this.options; i && (o && r._hideClone(), he = !1, t.animation && 1 < ue.length && (fe || !o && !r.options.sort && !l) && (e = X(le, !1, !0, !0), ue.forEach(function (t) { t !== le && (C(t, e), a.appendChild(t)); }), fe = !0), o || (fe || me(), 1 < ue.length ? (o = ce, r._showClone(n), r.options.animation && !ce && o && de.forEach(function (t) { r.addAnimationState({ target: t, rect: se }), t.fromRect = se, t.thisAnimationDuration = null; })) : r._showClone(n))); }, dragOverAnimationCapture: function dragOverAnimationCapture(t) { var e = t.dragRect, n = t.isOwner, t = t.activeSortable; ue.forEach(function (t) { t.thisAnimationDuration = null; }), t.options.animation && !n && t.multiDrag.isMultiDrag && (se = a({}, e), e = v(le, !0), se.top -= e.f, se.left -= e.e); }, dragOverAnimationComplete: function dragOverAnimationComplete() { fe && (fe = !1, me()); }, drop: function drop(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, u, d, h = this.options, f = o.children; if (!pe) if (h.multiDragKey && !this.multiDragKeyDown && this._deselectMultiDrag(), k(le, h.selectedClass, !~ue.indexOf(le)), ~ue.indexOf(le)) ue.splice(ue.indexOf(le), 1), re = null, z({ sortable: i, rootEl: n, name: "deselect", targetEl: le, originalEvent: e });else { if (ue.push(le), z({ sortable: i, rootEl: n, name: "select", targetEl: le, originalEvent: e }), e.shiftKey && re && i.el.contains(re)) { var p = j(re), t = j(le); if (~p && ~t && p !== t) for (var g, m = p < t ? (g = p, t) : (g = t, p + 1); g < m; g++) { ~ue.indexOf(f[g]) || (k(f[g], h.selectedClass, !0), ue.push(f[g]), z({ sortable: i, rootEl: n, name: "select", targetEl: f[g], originalEvent: e })); } } else re = le; ae = s; } pe && this.isMultiDrag && (fe = !1, (o[K].options.sort || o !== n) && 1 < ue.length && (c = X(le), u = j(le, ":not(." + this.options.selectedClass + ")"), !he && h.animation && (le.thisAnimationDuration = null), s.captureAnimationState(), he || (h.animation && (le.fromRect = c, ue.forEach(function (t) { var e; t.thisAnimationDuration = null, t !== le && (e = fe ? X(t) : c, t.fromRect = e, s.addAnimationState({ target: t, rect: e })); })), me(), ue.forEach(function (t) { f[u] ? o.insertBefore(t, f[u]) : o.appendChild(t), u++; }), a === j(le) && (d = !1, ue.forEach(function (t) { t.sortableIndex !== j(t) && (d = !0); }), d && (r("update"), r("sort")))), ue.forEach(function (t) { T(t); }), s.animateAll()), ae = s), (n === o || l && "clone" !== l.lastPutMode) && de.forEach(function (t) { t.parentNode && t.parentNode.removeChild(t); }); } }, nullingGlobal: function nullingGlobal() { this.isMultiDrag = pe = !1, de.length = 0; }, destroyGlobal: function destroyGlobal() { this._deselectMultiDrag(), f(document, "pointerup", this._deselectMultiDrag), f(document, "mouseup", this._deselectMultiDrag), f(document, "touchend", this._deselectMultiDrag), f(document, "keydown", this._checkKeyDown), f(document, "keyup", this._checkKeyUp); }, _deselectMultiDrag: function _deselectMultiDrag(t) { if (!(void 0 !== pe && pe || ae !== this.sortable || t && P(t.target, this.options.draggable, this.sortable.el, !1) || t && 0 !== t.button)) for (; ue.length;) { var e = ue[0]; k(e, this.options.selectedClass, !1), ue.shift(), z({ sortable: this.sortable, rootEl: this.sortable.el, name: "deselect", targetEl: e, originalEvent: t }); } }, _checkKeyDown: function _checkKeyDown(t) { t.key === this.options.multiDragKey && (this.multiDragKeyDown = !0); }, _checkKeyUp: function _checkKeyUp(t) { t.key === this.options.multiDragKey && (this.multiDragKeyDown = !1); } }, a(t, { pluginName: "multiDrag", utils: { select: function select(t) { var e = t.parentNode[K]; e && e.options.multiDrag && !~ue.indexOf(t) && (ae && ae !== e && (ae.multiDrag._deselectMultiDrag(), ae = e), k(t, e.options.selectedClass, !0), ue.push(t)); }, deselect: function deselect(t) { var e = t.parentNode[K], n = ue.indexOf(t); e && e.options.multiDrag && ~n && (k(t, e.options.selectedClass, !1), ue.splice(n, 1)); } }, eventProperties: function eventProperties() { var n = this, o = [], i = []; return ue.forEach(function (t) { var e; o.push({ multiDragElement: t, index: t.sortableIndex }), e = fe && t !== le ? -1 : fe ? j(t, ":not(." + n.options.selectedClass + ")") : j(t), i.push({ multiDragElement: t, index: e }); }), { items: r(ue), clones: [].concat(de), oldIndicies: o, newIndicies: i }; }, optionListeners: { multiDragKey: function multiDragKey(t) { return "ctrl" === (t = t.toLowerCase()) ? t = "Control" : 1 < t.length && (t = t.charAt(0).toUpperCase() + t.substr(1)), t; } } }); }()), Ft; }); /*! jQuery UI - v1.13.2 - 2023-02-04 * http://jqueryui.com * Includes: widget.js, position.js, data.js, keycode.js, scroll-parent.js, unique-id.js, widgets/draggable.js, widgets/sortable.js, widgets/autocomplete.js, widgets/menu.js, widgets/mouse.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ !function (t) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery); }(function (w) { "use strict"; w.ui = w.ui || {}; w.ui.version = "1.13.2"; var o, i = 0, r = Array.prototype.hasOwnProperty, h = Array.prototype.slice; w.cleanData = (o = w.cleanData, function (t) { for (var e, i, s = 0; null != (i = t[s]); s++) { (e = w._data(i, "events")) && e.remove && w(i).triggerHandler("remove"); } o(t); }), w.widget = function (t, i, e) { var s, o, n, r = {}, h = t.split(".")[0], a = h + "-" + (t = t.split(".")[1]); return e || (e = i, i = w.Widget), Array.isArray(e) && (e = w.extend.apply(null, [{}].concat(e))), w.expr.pseudos[a.toLowerCase()] = function (t) { return !!w.data(t, a); }, w[h] = w[h] || {}, s = w[h][t], o = w[h][t] = function (t, e) { if (!this || !this._createWidget) return new o(t, e); arguments.length && this._createWidget(t, e); }, w.extend(o, s, { version: e.version, _proto: w.extend({}, e), _childConstructors: [] }), (n = new i()).options = w.widget.extend({}, n.options), w.each(e, function (e, s) { function o() { return i.prototype[e].apply(this, arguments); } function n(t) { return i.prototype[e].apply(this, t); } r[e] = "function" == typeof s ? function () { var t, e = this._super, i = this._superApply; return this._super = o, this._superApply = n, t = s.apply(this, arguments), this._super = e, this._superApply = i, t; } : s; }), o.prototype = w.widget.extend(n, { widgetEventPrefix: s && n.widgetEventPrefix || t }, r, { constructor: o, namespace: h, widgetName: t, widgetFullName: a }), s ? (w.each(s._childConstructors, function (t, e) { var i = e.prototype; w.widget(i.namespace + "." + i.widgetName, o, e._proto); }), delete s._childConstructors) : i._childConstructors.push(o), w.widget.bridge(t, o), o; }, w.widget.extend = function (t) { for (var e, i, s = h.call(arguments, 1), o = 0, n = s.length; o < n; o++) { for (e in s[o]) { i = s[o][e], r.call(s[o], e) && void 0 !== i && (w.isPlainObject(i) ? t[e] = w.isPlainObject(t[e]) ? w.widget.extend({}, t[e], i) : w.widget.extend({}, i) : t[e] = i); } } return t; }, w.widget.bridge = function (n, e) { var r = e.prototype.widgetFullName || n; w.fn[n] = function (i) { var t = "string" == typeof i, s = h.call(arguments, 1), o = this; return t ? this.length || "instance" !== i ? this.each(function () { var t, e = w.data(this, r); return "instance" === i ? (o = e, !1) : e ? "function" != typeof e[i] || "_" === i.charAt(0) ? w.error("no such method '" + i + "' for " + n + " widget instance") : (t = e[i].apply(e, s)) !== e && void 0 !== t ? (o = t && t.jquery ? o.pushStack(t.get()) : t, !1) : void 0 : w.error("cannot call methods on " + n + " prior to initialization; attempted to call method '" + i + "'"); }) : o = void 0 : (s.length && (i = w.widget.extend.apply(null, [i].concat(s))), this.each(function () { var t = w.data(this, r); t ? (t.option(i || {}), t._init && t._init()) : w.data(this, r, new e(i, this)); })), o; }; }, w.Widget = function () {}, w.Widget._childConstructors = [], w.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "
", options: { classes: {}, disabled: !1, create: null }, _createWidget: function _createWidget(t, e) { e = w(e || this.defaultElement || this)[0], this.element = w(e), this.uuid = i++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = w(), this.hoverable = w(), this.focusable = w(), this.classesElementLookup = {}, e !== this && (w.data(e, this.widgetFullName, this), this._on(!0, this.element, { remove: function remove(t) { t.target === e && this.destroy(); } }), this.document = w(e.style ? e.ownerDocument : e.document || e), this.window = w(this.document[0].defaultView || this.document[0].parentWindow)), this.options = w.widget.extend({}, this.options, this._getCreateOptions(), t), this._create(), this.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger("create", null, this._getCreateEventData()), this._init(); }, _getCreateOptions: function _getCreateOptions() { return {}; }, _getCreateEventData: w.noop, _create: w.noop, _init: w.noop, destroy: function destroy() { var i = this; this._destroy(), w.each(this.classesElementLookup, function (t, e) { i._removeClass(e, t); }), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget().off(this.eventNamespace).removeAttr("aria-disabled"), this.bindings.off(this.eventNamespace); }, _destroy: w.noop, widget: function widget() { return this.element; }, option: function option(t, e) { var i, s, o, n = t; if (0 === arguments.length) return w.widget.extend({}, this.options); if ("string" == typeof t) if (n = {}, t = (i = t.split(".")).shift(), i.length) { for (s = n[t] = w.widget.extend({}, this.options[t]), o = 0; o < i.length - 1; o++) { s[i[o]] = s[i[o]] || {}, s = s[i[o]]; } if (t = i.pop(), 1 === arguments.length) return void 0 === s[t] ? null : s[t]; s[t] = e; } else { if (1 === arguments.length) return void 0 === this.options[t] ? null : this.options[t]; n[t] = e; } return this._setOptions(n), this; }, _setOptions: function _setOptions(t) { for (var e in t) { this._setOption(e, t[e]); } return this; }, _setOption: function _setOption(t, e) { return "classes" === t && this._setOptionClasses(e), this.options[t] = e, "disabled" === t && this._setOptionDisabled(e), this; }, _setOptionClasses: function _setOptionClasses(t) { var e, i, s; for (e in t) { s = this.classesElementLookup[e], t[e] !== this.options.classes[e] && s && s.length && (i = w(s.get()), this._removeClass(s, e), i.addClass(this._classes({ element: i, keys: e, classes: t, add: !0 }))); } }, _setOptionDisabled: function _setOptionDisabled(t) { this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!t), t && (this._removeClass(this.hoverable, null, "ui-state-hover"), this._removeClass(this.focusable, null, "ui-state-focus")); }, enable: function enable() { return this._setOptions({ disabled: !1 }); }, disable: function disable() { return this._setOptions({ disabled: !0 }); }, _classes: function _classes(o) { var n = [], r = this; function t(t, e) { for (var i, s = 0; s < t.length; s++) { i = r.classesElementLookup[t[s]] || w(), i = o.add ? (function () { var i = []; o.element.each(function (t, e) { w.map(r.classesElementLookup, function (t) { return t; }).some(function (t) { return t.is(e); }) || i.push(e); }), r._on(w(i), { remove: "_untrackClassesElement" }); }(), w(w.uniqueSort(i.get().concat(o.element.get())))) : w(i.not(o.element).get()), r.classesElementLookup[t[s]] = i, n.push(t[s]), e && o.classes[t[s]] && n.push(o.classes[t[s]]); } } return (o = w.extend({ element: this.element, classes: this.options.classes || {} }, o)).keys && t(o.keys.match(/\S+/g) || [], !0), o.extra && t(o.extra.match(/\S+/g) || []), n.join(" "); }, _untrackClassesElement: function _untrackClassesElement(i) { var s = this; w.each(s.classesElementLookup, function (t, e) { -1 !== w.inArray(i.target, e) && (s.classesElementLookup[t] = w(e.not(i.target).get())); }), this._off(w(i.target)); }, _removeClass: function _removeClass(t, e, i) { return this._toggleClass(t, e, i, !1); }, _addClass: function _addClass(t, e, i) { return this._toggleClass(t, e, i, !0); }, _toggleClass: function _toggleClass(t, e, i, s) { var o = "string" == typeof t || null === t, i = { extra: o ? e : i, keys: o ? t : e, element: o ? this.element : t, add: s = "boolean" == typeof s ? s : i }; return i.element.toggleClass(this._classes(i), s), this; }, _on: function _on(o, n, t) { var r, h = this; "boolean" != typeof o && (t = n, n = o, o = !1), t ? (n = r = w(n), this.bindings = this.bindings.add(n)) : (t = n, n = this.element, r = this.widget()), w.each(t, function (t, e) { function i() { if (o || !0 !== h.options.disabled && !w(this).hasClass("ui-state-disabled")) return ("string" == typeof e ? h[e] : e).apply(h, arguments); } "string" != typeof e && (i.guid = e.guid = e.guid || i.guid || w.guid++); var s = t.match(/^([\w:-]*)\s*(.*)$/), t = s[1] + h.eventNamespace, s = s[2]; s ? r.on(t, s, i) : n.on(t, i); }); }, _off: function _off(t, e) { e = (e || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, t.off(e), this.bindings = w(this.bindings.not(t).get()), this.focusable = w(this.focusable.not(t).get()), this.hoverable = w(this.hoverable.not(t).get()); }, _delay: function _delay(t, e) { var i = this; return setTimeout(function () { return ("string" == typeof t ? i[t] : t).apply(i, arguments); }, e || 0); }, _hoverable: function _hoverable(t) { this.hoverable = this.hoverable.add(t), this._on(t, { mouseenter: function mouseenter(t) { this._addClass(w(t.currentTarget), null, "ui-state-hover"); }, mouseleave: function mouseleave(t) { this._removeClass(w(t.currentTarget), null, "ui-state-hover"); } }); }, _focusable: function _focusable(t) { this.focusable = this.focusable.add(t), this._on(t, { focusin: function focusin(t) { this._addClass(w(t.currentTarget), null, "ui-state-focus"); }, focusout: function focusout(t) { this._removeClass(w(t.currentTarget), null, "ui-state-focus"); } }); }, _trigger: function _trigger(t, e, i) { var s, o, n = this.options[t]; if (i = i || {}, (e = w.Event(e)).type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), e.target = this.element[0], o = e.originalEvent) for (s in o) { s in e || (e[s] = o[s]); } return this.element.trigger(e, i), !("function" == typeof n && !1 === n.apply(this.element[0], [e].concat(i)) || e.isDefaultPrevented()); } }, w.each({ show: "fadeIn", hide: "fadeOut" }, function (n, r) { w.Widget.prototype["_" + n] = function (e, t, i) { var s, o = (t = "string" == typeof t ? { effect: t } : t) ? !0 !== t && "number" != typeof t && t.effect || r : n; "number" == typeof (t = t || {}) ? t = { duration: t } : !0 === t && (t = {}), s = !w.isEmptyObject(t), t.complete = i, t.delay && e.delay(t.delay), s && w.effects && w.effects.effect[o] ? e[n](t) : o !== n && e[o] ? e[o](t.duration, t.easing, i) : e.queue(function (t) { w(this)[n](), i && i.call(e[0]), t(); }); }; }); var s, x, I, n, a, l, c, u, C; w.widget; function T(t, e, i) { return [parseFloat(t[0]) * (u.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (u.test(t[1]) ? i / 100 : 1)]; } function k(t, e) { return parseInt(w.css(t, e), 10) || 0; } function H(t) { return null != t && t === t.window; } x = Math.max, I = Math.abs, n = /left|center|right/, a = /top|center|bottom/, l = /[\+\-]\d+(\.[\d]+)?%?/, c = /^\w+/, u = /%$/, C = w.fn.position, w.position = { scrollbarWidth: function scrollbarWidth() { if (void 0 !== s) return s; var t, e = w("
"), i = e.children()[0]; return w("body").append(e), t = i.offsetWidth, e.css("overflow", "scroll"), t === (i = i.offsetWidth) && (i = e[0].clientWidth), e.remove(), s = t - i; }, getScrollInfo: function getScrollInfo(t) { var e = t.isWindow || t.isDocument ? "" : t.element.css("overflow-x"), i = t.isWindow || t.isDocument ? "" : t.element.css("overflow-y"), e = "scroll" === e || "auto" === e && t.width < t.element[0].scrollWidth; return { width: "scroll" === i || "auto" === i && t.height < t.element[0].scrollHeight ? w.position.scrollbarWidth() : 0, height: e ? w.position.scrollbarWidth() : 0 }; }, getWithinInfo: function getWithinInfo(t) { var e = w(t || window), i = H(e[0]), s = !!e[0] && 9 === e[0].nodeType; return { element: e, isWindow: i, isDocument: s, offset: !i && !s ? w(t).offset() : { left: 0, top: 0 }, scrollLeft: e.scrollLeft(), scrollTop: e.scrollTop(), width: e.outerWidth(), height: e.outerHeight() }; } }, w.fn.position = function (u) { if (!u || !u.of) return C.apply(this, arguments); var p, f, d, m, g, t, v = "string" == typeof (u = w.extend({}, u)).of ? w(document).find(u.of) : w(u.of), _ = w.position.getWithinInfo(u.within), y = w.position.getScrollInfo(_), b = (u.collision || "flip").split(" "), P = {}, e = 9 === (t = (e = v)[0]).nodeType ? { width: e.width(), height: e.height(), offset: { top: 0, left: 0 } } : H(t) ? { width: e.width(), height: e.height(), offset: { top: e.scrollTop(), left: e.scrollLeft() } } : t.preventDefault ? { width: 0, height: 0, offset: { top: t.pageY, left: t.pageX } } : { width: e.outerWidth(), height: e.outerHeight(), offset: e.offset() }; return v[0].preventDefault && (u.at = "left top"), f = e.width, d = e.height, g = w.extend({}, m = e.offset), w.each(["my", "at"], function () { var t, e, i = (u[this] || "").split(" "); (i = 1 === i.length ? n.test(i[0]) ? i.concat(["center"]) : a.test(i[0]) ? ["center"].concat(i) : ["center", "center"] : i)[0] = n.test(i[0]) ? i[0] : "center", i[1] = a.test(i[1]) ? i[1] : "center", t = l.exec(i[0]), e = l.exec(i[1]), P[this] = [t ? t[0] : 0, e ? e[0] : 0], u[this] = [c.exec(i[0])[0], c.exec(i[1])[0]]; }), 1 === b.length && (b[1] = b[0]), "right" === u.at[0] ? g.left += f : "center" === u.at[0] && (g.left += f / 2), "bottom" === u.at[1] ? g.top += d : "center" === u.at[1] && (g.top += d / 2), p = T(P.at, f, d), g.left += p[0], g.top += p[1], this.each(function () { var i, t, r = w(this), h = r.outerWidth(), a = r.outerHeight(), e = k(this, "marginLeft"), s = k(this, "marginTop"), o = h + e + k(this, "marginRight") + y.width, n = a + s + k(this, "marginBottom") + y.height, l = w.extend({}, g), c = T(P.my, r.outerWidth(), r.outerHeight()); "right" === u.my[0] ? l.left -= h : "center" === u.my[0] && (l.left -= h / 2), "bottom" === u.my[1] ? l.top -= a : "center" === u.my[1] && (l.top -= a / 2), l.left += c[0], l.top += c[1], i = { marginLeft: e, marginTop: s }, w.each(["left", "top"], function (t, e) { w.ui.position[b[t]] && w.ui.position[b[t]][e](l, { targetWidth: f, targetHeight: d, elemWidth: h, elemHeight: a, collisionPosition: i, collisionWidth: o, collisionHeight: n, offset: [p[0] + c[0], p[1] + c[1]], my: u.my, at: u.at, within: _, elem: r }); }), u.using && (t = function t(_t2) { var e = m.left - l.left, i = e + f - h, s = m.top - l.top, o = s + d - a, n = { target: { element: v, left: m.left, top: m.top, width: f, height: d }, element: { element: r, left: l.left, top: l.top, width: h, height: a }, horizontal: i < 0 ? "left" : 0 < e ? "right" : "center", vertical: o < 0 ? "top" : 0 < s ? "bottom" : "middle" }; f < h && I(e + i) < f && (n.horizontal = "center"), d < a && I(s + o) < d && (n.vertical = "middle"), x(I(e), I(i)) > x(I(s), I(o)) ? n.important = "horizontal" : n.important = "vertical", u.using.call(this, _t2, n); }), r.offset(w.extend(l, { using: t })); }); }, w.ui.position = { fit: { left: function left(t, e) { var i = e.within, s = i.isWindow ? i.scrollLeft : i.offset.left, o = i.width, n = t.left - e.collisionPosition.marginLeft, r = s - n, h = n + e.collisionWidth - o - s; e.collisionWidth > o ? 0 < r && h <= 0 ? (i = t.left + r + e.collisionWidth - o - s, t.left += r - i) : t.left = !(0 < h && r <= 0) && h < r ? s + o - e.collisionWidth : s : 0 < r ? t.left += r : 0 < h ? t.left -= h : t.left = x(t.left - n, t.left); }, top: function top(t, e) { var i = e.within, s = i.isWindow ? i.scrollTop : i.offset.top, o = e.within.height, n = t.top - e.collisionPosition.marginTop, r = s - n, h = n + e.collisionHeight - o - s; e.collisionHeight > o ? 0 < r && h <= 0 ? (i = t.top + r + e.collisionHeight - o - s, t.top += r - i) : t.top = !(0 < h && r <= 0) && h < r ? s + o - e.collisionHeight : s : 0 < r ? t.top += r : 0 < h ? t.top -= h : t.top = x(t.top - n, t.top); } }, flip: { left: function left(t, e) { var i = e.within, s = i.offset.left + i.scrollLeft, o = i.width, n = i.isWindow ? i.scrollLeft : i.offset.left, r = t.left - e.collisionPosition.marginLeft, h = r - n, a = r + e.collisionWidth - o - n, l = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0, i = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0, r = -2 * e.offset[0]; h < 0 ? ((s = t.left + l + i + r + e.collisionWidth - o - s) < 0 || s < I(h)) && (t.left += l + i + r) : 0 < a && (0 < (n = t.left - e.collisionPosition.marginLeft + l + i + r - n) || I(n) < a) && (t.left += l + i + r); }, top: function top(t, e) { var i = e.within, s = i.offset.top + i.scrollTop, o = i.height, n = i.isWindow ? i.scrollTop : i.offset.top, r = t.top - e.collisionPosition.marginTop, h = r - n, a = r + e.collisionHeight - o - n, l = "top" === e.my[1] ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0, i = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0, r = -2 * e.offset[1]; h < 0 ? ((s = t.top + l + i + r + e.collisionHeight - o - s) < 0 || s < I(h)) && (t.top += l + i + r) : 0 < a && (0 < (n = t.top - e.collisionPosition.marginTop + l + i + r - n) || I(n) < a) && (t.top += l + i + r); } }, flipfit: { left: function left() { w.ui.position.flip.left.apply(this, arguments), w.ui.position.fit.left.apply(this, arguments); }, top: function top() { w.ui.position.flip.top.apply(this, arguments), w.ui.position.fit.top.apply(this, arguments); } } }; w.ui.position, w.extend(w.expr.pseudos, { data: w.expr.createPseudo ? w.expr.createPseudo(function (e) { return function (t) { return !!w.data(t, e); }; }) : function (t, e, i) { return !!w.data(t, i[3]); } }), w.ui.keyCode = { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }, w.fn.scrollParent = function (t) { var e = this.css("position"), i = "absolute" === e, s = t ? /(auto|scroll|hidden)/ : /(auto|scroll)/, t = this.parents().filter(function () { var t = w(this); return (!i || "static" !== t.css("position")) && s.test(t.css("overflow") + t.css("overflow-y") + t.css("overflow-x")); }).eq(0); return "fixed" !== e && t.length ? t : w(this[0].ownerDocument || document); }, w.fn.extend({ uniqueId: (t = 0, function () { return this.each(function () { this.id || (this.id = "ui-id-" + ++t); }); }), removeUniqueId: function removeUniqueId() { return this.each(function () { /^ui-id-\d+$/.test(this.id) && w(this).removeAttr("id"); }); } }), w.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()); var t, p = !1; w(document).on("mouseup", function () { p = !1; }); w.widget("ui.mouse", { version: "1.13.2", options: { cancel: "input, textarea, button, select, option", distance: 1, delay: 0 }, _mouseInit: function _mouseInit() { var e = this; this.element.on("mousedown." + this.widgetName, function (t) { return e._mouseDown(t); }).on("click." + this.widgetName, function (t) { if (!0 === w.data(t.target, e.widgetName + ".preventClickEvent")) return w.removeData(t.target, e.widgetName + ".preventClickEvent"), t.stopImmediatePropagation(), !1; }), this.started = !1; }, _mouseDestroy: function _mouseDestroy() { this.element.off("." + this.widgetName), this._mouseMoveDelegate && this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate); }, _mouseDown: function _mouseDown(t) { if (!p) { this._mouseMoved = !1, this._mouseStarted && this._mouseUp(t), this._mouseDownEvent = t; var e = this, i = 1 === t.which, s = !("string" != typeof this.options.cancel || !t.target.nodeName) && w(t.target).closest(this.options.cancel).length; return i && !s && this._mouseCapture(t) ? (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () { e.mouseDelayMet = !0; }, this.options.delay)), this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = !1 !== this._mouseStart(t), !this._mouseStarted) ? (t.preventDefault(), !0) : (!0 === w.data(t.target, this.widgetName + ".preventClickEvent") && w.removeData(t.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function (t) { return e._mouseMove(t); }, this._mouseUpDelegate = function (t) { return e._mouseUp(t); }, this.document.on("mousemove." + this.widgetName, this._mouseMoveDelegate).on("mouseup." + this.widgetName, this._mouseUpDelegate), t.preventDefault(), p = !0)) : !0; } }, _mouseMove: function _mouseMove(t) { if (this._mouseMoved) { if (w.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button) return this._mouseUp(t); if (!t.which) if (t.originalEvent.altKey || t.originalEvent.ctrlKey || t.originalEvent.metaKey || t.originalEvent.shiftKey) this.ignoreMissingWhich = !0;else if (!this.ignoreMissingWhich) return this._mouseUp(t); } return (t.which || t.button) && (this._mouseMoved = !0), this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = !1 !== this._mouseStart(this._mouseDownEvent, t), this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted); }, _mouseUp: function _mouseUp(t) { this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && w.data(t.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(t)), this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer), this.ignoreMissingWhich = !1, p = !1, t.preventDefault(); }, _mouseDistanceMet: function _mouseDistanceMet(t) { return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this._mouseDownEvent.pageY - t.pageY)) >= this.options.distance; }, _mouseDelayMet: function _mouseDelayMet() { return this.mouseDelayMet; }, _mouseStart: function _mouseStart() {}, _mouseDrag: function _mouseDrag() {}, _mouseStop: function _mouseStop() {}, _mouseCapture: function _mouseCapture() { return !0; } }), w.ui.plugin = { add: function add(t, e, i) { var s, o = w.ui[t].prototype; for (s in i) { o.plugins[s] = o.plugins[s] || [], o.plugins[s].push([e, i[s]]); } }, call: function call(t, e, i, s) { var o, n = t.plugins[e]; if (n && (s || t.element[0].parentNode && 11 !== t.element[0].parentNode.nodeType)) for (o = 0; o < n.length; o++) { t.options[n[o][0]] && n[o][1].apply(t.element, i); } } }, w.ui.safeActiveElement = function (e) { var i; try { i = e.activeElement; } catch (t) { i = e.body; } return i = !(i = i || e.body).nodeName ? e.body : i; }, w.ui.safeBlur = function (t) { t && "body" !== t.nodeName.toLowerCase() && w(t).trigger("blur"); }; w.widget("ui.draggable", w.ui.mouse, { version: "1.13.2", widgetEventPrefix: "drag", options: { addClasses: !0, appendTo: "parent", axis: !1, connectToSortable: !1, containment: !1, cursor: "auto", cursorAt: !1, grid: !1, handle: !1, helper: "original", iframeFix: !1, opacity: !1, refreshPositions: !1, revert: !1, revertDuration: 500, scope: "default", scroll: !0, scrollSensitivity: 20, scrollSpeed: 20, snap: !1, snapMode: "both", snapTolerance: 20, stack: !1, zIndex: !1, drag: null, start: null, stop: null }, _create: function _create() { "original" === this.options.helper && this._setPositionRelative(), this.options.addClasses && this._addClass("ui-draggable"), this._setHandleClassName(), this._mouseInit(); }, _setOption: function _setOption(t, e) { this._super(t, e), "handle" === t && (this._removeHandleClassName(), this._setHandleClassName()); }, _destroy: function _destroy() { (this.helper || this.element).is(".ui-draggable-dragging") ? this.destroyOnClear = !0 : (this._removeHandleClassName(), this._mouseDestroy()); }, _mouseCapture: function _mouseCapture(t) { var e = this.options; return !(this.helper || e.disabled || 0 < w(t.target).closest(".ui-resizable-handle").length) && (this.handle = this._getHandle(t), !!this.handle && (this._blurActiveElement(t), this._blockFrames(!0 === e.iframeFix ? "iframe" : e.iframeFix), !0)); }, _blockFrames: function _blockFrames(t) { this.iframeBlocks = this.document.find(t).map(function () { var t = w(this); return w("
").css("position", "absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]; }); }, _unblockFrames: function _unblockFrames() { this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks); }, _blurActiveElement: function _blurActiveElement(t) { var e = w.ui.safeActiveElement(this.document[0]); w(t.target).closest(e).length || w.ui.safeBlur(e); }, _mouseStart: function _mouseStart(t) { var e = this.options; return this.helper = this._createHelper(t), this._addClass(this.helper, "ui-draggable-dragging"), this._cacheHelperProportions(), w.ui.ddmanager && (w.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.hasFixedAncestor = 0 < this.helper.parents().filter(function () { return "fixed" === w(this).css("position"); }).length, this.positionAbs = this.element.offset(), this._refreshOffsets(t), this.originalPosition = this.position = this._generatePosition(t, !1), this.originalPageX = t.pageX, this.originalPageY = t.pageY, e.cursorAt && this._adjustOffsetFromHelper(e.cursorAt), this._setContainment(), !1 === this._trigger("start", t) ? (this._clear(), !1) : (this._cacheHelperProportions(), w.ui.ddmanager && !e.dropBehaviour && w.ui.ddmanager.prepareOffsets(this, t), this._mouseDrag(t, !0), w.ui.ddmanager && w.ui.ddmanager.dragStart(this, t), !0); }, _refreshOffsets: function _refreshOffsets(t) { this.offset = { top: this.positionAbs.top - this.margins.top, left: this.positionAbs.left - this.margins.left, scroll: !1, parent: this._getParentOffset(), relative: this._getRelativeOffset() }, this.offset.click = { left: t.pageX - this.offset.left, top: t.pageY - this.offset.top }; }, _mouseDrag: function _mouseDrag(t, e) { if (this.hasFixedAncestor && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(t, !0), this.positionAbs = this._convertPositionTo("absolute"), !e) { e = this._uiHash(); if (!1 === this._trigger("drag", t, e)) return this._mouseUp(new w.Event("mouseup", t)), !1; this.position = e.position; } return this.helper[0].style.left = this.position.left + "px", this.helper[0].style.top = this.position.top + "px", w.ui.ddmanager && w.ui.ddmanager.drag(this, t), !1; }, _mouseStop: function _mouseStop(t) { var e = this, i = !1; return w.ui.ddmanager && !this.options.dropBehaviour && (i = w.ui.ddmanager.drop(this, t)), this.dropped && (i = this.dropped, this.dropped = !1), "invalid" === this.options.revert && !i || "valid" === this.options.revert && i || !0 === this.options.revert || "function" == typeof this.options.revert && this.options.revert.call(this.element, i) ? w(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () { !1 !== e._trigger("stop", t) && e._clear(); }) : !1 !== this._trigger("stop", t) && this._clear(), !1; }, _mouseUp: function _mouseUp(t) { return this._unblockFrames(), w.ui.ddmanager && w.ui.ddmanager.dragStop(this, t), this.handleElement.is(t.target) && this.element.trigger("focus"), w.ui.mouse.prototype._mouseUp.call(this, t); }, cancel: function cancel() { return this.helper.is(".ui-draggable-dragging") ? this._mouseUp(new w.Event("mouseup", { target: this.element[0] })) : this._clear(), this; }, _getHandle: function _getHandle(t) { return !this.options.handle || !!w(t.target).closest(this.element.find(this.options.handle)).length; }, _setHandleClassName: function _setHandleClassName() { this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this._addClass(this.handleElement, "ui-draggable-handle"); }, _removeHandleClassName: function _removeHandleClassName() { this._removeClass(this.handleElement, "ui-draggable-handle"); }, _createHelper: function _createHelper(t) { var e = this.options, i = "function" == typeof e.helper, t = i ? w(e.helper.apply(this.element[0], [t])) : "clone" === e.helper ? this.element.clone().removeAttr("id") : this.element; return t.parents("body").length || t.appendTo("parent" === e.appendTo ? this.element[0].parentNode : e.appendTo), i && t[0] === this.element[0] && this._setPositionRelative(), t[0] === this.element[0] || /(fixed|absolute)/.test(t.css("position")) || t.css("position", "absolute"), t; }, _setPositionRelative: function _setPositionRelative() { /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative"); }, _adjustOffsetFromHelper: function _adjustOffsetFromHelper(t) { "string" == typeof t && (t = t.split(" ")), "left" in (t = Array.isArray(t) ? { left: +t[0], top: +t[1] || 0 } : t) && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left), "top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top); }, _isRootNode: function _isRootNode(t) { return /(html|body)/i.test(t.tagName) || t === this.document[0]; }, _getParentOffset: function _getParentOffset() { var t = this.offsetParent.offset(), e = this.document[0]; return "absolute" === this.cssPosition && this.scrollParent[0] !== e && w.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(), t.top += this.scrollParent.scrollTop()), { top: (t = this._isRootNode(this.offsetParent[0]) ? { top: 0, left: 0 } : t).top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) }; }, _getRelativeOffset: function _getRelativeOffset() { if ("relative" !== this.cssPosition) return { top: 0, left: 0 }; var t = this.element.position(), e = this._isRootNode(this.scrollParent[0]); return { top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + (e ? 0 : this.scrollParent.scrollTop()), left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + (e ? 0 : this.scrollParent.scrollLeft()) }; }, _cacheMargins: function _cacheMargins() { this.margins = { left: parseInt(this.element.css("marginLeft"), 10) || 0, top: parseInt(this.element.css("marginTop"), 10) || 0, right: parseInt(this.element.css("marginRight"), 10) || 0, bottom: parseInt(this.element.css("marginBottom"), 10) || 0 }; }, _cacheHelperProportions: function _cacheHelperProportions() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function _setContainment() { var t, e, i, s = this.options, o = this.document[0]; this.relativeContainer = null, s.containment ? "window" !== s.containment ? "document" !== s.containment ? s.containment.constructor !== Array ? ("parent" === s.containment && (s.containment = this.helper[0].parentNode), (i = (e = w(s.containment))[0]) && (t = /(scroll|auto)/.test(e.css("overflow")), this.containment = [(parseInt(e.css("borderLeftWidth"), 10) || 0) + (parseInt(e.css("paddingLeft"), 10) || 0), (parseInt(e.css("borderTopWidth"), 10) || 0) + (parseInt(e.css("paddingTop"), 10) || 0), (t ? Math.max(i.scrollWidth, i.offsetWidth) : i.offsetWidth) - (parseInt(e.css("borderRightWidth"), 10) || 0) - (parseInt(e.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (t ? Math.max(i.scrollHeight, i.offsetHeight) : i.offsetHeight) - (parseInt(e.css("borderBottomWidth"), 10) || 0) - (parseInt(e.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relativeContainer = e)) : this.containment = s.containment : this.containment = [0, 0, w(o).width() - this.helperProportions.width - this.margins.left, (w(o).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top] : this.containment = [w(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, w(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, w(window).scrollLeft() + w(window).width() - this.helperProportions.width - this.margins.left, w(window).scrollTop() + (w(window).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top] : this.containment = null; }, _convertPositionTo: function _convertPositionTo(t, e) { e = e || this.position; var i = "absolute" === t ? 1 : -1, t = this._isRootNode(this.scrollParent[0]); return { top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.offset.scroll.top : t ? 0 : this.offset.scroll.top) * i, left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.offset.scroll.left : t ? 0 : this.offset.scroll.left) * i }; }, _generatePosition: function _generatePosition(t, e) { var i, s = this.options, o = this._isRootNode(this.scrollParent[0]), n = t.pageX, r = t.pageY; return o && this.offset.scroll || (this.offset.scroll = { top: this.scrollParent.scrollTop(), left: this.scrollParent.scrollLeft() }), e && (this.containment && (i = this.relativeContainer ? (i = this.relativeContainer.offset(), [this.containment[0] + i.left, this.containment[1] + i.top, this.containment[2] + i.left, this.containment[3] + i.top]) : this.containment, t.pageX - this.offset.click.left < i[0] && (n = i[0] + this.offset.click.left), t.pageY - this.offset.click.top < i[1] && (r = i[1] + this.offset.click.top), t.pageX - this.offset.click.left > i[2] && (n = i[2] + this.offset.click.left), t.pageY - this.offset.click.top > i[3] && (r = i[3] + this.offset.click.top)), s.grid && (t = s.grid[1] ? this.originalPageY + Math.round((r - this.originalPageY) / s.grid[1]) * s.grid[1] : this.originalPageY, r = !i || t - this.offset.click.top >= i[1] || t - this.offset.click.top > i[3] ? t : t - this.offset.click.top >= i[1] ? t - s.grid[1] : t + s.grid[1], t = s.grid[0] ? this.originalPageX + Math.round((n - this.originalPageX) / s.grid[0]) * s.grid[0] : this.originalPageX, n = !i || t - this.offset.click.left >= i[0] || t - this.offset.click.left > i[2] ? t : t - this.offset.click.left >= i[0] ? t - s.grid[0] : t + s.grid[0]), "y" === s.axis && (n = this.originalPageX), "x" === s.axis && (r = this.originalPageY)), { top: r - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.offset.scroll.top : o ? 0 : this.offset.scroll.top), left: n - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.offset.scroll.left : o ? 0 : this.offset.scroll.left) }; }, _clear: function _clear() { this._removeClass(this.helper, "ui-draggable-dragging"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy(); }, _trigger: function _trigger(t, e, i) { return i = i || this._uiHash(), w.ui.plugin.call(this, t, [e, i, this], !0), /^(drag|start|stop)/.test(t) && (this.positionAbs = this._convertPositionTo("absolute"), i.offset = this.positionAbs), w.Widget.prototype._trigger.call(this, t, e, i); }, plugins: {}, _uiHash: function _uiHash() { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs }; } }), w.ui.plugin.add("draggable", "connectToSortable", { start: function start(e, t, i) { var s = w.extend({}, t, { item: i.element }); i.sortables = [], w(i.options.connectToSortable).each(function () { var t = w(this).sortable("instance"); t && !t.options.disabled && (i.sortables.push(t), t.refreshPositions(), t._trigger("activate", e, s)); }); }, stop: function stop(e, t, i) { var s = w.extend({}, t, { item: i.element }); i.cancelHelperRemoval = !1, w.each(i.sortables, function () { var t = this; t.isOver ? (t.isOver = 0, i.cancelHelperRemoval = !0, t.cancelHelperRemoval = !1, t._storedCSS = { position: t.placeholder.css("position"), top: t.placeholder.css("top"), left: t.placeholder.css("left") }, t._mouseStop(e), t.options.helper = t.options._helper) : (t.cancelHelperRemoval = !0, t._trigger("deactivate", e, s)); }); }, drag: function drag(i, s, o) { w.each(o.sortables, function () { var t = !1, e = this; e.positionAbs = o.positionAbs, e.helperProportions = o.helperProportions, e.offset.click = o.offset.click, e._intersectsWith(e.containerCache) && (t = !0, w.each(o.sortables, function () { return this.positionAbs = o.positionAbs, this.helperProportions = o.helperProportions, this.offset.click = o.offset.click, t = this !== e && this._intersectsWith(this.containerCache) && w.contains(e.element[0], this.element[0]) ? !1 : t; })), t ? (e.isOver || (e.isOver = 1, o._parent = s.helper.parent(), e.currentItem = s.helper.appendTo(e.element).data("ui-sortable-item", !0), e.options._helper = e.options.helper, e.options.helper = function () { return s.helper[0]; }, i.target = e.currentItem[0], e._mouseCapture(i, !0), e._mouseStart(i, !0, !0), e.offset.click.top = o.offset.click.top, e.offset.click.left = o.offset.click.left, e.offset.parent.left -= o.offset.parent.left - e.offset.parent.left, e.offset.parent.top -= o.offset.parent.top - e.offset.parent.top, o._trigger("toSortable", i), o.dropped = e.element, w.each(o.sortables, function () { this.refreshPositions(); }), o.currentItem = o.element, e.fromOutside = o), e.currentItem && (e._mouseDrag(i), s.position = e.position)) : e.isOver && (e.isOver = 0, e.cancelHelperRemoval = !0, e.options._revert = e.options.revert, e.options.revert = !1, e._trigger("out", i, e._uiHash(e)), e._mouseStop(i, !0), e.options.revert = e.options._revert, e.options.helper = e.options._helper, e.placeholder && e.placeholder.remove(), s.helper.appendTo(o._parent), o._refreshOffsets(i), s.position = o._generatePosition(i, !0), o._trigger("fromSortable", i), o.dropped = !1, w.each(o.sortables, function () { this.refreshPositions(); })); }); } }), w.ui.plugin.add("draggable", "cursor", { start: function start(t, e, i) { var s = w("body"), i = i.options; s.css("cursor") && (i._cursor = s.css("cursor")), s.css("cursor", i.cursor); }, stop: function stop(t, e, i) { i = i.options; i._cursor && w("body").css("cursor", i._cursor); } }), w.ui.plugin.add("draggable", "opacity", { start: function start(t, e, i) { e = w(e.helper), i = i.options; e.css("opacity") && (i._opacity = e.css("opacity")), e.css("opacity", i.opacity); }, stop: function stop(t, e, i) { i = i.options; i._opacity && w(e.helper).css("opacity", i._opacity); } }), w.ui.plugin.add("draggable", "scroll", { start: function start(t, e, i) { i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && "HTML" !== i.scrollParentNotHidden[0].tagName && (i.overflowOffset = i.scrollParentNotHidden.offset()); }, drag: function drag(t, e, i) { var s = i.options, o = !1, n = i.scrollParentNotHidden[0], r = i.document[0]; n !== r && "HTML" !== n.tagName ? (s.axis && "x" === s.axis || (i.overflowOffset.top + n.offsetHeight - t.pageY < s.scrollSensitivity ? n.scrollTop = o = n.scrollTop + s.scrollSpeed : t.pageY - i.overflowOffset.top < s.scrollSensitivity && (n.scrollTop = o = n.scrollTop - s.scrollSpeed)), s.axis && "y" === s.axis || (i.overflowOffset.left + n.offsetWidth - t.pageX < s.scrollSensitivity ? n.scrollLeft = o = n.scrollLeft + s.scrollSpeed : t.pageX - i.overflowOffset.left < s.scrollSensitivity && (n.scrollLeft = o = n.scrollLeft - s.scrollSpeed))) : (s.axis && "x" === s.axis || (t.pageY - w(r).scrollTop() < s.scrollSensitivity ? o = w(r).scrollTop(w(r).scrollTop() - s.scrollSpeed) : w(window).height() - (t.pageY - w(r).scrollTop()) < s.scrollSensitivity && (o = w(r).scrollTop(w(r).scrollTop() + s.scrollSpeed))), s.axis && "y" === s.axis || (t.pageX - w(r).scrollLeft() < s.scrollSensitivity ? o = w(r).scrollLeft(w(r).scrollLeft() - s.scrollSpeed) : w(window).width() - (t.pageX - w(r).scrollLeft()) < s.scrollSensitivity && (o = w(r).scrollLeft(w(r).scrollLeft() + s.scrollSpeed)))), !1 !== o && w.ui.ddmanager && !s.dropBehaviour && w.ui.ddmanager.prepareOffsets(i, t); } }), w.ui.plugin.add("draggable", "snap", { start: function start(t, e, i) { var s = i.options; i.snapElements = [], w(s.snap.constructor !== String ? s.snap.items || ":data(ui-draggable)" : s.snap).each(function () { var t = w(this), e = t.offset(); this !== i.element[0] && i.snapElements.push({ item: this, width: t.outerWidth(), height: t.outerHeight(), top: e.top, left: e.left }); }); }, drag: function drag(t, e, i) { for (var s, o, n, r, h, a, l, c, u, p = i.options, f = p.snapTolerance, d = e.offset.left, m = d + i.helperProportions.width, g = e.offset.top, v = g + i.helperProportions.height, _ = i.snapElements.length - 1; 0 <= _; _--) { a = (h = i.snapElements[_].left - i.margins.left) + i.snapElements[_].width, c = (l = i.snapElements[_].top - i.margins.top) + i.snapElements[_].height, m < h - f || a + f < d || v < l - f || c + f < g || !w.contains(i.snapElements[_].item.ownerDocument, i.snapElements[_].item) ? (i.snapElements[_].snapping && i.options.snap.release && i.options.snap.release.call(i.element, t, w.extend(i._uiHash(), { snapItem: i.snapElements[_].item })), i.snapElements[_].snapping = !1) : ("inner" !== p.snapMode && (s = Math.abs(l - v) <= f, o = Math.abs(c - g) <= f, n = Math.abs(h - m) <= f, r = Math.abs(a - d) <= f, s && (e.position.top = i._convertPositionTo("relative", { top: l - i.helperProportions.height, left: 0 }).top), o && (e.position.top = i._convertPositionTo("relative", { top: c, left: 0 }).top), n && (e.position.left = i._convertPositionTo("relative", { top: 0, left: h - i.helperProportions.width }).left), r && (e.position.left = i._convertPositionTo("relative", { top: 0, left: a }).left)), u = s || o || n || r, "outer" !== p.snapMode && (s = Math.abs(l - g) <= f, o = Math.abs(c - v) <= f, n = Math.abs(h - d) <= f, r = Math.abs(a - m) <= f, s && (e.position.top = i._convertPositionTo("relative", { top: l, left: 0 }).top), o && (e.position.top = i._convertPositionTo("relative", { top: c - i.helperProportions.height, left: 0 }).top), n && (e.position.left = i._convertPositionTo("relative", { top: 0, left: h }).left), r && (e.position.left = i._convertPositionTo("relative", { top: 0, left: a - i.helperProportions.width }).left)), !i.snapElements[_].snapping && (s || o || n || r || u) && i.options.snap.snap && i.options.snap.snap.call(i.element, t, w.extend(i._uiHash(), { snapItem: i.snapElements[_].item })), i.snapElements[_].snapping = s || o || n || r || u); } } }), w.ui.plugin.add("draggable", "stack", { start: function start(t, e, i) { var s, i = i.options, i = w.makeArray(w(i.stack)).sort(function (t, e) { return (parseInt(w(t).css("zIndex"), 10) || 0) - (parseInt(w(e).css("zIndex"), 10) || 0); }); i.length && (s = parseInt(w(i[0]).css("zIndex"), 10) || 0, w(i).each(function (t) { w(this).css("zIndex", s + t); }), this.css("zIndex", s + i.length)); } }), w.ui.plugin.add("draggable", "zIndex", { start: function start(t, e, i) { e = w(e.helper), i = i.options; e.css("zIndex") && (i._zIndex = e.css("zIndex")), e.css("zIndex", i.zIndex); }, stop: function stop(t, e, i) { i = i.options; i._zIndex && w(e.helper).css("zIndex", i._zIndex); } }); w.ui.draggable, w.widget("ui.sortable", w.ui.mouse, { version: "1.13.2", widgetEventPrefix: "sort", ready: !1, options: { appendTo: "parent", axis: !1, connectWith: !1, containment: !1, cursor: "auto", cursorAt: !1, dropOnEmpty: !0, forcePlaceholderSize: !1, forceHelperSize: !1, grid: !1, handle: !1, helper: "original", items: "> *", opacity: !1, placeholder: !1, revert: !1, scroll: !0, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1e3, activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _isOverAxis: function _isOverAxis(t, e, i) { return e <= t && t < e + i; }, _isFloating: function _isFloating(t) { return /left|right/.test(t.css("float")) || /inline|table-cell/.test(t.css("display")); }, _create: function _create() { this.containerCache = {}, this._addClass("ui-sortable"), this.refresh(), this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0; }, _setOption: function _setOption(t, e) { this._super(t, e), "handle" === t && this._setHandleClassName(); }, _setHandleClassName: function _setHandleClassName() { var t = this; this._removeClass(this.element.find(".ui-sortable-handle"), "ui-sortable-handle"), w.each(this.items, function () { t._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, "ui-sortable-handle"); }); }, _destroy: function _destroy() { this._mouseDestroy(); for (var t = this.items.length - 1; 0 <= t; t--) { this.items[t].item.removeData(this.widgetName + "-item"); } return this; }, _mouseCapture: function _mouseCapture(t, e) { var i = null, s = !1, o = this; return !this.reverting && !this.options.disabled && "static" !== this.options.type && (this._refreshItems(t), w(t.target).parents().each(function () { if (w.data(this, o.widgetName + "-item") === o) return i = w(this), !1; }), !!(i = w.data(t.target, o.widgetName + "-item") === o ? w(t.target) : i) && !(this.options.handle && !e && (w(this.options.handle, i).find("*").addBack().each(function () { this === t.target && (s = !0); }), !s)) && (this.currentItem = i, this._removeCurrentsFromItems(), !0)); }, _mouseStart: function _mouseStart(t, e, i) { var s, o, n = this.options; if ((this.currentContainer = this).refreshPositions(), this.appendTo = w("parent" !== n.appendTo ? n.appendTo : this.currentItem.parent()), this.helper = this._createHelper(t), this._cacheHelperProportions(), this._cacheMargins(), this.offset = this.currentItem.offset(), this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }, w.extend(this.offset, { click: { left: t.pageX - this.offset.left, top: t.pageY - this.offset.top }, relative: this._getRelativeOffset() }), this.helper.css("position", "absolute"), this.cssPosition = this.helper.css("position"), n.cursorAt && this._adjustOffsetFromHelper(n.cursorAt), this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), this.scrollParent = this.placeholder.scrollParent(), w.extend(this.offset, { parent: this._getParentOffset() }), n.containment && this._setContainment(), n.cursor && "auto" !== n.cursor && (o = this.document.find("body"), this.storedCursor = o.css("cursor"), o.css("cursor", n.cursor), this.storedStylesheet = w("").appendTo(o)), n.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", n.zIndex)), n.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", n.opacity)), this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this._trigger("start", t, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !i) for (s = this.containers.length - 1; 0 <= s; s--) { this.containers[s]._trigger("activate", t, this._uiHash(this)); } return w.ui.ddmanager && (w.ui.ddmanager.current = this), w.ui.ddmanager && !n.dropBehaviour && w.ui.ddmanager.prepareOffsets(this, t), this.dragging = !0, this._addClass(this.helper, "ui-sortable-helper"), this.helper.parent().is(this.appendTo) || (this.helper.detach().appendTo(this.appendTo), this.offset.parent = this._getParentOffset()), this.position = this.originalPosition = this._generatePosition(t), this.originalPageX = t.pageX, this.originalPageY = t.pageY, this.lastPositionAbs = this.positionAbs = this._convertPositionTo("absolute"), this._mouseDrag(t), !0; }, _scroll: function _scroll(t) { var e = this.options, i = !1; return this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - t.pageY < e.scrollSensitivity ? this.scrollParent[0].scrollTop = i = this.scrollParent[0].scrollTop + e.scrollSpeed : t.pageY - this.overflowOffset.top < e.scrollSensitivity && (this.scrollParent[0].scrollTop = i = this.scrollParent[0].scrollTop - e.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - t.pageX < e.scrollSensitivity ? this.scrollParent[0].scrollLeft = i = this.scrollParent[0].scrollLeft + e.scrollSpeed : t.pageX - this.overflowOffset.left < e.scrollSensitivity && (this.scrollParent[0].scrollLeft = i = this.scrollParent[0].scrollLeft - e.scrollSpeed)) : (t.pageY - this.document.scrollTop() < e.scrollSensitivity ? i = this.document.scrollTop(this.document.scrollTop() - e.scrollSpeed) : this.window.height() - (t.pageY - this.document.scrollTop()) < e.scrollSensitivity && (i = this.document.scrollTop(this.document.scrollTop() + e.scrollSpeed)), t.pageX - this.document.scrollLeft() < e.scrollSensitivity ? i = this.document.scrollLeft(this.document.scrollLeft() - e.scrollSpeed) : this.window.width() - (t.pageX - this.document.scrollLeft()) < e.scrollSensitivity && (i = this.document.scrollLeft(this.document.scrollLeft() + e.scrollSpeed))), i; }, _mouseDrag: function _mouseDrag(t) { var e, i, s, o, n = this.options; for (this.position = this._generatePosition(t), this.positionAbs = this._convertPositionTo("absolute"), this.options.axis && "y" === this.options.axis || (this.helper[0].style.left = this.position.left + "px"), this.options.axis && "x" === this.options.axis || (this.helper[0].style.top = this.position.top + "px"), n.scroll && !1 !== this._scroll(t) && (this._refreshItemPositions(!0), w.ui.ddmanager && !n.dropBehaviour && w.ui.ddmanager.prepareOffsets(this, t)), this.dragDirection = { vertical: this._getDragVerticalDirection(), horizontal: this._getDragHorizontalDirection() }, e = this.items.length - 1; 0 <= e; e--) { if (s = (i = this.items[e]).item[0], (o = this._intersectsWithPointer(i)) && i.instance === this.currentContainer && !(s === this.currentItem[0] || this.placeholder[1 === o ? "next" : "prev"]()[0] === s || w.contains(this.placeholder[0], s) || "semi-dynamic" === this.options.type && w.contains(this.element[0], s))) { if (this.direction = 1 === o ? "down" : "up", "pointer" !== this.options.tolerance && !this._intersectsWithSides(i)) break; this._rearrange(t, i), this._trigger("change", t, this._uiHash()); break; } } return this._contactContainers(t), w.ui.ddmanager && w.ui.ddmanager.drag(this, t), this._trigger("sort", t, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1; }, _mouseStop: function _mouseStop(t, e) { var i, s, o, n; if (t) return w.ui.ddmanager && !this.options.dropBehaviour && w.ui.ddmanager.drop(this, t), this.options.revert ? (s = (i = this).placeholder.offset(), n = {}, (o = this.options.axis) && "x" !== o || (n.left = s.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft)), o && "y" !== o || (n.top = s.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, w(this.helper).animate(n, parseInt(this.options.revert, 10) || 500, function () { i._clear(t); })) : this._clear(t, e), !1; }, cancel: function cancel() { if (this.dragging) { this._mouseUp(new w.Event("mouseup", { target: null })), "original" === this.options.helper ? (this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper")) : this.currentItem.show(); for (var t = this.containers.length - 1; 0 <= t; t--) { this.containers[t]._trigger("deactivate", null, this._uiHash(this)), this.containers[t].containerCache.over && (this.containers[t]._trigger("out", null, this._uiHash(this)), this.containers[t].containerCache.over = 0); } } return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), "original" !== this.options.helper && this.helper && this.helper[0].parentNode && this.helper.remove(), w.extend(this, { helper: null, dragging: !1, reverting: !1, _noFinalSort: null }), this.domPosition.prev ? w(this.domPosition.prev).after(this.currentItem) : w(this.domPosition.parent).prepend(this.currentItem)), this; }, serialize: function serialize(e) { var t = this._getItemsAsjQuery(e && e.connected), i = []; return e = e || {}, w(t).each(function () { var t = (w(e.item || this).attr(e.attribute || "id") || "").match(e.expression || /(.+)[\-=_](.+)/); t && i.push((e.key || t[1] + "[]") + "=" + (e.key && e.expression ? t[1] : t[2])); }), !i.length && e.key && i.push(e.key + "="), i.join("&"); }, toArray: function toArray(t) { var e = this._getItemsAsjQuery(t && t.connected), i = []; return t = t || {}, e.each(function () { i.push(w(t.item || this).attr(t.attribute || "id") || ""); }), i; }, _intersectsWith: function _intersectsWith(t) { var e = this.positionAbs.left, i = e + this.helperProportions.width, s = this.positionAbs.top, o = s + this.helperProportions.height, n = t.left, r = n + t.width, h = t.top, a = h + t.height, l = this.offset.click.top, c = this.offset.click.left, l = "x" === this.options.axis || h < s + l && s + l < a, c = "y" === this.options.axis || n < e + c && e + c < r; return "pointer" === this.options.tolerance || this.options.forcePointerForContainers || "pointer" !== this.options.tolerance && this.helperProportions[this.floating ? "width" : "height"] > t[this.floating ? "width" : "height"] ? l && c : n < e + this.helperProportions.width / 2 && i - this.helperProportions.width / 2 < r && h < s + this.helperProportions.height / 2 && o - this.helperProportions.height / 2 < a; }, _intersectsWithPointer: function _intersectsWithPointer(t) { var e = "x" === this.options.axis || this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top, t.height), t = "y" === this.options.axis || this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left, t.width); return !(!e || !t) && (e = this.dragDirection.vertical, t = this.dragDirection.horizontal, this.floating ? "right" === t || "down" === e ? 2 : 1 : e && ("down" === e ? 2 : 1)); }, _intersectsWithSides: function _intersectsWithSides(t) { var e = this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top + t.height / 2, t.height), i = this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left + t.width / 2, t.width), s = this.dragDirection.vertical, t = this.dragDirection.horizontal; return this.floating && t ? "right" === t && i || "left" === t && !i : s && ("down" === s && e || "up" === s && !e); }, _getDragVerticalDirection: function _getDragVerticalDirection() { var t = this.positionAbs.top - this.lastPositionAbs.top; return 0 != t && (0 < t ? "down" : "up"); }, _getDragHorizontalDirection: function _getDragHorizontalDirection() { var t = this.positionAbs.left - this.lastPositionAbs.left; return 0 != t && (0 < t ? "right" : "left"); }, refresh: function refresh(t) { return this._refreshItems(t), this._setHandleClassName(), this.refreshPositions(), this; }, _connectWith: function _connectWith() { var t = this.options; return t.connectWith.constructor === String ? [t.connectWith] : t.connectWith; }, _getItemsAsjQuery: function _getItemsAsjQuery(t) { var e, i, s, o, n = [], r = [], h = this._connectWith(); if (h && t) for (e = h.length - 1; 0 <= e; e--) { for (i = (s = w(h[e], this.document[0])).length - 1; 0 <= i; i--) { (o = w.data(s[i], this.widgetFullName)) && o !== this && !o.options.disabled && r.push(["function" == typeof o.options.items ? o.options.items.call(o.element) : w(o.options.items, o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), o]); } } function a() { n.push(this); } for (r.push(["function" == typeof this.options.items ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : w(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]), e = r.length - 1; 0 <= e; e--) { r[e][0].each(a); } return w(n); }, _removeCurrentsFromItems: function _removeCurrentsFromItems() { var i = this.currentItem.find(":data(" + this.widgetName + "-item)"); this.items = w.grep(this.items, function (t) { for (var e = 0; e < i.length; e++) { if (i[e] === t.item[0]) return !1; } return !0; }); }, _refreshItems: function _refreshItems(t) { this.items = [], this.containers = [this]; var e, i, s, o, n, r, h, a, l = this.items, c = [["function" == typeof this.options.items ? this.options.items.call(this.element[0], t, { item: this.currentItem }) : w(this.options.items, this.element), this]], u = this._connectWith(); if (u && this.ready) for (e = u.length - 1; 0 <= e; e--) { for (i = (s = w(u[e], this.document[0])).length - 1; 0 <= i; i--) { (o = w.data(s[i], this.widgetFullName)) && o !== this && !o.options.disabled && (c.push(["function" == typeof o.options.items ? o.options.items.call(o.element[0], t, { item: this.currentItem }) : w(o.options.items, o.element), o]), this.containers.push(o)); } } for (e = c.length - 1; 0 <= e; e--) { for (n = c[e][1], a = (r = c[e][i = 0]).length; i < a; i++) { (h = w(r[i])).data(this.widgetName + "-item", n), l.push({ item: h, instance: n, width: 0, height: 0, left: 0, top: 0 }); } } }, _refreshItemPositions: function _refreshItemPositions(t) { for (var e, i, s = this.items.length - 1; 0 <= s; s--) { e = this.items[s], this.currentContainer && e.instance !== this.currentContainer && e.item[0] !== this.currentItem[0] || (i = this.options.toleranceElement ? w(this.options.toleranceElement, e.item) : e.item, t || (e.width = i.outerWidth(), e.height = i.outerHeight()), i = i.offset(), e.left = i.left, e.top = i.top); } }, refreshPositions: function refreshPositions(t) { var e, i; if (this.floating = !!this.items.length && ("x" === this.options.axis || this._isFloating(this.items[0].item)), this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset()), this._refreshItemPositions(t), this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);else for (e = this.containers.length - 1; 0 <= e; e--) { i = this.containers[e].element.offset(), this.containers[e].containerCache.left = i.left, this.containers[e].containerCache.top = i.top, this.containers[e].containerCache.width = this.containers[e].element.outerWidth(), this.containers[e].containerCache.height = this.containers[e].element.outerHeight(); } return this; }, _createPlaceholder: function _createPlaceholder(i) { var s, o, n = (i = i || this).options; n.placeholder && n.placeholder.constructor !== String || (s = n.placeholder, o = i.currentItem[0].nodeName.toLowerCase(), n.placeholder = { element: function element() { var t = w("<" + o + ">", i.document[0]); return i._addClass(t, "ui-sortable-placeholder", s || i.currentItem[0].className)._removeClass(t, "ui-sortable-helper"), "tbody" === o ? i._createTrPlaceholder(i.currentItem.find("tr").eq(0), w("", i.document[0]).appendTo(t)) : "tr" === o ? i._createTrPlaceholder(i.currentItem, t) : "img" === o && t.attr("src", i.currentItem.attr("src")), s || t.css("visibility", "hidden"), t; }, update: function update(t, e) { s && !n.forcePlaceholderSize || (e.height() && (!n.forcePlaceholderSize || "tbody" !== o && "tr" !== o) || e.height(i.currentItem.innerHeight() - parseInt(i.currentItem.css("paddingTop") || 0, 10) - parseInt(i.currentItem.css("paddingBottom") || 0, 10)), e.width() || e.width(i.currentItem.innerWidth() - parseInt(i.currentItem.css("paddingLeft") || 0, 10) - parseInt(i.currentItem.css("paddingRight") || 0, 10))); } }), i.placeholder = w(n.placeholder.element.call(i.element, i.currentItem)), i.currentItem.after(i.placeholder), n.placeholder.update(i, i.placeholder); }, _createTrPlaceholder: function _createTrPlaceholder(t, e) { var i = this; t.children().each(function () { w(" ", i.document[0]).attr("colspan", w(this).attr("colspan") || 1).appendTo(e); }); }, _contactContainers: function _contactContainers(t) { for (var e, i, s, o, n, r, h, a, l, c = null, u = null, p = this.containers.length - 1; 0 <= p; p--) { w.contains(this.currentItem[0], this.containers[p].element[0]) || (this._intersectsWith(this.containers[p].containerCache) ? c && w.contains(this.containers[p].element[0], c.element[0]) || (c = this.containers[p], u = p) : this.containers[p].containerCache.over && (this.containers[p]._trigger("out", t, this._uiHash(this)), this.containers[p].containerCache.over = 0)); } if (c) if (1 === this.containers.length) this.containers[u].containerCache.over || (this.containers[u]._trigger("over", t, this._uiHash(this)), this.containers[u].containerCache.over = 1);else { for (i = 1e4, s = null, o = (a = c.floating || this._isFloating(this.currentItem)) ? "left" : "top", n = a ? "width" : "height", l = a ? "pageX" : "pageY", e = this.items.length - 1; 0 <= e; e--) { w.contains(this.containers[u].element[0], this.items[e].item[0]) && this.items[e].item[0] !== this.currentItem[0] && (r = this.items[e].item.offset()[o], h = !1, t[l] - r > this.items[e][n] / 2 && (h = !0), Math.abs(t[l] - r) < i && (i = Math.abs(t[l] - r), s = this.items[e], this.direction = h ? "up" : "down")); } (s || this.options.dropOnEmpty) && (this.currentContainer !== this.containers[u] ? (s ? this._rearrange(t, s, null, !0) : this._rearrange(t, null, this.containers[u].element, !0), this._trigger("change", t, this._uiHash()), this.containers[u]._trigger("change", t, this._uiHash(this)), this.currentContainer = this.containers[u], this.options.placeholder.update(this.currentContainer, this.placeholder), this.scrollParent = this.placeholder.scrollParent(), this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this.containers[u]._trigger("over", t, this._uiHash(this)), this.containers[u].containerCache.over = 1) : this.currentContainer.containerCache.over || (this.containers[u]._trigger("over", t, this._uiHash()), this.currentContainer.containerCache.over = 1)); } }, _createHelper: function _createHelper(t) { var e = this.options, t = "function" == typeof e.helper ? w(e.helper.apply(this.element[0], [t, this.currentItem])) : "clone" === e.helper ? this.currentItem.clone() : this.currentItem; return t.parents("body").length || this.appendTo[0].appendChild(t[0]), t[0] === this.currentItem[0] && (this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }), t[0].style.width && !e.forceHelperSize || t.width(this.currentItem.width()), t[0].style.height && !e.forceHelperSize || t.height(this.currentItem.height()), t; }, _adjustOffsetFromHelper: function _adjustOffsetFromHelper(t) { "string" == typeof t && (t = t.split(" ")), "left" in (t = Array.isArray(t) ? { left: +t[0], top: +t[1] || 0 } : t) && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left), "top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top); }, _getParentOffset: function _getParentOffset() { this.offsetParent = this.helper.offsetParent(); var t = this.offsetParent.offset(); return "absolute" === this.cssPosition && this.scrollParent[0] !== this.document[0] && w.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(), t.top += this.scrollParent.scrollTop()), { top: (t = this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && "html" === this.offsetParent[0].tagName.toLowerCase() && w.ui.ie ? { top: 0, left: 0 } : t).top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) }; }, _getRelativeOffset: function _getRelativeOffset() { if ("relative" !== this.cssPosition) return { top: 0, left: 0 }; var t = this.currentItem.position(); return { top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft() }; }, _cacheMargins: function _cacheMargins() { this.margins = { left: parseInt(this.currentItem.css("marginLeft"), 10) || 0, top: parseInt(this.currentItem.css("marginTop"), 10) || 0 }; }, _cacheHelperProportions: function _cacheHelperProportions() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function _setContainment() { var t, e, i = this.options; "parent" === i.containment && (i.containment = this.helper[0].parentNode), "document" !== i.containment && "window" !== i.containment || (this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, "document" === i.containment ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, ("document" === i.containment ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]), /^(document|window|parent)$/.test(i.containment) || (t = w(i.containment)[0], e = w(i.containment).offset(), i = "hidden" !== w(t).css("overflow"), this.containment = [e.left + (parseInt(w(t).css("borderLeftWidth"), 10) || 0) + (parseInt(w(t).css("paddingLeft"), 10) || 0) - this.margins.left, e.top + (parseInt(w(t).css("borderTopWidth"), 10) || 0) + (parseInt(w(t).css("paddingTop"), 10) || 0) - this.margins.top, e.left + (i ? Math.max(t.scrollWidth, t.offsetWidth) : t.offsetWidth) - (parseInt(w(t).css("borderLeftWidth"), 10) || 0) - (parseInt(w(t).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, e.top + (i ? Math.max(t.scrollHeight, t.offsetHeight) : t.offsetHeight) - (parseInt(w(t).css("borderTopWidth"), 10) || 0) - (parseInt(w(t).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]); }, _convertPositionTo: function _convertPositionTo(t, e) { e = e || this.position; var i = "absolute" === t ? 1 : -1, s = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && w.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent, t = /(html|body)/i.test(s[0].tagName); return { top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : t ? 0 : s.scrollTop()) * i, left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : t ? 0 : s.scrollLeft()) * i }; }, _generatePosition: function _generatePosition(t) { var e = this.options, i = t.pageX, s = t.pageY, o = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && w.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent, n = /(html|body)/i.test(o[0].tagName); return "relative" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0] || (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (t.pageX - this.offset.click.left < this.containment[0] && (i = this.containment[0] + this.offset.click.left), t.pageY - this.offset.click.top < this.containment[1] && (s = this.containment[1] + this.offset.click.top), t.pageX - this.offset.click.left > this.containment[2] && (i = this.containment[2] + this.offset.click.left), t.pageY - this.offset.click.top > this.containment[3] && (s = this.containment[3] + this.offset.click.top)), e.grid && (t = this.originalPageY + Math.round((s - this.originalPageY) / e.grid[1]) * e.grid[1], s = !this.containment || t - this.offset.click.top >= this.containment[1] && t - this.offset.click.top <= this.containment[3] ? t : t - this.offset.click.top >= this.containment[1] ? t - e.grid[1] : t + e.grid[1], t = this.originalPageX + Math.round((i - this.originalPageX) / e.grid[0]) * e.grid[0], i = !this.containment || t - this.offset.click.left >= this.containment[0] && t - this.offset.click.left <= this.containment[2] ? t : t - this.offset.click.left >= this.containment[0] ? t - e.grid[0] : t + e.grid[0])), { top: s - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : n ? 0 : o.scrollTop()), left: i - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : n ? 0 : o.scrollLeft()) }; }, _rearrange: function _rearrange(t, e, i, s) { i ? i[0].appendChild(this.placeholder[0]) : e.item[0].parentNode.insertBefore(this.placeholder[0], "down" === this.direction ? e.item[0] : e.item[0].nextSibling), this.counter = this.counter ? ++this.counter : 1; var o = this.counter; this._delay(function () { o === this.counter && this.refreshPositions(!s); }); }, _clear: function _clear(t, e) { this.reverting = !1; var i, s = []; if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) { for (i in this._storedCSS) { "auto" !== this._storedCSS[i] && "static" !== this._storedCSS[i] || (this._storedCSS[i] = ""); } this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper"); } else this.currentItem.show(); function o(e, i, s) { return function (t) { s._trigger(e, t, i._uiHash(i)); }; } for (this.fromOutside && !e && s.push(function (t) { this._trigger("receive", t, this._uiHash(this.fromOutside)); }), !this.fromOutside && this.domPosition.prev === this.currentItem.prev().not(".ui-sortable-helper")[0] && this.domPosition.parent === this.currentItem.parent()[0] || e || s.push(function (t) { this._trigger("update", t, this._uiHash()); }), this !== this.currentContainer && (e || (s.push(function (t) { this._trigger("remove", t, this._uiHash()); }), s.push(function (e) { return function (t) { e._trigger("receive", t, this._uiHash(this)); }; }.call(this, this.currentContainer)), s.push(function (e) { return function (t) { e._trigger("update", t, this._uiHash(this)); }; }.call(this, this.currentContainer)))), i = this.containers.length - 1; 0 <= i; i--) { e || s.push(o("deactivate", this, this.containers[i])), this.containers[i].containerCache.over && (s.push(o("out", this, this.containers[i])), this.containers[i].containerCache.over = 0); } if (this.storedCursor && (this.document.find("body").css("cursor", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css("opacity", this._storedOpacity), this._storedZIndex && this.helper.css("zIndex", "auto" === this._storedZIndex ? "" : this._storedZIndex), this.dragging = !1, e || this._trigger("beforeStop", t, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.cancelHelperRemoval || (this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null), !e) { for (i = 0; i < s.length; i++) { s[i].call(this, t); } this._trigger("stop", t, this._uiHash()); } return this.fromOutside = !1, !this.cancelHelperRemoval; }, _trigger: function _trigger() { !1 === w.Widget.prototype._trigger.apply(this, arguments) && this.cancel(); }, _uiHash: function _uiHash(t) { var e = t || this; return { helper: e.helper, placeholder: e.placeholder || w([]), position: e.position, originalPosition: e.originalPosition, offset: e.positionAbs, item: e.currentItem, sender: t ? t.element : null }; } }), w.widget("ui.menu", { version: "1.13.2", defaultElement: "