! function (t, e) { "function" == typeof define && define.amd ? define(e) : "object" == typeof exports ? module.exports = e(require, exports, module) : t.Tether = e() }(this, function (t, e, o) { "use strict"; function i(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } function n(t) { var e = getComputedStyle(t), o = e.position; if ("fixed" === o) return t; for (var i = t; i = i.parentNode;) { var n = void 0; try { n = getComputedStyle(i) } catch (r) {} if ("undefined" == typeof n || null === n) return i; var s = n, a = s.overflow, f = s.overflowX, h = s.overflowY; if (/(auto|scroll)/.test(a + h + f) && ("absolute" !== o || ["relative", "absolute", "fixed"].indexOf(n.position) >= 0)) return i } return document.body } function r(t) { var e = void 0; t === document ? (e = document, t = document.documentElement) : e = t.ownerDocument; var o = e.documentElement, i = {}, n = t.getBoundingClientRect(); for (var r in n) i[r] = n[r]; var s = x(e); return i.top -= s.top, i.left -= s.left, "undefined" == typeof i.width && (i.width = document.body.scrollWidth - i.left - i.right), "undefined" == typeof i.height && (i.height = document.body.scrollHeight - i.top - i.bottom), i.top = i.top - o.clientTop, i.left = i.left - o.clientLeft, i.right = e.body.clientWidth - i.width - i.left, i.bottom = e.body.clientHeight - i.height - i.top, i } function s(t) { return t.offsetParent || document.documentElement } function a() { var t = document.createElement("div"); t.style.width = "100%", t.style.height = "200px"; var e = document.createElement("div"); f(e.style, { position: "absolute", top: 0, left: 0, pointerEvents: "none", visibility: "hidden", width: "200px", height: "150px", overflow: "hidden" }), e.appendChild(t), document.body.appendChild(e); var o = t.offsetWidth; e.style.overflow = "scroll"; var i = t.offsetWidth; o === i && (i = e.clientWidth), document.body.removeChild(e); var n = o - i; return { width: n, height: n } } function f() { var t = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0], e = []; return Array.prototype.push.apply(e, arguments), e.slice(1).forEach(function (e) { if (e) for (var o in e)({}).hasOwnProperty.call(e, o) && (t[o] = e[o]) }), t } function h(t, e) { if ("undefined" != typeof t.classList) e.split(" ").forEach(function (e) { e.trim() && t.classList.remove(e) }); else { var o = new RegExp("(^| )" + e.split(" ").join("|") + "( |$)", "gi"), i = u(t).replace(o, " "); p(t, i) } } function l(t, e) { if ("undefined" != typeof t.classList) e.split(" ").forEach(function (e) { e.trim() && t.classList.add(e) }); else { h(t, e); var o = u(t) + (" " + e); p(t, o) } } function d(t, e) { if ("undefined" != typeof t.classList) return t.classList.contains(e); var o = u(t); return new RegExp("(^| )" + e + "( |$)", "gi").test(o) } function u(t) { return t.className instanceof SVGAnimatedString ? t.className.baseVal : t.className } function p(t, e) { t.setAttribute("class", e) } function c(t, e, o) { o.forEach(function (o) { -1 === e.indexOf(o) && d(t, o) && h(t, o) }), e.forEach(function (e) { d(t, e) || l(t, e) }) } function i(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } function g(t, e) { var o = arguments.length <= 2 || void 0 === arguments[2] ? 1 : arguments[2]; return t + o >= e && e >= t - o } function m() { return "undefined" != typeof performance && "undefined" != typeof performance.now ? performance.now() : +new Date } function v() { for (var t = { top: 0, left: 0 }, e = arguments.length, o = Array(e), i = 0; e > i; i++) o[i] = arguments[i]; return o.forEach(function (e) { var o = e.top, i = e.left; "string" == typeof o && (o = parseFloat(o, 10)), "string" == typeof i && (i = parseFloat(i, 10)), t.top += o, t.left += i }), t } function y(t, e) { return "string" == typeof t.left && -1 !== t.left.indexOf("%") && (t.left = parseFloat(t.left, 10) / 100 * e.width), "string" == typeof t.top && -1 !== t.top.indexOf("%") && (t.top = parseFloat(t.top, 10) / 100 * e.height), t } function b(t, e) { return "scrollParent" === e ? e = t.scrollParent : "window" === e && (e = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset]), e === document && (e = e.documentElement), "undefined" != typeof e.nodeType && ! function () { var t = r(e), o = t, i = getComputedStyle(e); e = [o.left, o.top, t.width + o.left, t.height + o.top], U.forEach(function (t, o) { t = t[0].toUpperCase() + t.substr(1), "Top" === t || "Left" === t ? e[o] += parseFloat(i["border" + t + "Width"]) : e[o] -= parseFloat(i["border" + t + "Width"]) }) }(), e } var w = function () { function t(t, e) { for (var o = 0; o < e.length; o++) { var i = e[o]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) } } return function (e, o, i) { return o && t(e.prototype, o), i && t(e, i), e } }(), C = void 0; "undefined" == typeof C && (C = { modules: [] }); var O = function () { var t = 0; return function () { return ++t } }(), E = {}, x = function (t) { var e = t._tetherZeroElement; "undefined" == typeof e && (e = t.createElement("div"), e.setAttribute("data-tether-id", O()), f(e.style, { top: 0, left: 0, position: "absolute" }), t.body.appendChild(e), t._tetherZeroElement = e); var o = e.getAttribute("data-tether-id"); if ("undefined" == typeof E[o]) { E[o] = {}; var i = e.getBoundingClientRect(); for (var n in i) E[o][n] = i[n]; T(function () { delete E[o] }) } return E[o] }, A = [], T = function (t) { A.push(t) }, S = function () { for (var t = void 0; t = A.pop();) t() }, W = function () { function t() { i(this, t) } return w(t, [{ key: "on", value: function (t, e, o) { var i = arguments.length <= 3 || void 0 === arguments[3] ? !1 : arguments[3]; "undefined" == typeof this.bindings && (this.bindings = {}), "undefined" == typeof this.bindings[t] && (this.bindings[t] = []), this.bindings[t].push({ handler: e, ctx: o, once: i }) } }, { key: "once", value: function (t, e, o) { this.on(t, e, o, !0) } }, { key: "off", value: function (t, e) { if ("undefined" == typeof this.bindings || "undefined" == typeof this.bindings[t]) if ("undefined" == typeof e) delete this.bindings[t]; else for (var o = 0; o < this.bindings[t].length;) this.bindings[t][o].handler === e ? this.bindings[t].splice(o, 1) : ++o } }, { key: "trigger", value: function (t) { if ("undefined" != typeof this.bindings && this.bindings[t]) { for (var e = 0, o = arguments.length, i = Array(o > 1 ? o - 1 : 0), n = 1; o > n; n++) i[n - 1] = arguments[n]; for (; e < this.bindings[t].length;) { var r = this.bindings[t][e], s = r.handler, a = r.ctx, f = r.once, h = a; "undefined" == typeof h && (h = this), s.apply(h, i), f ? this.bindings[t].splice(e, 1) : ++e } } } }]), t }(); C.Utils = { getScrollParent: n, getBounds: r, getOffsetParent: s, extend: f, addClass: l, removeClass: h, hasClass: d, updateClasses: c, defer: T, flush: S, uniqueId: O, Evented: W, getScrollBarSize: a }; var M = function () { function t(t, e) { var o = [], i = !0, n = !1, r = void 0; try { for (var s, a = t[Symbol.iterator](); !(i = (s = a.next()).done) && (o.push(s.value), !e || o.length !== e); i = !0); } catch (f) { n = !0, r = f } finally { try { !i && a["return"] && a["return"]() } finally { if (n) throw r } } return o } return function (e, o) { if (Array.isArray(e)) return e; if (Symbol.iterator in Object(e)) return t(e, o); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), w = function () { function t(t, e) { for (var o = 0; o < e.length; o++) { var i = e[o]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) } } return function (e, o, i) { return o && t(e.prototype, o), i && t(e, i), e } }(); if ("undefined" == typeof C) throw new Error("You must include the utils.js file before tether.js"); var P = C.Utils, n = P.getScrollParent, r = P.getBounds, s = P.getOffsetParent, f = P.extend, l = P.addClass, h = P.removeClass, c = P.updateClasses, T = P.defer, S = P.flush, a = P.getScrollBarSize, k = function () { if ("undefined" == typeof document) return ""; for (var t = document.createElement("div"), e = ["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"], o = 0; o < e.length; ++o) { var i = e[o]; if (void 0 !== t.style[i]) return i } }(), B = [], _ = function () { B.forEach(function (t) { t.position(!1) }), S() }; ! function () { var t = null, e = null, o = null, i = function n() { return "undefined" != typeof e && e > 16 ? (e = Math.min(e - 16, 250), void(o = setTimeout(n, 250))) : void("undefined" != typeof t && m() - t < 10 || ("undefined" != typeof o && (clearTimeout(o), o = null), t = m(), _(), e = m() - t)) }; "undefined" != typeof window && ["resize", "scroll", "touchmove"].forEach(function (t) { window.addEventListener(t, i) }) }(); var z = { center: "center", left: "right", right: "left" }, F = { middle: "middle", top: "bottom", bottom: "top" }, L = { top: 0, left: 0, middle: "50%", center: "50%", bottom: "100%", right: "100%" }, Y = function (t, e) { var o = t.left, i = t.top; return "auto" === o && (o = z[e.left]), "auto" === i && (i = F[e.top]), { left: o, top: i } }, H = function (t) { var e = t.left, o = t.top; return "undefined" != typeof L[t.left] && (e = L[t.left]), "undefined" != typeof L[t.top] && (o = L[t.top]), { left: e, top: o } }, X = function (t) { var e = t.split(" "), o = M(e, 2), i = o[0], n = o[1]; return { top: i, left: n } }, j = X, N = function () { function t(e) { var o = this; i(this, t), this.position = this.position.bind(this), B.push(this), this.history = [], this.setOptions(e, !1), C.modules.forEach(function (t) { "undefined" != typeof t.initialize && t.initialize.call(o) }), this.position() } return w(t, [{ key: "getClass", value: function () { var t = arguments.length <= 0 || void 0 === arguments[0] ? "" : arguments[0], e = this.options.classes; return "undefined" != typeof e && e[t] ? this.options.classes[t] : this.options.classPrefix ? this.options.classPrefix + "-" + t : t } }, { key: "setOptions", value: function (t) { var e = this, o = arguments.length <= 1 || void 0 === arguments[1] ? !0 : arguments[1], i = { offset: "0 0", targetOffset: "0 0", targetAttachment: "auto auto", classPrefix: "tether" }; this.options = f(i, t); var r = this.options, s = r.element, a = r.target, h = r.targetModifier; if (this.element = s, this.target = a, this.targetModifier = h, "viewport" === this.target ? (this.target = document.body, this.targetModifier = "visible") : "scroll-handle" === this.target && (this.target = document.body, this.targetModifier = "scroll-handle"), ["element", "target"].forEach(function (t) { if ("undefined" == typeof e[t]) throw new Error("Tether Error: Both element and target must be defined"); "undefined" != typeof e[t].jquery ? e[t] = e[t][0] : "string" == typeof e[t] && (e[t] = document.querySelector(e[t])) }), l(this.element, this.getClass("element")), this.options.addTargetClasses !== !1 && l(this.target, this.getClass("target")), !this.options.attachment) throw new Error("Tether Error: You must provide an attachment"); this.targetAttachment = j(this.options.targetAttachment), this.attachment = j(this.options.attachment), this.offset = X(this.options.offset), this.targetOffset = X(this.options.targetOffset), "undefined" != typeof this.scrollParent && this.disable(), "scroll-handle" === this.targetModifier ? this.scrollParent = this.target : this.scrollParent = n(this.target), this.options.enabled !== !1 && this.enable(o) } }, { key: "getTargetBounds", value: function () { if ("undefined" == typeof this.targetModifier) return r(this.target); if ("visible" === this.targetModifier) { if (this.target === document.body) return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth }; var t = r(this.target), e = { height: t.height, width: t.width, top: t.top, left: t.left }; return e.height = Math.min(e.height, t.height - (pageYOffset - t.top)), e.height = Math.min(e.height, t.height - (t.top + t.height - (pageYOffset + innerHeight))), e.height = Math.min(innerHeight, e.height), e.height -= 2, e.width = Math.min(e.width, t.width - (pageXOffset - t.left)), e.width = Math.min(e.width, t.width - (t.left + t.width - (pageXOffset + innerWidth))), e.width = Math.min(innerWidth, e.width), e.width -= 2, e.top < pageYOffset && (e.top = pageYOffset), e.left < pageXOffset && (e.left = pageXOffset), e } if ("scroll-handle" === this.targetModifier) { var t = void 0, o = this.target; o === document.body ? (o = document.documentElement, t = { left: pageXOffset, top: pageYOffset, height: innerHeight, width: innerWidth }) : t = r(o); var i = getComputedStyle(o), n = o.scrollWidth > o.clientWidth || [i.overflow, i.overflowX].indexOf("scroll") >= 0 || this.target !== document.body, s = 0; n && (s = 15); var a = t.height - parseFloat(i.borderTopWidth) - parseFloat(i.borderBottomWidth) - s, e = { width: 15, height: .975 * a * (a / o.scrollHeight), left: t.left + t.width - parseFloat(i.borderLeftWidth) - 15 }, f = 0; 408 > a && this.target === document.body && (f = -11e-5 * Math.pow(a, 2) - .00727 * a + 22.58), this.target !== document.body && (e.height = Math.max(e.height, 24)); var h = this.target.scrollTop / (o.scrollHeight - a); return e.top = h * (a - e.height - f) + t.top + parseFloat(i.borderTopWidth), this.target === document.body && (e.height = Math.max(e.height, 24)), e } } }, { key: "clearCache", value: function () { this._cache = {} } }, { key: "cache", value: function (t, e) { return "undefined" == typeof this._cache && (this._cache = {}), "undefined" == typeof this._cache[t] && (this._cache[t] = e.call(this)), this._cache[t] } }, { key: "enable", value: function () { var t = arguments.length <= 0 || void 0 === arguments[0] ? !0 : arguments[0]; this.options.addTargetClasses !== !1 && l(this.target, this.getClass("enabled")), l(this.element, this.getClass("enabled")), this.enabled = !0, this.scrollParent !== document && this.scrollParent.addEventListener("scroll", this.position), t && this.position() } }, { key: "disable", value: function () { h(this.target, this.getClass("enabled")), h(this.element, this.getClass("enabled")), this.enabled = !1, "undefined" != typeof this.scrollParent && this.scrollParent.removeEventListener("scroll", this.position) } }, { key: "destroy", value: function () { var t = this; this.disable(), B.forEach(function (e, o) { return e === t ? void B.splice(o, 1) : void 0 }) } }, { key: "updateAttachClasses", value: function (t, e) { var o = this; t = t || this.attachment, e = e || this.targetAttachment; var i = ["left", "top", "bottom", "right", "middle", "center"]; "undefined" != typeof this._addAttachClasses && this._addAttachClasses.length && this._addAttachClasses.splice(0, this._addAttachClasses.length), "undefined" == typeof this._addAttachClasses && (this._addAttachClasses = []); var n = this._addAttachClasses; t.top && n.push(this.getClass("element-attached") + "-" + t.top), t.left && n.push(this.getClass("element-attached") + "-" + t.left), e.top && n.push(this.getClass("target-attached") + "-" + e.top), e.left && n.push(this.getClass("target-attached") + "-" + e.left); var r = []; i.forEach(function (t) { r.push(o.getClass("element-attached") + "-" + t), r.push(o.getClass("target-attached") + "-" + t) }), T(function () { "undefined" != typeof o._addAttachClasses && (c(o.element, o._addAttachClasses, r), o.options.addTargetClasses !== !1 && c(o.target, o._addAttachClasses, r), delete o._addAttachClasses) }) } }, { key: "position", value: function () { var t = this, e = arguments.length <= 0 || void 0 === arguments[0] ? !0 : arguments[0]; if (this.enabled) { this.clearCache(); var o = Y(this.targetAttachment, this.attachment); this.updateAttachClasses(this.attachment, o); var i = this.cache("element-bounds", function () { return r(t.element) }), n = i.width, f = i.height; if (0 === n && 0 === f && "undefined" != typeof this.lastSize) { var h = this.lastSize; n = h.width, f = h.height } else this.lastSize = { width: n, height: f }; var l = this.cache("target-bounds", function () { return t.getTargetBounds() }), d = l, u = y(H(this.attachment), { width: n, height: f }), p = y(H(o), d), c = y(this.offset, { width: n, height: f }), g = y(this.targetOffset, d); u = v(u, c), p = v(p, g); for (var m = l.left + p.left - u.left, b = l.top + p.top - u.top, w = 0; w < C.modules.length; ++w) { var O = C.modules[w], E = O.position.call(this, { left: m, top: b, targetAttachment: o, targetPos: l, elementPos: i, offset: u, targetOffset: p, manualOffset: c, manualTargetOffset: g, scrollbarSize: A, attachment: this.attachment }); if (E === !1) return !1; "undefined" != typeof E && "object" == typeof E && (b = E.top, m = E.left) } var x = { page: { top: b, left: m }, viewport: { top: b - pageYOffset, bottom: pageYOffset - b - f + innerHeight, left: m - pageXOffset, right: pageXOffset - m - n + innerWidth } }, A = void 0; return document.body.scrollWidth > window.innerWidth && (A = this.cache("scrollbar-size", a), x.viewport.bottom -= A.height), document.body.scrollHeight > window.innerHeight && (A = this.cache("scrollbar-size", a), x.viewport.right -= A.width), (-1 === ["", "static"].indexOf(document.body.style.position) || -1 === ["", "static"].indexOf(document.body.parentElement.style.position)) && (x.page.bottom = document.body.scrollHeight - b - f, x.page.right = document.body.scrollWidth - m - n), "undefined" != typeof this.options.optimizations && this.options.optimizations.moveElement !== !1 && "undefined" == typeof this.targetModifier && ! function () { var e = t.cache("target-offsetparent", function () { return s(t.target) }), o = t.cache("target-offsetparent-bounds", function () { return r(e) }), i = getComputedStyle(e), n = o, a = {}; if (["Top", "Left", "Bottom", "Right"].forEach(function (t) { a[t.toLowerCase()] = parseFloat(i["border" + t + "Width"]) }), o.right = document.body.scrollWidth - o.left - n.width + a.right, o.bottom = document.body.scrollHeight - o.top - n.height + a.bottom, x.page.top >= o.top + a.top && x.page.bottom >= o.bottom && x.page.left >= o.left + a.left && x.page.right >= o.right) { var f = e.scrollTop, h = e.scrollLeft; x.offset = { top: x.page.top - o.top + f - a.top, left: x.page.left - o.left + h - a.left } } }(), this.move(x), this.history.unshift(x), this.history.length > 3 && this.history.pop(), e && S(), !0 } } }, { key: "move", value: function (t) { var e = this; if ("undefined" != typeof this.element.parentNode) { var o = {}; for (var i in t) { o[i] = {}; for (var n in t[i]) { for (var r = !1, a = 0; a < this.history.length; ++a) { var h = this.history[a]; if ("undefined" != typeof h[i] && !g(h[i][n], t[i][n])) { r = !0; break } } r || (o[i][n] = !0) } } var l = { top: "", left: "", right: "", bottom: "" }, d = function (t, o) { var i = "undefined" != typeof e.options.optimizations, n = i ? e.options.optimizations.gpu : null; if (n !== !1) { var r = void 0, s = void 0; t.top ? (l.top = 0, r = o.top) : (l.bottom = 0, r = -o.bottom), t.left ? (l.left = 0, s = o.left) : (l.right = 0, s = -o.right), l[k] = "translateX(" + Math.round(s) + "px) translateY(" + Math.round(r) + "px)", "msTransform" !== k && (l[k] += " translateZ(0)") } else t.top ? l.top = o.top + "px" : l.bottom = o.bottom + "px", t.left ? l.left = o.left + "px" : l.right = o.right + "px" }, u = !1; if ((o.page.top || o.page.bottom) && (o.page.left || o.page.right) ? (l.position = "absolute", d(o.page, t.page)) : (o.viewport.top || o.viewport.bottom) && (o.viewport.left || o.viewport.right) ? (l.position = "fixed", d(o.viewport, t.viewport)) : "undefined" != typeof o.offset && o.offset.top && o.offset.left ? ! function () { l.position = "absolute"; var i = e.cache("target-offsetparent", function () { return s(e.target) }); s(e.element) !== i && T(function () { e.element.parentNode.removeChild(e.element), i.appendChild(e.element) }), d(o.offset, t.offset), u = !0 }() : (l.position = "absolute", d({ top: !0, left: !0 }, t.page)), !u) { for (var p = !0, c = this.element.parentNode; c && "BODY" !== c.tagName;) { if ("static" !== getComputedStyle(c).position) { p = !1; break } c = c.parentNode } p || (this.element.parentNode.removeChild(this.element), document.body.appendChild(this.element)) } var m = {}, v = !1; for (var n in l) { var y = l[n], b = this.element.style[n]; "" !== b && "" !== y && ["top", "left", "bottom", "right"].indexOf(n) >= 0 && (b = parseFloat(b), y = parseFloat(y)), b !== y && (v = !0, m[n] = y) } v && T(function () { f(e.element.style, m) }) } } }]), t }(); N.modules = [], C.position = _; var R = f(N, C), M = function () { function t(t, e) { var o = [], i = !0, n = !1, r = void 0; try { for (var s, a = t[Symbol.iterator](); !(i = (s = a.next()).done) && (o.push(s.value), !e || o.length !== e); i = !0); } catch (f) { n = !0, r = f } finally { try { !i && a["return"] && a["return"]() } finally { if (n) throw r } } return o } return function (e, o) { if (Array.isArray(e)) return e; if (Symbol.iterator in Object(e)) return t(e, o); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), P = C.Utils, r = P.getBounds, f = P.extend, c = P.updateClasses, T = P.defer, U = ["left", "top", "right", "bottom"]; C.modules.push({ position: function (t) { var e = this, o = t.top, i = t.left, n = t.targetAttachment; if (!this.options.constraints) return !0; var s = this.cache("element-bounds", function () { return r(e.element) }), a = s.height, h = s.width; if (0 === h && 0 === a && "undefined" != typeof this.lastSize) { var l = this.lastSize; h = l.width, a = l.height } var d = this.cache("target-bounds", function () { return e.getTargetBounds() }), u = d.height, p = d.width, g = [this.getClass("pinned"), this.getClass("out-of-bounds")]; this.options.constraints.forEach(function (t) { var e = t.outOfBoundsClass, o = t.pinnedClass; e && g.push(e), o && g.push(o) }), g.forEach(function (t) { ["left", "top", "right", "bottom"].forEach(function (e) { g.push(t + "-" + e) }) }); var m = [], v = f({}, n), y = f({}, this.attachment); return this.options.constraints.forEach(function (t) { var r = t.to, s = t.attachment, f = t.pin; "undefined" == typeof s && (s = ""); var l = void 0, d = void 0; if (s.indexOf(" ") >= 0) { var c = s.split(" "), g = M(c, 2); d = g[0], l = g[1] } else l = d = s; var w = b(e, r); ("target" === d || "both" === d) && (o < w[1] && "top" === v.top && (o += u, v.top = "bottom"), o + a > w[3] && "bottom" === v.top && (o -= u, v.top = "top")), "together" === d && (o < w[1] && "top" === v.top && ("bottom" === y.top ? (o += u, v.top = "bottom", o += a, y.top = "top") : "top" === y.top && (o += u, v.top = "bottom", o -= a, y.top = "bottom")), o + a > w[3] && "bottom" === v.top && ("top" === y.top ? (o -= u, v.top = "top", o -= a, y.top = "bottom") : "bottom" === y.top && (o -= u, v.top = "top", o += a, y.top = "top")), "middle" === v.top && (o + a > w[3] && "top" === y.top ? (o -= a, y.top = "bottom") : o < w[1] && "bottom" === y.top && (o += a, y.top = "top"))), ("target" === l || "both" === l) && (i < w[0] && "left" === v.left && (i += p, v.left = "right"), i + h > w[2] && "right" === v.left && (i -= p, v.left = "left")), "together" === l && (i < w[0] && "left" === v.left ? "right" === y.left ? (i += p, v.left = "right", i += h, y.left = "left") : "left" === y.left && (i += p, v.left = "right", i -= h, y.left = "right") : i + h > w[2] && "right" === v.left ? "left" === y.left ? (i -= p, v.left = "left", i -= h, y.left = "right") : "right" === y.left && (i -= p, v.left = "left", i += h, y.left = "left") : "center" === v.left && (i + h > w[2] && "left" === y.left ? (i -= h, y.left = "right") : i < w[0] && "right" === y.left && (i += h, y.left = "left"))), ("element" === d || "both" === d) && (o < w[1] && "bottom" === y.top && (o += a, y.top = "top"), o + a > w[3] && "top" === y.top && (o -= a, y.top = "bottom")), ("element" === l || "both" === l) && (i < w[0] && "right" === y.left && (i += h, y.left = "left"), i + h > w[2] && "left" === y.left && (i -= h, y.left = "right")), "string" == typeof f ? f = f.split(",").map(function (t) { return t.trim() }) : f === !0 && (f = ["top", "left", "right", "bottom"]), f = f || []; var C = [], O = []; o < w[1] && (f.indexOf("top") >= 0 ? (o = w[1], C.push("top")) : O.push("top")), o + a > w[3] && (f.indexOf("bottom") >= 0 ? (o = w[3] - a, C.push("bottom")) : O.push("bottom")), i < w[0] && (f.indexOf("left") >= 0 ? (i = w[0], C.push("left")) : O.push("left")), i + h > w[2] && (f.indexOf("right") >= 0 ? (i = w[2] - h, C.push("right")) : O.push("right")), C.length && ! function () { var t = void 0; t = "undefined" != typeof e.options.pinnedClass ? e.options.pinnedClass : e.getClass("pinned"), m.push(t), C.forEach(function (e) { m.push(t + "-" + e) }) }(), O.length && ! function () { var t = void 0; t = "undefined" != typeof e.options.outOfBoundsClass ? e.options.outOfBoundsClass : e.getClass("out-of-bounds"), m.push(t), O.forEach(function (e) { m.push(t + "-" + e) }) }(), (C.indexOf("left") >= 0 || C.indexOf("right") >= 0) && (y.left = v.left = !1), (C.indexOf("top") >= 0 || C.indexOf("bottom") >= 0) && (y.top = v.top = !1), (v.top !== n.top || v.left !== n.left || y.top !== e.attachment.top || y.left !== e.attachment.left) && e.updateAttachClasses(y, v) }), T(function () { e.options.addTargetClasses !== !1 && c(e.target, m, g), c(e.element, m, g) }), { top: o, left: i } } }); var P = C.Utils, r = P.getBounds, c = P.updateClasses, T = P.defer; C.modules.push({ position: function (t) { var e = this, o = t.top, i = t.left, n = this.cache("element-bounds", function () { return r(e.element) }), s = n.height, a = n.width, f = this.getTargetBounds(), h = o + s, l = i + a, d = []; o <= f.bottom && h >= f.top && ["left", "right"].forEach(function (t) { var e = f[t]; (e === i || e === l) && d.push(t) }), i <= f.right && l >= f.left && ["top", "bottom"].forEach(function (t) { var e = f[t]; (e === o || e === h) && d.push(t) }); var u = [], p = [], g = ["left", "top", "right", "bottom"]; return u.push(this.getClass("abutted")), g.forEach(function (t) { u.push(e.getClass("abutted") + "-" + t) }), d.length && p.push(this.getClass("abutted")), d.forEach(function (t) { p.push(e.getClass("abutted") + "-" + t) }), T(function () { e.options.addTargetClasses !== !1 && c(e.target, p, u), c(e.element, p, u) }), !0 } }); var M = function () { function t(t, e) { var o = [], i = !0, n = !1, r = void 0; try { for (var s, a = t[Symbol.iterator](); !(i = (s = a.next()).done) && (o.push(s.value), !e || o.length !== e); i = !0); } catch (f) { n = !0, r = f } finally { try { !i && a["return"] && a["return"]() } finally { if (n) throw r } } return o } return function (e, o) { if (Array.isArray(e)) return e; if (Symbol.iterator in Object(e)) return t(e, o); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(); return C.modules.push({ position: function (t) { var e = t.top, o = t.left; if (this.options.shift) { var i = this.options.shift; "function" == typeof this.options.shift && (i = this.options.shift.call(this, { top: e, left: o })); var n = void 0, r = void 0; if ("string" == typeof i) { i = i.split(" "), i[1] = i[1] || i[0]; var s = i, a = M(s, 2); n = a[0], r = a[1], n = parseFloat(n, 10), r = parseFloat(r, 10) } else n = i.top, r = i.left; return e += n, o += r, { top: e, left: o } } } }), R });