683 lines
33 KiB
JavaScript
683 lines
33 KiB
JavaScript
/*! jQuery UI - v1.13.3 - 2024-04-26
|
||
* https://jqueryui.com
|
||
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
|
||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||
! function(t) {
|
||
"use strict";
|
||
"function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery)
|
||
}(function(x) {
|
||
"use strict";
|
||
var t, e, i, n, W, C, o, s, r, l, a, h, u;
|
||
|
||
function E(t, e, i) {
|
||
return [parseFloat(t[0]) * (a.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (a.test(t[1]) ? i / 100 : 1)]
|
||
}
|
||
|
||
function L(t, e) {
|
||
return parseInt(x.css(t, e), 10) || 0
|
||
}
|
||
|
||
function N(t) {
|
||
return null != t && t === t.window
|
||
}
|
||
x.ui = x.ui || {}, x.ui.version = "1.13.3",
|
||
/*!
|
||
* jQuery UI :data 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.extend(x.expr.pseudos, {
|
||
data: x.expr.createPseudo ? x.expr.createPseudo(function(e) {
|
||
return function(t) {
|
||
return !!x.data(t, e)
|
||
}
|
||
}) : function(t, e, i) {
|
||
return !!x.data(t, i[3])
|
||
}
|
||
}),
|
||
/*!
|
||
* jQuery UI Disable Selection 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.fn.extend({
|
||
disableSelection: (t = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown", function() {
|
||
return this.on(t + ".ui-disableSelection", function(t) {
|
||
t.preventDefault()
|
||
})
|
||
}),
|
||
enableSelection: function() {
|
||
return this.off(".ui-disableSelection")
|
||
}
|
||
}),
|
||
/*!
|
||
* jQuery UI Focusable 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.ui.focusable = function(t, e) {
|
||
var i, n, o, s = t.nodeName.toLowerCase();
|
||
return "area" === s ? (o = (i = t.parentNode).name, !(!t.href || !o || "map" !== i.nodeName.toLowerCase()) && 0 < (i = x("img[usemap='#" + o + "']")).length && i.is(":visible")) : (/^(input|select|textarea|button|object)$/.test(s) ? (n = !t.disabled) && (o = x(t).closest("fieldset")[0]) && (n = !o.disabled) : n = "a" === s && t.href || e, n && x(t).is(":visible") && function(t) {
|
||
var e = t.css("visibility");
|
||
for (;
|
||
"inherit" === e;) t = t.parent(), e = t.css("visibility");
|
||
return "visible" === e
|
||
}(x(t)))
|
||
}, x.extend(x.expr.pseudos, {
|
||
focusable: function(t) {
|
||
return x.ui.focusable(t, null != x.attr(t, "tabindex"))
|
||
}
|
||
}), x.fn._form = function() {
|
||
return "string" == typeof this[0].form ? this.closest("form") : x(this[0].form)
|
||
},
|
||
/*!
|
||
* jQuery UI Form Reset Mixin 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.ui.formResetMixin = {
|
||
_formResetHandler: function() {
|
||
var e = x(this);
|
||
setTimeout(function() {
|
||
var t = e.data("ui-form-reset-instances");
|
||
x.each(t, function() {
|
||
this.refresh()
|
||
})
|
||
})
|
||
},
|
||
_bindFormResetHandler: function() {
|
||
var t;
|
||
this.form = this.element._form(), this.form.length && ((t = this.form.data("ui-form-reset-instances") || []).length || this.form.on("reset.ui-form-reset", this._formResetHandler), t.push(this), this.form.data("ui-form-reset-instances", t))
|
||
},
|
||
_unbindFormResetHandler: function() {
|
||
var t;
|
||
this.form.length && ((t = this.form.data("ui-form-reset-instances")).splice(x.inArray(this, t), 1), t.length ? this.form.data("ui-form-reset-instances", t) : this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))
|
||
}
|
||
}, x.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),
|
||
/*!
|
||
* jQuery UI Support for jQuery core 1.8.x and newer 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*
|
||
*/
|
||
x.expr.pseudos || (x.expr.pseudos = x.expr[":"]), x.uniqueSort || (x.uniqueSort = x.unique), x.escapeSelector || (e = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, i = function(t, e) {
|
||
return e ? "\0" === t ? "<22>" : t.slice(0, -1) + "\\" + t.charCodeAt(t.length - 1).toString(16) + " " : "\\" + t
|
||
}, x.escapeSelector = function(t) {
|
||
return (t + "").replace(e, i)
|
||
}), x.fn.even && x.fn.odd || x.fn.extend({
|
||
even: function() {
|
||
return this.filter(function(t) {
|
||
return t % 2 == 0
|
||
})
|
||
},
|
||
odd: function() {
|
||
return this.filter(function(t) {
|
||
return t % 2 == 1
|
||
})
|
||
}
|
||
}),
|
||
/*!
|
||
* jQuery UI Keycode 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.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
|
||
},
|
||
/*!
|
||
* jQuery UI Labels 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.fn.labels = function() {
|
||
var t, e, i;
|
||
return this.length ? this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (e = this.eq(0).parents("label"), (t = this.attr("id")) && (i = (i = this.eq(0).parents().last()).add((i.length ? i : this).siblings()), t = "label[for='" + x.escapeSelector(t) + "']", e = e.add(i.find(t).addBack(t))), this.pushStack(e)) : this.pushStack([])
|
||
}, x.ui.plugin = {
|
||
add: function(t, e, i) {
|
||
var n, o = x.ui[t].prototype;
|
||
for (n in i) o.plugins[n] = o.plugins[n] || [], o.plugins[n].push([e, i[n]])
|
||
},
|
||
call: function(t, e, i, n) {
|
||
var o, s = t.plugins[e];
|
||
if (s && (n || t.element[0].parentNode && 11 !== t.element[0].parentNode.nodeType))
|
||
for (o = 0; o < s.length; o++) t.options[s[o][0]] && s[o][1].apply(t.element, i)
|
||
}
|
||
},
|
||
/*!
|
||
* jQuery UI Position 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*
|
||
* https://api.jqueryui.com/position/
|
||
*/
|
||
W = Math.max, C = Math.abs, o = /left|center|right/, s = /top|center|bottom/, r = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, a = /%$/, h = x.fn.position, x.position = {
|
||
scrollbarWidth: function() {
|
||
var t, e, i;
|
||
return void 0 !== n ? n : (i = (e = x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0], x("body").append(e), t = i.offsetWidth, e.css("overflow", "scroll"), t === (i = i.offsetWidth) && (i = e[0].clientWidth), e.remove(), n = t - i)
|
||
},
|
||
getScrollInfo: function(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 ? x.position.scrollbarWidth() : 0,
|
||
height: e ? x.position.scrollbarWidth() : 0
|
||
}
|
||
},
|
||
getWithinInfo: function(t) {
|
||
var e = x(t || window),
|
||
i = N(e[0]),
|
||
n = !!e[0] && 9 === e[0].nodeType;
|
||
return {
|
||
element: e,
|
||
isWindow: i,
|
||
isDocument: n,
|
||
offset: !i && !n ? x(t).offset() : {
|
||
left: 0,
|
||
top: 0
|
||
},
|
||
scrollLeft: e.scrollLeft(),
|
||
scrollTop: e.scrollTop(),
|
||
width: e.outerWidth(),
|
||
height: e.outerHeight()
|
||
}
|
||
}
|
||
}, x.fn.position = function(f) {
|
||
var c, d, p, g, m, v, y, w, b, _, t, e;
|
||
return f && f.of ? (v = "string" == typeof(f = x.extend({}, f)).of ? x(document).find(f.of) : x(f.of), y = x.position.getWithinInfo(f.within), w = x.position.getScrollInfo(y), b = (f.collision || "flip").split(" "), _ = {}, e = 9 === (e = (t = v)[0]).nodeType ? {
|
||
width: t.width(),
|
||
height: t.height(),
|
||
offset: {
|
||
top: 0,
|
||
left: 0
|
||
}
|
||
} : N(e) ? {
|
||
width: t.width(),
|
||
height: t.height(),
|
||
offset: {
|
||
top: t.scrollTop(),
|
||
left: t.scrollLeft()
|
||
}
|
||
} : e.preventDefault ? {
|
||
width: 0,
|
||
height: 0,
|
||
offset: {
|
||
top: e.pageY,
|
||
left: e.pageX
|
||
}
|
||
} : {
|
||
width: t.outerWidth(),
|
||
height: t.outerHeight(),
|
||
offset: t.offset()
|
||
}, v[0].preventDefault && (f.at = "left top"), d = e.width, p = e.height, m = x.extend({}, g = e.offset), x.each(["my", "at"], function() {
|
||
var t, e, i = (f[this] || "").split(" ");
|
||
(i = 1 === i.length ? o.test(i[0]) ? i.concat(["center"]) : s.test(i[0]) ? ["center"].concat(i) : ["center", "center"] : i)[0] = o.test(i[0]) ? i[0] : "center", i[1] = s.test(i[1]) ? i[1] : "center", t = r.exec(i[0]), e = r.exec(i[1]), _[this] = [t ? t[0] : 0, e ? e[0] : 0], f[this] = [l.exec(i[0])[0], l.exec(i[1])[0]]
|
||
}), 1 === b.length && (b[1] = b[0]), "right" === f.at[0] ? m.left += d : "center" === f.at[0] && (m.left += d / 2), "bottom" === f.at[1] ? m.top += p : "center" === f.at[1] && (m.top += p / 2), c = E(_.at, d, p), m.left += c[0], m.top += c[1], this.each(function() {
|
||
var i, t, r = x(this),
|
||
l = r.outerWidth(),
|
||
a = r.outerHeight(),
|
||
e = L(this, "marginLeft"),
|
||
n = L(this, "marginTop"),
|
||
o = l + e + L(this, "marginRight") + w.width,
|
||
s = a + n + L(this, "marginBottom") + w.height,
|
||
h = x.extend({}, m),
|
||
u = E(_.my, r.outerWidth(), r.outerHeight());
|
||
"right" === f.my[0] ? h.left -= l : "center" === f.my[0] && (h.left -= l / 2), "bottom" === f.my[1] ? h.top -= a : "center" === f.my[1] && (h.top -= a / 2), h.left += u[0], h.top += u[1], i = {
|
||
marginLeft: e,
|
||
marginTop: n
|
||
}, x.each(["left", "top"], function(t, e) {
|
||
x.ui.position[b[t]] && x.ui.position[b[t]][e](h, {
|
||
targetWidth: d,
|
||
targetHeight: p,
|
||
elemWidth: l,
|
||
elemHeight: a,
|
||
collisionPosition: i,
|
||
collisionWidth: o,
|
||
collisionHeight: s,
|
||
offset: [c[0] + u[0], c[1] + u[1]],
|
||
my: f.my,
|
||
at: f.at,
|
||
within: y,
|
||
elem: r
|
||
})
|
||
}), f.using && (t = function(t) {
|
||
var e = g.left - h.left,
|
||
i = e + d - l,
|
||
n = g.top - h.top,
|
||
o = n + p - a,
|
||
s = {
|
||
target: {
|
||
element: v,
|
||
left: g.left,
|
||
top: g.top,
|
||
width: d,
|
||
height: p
|
||
},
|
||
element: {
|
||
element: r,
|
||
left: h.left,
|
||
top: h.top,
|
||
width: l,
|
||
height: a
|
||
},
|
||
horizontal: i < 0 ? "left" : 0 < e ? "right" : "center",
|
||
vertical: o < 0 ? "top" : 0 < n ? "bottom" : "middle"
|
||
};
|
||
d < l && C(e + i) < d && (s.horizontal = "center"), p < a && C(n + o) < p && (s.vertical = "middle"), W(C(e), C(i)) > W(C(n), C(o)) ? s.important = "horizontal" : s.important = "vertical", f.using.call(this, t, s)
|
||
}), r.offset(x.extend(h, {
|
||
using: t
|
||
}))
|
||
})) : h.apply(this, arguments)
|
||
}, x.ui.position = {
|
||
fit: {
|
||
left: function(t, e) {
|
||
var i, n = e.within,
|
||
o = n.isWindow ? n.scrollLeft : n.offset.left,
|
||
n = n.width,
|
||
s = t.left - e.collisionPosition.marginLeft,
|
||
r = o - s,
|
||
l = s + e.collisionWidth - n - o;
|
||
n < e.collisionWidth ? 0 < r && l <= 0 ? (i = t.left + r + e.collisionWidth - n - o, t.left += r - i) : t.left = !(0 < l && r <= 0) && l < r ? o + n - e.collisionWidth : o : 0 < r ? t.left += r : 0 < l ? t.left -= l : t.left = W(t.left - s, t.left)
|
||
},
|
||
top: function(t, e) {
|
||
var i, n = e.within,
|
||
n = n.isWindow ? n.scrollTop : n.offset.top,
|
||
o = e.within.height,
|
||
s = t.top - e.collisionPosition.marginTop,
|
||
r = n - s,
|
||
l = s + e.collisionHeight - o - n;
|
||
o < e.collisionHeight ? 0 < r && l <= 0 ? (i = t.top + r + e.collisionHeight - o - n, t.top += r - i) : t.top = !(0 < l && r <= 0) && l < r ? n + o - e.collisionHeight : n : 0 < r ? t.top += r : 0 < l ? t.top -= l : t.top = W(t.top - s, t.top)
|
||
}
|
||
},
|
||
flip: {
|
||
left: function(t, e) {
|
||
var i = e.within,
|
||
n = i.offset.left + i.scrollLeft,
|
||
o = i.width,
|
||
i = i.isWindow ? i.scrollLeft : i.offset.left,
|
||
s = t.left - e.collisionPosition.marginLeft,
|
||
r = s - i,
|
||
s = s + e.collisionWidth - o - i,
|
||
l = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0,
|
||
a = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0,
|
||
h = -2 * e.offset[0];
|
||
r < 0 ? ((o = t.left + l + a + h + e.collisionWidth - o - n) < 0 || o < C(r)) && (t.left += l + a + h) : 0 < s && (0 < (n = t.left - e.collisionPosition.marginLeft + l + a + h - i) || C(n) < s) && (t.left += l + a + h)
|
||
},
|
||
top: function(t, e) {
|
||
var i = e.within,
|
||
n = i.offset.top + i.scrollTop,
|
||
o = i.height,
|
||
i = i.isWindow ? i.scrollTop : i.offset.top,
|
||
s = t.top - e.collisionPosition.marginTop,
|
||
r = s - i,
|
||
s = s + e.collisionHeight - o - i,
|
||
l = "top" === e.my[1] ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0,
|
||
a = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0,
|
||
h = -2 * e.offset[1];
|
||
r < 0 ? ((o = t.top + l + a + h + e.collisionHeight - o - n) < 0 || o < C(r)) && (t.top += l + a + h) : 0 < s && (0 < (n = t.top - e.collisionPosition.marginTop + l + a + h - i) || C(n) < s) && (t.top += l + a + h)
|
||
}
|
||
},
|
||
flipfit: {
|
||
left: function() {
|
||
x.ui.position.flip.left.apply(this, arguments), x.ui.position.fit.left.apply(this, arguments)
|
||
},
|
||
top: function() {
|
||
x.ui.position.flip.top.apply(this, arguments), x.ui.position.fit.top.apply(this, arguments)
|
||
}
|
||
}
|
||
}, x.ui.safeActiveElement = function(e) {
|
||
var i;
|
||
try {
|
||
i = e.activeElement
|
||
} catch (t) {
|
||
i = e.body
|
||
}
|
||
return i = (i = i || e.body).nodeName ? i : e.body
|
||
}, x.ui.safeBlur = function(t) {
|
||
t && "body" !== t.nodeName.toLowerCase() && x(t).trigger("blur")
|
||
},
|
||
/*!
|
||
* jQuery UI Scroll Parent 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.fn.scrollParent = function(t) {
|
||
var e = this.css("position"),
|
||
i = "absolute" === e,
|
||
n = t ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
|
||
t = this.parents().filter(function() {
|
||
var t = x(this);
|
||
return (!i || "static" !== t.css("position")) && n.test(t.css("overflow") + t.css("overflow-y") + t.css("overflow-x"))
|
||
}).eq(0);
|
||
return "fixed" !== e && t.length ? t : x(this[0].ownerDocument || document)
|
||
},
|
||
/*!
|
||
* jQuery UI Tabbable 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.extend(x.expr.pseudos, {
|
||
tabbable: function(t) {
|
||
var e = x.attr(t, "tabindex"),
|
||
i = null != e;
|
||
return (!i || 0 <= e) && x.ui.focusable(t, i)
|
||
}
|
||
}),
|
||
/*!
|
||
* jQuery UI Unique ID 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
x.fn.extend({
|
||
uniqueId: (u = 0, function() {
|
||
return this.each(function() {
|
||
this.id || (this.id = "ui-id-" + ++u)
|
||
})
|
||
}),
|
||
removeUniqueId: function() {
|
||
return this.each(function() {
|
||
/^ui-id-\d+$/.test(this.id) && x(this).removeAttr("id")
|
||
})
|
||
}
|
||
});
|
||
/*!
|
||
* jQuery UI Widget 1.13.3
|
||
* https://jqueryui.com
|
||
*
|
||
* Copyright OpenJS Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* https://jquery.org/license
|
||
*/
|
||
var f, c = 0,
|
||
d = Array.prototype.hasOwnProperty,
|
||
p = Array.prototype.slice;
|
||
x.cleanData = (f = x.cleanData, function(t) {
|
||
for (var e, i, n = 0; null != (i = t[n]); n++)(e = x._data(i, "events")) && e.remove && x(i).triggerHandler("remove");
|
||
f(t)
|
||
}), x.widget = function(t, i, e) {
|
||
var n, o, s, r = {},
|
||
l = t.split(".")[0],
|
||
a = l + "-" + (t = t.split(".")[1]);
|
||
return e || (e = i, i = x.Widget), Array.isArray(e) && (e = x.extend.apply(null, [{}].concat(e))), x.expr.pseudos[a.toLowerCase()] = function(t) {
|
||
return !!x.data(t, a)
|
||
}, x[l] = x[l] || {}, n = x[l][t], o = x[l][t] = function(t, e) {
|
||
if (!this || !this._createWidget) return new o(t, e);
|
||
arguments.length && this._createWidget(t, e)
|
||
}, x.extend(o, n, {
|
||
version: e.version,
|
||
_proto: x.extend({}, e),
|
||
_childConstructors: []
|
||
}), (s = new i).options = x.widget.extend({}, s.options), x.each(e, function(e, n) {
|
||
function o() {
|
||
return i.prototype[e].apply(this, arguments)
|
||
}
|
||
|
||
function s(t) {
|
||
return i.prototype[e].apply(this, t)
|
||
}
|
||
r[e] = "function" != typeof n ? n : function() {
|
||
var t, e = this._super,
|
||
i = this._superApply;
|
||
return this._super = o, this._superApply = s, t = n.apply(this, arguments), this._super = e, this._superApply = i, t
|
||
}
|
||
}), o.prototype = x.widget.extend(s, {
|
||
widgetEventPrefix: n && s.widgetEventPrefix || t
|
||
}, r, {
|
||
constructor: o,
|
||
namespace: l,
|
||
widgetName: t,
|
||
widgetFullName: a
|
||
}), n ? (x.each(n._childConstructors, function(t, e) {
|
||
var i = e.prototype;
|
||
x.widget(i.namespace + "." + i.widgetName, o, e._proto)
|
||
}), delete n._childConstructors) : i._childConstructors.push(o), x.widget.bridge(t, o), o
|
||
}, x.widget.extend = function(t) {
|
||
for (var e, i, n = p.call(arguments, 1), o = 0, s = n.length; o < s; o++)
|
||
for (e in n[o]) i = n[o][e], d.call(n[o], e) && void 0 !== i && (x.isPlainObject(i) ? t[e] = x.isPlainObject(t[e]) ? x.widget.extend({}, t[e], i) : x.widget.extend({}, i) : t[e] = i);
|
||
return t
|
||
}, x.widget.bridge = function(s, e) {
|
||
var r = e.prototype.widgetFullName || s;
|
||
x.fn[s] = function(i) {
|
||
var t = "string" == typeof i,
|
||
n = p.call(arguments, 1),
|
||
o = this;
|
||
return t ? this.length || "instance" !== i ? this.each(function() {
|
||
var t, e = x.data(this, r);
|
||
return "instance" === i ? (o = e, !1) : e ? "function" != typeof e[i] || "_" === i.charAt(0) ? x.error("no such method '" + i + "' for " + s + " widget instance") : (t = e[i].apply(e, n)) !== e && void 0 !== t ? (o = t && t.jquery ? o.pushStack(t.get()) : t, !1) : void 0 : x.error("cannot call methods on " + s + " prior to initialization; attempted to call method '" + i + "'")
|
||
}) : o = void 0 : (n.length && (i = x.widget.extend.apply(null, [i].concat(n))), this.each(function() {
|
||
var t = x.data(this, r);
|
||
t ? (t.option(i || {}), t._init && t._init()) : x.data(this, r, new e(i, this))
|
||
})), o
|
||
}
|
||
}, x.Widget = function() {}, x.Widget._childConstructors = [], x.Widget.prototype = {
|
||
widgetName: "widget",
|
||
widgetEventPrefix: "",
|
||
defaultElement: "<div>",
|
||
options: {
|
||
classes: {},
|
||
disabled: !1,
|
||
create: null
|
||
},
|
||
_createWidget: function(t, e) {
|
||
e = x(e || this.defaultElement || this)[0], this.element = x(e), this.uuid = c++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = x(), this.hoverable = x(), this.focusable = x(), this.classesElementLookup = {}, e !== this && (x.data(e, this.widgetFullName, this), this._on(!0, this.element, {
|
||
remove: function(t) {
|
||
t.target === e && this.destroy()
|
||
}
|
||
}), this.document = x(e.style ? e.ownerDocument : e.document || e), this.window = x(this.document[0].defaultView || this.document[0].parentWindow)), this.options = x.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() {
|
||
return {}
|
||
},
|
||
_getCreateEventData: x.noop,
|
||
_create: x.noop,
|
||
_init: x.noop,
|
||
destroy: function() {
|
||
var i = this;
|
||
this._destroy(), x.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: x.noop,
|
||
widget: function() {
|
||
return this.element
|
||
},
|
||
option: function(t, e) {
|
||
var i, n, o, s = t;
|
||
if (0 === arguments.length) return x.widget.extend({}, this.options);
|
||
if ("string" == typeof t)
|
||
if (s = {}, t = (i = t.split(".")).shift(), i.length) {
|
||
for (n = s[t] = x.widget.extend({}, this.options[t]), o = 0; o < i.length - 1; o++) n[i[o]] = n[i[o]] || {}, n = n[i[o]];
|
||
if (t = i.pop(), 1 === arguments.length) return void 0 === n[t] ? null : n[t];
|
||
n[t] = e
|
||
} else {
|
||
if (1 === arguments.length) return void 0 === this.options[t] ? null : this.options[t];
|
||
s[t] = e
|
||
}
|
||
return this._setOptions(s), this
|
||
},
|
||
_setOptions: function(t) {
|
||
for (var e in t) this._setOption(e, t[e]);
|
||
return this
|
||
},
|
||
_setOption: function(t, e) {
|
||
return "classes" === t && this._setOptionClasses(e), this.options[t] = e, "disabled" === t && this._setOptionDisabled(e), this
|
||
},
|
||
_setOptionClasses: function(t) {
|
||
var e, i, n;
|
||
for (e in t) n = this.classesElementLookup[e], t[e] !== this.options.classes[e] && n && n.length && (i = x(n.get()), this._removeClass(n, e), i.addClass(this._classes({
|
||
element: i,
|
||
keys: e,
|
||
classes: t,
|
||
add: !0
|
||
})))
|
||
},
|
||
_setOptionDisabled: function(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() {
|
||
return this._setOptions({
|
||
disabled: !1
|
||
})
|
||
},
|
||
disable: function() {
|
||
return this._setOptions({
|
||
disabled: !0
|
||
})
|
||
},
|
||
_classes: function(o) {
|
||
var s = [],
|
||
r = this;
|
||
|
||
function t(t, e) {
|
||
for (var i, n = 0; n < t.length; n++) i = r.classesElementLookup[t[n]] || x(), i = o.add ? (function() {
|
||
var i = [];
|
||
o.element.each(function(t, e) {
|
||
x.map(r.classesElementLookup, function(t) {
|
||
return t
|
||
}).some(function(t) {
|
||
return t.is(e)
|
||
}) || i.push(e)
|
||
}), r._on(x(i), {
|
||
remove: "_untrackClassesElement"
|
||
})
|
||
}(), x(x.uniqueSort(i.get().concat(o.element.get())))) : x(i.not(o.element).get()), r.classesElementLookup[t[n]] = i, s.push(t[n]), e && o.classes[t[n]] && s.push(o.classes[t[n]])
|
||
}
|
||
return (o = x.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) || []), s.join(" ")
|
||
},
|
||
_untrackClassesElement: function(i) {
|
||
var n = this;
|
||
x.each(n.classesElementLookup, function(t, e) {
|
||
-1 !== x.inArray(i.target, e) && (n.classesElementLookup[t] = x(e.not(i.target).get()))
|
||
}), this._off(x(i.target))
|
||
},
|
||
_removeClass: function(t, e, i) {
|
||
return this._toggleClass(t, e, i, !1)
|
||
},
|
||
_addClass: function(t, e, i) {
|
||
return this._toggleClass(t, e, i, !0)
|
||
},
|
||
_toggleClass: function(t, e, i, n) {
|
||
var o = "string" == typeof t || null === t,
|
||
e = {
|
||
extra: o ? e : i,
|
||
keys: o ? t : e,
|
||
element: o ? this.element : t,
|
||
add: n = "boolean" == typeof n ? n : i
|
||
};
|
||
return e.element.toggleClass(this._classes(e), n), this
|
||
},
|
||
_on: function(o, s, t) {
|
||
var r, l = this;
|
||
"boolean" != typeof o && (t = s, s = o, o = !1), t ? (s = r = x(s), this.bindings = this.bindings.add(s)) : (t = s, s = this.element, r = this.widget()), x.each(t, function(t, e) {
|
||
function i() {
|
||
if (o || !0 !== l.options.disabled && !x(this).hasClass("ui-state-disabled")) return ("string" == typeof e ? l[e] : e).apply(l, arguments)
|
||
}
|
||
"string" != typeof e && (i.guid = e.guid = e.guid || i.guid || x.guid++);
|
||
var t = t.match(/^([\w:-]*)\s*(.*)$/),
|
||
n = t[1] + l.eventNamespace,
|
||
t = t[2];
|
||
t ? r.on(n, t, i) : s.on(n, i)
|
||
})
|
||
},
|
||
_off: function(t, e) {
|
||
e = (e || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, t.off(e), this.bindings = x(this.bindings.not(t).get()), this.focusable = x(this.focusable.not(t).get()), this.hoverable = x(this.hoverable.not(t).get())
|
||
},
|
||
_delay: function(t, e) {
|
||
var i = this;
|
||
return setTimeout(function() {
|
||
return ("string" == typeof t ? i[t] : t).apply(i, arguments)
|
||
}, e || 0)
|
||
},
|
||
_hoverable: function(t) {
|
||
this.hoverable = this.hoverable.add(t), this._on(t, {
|
||
mouseenter: function(t) {
|
||
this._addClass(x(t.currentTarget), null, "ui-state-hover")
|
||
},
|
||
mouseleave: function(t) {
|
||
this._removeClass(x(t.currentTarget), null, "ui-state-hover")
|
||
}
|
||
})
|
||
},
|
||
_focusable: function(t) {
|
||
this.focusable = this.focusable.add(t), this._on(t, {
|
||
focusin: function(t) {
|
||
this._addClass(x(t.currentTarget), null, "ui-state-focus")
|
||
},
|
||
focusout: function(t) {
|
||
this._removeClass(x(t.currentTarget), null, "ui-state-focus")
|
||
}
|
||
})
|
||
},
|
||
_trigger: function(t, e, i) {
|
||
var n, o, s = this.options[t];
|
||
if (i = i || {}, (e = x.Event(e)).type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), e.target = this.element[0], o = e.originalEvent)
|
||
for (n in o) n in e || (e[n] = o[n]);
|
||
return this.element.trigger(e, i), !("function" == typeof s && !1 === s.apply(this.element[0], [e].concat(i)) || e.isDefaultPrevented())
|
||
}
|
||
}, x.each({
|
||
show: "fadeIn",
|
||
hide: "fadeOut"
|
||
}, function(s, r) {
|
||
x.Widget.prototype["_" + s] = function(e, t, i) {
|
||
var n, o = (t = "string" == typeof t ? {
|
||
effect: t
|
||
} : t) ? !0 !== t && "number" != typeof t && t.effect || r : s;
|
||
"number" == typeof(t = t || {}) ? t = {
|
||
duration: t
|
||
}: !0 === t && (t = {}), n = !x.isEmptyObject(t), t.complete = i, t.delay && e.delay(t.delay), n && x.effects && x.effects.effect[o] ? e[s](t) : o !== s && e[o] ? e[o](t.duration, t.easing, i) : e.queue(function(t) {
|
||
x(this)[s](), i && i.call(e[0]), t()
|
||
})
|
||
}
|
||
})
|
||
}); |