widget.min.js
9.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*!
* jQuery UI Widget 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/jQuery.widget/
*/
!function (a) {
"function" == typeof define && define.amd ? define(["jquery"], a) : a(jQuery)
}(function (a) {
var b = 0, c = Array.prototype.slice;
return a.cleanData = function (b) {
return function (c) {
var d, e, f;
for (f = 0; null != (e = c[f]); f++)try {
d = a._data(e, "events"), d && d.remove && a(e).triggerHandler("remove")
} catch (g) {
}
b(c)
}
}(a.cleanData), a.widget = function (b, c, d) {
var e, f, g, h, i = {}, j = b.split(".")[0];
return b = b.split(".")[1], e = j + "-" + b, d || (d = c, c = a.Widget), a.expr[":"][e.toLowerCase()] = function (b) {
return !!a.data(b, e)
}, a[j] = a[j] || {}, f = a[j][b], g = a[j][b] = function (a, b) {
return this._createWidget ? void(arguments.length && this._createWidget(a, b)) : new g(a, b)
}, a.extend(g, f, {
version: d.version,
_proto: a.extend({}, d),
_childConstructors: []
}), h = new c, h.options = a.widget.extend({}, h.options), a.each(d, function (b, d) {
return a.isFunction(d) ? void(i[b] = function () {
var a = function () {
return c.prototype[b].apply(this, arguments)
}, e = function (a) {
return c.prototype[b].apply(this, a)
};
return function () {
var b, c = this._super, f = this._superApply;
return this._super = a, this._superApply = e, b = d.apply(this, arguments), this._super = c, this._superApply = f, b
}
}()) : void(i[b] = d)
}), g.prototype = a.widget.extend(h, {widgetEventPrefix: f ? h.widgetEventPrefix || b : b}, i, {
constructor: g,
namespace: j,
widgetName: b,
widgetFullName: e
}), f ? (a.each(f._childConstructors, function (b, c) {
var d = c.prototype;
a.widget(d.namespace + "." + d.widgetName, g, c._proto)
}), delete f._childConstructors) : c._childConstructors.push(g), a.widget.bridge(b, g), g
}, a.widget.extend = function (b) {
for (var d, e, f = c.call(arguments, 1), g = 0, h = f.length; g < h; g++)for (d in f[g])e = f[g][d], f[g].hasOwnProperty(d) && void 0 !== e && (a.isPlainObject(e) ? b[d] = a.isPlainObject(b[d]) ? a.widget.extend({}, b[d], e) : a.widget.extend({}, e) : b[d] = e);
return b
}, a.widget.bridge = function (b, d) {
var e = d.prototype.widgetFullName || b;
a.fn[b] = function (f) {
var g = "string" == typeof f, h = c.call(arguments, 1), i = this;
return g ? this.each(function () {
var c, d = a.data(this, e);
return "instance" === f ? (i = d, !1) : d ? a.isFunction(d[f]) && "_" !== f.charAt(0) ? (c = d[f].apply(d, h), c !== d && void 0 !== c ? (i = c && c.jquery ? i.pushStack(c.get()) : c, !1) : void 0) : a.error("no such method '" + f + "' for " + b + " widget instance") : a.error("cannot call methods on " + b + " prior to initialization; attempted to call method '" + f + "'")
}) : (h.length && (f = a.widget.extend.apply(null, [f].concat(h))), this.each(function () {
var b = a.data(this, e);
b ? (b.option(f || {}), b._init && b._init()) : a.data(this, e, new d(f, this))
})), i
}
}, a.Widget = function () {
}, a.Widget._childConstructors = [], a.Widget.prototype = {
widgetName: "widget",
widgetEventPrefix: "",
defaultElement: "<div>",
options: {disabled: !1, create: null},
_createWidget: function (c, d) {
d = a(d || this.defaultElement || this)[0], this.element = a(d), this.uuid = b++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = a(), this.hoverable = a(), this.focusable = a(), d !== this && (a.data(d, this.widgetFullName, this), this._on(!0, this.element, {
remove: function (a) {
a.target === d && this.destroy()
}
}), this.document = a(d.style ? d.ownerDocument : d.document || d), this.window = a(this.document[0].defaultView || this.document[0].parentWindow)), this.options = a.widget.extend({}, this.options, this._getCreateOptions(), c), this._create(), this._trigger("create", null, this._getCreateEventData()), this._init()
},
_getCreateOptions: a.noop,
_getCreateEventData: a.noop,
_create: a.noop,
_init: a.noop,
destroy: function () {
this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(a.camelCase(this.widgetFullName)), this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled ui-state-disabled"), this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus")
},
_destroy: a.noop,
widget: function () {
return this.element
},
option: function (b, c) {
var d, e, f, g = b;
if (0 === arguments.length)return a.widget.extend({}, this.options);
if ("string" == typeof b)if (g = {}, d = b.split("."), b = d.shift(), d.length) {
for (e = g[b] = a.widget.extend({}, this.options[b]), f = 0; f < d.length - 1; f++)e[d[f]] = e[d[f]] || {}, e = e[d[f]];
if (b = d.pop(), 1 === arguments.length)return void 0 === e[b] ? null : e[b];
e[b] = c
} else {
if (1 === arguments.length)return void 0 === this.options[b] ? null : this.options[b];
g[b] = c
}
return this._setOptions(g), this
},
_setOptions: function (a) {
var b;
for (b in a)this._setOption(b, a[b]);
return this
},
_setOption: function (a, b) {
return this.options[a] = b, "disabled" === a && (this.widget().toggleClass(this.widgetFullName + "-disabled", !!b), b && (this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus"))), this
},
enable: function () {
return this._setOptions({disabled: !1})
},
disable: function () {
return this._setOptions({disabled: !0})
},
_on: function (b, c, d) {
var e, f = this;
"boolean" != typeof b && (d = c, c = b, b = !1), d ? (c = e = a(c), this.bindings = this.bindings.add(c)) : (d = c, c = this.element, e = this.widget()), a.each(d, function (d, g) {
function h() {
if (b || f.options.disabled !== !0 && !a(this).hasClass("ui-state-disabled"))return ("string" == typeof g ? f[g] : g).apply(f, arguments)
}
"string" != typeof g && (h.guid = g.guid = g.guid || h.guid || a.guid++);
var i = d.match(/^([\w:-]*)\s*(.*)$/), j = i[1] + f.eventNamespace, k = i[2];
k ? e.delegate(k, j, h) : c.bind(j, h)
})
},
_off: function (b, c) {
c = (c || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, b.unbind(c).undelegate(c), this.bindings = a(this.bindings.not(b).get()), this.focusable = a(this.focusable.not(b).get()), this.hoverable = a(this.hoverable.not(b).get())
},
_delay: function (a, b) {
function c() {
return ("string" == typeof a ? d[a] : a).apply(d, arguments)
}
var d = this;
return setTimeout(c, b || 0)
},
_hoverable: function (b) {
this.hoverable = this.hoverable.add(b), this._on(b, {
mouseenter: function (b) {
a(b.currentTarget).addClass("ui-state-hover")
}, mouseleave: function (b) {
a(b.currentTarget).removeClass("ui-state-hover")
}
})
},
_focusable: function (b) {
this.focusable = this.focusable.add(b), this._on(b, {
focusin: function (b) {
a(b.currentTarget).addClass("ui-state-focus")
}, focusout: function (b) {
a(b.currentTarget).removeClass("ui-state-focus")
}
})
},
_trigger: function (b, c, d) {
var e, f, g = this.options[b];
if (d = d || {}, c = a.Event(c), c.type = (b === this.widgetEventPrefix ? b : this.widgetEventPrefix + b).toLowerCase(), c.target = this.element[0], f = c.originalEvent)for (e in f)e in c || (c[e] = f[e]);
return this.element.trigger(c, d), !(a.isFunction(g) && g.apply(this.element[0], [c].concat(d)) === !1 || c.isDefaultPrevented())
}
}, a.each({show: "fadeIn", hide: "fadeOut"}, function (b, c) {
a.Widget.prototype["_" + b] = function (d, e, f) {
"string" == typeof e && (e = {effect: e});
var g, h = e ? e === !0 || "number" == typeof e ? c : e.effect || c : b;
e = e || {}, "number" == typeof e && (e = {duration: e}), g = !a.isEmptyObject(e), e.complete = f, e.delay && d.delay(e.delay), g && a.effects && a.effects.effect[h] ? d[b](e) : h !== b && d[h] ? d[h](e.duration, e.easing, f) : d.queue(function (c) {
a(this)[b](), f && f.call(d[0]), c()
})
}
}), a.widget
});