mirror of
https://github.com/hanzoai/daisho-riot.git
synced 2026-10-30 18:41:48 +00:00
16481 lines
1.5 MiB
Plaintext
16481 lines
1.5 MiB
Plaintext
(function (global) {
|
||
var process = {
|
||
title: 'browser',
|
||
browser: true,
|
||
env: {},
|
||
argv: [],
|
||
nextTick: function (fn) {
|
||
setTimeout(fn, 0)
|
||
},
|
||
cwd: function () {
|
||
return '/'
|
||
},
|
||
chdir: function () {
|
||
}
|
||
};
|
||
// Require module
|
||
function require(file, cb) {
|
||
// Handle async require
|
||
if (typeof cb == 'function') {
|
||
return require.load(file, cb)
|
||
}
|
||
// Return module from cache
|
||
if ({}.hasOwnProperty.call(require.cache, file))
|
||
return require.cache[file];
|
||
var resolved = require.resolve(file);
|
||
if (!resolved)
|
||
throw new Error('Failed to resolve module ' + file);
|
||
var mod = {
|
||
id: file,
|
||
require: require,
|
||
filename: file,
|
||
exports: {},
|
||
loaded: false,
|
||
parent: null,
|
||
children: []
|
||
};
|
||
var dirname = file.slice(0, file.lastIndexOf('/') + 1);
|
||
require.cache[file] = mod.exports;
|
||
resolved.call(mod.exports, mod, mod.exports, dirname, file, process);
|
||
mod.loaded = true;
|
||
return require.cache[file] = mod.exports
|
||
}
|
||
require.modules = {};
|
||
require.cache = {};
|
||
require.resolve = function (file) {
|
||
return {}.hasOwnProperty.call(require.modules, file) ? require.modules[file] : void 0
|
||
};
|
||
// define normal static module
|
||
require.define = function (file, fn) {
|
||
require.modules[file] = fn
|
||
};
|
||
require.waiting = {};
|
||
// Determine base path for all modules
|
||
var scripts = document.getElementsByTagName('script');
|
||
var file = scripts[scripts.length - 1].src;
|
||
require.basePath = file.slice(0, file.lastIndexOf('/') + 1);
|
||
// Generate URL for module
|
||
require.urlFor = function (file) {
|
||
var url = file.replace(/^\.?\//, '');
|
||
if (!/\.js$/.test(url))
|
||
url = url + '.js';
|
||
return require.basePath + url
|
||
};
|
||
// Load module async module
|
||
require.load = function (file, cb) {
|
||
// Immediately return previously loaded modules
|
||
if (require.modules[file] != null)
|
||
return cb(require(file));
|
||
// Build URL to request module at
|
||
var url = require.urlFor(file);
|
||
var script = document.createElement('script'), scripts = document.getElementsByTagName('script')[0], callbacks = require.waiting[file] = require.waiting[file] || [];
|
||
// We'll be called when async module is defined.
|
||
callbacks.push(cb);
|
||
// Load module
|
||
script.type = 'text/javascript';
|
||
script.async = true;
|
||
script.src = url;
|
||
script.file = file;
|
||
scripts.parentNode.insertBefore(script, scripts)
|
||
};
|
||
// Define async module
|
||
require.async = function (file, fn) {
|
||
require.modules[file] = fn;
|
||
var cb;
|
||
while (cb = require.waiting[file].shift())
|
||
cb(require(file))
|
||
};
|
||
global.require = require;
|
||
// source: src/controls/index.coffee
|
||
require.define('./controls', function (module, exports, __dirname, __filename, process) {
|
||
require('./controls/poly');
|
||
module.exports = {
|
||
Control: require('./controls/control'),
|
||
Text: require('./controls/text'),
|
||
InlineText: require('./controls/inline-text'),
|
||
StaticText: require('./controls/static-text'),
|
||
StaticDate: require('./controls/static-date'),
|
||
StaticAgo: require('./controls/static-ago'),
|
||
register: function (m) {
|
||
this.Text.register(m);
|
||
this.InlineText.register(m);
|
||
this.StaticText.register(m);
|
||
this.StaticDate.register(m);
|
||
return this.StaticAgo.register(m)
|
||
}
|
||
}
|
||
});
|
||
// source: src/controls/poly.coffee
|
||
require.define('./controls/poly', function (module, exports, __dirname, __filename, process) {
|
||
var riot;
|
||
riot = require('crowdcontrol/lib').riot.riot;
|
||
module.exports = riot.tag('daisho-poly-control', '', function (opts) {
|
||
var el, tag, tagEl;
|
||
if (opts.tag != null) {
|
||
tag = opts.tag;
|
||
delete opts.tag;
|
||
if (opts.optsOverride != null) {
|
||
opts = opts.optsOverride
|
||
}
|
||
el = document.createElement(tag);
|
||
this.root.appendChild(el);
|
||
opts.parent = this.parent;
|
||
tagEl = riot.mount(el, tag, opts)[0];
|
||
return tagEl.update()
|
||
}
|
||
})
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/index.js
|
||
require.define('crowdcontrol/lib', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var CrowdControl, r, riot;
|
||
r = require('crowdcontrol/lib/riot');
|
||
riot = r();
|
||
CrowdControl = {
|
||
Views: require('crowdcontrol/lib/views'),
|
||
tags: [],
|
||
start: function (opts) {
|
||
return this.tags = riot.mount('*', opts)
|
||
},
|
||
update: function () {
|
||
var i, len, ref, results, tag;
|
||
ref = this.tags;
|
||
results = [];
|
||
for (i = 0, len = ref.length; i < len; i++) {
|
||
tag = ref[i];
|
||
results.push(tag.update())
|
||
}
|
||
return results
|
||
},
|
||
riot: r
|
||
};
|
||
if (module.exports != null) {
|
||
module.exports = CrowdControl
|
||
}
|
||
if (typeof window !== 'undefined' && window !== null) {
|
||
if (window.Crowdstart != null) {
|
||
window.Crowdstart.Crowdcontrol = CrowdControl
|
||
} else {
|
||
window.Crowdstart = { CrowdControl: CrowdControl }
|
||
}
|
||
} //# sourceMappingURL=index.js.map
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/riot.js
|
||
require.define('crowdcontrol/lib/riot', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var r;
|
||
r = function () {
|
||
return this.riot
|
||
};
|
||
r.set = function (riot) {
|
||
this.riot = riot
|
||
};
|
||
r.riot = typeof window !== 'undefined' && window !== null ? window.riot : void 0;
|
||
module.exports = r //# sourceMappingURL=riot.js.map
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/views/index.js
|
||
require.define('crowdcontrol/lib/views', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
module.exports = {
|
||
Form: require('crowdcontrol/lib/views/form'),
|
||
Input: require('crowdcontrol/lib/views/input'),
|
||
View: require('crowdcontrol/lib/views/view')
|
||
} //# sourceMappingURL=index.js.map
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/views/form.js
|
||
require.define('crowdcontrol/lib/views/form', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Form, Promise, View, inputify, observable, settle, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
View = require('crowdcontrol/lib/views/view');
|
||
inputify = require('crowdcontrol/lib/views/inputify');
|
||
observable = require('crowdcontrol/lib/riot')().observable;
|
||
Promise = require('broken/lib');
|
||
settle = require('promise-settle');
|
||
Form = function (superClass) {
|
||
extend(Form, superClass);
|
||
function Form() {
|
||
return Form.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Form.prototype.configs = null;
|
||
Form.prototype.inputs = null;
|
||
Form.prototype.data = null;
|
||
Form.prototype.initInputs = function () {
|
||
var input, name, ref, results1;
|
||
this.inputs = {};
|
||
if (this.configs != null) {
|
||
this.inputs = inputify(this.data, this.configs);
|
||
ref = this.inputs;
|
||
results1 = [];
|
||
for (name in ref) {
|
||
input = ref[name];
|
||
results1.push(observable(input))
|
||
}
|
||
return results1
|
||
}
|
||
};
|
||
Form.prototype.init = function () {
|
||
return this.initInputs()
|
||
};
|
||
Form.prototype.submit = function () {
|
||
var input, name, pRef, ps, ref;
|
||
ps = [];
|
||
ref = this.inputs;
|
||
for (name in ref) {
|
||
input = ref[name];
|
||
pRef = {};
|
||
input.trigger('validate', pRef);
|
||
ps.push(pRef.p)
|
||
}
|
||
return settle(ps).then(function (_this) {
|
||
return function (results) {
|
||
var i, len, result;
|
||
for (i = 0, len = results.length; i < len; i++) {
|
||
result = results[i];
|
||
if (!result.isFulfilled()) {
|
||
return
|
||
}
|
||
}
|
||
return _this._submit.apply(_this, arguments)
|
||
}
|
||
}(this))
|
||
};
|
||
Form.prototype._submit = function () {
|
||
};
|
||
return Form
|
||
}(View);
|
||
module.exports = Form //# sourceMappingURL=form.js.map
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/views/view.js
|
||
require.define('crowdcontrol/lib/views/view', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var View, collapsePrototype, isFunction, objectAssign, riot, setPrototypeOf;
|
||
riot = require('crowdcontrol/lib/riot')();
|
||
objectAssign = require('object-assign');
|
||
setPrototypeOf = function () {
|
||
var mixinProperties, setProtoOf;
|
||
setProtoOf = function (obj, proto) {
|
||
return obj.__proto__ = proto
|
||
};
|
||
mixinProperties = function (obj, proto) {
|
||
var prop, results;
|
||
results = [];
|
||
for (prop in proto) {
|
||
if (obj[prop] == null) {
|
||
results.push(obj[prop] = proto[prop])
|
||
} else {
|
||
results.push(void 0)
|
||
}
|
||
}
|
||
return results
|
||
};
|
||
if (Object.setPrototypeOf || { __proto__: [] } instanceof Array) {
|
||
return setProtoOf
|
||
} else {
|
||
return mixinProperties
|
||
}
|
||
}();
|
||
isFunction = require('is-function');
|
||
collapsePrototype = function (collapse, proto) {
|
||
var parentProto;
|
||
if (proto === View.prototype) {
|
||
return
|
||
}
|
||
parentProto = Object.getPrototypeOf(proto);
|
||
collapsePrototype(collapse, parentProto);
|
||
return objectAssign(collapse, parentProto)
|
||
};
|
||
View = function () {
|
||
View.register = function () {
|
||
return new this
|
||
};
|
||
View.prototype.tag = '';
|
||
View.prototype.html = '';
|
||
View.prototype.css = '';
|
||
View.prototype.attrs = '';
|
||
View.prototype.events = null;
|
||
function View() {
|
||
var newProto;
|
||
newProto = collapsePrototype({}, this);
|
||
this.beforeInit();
|
||
riot.tag(this.tag, this.html, this.css, this.attrs, function (opts) {
|
||
var fn, handler, k, name, parent, proto, ref, ref1, self, v;
|
||
if (newProto != null) {
|
||
for (k in newProto) {
|
||
v = newProto[k];
|
||
if (isFunction(v)) {
|
||
(function (_this) {
|
||
return function (v) {
|
||
var oldFn;
|
||
if (_this[k] != null) {
|
||
oldFn = _this[k];
|
||
return _this[k] = function () {
|
||
oldFn.apply(_this, arguments);
|
||
return v.apply(_this, arguments)
|
||
}
|
||
} else {
|
||
return _this[k] = function () {
|
||
return v.apply(_this, arguments)
|
||
}
|
||
}
|
||
}
|
||
}(this)(v))
|
||
} else {
|
||
this[k] = v
|
||
}
|
||
}
|
||
}
|
||
self = this;
|
||
parent = (ref = self.parent) != null ? ref : opts.parent;
|
||
proto = Object.getPrototypeOf(self);
|
||
while (parent != null && parent !== proto) {
|
||
setPrototypeOf(self, parent);
|
||
self = parent;
|
||
parent = self.parent;
|
||
proto = Object.getPrototypeOf(self)
|
||
}
|
||
if (opts != null) {
|
||
for (k in opts) {
|
||
v = opts[k];
|
||
this[k] = v
|
||
}
|
||
}
|
||
if (this.events != null) {
|
||
ref1 = this.events;
|
||
fn = function (_this) {
|
||
return function (name, handler) {
|
||
if (typeof handler === 'string') {
|
||
return _this.on(name, function () {
|
||
return _this[handler].apply(_this, arguments)
|
||
})
|
||
} else {
|
||
return _this.on(name, function () {
|
||
return handler.apply(_this, arguments)
|
||
})
|
||
}
|
||
}
|
||
}(this);
|
||
for (name in ref1) {
|
||
handler = ref1[name];
|
||
fn(name, handler)
|
||
}
|
||
}
|
||
return this.init(opts)
|
||
})
|
||
}
|
||
View.prototype.beforeInit = function () {
|
||
};
|
||
View.prototype.init = function () {
|
||
};
|
||
return View
|
||
}();
|
||
module.exports = View //# sourceMappingURL=view.js.map
|
||
});
|
||
// source: node_modules/object-assign/index.js
|
||
require.define('object-assign', function (module, exports, __dirname, __filename, process) {
|
||
/* eslint-disable no-unused-vars */
|
||
'use strict';
|
||
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
||
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
||
function toObject(val) {
|
||
if (val === null || val === undefined) {
|
||
throw new TypeError('Object.assign cannot be called with null or undefined')
|
||
}
|
||
return Object(val)
|
||
}
|
||
module.exports = Object.assign || function (target, source) {
|
||
var from;
|
||
var to = toObject(target);
|
||
var symbols;
|
||
for (var s = 1; s < arguments.length; s++) {
|
||
from = Object(arguments[s]);
|
||
for (var key in from) {
|
||
if (hasOwnProperty.call(from, key)) {
|
||
to[key] = from[key]
|
||
}
|
||
}
|
||
if (Object.getOwnPropertySymbols) {
|
||
symbols = Object.getOwnPropertySymbols(from);
|
||
for (var i = 0; i < symbols.length; i++) {
|
||
if (propIsEnumerable.call(from, symbols[i])) {
|
||
to[symbols[i]] = from[symbols[i]]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return to
|
||
}
|
||
});
|
||
// source: node_modules/is-function/index.js
|
||
require.define('is-function', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = isFunction;
|
||
var toString = Object.prototype.toString;
|
||
function isFunction(fn) {
|
||
var string = toString.call(fn);
|
||
return string === '[object Function]' || typeof fn === 'function' && string !== '[object RegExp]' || typeof window !== 'undefined' && (fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt)
|
||
}
|
||
;
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/views/inputify.js
|
||
require.define('crowdcontrol/lib/views/inputify', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Promise, inputify, isFunction, isRef, refer;
|
||
Promise = require('broken/lib');
|
||
isFunction = require('is-function');
|
||
refer = require('referential/lib');
|
||
isRef = function (o) {
|
||
return o != null && isFunction(o.ref)
|
||
};
|
||
inputify = function (data, configs) {
|
||
var config, fn, inputs, name, ref;
|
||
ref = data;
|
||
if (!isRef(ref)) {
|
||
ref = refer(data)
|
||
}
|
||
inputs = {};
|
||
fn = function (name, config) {
|
||
var fn1, i, input, len, middleware, middlewareFn, validate;
|
||
middleware = [];
|
||
if (config && config.length > 0) {
|
||
fn1 = function (name, middlewareFn) {
|
||
return middleware.push(function (pair) {
|
||
ref = pair[0], name = pair[1];
|
||
return Promise.resolve(pair).then(function (pair) {
|
||
return middlewareFn.call(pair[0], pair[0].get(pair[1]), pair[1], pair[0])
|
||
}).then(function (v) {
|
||
ref.set(name, v);
|
||
return pair
|
||
})
|
||
})
|
||
};
|
||
for (i = 0, len = config.length; i < len; i++) {
|
||
middlewareFn = config[i];
|
||
fn1(name, middlewareFn)
|
||
}
|
||
}
|
||
middleware.push(function (pair) {
|
||
ref = pair[0], name = pair[1];
|
||
return Promise.resolve(ref.get(name))
|
||
});
|
||
validate = function (ref, name) {
|
||
var j, len1, p;
|
||
p = Promise.resolve([
|
||
ref,
|
||
name
|
||
]);
|
||
for (j = 0, len1 = middleware.length; j < len1; j++) {
|
||
middlewareFn = middleware[j];
|
||
p = p.then(middlewareFn)
|
||
}
|
||
return p
|
||
};
|
||
input = {
|
||
name: name,
|
||
ref: ref,
|
||
config: config,
|
||
validate: validate
|
||
};
|
||
return inputs[name] = input
|
||
};
|
||
for (name in configs) {
|
||
config = configs[name];
|
||
fn(name, config)
|
||
}
|
||
return inputs
|
||
};
|
||
module.exports = inputify //# sourceMappingURL=inputify.js.map
|
||
});
|
||
// source: node_modules/broken/lib/index.js
|
||
require.define('broken/lib', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Promise, PromiseInspection;
|
||
Promise = require('zousan/zousan-min');
|
||
Promise.suppressUncaughtRejectionError = false;
|
||
PromiseInspection = function () {
|
||
function PromiseInspection(arg) {
|
||
this.state = arg.state, this.value = arg.value, this.reason = arg.reason
|
||
}
|
||
PromiseInspection.prototype.isFulfilled = function () {
|
||
return this.state === 'fulfilled'
|
||
};
|
||
PromiseInspection.prototype.isRejected = function () {
|
||
return this.state === 'rejected'
|
||
};
|
||
return PromiseInspection
|
||
}();
|
||
Promise.reflect = function (promise) {
|
||
return new Promise(function (resolve, reject) {
|
||
return promise.then(function (value) {
|
||
return resolve(new PromiseInspection({
|
||
state: 'fulfilled',
|
||
value: value
|
||
}))
|
||
})['catch'](function (err) {
|
||
return resolve(new PromiseInspection({
|
||
state: 'rejected',
|
||
reason: err
|
||
}))
|
||
})
|
||
})
|
||
};
|
||
Promise.settle = function (promises) {
|
||
return Promise.all(promises.map(Promise.reflect))
|
||
};
|
||
Promise.prototype.callback = function (cb) {
|
||
if (typeof cb === 'function') {
|
||
this.then(function (value) {
|
||
return cb(null, value)
|
||
});
|
||
this['catch'](function (error) {
|
||
return cb(error, null)
|
||
})
|
||
}
|
||
return this
|
||
};
|
||
module.exports = Promise //# sourceMappingURL=index.js.map
|
||
});
|
||
// source: node_modules/zousan/zousan-min.js
|
||
require.define('zousan/zousan-min', function (module, exports, __dirname, __filename, process) {
|
||
!function (t) {
|
||
'use strict';
|
||
function e(t) {
|
||
if (t) {
|
||
var e = this;
|
||
t(function (t) {
|
||
e.resolve(t)
|
||
}, function (t) {
|
||
e.reject(t)
|
||
})
|
||
}
|
||
}
|
||
function n(t, e) {
|
||
if ('function' == typeof t.y)
|
||
try {
|
||
var n = t.y.call(i, e);
|
||
t.p.resolve(n)
|
||
} catch (o) {
|
||
t.p.reject(o)
|
||
}
|
||
else
|
||
t.p.resolve(e)
|
||
}
|
||
function o(t, e) {
|
||
if ('function' == typeof t.n)
|
||
try {
|
||
var n = t.n.call(i, e);
|
||
t.p.resolve(n)
|
||
} catch (o) {
|
||
t.p.reject(o)
|
||
}
|
||
else
|
||
t.p.reject(e)
|
||
}
|
||
var r, i, c = 'fulfilled', u = 'rejected', s = 'undefined', f = function () {
|
||
function t() {
|
||
for (; e.length - n;)
|
||
e[n](), e[n++] = i, n == o && (e.splice(0, o), n = 0)
|
||
}
|
||
var e = [], n = 0, o = 1024, r = function () {
|
||
if (typeof MutationObserver !== s) {
|
||
var e = document.createElement('div'), n = new MutationObserver(t);
|
||
return n.observe(e, { attributes: !0 }), function () {
|
||
e.setAttribute('a', 0)
|
||
}
|
||
}
|
||
return typeof setImmediate !== s ? function () {
|
||
setImmediate(t)
|
||
} : function () {
|
||
setTimeout(t, 0)
|
||
}
|
||
}();
|
||
return function (t) {
|
||
e.push(t), e.length - n == 1 && r()
|
||
}
|
||
}();
|
||
e.prototype = {
|
||
resolve: function (t) {
|
||
if (this.state === r) {
|
||
if (t === this)
|
||
return this.reject(new TypeError('Attempt to resolve promise with self'));
|
||
var e = this;
|
||
if (t && ('function' == typeof t || 'object' == typeof t))
|
||
try {
|
||
var o = !0, i = t.then;
|
||
if ('function' == typeof i)
|
||
return void i.call(t, function (t) {
|
||
o && (o = !1, e.resolve(t))
|
||
}, function (t) {
|
||
o && (o = !1, e.reject(t))
|
||
})
|
||
} catch (u) {
|
||
return void (o && this.reject(u))
|
||
}
|
||
this.state = c, this.v = t, e.c && f(function () {
|
||
for (var o = 0, r = e.c.length; r > o; o++)
|
||
n(e.c[o], t)
|
||
})
|
||
}
|
||
},
|
||
reject: function (t) {
|
||
if (this.state === r) {
|
||
this.state = u, this.v = t;
|
||
var n = this.c;
|
||
n ? f(function () {
|
||
for (var e = 0, r = n.length; r > e; e++)
|
||
o(n[e], t)
|
||
}) : e.suppressUncaughtRejectionError || console.log('You upset Zousan. Please catch rejections: ', t, t.stack)
|
||
}
|
||
},
|
||
then: function (t, i) {
|
||
var u = new e, s = {
|
||
y: t,
|
||
n: i,
|
||
p: u
|
||
};
|
||
if (this.state === r)
|
||
this.c ? this.c.push(s) : this.c = [s];
|
||
else {
|
||
var l = this.state, a = this.v;
|
||
f(function () {
|
||
l === c ? n(s, a) : o(s, a)
|
||
})
|
||
}
|
||
return u
|
||
},
|
||
'catch': function (t) {
|
||
return this.then(null, t)
|
||
},
|
||
'finally': function (t) {
|
||
return this.then(t, t)
|
||
},
|
||
timeout: function (t, n) {
|
||
n = n || 'Timeout';
|
||
var o = this;
|
||
return new e(function (e, r) {
|
||
setTimeout(function () {
|
||
r(Error(n))
|
||
}, t), o.then(function (t) {
|
||
e(t)
|
||
}, function (t) {
|
||
r(t)
|
||
})
|
||
})
|
||
}
|
||
}, e.resolve = function (t) {
|
||
var n = new e;
|
||
return n.resolve(t), n
|
||
}, e.reject = function (t) {
|
||
var n = new e;
|
||
return n.reject(t), n
|
||
}, e.all = function (t) {
|
||
function n(n, c) {
|
||
'function' != typeof n.then && (n = e.resolve(n)), n.then(function (e) {
|
||
o[c] = e, r++, r == t.length && i.resolve(o)
|
||
}, function (t) {
|
||
i.reject(t)
|
||
})
|
||
}
|
||
for (var o = [], r = 0, i = new e, c = 0; c < t.length; c++)
|
||
n(t[c], c);
|
||
return t.length || i.resolve(o), i
|
||
}, typeof module != s && module.exports && (module.exports = e), t.Zousan = e, e.soon = f
|
||
}('undefined' != typeof global ? global : this)
|
||
});
|
||
// source: node_modules/referential/lib/index.js
|
||
require.define('referential/lib', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var refer;
|
||
refer = require('referential/lib/refer');
|
||
refer.Ref = require('referential/lib/ref');
|
||
module.exports = refer //# sourceMappingURL=index.js.map
|
||
});
|
||
// source: node_modules/referential/lib/refer.js
|
||
require.define('referential/lib/refer', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Ref, refer;
|
||
Ref = require('referential/lib/ref');
|
||
module.exports = refer = function (state, ref) {
|
||
var fn, i, len, method, ref1, wrapper;
|
||
if (ref == null) {
|
||
ref = null
|
||
}
|
||
if (ref == null) {
|
||
ref = new Ref(state)
|
||
}
|
||
wrapper = function (key) {
|
||
return ref.get(key)
|
||
};
|
||
ref1 = [
|
||
'value',
|
||
'get',
|
||
'set',
|
||
'extend',
|
||
'index',
|
||
'ref'
|
||
];
|
||
fn = function (method) {
|
||
return wrapper[method] = function () {
|
||
return ref[method].apply(ref, arguments)
|
||
}
|
||
};
|
||
for (i = 0, len = ref1.length; i < len; i++) {
|
||
method = ref1[i];
|
||
fn(method)
|
||
}
|
||
wrapper.refer = function (key) {
|
||
return refer(null, ref.ref(key))
|
||
};
|
||
wrapper.clone = function (key) {
|
||
return refer(null, ref.clone(key))
|
||
};
|
||
return wrapper
|
||
} //# sourceMappingURL=refer.js.map
|
||
});
|
||
// source: node_modules/referential/lib/ref.js
|
||
require.define('referential/lib/ref', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Ref, extend, isArray, isNumber, isObject, isString;
|
||
extend = require('node.extend');
|
||
isArray = require('is-array');
|
||
isNumber = require('is-number');
|
||
isObject = require('is-object');
|
||
isString = require('is-string');
|
||
module.exports = Ref = function () {
|
||
function Ref(_value, parent, key1) {
|
||
this._value = _value;
|
||
this.parent = parent;
|
||
this.key = key1;
|
||
this._cache = {}
|
||
}
|
||
Ref.prototype._mutate = function () {
|
||
return this._cache = {}
|
||
};
|
||
Ref.prototype.value = function (state) {
|
||
if (!this.parent) {
|
||
if (state != null) {
|
||
this._value = state
|
||
}
|
||
return this._value
|
||
}
|
||
if (state != null) {
|
||
return this.parent.set(this.key, state)
|
||
} else {
|
||
return this.parent.get(this.key)
|
||
}
|
||
};
|
||
Ref.prototype.ref = function (key) {
|
||
if (!key) {
|
||
return this
|
||
}
|
||
return new Ref(null, this, key)
|
||
};
|
||
Ref.prototype.get = function (key) {
|
||
if (!key) {
|
||
return this.value()
|
||
} else {
|
||
if (this._cache[key]) {
|
||
return this._cache[key]
|
||
}
|
||
return this._cache[key] = this.index(key)
|
||
}
|
||
};
|
||
Ref.prototype.set = function (key, value) {
|
||
this._mutate();
|
||
if (value == null) {
|
||
this.value(extend(this.value(), key))
|
||
} else {
|
||
this.index(key, value)
|
||
}
|
||
return this
|
||
};
|
||
Ref.prototype.extend = function (key, value) {
|
||
var clone;
|
||
this._mutate();
|
||
if (value == null) {
|
||
this.value(extend(true, this.value(), key))
|
||
} else {
|
||
if (isObject(value)) {
|
||
this.value(extend(true, this.ref(key).get(), value))
|
||
} else {
|
||
clone = this.clone();
|
||
this.set(key, value);
|
||
this.value(extend(true, clone.get(), this.value()))
|
||
}
|
||
}
|
||
return this
|
||
};
|
||
Ref.prototype.clone = function (key) {
|
||
return new Ref(extend(true, {}, this.get(key)))
|
||
};
|
||
Ref.prototype.index = function (key, value, obj, prev) {
|
||
var next, prop, props;
|
||
if (obj == null) {
|
||
obj = this.value()
|
||
}
|
||
if (this.parent) {
|
||
return this.parent.index(this.key + '.' + key, value)
|
||
}
|
||
if (isNumber(key)) {
|
||
key = String(key)
|
||
}
|
||
props = key.split('.');
|
||
if (value == null) {
|
||
while (prop = props.shift()) {
|
||
if (!props.length) {
|
||
return obj != null ? obj[prop] : void 0
|
||
}
|
||
obj = obj != null ? obj[prop] : void 0
|
||
}
|
||
return
|
||
}
|
||
while (prop = props.shift()) {
|
||
if (!props.length) {
|
||
return obj[prop] = value
|
||
} else {
|
||
next = props[0];
|
||
if (obj[next] == null) {
|
||
if (isNumber(next)) {
|
||
if (obj[prop] == null) {
|
||
obj[prop] = []
|
||
}
|
||
} else {
|
||
if (obj[prop] == null) {
|
||
obj[prop] = {}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
obj = obj[prop]
|
||
}
|
||
};
|
||
return Ref
|
||
}() //# sourceMappingURL=ref.js.map
|
||
});
|
||
// source: node_modules/node.extend/index.js
|
||
require.define('node.extend', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = require('node.extend/lib/extend')
|
||
});
|
||
// source: node_modules/node.extend/lib/extend.js
|
||
require.define('node.extend/lib/extend', function (module, exports, __dirname, __filename, process) {
|
||
/*!
|
||
* node.extend
|
||
* Copyright 2011, John Resig
|
||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||
* http://jquery.org/license
|
||
*
|
||
* @fileoverview
|
||
* Port of jQuery.extend that actually works on node.js
|
||
*/
|
||
var is = require('is');
|
||
function extend() {
|
||
var target = arguments[0] || {};
|
||
var i = 1;
|
||
var length = arguments.length;
|
||
var deep = false;
|
||
var options, name, src, copy, copy_is_array, clone;
|
||
// Handle a deep copy situation
|
||
if (typeof target === 'boolean') {
|
||
deep = target;
|
||
target = arguments[1] || {};
|
||
// skip the boolean and the target
|
||
i = 2
|
||
}
|
||
// Handle case when target is a string or something (possible in deep copy)
|
||
if (typeof target !== 'object' && !is.fn(target)) {
|
||
target = {}
|
||
}
|
||
for (; i < length; i++) {
|
||
// Only deal with non-null/undefined values
|
||
options = arguments[i];
|
||
if (options != null) {
|
||
if (typeof options === 'string') {
|
||
options = options.split('')
|
||
}
|
||
// Extend the base object
|
||
for (name in options) {
|
||
src = target[name];
|
||
copy = options[name];
|
||
// Prevent never-ending loop
|
||
if (target === copy) {
|
||
continue
|
||
}
|
||
// Recurse if we're merging plain objects or arrays
|
||
if (deep && copy && (is.hash(copy) || (copy_is_array = is.array(copy)))) {
|
||
if (copy_is_array) {
|
||
copy_is_array = false;
|
||
clone = src && is.array(src) ? src : []
|
||
} else {
|
||
clone = src && is.hash(src) ? src : {}
|
||
}
|
||
// Never move original objects, clone them
|
||
target[name] = extend(deep, clone, copy) // Don't bring in undefined values
|
||
} else if (typeof copy !== 'undefined') {
|
||
target[name] = copy
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Return the modified object
|
||
return target
|
||
}
|
||
;
|
||
/**
|
||
* @public
|
||
*/
|
||
extend.version = '1.1.3';
|
||
/**
|
||
* Exports module.
|
||
*/
|
||
module.exports = extend
|
||
});
|
||
// source: node_modules/is/index.js
|
||
require.define('is', function (module, exports, __dirname, __filename, process) {
|
||
/* globals window, HTMLElement */
|
||
/**!
|
||
* is
|
||
* the definitive JavaScript type testing library
|
||
*
|
||
* @copyright 2013-2014 Enrico Marino / Jordan Harband
|
||
* @license MIT
|
||
*/
|
||
var objProto = Object.prototype;
|
||
var owns = objProto.hasOwnProperty;
|
||
var toStr = objProto.toString;
|
||
var symbolValueOf;
|
||
if (typeof Symbol === 'function') {
|
||
symbolValueOf = Symbol.prototype.valueOf
|
||
}
|
||
var isActualNaN = function (value) {
|
||
return value !== value
|
||
};
|
||
var NON_HOST_TYPES = {
|
||
'boolean': 1,
|
||
number: 1,
|
||
string: 1,
|
||
undefined: 1
|
||
};
|
||
var base64Regex = /^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)$/;
|
||
var hexRegex = /^[A-Fa-f0-9]+$/;
|
||
/**
|
||
* Expose `is`
|
||
*/
|
||
var is = module.exports = {};
|
||
/**
|
||
* Test general.
|
||
*/
|
||
/**
|
||
* is.type
|
||
* Test if `value` is a type of `type`.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @param {String} type type
|
||
* @return {Boolean} true if `value` is a type of `type`, false otherwise
|
||
* @api public
|
||
*/
|
||
is.a = is.type = function (value, type) {
|
||
return typeof value === type
|
||
};
|
||
/**
|
||
* is.defined
|
||
* Test if `value` is defined.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if 'value' is defined, false otherwise
|
||
* @api public
|
||
*/
|
||
is.defined = function (value) {
|
||
return typeof value !== 'undefined'
|
||
};
|
||
/**
|
||
* is.empty
|
||
* Test if `value` is empty.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is empty, false otherwise
|
||
* @api public
|
||
*/
|
||
is.empty = function (value) {
|
||
var type = toStr.call(value);
|
||
var key;
|
||
if (type === '[object Array]' || type === '[object Arguments]' || type === '[object String]') {
|
||
return value.length === 0
|
||
}
|
||
if (type === '[object Object]') {
|
||
for (key in value) {
|
||
if (owns.call(value, key)) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
return !value
|
||
};
|
||
/**
|
||
* is.equal
|
||
* Test if `value` is equal to `other`.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @param {Mixed} other value to compare with
|
||
* @return {Boolean} true if `value` is equal to `other`, false otherwise
|
||
*/
|
||
is.equal = function equal(value, other) {
|
||
if (value === other) {
|
||
return true
|
||
}
|
||
var type = toStr.call(value);
|
||
var key;
|
||
if (type !== toStr.call(other)) {
|
||
return false
|
||
}
|
||
if (type === '[object Object]') {
|
||
for (key in value) {
|
||
if (!is.equal(value[key], other[key]) || !(key in other)) {
|
||
return false
|
||
}
|
||
}
|
||
for (key in other) {
|
||
if (!is.equal(value[key], other[key]) || !(key in value)) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
if (type === '[object Array]') {
|
||
key = value.length;
|
||
if (key !== other.length) {
|
||
return false
|
||
}
|
||
while (--key) {
|
||
if (!is.equal(value[key], other[key])) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
if (type === '[object Function]') {
|
||
return value.prototype === other.prototype
|
||
}
|
||
if (type === '[object Date]') {
|
||
return value.getTime() === other.getTime()
|
||
}
|
||
return false
|
||
};
|
||
/**
|
||
* is.hosted
|
||
* Test if `value` is hosted by `host`.
|
||
*
|
||
* @param {Mixed} value to test
|
||
* @param {Mixed} host host to test with
|
||
* @return {Boolean} true if `value` is hosted by `host`, false otherwise
|
||
* @api public
|
||
*/
|
||
is.hosted = function (value, host) {
|
||
var type = typeof host[value];
|
||
return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type]
|
||
};
|
||
/**
|
||
* is.instance
|
||
* Test if `value` is an instance of `constructor`.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an instance of `constructor`
|
||
* @api public
|
||
*/
|
||
is.instance = is['instanceof'] = function (value, constructor) {
|
||
return value instanceof constructor
|
||
};
|
||
/**
|
||
* is.nil / is.null
|
||
* Test if `value` is null.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is null, false otherwise
|
||
* @api public
|
||
*/
|
||
is.nil = is['null'] = function (value) {
|
||
return value === null
|
||
};
|
||
/**
|
||
* is.undef / is.undefined
|
||
* Test if `value` is undefined.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is undefined, false otherwise
|
||
* @api public
|
||
*/
|
||
is.undef = is.undefined = function (value) {
|
||
return typeof value === 'undefined'
|
||
};
|
||
/**
|
||
* Test arguments.
|
||
*/
|
||
/**
|
||
* is.args
|
||
* Test if `value` is an arguments object.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an arguments object, false otherwise
|
||
* @api public
|
||
*/
|
||
is.args = is.arguments = function (value) {
|
||
var isStandardArguments = toStr.call(value) === '[object Arguments]';
|
||
var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);
|
||
return isStandardArguments || isOldArguments
|
||
};
|
||
/**
|
||
* Test array.
|
||
*/
|
||
/**
|
||
* is.array
|
||
* Test if 'value' is an array.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an array, false otherwise
|
||
* @api public
|
||
*/
|
||
is.array = Array.isArray || function (value) {
|
||
return toStr.call(value) === '[object Array]'
|
||
};
|
||
/**
|
||
* is.arguments.empty
|
||
* Test if `value` is an empty arguments object.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an empty arguments object, false otherwise
|
||
* @api public
|
||
*/
|
||
is.args.empty = function (value) {
|
||
return is.args(value) && value.length === 0
|
||
};
|
||
/**
|
||
* is.array.empty
|
||
* Test if `value` is an empty array.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an empty array, false otherwise
|
||
* @api public
|
||
*/
|
||
is.array.empty = function (value) {
|
||
return is.array(value) && value.length === 0
|
||
};
|
||
/**
|
||
* is.arraylike
|
||
* Test if `value` is an arraylike object.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an arguments object, false otherwise
|
||
* @api public
|
||
*/
|
||
is.arraylike = function (value) {
|
||
return !!value && !is.bool(value) && owns.call(value, 'length') && isFinite(value.length) && is.number(value.length) && value.length >= 0
|
||
};
|
||
/**
|
||
* Test boolean.
|
||
*/
|
||
/**
|
||
* is.bool
|
||
* Test if `value` is a boolean.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a boolean, false otherwise
|
||
* @api public
|
||
*/
|
||
is.bool = is['boolean'] = function (value) {
|
||
return toStr.call(value) === '[object Boolean]'
|
||
};
|
||
/**
|
||
* is.false
|
||
* Test if `value` is false.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is false, false otherwise
|
||
* @api public
|
||
*/
|
||
is['false'] = function (value) {
|
||
return is.bool(value) && Boolean(Number(value)) === false
|
||
};
|
||
/**
|
||
* is.true
|
||
* Test if `value` is true.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is true, false otherwise
|
||
* @api public
|
||
*/
|
||
is['true'] = function (value) {
|
||
return is.bool(value) && Boolean(Number(value)) === true
|
||
};
|
||
/**
|
||
* Test date.
|
||
*/
|
||
/**
|
||
* is.date
|
||
* Test if `value` is a date.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a date, false otherwise
|
||
* @api public
|
||
*/
|
||
is.date = function (value) {
|
||
return toStr.call(value) === '[object Date]'
|
||
};
|
||
/**
|
||
* Test element.
|
||
*/
|
||
/**
|
||
* is.element
|
||
* Test if `value` is an html element.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an HTML Element, false otherwise
|
||
* @api public
|
||
*/
|
||
is.element = function (value) {
|
||
return value !== undefined && typeof HTMLElement !== 'undefined' && value instanceof HTMLElement && value.nodeType === 1
|
||
};
|
||
/**
|
||
* Test error.
|
||
*/
|
||
/**
|
||
* is.error
|
||
* Test if `value` is an error object.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an error object, false otherwise
|
||
* @api public
|
||
*/
|
||
is.error = function (value) {
|
||
return toStr.call(value) === '[object Error]'
|
||
};
|
||
/**
|
||
* Test function.
|
||
*/
|
||
/**
|
||
* is.fn / is.function (deprecated)
|
||
* Test if `value` is a function.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a function, false otherwise
|
||
* @api public
|
||
*/
|
||
is.fn = is['function'] = function (value) {
|
||
var isAlert = typeof window !== 'undefined' && value === window.alert;
|
||
return isAlert || toStr.call(value) === '[object Function]'
|
||
};
|
||
/**
|
||
* Test number.
|
||
*/
|
||
/**
|
||
* is.number
|
||
* Test if `value` is a number.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a number, false otherwise
|
||
* @api public
|
||
*/
|
||
is.number = function (value) {
|
||
return toStr.call(value) === '[object Number]'
|
||
};
|
||
/**
|
||
* is.infinite
|
||
* Test if `value` is positive or negative infinity.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is positive or negative Infinity, false otherwise
|
||
* @api public
|
||
*/
|
||
is.infinite = function (value) {
|
||
return value === Infinity || value === -Infinity
|
||
};
|
||
/**
|
||
* is.decimal
|
||
* Test if `value` is a decimal number.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a decimal number, false otherwise
|
||
* @api public
|
||
*/
|
||
is.decimal = function (value) {
|
||
return is.number(value) && !isActualNaN(value) && !is.infinite(value) && value % 1 !== 0
|
||
};
|
||
/**
|
||
* is.divisibleBy
|
||
* Test if `value` is divisible by `n`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} n dividend
|
||
* @return {Boolean} true if `value` is divisible by `n`, false otherwise
|
||
* @api public
|
||
*/
|
||
is.divisibleBy = function (value, n) {
|
||
var isDividendInfinite = is.infinite(value);
|
||
var isDivisorInfinite = is.infinite(n);
|
||
var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;
|
||
return isDividendInfinite || isDivisorInfinite || isNonZeroNumber && value % n === 0
|
||
};
|
||
/**
|
||
* is.integer
|
||
* Test if `value` is an integer.
|
||
*
|
||
* @param value to test
|
||
* @return {Boolean} true if `value` is an integer, false otherwise
|
||
* @api public
|
||
*/
|
||
is.integer = is['int'] = function (value) {
|
||
return is.number(value) && !isActualNaN(value) && value % 1 === 0
|
||
};
|
||
/**
|
||
* is.maximum
|
||
* Test if `value` is greater than 'others' values.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Array} others values to compare with
|
||
* @return {Boolean} true if `value` is greater than `others` values
|
||
* @api public
|
||
*/
|
||
is.maximum = function (value, others) {
|
||
if (isActualNaN(value)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
} else if (!is.arraylike(others)) {
|
||
throw new TypeError('second argument must be array-like')
|
||
}
|
||
var len = others.length;
|
||
while (--len >= 0) {
|
||
if (value < others[len]) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
};
|
||
/**
|
||
* is.minimum
|
||
* Test if `value` is less than `others` values.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Array} others values to compare with
|
||
* @return {Boolean} true if `value` is less than `others` values
|
||
* @api public
|
||
*/
|
||
is.minimum = function (value, others) {
|
||
if (isActualNaN(value)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
} else if (!is.arraylike(others)) {
|
||
throw new TypeError('second argument must be array-like')
|
||
}
|
||
var len = others.length;
|
||
while (--len >= 0) {
|
||
if (value > others[len]) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
};
|
||
/**
|
||
* is.nan
|
||
* Test if `value` is not a number.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is not a number, false otherwise
|
||
* @api public
|
||
*/
|
||
is.nan = function (value) {
|
||
return !is.number(value) || value !== value
|
||
};
|
||
/**
|
||
* is.even
|
||
* Test if `value` is an even number.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @return {Boolean} true if `value` is an even number, false otherwise
|
||
* @api public
|
||
*/
|
||
is.even = function (value) {
|
||
return is.infinite(value) || is.number(value) && value === value && value % 2 === 0
|
||
};
|
||
/**
|
||
* is.odd
|
||
* Test if `value` is an odd number.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @return {Boolean} true if `value` is an odd number, false otherwise
|
||
* @api public
|
||
*/
|
||
is.odd = function (value) {
|
||
return is.infinite(value) || is.number(value) && value === value && value % 2 !== 0
|
||
};
|
||
/**
|
||
* is.ge
|
||
* Test if `value` is greater than or equal to `other`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} other value to compare with
|
||
* @return {Boolean}
|
||
* @api public
|
||
*/
|
||
is.ge = function (value, other) {
|
||
if (isActualNaN(value) || isActualNaN(other)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
}
|
||
return !is.infinite(value) && !is.infinite(other) && value >= other
|
||
};
|
||
/**
|
||
* is.gt
|
||
* Test if `value` is greater than `other`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} other value to compare with
|
||
* @return {Boolean}
|
||
* @api public
|
||
*/
|
||
is.gt = function (value, other) {
|
||
if (isActualNaN(value) || isActualNaN(other)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
}
|
||
return !is.infinite(value) && !is.infinite(other) && value > other
|
||
};
|
||
/**
|
||
* is.le
|
||
* Test if `value` is less than or equal to `other`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} other value to compare with
|
||
* @return {Boolean} if 'value' is less than or equal to 'other'
|
||
* @api public
|
||
*/
|
||
is.le = function (value, other) {
|
||
if (isActualNaN(value) || isActualNaN(other)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
}
|
||
return !is.infinite(value) && !is.infinite(other) && value <= other
|
||
};
|
||
/**
|
||
* is.lt
|
||
* Test if `value` is less than `other`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} other value to compare with
|
||
* @return {Boolean} if `value` is less than `other`
|
||
* @api public
|
||
*/
|
||
is.lt = function (value, other) {
|
||
if (isActualNaN(value) || isActualNaN(other)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
}
|
||
return !is.infinite(value) && !is.infinite(other) && value < other
|
||
};
|
||
/**
|
||
* is.within
|
||
* Test if `value` is within `start` and `finish`.
|
||
*
|
||
* @param {Number} value value to test
|
||
* @param {Number} start lower bound
|
||
* @param {Number} finish upper bound
|
||
* @return {Boolean} true if 'value' is is within 'start' and 'finish'
|
||
* @api public
|
||
*/
|
||
is.within = function (value, start, finish) {
|
||
if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {
|
||
throw new TypeError('NaN is not a valid value')
|
||
} else if (!is.number(value) || !is.number(start) || !is.number(finish)) {
|
||
throw new TypeError('all arguments must be numbers')
|
||
}
|
||
var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);
|
||
return isAnyInfinite || value >= start && value <= finish
|
||
};
|
||
/**
|
||
* Test object.
|
||
*/
|
||
/**
|
||
* is.object
|
||
* Test if `value` is an object.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is an object, false otherwise
|
||
* @api public
|
||
*/
|
||
is.object = function (value) {
|
||
return toStr.call(value) === '[object Object]'
|
||
};
|
||
/**
|
||
* is.hash
|
||
* Test if `value` is a hash - a plain object literal.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a hash, false otherwise
|
||
* @api public
|
||
*/
|
||
is.hash = function (value) {
|
||
return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval
|
||
};
|
||
/**
|
||
* Test regexp.
|
||
*/
|
||
/**
|
||
* is.regexp
|
||
* Test if `value` is a regular expression.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a regexp, false otherwise
|
||
* @api public
|
||
*/
|
||
is.regexp = function (value) {
|
||
return toStr.call(value) === '[object RegExp]'
|
||
};
|
||
/**
|
||
* Test string.
|
||
*/
|
||
/**
|
||
* is.string
|
||
* Test if `value` is a string.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if 'value' is a string, false otherwise
|
||
* @api public
|
||
*/
|
||
is.string = function (value) {
|
||
return toStr.call(value) === '[object String]'
|
||
};
|
||
/**
|
||
* Test base64 string.
|
||
*/
|
||
/**
|
||
* is.base64
|
||
* Test if `value` is a valid base64 encoded string.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if 'value' is a base64 encoded string, false otherwise
|
||
* @api public
|
||
*/
|
||
is.base64 = function (value) {
|
||
return is.string(value) && (!value.length || base64Regex.test(value))
|
||
};
|
||
/**
|
||
* Test base64 string.
|
||
*/
|
||
/**
|
||
* is.hex
|
||
* Test if `value` is a valid hex encoded string.
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if 'value' is a hex encoded string, false otherwise
|
||
* @api public
|
||
*/
|
||
is.hex = function (value) {
|
||
return is.string(value) && (!value.length || hexRegex.test(value))
|
||
};
|
||
/**
|
||
* is.symbol
|
||
* Test if `value` is an ES6 Symbol
|
||
*
|
||
* @param {Mixed} value value to test
|
||
* @return {Boolean} true if `value` is a Symbol, false otherise
|
||
* @api public
|
||
*/
|
||
is.symbol = function (value) {
|
||
return typeof Symbol === 'function' && toStr.call(value) === '[object Symbol]' && typeof symbolValueOf.call(value) === 'symbol'
|
||
}
|
||
});
|
||
// source: node_modules/is-array/index.js
|
||
require.define('is-array', function (module, exports, __dirname, __filename, process) {
|
||
/**
|
||
* isArray
|
||
*/
|
||
var isArray = Array.isArray;
|
||
/**
|
||
* toString
|
||
*/
|
||
var str = Object.prototype.toString;
|
||
/**
|
||
* Whether or not the given `val`
|
||
* is an array.
|
||
*
|
||
* example:
|
||
*
|
||
* isArray([]);
|
||
* // > true
|
||
* isArray(arguments);
|
||
* // > false
|
||
* isArray('');
|
||
* // > false
|
||
*
|
||
* @param {mixed} val
|
||
* @return {bool}
|
||
*/
|
||
module.exports = isArray || function (val) {
|
||
return !!val && '[object Array]' == str.call(val)
|
||
}
|
||
});
|
||
// source: node_modules/is-number/index.js
|
||
require.define('is-number', function (module, exports, __dirname, __filename, process) {
|
||
/*!
|
||
* is-number <https://github.com/jonschlinkert/is-number>
|
||
*
|
||
* Copyright (c) 2014-2015, Jon Schlinkert.
|
||
* Licensed under the MIT License.
|
||
*/
|
||
'use strict';
|
||
var typeOf = require('kind-of');
|
||
module.exports = function isNumber(num) {
|
||
var type = typeOf(num);
|
||
if (type !== 'number' && type !== 'string') {
|
||
return false
|
||
}
|
||
var n = +num;
|
||
return n - n + 1 >= 0 && num !== ''
|
||
}
|
||
});
|
||
// source: node_modules/kind-of/index.js
|
||
require.define('kind-of', function (module, exports, __dirname, __filename, process) {
|
||
var isBuffer = require('is-buffer');
|
||
var toString = Object.prototype.toString;
|
||
/**
|
||
* Get the native `typeof` a value.
|
||
*
|
||
* @param {*} `val`
|
||
* @return {*} Native javascript type
|
||
*/
|
||
module.exports = function kindOf(val) {
|
||
// primitivies
|
||
if (typeof val === 'undefined') {
|
||
return 'undefined'
|
||
}
|
||
if (val === null) {
|
||
return 'null'
|
||
}
|
||
if (val === true || val === false || val instanceof Boolean) {
|
||
return 'boolean'
|
||
}
|
||
if (typeof val === 'string' || val instanceof String) {
|
||
return 'string'
|
||
}
|
||
if (typeof val === 'number' || val instanceof Number) {
|
||
return 'number'
|
||
}
|
||
// functions
|
||
if (typeof val === 'function' || val instanceof Function) {
|
||
return 'function'
|
||
}
|
||
// array
|
||
if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {
|
||
return 'array'
|
||
}
|
||
// check for instances of RegExp and Date before calling `toString`
|
||
if (val instanceof RegExp) {
|
||
return 'regexp'
|
||
}
|
||
if (val instanceof Date) {
|
||
return 'date'
|
||
}
|
||
// other objects
|
||
var type = toString.call(val);
|
||
if (type === '[object RegExp]') {
|
||
return 'regexp'
|
||
}
|
||
if (type === '[object Date]') {
|
||
return 'date'
|
||
}
|
||
if (type === '[object Arguments]') {
|
||
return 'arguments'
|
||
}
|
||
// buffer
|
||
if (typeof Buffer !== 'undefined' && isBuffer(val)) {
|
||
return 'buffer'
|
||
}
|
||
// es6: Map, WeakMap, Set, WeakSet
|
||
if (type === '[object Set]') {
|
||
return 'set'
|
||
}
|
||
if (type === '[object WeakSet]') {
|
||
return 'weakset'
|
||
}
|
||
if (type === '[object Map]') {
|
||
return 'map'
|
||
}
|
||
if (type === '[object WeakMap]') {
|
||
return 'weakmap'
|
||
}
|
||
if (type === '[object Symbol]') {
|
||
return 'symbol'
|
||
}
|
||
// typed arrays
|
||
if (type === '[object Int8Array]') {
|
||
return 'int8array'
|
||
}
|
||
if (type === '[object Uint8Array]') {
|
||
return 'uint8array'
|
||
}
|
||
if (type === '[object Uint8ClampedArray]') {
|
||
return 'uint8clampedarray'
|
||
}
|
||
if (type === '[object Int16Array]') {
|
||
return 'int16array'
|
||
}
|
||
if (type === '[object Uint16Array]') {
|
||
return 'uint16array'
|
||
}
|
||
if (type === '[object Int32Array]') {
|
||
return 'int32array'
|
||
}
|
||
if (type === '[object Uint32Array]') {
|
||
return 'uint32array'
|
||
}
|
||
if (type === '[object Float32Array]') {
|
||
return 'float32array'
|
||
}
|
||
if (type === '[object Float64Array]') {
|
||
return 'float64array'
|
||
}
|
||
// must be a plain object
|
||
return 'object'
|
||
}
|
||
});
|
||
// source: node_modules/is-buffer/index.js
|
||
require.define('is-buffer', function (module, exports, __dirname, __filename, process) {
|
||
/**
|
||
* Determine if an object is Buffer
|
||
*
|
||
* Author: Feross Aboukhadijeh <[email protected]> <http://feross.org>
|
||
* License: MIT
|
||
*
|
||
* `npm install is-buffer`
|
||
*/
|
||
module.exports = function (obj) {
|
||
return !!(obj != null && (obj._isBuffer || obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)))
|
||
}
|
||
});
|
||
// source: node_modules/is-object/index.js
|
||
require.define('is-object', function (module, exports, __dirname, __filename, process) {
|
||
'use strict';
|
||
module.exports = function isObject(x) {
|
||
return typeof x === 'object' && x !== null
|
||
}
|
||
});
|
||
// source: node_modules/is-string/index.js
|
||
require.define('is-string', function (module, exports, __dirname, __filename, process) {
|
||
'use strict';
|
||
var strValue = String.prototype.valueOf;
|
||
var tryStringObject = function tryStringObject(value) {
|
||
try {
|
||
strValue.call(value);
|
||
return true
|
||
} catch (e) {
|
||
return false
|
||
}
|
||
};
|
||
var toStr = Object.prototype.toString;
|
||
var strClass = '[object String]';
|
||
var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';
|
||
module.exports = function isString(value) {
|
||
if (typeof value === 'string') {
|
||
return true
|
||
}
|
||
if (typeof value !== 'object') {
|
||
return false
|
||
}
|
||
return hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass
|
||
}
|
||
});
|
||
// source: node_modules/promise-settle/index.js
|
||
require.define('promise-settle', function (module, exports, __dirname, __filename, process) {
|
||
'use strict';
|
||
module.exports = require('promise-settle/lib/promise-settle')
|
||
});
|
||
// source: node_modules/promise-settle/lib/promise-settle.js
|
||
require.define('promise-settle/lib/promise-settle', function (module, exports, __dirname, __filename, process) {
|
||
'use strict';
|
||
module.exports = settle;
|
||
function settle(promises) {
|
||
return Promise.resolve().then(function () {
|
||
return promises
|
||
}).then(function (promises) {
|
||
if (!Array.isArray(promises))
|
||
throw new TypeError('Expected an array of Promises');
|
||
var promiseResults = promises.map(function (promise) {
|
||
return Promise.resolve().then(function () {
|
||
return promise
|
||
}).then(function (result) {
|
||
return promiseResult(result)
|
||
}).catch(function (err) {
|
||
return promiseResult(null, err)
|
||
})
|
||
});
|
||
return Promise.all(promiseResults)
|
||
})
|
||
}
|
||
function promiseResult(result, err) {
|
||
var isFulfilled = typeof err === 'undefined';
|
||
var value = isFulfilled ? returns.bind(result) : throws.bind(new Error('Promise is rejected'));
|
||
var isRejected = !isFulfilled;
|
||
var reason = isRejected ? returns.bind(err) : throws.bind(new Error('Promise is fulfilled'));
|
||
return {
|
||
isFulfilled: returns.bind(isFulfilled),
|
||
isRejected: returns.bind(isRejected),
|
||
value: value,
|
||
reason: reason
|
||
}
|
||
}
|
||
function returns() {
|
||
return this
|
||
}
|
||
function throws() {
|
||
throw this
|
||
}
|
||
});
|
||
// source: node_modules/crowdcontrol/lib/views/input.js
|
||
require.define('crowdcontrol/lib/views/input', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Input, View, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
View = require('crowdcontrol/lib/views/view');
|
||
Input = function (superClass) {
|
||
extend(Input, superClass);
|
||
function Input() {
|
||
return Input.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Input.prototype.input = null;
|
||
Input.prototype.errorMessage = '';
|
||
Input.prototype.errorHtml = '<div class="error-container" if="{ errorMessage }">\n <div class="error-message">{ errorMessage }</div>\n</div>';
|
||
Input.prototype.beforeInit = function () {
|
||
return this.html += this.errorHtml
|
||
};
|
||
Input.prototype.init = function () {
|
||
return this.input.on('validate', function (_this) {
|
||
return function (pRef) {
|
||
return _this.validate(pRef)
|
||
}
|
||
}(this))
|
||
};
|
||
Input.prototype.getValue = function (event) {
|
||
return event.target.value
|
||
};
|
||
Input.prototype.change = function (event) {
|
||
var name, ref, ref1, value;
|
||
ref1 = this.input, ref = ref1.ref, name = ref1.name;
|
||
value = this.getValue(event);
|
||
if (value === ref.get(name)) {
|
||
return
|
||
}
|
||
this.input.ref.set(name, value);
|
||
this.clearError();
|
||
return this.validate()
|
||
};
|
||
Input.prototype.error = function (err) {
|
||
var ref1;
|
||
return this.errorMessage = (ref1 = err != null ? err.message : void 0) != null ? ref1 : err
|
||
};
|
||
Input.prototype.changed = function () {
|
||
};
|
||
Input.prototype.clearError = function () {
|
||
return this.errorMessage = ''
|
||
};
|
||
Input.prototype.validate = function (pRef) {
|
||
var p;
|
||
p = this.input.validate(this.input.ref, this.input.name).then(function (_this) {
|
||
return function (value) {
|
||
_this.changed(value);
|
||
return _this.update()
|
||
}
|
||
}(this))['catch'](function (_this) {
|
||
return function (err) {
|
||
_this.error(err);
|
||
_this.update();
|
||
throw err
|
||
}
|
||
}(this));
|
||
if (pRef != null) {
|
||
pRef.p = p
|
||
}
|
||
return p
|
||
};
|
||
return Input
|
||
}(View);
|
||
module.exports = Input //# sourceMappingURL=input.js.map
|
||
});
|
||
// source: src/controls/control.coffee
|
||
require.define('./controls/control', function (module, exports, __dirname, __filename, process) {
|
||
var $, Control, CrowdControl, Events, riot, scrolling, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
CrowdControl = require('crowdcontrol/lib');
|
||
Events = require('./events');
|
||
riot = require('crowdcontrol/lib').riot.riot;
|
||
$ = require('jquery/dist/jquery');
|
||
scrolling = false;
|
||
module.exports = Control = function (superClass) {
|
||
extend(Control, superClass);
|
||
function Control() {
|
||
return Control.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Control.prototype.init = function () {
|
||
if (this.input == null && this.inputs != null) {
|
||
this.input = this.inputs[this.lookup]
|
||
}
|
||
if (this.input != null) {
|
||
return Control.__super__.init.apply(this, arguments)
|
||
}
|
||
};
|
||
Control.prototype.getValue = function (event) {
|
||
var ref;
|
||
return (ref = $(event.target).val()) != null ? ref.trim() : void 0
|
||
};
|
||
Control.prototype.error = function (err) {
|
||
var ref;
|
||
if (err instanceof DOMException) {
|
||
console.log('WARNING: Error in riot dom manipulation ignored.', err);
|
||
return
|
||
}
|
||
Control.__super__.error.apply(this, arguments);
|
||
if (!scrolling) {
|
||
scrolling = true;
|
||
$('html, body').animate({ scrollTop: $(this.root).offset().top - $(window).height() / 2 }, {
|
||
complete: function () {
|
||
return scrolling = false
|
||
},
|
||
duration: 500
|
||
})
|
||
}
|
||
if ((ref = this.m) != null) {
|
||
ref.trigger(Events.ChangeFailed, this.input.name, this.input.ref.get(this.input.name))
|
||
}
|
||
return this.input.trigger(Events.ChangeFailed, this.input.name, this.input.ref.get(this.input.name))
|
||
};
|
||
Control.prototype.change = function () {
|
||
var ref;
|
||
Control.__super__.change.apply(this, arguments);
|
||
if ((ref = this.m) != null) {
|
||
ref.trigger(Events.Change, this.input.name, this.input.ref.get(this.input.name))
|
||
}
|
||
return this.input.trigger(Events.Change, this.input.name, this.input.ref.get(this.input.name))
|
||
};
|
||
Control.prototype.changed = function (value) {
|
||
var ref;
|
||
if ((ref = this.m) != null) {
|
||
ref.trigger(Events.ChangeSuccess, this.input.name, value)
|
||
}
|
||
this.input.trigger(Events.ChangeSuccess, this.input.name, value);
|
||
return riot.update()
|
||
};
|
||
Control.register = function (m) {
|
||
var v;
|
||
v = Control.__super__.constructor.register.call(this);
|
||
return v.m = m
|
||
};
|
||
return Control
|
||
}(CrowdControl.Views.Input)
|
||
});
|
||
// source: src/events.coffee
|
||
require.define('./events', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = {
|
||
Change: 'change',
|
||
ChangeSuccess: 'change-success',
|
||
ChangeFailed: 'change-failed',
|
||
FilterChange: 'filter-change'
|
||
}
|
||
});
|
||
// source: node_modules/jquery/dist/jquery.js
|
||
require.define('jquery/dist/jquery', function (module, exports, __dirname, __filename, process) {
|
||
/*!
|
||
* jQuery JavaScript Library v2.2.2
|
||
* http://jquery.com/
|
||
*
|
||
* Includes Sizzle.js
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright jQuery Foundation and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2016-03-17T17:51Z
|
||
*/
|
||
(function (global, factory) {
|
||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||
// For CommonJS and CommonJS-like environments where a proper `window`
|
||
// is present, execute the factory and get jQuery.
|
||
// For environments that do not have a `window` with a `document`
|
||
// (such as Node.js), expose a factory as module.exports.
|
||
// This accentuates the need for the creation of a real `window`.
|
||
// e.g. var jQuery = require("jquery")(window);
|
||
// See ticket #14549 for more info.
|
||
module.exports = global.document ? factory(global, true) : function (w) {
|
||
if (!w.document) {
|
||
throw new Error('jQuery requires a window with a document')
|
||
}
|
||
return factory(w)
|
||
}
|
||
} else {
|
||
factory(global)
|
||
} // Pass this if window is not defined yet
|
||
}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {
|
||
// Support: Firefox 18+
|
||
// Can't be in strict mode, several libs including ASP.NET trace
|
||
// the stack via arguments.caller.callee and Firefox dies if
|
||
// you try to trace through "use strict" call chains. (#13335)
|
||
//"use strict";
|
||
var arr = [];
|
||
var document = window.document;
|
||
var slice = arr.slice;
|
||
var concat = arr.concat;
|
||
var push = arr.push;
|
||
var indexOf = arr.indexOf;
|
||
var class2type = {};
|
||
var toString = class2type.toString;
|
||
var hasOwn = class2type.hasOwnProperty;
|
||
var support = {};
|
||
var version = '2.2.2',
|
||
// Define a local copy of jQuery
|
||
jQuery = function (selector, context) {
|
||
// The jQuery object is actually just the init constructor 'enhanced'
|
||
// Need init if jQuery is called (just allow error to be thrown if not included)
|
||
return new jQuery.fn.init(selector, context)
|
||
},
|
||
// Support: Android<4.1
|
||
// Make sure we trim BOM and NBSP
|
||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
||
// Matches dashed string for camelizing
|
||
rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi,
|
||
// Used by jQuery.camelCase as callback to replace()
|
||
fcamelCase = function (all, letter) {
|
||
return letter.toUpperCase()
|
||
};
|
||
jQuery.fn = jQuery.prototype = {
|
||
// The current version of jQuery being used
|
||
jquery: version,
|
||
constructor: jQuery,
|
||
// Start with an empty selector
|
||
selector: '',
|
||
// The default length of a jQuery object is 0
|
||
length: 0,
|
||
toArray: function () {
|
||
return slice.call(this)
|
||
},
|
||
// Get the Nth element in the matched element set OR
|
||
// Get the whole matched element set as a clean array
|
||
get: function (num) {
|
||
return num != null ? num < 0 ? this[num + this.length] : this[num] : // Return all the elements in a clean array
|
||
slice.call(this)
|
||
},
|
||
// Take an array of elements and push it onto the stack
|
||
// (returning the new matched element set)
|
||
pushStack: function (elems) {
|
||
// Build a new jQuery matched element set
|
||
var ret = jQuery.merge(this.constructor(), elems);
|
||
// Add the old object onto the stack (as a reference)
|
||
ret.prevObject = this;
|
||
ret.context = this.context;
|
||
// Return the newly-formed element set
|
||
return ret
|
||
},
|
||
// Execute a callback for every element in the matched set.
|
||
each: function (callback) {
|
||
return jQuery.each(this, callback)
|
||
},
|
||
map: function (callback) {
|
||
return this.pushStack(jQuery.map(this, function (elem, i) {
|
||
return callback.call(elem, i, elem)
|
||
}))
|
||
},
|
||
slice: function () {
|
||
return this.pushStack(slice.apply(this, arguments))
|
||
},
|
||
first: function () {
|
||
return this.eq(0)
|
||
},
|
||
last: function () {
|
||
return this.eq(-1)
|
||
},
|
||
eq: function (i) {
|
||
var len = this.length, j = +i + (i < 0 ? len : 0);
|
||
return this.pushStack(j >= 0 && j < len ? [this[j]] : [])
|
||
},
|
||
end: function () {
|
||
return this.prevObject || this.constructor()
|
||
},
|
||
// For internal use only.
|
||
// Behaves like an Array's method, not like a jQuery method.
|
||
push: push,
|
||
sort: arr.sort,
|
||
splice: arr.splice
|
||
};
|
||
jQuery.extend = jQuery.fn.extend = function () {
|
||
var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;
|
||
// Handle a deep copy situation
|
||
if (typeof target === 'boolean') {
|
||
deep = target;
|
||
// Skip the boolean and the target
|
||
target = arguments[i] || {};
|
||
i++
|
||
}
|
||
// Handle case when target is a string or something (possible in deep copy)
|
||
if (typeof target !== 'object' && !jQuery.isFunction(target)) {
|
||
target = {}
|
||
}
|
||
// Extend jQuery itself if only one argument is passed
|
||
if (i === length) {
|
||
target = this;
|
||
i--
|
||
}
|
||
for (; i < length; i++) {
|
||
// Only deal with non-null/undefined values
|
||
if ((options = arguments[i]) != null) {
|
||
// Extend the base object
|
||
for (name in options) {
|
||
src = target[name];
|
||
copy = options[name];
|
||
// Prevent never-ending loop
|
||
if (target === copy) {
|
||
continue
|
||
}
|
||
// Recurse if we're merging plain objects or arrays
|
||
if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {
|
||
if (copyIsArray) {
|
||
copyIsArray = false;
|
||
clone = src && jQuery.isArray(src) ? src : []
|
||
} else {
|
||
clone = src && jQuery.isPlainObject(src) ? src : {}
|
||
}
|
||
// Never move original objects, clone them
|
||
target[name] = jQuery.extend(deep, clone, copy) // Don't bring in undefined values
|
||
} else if (copy !== undefined) {
|
||
target[name] = copy
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Return the modified object
|
||
return target
|
||
};
|
||
jQuery.extend({
|
||
// Unique for each copy of jQuery on the page
|
||
expando: 'jQuery' + (version + Math.random()).replace(/\D/g, ''),
|
||
// Assume jQuery is ready without the ready module
|
||
isReady: true,
|
||
error: function (msg) {
|
||
throw new Error(msg)
|
||
},
|
||
noop: function () {
|
||
},
|
||
isFunction: function (obj) {
|
||
return jQuery.type(obj) === 'function'
|
||
},
|
||
isArray: Array.isArray,
|
||
isWindow: function (obj) {
|
||
return obj != null && obj === obj.window
|
||
},
|
||
isNumeric: function (obj) {
|
||
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
|
||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
||
// subtraction forces infinities to NaN
|
||
// adding 1 corrects loss of precision from parseFloat (#15100)
|
||
var realStringObj = obj && obj.toString();
|
||
return !jQuery.isArray(obj) && realStringObj - parseFloat(realStringObj) + 1 >= 0
|
||
},
|
||
isPlainObject: function (obj) {
|
||
var key;
|
||
// Not plain objects:
|
||
// - Any object or value whose internal [[Class]] property is not "[object Object]"
|
||
// - DOM nodes
|
||
// - window
|
||
if (jQuery.type(obj) !== 'object' || obj.nodeType || jQuery.isWindow(obj)) {
|
||
return false
|
||
}
|
||
// Not own constructor property must be Object
|
||
if (obj.constructor && !hasOwn.call(obj, 'constructor') && !hasOwn.call(obj.constructor.prototype || {}, 'isPrototypeOf')) {
|
||
return false
|
||
}
|
||
// Own properties are enumerated firstly, so to speed up,
|
||
// if last one is own, then all properties are own
|
||
for (key in obj) {
|
||
}
|
||
return key === undefined || hasOwn.call(obj, key)
|
||
},
|
||
isEmptyObject: function (obj) {
|
||
var name;
|
||
for (name in obj) {
|
||
return false
|
||
}
|
||
return true
|
||
},
|
||
type: function (obj) {
|
||
if (obj == null) {
|
||
return obj + ''
|
||
}
|
||
// Support: Android<4.0, iOS<6 (functionish RegExp)
|
||
return typeof obj === 'object' || typeof obj === 'function' ? class2type[toString.call(obj)] || 'object' : typeof obj
|
||
},
|
||
// Evaluates a script in a global context
|
||
globalEval: function (code) {
|
||
var script, indirect = eval;
|
||
code = jQuery.trim(code);
|
||
if (code) {
|
||
// If the code includes a valid, prologue position
|
||
// strict mode pragma, execute code by injecting a
|
||
// script tag into the document.
|
||
if (code.indexOf('use strict') === 1) {
|
||
script = document.createElement('script');
|
||
script.text = code;
|
||
document.head.appendChild(script).parentNode.removeChild(script)
|
||
} else {
|
||
// Otherwise, avoid the DOM node creation, insertion
|
||
// and removal by using an indirect global eval
|
||
indirect(code)
|
||
}
|
||
}
|
||
},
|
||
// Convert dashed to camelCase; used by the css and data modules
|
||
// Support: IE9-11+
|
||
// Microsoft forgot to hump their vendor prefix (#9572)
|
||
camelCase: function (string) {
|
||
return string.replace(rmsPrefix, 'ms-').replace(rdashAlpha, fcamelCase)
|
||
},
|
||
nodeName: function (elem, name) {
|
||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase()
|
||
},
|
||
each: function (obj, callback) {
|
||
var length, i = 0;
|
||
if (isArrayLike(obj)) {
|
||
length = obj.length;
|
||
for (; i < length; i++) {
|
||
if (callback.call(obj[i], i, obj[i]) === false) {
|
||
break
|
||
}
|
||
}
|
||
} else {
|
||
for (i in obj) {
|
||
if (callback.call(obj[i], i, obj[i]) === false) {
|
||
break
|
||
}
|
||
}
|
||
}
|
||
return obj
|
||
},
|
||
// Support: Android<4.1
|
||
trim: function (text) {
|
||
return text == null ? '' : (text + '').replace(rtrim, '')
|
||
},
|
||
// results is for internal usage only
|
||
makeArray: function (arr, results) {
|
||
var ret = results || [];
|
||
if (arr != null) {
|
||
if (isArrayLike(Object(arr))) {
|
||
jQuery.merge(ret, typeof arr === 'string' ? [arr] : arr)
|
||
} else {
|
||
push.call(ret, arr)
|
||
}
|
||
}
|
||
return ret
|
||
},
|
||
inArray: function (elem, arr, i) {
|
||
return arr == null ? -1 : indexOf.call(arr, elem, i)
|
||
},
|
||
merge: function (first, second) {
|
||
var len = +second.length, j = 0, i = first.length;
|
||
for (; j < len; j++) {
|
||
first[i++] = second[j]
|
||
}
|
||
first.length = i;
|
||
return first
|
||
},
|
||
grep: function (elems, callback, invert) {
|
||
var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert;
|
||
// Go through the array, only saving the items
|
||
// that pass the validator function
|
||
for (; i < length; i++) {
|
||
callbackInverse = !callback(elems[i], i);
|
||
if (callbackInverse !== callbackExpect) {
|
||
matches.push(elems[i])
|
||
}
|
||
}
|
||
return matches
|
||
},
|
||
// arg is for internal usage only
|
||
map: function (elems, callback, arg) {
|
||
var length, value, i = 0, ret = [];
|
||
// Go through the array, translating each of the items to their new values
|
||
if (isArrayLike(elems)) {
|
||
length = elems.length;
|
||
for (; i < length; i++) {
|
||
value = callback(elems[i], i, arg);
|
||
if (value != null) {
|
||
ret.push(value)
|
||
}
|
||
} // Go through every key on the object,
|
||
} else {
|
||
for (i in elems) {
|
||
value = callback(elems[i], i, arg);
|
||
if (value != null) {
|
||
ret.push(value)
|
||
}
|
||
}
|
||
}
|
||
// Flatten any nested arrays
|
||
return concat.apply([], ret)
|
||
},
|
||
// A global GUID counter for objects
|
||
guid: 1,
|
||
// Bind a function to a context, optionally partially applying any
|
||
// arguments.
|
||
proxy: function (fn, context) {
|
||
var tmp, args, proxy;
|
||
if (typeof context === 'string') {
|
||
tmp = fn[context];
|
||
context = fn;
|
||
fn = tmp
|
||
}
|
||
// Quick check to determine if target is callable, in the spec
|
||
// this throws a TypeError, but we will just return undefined.
|
||
if (!jQuery.isFunction(fn)) {
|
||
return undefined
|
||
}
|
||
// Simulated bind
|
||
args = slice.call(arguments, 2);
|
||
proxy = function () {
|
||
return fn.apply(context || this, args.concat(slice.call(arguments)))
|
||
};
|
||
// Set the guid of unique handler to the same of original handler, so it can be removed
|
||
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
||
return proxy
|
||
},
|
||
now: Date.now,
|
||
// jQuery.support is not used in Core but other projects attach their
|
||
// properties to it so it needs to exist.
|
||
support: support
|
||
});
|
||
// JSHint would error on this code due to the Symbol not being defined in ES5.
|
||
// Defining this global in .jshintrc would create a danger of using the global
|
||
// unguarded in another place, it seems safer to just disable JSHint for these
|
||
// three lines.
|
||
/* jshint ignore: start */
|
||
if (typeof Symbol === 'function') {
|
||
jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]
|
||
}
|
||
/* jshint ignore: end */
|
||
// Populate the class2type map
|
||
jQuery.each('Boolean Number String Function Array Date RegExp Object Error Symbol'.split(' '), function (i, name) {
|
||
class2type['[object ' + name + ']'] = name.toLowerCase()
|
||
});
|
||
function isArrayLike(obj) {
|
||
// Support: iOS 8.2 (not reproducible in simulator)
|
||
// `in` check used to prevent JIT error (gh-2145)
|
||
// hasOwn isn't used here due to false negatives
|
||
// regarding Nodelist length in IE
|
||
var length = !!obj && 'length' in obj && obj.length, type = jQuery.type(obj);
|
||
if (type === 'function' || jQuery.isWindow(obj)) {
|
||
return false
|
||
}
|
||
return type === 'array' || length === 0 || typeof length === 'number' && length > 0 && length - 1 in obj
|
||
}
|
||
var Sizzle = /*!
|
||
* Sizzle CSS Selector Engine v2.2.1
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright jQuery Foundation and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2015-10-17
|
||
*/
|
||
function (window) {
|
||
var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate,
|
||
// Local document vars
|
||
setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains,
|
||
// Instance-specific data
|
||
expando = 'sizzle' + 1 * new Date, preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function (a, b) {
|
||
if (a === b) {
|
||
hasDuplicate = true
|
||
}
|
||
return 0
|
||
},
|
||
// General-purpose constants
|
||
MAX_NEGATIVE = 1 << 31,
|
||
// Instance methods
|
||
hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice,
|
||
// Use a stripped-down indexOf as it's faster than native
|
||
// http://jsperf.com/thor-indexof-vs-for/5
|
||
indexOf = function (list, elem) {
|
||
var i = 0, len = list.length;
|
||
for (; i < len; i++) {
|
||
if (list[i] === elem) {
|
||
return i
|
||
}
|
||
}
|
||
return -1
|
||
}, booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped',
|
||
// Regular expressions
|
||
// http://www.w3.org/TR/css3-selectors/#whitespace
|
||
whitespace = '[\\x20\\t\\r\\n\\f]',
|
||
// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
||
identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+',
|
||
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
||
attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + // Operator (capture 2)
|
||
'*([*^$|!~]?=)' + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
|
||
'*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]', pseudos = ':(' + identifier + ')(?:\\((' + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
||
// 1. quoted (capture 3; capture 4 or capture 5)
|
||
'(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + // 2. simple (capture 6)
|
||
'((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + // 3. anything else (capture 2)
|
||
'.*' + ')\\)|)',
|
||
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
||
rwhitespace = new RegExp(whitespace + '+', 'g'), rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\])(?:\\\\.)*)' + whitespace + '+$', 'g'), rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'), rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'), rattributeQuotes = new RegExp('=' + whitespace + '*([^\\]\'"]*?)' + whitespace + '*\\]', 'g'), rpseudo = new RegExp(pseudos), ridentifier = new RegExp('^' + identifier + '$'), matchExpr = {
|
||
'ID': new RegExp('^#(' + identifier + ')'),
|
||
'CLASS': new RegExp('^\\.(' + identifier + ')'),
|
||
'TAG': new RegExp('^(' + identifier + '|[*])'),
|
||
'ATTR': new RegExp('^' + attributes),
|
||
'PSEUDO': new RegExp('^' + pseudos),
|
||
'CHILD': new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + whitespace + '*(even|odd|(([+-]|)(\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\d+)|))' + whitespace + '*\\)|)', 'i'),
|
||
'bool': new RegExp('^(?:' + booleans + ')$', 'i'),
|
||
// For use in libraries implementing .is()
|
||
// We use this for POS matching in `select`
|
||
'needsContext': new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + whitespace + '*((?:-\\d)?\\d*)' + whitespace + '*\\)|)(?=[^-]|$)', 'i')
|
||
}, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/,
|
||
// Easily-parseable/retrievable ID or TAG or CLASS selectors
|
||
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g,
|
||
// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
||
runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'), funescape = function (_, escaped, escapedWhitespace) {
|
||
var high = '0x' + escaped - 65536;
|
||
// NaN means non-codepoint
|
||
// Support: Firefox<24
|
||
// Workaround erroneous numeric interpretation of +"0x"
|
||
return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint
|
||
String.fromCharCode(high + 65536) : // Supplemental Plane codepoint (surrogate pair)
|
||
String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320)
|
||
},
|
||
// Used for iframes
|
||
// See setDocument()
|
||
// Removing the function wrapper causes a "Permission Denied"
|
||
// error in IE
|
||
unloadHandler = function () {
|
||
setDocument()
|
||
};
|
||
// Optimize for push.apply( _, NodeList )
|
||
try {
|
||
push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
|
||
// Support: Android<4.0
|
||
// Detect silently failing push.apply
|
||
arr[preferredDoc.childNodes.length].nodeType
|
||
} catch (e) {
|
||
push = {
|
||
apply: arr.length ? // Leverage slice if possible
|
||
function (target, els) {
|
||
push_native.apply(target, slice.call(els))
|
||
} : // Support: IE<9
|
||
// Otherwise append directly
|
||
function (target, els) {
|
||
var j = target.length, i = 0;
|
||
// Can't trust NodeList.length
|
||
while (target[j++] = els[i++]) {
|
||
}
|
||
target.length = j - 1
|
||
}
|
||
}
|
||
}
|
||
function Sizzle(selector, context, results, seed) {
|
||
var m, i, elem, nid, nidselect, match, groups, newSelector, newContext = context && context.ownerDocument,
|
||
// nodeType defaults to 9, since context defaults to document
|
||
nodeType = context ? context.nodeType : 9;
|
||
results = results || [];
|
||
// Return early from calls with invalid selector or context
|
||
if (typeof selector !== 'string' || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
|
||
return results
|
||
}
|
||
// Try to shortcut find operations (as opposed to filters) in HTML documents
|
||
if (!seed) {
|
||
if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
|
||
setDocument(context)
|
||
}
|
||
context = context || document;
|
||
if (documentIsHTML) {
|
||
// If the selector is sufficiently simple, try using a "get*By*" DOM method
|
||
// (excepting DocumentFragment context, where the methods don't exist)
|
||
if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
|
||
// ID selector
|
||
if (m = match[1]) {
|
||
// Document context
|
||
if (nodeType === 9) {
|
||
if (elem = context.getElementById(m)) {
|
||
// Support: IE, Opera, Webkit
|
||
// TODO: identify versions
|
||
// getElementById can match elements by name instead of ID
|
||
if (elem.id === m) {
|
||
results.push(elem);
|
||
return results
|
||
}
|
||
} else {
|
||
return results
|
||
} // Element context
|
||
} else {
|
||
// Support: IE, Opera, Webkit
|
||
// TODO: identify versions
|
||
// getElementById can match elements by name instead of ID
|
||
if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
|
||
results.push(elem);
|
||
return results
|
||
}
|
||
} // Type selector
|
||
} else if (match[2]) {
|
||
push.apply(results, context.getElementsByTagName(selector));
|
||
return results // Class selector
|
||
} else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {
|
||
push.apply(results, context.getElementsByClassName(m));
|
||
return results
|
||
}
|
||
}
|
||
// Take advantage of querySelectorAll
|
||
if (support.qsa && !compilerCache[selector + ' '] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
|
||
if (nodeType !== 1) {
|
||
newContext = context;
|
||
newSelector = selector // qSA looks outside Element context, which is not what we want
|
||
// Thanks to Andrew Dupont for this workaround technique
|
||
// Support: IE <=8
|
||
// Exclude object elements
|
||
} else if (context.nodeName.toLowerCase() !== 'object') {
|
||
// Capture the context ID, setting it first if necessary
|
||
if (nid = context.getAttribute('id')) {
|
||
nid = nid.replace(rescape, '\\$&')
|
||
} else {
|
||
context.setAttribute('id', nid = expando)
|
||
}
|
||
// Prefix every selector in the list
|
||
groups = tokenize(selector);
|
||
i = groups.length;
|
||
nidselect = ridentifier.test(nid) ? '#' + nid : "[id='" + nid + "']";
|
||
while (i--) {
|
||
groups[i] = nidselect + ' ' + toSelector(groups[i])
|
||
}
|
||
newSelector = groups.join(',');
|
||
// Expand context for sibling selectors
|
||
newContext = rsibling.test(selector) && testContext(context.parentNode) || context
|
||
}
|
||
if (newSelector) {
|
||
try {
|
||
push.apply(results, newContext.querySelectorAll(newSelector));
|
||
return results
|
||
} catch (qsaError) {
|
||
} finally {
|
||
if (nid === expando) {
|
||
context.removeAttribute('id')
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// All others
|
||
return select(selector.replace(rtrim, '$1'), context, results, seed)
|
||
}
|
||
/**
|
||
* Create key-value caches of limited size
|
||
* @returns {function(string, object)} Returns the Object data after storing it on itself with
|
||
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
|
||
* deleting the oldest entry
|
||
*/
|
||
function createCache() {
|
||
var keys = [];
|
||
function cache(key, value) {
|
||
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
||
if (keys.push(key + ' ') > Expr.cacheLength) {
|
||
// Only keep the most recent entries
|
||
delete cache[keys.shift()]
|
||
}
|
||
return cache[key + ' '] = value
|
||
}
|
||
return cache
|
||
}
|
||
/**
|
||
* Mark a function for special use by Sizzle
|
||
* @param {Function} fn The function to mark
|
||
*/
|
||
function markFunction(fn) {
|
||
fn[expando] = true;
|
||
return fn
|
||
}
|
||
/**
|
||
* Support testing using an element
|
||
* @param {Function} fn Passed the created div and expects a boolean result
|
||
*/
|
||
function assert(fn) {
|
||
var div = document.createElement('div');
|
||
try {
|
||
return !!fn(div)
|
||
} catch (e) {
|
||
return false
|
||
} finally {
|
||
// Remove from its parent by default
|
||
if (div.parentNode) {
|
||
div.parentNode.removeChild(div)
|
||
}
|
||
// release memory in IE
|
||
div = null
|
||
}
|
||
}
|
||
/**
|
||
* Adds the same handler for all of the specified attrs
|
||
* @param {String} attrs Pipe-separated list of attributes
|
||
* @param {Function} handler The method that will be applied
|
||
*/
|
||
function addHandle(attrs, handler) {
|
||
var arr = attrs.split('|'), i = arr.length;
|
||
while (i--) {
|
||
Expr.attrHandle[arr[i]] = handler
|
||
}
|
||
}
|
||
/**
|
||
* Checks document order of two siblings
|
||
* @param {Element} a
|
||
* @param {Element} b
|
||
* @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
|
||
*/
|
||
function siblingCheck(a, b) {
|
||
var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
|
||
// Use IE sourceIndex if available on both nodes
|
||
if (diff) {
|
||
return diff
|
||
}
|
||
// Check if b follows a
|
||
if (cur) {
|
||
while (cur = cur.nextSibling) {
|
||
if (cur === b) {
|
||
return -1
|
||
}
|
||
}
|
||
}
|
||
return a ? 1 : -1
|
||
}
|
||
/**
|
||
* Returns a function to use in pseudos for input types
|
||
* @param {String} type
|
||
*/
|
||
function createInputPseudo(type) {
|
||
return function (elem) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return name === 'input' && elem.type === type
|
||
}
|
||
}
|
||
/**
|
||
* Returns a function to use in pseudos for buttons
|
||
* @param {String} type
|
||
*/
|
||
function createButtonPseudo(type) {
|
||
return function (elem) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return (name === 'input' || name === 'button') && elem.type === type
|
||
}
|
||
}
|
||
/**
|
||
* Returns a function to use in pseudos for positionals
|
||
* @param {Function} fn
|
||
*/
|
||
function createPositionalPseudo(fn) {
|
||
return markFunction(function (argument) {
|
||
argument = +argument;
|
||
return markFunction(function (seed, matches) {
|
||
var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;
|
||
// Match elements found at the specified indexes
|
||
while (i--) {
|
||
if (seed[j = matchIndexes[i]]) {
|
||
seed[j] = !(matches[j] = seed[j])
|
||
}
|
||
}
|
||
})
|
||
})
|
||
}
|
||
/**
|
||
* Checks a node for validity as a Sizzle context
|
||
* @param {Element|Object=} context
|
||
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
||
*/
|
||
function testContext(context) {
|
||
return context && typeof context.getElementsByTagName !== 'undefined' && context
|
||
}
|
||
// Expose support vars for convenience
|
||
support = Sizzle.support = {};
|
||
/**
|
||
* Detects XML nodes
|
||
* @param {Element|Object} elem An element or a document
|
||
* @returns {Boolean} True iff elem is a non-HTML XML node
|
||
*/
|
||
isXML = Sizzle.isXML = function (elem) {
|
||
// documentElement is verified for cases where it doesn't yet exist
|
||
// (such as loading iframes in IE - #4833)
|
||
var documentElement = elem && (elem.ownerDocument || elem).documentElement;
|
||
return documentElement ? documentElement.nodeName !== 'HTML' : false
|
||
};
|
||
/**
|
||
* Sets document-related variables once based on the current document
|
||
* @param {Element|Object} [doc] An element or document object to use to set the document
|
||
* @returns {Object} Returns the current document
|
||
*/
|
||
setDocument = Sizzle.setDocument = function (node) {
|
||
var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc;
|
||
// Return early if doc is invalid or already selected
|
||
if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
|
||
return document
|
||
}
|
||
// Update global variables
|
||
document = doc;
|
||
docElem = document.documentElement;
|
||
documentIsHTML = !isXML(document);
|
||
// Support: IE 9-11, Edge
|
||
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
||
if ((parent = document.defaultView) && parent.top !== parent) {
|
||
// Support: IE 11
|
||
if (parent.addEventListener) {
|
||
parent.addEventListener('unload', unloadHandler, false) // Support: IE 9 - 10 only
|
||
} else if (parent.attachEvent) {
|
||
parent.attachEvent('onunload', unloadHandler)
|
||
}
|
||
}
|
||
/* Attributes
|
||
---------------------------------------------------------------------- */
|
||
// Support: IE<8
|
||
// Verify that getAttribute really returns attributes and not properties
|
||
// (excepting IE8 booleans)
|
||
support.attributes = assert(function (div) {
|
||
div.className = 'i';
|
||
return !div.getAttribute('className')
|
||
});
|
||
/* getElement(s)By*
|
||
---------------------------------------------------------------------- */
|
||
// Check if getElementsByTagName("*") returns only elements
|
||
support.getElementsByTagName = assert(function (div) {
|
||
div.appendChild(document.createComment(''));
|
||
return !div.getElementsByTagName('*').length
|
||
});
|
||
// Support: IE<9
|
||
support.getElementsByClassName = rnative.test(document.getElementsByClassName);
|
||
// Support: IE<10
|
||
// Check if getElementById returns elements by name
|
||
// The broken getElementById methods don't pick up programatically-set names,
|
||
// so use a roundabout getElementsByName test
|
||
support.getById = assert(function (div) {
|
||
docElem.appendChild(div).id = expando;
|
||
return !document.getElementsByName || !document.getElementsByName(expando).length
|
||
});
|
||
// ID find and filter
|
||
if (support.getById) {
|
||
Expr.find['ID'] = function (id, context) {
|
||
if (typeof context.getElementById !== 'undefined' && documentIsHTML) {
|
||
var m = context.getElementById(id);
|
||
return m ? [m] : []
|
||
}
|
||
};
|
||
Expr.filter['ID'] = function (id) {
|
||
var attrId = id.replace(runescape, funescape);
|
||
return function (elem) {
|
||
return elem.getAttribute('id') === attrId
|
||
}
|
||
}
|
||
} else {
|
||
// Support: IE6/7
|
||
// getElementById is not reliable as a find shortcut
|
||
delete Expr.find['ID'];
|
||
Expr.filter['ID'] = function (id) {
|
||
var attrId = id.replace(runescape, funescape);
|
||
return function (elem) {
|
||
var node = typeof elem.getAttributeNode !== 'undefined' && elem.getAttributeNode('id');
|
||
return node && node.value === attrId
|
||
}
|
||
}
|
||
}
|
||
// Tag
|
||
Expr.find['TAG'] = support.getElementsByTagName ? function (tag, context) {
|
||
if (typeof context.getElementsByTagName !== 'undefined') {
|
||
return context.getElementsByTagName(tag) // DocumentFragment nodes don't have gEBTN
|
||
} else if (support.qsa) {
|
||
return context.querySelectorAll(tag)
|
||
}
|
||
} : function (tag, context) {
|
||
var elem, tmp = [], i = 0,
|
||
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
||
results = context.getElementsByTagName(tag);
|
||
// Filter out possible comments
|
||
if (tag === '*') {
|
||
while (elem = results[i++]) {
|
||
if (elem.nodeType === 1) {
|
||
tmp.push(elem)
|
||
}
|
||
}
|
||
return tmp
|
||
}
|
||
return results
|
||
};
|
||
// Class
|
||
Expr.find['CLASS'] = support.getElementsByClassName && function (className, context) {
|
||
if (typeof context.getElementsByClassName !== 'undefined' && documentIsHTML) {
|
||
return context.getElementsByClassName(className)
|
||
}
|
||
};
|
||
/* QSA/matchesSelector
|
||
---------------------------------------------------------------------- */
|
||
// QSA and matchesSelector support
|
||
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
|
||
rbuggyMatches = [];
|
||
// qSa(:focus) reports false when true (Chrome 21)
|
||
// We allow this because of a bug in IE8/9 that throws an error
|
||
// whenever `document.activeElement` is accessed on an iframe
|
||
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
||
// See http://bugs.jquery.com/ticket/13378
|
||
rbuggyQSA = [];
|
||
if (support.qsa = rnative.test(document.querySelectorAll)) {
|
||
// Build QSA regex
|
||
// Regex strategy adopted from Diego Perini
|
||
assert(function (div) {
|
||
// Select is set to empty string on purpose
|
||
// This is to test IE's treatment of not explicitly
|
||
// setting a boolean content attribute,
|
||
// since its presence should be enough
|
||
// http://bugs.jquery.com/ticket/12359
|
||
docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a>" + "<select id='" + expando + "-\r\\' msallowcapture=''>" + "<option selected=''></option></select>";
|
||
// Support: IE8, Opera 11-12.16
|
||
// Nothing should be selected when empty strings follow ^= or $= or *=
|
||
// The test attribute must be unknown in Opera but "safe" for WinRT
|
||
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
||
if (div.querySelectorAll("[msallowcapture^='']").length) {
|
||
rbuggyQSA.push('[*^$]=' + whitespace + '*(?:\'\'|"")')
|
||
}
|
||
// Support: IE8
|
||
// Boolean attributes and "value" are not treated correctly
|
||
if (!div.querySelectorAll('[selected]').length) {
|
||
rbuggyQSA.push('\\[' + whitespace + '*(?:value|' + booleans + ')')
|
||
}
|
||
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
||
if (!div.querySelectorAll('[id~=' + expando + '-]').length) {
|
||
rbuggyQSA.push('~=')
|
||
}
|
||
// Webkit/Opera - :checked should return selected option elements
|
||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||
// IE8 throws error here and will not see later tests
|
||
if (!div.querySelectorAll(':checked').length) {
|
||
rbuggyQSA.push(':checked')
|
||
}
|
||
// Support: Safari 8+, iOS 8+
|
||
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
||
// In-page `selector#id sibing-combinator selector` fails
|
||
if (!div.querySelectorAll('a#' + expando + '+*').length) {
|
||
rbuggyQSA.push('.#.+[+~]')
|
||
}
|
||
});
|
||
assert(function (div) {
|
||
// Support: Windows 8 Native Apps
|
||
// The type and name attributes are restricted during .innerHTML assignment
|
||
var input = document.createElement('input');
|
||
input.setAttribute('type', 'hidden');
|
||
div.appendChild(input).setAttribute('name', 'D');
|
||
// Support: IE8
|
||
// Enforce case-sensitivity of name attribute
|
||
if (div.querySelectorAll('[name=d]').length) {
|
||
rbuggyQSA.push('name' + whitespace + '*[*^$|!~]?=')
|
||
}
|
||
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
||
// IE8 throws error here and will not see later tests
|
||
if (!div.querySelectorAll(':enabled').length) {
|
||
rbuggyQSA.push(':enabled', ':disabled')
|
||
}
|
||
// Opera 10-11 does not throw on post-comma invalid pseudos
|
||
div.querySelectorAll('*,:x');
|
||
rbuggyQSA.push(',.*:')
|
||
})
|
||
}
|
||
if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
|
||
assert(function (div) {
|
||
// Check to see if it's possible to do matchesSelector
|
||
// on a disconnected node (IE 9)
|
||
support.disconnectedMatch = matches.call(div, 'div');
|
||
// This should fail with an exception
|
||
// Gecko does not error, returns false instead
|
||
matches.call(div, "[s!='']:x");
|
||
rbuggyMatches.push('!=', pseudos)
|
||
})
|
||
}
|
||
rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));
|
||
rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));
|
||
/* Contains
|
||
---------------------------------------------------------------------- */
|
||
hasCompare = rnative.test(docElem.compareDocumentPosition);
|
||
// Element contains another
|
||
// Purposefully self-exclusive
|
||
// As in, an element does not contain itself
|
||
contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
|
||
var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;
|
||
return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16))
|
||
} : function (a, b) {
|
||
if (b) {
|
||
while (b = b.parentNode) {
|
||
if (b === a) {
|
||
return true
|
||
}
|
||
}
|
||
}
|
||
return false
|
||
};
|
||
/* Sorting
|
||
---------------------------------------------------------------------- */
|
||
// Document order sorting
|
||
sortOrder = hasCompare ? function (a, b) {
|
||
// Flag for duplicate removal
|
||
if (a === b) {
|
||
hasDuplicate = true;
|
||
return 0
|
||
}
|
||
// Sort on method existence if only one input has compareDocumentPosition
|
||
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
||
if (compare) {
|
||
return compare
|
||
}
|
||
// Calculate position if both inputs belong to the same document
|
||
compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected
|
||
1;
|
||
// Disconnected nodes
|
||
if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
|
||
// Choose the first element that is related to our preferred document
|
||
if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {
|
||
return -1
|
||
}
|
||
if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {
|
||
return 1
|
||
}
|
||
// Maintain original order
|
||
return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0
|
||
}
|
||
return compare & 4 ? -1 : 1
|
||
} : function (a, b) {
|
||
// Exit early if the nodes are identical
|
||
if (a === b) {
|
||
hasDuplicate = true;
|
||
return 0
|
||
}
|
||
var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];
|
||
// Parentless nodes are either documents or disconnected
|
||
if (!aup || !bup) {
|
||
return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 // If the nodes are siblings, we can do a quick check
|
||
} else if (aup === bup) {
|
||
return siblingCheck(a, b)
|
||
}
|
||
// Otherwise we need full lists of their ancestors for comparison
|
||
cur = a;
|
||
while (cur = cur.parentNode) {
|
||
ap.unshift(cur)
|
||
}
|
||
cur = b;
|
||
while (cur = cur.parentNode) {
|
||
bp.unshift(cur)
|
||
}
|
||
// Walk down the tree looking for a discrepancy
|
||
while (ap[i] === bp[i]) {
|
||
i++
|
||
}
|
||
return i ? // Do a sibling check if the nodes have a common ancestor
|
||
siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first
|
||
ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0
|
||
};
|
||
return document
|
||
};
|
||
Sizzle.matches = function (expr, elements) {
|
||
return Sizzle(expr, null, null, elements)
|
||
};
|
||
Sizzle.matchesSelector = function (elem, expr) {
|
||
// Set document vars if needed
|
||
if ((elem.ownerDocument || elem) !== document) {
|
||
setDocument(elem)
|
||
}
|
||
// Make sure that attribute selectors are quoted
|
||
expr = expr.replace(rattributeQuotes, "='$1']");
|
||
if (support.matchesSelector && documentIsHTML && !compilerCache[expr + ' '] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
|
||
try {
|
||
var ret = matches.call(elem, expr);
|
||
// IE 9's matchesSelector returns false on disconnected nodes
|
||
if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document
|
||
// fragment in IE 9
|
||
elem.document && elem.document.nodeType !== 11) {
|
||
return ret
|
||
}
|
||
} catch (e) {
|
||
}
|
||
}
|
||
return Sizzle(expr, document, null, [elem]).length > 0
|
||
};
|
||
Sizzle.contains = function (context, elem) {
|
||
// Set document vars if needed
|
||
if ((context.ownerDocument || context) !== document) {
|
||
setDocument(context)
|
||
}
|
||
return contains(context, elem)
|
||
};
|
||
Sizzle.attr = function (elem, name) {
|
||
// Set document vars if needed
|
||
if ((elem.ownerDocument || elem) !== document) {
|
||
setDocument(elem)
|
||
}
|
||
var fn = Expr.attrHandle[name.toLowerCase()],
|
||
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
||
val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
|
||
return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null
|
||
};
|
||
Sizzle.error = function (msg) {
|
||
throw new Error('Syntax error, unrecognized expression: ' + msg)
|
||
};
|
||
/**
|
||
* Document sorting and removing duplicates
|
||
* @param {ArrayLike} results
|
||
*/
|
||
Sizzle.uniqueSort = function (results) {
|
||
var elem, duplicates = [], j = 0, i = 0;
|
||
// Unless we *know* we can detect duplicates, assume their presence
|
||
hasDuplicate = !support.detectDuplicates;
|
||
sortInput = !support.sortStable && results.slice(0);
|
||
results.sort(sortOrder);
|
||
if (hasDuplicate) {
|
||
while (elem = results[i++]) {
|
||
if (elem === results[i]) {
|
||
j = duplicates.push(i)
|
||
}
|
||
}
|
||
while (j--) {
|
||
results.splice(duplicates[j], 1)
|
||
}
|
||
}
|
||
// Clear input after sorting to release objects
|
||
// See https://github.com/jquery/sizzle/pull/225
|
||
sortInput = null;
|
||
return results
|
||
};
|
||
/**
|
||
* Utility function for retrieving the text value of an array of DOM nodes
|
||
* @param {Array|Element} elem
|
||
*/
|
||
getText = Sizzle.getText = function (elem) {
|
||
var node, ret = '', i = 0, nodeType = elem.nodeType;
|
||
if (!nodeType) {
|
||
// If no nodeType, this is expected to be an array
|
||
while (node = elem[i++]) {
|
||
// Do not traverse comment nodes
|
||
ret += getText(node)
|
||
}
|
||
} else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
|
||
// Use textContent for elements
|
||
// innerText usage removed for consistency of new lines (jQuery #11153)
|
||
if (typeof elem.textContent === 'string') {
|
||
return elem.textContent
|
||
} else {
|
||
// Traverse its children
|
||
for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
|
||
ret += getText(elem)
|
||
}
|
||
}
|
||
} else if (nodeType === 3 || nodeType === 4) {
|
||
return elem.nodeValue
|
||
}
|
||
// Do not include comment or processing instruction nodes
|
||
return ret
|
||
};
|
||
Expr = Sizzle.selectors = {
|
||
// Can be adjusted by the user
|
||
cacheLength: 50,
|
||
createPseudo: markFunction,
|
||
match: matchExpr,
|
||
attrHandle: {},
|
||
find: {},
|
||
relative: {
|
||
'>': {
|
||
dir: 'parentNode',
|
||
first: true
|
||
},
|
||
' ': { dir: 'parentNode' },
|
||
'+': {
|
||
dir: 'previousSibling',
|
||
first: true
|
||
},
|
||
'~': { dir: 'previousSibling' }
|
||
},
|
||
preFilter: {
|
||
'ATTR': function (match) {
|
||
match[1] = match[1].replace(runescape, funescape);
|
||
// Move the given value to match[3] whether quoted or unquoted
|
||
match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);
|
||
if (match[2] === '~=') {
|
||
match[3] = ' ' + match[3] + ' '
|
||
}
|
||
return match.slice(0, 4)
|
||
},
|
||
'CHILD': function (match) {
|
||
/* matches from matchExpr["CHILD"]
|
||
1 type (only|nth|...)
|
||
2 what (child|of-type)
|
||
3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
|
||
4 xn-component of xn+y argument ([+-]?\d*n|)
|
||
5 sign of xn-component
|
||
6 x of xn-component
|
||
7 sign of y-component
|
||
8 y of y-component
|
||
*/
|
||
match[1] = match[1].toLowerCase();
|
||
if (match[1].slice(0, 3) === 'nth') {
|
||
// nth-* requires argument
|
||
if (!match[3]) {
|
||
Sizzle.error(match[0])
|
||
}
|
||
// numeric x and y parameters for Expr.filter.CHILD
|
||
// remember that false/true cast respectively to 0/1
|
||
match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd'));
|
||
match[5] = +(match[7] + match[8] || match[3] === 'odd') // other types prohibit arguments
|
||
} else if (match[3]) {
|
||
Sizzle.error(match[0])
|
||
}
|
||
return match
|
||
},
|
||
'PSEUDO': function (match) {
|
||
var excess, unquoted = !match[6] && match[2];
|
||
if (matchExpr['CHILD'].test(match[0])) {
|
||
return null
|
||
}
|
||
// Accept quoted arguments as-is
|
||
if (match[3]) {
|
||
match[2] = match[4] || match[5] || '' // Strip excess characters from unquoted arguments
|
||
} else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {
|
||
// excess is a negative index
|
||
match[0] = match[0].slice(0, excess);
|
||
match[2] = unquoted.slice(0, excess)
|
||
}
|
||
// Return only captures needed by the pseudo filter method (type and argument)
|
||
return match.slice(0, 3)
|
||
}
|
||
},
|
||
filter: {
|
||
'TAG': function (nodeNameSelector) {
|
||
var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
|
||
return nodeNameSelector === '*' ? function () {
|
||
return true
|
||
} : function (elem) {
|
||
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName
|
||
}
|
||
},
|
||
'CLASS': function (className) {
|
||
var pattern = classCache[className + ' '];
|
||
return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) {
|
||
return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== 'undefined' && elem.getAttribute('class') || '')
|
||
})
|
||
},
|
||
'ATTR': function (name, operator, check) {
|
||
return function (elem) {
|
||
var result = Sizzle.attr(elem, name);
|
||
if (result == null) {
|
||
return operator === '!='
|
||
}
|
||
if (!operator) {
|
||
return true
|
||
}
|
||
result += '';
|
||
return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result.replace(rwhitespace, ' ') + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false
|
||
}
|
||
},
|
||
'CHILD': function (type, what, argument, first, last) {
|
||
var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';
|
||
return first === 1 && last === 0 ? // Shortcut for :nth-*(n)
|
||
function (elem) {
|
||
return !!elem.parentNode
|
||
} : function (elem, context, xml) {
|
||
var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
|
||
if (parent) {
|
||
// :(first|last|only)-(child|of-type)
|
||
if (simple) {
|
||
while (dir) {
|
||
node = elem;
|
||
while (node = node[dir]) {
|
||
if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
|
||
return false
|
||
}
|
||
}
|
||
// Reverse direction for :only-* (if we haven't yet done so)
|
||
start = dir = type === 'only' && !start && 'nextSibling'
|
||
}
|
||
return true
|
||
}
|
||
start = [forward ? parent.firstChild : parent.lastChild];
|
||
// non-xml :nth-child(...) stores cache data on `parent`
|
||
if (forward && useCache) {
|
||
// Seek `elem` from a previously-cached index
|
||
// ...in a gzip-friendly way
|
||
node = parent;
|
||
outerCache = node[expando] || (node[expando] = {});
|
||
// Support: IE <9 only
|
||
// Defend against cloned attroperties (jQuery gh-1709)
|
||
uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
|
||
cache = uniqueCache[type] || [];
|
||
nodeIndex = cache[0] === dirruns && cache[1];
|
||
diff = nodeIndex && cache[2];
|
||
node = nodeIndex && parent.childNodes[nodeIndex];
|
||
while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
|
||
// When found, cache indexes on `parent` and break
|
||
if (node.nodeType === 1 && ++diff && node === elem) {
|
||
uniqueCache[type] = [
|
||
dirruns,
|
||
nodeIndex,
|
||
diff
|
||
];
|
||
break
|
||
}
|
||
}
|
||
} else {
|
||
// Use previously-cached element index if available
|
||
if (useCache) {
|
||
// ...in a gzip-friendly way
|
||
node = elem;
|
||
outerCache = node[expando] || (node[expando] = {});
|
||
// Support: IE <9 only
|
||
// Defend against cloned attroperties (jQuery gh-1709)
|
||
uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
|
||
cache = uniqueCache[type] || [];
|
||
nodeIndex = cache[0] === dirruns && cache[1];
|
||
diff = nodeIndex
|
||
}
|
||
// xml :nth-child(...)
|
||
// or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
||
if (diff === false) {
|
||
// Use the same loop as above to seek `elem` from the start
|
||
while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
|
||
if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
|
||
// Cache the index of each encountered element
|
||
if (useCache) {
|
||
outerCache = node[expando] || (node[expando] = {});
|
||
// Support: IE <9 only
|
||
// Defend against cloned attroperties (jQuery gh-1709)
|
||
uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
|
||
uniqueCache[type] = [
|
||
dirruns,
|
||
diff
|
||
]
|
||
}
|
||
if (node === elem) {
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Incorporate the offset, then check against cycle size
|
||
diff -= last;
|
||
return diff === first || diff % first === 0 && diff / first >= 0
|
||
}
|
||
}
|
||
},
|
||
'PSEUDO': function (pseudo, argument) {
|
||
// pseudo-class names are case-insensitive
|
||
// http://www.w3.org/TR/selectors/#pseudo-classes
|
||
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
||
// Remember that setFilters inherits from pseudos
|
||
var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);
|
||
// The user may use createPseudo to indicate that
|
||
// arguments are needed to create the filter function
|
||
// just as Sizzle does
|
||
if (fn[expando]) {
|
||
return fn(argument)
|
||
}
|
||
// But maintain support for old signatures
|
||
if (fn.length > 1) {
|
||
args = [
|
||
pseudo,
|
||
pseudo,
|
||
'',
|
||
argument
|
||
];
|
||
return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
|
||
var idx, matched = fn(seed, argument), i = matched.length;
|
||
while (i--) {
|
||
idx = indexOf(seed, matched[i]);
|
||
seed[idx] = !(matches[idx] = matched[i])
|
||
}
|
||
}) : function (elem) {
|
||
return fn(elem, 0, args)
|
||
}
|
||
}
|
||
return fn
|
||
}
|
||
},
|
||
pseudos: {
|
||
// Potentially complex pseudos
|
||
'not': markFunction(function (selector) {
|
||
// Trim the selector passed to compile
|
||
// to avoid treating leading and trailing
|
||
// spaces as combinators
|
||
var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));
|
||
return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
|
||
var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;
|
||
// Match elements unmatched by `matcher`
|
||
while (i--) {
|
||
if (elem = unmatched[i]) {
|
||
seed[i] = !(matches[i] = elem)
|
||
}
|
||
}
|
||
}) : function (elem, context, xml) {
|
||
input[0] = elem;
|
||
matcher(input, null, xml, results);
|
||
// Don't keep the element (issue #299)
|
||
input[0] = null;
|
||
return !results.pop()
|
||
}
|
||
}),
|
||
'has': markFunction(function (selector) {
|
||
return function (elem) {
|
||
return Sizzle(selector, elem).length > 0
|
||
}
|
||
}),
|
||
'contains': markFunction(function (text) {
|
||
text = text.replace(runescape, funescape);
|
||
return function (elem) {
|
||
return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1
|
||
}
|
||
}),
|
||
// "Whether an element is represented by a :lang() selector
|
||
// is based solely on the element's language value
|
||
// being equal to the identifier C,
|
||
// or beginning with the identifier C immediately followed by "-".
|
||
// The matching of C against the element's language value is performed case-insensitively.
|
||
// The identifier C does not have to be a valid language name."
|
||
// http://www.w3.org/TR/selectors/#lang-pseudo
|
||
'lang': markFunction(function (lang) {
|
||
// lang value must be a valid identifier
|
||
if (!ridentifier.test(lang || '')) {
|
||
Sizzle.error('unsupported lang: ' + lang)
|
||
}
|
||
lang = lang.replace(runescape, funescape).toLowerCase();
|
||
return function (elem) {
|
||
var elemLang;
|
||
do {
|
||
if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) {
|
||
elemLang = elemLang.toLowerCase();
|
||
return elemLang === lang || elemLang.indexOf(lang + '-') === 0
|
||
}
|
||
} while ((elem = elem.parentNode) && elem.nodeType === 1);
|
||
return false
|
||
}
|
||
}),
|
||
// Miscellaneous
|
||
'target': function (elem) {
|
||
var hash = window.location && window.location.hash;
|
||
return hash && hash.slice(1) === elem.id
|
||
},
|
||
'root': function (elem) {
|
||
return elem === docElem
|
||
},
|
||
'focus': function (elem) {
|
||
return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex)
|
||
},
|
||
// Boolean properties
|
||
'enabled': function (elem) {
|
||
return elem.disabled === false
|
||
},
|
||
'disabled': function (elem) {
|
||
return elem.disabled === true
|
||
},
|
||
'checked': function (elem) {
|
||
// In CSS3, :checked should return both checked and selected elements
|
||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||
var nodeName = elem.nodeName.toLowerCase();
|
||
return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected
|
||
},
|
||
'selected': function (elem) {
|
||
// Accessing this property makes selected-by-default
|
||
// options in Safari work properly
|
||
if (elem.parentNode) {
|
||
elem.parentNode.selectedIndex
|
||
}
|
||
return elem.selected === true
|
||
},
|
||
// Contents
|
||
'empty': function (elem) {
|
||
// http://www.w3.org/TR/selectors/#empty-pseudo
|
||
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
||
// but not by others (comment: 8; processing instruction: 7; etc.)
|
||
// nodeType < 6 works because attributes (2) do not appear as children
|
||
for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
|
||
if (elem.nodeType < 6) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
},
|
||
'parent': function (elem) {
|
||
return !Expr.pseudos['empty'](elem)
|
||
},
|
||
// Element/input types
|
||
'header': function (elem) {
|
||
return rheader.test(elem.nodeName)
|
||
},
|
||
'input': function (elem) {
|
||
return rinputs.test(elem.nodeName)
|
||
},
|
||
'button': function (elem) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return name === 'input' && elem.type === 'button' || name === 'button'
|
||
},
|
||
'text': function (elem) {
|
||
var attr;
|
||
return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text')
|
||
},
|
||
// Position-in-collection
|
||
'first': createPositionalPseudo(function () {
|
||
return [0]
|
||
}),
|
||
'last': createPositionalPseudo(function (matchIndexes, length) {
|
||
return [length - 1]
|
||
}),
|
||
'eq': createPositionalPseudo(function (matchIndexes, length, argument) {
|
||
return [argument < 0 ? argument + length : argument]
|
||
}),
|
||
'even': createPositionalPseudo(function (matchIndexes, length) {
|
||
var i = 0;
|
||
for (; i < length; i += 2) {
|
||
matchIndexes.push(i)
|
||
}
|
||
return matchIndexes
|
||
}),
|
||
'odd': createPositionalPseudo(function (matchIndexes, length) {
|
||
var i = 1;
|
||
for (; i < length; i += 2) {
|
||
matchIndexes.push(i)
|
||
}
|
||
return matchIndexes
|
||
}),
|
||
'lt': createPositionalPseudo(function (matchIndexes, length, argument) {
|
||
var i = argument < 0 ? argument + length : argument;
|
||
for (; --i >= 0;) {
|
||
matchIndexes.push(i)
|
||
}
|
||
return matchIndexes
|
||
}),
|
||
'gt': createPositionalPseudo(function (matchIndexes, length, argument) {
|
||
var i = argument < 0 ? argument + length : argument;
|
||
for (; ++i < length;) {
|
||
matchIndexes.push(i)
|
||
}
|
||
return matchIndexes
|
||
})
|
||
}
|
||
};
|
||
Expr.pseudos['nth'] = Expr.pseudos['eq'];
|
||
// Add button/input type pseudos
|
||
for (i in {
|
||
radio: true,
|
||
checkbox: true,
|
||
file: true,
|
||
password: true,
|
||
image: true
|
||
}) {
|
||
Expr.pseudos[i] = createInputPseudo(i)
|
||
}
|
||
for (i in {
|
||
submit: true,
|
||
reset: true
|
||
}) {
|
||
Expr.pseudos[i] = createButtonPseudo(i)
|
||
}
|
||
// Easy API for creating new setFilters
|
||
function setFilters() {
|
||
}
|
||
setFilters.prototype = Expr.filters = Expr.pseudos;
|
||
Expr.setFilters = new setFilters;
|
||
tokenize = Sizzle.tokenize = function (selector, parseOnly) {
|
||
var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];
|
||
if (cached) {
|
||
return parseOnly ? 0 : cached.slice(0)
|
||
}
|
||
soFar = selector;
|
||
groups = [];
|
||
preFilters = Expr.preFilter;
|
||
while (soFar) {
|
||
// Comma and first run
|
||
if (!matched || (match = rcomma.exec(soFar))) {
|
||
if (match) {
|
||
// Don't consume trailing commas as valid
|
||
soFar = soFar.slice(match[0].length) || soFar
|
||
}
|
||
groups.push(tokens = [])
|
||
}
|
||
matched = false;
|
||
// Combinators
|
||
if (match = rcombinators.exec(soFar)) {
|
||
matched = match.shift();
|
||
tokens.push({
|
||
value: matched,
|
||
// Cast descendant combinators to space
|
||
type: match[0].replace(rtrim, ' ')
|
||
});
|
||
soFar = soFar.slice(matched.length)
|
||
}
|
||
// Filters
|
||
for (type in Expr.filter) {
|
||
if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
|
||
matched = match.shift();
|
||
tokens.push({
|
||
value: matched,
|
||
type: type,
|
||
matches: match
|
||
});
|
||
soFar = soFar.slice(matched.length)
|
||
}
|
||
}
|
||
if (!matched) {
|
||
break
|
||
}
|
||
}
|
||
// Return the length of the invalid excess
|
||
// if we're just parsing
|
||
// Otherwise, throw an error or return tokens
|
||
return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens
|
||
tokenCache(selector, groups).slice(0)
|
||
};
|
||
function toSelector(tokens) {
|
||
var i = 0, len = tokens.length, selector = '';
|
||
for (; i < len; i++) {
|
||
selector += tokens[i].value
|
||
}
|
||
return selector
|
||
}
|
||
function addCombinator(matcher, combinator, base) {
|
||
var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;
|
||
return combinator.first ? // Check against closest ancestor/preceding element
|
||
function (elem, context, xml) {
|
||
while (elem = elem[dir]) {
|
||
if (elem.nodeType === 1 || checkNonElements) {
|
||
return matcher(elem, context, xml)
|
||
}
|
||
}
|
||
} : // Check against all ancestor/preceding elements
|
||
function (elem, context, xml) {
|
||
var oldCache, uniqueCache, outerCache, newCache = [
|
||
dirruns,
|
||
doneName
|
||
];
|
||
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
|
||
if (xml) {
|
||
while (elem = elem[dir]) {
|
||
if (elem.nodeType === 1 || checkNonElements) {
|
||
if (matcher(elem, context, xml)) {
|
||
return true
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
while (elem = elem[dir]) {
|
||
if (elem.nodeType === 1 || checkNonElements) {
|
||
outerCache = elem[expando] || (elem[expando] = {});
|
||
// Support: IE <9 only
|
||
// Defend against cloned attroperties (jQuery gh-1709)
|
||
uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
|
||
if ((oldCache = uniqueCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
|
||
// Assign to newCache so results back-propagate to previous elements
|
||
return newCache[2] = oldCache[2]
|
||
} else {
|
||
// Reuse newcache so results back-propagate to previous elements
|
||
uniqueCache[dir] = newCache;
|
||
// A match means we're done; a fail means we have to keep checking
|
||
if (newCache[2] = matcher(elem, context, xml)) {
|
||
return true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function elementMatcher(matchers) {
|
||
return matchers.length > 1 ? function (elem, context, xml) {
|
||
var i = matchers.length;
|
||
while (i--) {
|
||
if (!matchers[i](elem, context, xml)) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
} : matchers[0]
|
||
}
|
||
function multipleContexts(selector, contexts, results) {
|
||
var i = 0, len = contexts.length;
|
||
for (; i < len; i++) {
|
||
Sizzle(selector, contexts[i], results)
|
||
}
|
||
return results
|
||
}
|
||
function condense(unmatched, map, filter, context, xml) {
|
||
var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;
|
||
for (; i < len; i++) {
|
||
if (elem = unmatched[i]) {
|
||
if (!filter || filter(elem, context, xml)) {
|
||
newUnmatched.push(elem);
|
||
if (mapped) {
|
||
map.push(i)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return newUnmatched
|
||
}
|
||
function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
|
||
if (postFilter && !postFilter[expando]) {
|
||
postFilter = setMatcher(postFilter)
|
||
}
|
||
if (postFinder && !postFinder[expando]) {
|
||
postFinder = setMatcher(postFinder, postSelector)
|
||
}
|
||
return markFunction(function (seed, results, context, xml) {
|
||
var temp, i, elem, preMap = [], postMap = [], preexisting = results.length,
|
||
// Get initial elements from seed or context
|
||
elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []),
|
||
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
||
matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
||
postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary
|
||
[] : // ...otherwise use results directly
|
||
results : matcherIn;
|
||
// Find primary matches
|
||
if (matcher) {
|
||
matcher(matcherIn, matcherOut, context, xml)
|
||
}
|
||
// Apply postFilter
|
||
if (postFilter) {
|
||
temp = condense(matcherOut, postMap);
|
||
postFilter(temp, [], context, xml);
|
||
// Un-match failing elements by moving them back to matcherIn
|
||
i = temp.length;
|
||
while (i--) {
|
||
if (elem = temp[i]) {
|
||
matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem)
|
||
}
|
||
}
|
||
}
|
||
if (seed) {
|
||
if (postFinder || preFilter) {
|
||
if (postFinder) {
|
||
// Get the final matcherOut by condensing this intermediate into postFinder contexts
|
||
temp = [];
|
||
i = matcherOut.length;
|
||
while (i--) {
|
||
if (elem = matcherOut[i]) {
|
||
// Restore matcherIn since elem is not yet a final match
|
||
temp.push(matcherIn[i] = elem)
|
||
}
|
||
}
|
||
postFinder(null, matcherOut = [], temp, xml)
|
||
}
|
||
// Move matched elements from seed to results to keep them synchronized
|
||
i = matcherOut.length;
|
||
while (i--) {
|
||
if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {
|
||
seed[temp] = !(results[temp] = elem)
|
||
}
|
||
}
|
||
} // Add elements to results, through postFinder if defined
|
||
} else {
|
||
matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
|
||
if (postFinder) {
|
||
postFinder(null, results, matcherOut, xml)
|
||
} else {
|
||
push.apply(results, matcherOut)
|
||
}
|
||
}
|
||
})
|
||
}
|
||
function matcherFromTokens(tokens) {
|
||
var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0,
|
||
// The foundational matcher ensures that elements are reachable from top-level context(s)
|
||
matchContext = addCombinator(function (elem) {
|
||
return elem === checkContext
|
||
}, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {
|
||
return indexOf(checkContext, elem) > -1
|
||
}, implicitRelative, true), matchers = [function (elem, context, xml) {
|
||
var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
|
||
// Avoid hanging onto element (issue #299)
|
||
checkContext = null;
|
||
return ret
|
||
}];
|
||
for (; i < len; i++) {
|
||
if (matcher = Expr.relative[tokens[i].type]) {
|
||
matchers = [addCombinator(elementMatcher(matchers), matcher)]
|
||
} else {
|
||
matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);
|
||
// Return special upon seeing a positional matcher
|
||
if (matcher[expando]) {
|
||
// Find the next relative operator (if any) for proper handling
|
||
j = ++i;
|
||
for (; j < len; j++) {
|
||
if (Expr.relative[tokens[j].type]) {
|
||
break
|
||
}
|
||
}
|
||
return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
||
tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens))
|
||
}
|
||
matchers.push(matcher)
|
||
}
|
||
}
|
||
return elementMatcher(matchers)
|
||
}
|
||
function matcherFromGroupMatchers(elementMatchers, setMatchers) {
|
||
var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {
|
||
var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext,
|
||
// We must always have either seed elements or outermost context
|
||
elems = seed || byElement && Expr.find['TAG']('*', outermost),
|
||
// Use integer dirruns iff this is the outermost matcher
|
||
dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
|
||
if (outermost) {
|
||
outermostContext = context === document || context || outermost
|
||
}
|
||
// Add elements passing elementMatchers directly to results
|
||
// Support: IE<9, Safari
|
||
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
||
for (; i !== len && (elem = elems[i]) != null; i++) {
|
||
if (byElement && elem) {
|
||
j = 0;
|
||
if (!context && elem.ownerDocument !== document) {
|
||
setDocument(elem);
|
||
xml = !documentIsHTML
|
||
}
|
||
while (matcher = elementMatchers[j++]) {
|
||
if (matcher(elem, context || document, xml)) {
|
||
results.push(elem);
|
||
break
|
||
}
|
||
}
|
||
if (outermost) {
|
||
dirruns = dirrunsUnique
|
||
}
|
||
}
|
||
// Track unmatched elements for set filters
|
||
if (bySet) {
|
||
// They will have gone through all possible matchers
|
||
if (elem = !matcher && elem) {
|
||
matchedCount--
|
||
}
|
||
// Lengthen the array for every element, matched or not
|
||
if (seed) {
|
||
unmatched.push(elem)
|
||
}
|
||
}
|
||
}
|
||
// `i` is now the count of elements visited above, and adding it to `matchedCount`
|
||
// makes the latter nonnegative.
|
||
matchedCount += i;
|
||
// Apply set filters to unmatched elements
|
||
// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
|
||
// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
|
||
// no element matchers and no seed.
|
||
// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
|
||
// case, which will result in a "00" `matchedCount` that differs from `i` but is also
|
||
// numerically zero.
|
||
if (bySet && i !== matchedCount) {
|
||
j = 0;
|
||
while (matcher = setMatchers[j++]) {
|
||
matcher(unmatched, setMatched, context, xml)
|
||
}
|
||
if (seed) {
|
||
// Reintegrate element matches to eliminate the need for sorting
|
||
if (matchedCount > 0) {
|
||
while (i--) {
|
||
if (!(unmatched[i] || setMatched[i])) {
|
||
setMatched[i] = pop.call(results)
|
||
}
|
||
}
|
||
}
|
||
// Discard index placeholder values to get only actual matches
|
||
setMatched = condense(setMatched)
|
||
}
|
||
// Add matches to results
|
||
push.apply(results, setMatched);
|
||
// Seedless set matches succeeding multiple successful matchers stipulate sorting
|
||
if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
|
||
Sizzle.uniqueSort(results)
|
||
}
|
||
}
|
||
// Override manipulation of globals by nested matchers
|
||
if (outermost) {
|
||
dirruns = dirrunsUnique;
|
||
outermostContext = contextBackup
|
||
}
|
||
return unmatched
|
||
};
|
||
return bySet ? markFunction(superMatcher) : superMatcher
|
||
}
|
||
compile = Sizzle.compile = function (selector, match) {
|
||
var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];
|
||
if (!cached) {
|
||
// Generate a function of recursive functions that can be used to check each element
|
||
if (!match) {
|
||
match = tokenize(selector)
|
||
}
|
||
i = match.length;
|
||
while (i--) {
|
||
cached = matcherFromTokens(match[i]);
|
||
if (cached[expando]) {
|
||
setMatchers.push(cached)
|
||
} else {
|
||
elementMatchers.push(cached)
|
||
}
|
||
}
|
||
// Cache the compiled function
|
||
cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
|
||
// Save selector and tokenization
|
||
cached.selector = selector
|
||
}
|
||
return cached
|
||
};
|
||
/**
|
||
* A low-level selection function that works with Sizzle's compiled
|
||
* selector functions
|
||
* @param {String|Function} selector A selector or a pre-compiled
|
||
* selector function built with Sizzle.compile
|
||
* @param {Element} context
|
||
* @param {Array} [results]
|
||
* @param {Array} [seed] A set of elements to match against
|
||
*/
|
||
select = Sizzle.select = function (selector, context, results, seed) {
|
||
var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);
|
||
results = results || [];
|
||
// Try to minimize operations if there is only one selector in the list and no seed
|
||
// (the latter of which guarantees us context)
|
||
if (match.length === 1) {
|
||
// Reduce context if the leading compound selector is an ID
|
||
tokens = match[0] = match[0].slice(0);
|
||
if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
|
||
context = (Expr.find['ID'](token.matches[0].replace(runescape, funescape), context) || [])[0];
|
||
if (!context) {
|
||
return results // Precompiled matchers will still verify ancestry, so step up a level
|
||
} else if (compiled) {
|
||
context = context.parentNode
|
||
}
|
||
selector = selector.slice(tokens.shift().value.length)
|
||
}
|
||
// Fetch a seed set for right-to-left matching
|
||
i = matchExpr['needsContext'].test(selector) ? 0 : tokens.length;
|
||
while (i--) {
|
||
token = tokens[i];
|
||
// Abort if we hit a combinator
|
||
if (Expr.relative[type = token.type]) {
|
||
break
|
||
}
|
||
if (find = Expr.find[type]) {
|
||
// Search, expanding context for leading sibling combinators
|
||
if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
|
||
// If seed is empty or no tokens remain, we can return early
|
||
tokens.splice(i, 1);
|
||
selector = seed.length && toSelector(tokens);
|
||
if (!selector) {
|
||
push.apply(results, seed);
|
||
return results
|
||
}
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Compile and execute a filtering function if one is not provided
|
||
// Provide `match` to avoid retokenization if we modified the selector above
|
||
(compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
|
||
return results
|
||
};
|
||
// One-time assignments
|
||
// Sort stability
|
||
support.sortStable = expando.split('').sort(sortOrder).join('') === expando;
|
||
// Support: Chrome 14-35+
|
||
// Always assume duplicates if they aren't passed to the comparison function
|
||
support.detectDuplicates = !!hasDuplicate;
|
||
// Initialize against the default document
|
||
setDocument();
|
||
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
||
// Detached nodes confoundingly follow *each other*
|
||
support.sortDetached = assert(function (div1) {
|
||
// Should return 1, but returns 4 (following)
|
||
return div1.compareDocumentPosition(document.createElement('div')) & 1
|
||
});
|
||
// Support: IE<8
|
||
// Prevent attribute/property "interpolation"
|
||
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
||
if (!assert(function (div) {
|
||
div.innerHTML = "<a href='#'></a>";
|
||
return div.firstChild.getAttribute('href') === '#'
|
||
})) {
|
||
addHandle('type|href|height|width', function (elem, name, isXML) {
|
||
if (!isXML) {
|
||
return elem.getAttribute(name, name.toLowerCase() === 'type' ? 1 : 2)
|
||
}
|
||
})
|
||
}
|
||
// Support: IE<9
|
||
// Use defaultValue in place of getAttribute("value")
|
||
if (!support.attributes || !assert(function (div) {
|
||
div.innerHTML = '<input/>';
|
||
div.firstChild.setAttribute('value', '');
|
||
return div.firstChild.getAttribute('value') === ''
|
||
})) {
|
||
addHandle('value', function (elem, name, isXML) {
|
||
if (!isXML && elem.nodeName.toLowerCase() === 'input') {
|
||
return elem.defaultValue
|
||
}
|
||
})
|
||
}
|
||
// Support: IE<9
|
||
// Use getAttributeNode to fetch booleans when getAttribute lies
|
||
if (!assert(function (div) {
|
||
return div.getAttribute('disabled') == null
|
||
})) {
|
||
addHandle(booleans, function (elem, name, isXML) {
|
||
var val;
|
||
if (!isXML) {
|
||
return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null
|
||
}
|
||
})
|
||
}
|
||
return Sizzle
|
||
}(window);
|
||
jQuery.find = Sizzle;
|
||
jQuery.expr = Sizzle.selectors;
|
||
jQuery.expr[':'] = jQuery.expr.pseudos;
|
||
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
|
||
jQuery.text = Sizzle.getText;
|
||
jQuery.isXMLDoc = Sizzle.isXML;
|
||
jQuery.contains = Sizzle.contains;
|
||
var dir = function (elem, dir, until) {
|
||
var matched = [], truncate = until !== undefined;
|
||
while ((elem = elem[dir]) && elem.nodeType !== 9) {
|
||
if (elem.nodeType === 1) {
|
||
if (truncate && jQuery(elem).is(until)) {
|
||
break
|
||
}
|
||
matched.push(elem)
|
||
}
|
||
}
|
||
return matched
|
||
};
|
||
var siblings = function (n, elem) {
|
||
var matched = [];
|
||
for (; n; n = n.nextSibling) {
|
||
if (n.nodeType === 1 && n !== elem) {
|
||
matched.push(n)
|
||
}
|
||
}
|
||
return matched
|
||
};
|
||
var rneedsContext = jQuery.expr.match.needsContext;
|
||
var rsingleTag = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;
|
||
var risSimple = /^.[^:#\[\.,]*$/;
|
||
// Implement the identical functionality for filter and not
|
||
function winnow(elements, qualifier, not) {
|
||
if (jQuery.isFunction(qualifier)) {
|
||
return jQuery.grep(elements, function (elem, i) {
|
||
/* jshint -W018 */
|
||
return !!qualifier.call(elem, i, elem) !== not
|
||
})
|
||
}
|
||
if (qualifier.nodeType) {
|
||
return jQuery.grep(elements, function (elem) {
|
||
return elem === qualifier !== not
|
||
})
|
||
}
|
||
if (typeof qualifier === 'string') {
|
||
if (risSimple.test(qualifier)) {
|
||
return jQuery.filter(qualifier, elements, not)
|
||
}
|
||
qualifier = jQuery.filter(qualifier, elements)
|
||
}
|
||
return jQuery.grep(elements, function (elem) {
|
||
return indexOf.call(qualifier, elem) > -1 !== not
|
||
})
|
||
}
|
||
jQuery.filter = function (expr, elems, not) {
|
||
var elem = elems[0];
|
||
if (not) {
|
||
expr = ':not(' + expr + ')'
|
||
}
|
||
return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
|
||
return elem.nodeType === 1
|
||
}))
|
||
};
|
||
jQuery.fn.extend({
|
||
find: function (selector) {
|
||
var i, len = this.length, ret = [], self = this;
|
||
if (typeof selector !== 'string') {
|
||
return this.pushStack(jQuery(selector).filter(function () {
|
||
for (i = 0; i < len; i++) {
|
||
if (jQuery.contains(self[i], this)) {
|
||
return true
|
||
}
|
||
}
|
||
}))
|
||
}
|
||
for (i = 0; i < len; i++) {
|
||
jQuery.find(selector, self[i], ret)
|
||
}
|
||
// Needed because $( selector, context ) becomes $( context ).find( selector )
|
||
ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret);
|
||
ret.selector = this.selector ? this.selector + ' ' + selector : selector;
|
||
return ret
|
||
},
|
||
filter: function (selector) {
|
||
return this.pushStack(winnow(this, selector || [], false))
|
||
},
|
||
not: function (selector) {
|
||
return this.pushStack(winnow(this, selector || [], true))
|
||
},
|
||
is: function (selector) {
|
||
return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set
|
||
// so $("p:first").is("p:last") won't return true for a doc with two "p".
|
||
typeof selector === 'string' && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length
|
||
}
|
||
});
|
||
// Initialize a jQuery object
|
||
// A central reference to the root jQuery(document)
|
||
var rootjQuery,
|
||
// A simple way to check for HTML strings
|
||
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
||
// Strict HTML recognition (#11290: must start with <)
|
||
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function (selector, context, root) {
|
||
var match, elem;
|
||
// HANDLE: $(""), $(null), $(undefined), $(false)
|
||
if (!selector) {
|
||
return this
|
||
}
|
||
// Method init() accepts an alternate rootjQuery
|
||
// so migrate can support jQuery.sub (gh-2101)
|
||
root = root || rootjQuery;
|
||
// Handle HTML strings
|
||
if (typeof selector === 'string') {
|
||
if (selector[0] === '<' && selector[selector.length - 1] === '>' && selector.length >= 3) {
|
||
// Assume that strings that start and end with <> are HTML and skip the regex check
|
||
match = [
|
||
null,
|
||
selector,
|
||
null
|
||
]
|
||
} else {
|
||
match = rquickExpr.exec(selector)
|
||
}
|
||
// Match html or make sure no context is specified for #id
|
||
if (match && (match[1] || !context)) {
|
||
// HANDLE: $(html) -> $(array)
|
||
if (match[1]) {
|
||
context = context instanceof jQuery ? context[0] : context;
|
||
// Option to run scripts is true for back-compat
|
||
// Intentionally let the error be thrown if parseHTML is not present
|
||
jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));
|
||
// HANDLE: $(html, props)
|
||
if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
|
||
for (match in context) {
|
||
// Properties of context are called as methods if possible
|
||
if (jQuery.isFunction(this[match])) {
|
||
this[match](context[match]) // ...and otherwise set as attributes
|
||
} else {
|
||
this.attr(match, context[match])
|
||
}
|
||
}
|
||
}
|
||
return this // HANDLE: $(#id)
|
||
} else {
|
||
elem = document.getElementById(match[2]);
|
||
// Support: Blackberry 4.6
|
||
// gEBID returns nodes no longer in the document (#6963)
|
||
if (elem && elem.parentNode) {
|
||
// Inject the element directly into the jQuery object
|
||
this.length = 1;
|
||
this[0] = elem
|
||
}
|
||
this.context = document;
|
||
this.selector = selector;
|
||
return this
|
||
} // HANDLE: $(expr, $(...))
|
||
} else if (!context || context.jquery) {
|
||
return (context || root).find(selector) // HANDLE: $(expr, context)
|
||
// (which is just equivalent to: $(context).find(expr)
|
||
} else {
|
||
return this.constructor(context).find(selector)
|
||
} // HANDLE: $(DOMElement)
|
||
} else if (selector.nodeType) {
|
||
this.context = this[0] = selector;
|
||
this.length = 1;
|
||
return this // HANDLE: $(function)
|
||
// Shortcut for document ready
|
||
} else if (jQuery.isFunction(selector)) {
|
||
return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present
|
||
selector(jQuery)
|
||
}
|
||
if (selector.selector !== undefined) {
|
||
this.selector = selector.selector;
|
||
this.context = selector.context
|
||
}
|
||
return jQuery.makeArray(selector, this)
|
||
};
|
||
// Give the init function the jQuery prototype for later instantiation
|
||
init.prototype = jQuery.fn;
|
||
// Initialize central reference
|
||
rootjQuery = jQuery(document);
|
||
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
|
||
// Methods guaranteed to produce a unique set when starting from a unique set
|
||
guaranteedUnique = {
|
||
children: true,
|
||
contents: true,
|
||
next: true,
|
||
prev: true
|
||
};
|
||
jQuery.fn.extend({
|
||
has: function (target) {
|
||
var targets = jQuery(target, this), l = targets.length;
|
||
return this.filter(function () {
|
||
var i = 0;
|
||
for (; i < l; i++) {
|
||
if (jQuery.contains(this, targets[i])) {
|
||
return true
|
||
}
|
||
}
|
||
})
|
||
},
|
||
closest: function (selectors, context) {
|
||
var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test(selectors) || typeof selectors !== 'string' ? jQuery(selectors, context || this.context) : 0;
|
||
for (; i < l; i++) {
|
||
for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
|
||
// Always skip document fragments
|
||
if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : // Don't pass non-elements to Sizzle
|
||
cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {
|
||
matched.push(cur);
|
||
break
|
||
}
|
||
}
|
||
}
|
||
return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched)
|
||
},
|
||
// Determine the position of an element within the set
|
||
index: function (elem) {
|
||
// No argument, return index in parent
|
||
if (!elem) {
|
||
return this[0] && this[0].parentNode ? this.first().prevAll().length : -1
|
||
}
|
||
// Index in selector
|
||
if (typeof elem === 'string') {
|
||
return indexOf.call(jQuery(elem), this[0])
|
||
}
|
||
// Locate the position of the desired element
|
||
return indexOf.call(this, // If it receives a jQuery object, the first element is used
|
||
elem.jquery ? elem[0] : elem)
|
||
},
|
||
add: function (selector, context) {
|
||
return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))))
|
||
},
|
||
addBack: function (selector) {
|
||
return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector))
|
||
}
|
||
});
|
||
function sibling(cur, dir) {
|
||
while ((cur = cur[dir]) && cur.nodeType !== 1) {
|
||
}
|
||
return cur
|
||
}
|
||
jQuery.each({
|
||
parent: function (elem) {
|
||
var parent = elem.parentNode;
|
||
return parent && parent.nodeType !== 11 ? parent : null
|
||
},
|
||
parents: function (elem) {
|
||
return dir(elem, 'parentNode')
|
||
},
|
||
parentsUntil: function (elem, i, until) {
|
||
return dir(elem, 'parentNode', until)
|
||
},
|
||
next: function (elem) {
|
||
return sibling(elem, 'nextSibling')
|
||
},
|
||
prev: function (elem) {
|
||
return sibling(elem, 'previousSibling')
|
||
},
|
||
nextAll: function (elem) {
|
||
return dir(elem, 'nextSibling')
|
||
},
|
||
prevAll: function (elem) {
|
||
return dir(elem, 'previousSibling')
|
||
},
|
||
nextUntil: function (elem, i, until) {
|
||
return dir(elem, 'nextSibling', until)
|
||
},
|
||
prevUntil: function (elem, i, until) {
|
||
return dir(elem, 'previousSibling', until)
|
||
},
|
||
siblings: function (elem) {
|
||
return siblings((elem.parentNode || {}).firstChild, elem)
|
||
},
|
||
children: function (elem) {
|
||
return siblings(elem.firstChild)
|
||
},
|
||
contents: function (elem) {
|
||
return elem.contentDocument || jQuery.merge([], elem.childNodes)
|
||
}
|
||
}, function (name, fn) {
|
||
jQuery.fn[name] = function (until, selector) {
|
||
var matched = jQuery.map(this, fn, until);
|
||
if (name.slice(-5) !== 'Until') {
|
||
selector = until
|
||
}
|
||
if (selector && typeof selector === 'string') {
|
||
matched = jQuery.filter(selector, matched)
|
||
}
|
||
if (this.length > 1) {
|
||
// Remove duplicates
|
||
if (!guaranteedUnique[name]) {
|
||
jQuery.uniqueSort(matched)
|
||
}
|
||
// Reverse order for parents* and prev-derivatives
|
||
if (rparentsprev.test(name)) {
|
||
matched.reverse()
|
||
}
|
||
}
|
||
return this.pushStack(matched)
|
||
}
|
||
});
|
||
var rnotwhite = /\S+/g;
|
||
// Convert String-formatted options into Object-formatted ones
|
||
function createOptions(options) {
|
||
var object = {};
|
||
jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
|
||
object[flag] = true
|
||
});
|
||
return object
|
||
}
|
||
/*
|
||
* Create a callback list using the following parameters:
|
||
*
|
||
* options: an optional list of space-separated options that will change how
|
||
* the callback list behaves or a more traditional option object
|
||
*
|
||
* By default a callback list will act like an event callback list and can be
|
||
* "fired" multiple times.
|
||
*
|
||
* Possible options:
|
||
*
|
||
* once: will ensure the callback list can only be fired once (like a Deferred)
|
||
*
|
||
* memory: will keep track of previous values and will call any callback added
|
||
* after the list has been fired right away with the latest "memorized"
|
||
* values (like a Deferred)
|
||
*
|
||
* unique: will ensure a callback can only be added once (no duplicate in the list)
|
||
*
|
||
* stopOnFalse: interrupt callings when a callback returns false
|
||
*
|
||
*/
|
||
jQuery.Callbacks = function (options) {
|
||
// Convert options from String-formatted to Object-formatted if needed
|
||
// (we check in cache first)
|
||
options = typeof options === 'string' ? createOptions(options) : jQuery.extend({}, options);
|
||
var
|
||
// Flag to know if list is currently firing
|
||
firing,
|
||
// Last fire value for non-forgettable lists
|
||
memory,
|
||
// Flag to know if list was already fired
|
||
fired,
|
||
// Flag to prevent firing
|
||
locked,
|
||
// Actual callback list
|
||
list = [],
|
||
// Queue of execution data for repeatable lists
|
||
queue = [],
|
||
// Index of currently firing callback (modified by add/remove as needed)
|
||
firingIndex = -1,
|
||
// Fire callbacks
|
||
fire = function () {
|
||
// Enforce single-firing
|
||
locked = options.once;
|
||
// Execute callbacks for all pending executions,
|
||
// respecting firingIndex overrides and runtime changes
|
||
fired = firing = true;
|
||
for (; queue.length; firingIndex = -1) {
|
||
memory = queue.shift();
|
||
while (++firingIndex < list.length) {
|
||
// Run callback and check for early termination
|
||
if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
|
||
// Jump to end and forget the data so .add doesn't re-fire
|
||
firingIndex = list.length;
|
||
memory = false
|
||
}
|
||
}
|
||
}
|
||
// Forget the data if we're done with it
|
||
if (!options.memory) {
|
||
memory = false
|
||
}
|
||
firing = false;
|
||
// Clean up if we're done firing for good
|
||
if (locked) {
|
||
// Keep an empty list if we have data for future add calls
|
||
if (memory) {
|
||
list = [] // Otherwise, this object is spent
|
||
} else {
|
||
list = ''
|
||
}
|
||
}
|
||
},
|
||
// Actual Callbacks object
|
||
self = {
|
||
// Add a callback or a collection of callbacks to the list
|
||
add: function () {
|
||
if (list) {
|
||
// If we have memory from a past run, we should fire after adding
|
||
if (memory && !firing) {
|
||
firingIndex = list.length - 1;
|
||
queue.push(memory)
|
||
}
|
||
(function add(args) {
|
||
jQuery.each(args, function (_, arg) {
|
||
if (jQuery.isFunction(arg)) {
|
||
if (!options.unique || !self.has(arg)) {
|
||
list.push(arg)
|
||
}
|
||
} else if (arg && arg.length && jQuery.type(arg) !== 'string') {
|
||
// Inspect recursively
|
||
add(arg)
|
||
}
|
||
})
|
||
}(arguments));
|
||
if (memory && !firing) {
|
||
fire()
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
// Remove a callback from the list
|
||
remove: function () {
|
||
jQuery.each(arguments, function (_, arg) {
|
||
var index;
|
||
while ((index = jQuery.inArray(arg, list, index)) > -1) {
|
||
list.splice(index, 1);
|
||
// Handle firing indexes
|
||
if (index <= firingIndex) {
|
||
firingIndex--
|
||
}
|
||
}
|
||
});
|
||
return this
|
||
},
|
||
// Check if a given callback is in the list.
|
||
// If no argument is given, return whether or not list has callbacks attached.
|
||
has: function (fn) {
|
||
return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0
|
||
},
|
||
// Remove all callbacks from the list
|
||
empty: function () {
|
||
if (list) {
|
||
list = []
|
||
}
|
||
return this
|
||
},
|
||
// Disable .fire and .add
|
||
// Abort any current/pending executions
|
||
// Clear all callbacks and values
|
||
disable: function () {
|
||
locked = queue = [];
|
||
list = memory = '';
|
||
return this
|
||
},
|
||
disabled: function () {
|
||
return !list
|
||
},
|
||
// Disable .fire
|
||
// Also disable .add unless we have memory (since it would have no effect)
|
||
// Abort any pending executions
|
||
lock: function () {
|
||
locked = queue = [];
|
||
if (!memory) {
|
||
list = memory = ''
|
||
}
|
||
return this
|
||
},
|
||
locked: function () {
|
||
return !!locked
|
||
},
|
||
// Call all callbacks with the given context and arguments
|
||
fireWith: function (context, args) {
|
||
if (!locked) {
|
||
args = args || [];
|
||
args = [
|
||
context,
|
||
args.slice ? args.slice() : args
|
||
];
|
||
queue.push(args);
|
||
if (!firing) {
|
||
fire()
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
// Call all the callbacks with the given arguments
|
||
fire: function () {
|
||
self.fireWith(this, arguments);
|
||
return this
|
||
},
|
||
// To know if the callbacks have already been called at least once
|
||
fired: function () {
|
||
return !!fired
|
||
}
|
||
};
|
||
return self
|
||
};
|
||
jQuery.extend({
|
||
Deferred: function (func) {
|
||
var tuples = [
|
||
// action, add listener, listener list, final state
|
||
[
|
||
'resolve',
|
||
'done',
|
||
jQuery.Callbacks('once memory'),
|
||
'resolved'
|
||
],
|
||
[
|
||
'reject',
|
||
'fail',
|
||
jQuery.Callbacks('once memory'),
|
||
'rejected'
|
||
],
|
||
[
|
||
'notify',
|
||
'progress',
|
||
jQuery.Callbacks('memory')
|
||
]
|
||
], state = 'pending', promise = {
|
||
state: function () {
|
||
return state
|
||
},
|
||
always: function () {
|
||
deferred.done(arguments).fail(arguments);
|
||
return this
|
||
},
|
||
then: function () {
|
||
var fns = arguments;
|
||
return jQuery.Deferred(function (newDefer) {
|
||
jQuery.each(tuples, function (i, tuple) {
|
||
var fn = jQuery.isFunction(fns[i]) && fns[i];
|
||
// deferred[ done | fail | progress ] for forwarding actions to newDefer
|
||
deferred[tuple[1]](function () {
|
||
var returned = fn && fn.apply(this, arguments);
|
||
if (returned && jQuery.isFunction(returned.promise)) {
|
||
returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject)
|
||
} else {
|
||
newDefer[tuple[0] + 'With'](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments)
|
||
}
|
||
})
|
||
});
|
||
fns = null
|
||
}).promise()
|
||
},
|
||
// Get a promise for this deferred
|
||
// If obj is provided, the promise aspect is added to the object
|
||
promise: function (obj) {
|
||
return obj != null ? jQuery.extend(obj, promise) : promise
|
||
}
|
||
}, deferred = {};
|
||
// Keep pipe for back-compat
|
||
promise.pipe = promise.then;
|
||
// Add list-specific methods
|
||
jQuery.each(tuples, function (i, tuple) {
|
||
var list = tuple[2], stateString = tuple[3];
|
||
// promise[ done | fail | progress ] = list.add
|
||
promise[tuple[1]] = list.add;
|
||
// Handle state
|
||
if (stateString) {
|
||
list.add(function () {
|
||
// state = [ resolved | rejected ]
|
||
state = stateString // [ reject_list | resolve_list ].disable; progress_list.lock
|
||
}, tuples[i ^ 1][2].disable, tuples[2][2].lock)
|
||
}
|
||
// deferred[ resolve | reject | notify ]
|
||
deferred[tuple[0]] = function () {
|
||
deferred[tuple[0] + 'With'](this === deferred ? promise : this, arguments);
|
||
return this
|
||
};
|
||
deferred[tuple[0] + 'With'] = list.fireWith
|
||
});
|
||
// Make the deferred a promise
|
||
promise.promise(deferred);
|
||
// Call given func if any
|
||
if (func) {
|
||
func.call(deferred, deferred)
|
||
}
|
||
// All done!
|
||
return deferred
|
||
},
|
||
// Deferred helper
|
||
when: function (subordinate) {
|
||
var i = 0, resolveValues = slice.call(arguments), length = resolveValues.length,
|
||
// the count of uncompleted subordinates
|
||
remaining = length !== 1 || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,
|
||
// the master Deferred.
|
||
// If resolveValues consist of only a single Deferred, just use that.
|
||
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
|
||
// Update function for both resolve and progress values
|
||
updateFunc = function (i, contexts, values) {
|
||
return function (value) {
|
||
contexts[i] = this;
|
||
values[i] = arguments.length > 1 ? slice.call(arguments) : value;
|
||
if (values === progressValues) {
|
||
deferred.notifyWith(contexts, values)
|
||
} else if (!--remaining) {
|
||
deferred.resolveWith(contexts, values)
|
||
}
|
||
}
|
||
}, progressValues, progressContexts, resolveContexts;
|
||
// Add listeners to Deferred subordinates; treat others as resolved
|
||
if (length > 1) {
|
||
progressValues = new Array(length);
|
||
progressContexts = new Array(length);
|
||
resolveContexts = new Array(length);
|
||
for (; i < length; i++) {
|
||
if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {
|
||
resolveValues[i].promise().progress(updateFunc(i, progressContexts, progressValues)).done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject)
|
||
} else {
|
||
--remaining
|
||
}
|
||
}
|
||
}
|
||
// If we're not waiting on anything, resolve the master
|
||
if (!remaining) {
|
||
deferred.resolveWith(resolveContexts, resolveValues)
|
||
}
|
||
return deferred.promise()
|
||
}
|
||
});
|
||
// The deferred used on DOM ready
|
||
var readyList;
|
||
jQuery.fn.ready = function (fn) {
|
||
// Add the callback
|
||
jQuery.ready.promise().done(fn);
|
||
return this
|
||
};
|
||
jQuery.extend({
|
||
// Is the DOM ready to be used? Set to true once it occurs.
|
||
isReady: false,
|
||
// A counter to track how many items to wait for before
|
||
// the ready event fires. See #6781
|
||
readyWait: 1,
|
||
// Hold (or release) the ready event
|
||
holdReady: function (hold) {
|
||
if (hold) {
|
||
jQuery.readyWait++
|
||
} else {
|
||
jQuery.ready(true)
|
||
}
|
||
},
|
||
// Handle when the DOM is ready
|
||
ready: function (wait) {
|
||
// Abort if there are pending holds or we're already ready
|
||
if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
|
||
return
|
||
}
|
||
// Remember that the DOM is ready
|
||
jQuery.isReady = true;
|
||
// If a normal DOM Ready event fired, decrement, and wait if need be
|
||
if (wait !== true && --jQuery.readyWait > 0) {
|
||
return
|
||
}
|
||
// If there are functions bound, to execute
|
||
readyList.resolveWith(document, [jQuery]);
|
||
// Trigger any bound ready events
|
||
if (jQuery.fn.triggerHandler) {
|
||
jQuery(document).triggerHandler('ready');
|
||
jQuery(document).off('ready')
|
||
}
|
||
}
|
||
});
|
||
/**
|
||
* The ready event handler and self cleanup method
|
||
*/
|
||
function completed() {
|
||
document.removeEventListener('DOMContentLoaded', completed);
|
||
window.removeEventListener('load', completed);
|
||
jQuery.ready()
|
||
}
|
||
jQuery.ready.promise = function (obj) {
|
||
if (!readyList) {
|
||
readyList = jQuery.Deferred();
|
||
// Catch cases where $(document).ready() is called
|
||
// after the browser event has already occurred.
|
||
// Support: IE9-10 only
|
||
// Older IE sometimes signals "interactive" too soon
|
||
if (document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll) {
|
||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||
window.setTimeout(jQuery.ready)
|
||
} else {
|
||
// Use the handy event callback
|
||
document.addEventListener('DOMContentLoaded', completed);
|
||
// A fallback to window.onload, that will always work
|
||
window.addEventListener('load', completed)
|
||
}
|
||
}
|
||
return readyList.promise(obj)
|
||
};
|
||
// Kick off the DOM ready check even if the user does not
|
||
jQuery.ready.promise();
|
||
// Multifunctional method to get and set values of a collection
|
||
// The value/s can optionally be executed if it's a function
|
||
var access = function (elems, fn, key, value, chainable, emptyGet, raw) {
|
||
var i = 0, len = elems.length, bulk = key == null;
|
||
// Sets many values
|
||
if (jQuery.type(key) === 'object') {
|
||
chainable = true;
|
||
for (i in key) {
|
||
access(elems, fn, i, key[i], true, emptyGet, raw)
|
||
} // Sets one value
|
||
} else if (value !== undefined) {
|
||
chainable = true;
|
||
if (!jQuery.isFunction(value)) {
|
||
raw = true
|
||
}
|
||
if (bulk) {
|
||
// Bulk operations run against the entire set
|
||
if (raw) {
|
||
fn.call(elems, value);
|
||
fn = null // ...except when executing function values
|
||
} else {
|
||
bulk = fn;
|
||
fn = function (elem, key, value) {
|
||
return bulk.call(jQuery(elem), value)
|
||
}
|
||
}
|
||
}
|
||
if (fn) {
|
||
for (; i < len; i++) {
|
||
fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)))
|
||
}
|
||
}
|
||
}
|
||
return chainable ? elems : // Gets
|
||
bulk ? fn.call(elems) : len ? fn(elems[0], key) : emptyGet
|
||
};
|
||
var acceptData = function (owner) {
|
||
// Accepts only:
|
||
// - Node
|
||
// - Node.ELEMENT_NODE
|
||
// - Node.DOCUMENT_NODE
|
||
// - Object
|
||
// - Any
|
||
/* jshint -W018 */
|
||
return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType
|
||
};
|
||
function Data() {
|
||
this.expando = jQuery.expando + Data.uid++
|
||
}
|
||
Data.uid = 1;
|
||
Data.prototype = {
|
||
register: function (owner, initial) {
|
||
var value = initial || {};
|
||
// If it is a node unlikely to be stringify-ed or looped over
|
||
// use plain assignment
|
||
if (owner.nodeType) {
|
||
owner[this.expando] = value // Otherwise secure it in a non-enumerable, non-writable property
|
||
// configurability must be true to allow the property to be
|
||
// deleted with the delete operator
|
||
} else {
|
||
Object.defineProperty(owner, this.expando, {
|
||
value: value,
|
||
writable: true,
|
||
configurable: true
|
||
})
|
||
}
|
||
return owner[this.expando]
|
||
},
|
||
cache: function (owner) {
|
||
// We can accept data for non-element nodes in modern browsers,
|
||
// but we should not, see #8335.
|
||
// Always return an empty object.
|
||
if (!acceptData(owner)) {
|
||
return {}
|
||
}
|
||
// Check if the owner object already has a cache
|
||
var value = owner[this.expando];
|
||
// If not, create one
|
||
if (!value) {
|
||
value = {};
|
||
// We can accept data for non-element nodes in modern browsers,
|
||
// but we should not, see #8335.
|
||
// Always return an empty object.
|
||
if (acceptData(owner)) {
|
||
// If it is a node unlikely to be stringify-ed or looped over
|
||
// use plain assignment
|
||
if (owner.nodeType) {
|
||
owner[this.expando] = value // Otherwise secure it in a non-enumerable property
|
||
// configurable must be true to allow the property to be
|
||
// deleted when data is removed
|
||
} else {
|
||
Object.defineProperty(owner, this.expando, {
|
||
value: value,
|
||
configurable: true
|
||
})
|
||
}
|
||
}
|
||
}
|
||
return value
|
||
},
|
||
set: function (owner, data, value) {
|
||
var prop, cache = this.cache(owner);
|
||
// Handle: [ owner, key, value ] args
|
||
if (typeof data === 'string') {
|
||
cache[data] = value // Handle: [ owner, { properties } ] args
|
||
} else {
|
||
// Copy the properties one-by-one to the cache object
|
||
for (prop in data) {
|
||
cache[prop] = data[prop]
|
||
}
|
||
}
|
||
return cache
|
||
},
|
||
get: function (owner, key) {
|
||
return key === undefined ? this.cache(owner) : owner[this.expando] && owner[this.expando][key]
|
||
},
|
||
access: function (owner, key, value) {
|
||
var stored;
|
||
// In cases where either:
|
||
//
|
||
// 1. No key was specified
|
||
// 2. A string key was specified, but no value provided
|
||
//
|
||
// Take the "read" path and allow the get method to determine
|
||
// which value to return, respectively either:
|
||
//
|
||
// 1. The entire cache object
|
||
// 2. The data stored at the key
|
||
//
|
||
if (key === undefined || key && typeof key === 'string' && value === undefined) {
|
||
stored = this.get(owner, key);
|
||
return stored !== undefined ? stored : this.get(owner, jQuery.camelCase(key))
|
||
}
|
||
// When the key is not a string, or both a key and value
|
||
// are specified, set or extend (existing objects) with either:
|
||
//
|
||
// 1. An object of properties
|
||
// 2. A key and value
|
||
//
|
||
this.set(owner, key, value);
|
||
// Since the "set" path can have two possible entry points
|
||
// return the expected data based on which path was taken[*]
|
||
return value !== undefined ? value : key
|
||
},
|
||
remove: function (owner, key) {
|
||
var i, name, camel, cache = owner[this.expando];
|
||
if (cache === undefined) {
|
||
return
|
||
}
|
||
if (key === undefined) {
|
||
this.register(owner)
|
||
} else {
|
||
// Support array or space separated string of keys
|
||
if (jQuery.isArray(key)) {
|
||
// If "name" is an array of keys...
|
||
// When data is initially created, via ("key", "val") signature,
|
||
// keys will be converted to camelCase.
|
||
// Since there is no way to tell _how_ a key was added, remove
|
||
// both plain key and camelCase key. #12786
|
||
// This will only penalize the array argument path.
|
||
name = key.concat(key.map(jQuery.camelCase))
|
||
} else {
|
||
camel = jQuery.camelCase(key);
|
||
// Try the string as a key before any manipulation
|
||
if (key in cache) {
|
||
name = [
|
||
key,
|
||
camel
|
||
]
|
||
} else {
|
||
// If a key with the spaces exists, use it.
|
||
// Otherwise, create an array by matching non-whitespace
|
||
name = camel;
|
||
name = name in cache ? [name] : name.match(rnotwhite) || []
|
||
}
|
||
}
|
||
i = name.length;
|
||
while (i--) {
|
||
delete cache[name[i]]
|
||
}
|
||
}
|
||
// Remove the expando if there's no more data
|
||
if (key === undefined || jQuery.isEmptyObject(cache)) {
|
||
// Support: Chrome <= 35-45+
|
||
// Webkit & Blink performance suffers when deleting properties
|
||
// from DOM nodes, so set to undefined instead
|
||
// https://code.google.com/p/chromium/issues/detail?id=378607
|
||
if (owner.nodeType) {
|
||
owner[this.expando] = undefined
|
||
} else {
|
||
delete owner[this.expando]
|
||
}
|
||
}
|
||
},
|
||
hasData: function (owner) {
|
||
var cache = owner[this.expando];
|
||
return cache !== undefined && !jQuery.isEmptyObject(cache)
|
||
}
|
||
};
|
||
var dataPriv = new Data;
|
||
var dataUser = new Data;
|
||
// Implementation Summary
|
||
//
|
||
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
||
// 2. Improve the module's maintainability by reducing the storage
|
||
// paths to a single mechanism.
|
||
// 3. Use the same single mechanism to support "private" and "user" data.
|
||
// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
|
||
// 5. Avoid exposing implementation details on user objects (eg. expando properties)
|
||
// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
|
||
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
|
||
function dataAttr(elem, key, data) {
|
||
var name;
|
||
// If nothing was found internally, try to fetch any
|
||
// data from the HTML5 data-* attribute
|
||
if (data === undefined && elem.nodeType === 1) {
|
||
name = 'data-' + key.replace(rmultiDash, '-$&').toLowerCase();
|
||
data = elem.getAttribute(name);
|
||
if (typeof data === 'string') {
|
||
try {
|
||
data = data === 'true' ? true : data === 'false' ? false : data === 'null' ? null : // Only convert to a number if it doesn't change the string
|
||
+data + '' === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data
|
||
} catch (e) {
|
||
}
|
||
// Make sure we set the data so it isn't changed later
|
||
dataUser.set(elem, key, data)
|
||
} else {
|
||
data = undefined
|
||
}
|
||
}
|
||
return data
|
||
}
|
||
jQuery.extend({
|
||
hasData: function (elem) {
|
||
return dataUser.hasData(elem) || dataPriv.hasData(elem)
|
||
},
|
||
data: function (elem, name, data) {
|
||
return dataUser.access(elem, name, data)
|
||
},
|
||
removeData: function (elem, name) {
|
||
dataUser.remove(elem, name)
|
||
},
|
||
// TODO: Now that all calls to _data and _removeData have been replaced
|
||
// with direct calls to dataPriv methods, these can be deprecated.
|
||
_data: function (elem, name, data) {
|
||
return dataPriv.access(elem, name, data)
|
||
},
|
||
_removeData: function (elem, name) {
|
||
dataPriv.remove(elem, name)
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
data: function (key, value) {
|
||
var i, name, data, elem = this[0], attrs = elem && elem.attributes;
|
||
// Gets all values
|
||
if (key === undefined) {
|
||
if (this.length) {
|
||
data = dataUser.get(elem);
|
||
if (elem.nodeType === 1 && !dataPriv.get(elem, 'hasDataAttrs')) {
|
||
i = attrs.length;
|
||
while (i--) {
|
||
// Support: IE11+
|
||
// The attrs elements can be null (#14894)
|
||
if (attrs[i]) {
|
||
name = attrs[i].name;
|
||
if (name.indexOf('data-') === 0) {
|
||
name = jQuery.camelCase(name.slice(5));
|
||
dataAttr(elem, name, data[name])
|
||
}
|
||
}
|
||
}
|
||
dataPriv.set(elem, 'hasDataAttrs', true)
|
||
}
|
||
}
|
||
return data
|
||
}
|
||
// Sets multiple values
|
||
if (typeof key === 'object') {
|
||
return this.each(function () {
|
||
dataUser.set(this, key)
|
||
})
|
||
}
|
||
return access(this, function (value) {
|
||
var data, camelKey;
|
||
// The calling jQuery object (element matches) is not empty
|
||
// (and therefore has an element appears at this[ 0 ]) and the
|
||
// `value` parameter was not undefined. An empty jQuery object
|
||
// will result in `undefined` for elem = this[ 0 ] which will
|
||
// throw an exception if an attempt to read a data cache is made.
|
||
if (elem && value === undefined) {
|
||
// Attempt to get data from the cache
|
||
// with the key as-is
|
||
data = dataUser.get(elem, key) || // Try to find dashed key if it exists (gh-2779)
|
||
// This is for 2.2.x only
|
||
dataUser.get(elem, key.replace(rmultiDash, '-$&').toLowerCase());
|
||
if (data !== undefined) {
|
||
return data
|
||
}
|
||
camelKey = jQuery.camelCase(key);
|
||
// Attempt to get data from the cache
|
||
// with the key camelized
|
||
data = dataUser.get(elem, camelKey);
|
||
if (data !== undefined) {
|
||
return data
|
||
}
|
||
// Attempt to "discover" the data in
|
||
// HTML5 custom data-* attrs
|
||
data = dataAttr(elem, camelKey, undefined);
|
||
if (data !== undefined) {
|
||
return data
|
||
}
|
||
// We tried really hard, but the data doesn't exist.
|
||
return
|
||
}
|
||
// Set the data...
|
||
camelKey = jQuery.camelCase(key);
|
||
this.each(function () {
|
||
// First, attempt to store a copy or reference of any
|
||
// data that might've been store with a camelCased key.
|
||
var data = dataUser.get(this, camelKey);
|
||
// For HTML5 data-* attribute interop, we have to
|
||
// store property names with dashes in a camelCase form.
|
||
// This might not apply to all properties...*
|
||
dataUser.set(this, camelKey, value);
|
||
// *... In the case of properties that might _actually_
|
||
// have dashes, we need to also store a copy of that
|
||
// unchanged property.
|
||
if (key.indexOf('-') > -1 && data !== undefined) {
|
||
dataUser.set(this, key, value)
|
||
}
|
||
})
|
||
}, null, value, arguments.length > 1, null, true)
|
||
},
|
||
removeData: function (key) {
|
||
return this.each(function () {
|
||
dataUser.remove(this, key)
|
||
})
|
||
}
|
||
});
|
||
jQuery.extend({
|
||
queue: function (elem, type, data) {
|
||
var queue;
|
||
if (elem) {
|
||
type = (type || 'fx') + 'queue';
|
||
queue = dataPriv.get(elem, type);
|
||
// Speed up dequeue by getting out quickly if this is just a lookup
|
||
if (data) {
|
||
if (!queue || jQuery.isArray(data)) {
|
||
queue = dataPriv.access(elem, type, jQuery.makeArray(data))
|
||
} else {
|
||
queue.push(data)
|
||
}
|
||
}
|
||
return queue || []
|
||
}
|
||
},
|
||
dequeue: function (elem, type) {
|
||
type = type || 'fx';
|
||
var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function () {
|
||
jQuery.dequeue(elem, type)
|
||
};
|
||
// If the fx queue is dequeued, always remove the progress sentinel
|
||
if (fn === 'inprogress') {
|
||
fn = queue.shift();
|
||
startLength--
|
||
}
|
||
if (fn) {
|
||
// Add a progress sentinel to prevent the fx queue from being
|
||
// automatically dequeued
|
||
if (type === 'fx') {
|
||
queue.unshift('inprogress')
|
||
}
|
||
// Clear up the last queue stop function
|
||
delete hooks.stop;
|
||
fn.call(elem, next, hooks)
|
||
}
|
||
if (!startLength && hooks) {
|
||
hooks.empty.fire()
|
||
}
|
||
},
|
||
// Not public - generate a queueHooks object, or return the current one
|
||
_queueHooks: function (elem, type) {
|
||
var key = type + 'queueHooks';
|
||
return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
|
||
empty: jQuery.Callbacks('once memory').add(function () {
|
||
dataPriv.remove(elem, [
|
||
type + 'queue',
|
||
key
|
||
])
|
||
})
|
||
})
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
queue: function (type, data) {
|
||
var setter = 2;
|
||
if (typeof type !== 'string') {
|
||
data = type;
|
||
type = 'fx';
|
||
setter--
|
||
}
|
||
if (arguments.length < setter) {
|
||
return jQuery.queue(this[0], type)
|
||
}
|
||
return data === undefined ? this : this.each(function () {
|
||
var queue = jQuery.queue(this, type, data);
|
||
// Ensure a hooks for this queue
|
||
jQuery._queueHooks(this, type);
|
||
if (type === 'fx' && queue[0] !== 'inprogress') {
|
||
jQuery.dequeue(this, type)
|
||
}
|
||
})
|
||
},
|
||
dequeue: function (type) {
|
||
return this.each(function () {
|
||
jQuery.dequeue(this, type)
|
||
})
|
||
},
|
||
clearQueue: function (type) {
|
||
return this.queue(type || 'fx', [])
|
||
},
|
||
// Get a promise resolved when queues of a certain type
|
||
// are emptied (fx is the type by default)
|
||
promise: function (type, obj) {
|
||
var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function () {
|
||
if (!--count) {
|
||
defer.resolveWith(elements, [elements])
|
||
}
|
||
};
|
||
if (typeof type !== 'string') {
|
||
obj = type;
|
||
type = undefined
|
||
}
|
||
type = type || 'fx';
|
||
while (i--) {
|
||
tmp = dataPriv.get(elements[i], type + 'queueHooks');
|
||
if (tmp && tmp.empty) {
|
||
count++;
|
||
tmp.empty.add(resolve)
|
||
}
|
||
}
|
||
resolve();
|
||
return defer.promise(obj)
|
||
}
|
||
});
|
||
var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
|
||
var rcssNum = new RegExp('^(?:([+-])=|)(' + pnum + ')([a-z%]*)$', 'i');
|
||
var cssExpand = [
|
||
'Top',
|
||
'Right',
|
||
'Bottom',
|
||
'Left'
|
||
];
|
||
var isHidden = function (elem, el) {
|
||
// isHidden might be called from jQuery#filter function;
|
||
// in that case, element will be second argument
|
||
elem = el || elem;
|
||
return jQuery.css(elem, 'display') === 'none' || !jQuery.contains(elem.ownerDocument, elem)
|
||
};
|
||
function adjustCSS(elem, prop, valueParts, tween) {
|
||
var adjusted, scale = 1, maxIterations = 20, currentValue = tween ? function () {
|
||
return tween.cur()
|
||
} : function () {
|
||
return jQuery.css(elem, prop, '')
|
||
}, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? '' : 'px'),
|
||
// Starting value computation is required for potential unit mismatches
|
||
initialInUnit = (jQuery.cssNumber[prop] || unit !== 'px' && +initial) && rcssNum.exec(jQuery.css(elem, prop));
|
||
if (initialInUnit && initialInUnit[3] !== unit) {
|
||
// Trust units reported by jQuery.css
|
||
unit = unit || initialInUnit[3];
|
||
// Make sure we update the tween properties later on
|
||
valueParts = valueParts || [];
|
||
// Iteratively approximate from a nonzero starting point
|
||
initialInUnit = +initial || 1;
|
||
do {
|
||
// If previous iteration zeroed out, double until we get *something*.
|
||
// Use string for doubling so we don't accidentally see scale as unchanged below
|
||
scale = scale || '.5';
|
||
// Adjust and apply
|
||
initialInUnit = initialInUnit / scale;
|
||
jQuery.style(elem, prop, initialInUnit + unit) // Update scale, tolerating zero or NaN from tween.cur()
|
||
// Break the loop if scale is unchanged or perfect, or if we've just had enough.
|
||
} while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations)
|
||
}
|
||
if (valueParts) {
|
||
initialInUnit = +initialInUnit || +initial || 0;
|
||
// Apply relative offset (+=/-=) if specified
|
||
adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
|
||
if (tween) {
|
||
tween.unit = unit;
|
||
tween.start = initialInUnit;
|
||
tween.end = adjusted
|
||
}
|
||
}
|
||
return adjusted
|
||
}
|
||
var rcheckableType = /^(?:checkbox|radio)$/i;
|
||
var rtagName = /<([\w:-]+)/;
|
||
var rscriptType = /^$|\/(?:java|ecma)script/i;
|
||
// We have to close these tags to support XHTML (#13200)
|
||
var wrapMap = {
|
||
// Support: IE9
|
||
option: [
|
||
1,
|
||
"<select multiple='multiple'>",
|
||
'</select>'
|
||
],
|
||
// XHTML parsers do not magically insert elements in the
|
||
// same way that tag soup parsers do. So we cannot shorten
|
||
// this by omitting <tbody> or other required elements.
|
||
thead: [
|
||
1,
|
||
'<table>',
|
||
'</table>'
|
||
],
|
||
col: [
|
||
2,
|
||
'<table><colgroup>',
|
||
'</colgroup></table>'
|
||
],
|
||
tr: [
|
||
2,
|
||
'<table><tbody>',
|
||
'</tbody></table>'
|
||
],
|
||
td: [
|
||
3,
|
||
'<table><tbody><tr>',
|
||
'</tr></tbody></table>'
|
||
],
|
||
_default: [
|
||
0,
|
||
'',
|
||
''
|
||
]
|
||
};
|
||
// Support: IE9
|
||
wrapMap.optgroup = wrapMap.option;
|
||
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
||
wrapMap.th = wrapMap.td;
|
||
function getAll(context, tag) {
|
||
// Support: IE9-11+
|
||
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
|
||
var ret = typeof context.getElementsByTagName !== 'undefined' ? context.getElementsByTagName(tag || '*') : typeof context.querySelectorAll !== 'undefined' ? context.querySelectorAll(tag || '*') : [];
|
||
return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret
|
||
}
|
||
// Mark scripts as having already been evaluated
|
||
function setGlobalEval(elems, refElements) {
|
||
var i = 0, l = elems.length;
|
||
for (; i < l; i++) {
|
||
dataPriv.set(elems[i], 'globalEval', !refElements || dataPriv.get(refElements[i], 'globalEval'))
|
||
}
|
||
}
|
||
var rhtml = /<|&#?\w+;/;
|
||
function buildFragment(elems, context, scripts, selection, ignored) {
|
||
var elem, tmp, tag, wrap, contains, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length;
|
||
for (; i < l; i++) {
|
||
elem = elems[i];
|
||
if (elem || elem === 0) {
|
||
// Add nodes directly
|
||
if (jQuery.type(elem) === 'object') {
|
||
// Support: Android<4.1, PhantomJS<2
|
||
// push.apply(_, arraylike) throws on ancient WebKit
|
||
jQuery.merge(nodes, elem.nodeType ? [elem] : elem) // Convert non-html into a text node
|
||
} else if (!rhtml.test(elem)) {
|
||
nodes.push(context.createTextNode(elem)) // Convert html into DOM nodes
|
||
} else {
|
||
tmp = tmp || fragment.appendChild(context.createElement('div'));
|
||
// Deserialize a standard representation
|
||
tag = (rtagName.exec(elem) || [
|
||
'',
|
||
''
|
||
])[1].toLowerCase();
|
||
wrap = wrapMap[tag] || wrapMap._default;
|
||
tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
|
||
// Descend through wrappers to the right content
|
||
j = wrap[0];
|
||
while (j--) {
|
||
tmp = tmp.lastChild
|
||
}
|
||
// Support: Android<4.1, PhantomJS<2
|
||
// push.apply(_, arraylike) throws on ancient WebKit
|
||
jQuery.merge(nodes, tmp.childNodes);
|
||
// Remember the top-level container
|
||
tmp = fragment.firstChild;
|
||
// Ensure the created nodes are orphaned (#12392)
|
||
tmp.textContent = ''
|
||
}
|
||
}
|
||
}
|
||
// Remove wrapper from fragment
|
||
fragment.textContent = '';
|
||
i = 0;
|
||
while (elem = nodes[i++]) {
|
||
// Skip elements already in the context collection (trac-4087)
|
||
if (selection && jQuery.inArray(elem, selection) > -1) {
|
||
if (ignored) {
|
||
ignored.push(elem)
|
||
}
|
||
continue
|
||
}
|
||
contains = jQuery.contains(elem.ownerDocument, elem);
|
||
// Append to fragment
|
||
tmp = getAll(fragment.appendChild(elem), 'script');
|
||
// Preserve script evaluation history
|
||
if (contains) {
|
||
setGlobalEval(tmp)
|
||
}
|
||
// Capture executables
|
||
if (scripts) {
|
||
j = 0;
|
||
while (elem = tmp[j++]) {
|
||
if (rscriptType.test(elem.type || '')) {
|
||
scripts.push(elem)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return fragment
|
||
}
|
||
(function () {
|
||
var fragment = document.createDocumentFragment(), div = fragment.appendChild(document.createElement('div')), input = document.createElement('input');
|
||
// Support: Android 4.0-4.3, Safari<=5.1
|
||
// Check state lost if the name is set (#11217)
|
||
// Support: Windows Web Apps (WWA)
|
||
// `name` and `type` must use .setAttribute for WWA (#14901)
|
||
input.setAttribute('type', 'radio');
|
||
input.setAttribute('checked', 'checked');
|
||
input.setAttribute('name', 't');
|
||
div.appendChild(input);
|
||
// Support: Safari<=5.1, Android<4.2
|
||
// Older WebKit doesn't clone checked state correctly in fragments
|
||
support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
|
||
// Support: IE<=11+
|
||
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
||
div.innerHTML = '<textarea>x</textarea>';
|
||
support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue
|
||
}());
|
||
var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
||
function returnTrue() {
|
||
return true
|
||
}
|
||
function returnFalse() {
|
||
return false
|
||
}
|
||
// Support: IE9
|
||
// See #13393 for more info
|
||
function safeActiveElement() {
|
||
try {
|
||
return document.activeElement
|
||
} catch (err) {
|
||
}
|
||
}
|
||
function on(elem, types, selector, data, fn, one) {
|
||
var origFn, type;
|
||
// Types can be a map of types/handlers
|
||
if (typeof types === 'object') {
|
||
// ( types-Object, selector, data )
|
||
if (typeof selector !== 'string') {
|
||
// ( types-Object, data )
|
||
data = data || selector;
|
||
selector = undefined
|
||
}
|
||
for (type in types) {
|
||
on(elem, type, selector, data, types[type], one)
|
||
}
|
||
return elem
|
||
}
|
||
if (data == null && fn == null) {
|
||
// ( types, fn )
|
||
fn = selector;
|
||
data = selector = undefined
|
||
} else if (fn == null) {
|
||
if (typeof selector === 'string') {
|
||
// ( types, selector, fn )
|
||
fn = data;
|
||
data = undefined
|
||
} else {
|
||
// ( types, data, fn )
|
||
fn = data;
|
||
data = selector;
|
||
selector = undefined
|
||
}
|
||
}
|
||
if (fn === false) {
|
||
fn = returnFalse
|
||
} else if (!fn) {
|
||
return elem
|
||
}
|
||
if (one === 1) {
|
||
origFn = fn;
|
||
fn = function (event) {
|
||
// Can use an empty set, since event contains the info
|
||
jQuery().off(event);
|
||
return origFn.apply(this, arguments)
|
||
};
|
||
// Use same guid so caller can remove using origFn
|
||
fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)
|
||
}
|
||
return elem.each(function () {
|
||
jQuery.event.add(this, types, fn, data, selector)
|
||
})
|
||
}
|
||
/*
|
||
* Helper functions for managing events -- not part of the public interface.
|
||
* Props to Dean Edwards' addEvent library for many of the ideas.
|
||
*/
|
||
jQuery.event = {
|
||
global: {},
|
||
add: function (elem, types, handler, data, selector) {
|
||
var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem);
|
||
// Don't attach events to noData or text/comment nodes (but allow plain objects)
|
||
if (!elemData) {
|
||
return
|
||
}
|
||
// Caller can pass in an object of custom data in lieu of the handler
|
||
if (handler.handler) {
|
||
handleObjIn = handler;
|
||
handler = handleObjIn.handler;
|
||
selector = handleObjIn.selector
|
||
}
|
||
// Make sure that the handler has a unique ID, used to find/remove it later
|
||
if (!handler.guid) {
|
||
handler.guid = jQuery.guid++
|
||
}
|
||
// Init the element's event structure and main handler, if this is the first
|
||
if (!(events = elemData.events)) {
|
||
events = elemData.events = {}
|
||
}
|
||
if (!(eventHandle = elemData.handle)) {
|
||
eventHandle = elemData.handle = function (e) {
|
||
// Discard the second event of a jQuery.event.trigger() and
|
||
// when an event is called after a page has unloaded
|
||
return typeof jQuery !== 'undefined' && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined
|
||
}
|
||
}
|
||
// Handle multiple events separated by a space
|
||
types = (types || '').match(rnotwhite) || [''];
|
||
t = types.length;
|
||
while (t--) {
|
||
tmp = rtypenamespace.exec(types[t]) || [];
|
||
type = origType = tmp[1];
|
||
namespaces = (tmp[2] || '').split('.').sort();
|
||
// There *must* be a type, no attaching namespace-only handlers
|
||
if (!type) {
|
||
continue
|
||
}
|
||
// If event changes its type, use the special event handlers for the changed type
|
||
special = jQuery.event.special[type] || {};
|
||
// If selector defined, determine special event api type, otherwise given type
|
||
type = (selector ? special.delegateType : special.bindType) || type;
|
||
// Update special based on newly reset type
|
||
special = jQuery.event.special[type] || {};
|
||
// handleObj is passed to all event handlers
|
||
handleObj = jQuery.extend({
|
||
type: type,
|
||
origType: origType,
|
||
data: data,
|
||
handler: handler,
|
||
guid: handler.guid,
|
||
selector: selector,
|
||
needsContext: selector && jQuery.expr.match.needsContext.test(selector),
|
||
namespace: namespaces.join('.')
|
||
}, handleObjIn);
|
||
// Init the event handler queue if we're the first
|
||
if (!(handlers = events[type])) {
|
||
handlers = events[type] = [];
|
||
handlers.delegateCount = 0;
|
||
// Only use addEventListener if the special events handler returns false
|
||
if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
|
||
if (elem.addEventListener) {
|
||
elem.addEventListener(type, eventHandle)
|
||
}
|
||
}
|
||
}
|
||
if (special.add) {
|
||
special.add.call(elem, handleObj);
|
||
if (!handleObj.handler.guid) {
|
||
handleObj.handler.guid = handler.guid
|
||
}
|
||
}
|
||
// Add to the element's handler list, delegates in front
|
||
if (selector) {
|
||
handlers.splice(handlers.delegateCount++, 0, handleObj)
|
||
} else {
|
||
handlers.push(handleObj)
|
||
}
|
||
// Keep track of which events have ever been used, for event optimization
|
||
jQuery.event.global[type] = true
|
||
}
|
||
},
|
||
// Detach an event or set of events from an element
|
||
remove: function (elem, types, handler, selector, mappedTypes) {
|
||
var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
|
||
if (!elemData || !(events = elemData.events)) {
|
||
return
|
||
}
|
||
// Once for each type.namespace in types; type may be omitted
|
||
types = (types || '').match(rnotwhite) || [''];
|
||
t = types.length;
|
||
while (t--) {
|
||
tmp = rtypenamespace.exec(types[t]) || [];
|
||
type = origType = tmp[1];
|
||
namespaces = (tmp[2] || '').split('.').sort();
|
||
// Unbind all events (on this namespace, if provided) for the element
|
||
if (!type) {
|
||
for (type in events) {
|
||
jQuery.event.remove(elem, type + types[t], handler, selector, true)
|
||
}
|
||
continue
|
||
}
|
||
special = jQuery.event.special[type] || {};
|
||
type = (selector ? special.delegateType : special.bindType) || type;
|
||
handlers = events[type] || [];
|
||
tmp = tmp[2] && new RegExp('(^|\\.)' + namespaces.join('\\.(?:.*\\.|)') + '(\\.|$)');
|
||
// Remove matching events
|
||
origCount = j = handlers.length;
|
||
while (j--) {
|
||
handleObj = handlers[j];
|
||
if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === '**' && handleObj.selector)) {
|
||
handlers.splice(j, 1);
|
||
if (handleObj.selector) {
|
||
handlers.delegateCount--
|
||
}
|
||
if (special.remove) {
|
||
special.remove.call(elem, handleObj)
|
||
}
|
||
}
|
||
}
|
||
// Remove generic event handler if we removed something and no more handlers exist
|
||
// (avoids potential for endless recursion during removal of special event handlers)
|
||
if (origCount && !handlers.length) {
|
||
if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
|
||
jQuery.removeEvent(elem, type, elemData.handle)
|
||
}
|
||
delete events[type]
|
||
}
|
||
}
|
||
// Remove data and the expando if it's no longer used
|
||
if (jQuery.isEmptyObject(events)) {
|
||
dataPriv.remove(elem, 'handle events')
|
||
}
|
||
},
|
||
dispatch: function (event) {
|
||
// Make a writable jQuery.Event from the native event object
|
||
event = jQuery.event.fix(event);
|
||
var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call(arguments), handlers = (dataPriv.get(this, 'events') || {})[event.type] || [], special = jQuery.event.special[event.type] || {};
|
||
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||
args[0] = event;
|
||
event.delegateTarget = this;
|
||
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
||
if (special.preDispatch && special.preDispatch.call(this, event) === false) {
|
||
return
|
||
}
|
||
// Determine handlers
|
||
handlerQueue = jQuery.event.handlers.call(this, event, handlers);
|
||
// Run delegates first; they may want to stop propagation beneath us
|
||
i = 0;
|
||
while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
|
||
event.currentTarget = matched.elem;
|
||
j = 0;
|
||
while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
|
||
// Triggered event must either 1) have no namespace, or 2) have namespace(s)
|
||
// a subset or equal to those in the bound event (both can have no namespace).
|
||
if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {
|
||
event.handleObj = handleObj;
|
||
event.data = handleObj.data;
|
||
ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
|
||
if (ret !== undefined) {
|
||
if ((event.result = ret) === false) {
|
||
event.preventDefault();
|
||
event.stopPropagation()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Call the postDispatch hook for the mapped type
|
||
if (special.postDispatch) {
|
||
special.postDispatch.call(this, event)
|
||
}
|
||
return event.result
|
||
},
|
||
handlers: function (event, handlers) {
|
||
var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
|
||
// Support (at least): Chrome, IE9
|
||
// Find delegate handlers
|
||
// Black-hole SVG <use> instance trees (#13180)
|
||
//
|
||
// Support: Firefox<=42+
|
||
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
|
||
if (delegateCount && cur.nodeType && (event.type !== 'click' || isNaN(event.button) || event.button < 1)) {
|
||
for (; cur !== this; cur = cur.parentNode || this) {
|
||
// Don't check non-elements (#13208)
|
||
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
||
if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== 'click')) {
|
||
matches = [];
|
||
for (i = 0; i < delegateCount; i++) {
|
||
handleObj = handlers[i];
|
||
// Don't conflict with Object.prototype properties (#13203)
|
||
sel = handleObj.selector + ' ';
|
||
if (matches[sel] === undefined) {
|
||
matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length
|
||
}
|
||
if (matches[sel]) {
|
||
matches.push(handleObj)
|
||
}
|
||
}
|
||
if (matches.length) {
|
||
handlerQueue.push({
|
||
elem: cur,
|
||
handlers: matches
|
||
})
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Add the remaining (directly-bound) handlers
|
||
if (delegateCount < handlers.length) {
|
||
handlerQueue.push({
|
||
elem: this,
|
||
handlers: handlers.slice(delegateCount)
|
||
})
|
||
}
|
||
return handlerQueue
|
||
},
|
||
// Includes some event props shared by KeyEvent and MouseEvent
|
||
props: ('altKey bubbles cancelable ctrlKey currentTarget detail eventPhase ' + 'metaKey relatedTarget shiftKey target timeStamp view which').split(' '),
|
||
fixHooks: {},
|
||
keyHooks: {
|
||
props: 'char charCode key keyCode'.split(' '),
|
||
filter: function (event, original) {
|
||
// Add which for key events
|
||
if (event.which == null) {
|
||
event.which = original.charCode != null ? original.charCode : original.keyCode
|
||
}
|
||
return event
|
||
}
|
||
},
|
||
mouseHooks: {
|
||
props: ('button buttons clientX clientY offsetX offsetY pageX pageY ' + 'screenX screenY toElement').split(' '),
|
||
filter: function (event, original) {
|
||
var eventDoc, doc, body, button = original.button;
|
||
// Calculate pageX/Y if missing and clientX/Y available
|
||
if (event.pageX == null && original.clientX != null) {
|
||
eventDoc = event.target.ownerDocument || document;
|
||
doc = eventDoc.documentElement;
|
||
body = eventDoc.body;
|
||
event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
|
||
event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0)
|
||
}
|
||
// Add which for click: 1 === left; 2 === middle; 3 === right
|
||
// Note: button is not normalized, so don't use it
|
||
if (!event.which && button !== undefined) {
|
||
event.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0
|
||
}
|
||
return event
|
||
}
|
||
},
|
||
fix: function (event) {
|
||
if (event[jQuery.expando]) {
|
||
return event
|
||
}
|
||
// Create a writable copy of the event object and normalize some properties
|
||
var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[type];
|
||
if (!fixHook) {
|
||
this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {}
|
||
}
|
||
copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;
|
||
event = new jQuery.Event(originalEvent);
|
||
i = copy.length;
|
||
while (i--) {
|
||
prop = copy[i];
|
||
event[prop] = originalEvent[prop]
|
||
}
|
||
// Support: Cordova 2.5 (WebKit) (#13255)
|
||
// All events should have a target; Cordova deviceready doesn't
|
||
if (!event.target) {
|
||
event.target = document
|
||
}
|
||
// Support: Safari 6.0+, Chrome<28
|
||
// Target should not be a text node (#504, #13143)
|
||
if (event.target.nodeType === 3) {
|
||
event.target = event.target.parentNode
|
||
}
|
||
return fixHook.filter ? fixHook.filter(event, originalEvent) : event
|
||
},
|
||
special: {
|
||
load: {
|
||
// Prevent triggered image.load events from bubbling to window.load
|
||
noBubble: true
|
||
},
|
||
focus: {
|
||
// Fire native event if possible so blur/focus sequence is correct
|
||
trigger: function () {
|
||
if (this !== safeActiveElement() && this.focus) {
|
||
this.focus();
|
||
return false
|
||
}
|
||
},
|
||
delegateType: 'focusin'
|
||
},
|
||
blur: {
|
||
trigger: function () {
|
||
if (this === safeActiveElement() && this.blur) {
|
||
this.blur();
|
||
return false
|
||
}
|
||
},
|
||
delegateType: 'focusout'
|
||
},
|
||
click: {
|
||
// For checkbox, fire native event so checked state will be right
|
||
trigger: function () {
|
||
if (this.type === 'checkbox' && this.click && jQuery.nodeName(this, 'input')) {
|
||
this.click();
|
||
return false
|
||
}
|
||
},
|
||
// For cross-browser consistency, don't fire native .click() on links
|
||
_default: function (event) {
|
||
return jQuery.nodeName(event.target, 'a')
|
||
}
|
||
},
|
||
beforeunload: {
|
||
postDispatch: function (event) {
|
||
// Support: Firefox 20+
|
||
// Firefox doesn't alert if the returnValue field is not set.
|
||
if (event.result !== undefined && event.originalEvent) {
|
||
event.originalEvent.returnValue = event.result
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
jQuery.removeEvent = function (elem, type, handle) {
|
||
// This "if" is needed for plain objects
|
||
if (elem.removeEventListener) {
|
||
elem.removeEventListener(type, handle)
|
||
}
|
||
};
|
||
jQuery.Event = function (src, props) {
|
||
// Allow instantiation without the 'new' keyword
|
||
if (!(this instanceof jQuery.Event)) {
|
||
return new jQuery.Event(src, props)
|
||
}
|
||
// Event object
|
||
if (src && src.type) {
|
||
this.originalEvent = src;
|
||
this.type = src.type;
|
||
// Events bubbling up the document may have been marked as prevented
|
||
// by a handler lower down the tree; reflect the correct value.
|
||
this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android<4.0
|
||
src.returnValue === false ? returnTrue : returnFalse // Event type
|
||
} else {
|
||
this.type = src
|
||
}
|
||
// Put explicitly provided properties onto the event object
|
||
if (props) {
|
||
jQuery.extend(this, props)
|
||
}
|
||
// Create a timestamp if incoming event doesn't have one
|
||
this.timeStamp = src && src.timeStamp || jQuery.now();
|
||
// Mark it as fixed
|
||
this[jQuery.expando] = true
|
||
};
|
||
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
||
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||
jQuery.Event.prototype = {
|
||
constructor: jQuery.Event,
|
||
isDefaultPrevented: returnFalse,
|
||
isPropagationStopped: returnFalse,
|
||
isImmediatePropagationStopped: returnFalse,
|
||
preventDefault: function () {
|
||
var e = this.originalEvent;
|
||
this.isDefaultPrevented = returnTrue;
|
||
if (e) {
|
||
e.preventDefault()
|
||
}
|
||
},
|
||
stopPropagation: function () {
|
||
var e = this.originalEvent;
|
||
this.isPropagationStopped = returnTrue;
|
||
if (e) {
|
||
e.stopPropagation()
|
||
}
|
||
},
|
||
stopImmediatePropagation: function () {
|
||
var e = this.originalEvent;
|
||
this.isImmediatePropagationStopped = returnTrue;
|
||
if (e) {
|
||
e.stopImmediatePropagation()
|
||
}
|
||
this.stopPropagation()
|
||
}
|
||
};
|
||
// Create mouseenter/leave events using mouseover/out and event-time checks
|
||
// so that event delegation works in jQuery.
|
||
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
||
//
|
||
// Support: Safari 7 only
|
||
// Safari sends mouseenter too often; see:
|
||
// https://code.google.com/p/chromium/issues/detail?id=470258
|
||
// for the description of the bug (it existed in older Chrome versions as well).
|
||
jQuery.each({
|
||
mouseenter: 'mouseover',
|
||
mouseleave: 'mouseout',
|
||
pointerenter: 'pointerover',
|
||
pointerleave: 'pointerout'
|
||
}, function (orig, fix) {
|
||
jQuery.event.special[orig] = {
|
||
delegateType: fix,
|
||
bindType: fix,
|
||
handle: function (event) {
|
||
var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
|
||
// For mouseenter/leave call the handler if related is outside the target.
|
||
// NB: No relatedTarget if the mouse left/entered the browser window
|
||
if (!related || related !== target && !jQuery.contains(target, related)) {
|
||
event.type = handleObj.origType;
|
||
ret = handleObj.handler.apply(this, arguments);
|
||
event.type = fix
|
||
}
|
||
return ret
|
||
}
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
on: function (types, selector, data, fn) {
|
||
return on(this, types, selector, data, fn)
|
||
},
|
||
one: function (types, selector, data, fn) {
|
||
return on(this, types, selector, data, fn, 1)
|
||
},
|
||
off: function (types, selector, fn) {
|
||
var handleObj, type;
|
||
if (types && types.preventDefault && types.handleObj) {
|
||
// ( event ) dispatched jQuery.Event
|
||
handleObj = types.handleObj;
|
||
jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + '.' + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
|
||
return this
|
||
}
|
||
if (typeof types === 'object') {
|
||
// ( types-object [, selector] )
|
||
for (type in types) {
|
||
this.off(type, selector, types[type])
|
||
}
|
||
return this
|
||
}
|
||
if (selector === false || typeof selector === 'function') {
|
||
// ( types [, fn] )
|
||
fn = selector;
|
||
selector = undefined
|
||
}
|
||
if (fn === false) {
|
||
fn = returnFalse
|
||
}
|
||
return this.each(function () {
|
||
jQuery.event.remove(this, types, fn, selector)
|
||
})
|
||
}
|
||
});
|
||
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
|
||
// Support: IE 10-11, Edge 10240+
|
||
// In IE/Edge using regex groups here causes severe slowdowns.
|
||
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
||
rnoInnerhtml = /<script|<style|<link/i,
|
||
// checked="checked" or checked
|
||
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
||
// Manipulating tables requires a tbody
|
||
function manipulationTarget(elem, content) {
|
||
return jQuery.nodeName(elem, 'table') && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, 'tr') ? elem.getElementsByTagName('tbody')[0] || elem.appendChild(elem.ownerDocument.createElement('tbody')) : elem
|
||
}
|
||
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
||
function disableScript(elem) {
|
||
elem.type = (elem.getAttribute('type') !== null) + '/' + elem.type;
|
||
return elem
|
||
}
|
||
function restoreScript(elem) {
|
||
var match = rscriptTypeMasked.exec(elem.type);
|
||
if (match) {
|
||
elem.type = match[1]
|
||
} else {
|
||
elem.removeAttribute('type')
|
||
}
|
||
return elem
|
||
}
|
||
function cloneCopyEvent(src, dest) {
|
||
var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
|
||
if (dest.nodeType !== 1) {
|
||
return
|
||
}
|
||
// 1. Copy private data: events, handlers, etc.
|
||
if (dataPriv.hasData(src)) {
|
||
pdataOld = dataPriv.access(src);
|
||
pdataCur = dataPriv.set(dest, pdataOld);
|
||
events = pdataOld.events;
|
||
if (events) {
|
||
delete pdataCur.handle;
|
||
pdataCur.events = {};
|
||
for (type in events) {
|
||
for (i = 0, l = events[type].length; i < l; i++) {
|
||
jQuery.event.add(dest, type, events[type][i])
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 2. Copy user data
|
||
if (dataUser.hasData(src)) {
|
||
udataOld = dataUser.access(src);
|
||
udataCur = jQuery.extend({}, udataOld);
|
||
dataUser.set(dest, udataCur)
|
||
}
|
||
}
|
||
// Fix IE bugs, see support tests
|
||
function fixInput(src, dest) {
|
||
var nodeName = dest.nodeName.toLowerCase();
|
||
// Fails to persist the checked state of a cloned checkbox or radio button.
|
||
if (nodeName === 'input' && rcheckableType.test(src.type)) {
|
||
dest.checked = src.checked // Fails to return the selected option to the default selected state when cloning options
|
||
} else if (nodeName === 'input' || nodeName === 'textarea') {
|
||
dest.defaultValue = src.defaultValue
|
||
}
|
||
}
|
||
function domManip(collection, args, callback, ignored) {
|
||
// Flatten any nested arrays
|
||
args = concat.apply([], args);
|
||
var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], isFunction = jQuery.isFunction(value);
|
||
// We can't cloneNode fragments that contain checked, in WebKit
|
||
if (isFunction || l > 1 && typeof value === 'string' && !support.checkClone && rchecked.test(value)) {
|
||
return collection.each(function (index) {
|
||
var self = collection.eq(index);
|
||
if (isFunction) {
|
||
args[0] = value.call(this, index, self.html())
|
||
}
|
||
domManip(self, args, callback, ignored)
|
||
})
|
||
}
|
||
if (l) {
|
||
fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
|
||
first = fragment.firstChild;
|
||
if (fragment.childNodes.length === 1) {
|
||
fragment = first
|
||
}
|
||
// Require either new content or an interest in ignored elements to invoke the callback
|
||
if (first || ignored) {
|
||
scripts = jQuery.map(getAll(fragment, 'script'), disableScript);
|
||
hasScripts = scripts.length;
|
||
// Use the original fragment for the last item
|
||
// instead of the first because it can end up
|
||
// being emptied incorrectly in certain situations (#8070).
|
||
for (; i < l; i++) {
|
||
node = fragment;
|
||
if (i !== iNoClone) {
|
||
node = jQuery.clone(node, true, true);
|
||
// Keep references to cloned scripts for later restoration
|
||
if (hasScripts) {
|
||
// Support: Android<4.1, PhantomJS<2
|
||
// push.apply(_, arraylike) throws on ancient WebKit
|
||
jQuery.merge(scripts, getAll(node, 'script'))
|
||
}
|
||
}
|
||
callback.call(collection[i], node, i)
|
||
}
|
||
if (hasScripts) {
|
||
doc = scripts[scripts.length - 1].ownerDocument;
|
||
// Reenable scripts
|
||
jQuery.map(scripts, restoreScript);
|
||
// Evaluate executable scripts on first document insertion
|
||
for (i = 0; i < hasScripts; i++) {
|
||
node = scripts[i];
|
||
if (rscriptType.test(node.type || '') && !dataPriv.access(node, 'globalEval') && jQuery.contains(doc, node)) {
|
||
if (node.src) {
|
||
// Optional AJAX dependency, but won't run scripts if not present
|
||
if (jQuery._evalUrl) {
|
||
jQuery._evalUrl(node.src)
|
||
}
|
||
} else {
|
||
jQuery.globalEval(node.textContent.replace(rcleanScript, ''))
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return collection
|
||
}
|
||
function remove(elem, selector, keepData) {
|
||
var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0;
|
||
for (; (node = nodes[i]) != null; i++) {
|
||
if (!keepData && node.nodeType === 1) {
|
||
jQuery.cleanData(getAll(node))
|
||
}
|
||
if (node.parentNode) {
|
||
if (keepData && jQuery.contains(node.ownerDocument, node)) {
|
||
setGlobalEval(getAll(node, 'script'))
|
||
}
|
||
node.parentNode.removeChild(node)
|
||
}
|
||
}
|
||
return elem
|
||
}
|
||
jQuery.extend({
|
||
htmlPrefilter: function (html) {
|
||
return html.replace(rxhtmlTag, '<$1></$2>')
|
||
},
|
||
clone: function (elem, dataAndEvents, deepDataAndEvents) {
|
||
var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = jQuery.contains(elem.ownerDocument, elem);
|
||
// Fix IE cloning issues
|
||
if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
|
||
// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
|
||
destElements = getAll(clone);
|
||
srcElements = getAll(elem);
|
||
for (i = 0, l = srcElements.length; i < l; i++) {
|
||
fixInput(srcElements[i], destElements[i])
|
||
}
|
||
}
|
||
// Copy the events from the original to the clone
|
||
if (dataAndEvents) {
|
||
if (deepDataAndEvents) {
|
||
srcElements = srcElements || getAll(elem);
|
||
destElements = destElements || getAll(clone);
|
||
for (i = 0, l = srcElements.length; i < l; i++) {
|
||
cloneCopyEvent(srcElements[i], destElements[i])
|
||
}
|
||
} else {
|
||
cloneCopyEvent(elem, clone)
|
||
}
|
||
}
|
||
// Preserve script evaluation history
|
||
destElements = getAll(clone, 'script');
|
||
if (destElements.length > 0) {
|
||
setGlobalEval(destElements, !inPage && getAll(elem, 'script'))
|
||
}
|
||
// Return the cloned set
|
||
return clone
|
||
},
|
||
cleanData: function (elems) {
|
||
var data, elem, type, special = jQuery.event.special, i = 0;
|
||
for (; (elem = elems[i]) !== undefined; i++) {
|
||
if (acceptData(elem)) {
|
||
if (data = elem[dataPriv.expando]) {
|
||
if (data.events) {
|
||
for (type in data.events) {
|
||
if (special[type]) {
|
||
jQuery.event.remove(elem, type) // This is a shortcut to avoid jQuery.event.remove's overhead
|
||
} else {
|
||
jQuery.removeEvent(elem, type, data.handle)
|
||
}
|
||
}
|
||
}
|
||
// Support: Chrome <= 35-45+
|
||
// Assign undefined instead of using delete, see Data#remove
|
||
elem[dataPriv.expando] = undefined
|
||
}
|
||
if (elem[dataUser.expando]) {
|
||
// Support: Chrome <= 35-45+
|
||
// Assign undefined instead of using delete, see Data#remove
|
||
elem[dataUser.expando] = undefined
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
// Keep domManip exposed until 3.0 (gh-2225)
|
||
domManip: domManip,
|
||
detach: function (selector) {
|
||
return remove(this, selector, true)
|
||
},
|
||
remove: function (selector) {
|
||
return remove(this, selector)
|
||
},
|
||
text: function (value) {
|
||
return access(this, function (value) {
|
||
return value === undefined ? jQuery.text(this) : this.empty().each(function () {
|
||
if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
|
||
this.textContent = value
|
||
}
|
||
})
|
||
}, null, value, arguments.length)
|
||
},
|
||
append: function () {
|
||
return domManip(this, arguments, function (elem) {
|
||
if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
|
||
var target = manipulationTarget(this, elem);
|
||
target.appendChild(elem)
|
||
}
|
||
})
|
||
},
|
||
prepend: function () {
|
||
return domManip(this, arguments, function (elem) {
|
||
if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
|
||
var target = manipulationTarget(this, elem);
|
||
target.insertBefore(elem, target.firstChild)
|
||
}
|
||
})
|
||
},
|
||
before: function () {
|
||
return domManip(this, arguments, function (elem) {
|
||
if (this.parentNode) {
|
||
this.parentNode.insertBefore(elem, this)
|
||
}
|
||
})
|
||
},
|
||
after: function () {
|
||
return domManip(this, arguments, function (elem) {
|
||
if (this.parentNode) {
|
||
this.parentNode.insertBefore(elem, this.nextSibling)
|
||
}
|
||
})
|
||
},
|
||
empty: function () {
|
||
var elem, i = 0;
|
||
for (; (elem = this[i]) != null; i++) {
|
||
if (elem.nodeType === 1) {
|
||
// Prevent memory leaks
|
||
jQuery.cleanData(getAll(elem, false));
|
||
// Remove any remaining nodes
|
||
elem.textContent = ''
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
clone: function (dataAndEvents, deepDataAndEvents) {
|
||
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
||
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
||
return this.map(function () {
|
||
return jQuery.clone(this, dataAndEvents, deepDataAndEvents)
|
||
})
|
||
},
|
||
html: function (value) {
|
||
return access(this, function (value) {
|
||
var elem = this[0] || {}, i = 0, l = this.length;
|
||
if (value === undefined && elem.nodeType === 1) {
|
||
return elem.innerHTML
|
||
}
|
||
// See if we can take a shortcut and just use innerHTML
|
||
if (typeof value === 'string' && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [
|
||
'',
|
||
''
|
||
])[1].toLowerCase()]) {
|
||
value = jQuery.htmlPrefilter(value);
|
||
try {
|
||
for (; i < l; i++) {
|
||
elem = this[i] || {};
|
||
// Remove element nodes and prevent memory leaks
|
||
if (elem.nodeType === 1) {
|
||
jQuery.cleanData(getAll(elem, false));
|
||
elem.innerHTML = value
|
||
}
|
||
}
|
||
elem = 0 // If using innerHTML throws an exception, use the fallback method
|
||
} catch (e) {
|
||
}
|
||
}
|
||
if (elem) {
|
||
this.empty().append(value)
|
||
}
|
||
}, null, value, arguments.length)
|
||
},
|
||
replaceWith: function () {
|
||
var ignored = [];
|
||
// Make the changes, replacing each non-ignored context element with the new content
|
||
return domManip(this, arguments, function (elem) {
|
||
var parent = this.parentNode;
|
||
if (jQuery.inArray(this, ignored) < 0) {
|
||
jQuery.cleanData(getAll(this));
|
||
if (parent) {
|
||
parent.replaceChild(elem, this)
|
||
}
|
||
} // Force callback invocation
|
||
}, ignored)
|
||
}
|
||
});
|
||
jQuery.each({
|
||
appendTo: 'append',
|
||
prependTo: 'prepend',
|
||
insertBefore: 'before',
|
||
insertAfter: 'after',
|
||
replaceAll: 'replaceWith'
|
||
}, function (name, original) {
|
||
jQuery.fn[name] = function (selector) {
|
||
var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0;
|
||
for (; i <= last; i++) {
|
||
elems = i === last ? this : this.clone(true);
|
||
jQuery(insert[i])[original](elems);
|
||
// Support: QtWebKit
|
||
// .get() because push.apply(_, arraylike) throws
|
||
push.apply(ret, elems.get())
|
||
}
|
||
return this.pushStack(ret)
|
||
}
|
||
});
|
||
var iframe, elemdisplay = {
|
||
// Support: Firefox
|
||
// We have to pre-define these values for FF (#10227)
|
||
HTML: 'block',
|
||
BODY: 'block'
|
||
};
|
||
/**
|
||
* Retrieve the actual display of a element
|
||
* @param {String} name nodeName of the element
|
||
* @param {Object} doc Document object
|
||
*/
|
||
// Called only from within defaultDisplay
|
||
function actualDisplay(name, doc) {
|
||
var elem = jQuery(doc.createElement(name)).appendTo(doc.body), display = jQuery.css(elem[0], 'display');
|
||
// We don't have any data stored on the element,
|
||
// so use "detach" method as fast way to get rid of the element
|
||
elem.detach();
|
||
return display
|
||
}
|
||
/**
|
||
* Try to determine the default display value of an element
|
||
* @param {String} nodeName
|
||
*/
|
||
function defaultDisplay(nodeName) {
|
||
var doc = document, display = elemdisplay[nodeName];
|
||
if (!display) {
|
||
display = actualDisplay(nodeName, doc);
|
||
// If the simple way fails, read from inside an iframe
|
||
if (display === 'none' || !display) {
|
||
// Use the already-created iframe if possible
|
||
iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement);
|
||
// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
|
||
doc = iframe[0].contentDocument;
|
||
// Support: IE
|
||
doc.write();
|
||
doc.close();
|
||
display = actualDisplay(nodeName, doc);
|
||
iframe.detach()
|
||
}
|
||
// Store the correct default display
|
||
elemdisplay[nodeName] = display
|
||
}
|
||
return display
|
||
}
|
||
var rmargin = /^margin/;
|
||
var rnumnonpx = new RegExp('^(' + pnum + ')(?!px)[a-z%]+$', 'i');
|
||
var getStyles = function (elem) {
|
||
// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
|
||
// IE throws on elements created in popups
|
||
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
||
var view = elem.ownerDocument.defaultView;
|
||
if (!view || !view.opener) {
|
||
view = window
|
||
}
|
||
return view.getComputedStyle(elem)
|
||
};
|
||
var swap = function (elem, options, callback, args) {
|
||
var ret, name, old = {};
|
||
// Remember the old values, and insert the new ones
|
||
for (name in options) {
|
||
old[name] = elem.style[name];
|
||
elem.style[name] = options[name]
|
||
}
|
||
ret = callback.apply(elem, args || []);
|
||
// Revert the old values
|
||
for (name in options) {
|
||
elem.style[name] = old[name]
|
||
}
|
||
return ret
|
||
};
|
||
var documentElement = document.documentElement;
|
||
(function () {
|
||
var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, container = document.createElement('div'), div = document.createElement('div');
|
||
// Finish early in limited (non-browser) environments
|
||
if (!div.style) {
|
||
return
|
||
}
|
||
// Support: IE9-11+
|
||
// Style of cloned element affects source element cloned (#8908)
|
||
div.style.backgroundClip = 'content-box';
|
||
div.cloneNode(true).style.backgroundClip = '';
|
||
support.clearCloneStyle = div.style.backgroundClip === 'content-box';
|
||
container.style.cssText = 'border:0;width:8px;height:0;top:0;left:-9999px;' + 'padding:0;margin-top:1px;position:absolute';
|
||
container.appendChild(div);
|
||
// Executing both pixelPosition & boxSizingReliable tests require only one layout
|
||
// so they're executed at the same time to save the second computation.
|
||
function computeStyleTests() {
|
||
div.style.cssText = // Support: Firefox<29, Android 2.3
|
||
// Vendor-prefix box-sizing
|
||
'-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;' + 'position:relative;display:block;' + 'margin:auto;border:1px;padding:1px;' + 'top:1%;width:50%';
|
||
div.innerHTML = '';
|
||
documentElement.appendChild(container);
|
||
var divStyle = window.getComputedStyle(div);
|
||
pixelPositionVal = divStyle.top !== '1%';
|
||
reliableMarginLeftVal = divStyle.marginLeft === '2px';
|
||
boxSizingReliableVal = divStyle.width === '4px';
|
||
// Support: Android 4.0 - 4.3 only
|
||
// Some styles come back with percentage values, even though they shouldn't
|
||
div.style.marginRight = '50%';
|
||
pixelMarginRightVal = divStyle.marginRight === '4px';
|
||
documentElement.removeChild(container)
|
||
}
|
||
jQuery.extend(support, {
|
||
pixelPosition: function () {
|
||
// This test is executed only once but we still do memoizing
|
||
// since we can use the boxSizingReliable pre-computing.
|
||
// No need to check if the test was already performed, though.
|
||
computeStyleTests();
|
||
return pixelPositionVal
|
||
},
|
||
boxSizingReliable: function () {
|
||
if (boxSizingReliableVal == null) {
|
||
computeStyleTests()
|
||
}
|
||
return boxSizingReliableVal
|
||
},
|
||
pixelMarginRight: function () {
|
||
// Support: Android 4.0-4.3
|
||
// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
|
||
// since that compresses better and they're computed together anyway.
|
||
if (boxSizingReliableVal == null) {
|
||
computeStyleTests()
|
||
}
|
||
return pixelMarginRightVal
|
||
},
|
||
reliableMarginLeft: function () {
|
||
// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
|
||
if (boxSizingReliableVal == null) {
|
||
computeStyleTests()
|
||
}
|
||
return reliableMarginLeftVal
|
||
},
|
||
reliableMarginRight: function () {
|
||
// Support: Android 2.3
|
||
// Check if div with explicit width and no margin-right incorrectly
|
||
// gets computed margin-right based on width of container. (#3333)
|
||
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
||
// This support function is only executed once so no memoizing is needed.
|
||
var ret, marginDiv = div.appendChild(document.createElement('div'));
|
||
// Reset CSS: box-sizing; display; margin; border; padding
|
||
marginDiv.style.cssText = div.style.cssText = // Support: Android 2.3
|
||
// Vendor-prefix box-sizing
|
||
'-webkit-box-sizing:content-box;box-sizing:content-box;' + 'display:block;margin:0;border:0;padding:0';
|
||
marginDiv.style.marginRight = marginDiv.style.width = '0';
|
||
div.style.width = '1px';
|
||
documentElement.appendChild(container);
|
||
ret = !parseFloat(window.getComputedStyle(marginDiv).marginRight);
|
||
documentElement.removeChild(container);
|
||
div.removeChild(marginDiv);
|
||
return ret
|
||
}
|
||
})
|
||
}());
|
||
function curCSS(elem, name, computed) {
|
||
var width, minWidth, maxWidth, ret, style = elem.style;
|
||
computed = computed || getStyles(elem);
|
||
ret = computed ? computed.getPropertyValue(name) || computed[name] : undefined;
|
||
// Support: Opera 12.1x only
|
||
// Fall back to style even without computed
|
||
// computed is undefined for elems on document fragments
|
||
if ((ret === '' || ret === undefined) && !jQuery.contains(elem.ownerDocument, elem)) {
|
||
ret = jQuery.style(elem, name)
|
||
}
|
||
// Support: IE9
|
||
// getPropertyValue is only needed for .css('filter') (#12537)
|
||
if (computed) {
|
||
// A tribute to the "awesome hack by Dean Edwards"
|
||
// Android Browser returns percentage for some values,
|
||
// but width seems to be reliably pixels.
|
||
// This is against the CSSOM draft spec:
|
||
// http://dev.w3.org/csswg/cssom/#resolved-values
|
||
if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {
|
||
// Remember the original values
|
||
width = style.width;
|
||
minWidth = style.minWidth;
|
||
maxWidth = style.maxWidth;
|
||
// Put in the new values to get a computed value out
|
||
style.minWidth = style.maxWidth = style.width = ret;
|
||
ret = computed.width;
|
||
// Revert the changed values
|
||
style.width = width;
|
||
style.minWidth = minWidth;
|
||
style.maxWidth = maxWidth
|
||
}
|
||
}
|
||
return ret !== undefined ? // Support: IE9-11+
|
||
// IE returns zIndex value as an integer.
|
||
ret + '' : ret
|
||
}
|
||
function addGetHookIf(conditionFn, hookFn) {
|
||
// Define the hook, we'll check on the first run if it's really needed.
|
||
return {
|
||
get: function () {
|
||
if (conditionFn()) {
|
||
// Hook not needed (or it's not possible to use it due
|
||
// to missing dependency), remove it.
|
||
delete this.get;
|
||
return
|
||
}
|
||
// Hook needed; redefine it so that the support test is not executed again.
|
||
return (this.get = hookFn).apply(this, arguments)
|
||
}
|
||
}
|
||
}
|
||
var
|
||
// Swappable if display is none or starts with table
|
||
// except "table", "table-cell", or "table-caption"
|
||
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
||
rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = {
|
||
position: 'absolute',
|
||
visibility: 'hidden',
|
||
display: 'block'
|
||
}, cssNormalTransform = {
|
||
letterSpacing: '0',
|
||
fontWeight: '400'
|
||
}, cssPrefixes = [
|
||
'Webkit',
|
||
'O',
|
||
'Moz',
|
||
'ms'
|
||
], emptyStyle = document.createElement('div').style;
|
||
// Return a css property mapped to a potentially vendor prefixed property
|
||
function vendorPropName(name) {
|
||
// Shortcut for names that are not vendor prefixed
|
||
if (name in emptyStyle) {
|
||
return name
|
||
}
|
||
// Check for vendor prefixed names
|
||
var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length;
|
||
while (i--) {
|
||
name = cssPrefixes[i] + capName;
|
||
if (name in emptyStyle) {
|
||
return name
|
||
}
|
||
}
|
||
}
|
||
function setPositiveNumber(elem, value, subtract) {
|
||
// Any relative (+/-) values have already been
|
||
// normalized at this point
|
||
var matches = rcssNum.exec(value);
|
||
return matches ? // Guard against undefined "subtract", e.g., when used as in cssHooks
|
||
Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || 'px') : value
|
||
}
|
||
function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
|
||
var i = extra === (isBorderBox ? 'border' : 'content') ? // If we already have the right measurement, avoid augmentation
|
||
4 : // Otherwise initialize for horizontal or vertical properties
|
||
name === 'width' ? 1 : 0, val = 0;
|
||
for (; i < 4; i += 2) {
|
||
// Both box models exclude margin, so add it if we want it
|
||
if (extra === 'margin') {
|
||
val += jQuery.css(elem, extra + cssExpand[i], true, styles)
|
||
}
|
||
if (isBorderBox) {
|
||
// border-box includes padding, so remove it if we want content
|
||
if (extra === 'content') {
|
||
val -= jQuery.css(elem, 'padding' + cssExpand[i], true, styles)
|
||
}
|
||
// At this point, extra isn't border nor margin, so remove border
|
||
if (extra !== 'margin') {
|
||
val -= jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles)
|
||
}
|
||
} else {
|
||
// At this point, extra isn't content, so add padding
|
||
val += jQuery.css(elem, 'padding' + cssExpand[i], true, styles);
|
||
// At this point, extra isn't content nor padding, so add border
|
||
if (extra !== 'padding') {
|
||
val += jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles)
|
||
}
|
||
}
|
||
}
|
||
return val
|
||
}
|
||
function getWidthOrHeight(elem, name, extra) {
|
||
// Start with offset property, which is equivalent to the border-box value
|
||
var valueIsBorderBox = true, val = name === 'width' ? elem.offsetWidth : elem.offsetHeight, styles = getStyles(elem), isBorderBox = jQuery.css(elem, 'boxSizing', false, styles) === 'border-box';
|
||
// Support: IE11 only
|
||
// In IE 11 fullscreen elements inside of an iframe have
|
||
// 100x too small dimensions (gh-1764).
|
||
if (document.msFullscreenElement && window.top !== window) {
|
||
// Support: IE11 only
|
||
// Running getBoundingClientRect on a disconnected node
|
||
// in IE throws an error.
|
||
if (elem.getClientRects().length) {
|
||
val = Math.round(elem.getBoundingClientRect()[name] * 100)
|
||
}
|
||
}
|
||
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
|
||
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
|
||
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
|
||
if (val <= 0 || val == null) {
|
||
// Fall back to computed then uncomputed css if necessary
|
||
val = curCSS(elem, name, styles);
|
||
if (val < 0 || val == null) {
|
||
val = elem.style[name]
|
||
}
|
||
// Computed unit is not pixels. Stop here and return.
|
||
if (rnumnonpx.test(val)) {
|
||
return val
|
||
}
|
||
// Check for style in case a browser which returns unreliable values
|
||
// for getComputedStyle silently falls back to the reliable elem.style
|
||
valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);
|
||
// Normalize "", auto, and prepare for extra
|
||
val = parseFloat(val) || 0
|
||
}
|
||
// Use the active box-sizing model to add/subtract irrelevant styles
|
||
return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? 'border' : 'content'), valueIsBorderBox, styles) + 'px'
|
||
}
|
||
function showHide(elements, show) {
|
||
var display, elem, hidden, values = [], index = 0, length = elements.length;
|
||
for (; index < length; index++) {
|
||
elem = elements[index];
|
||
if (!elem.style) {
|
||
continue
|
||
}
|
||
values[index] = dataPriv.get(elem, 'olddisplay');
|
||
display = elem.style.display;
|
||
if (show) {
|
||
// Reset the inline display of this element to learn if it is
|
||
// being hidden by cascaded rules or not
|
||
if (!values[index] && display === 'none') {
|
||
elem.style.display = ''
|
||
}
|
||
// Set elements which have been overridden with display: none
|
||
// in a stylesheet to whatever the default browser style is
|
||
// for such an element
|
||
if (elem.style.display === '' && isHidden(elem)) {
|
||
values[index] = dataPriv.access(elem, 'olddisplay', defaultDisplay(elem.nodeName))
|
||
}
|
||
} else {
|
||
hidden = isHidden(elem);
|
||
if (display !== 'none' || !hidden) {
|
||
dataPriv.set(elem, 'olddisplay', hidden ? display : jQuery.css(elem, 'display'))
|
||
}
|
||
}
|
||
}
|
||
// Set the display of most of the elements in a second loop
|
||
// to avoid the constant reflow
|
||
for (index = 0; index < length; index++) {
|
||
elem = elements[index];
|
||
if (!elem.style) {
|
||
continue
|
||
}
|
||
if (!show || elem.style.display === 'none' || elem.style.display === '') {
|
||
elem.style.display = show ? values[index] || '' : 'none'
|
||
}
|
||
}
|
||
return elements
|
||
}
|
||
jQuery.extend({
|
||
// Add in style property hooks for overriding the default
|
||
// behavior of getting and setting a style property
|
||
cssHooks: {
|
||
opacity: {
|
||
get: function (elem, computed) {
|
||
if (computed) {
|
||
// We should always get a number back from opacity
|
||
var ret = curCSS(elem, 'opacity');
|
||
return ret === '' ? '1' : ret
|
||
}
|
||
}
|
||
}
|
||
},
|
||
// Don't automatically add "px" to these possibly-unitless properties
|
||
cssNumber: {
|
||
'animationIterationCount': true,
|
||
'columnCount': true,
|
||
'fillOpacity': true,
|
||
'flexGrow': true,
|
||
'flexShrink': true,
|
||
'fontWeight': true,
|
||
'lineHeight': true,
|
||
'opacity': true,
|
||
'order': true,
|
||
'orphans': true,
|
||
'widows': true,
|
||
'zIndex': true,
|
||
'zoom': true
|
||
},
|
||
// Add in properties whose names you wish to fix before
|
||
// setting or getting the value
|
||
cssProps: { 'float': 'cssFloat' },
|
||
// Get and set the style property on a DOM Node
|
||
style: function (elem, name, value, extra) {
|
||
// Don't set styles on text and comment nodes
|
||
if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
|
||
return
|
||
}
|
||
// Make sure that we're working with the right name
|
||
var ret, type, hooks, origName = jQuery.camelCase(name), style = elem.style;
|
||
name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);
|
||
// Gets hook for the prefixed version, then unprefixed version
|
||
hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
|
||
// Check if we're setting a value
|
||
if (value !== undefined) {
|
||
type = typeof value;
|
||
// Convert "+=" or "-=" to relative numbers (#7345)
|
||
if (type === 'string' && (ret = rcssNum.exec(value)) && ret[1]) {
|
||
value = adjustCSS(elem, name, ret);
|
||
// Fixes bug #9237
|
||
type = 'number'
|
||
}
|
||
// Make sure that null and NaN values aren't set (#7116)
|
||
if (value == null || value !== value) {
|
||
return
|
||
}
|
||
// If a number was passed in, add the unit (except for certain CSS properties)
|
||
if (type === 'number') {
|
||
value += ret && ret[3] || (jQuery.cssNumber[origName] ? '' : 'px')
|
||
}
|
||
// Support: IE9-11+
|
||
// background-* props affect original clone's values
|
||
if (!support.clearCloneStyle && value === '' && name.indexOf('background') === 0) {
|
||
style[name] = 'inherit'
|
||
}
|
||
// If a hook was provided, use that value, otherwise just set the specified value
|
||
if (!hooks || !('set' in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {
|
||
style[name] = value
|
||
}
|
||
} else {
|
||
// If a hook was provided get the non-computed value from there
|
||
if (hooks && 'get' in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {
|
||
return ret
|
||
}
|
||
// Otherwise just get the value from the style object
|
||
return style[name]
|
||
}
|
||
},
|
||
css: function (elem, name, extra, styles) {
|
||
var val, num, hooks, origName = jQuery.camelCase(name);
|
||
// Make sure that we're working with the right name
|
||
name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);
|
||
// Try prefixed name followed by the unprefixed name
|
||
hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
|
||
// If a hook was provided get the computed value from there
|
||
if (hooks && 'get' in hooks) {
|
||
val = hooks.get(elem, true, extra)
|
||
}
|
||
// Otherwise, if a way to get the computed value exists, use that
|
||
if (val === undefined) {
|
||
val = curCSS(elem, name, styles)
|
||
}
|
||
// Convert "normal" to computed value
|
||
if (val === 'normal' && name in cssNormalTransform) {
|
||
val = cssNormalTransform[name]
|
||
}
|
||
// Make numeric if forced or a qualifier was provided and val looks numeric
|
||
if (extra === '' || extra) {
|
||
num = parseFloat(val);
|
||
return extra === true || isFinite(num) ? num || 0 : val
|
||
}
|
||
return val
|
||
}
|
||
});
|
||
jQuery.each([
|
||
'height',
|
||
'width'
|
||
], function (i, name) {
|
||
jQuery.cssHooks[name] = {
|
||
get: function (elem, computed, extra) {
|
||
if (computed) {
|
||
// Certain elements can have dimension info if we invisibly show them
|
||
// but it must have a current display style that would benefit
|
||
return rdisplayswap.test(jQuery.css(elem, 'display')) && elem.offsetWidth === 0 ? swap(elem, cssShow, function () {
|
||
return getWidthOrHeight(elem, name, extra)
|
||
}) : getWidthOrHeight(elem, name, extra)
|
||
}
|
||
},
|
||
set: function (elem, value, extra) {
|
||
var matches, styles = extra && getStyles(elem), subtract = extra && augmentWidthOrHeight(elem, name, extra, jQuery.css(elem, 'boxSizing', false, styles) === 'border-box', styles);
|
||
// Convert to pixels if value adjustment is needed
|
||
if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || 'px') !== 'px') {
|
||
elem.style[name] = value;
|
||
value = jQuery.css(elem, name)
|
||
}
|
||
return setPositiveNumber(elem, value, subtract)
|
||
}
|
||
}
|
||
});
|
||
jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {
|
||
if (computed) {
|
||
return (parseFloat(curCSS(elem, 'marginLeft')) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function () {
|
||
return elem.getBoundingClientRect().left
|
||
})) + 'px'
|
||
}
|
||
});
|
||
// Support: Android 2.3
|
||
jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
|
||
if (computed) {
|
||
return swap(elem, { 'display': 'inline-block' }, curCSS, [
|
||
elem,
|
||
'marginRight'
|
||
])
|
||
}
|
||
});
|
||
// These hooks are used by animate to expand properties
|
||
jQuery.each({
|
||
margin: '',
|
||
padding: '',
|
||
border: 'Width'
|
||
}, function (prefix, suffix) {
|
||
jQuery.cssHooks[prefix + suffix] = {
|
||
expand: function (value) {
|
||
var i = 0, expanded = {},
|
||
// Assumes a single number if not a string
|
||
parts = typeof value === 'string' ? value.split(' ') : [value];
|
||
for (; i < 4; i++) {
|
||
expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]
|
||
}
|
||
return expanded
|
||
}
|
||
};
|
||
if (!rmargin.test(prefix)) {
|
||
jQuery.cssHooks[prefix + suffix].set = setPositiveNumber
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
css: function (name, value) {
|
||
return access(this, function (elem, name, value) {
|
||
var styles, len, map = {}, i = 0;
|
||
if (jQuery.isArray(name)) {
|
||
styles = getStyles(elem);
|
||
len = name.length;
|
||
for (; i < len; i++) {
|
||
map[name[i]] = jQuery.css(elem, name[i], false, styles)
|
||
}
|
||
return map
|
||
}
|
||
return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name)
|
||
}, name, value, arguments.length > 1)
|
||
},
|
||
show: function () {
|
||
return showHide(this, true)
|
||
},
|
||
hide: function () {
|
||
return showHide(this)
|
||
},
|
||
toggle: function (state) {
|
||
if (typeof state === 'boolean') {
|
||
return state ? this.show() : this.hide()
|
||
}
|
||
return this.each(function () {
|
||
if (isHidden(this)) {
|
||
jQuery(this).show()
|
||
} else {
|
||
jQuery(this).hide()
|
||
}
|
||
})
|
||
}
|
||
});
|
||
function Tween(elem, options, prop, end, easing) {
|
||
return new Tween.prototype.init(elem, options, prop, end, easing)
|
||
}
|
||
jQuery.Tween = Tween;
|
||
Tween.prototype = {
|
||
constructor: Tween,
|
||
init: function (elem, options, prop, end, easing, unit) {
|
||
this.elem = elem;
|
||
this.prop = prop;
|
||
this.easing = easing || jQuery.easing._default;
|
||
this.options = options;
|
||
this.start = this.now = this.cur();
|
||
this.end = end;
|
||
this.unit = unit || (jQuery.cssNumber[prop] ? '' : 'px')
|
||
},
|
||
cur: function () {
|
||
var hooks = Tween.propHooks[this.prop];
|
||
return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this)
|
||
},
|
||
run: function (percent) {
|
||
var eased, hooks = Tween.propHooks[this.prop];
|
||
if (this.options.duration) {
|
||
this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration)
|
||
} else {
|
||
this.pos = eased = percent
|
||
}
|
||
this.now = (this.end - this.start) * eased + this.start;
|
||
if (this.options.step) {
|
||
this.options.step.call(this.elem, this.now, this)
|
||
}
|
||
if (hooks && hooks.set) {
|
||
hooks.set(this)
|
||
} else {
|
||
Tween.propHooks._default.set(this)
|
||
}
|
||
return this
|
||
}
|
||
};
|
||
Tween.prototype.init.prototype = Tween.prototype;
|
||
Tween.propHooks = {
|
||
_default: {
|
||
get: function (tween) {
|
||
var result;
|
||
// Use a property on the element directly when it is not a DOM element,
|
||
// or when there is no matching style property that exists.
|
||
if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
|
||
return tween.elem[tween.prop]
|
||
}
|
||
// Passing an empty string as a 3rd parameter to .css will automatically
|
||
// attempt a parseFloat and fallback to a string if the parse fails.
|
||
// Simple values such as "10px" are parsed to Float;
|
||
// complex values such as "rotate(1rad)" are returned as-is.
|
||
result = jQuery.css(tween.elem, tween.prop, '');
|
||
// Empty strings, null, undefined and "auto" are converted to 0.
|
||
return !result || result === 'auto' ? 0 : result
|
||
},
|
||
set: function (tween) {
|
||
// Use step hook for back compat.
|
||
// Use cssHook if its there.
|
||
// Use .style if available and use plain properties where available.
|
||
if (jQuery.fx.step[tween.prop]) {
|
||
jQuery.fx.step[tween.prop](tween)
|
||
} else if (tween.elem.nodeType === 1 && (tween.elem.style[jQuery.cssProps[tween.prop]] != null || jQuery.cssHooks[tween.prop])) {
|
||
jQuery.style(tween.elem, tween.prop, tween.now + tween.unit)
|
||
} else {
|
||
tween.elem[tween.prop] = tween.now
|
||
}
|
||
}
|
||
}
|
||
};
|
||
// Support: IE9
|
||
// Panic based approach to setting things on disconnected nodes
|
||
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
||
set: function (tween) {
|
||
if (tween.elem.nodeType && tween.elem.parentNode) {
|
||
tween.elem[tween.prop] = tween.now
|
||
}
|
||
}
|
||
};
|
||
jQuery.easing = {
|
||
linear: function (p) {
|
||
return p
|
||
},
|
||
swing: function (p) {
|
||
return 0.5 - Math.cos(p * Math.PI) / 2
|
||
},
|
||
_default: 'swing'
|
||
};
|
||
jQuery.fx = Tween.prototype.init;
|
||
// Back Compat <1.8 extension point
|
||
jQuery.fx.step = {};
|
||
var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
|
||
// Animations created synchronously will run synchronously
|
||
function createFxNow() {
|
||
window.setTimeout(function () {
|
||
fxNow = undefined
|
||
});
|
||
return fxNow = jQuery.now()
|
||
}
|
||
// Generate parameters to create a standard animation
|
||
function genFx(type, includeWidth) {
|
||
var which, i = 0, attrs = { height: type };
|
||
// If we include width, step value is 1 to do all cssExpand values,
|
||
// otherwise step value is 2 to skip over Left and Right
|
||
includeWidth = includeWidth ? 1 : 0;
|
||
for (; i < 4; i += 2 - includeWidth) {
|
||
which = cssExpand[i];
|
||
attrs['margin' + which] = attrs['padding' + which] = type
|
||
}
|
||
if (includeWidth) {
|
||
attrs.opacity = attrs.width = type
|
||
}
|
||
return attrs
|
||
}
|
||
function createTween(value, prop, animation) {
|
||
var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners['*']), index = 0, length = collection.length;
|
||
for (; index < length; index++) {
|
||
if (tween = collection[index].call(animation, prop, value)) {
|
||
// We're done with this property
|
||
return tween
|
||
}
|
||
}
|
||
}
|
||
function defaultPrefilter(elem, props, opts) {
|
||
/* jshint validthis: true */
|
||
var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHidden(elem), dataShow = dataPriv.get(elem, 'fxshow');
|
||
// Handle queue: false promises
|
||
if (!opts.queue) {
|
||
hooks = jQuery._queueHooks(elem, 'fx');
|
||
if (hooks.unqueued == null) {
|
||
hooks.unqueued = 0;
|
||
oldfire = hooks.empty.fire;
|
||
hooks.empty.fire = function () {
|
||
if (!hooks.unqueued) {
|
||
oldfire()
|
||
}
|
||
}
|
||
}
|
||
hooks.unqueued++;
|
||
anim.always(function () {
|
||
// Ensure the complete handler is called before this completes
|
||
anim.always(function () {
|
||
hooks.unqueued--;
|
||
if (!jQuery.queue(elem, 'fx').length) {
|
||
hooks.empty.fire()
|
||
}
|
||
})
|
||
})
|
||
}
|
||
// Height/width overflow pass
|
||
if (elem.nodeType === 1 && ('height' in props || 'width' in props)) {
|
||
// Make sure that nothing sneaks out
|
||
// Record all 3 overflow attributes because IE9-10 do not
|
||
// change the overflow attribute when overflowX and
|
||
// overflowY are set to the same value
|
||
opts.overflow = [
|
||
style.overflow,
|
||
style.overflowX,
|
||
style.overflowY
|
||
];
|
||
// Set display property to inline-block for height/width
|
||
// animations on inline elements that are having width/height animated
|
||
display = jQuery.css(elem, 'display');
|
||
// Test default display if display is currently "none"
|
||
checkDisplay = display === 'none' ? dataPriv.get(elem, 'olddisplay') || defaultDisplay(elem.nodeName) : display;
|
||
if (checkDisplay === 'inline' && jQuery.css(elem, 'float') === 'none') {
|
||
style.display = 'inline-block'
|
||
}
|
||
}
|
||
if (opts.overflow) {
|
||
style.overflow = 'hidden';
|
||
anim.always(function () {
|
||
style.overflow = opts.overflow[0];
|
||
style.overflowX = opts.overflow[1];
|
||
style.overflowY = opts.overflow[2]
|
||
})
|
||
}
|
||
// show/hide pass
|
||
for (prop in props) {
|
||
value = props[prop];
|
||
if (rfxtypes.exec(value)) {
|
||
delete props[prop];
|
||
toggle = toggle || value === 'toggle';
|
||
if (value === (hidden ? 'hide' : 'show')) {
|
||
// If there is dataShow left over from a stopped hide or show
|
||
// and we are going to proceed with show, we should pretend to be hidden
|
||
if (value === 'show' && dataShow && dataShow[prop] !== undefined) {
|
||
hidden = true
|
||
} else {
|
||
continue
|
||
}
|
||
}
|
||
orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop) // Any non-fx value stops us from restoring the original display value
|
||
} else {
|
||
display = undefined
|
||
}
|
||
}
|
||
if (!jQuery.isEmptyObject(orig)) {
|
||
if (dataShow) {
|
||
if ('hidden' in dataShow) {
|
||
hidden = dataShow.hidden
|
||
}
|
||
} else {
|
||
dataShow = dataPriv.access(elem, 'fxshow', {})
|
||
}
|
||
// Store state if its toggle - enables .stop().toggle() to "reverse"
|
||
if (toggle) {
|
||
dataShow.hidden = !hidden
|
||
}
|
||
if (hidden) {
|
||
jQuery(elem).show()
|
||
} else {
|
||
anim.done(function () {
|
||
jQuery(elem).hide()
|
||
})
|
||
}
|
||
anim.done(function () {
|
||
var prop;
|
||
dataPriv.remove(elem, 'fxshow');
|
||
for (prop in orig) {
|
||
jQuery.style(elem, prop, orig[prop])
|
||
}
|
||
});
|
||
for (prop in orig) {
|
||
tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
|
||
if (!(prop in dataShow)) {
|
||
dataShow[prop] = tween.start;
|
||
if (hidden) {
|
||
tween.end = tween.start;
|
||
tween.start = prop === 'width' || prop === 'height' ? 1 : 0
|
||
}
|
||
}
|
||
} // If this is a noop like .hide().hide(), restore an overwritten display value
|
||
} else if ((display === 'none' ? defaultDisplay(elem.nodeName) : display) === 'inline') {
|
||
style.display = display
|
||
}
|
||
}
|
||
function propFilter(props, specialEasing) {
|
||
var index, name, easing, value, hooks;
|
||
// camelCase, specialEasing and expand cssHook pass
|
||
for (index in props) {
|
||
name = jQuery.camelCase(index);
|
||
easing = specialEasing[name];
|
||
value = props[index];
|
||
if (jQuery.isArray(value)) {
|
||
easing = value[1];
|
||
value = props[index] = value[0]
|
||
}
|
||
if (index !== name) {
|
||
props[name] = value;
|
||
delete props[index]
|
||
}
|
||
hooks = jQuery.cssHooks[name];
|
||
if (hooks && 'expand' in hooks) {
|
||
value = hooks.expand(value);
|
||
delete props[name];
|
||
// Not quite $.extend, this won't overwrite existing keys.
|
||
// Reusing 'index' because we have the correct "name"
|
||
for (index in value) {
|
||
if (!(index in props)) {
|
||
props[index] = value[index];
|
||
specialEasing[index] = easing
|
||
}
|
||
}
|
||
} else {
|
||
specialEasing[name] = easing
|
||
}
|
||
}
|
||
}
|
||
function Animation(elem, properties, options) {
|
||
var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always(function () {
|
||
// Don't match elem in the :animated selector
|
||
delete tick.elem
|
||
}), tick = function () {
|
||
if (stopped) {
|
||
return false
|
||
}
|
||
var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime),
|
||
// Support: Android 2.3
|
||
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
||
temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length;
|
||
for (; index < length; index++) {
|
||
animation.tweens[index].run(percent)
|
||
}
|
||
deferred.notifyWith(elem, [
|
||
animation,
|
||
percent,
|
||
remaining
|
||
]);
|
||
if (percent < 1 && length) {
|
||
return remaining
|
||
} else {
|
||
deferred.resolveWith(elem, [animation]);
|
||
return false
|
||
}
|
||
}, animation = deferred.promise({
|
||
elem: elem,
|
||
props: jQuery.extend({}, properties),
|
||
opts: jQuery.extend(true, {
|
||
specialEasing: {},
|
||
easing: jQuery.easing._default
|
||
}, options),
|
||
originalProperties: properties,
|
||
originalOptions: options,
|
||
startTime: fxNow || createFxNow(),
|
||
duration: options.duration,
|
||
tweens: [],
|
||
createTween: function (prop, end) {
|
||
var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
|
||
animation.tweens.push(tween);
|
||
return tween
|
||
},
|
||
stop: function (gotoEnd) {
|
||
var index = 0,
|
||
// If we are going to the end, we want to run all the tweens
|
||
// otherwise we skip this part
|
||
length = gotoEnd ? animation.tweens.length : 0;
|
||
if (stopped) {
|
||
return this
|
||
}
|
||
stopped = true;
|
||
for (; index < length; index++) {
|
||
animation.tweens[index].run(1)
|
||
}
|
||
// Resolve when we played the last frame; otherwise, reject
|
||
if (gotoEnd) {
|
||
deferred.notifyWith(elem, [
|
||
animation,
|
||
1,
|
||
0
|
||
]);
|
||
deferred.resolveWith(elem, [
|
||
animation,
|
||
gotoEnd
|
||
])
|
||
} else {
|
||
deferred.rejectWith(elem, [
|
||
animation,
|
||
gotoEnd
|
||
])
|
||
}
|
||
return this
|
||
}
|
||
}), props = animation.props;
|
||
propFilter(props, animation.opts.specialEasing);
|
||
for (; index < length; index++) {
|
||
result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
|
||
if (result) {
|
||
if (jQuery.isFunction(result.stop)) {
|
||
jQuery._queueHooks(animation.elem, animation.opts.queue).stop = jQuery.proxy(result.stop, result)
|
||
}
|
||
return result
|
||
}
|
||
}
|
||
jQuery.map(props, createTween, animation);
|
||
if (jQuery.isFunction(animation.opts.start)) {
|
||
animation.opts.start.call(elem, animation)
|
||
}
|
||
jQuery.fx.timer(jQuery.extend(tick, {
|
||
elem: elem,
|
||
anim: animation,
|
||
queue: animation.opts.queue
|
||
}));
|
||
// attach callbacks from options
|
||
return animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always)
|
||
}
|
||
jQuery.Animation = jQuery.extend(Animation, {
|
||
tweeners: {
|
||
'*': [function (prop, value) {
|
||
var tween = this.createTween(prop, value);
|
||
adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
|
||
return tween
|
||
}]
|
||
},
|
||
tweener: function (props, callback) {
|
||
if (jQuery.isFunction(props)) {
|
||
callback = props;
|
||
props = ['*']
|
||
} else {
|
||
props = props.match(rnotwhite)
|
||
}
|
||
var prop, index = 0, length = props.length;
|
||
for (; index < length; index++) {
|
||
prop = props[index];
|
||
Animation.tweeners[prop] = Animation.tweeners[prop] || [];
|
||
Animation.tweeners[prop].unshift(callback)
|
||
}
|
||
},
|
||
prefilters: [defaultPrefilter],
|
||
prefilter: function (callback, prepend) {
|
||
if (prepend) {
|
||
Animation.prefilters.unshift(callback)
|
||
} else {
|
||
Animation.prefilters.push(callback)
|
||
}
|
||
}
|
||
});
|
||
jQuery.speed = function (speed, easing, fn) {
|
||
var opt = speed && typeof speed === 'object' ? jQuery.extend({}, speed) : {
|
||
complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
|
||
duration: speed,
|
||
easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
|
||
};
|
||
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === 'number' ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
|
||
// Normalize opt.queue - true/undefined/null -> "fx"
|
||
if (opt.queue == null || opt.queue === true) {
|
||
opt.queue = 'fx'
|
||
}
|
||
// Queueing
|
||
opt.old = opt.complete;
|
||
opt.complete = function () {
|
||
if (jQuery.isFunction(opt.old)) {
|
||
opt.old.call(this)
|
||
}
|
||
if (opt.queue) {
|
||
jQuery.dequeue(this, opt.queue)
|
||
}
|
||
};
|
||
return opt
|
||
};
|
||
jQuery.fn.extend({
|
||
fadeTo: function (speed, to, easing, callback) {
|
||
// Show any hidden elements after setting opacity to 0
|
||
return this.filter(isHidden).css('opacity', 0).show() // Animate to the value specified
|
||
.end().animate({ opacity: to }, speed, easing, callback)
|
||
},
|
||
animate: function (prop, speed, easing, callback) {
|
||
var empty = jQuery.isEmptyObject(prop), optall = jQuery.speed(speed, easing, callback), doAnimation = function () {
|
||
// Operate on a copy of prop so per-property easing won't be lost
|
||
var anim = Animation(this, jQuery.extend({}, prop), optall);
|
||
// Empty animations, or finishing resolves immediately
|
||
if (empty || dataPriv.get(this, 'finish')) {
|
||
anim.stop(true)
|
||
}
|
||
};
|
||
doAnimation.finish = doAnimation;
|
||
return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation)
|
||
},
|
||
stop: function (type, clearQueue, gotoEnd) {
|
||
var stopQueue = function (hooks) {
|
||
var stop = hooks.stop;
|
||
delete hooks.stop;
|
||
stop(gotoEnd)
|
||
};
|
||
if (typeof type !== 'string') {
|
||
gotoEnd = clearQueue;
|
||
clearQueue = type;
|
||
type = undefined
|
||
}
|
||
if (clearQueue && type !== false) {
|
||
this.queue(type || 'fx', [])
|
||
}
|
||
return this.each(function () {
|
||
var dequeue = true, index = type != null && type + 'queueHooks', timers = jQuery.timers, data = dataPriv.get(this);
|
||
if (index) {
|
||
if (data[index] && data[index].stop) {
|
||
stopQueue(data[index])
|
||
}
|
||
} else {
|
||
for (index in data) {
|
||
if (data[index] && data[index].stop && rrun.test(index)) {
|
||
stopQueue(data[index])
|
||
}
|
||
}
|
||
}
|
||
for (index = timers.length; index--;) {
|
||
if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
|
||
timers[index].anim.stop(gotoEnd);
|
||
dequeue = false;
|
||
timers.splice(index, 1)
|
||
}
|
||
}
|
||
// Start the next in the queue if the last step wasn't forced.
|
||
// Timers currently will call their complete callbacks, which
|
||
// will dequeue but only if they were gotoEnd.
|
||
if (dequeue || !gotoEnd) {
|
||
jQuery.dequeue(this, type)
|
||
}
|
||
})
|
||
},
|
||
finish: function (type) {
|
||
if (type !== false) {
|
||
type = type || 'fx'
|
||
}
|
||
return this.each(function () {
|
||
var index, data = dataPriv.get(this), queue = data[type + 'queue'], hooks = data[type + 'queueHooks'], timers = jQuery.timers, length = queue ? queue.length : 0;
|
||
// Enable finishing flag on private data
|
||
data.finish = true;
|
||
// Empty the queue first
|
||
jQuery.queue(this, type, []);
|
||
if (hooks && hooks.stop) {
|
||
hooks.stop.call(this, true)
|
||
}
|
||
// Look for any active animations, and finish them
|
||
for (index = timers.length; index--;) {
|
||
if (timers[index].elem === this && timers[index].queue === type) {
|
||
timers[index].anim.stop(true);
|
||
timers.splice(index, 1)
|
||
}
|
||
}
|
||
// Look for any animations in the old queue and finish them
|
||
for (index = 0; index < length; index++) {
|
||
if (queue[index] && queue[index].finish) {
|
||
queue[index].finish.call(this)
|
||
}
|
||
}
|
||
// Turn off finishing flag
|
||
delete data.finish
|
||
})
|
||
}
|
||
});
|
||
jQuery.each([
|
||
'toggle',
|
||
'show',
|
||
'hide'
|
||
], function (i, name) {
|
||
var cssFn = jQuery.fn[name];
|
||
jQuery.fn[name] = function (speed, easing, callback) {
|
||
return speed == null || typeof speed === 'boolean' ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback)
|
||
}
|
||
});
|
||
// Generate shortcuts for custom animations
|
||
jQuery.each({
|
||
slideDown: genFx('show'),
|
||
slideUp: genFx('hide'),
|
||
slideToggle: genFx('toggle'),
|
||
fadeIn: { opacity: 'show' },
|
||
fadeOut: { opacity: 'hide' },
|
||
fadeToggle: { opacity: 'toggle' }
|
||
}, function (name, props) {
|
||
jQuery.fn[name] = function (speed, easing, callback) {
|
||
return this.animate(props, speed, easing, callback)
|
||
}
|
||
});
|
||
jQuery.timers = [];
|
||
jQuery.fx.tick = function () {
|
||
var timer, i = 0, timers = jQuery.timers;
|
||
fxNow = jQuery.now();
|
||
for (; i < timers.length; i++) {
|
||
timer = timers[i];
|
||
// Checks the timer has not already been removed
|
||
if (!timer() && timers[i] === timer) {
|
||
timers.splice(i--, 1)
|
||
}
|
||
}
|
||
if (!timers.length) {
|
||
jQuery.fx.stop()
|
||
}
|
||
fxNow = undefined
|
||
};
|
||
jQuery.fx.timer = function (timer) {
|
||
jQuery.timers.push(timer);
|
||
if (timer()) {
|
||
jQuery.fx.start()
|
||
} else {
|
||
jQuery.timers.pop()
|
||
}
|
||
};
|
||
jQuery.fx.interval = 13;
|
||
jQuery.fx.start = function () {
|
||
if (!timerId) {
|
||
timerId = window.setInterval(jQuery.fx.tick, jQuery.fx.interval)
|
||
}
|
||
};
|
||
jQuery.fx.stop = function () {
|
||
window.clearInterval(timerId);
|
||
timerId = null
|
||
};
|
||
jQuery.fx.speeds = {
|
||
slow: 600,
|
||
fast: 200,
|
||
// Default speed
|
||
_default: 400
|
||
};
|
||
// Based off of the plugin by Clint Helfers, with permission.
|
||
// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
||
jQuery.fn.delay = function (time, type) {
|
||
time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
|
||
type = type || 'fx';
|
||
return this.queue(type, function (next, hooks) {
|
||
var timeout = window.setTimeout(next, time);
|
||
hooks.stop = function () {
|
||
window.clearTimeout(timeout)
|
||
}
|
||
})
|
||
};
|
||
(function () {
|
||
var input = document.createElement('input'), select = document.createElement('select'), opt = select.appendChild(document.createElement('option'));
|
||
input.type = 'checkbox';
|
||
// Support: iOS<=5.1, Android<=4.2+
|
||
// Default value for a checkbox should be "on"
|
||
support.checkOn = input.value !== '';
|
||
// Support: IE<=11+
|
||
// Must access selectedIndex to make default options select
|
||
support.optSelected = opt.selected;
|
||
// Support: Android<=2.3
|
||
// Options inside disabled selects are incorrectly marked as disabled
|
||
select.disabled = true;
|
||
support.optDisabled = !opt.disabled;
|
||
// Support: IE<=11+
|
||
// An input loses its value after becoming a radio
|
||
input = document.createElement('input');
|
||
input.value = 't';
|
||
input.type = 'radio';
|
||
support.radioValue = input.value === 't'
|
||
}());
|
||
var boolHook, attrHandle = jQuery.expr.attrHandle;
|
||
jQuery.fn.extend({
|
||
attr: function (name, value) {
|
||
return access(this, jQuery.attr, name, value, arguments.length > 1)
|
||
},
|
||
removeAttr: function (name) {
|
||
return this.each(function () {
|
||
jQuery.removeAttr(this, name)
|
||
})
|
||
}
|
||
});
|
||
jQuery.extend({
|
||
attr: function (elem, name, value) {
|
||
var ret, hooks, nType = elem.nodeType;
|
||
// Don't get/set attributes on text, comment and attribute nodes
|
||
if (nType === 3 || nType === 8 || nType === 2) {
|
||
return
|
||
}
|
||
// Fallback to prop when attributes are not supported
|
||
if (typeof elem.getAttribute === 'undefined') {
|
||
return jQuery.prop(elem, name, value)
|
||
}
|
||
// All attributes are lowercase
|
||
// Grab necessary hook if one is defined
|
||
if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
|
||
name = name.toLowerCase();
|
||
hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined)
|
||
}
|
||
if (value !== undefined) {
|
||
if (value === null) {
|
||
jQuery.removeAttr(elem, name);
|
||
return
|
||
}
|
||
if (hooks && 'set' in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
|
||
return ret
|
||
}
|
||
elem.setAttribute(name, value + '');
|
||
return value
|
||
}
|
||
if (hooks && 'get' in hooks && (ret = hooks.get(elem, name)) !== null) {
|
||
return ret
|
||
}
|
||
ret = jQuery.find.attr(elem, name);
|
||
// Non-existent attributes return null, we normalize to undefined
|
||
return ret == null ? undefined : ret
|
||
},
|
||
attrHooks: {
|
||
type: {
|
||
set: function (elem, value) {
|
||
if (!support.radioValue && value === 'radio' && jQuery.nodeName(elem, 'input')) {
|
||
var val = elem.value;
|
||
elem.setAttribute('type', value);
|
||
if (val) {
|
||
elem.value = val
|
||
}
|
||
return value
|
||
}
|
||
}
|
||
}
|
||
},
|
||
removeAttr: function (elem, value) {
|
||
var name, propName, i = 0, attrNames = value && value.match(rnotwhite);
|
||
if (attrNames && elem.nodeType === 1) {
|
||
while (name = attrNames[i++]) {
|
||
propName = jQuery.propFix[name] || name;
|
||
// Boolean attributes get special treatment (#10870)
|
||
if (jQuery.expr.match.bool.test(name)) {
|
||
// Set corresponding property to false
|
||
elem[propName] = false
|
||
}
|
||
elem.removeAttribute(name)
|
||
}
|
||
}
|
||
}
|
||
});
|
||
// Hooks for boolean attributes
|
||
boolHook = {
|
||
set: function (elem, value, name) {
|
||
if (value === false) {
|
||
// Remove boolean attributes when set to false
|
||
jQuery.removeAttr(elem, name)
|
||
} else {
|
||
elem.setAttribute(name, name)
|
||
}
|
||
return name
|
||
}
|
||
};
|
||
jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
|
||
var getter = attrHandle[name] || jQuery.find.attr;
|
||
attrHandle[name] = function (elem, name, isXML) {
|
||
var ret, handle;
|
||
if (!isXML) {
|
||
// Avoid an infinite loop by temporarily removing this function from the getter
|
||
handle = attrHandle[name];
|
||
attrHandle[name] = ret;
|
||
ret = getter(elem, name, isXML) != null ? name.toLowerCase() : null;
|
||
attrHandle[name] = handle
|
||
}
|
||
return ret
|
||
}
|
||
});
|
||
var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
|
||
jQuery.fn.extend({
|
||
prop: function (name, value) {
|
||
return access(this, jQuery.prop, name, value, arguments.length > 1)
|
||
},
|
||
removeProp: function (name) {
|
||
return this.each(function () {
|
||
delete this[jQuery.propFix[name] || name]
|
||
})
|
||
}
|
||
});
|
||
jQuery.extend({
|
||
prop: function (elem, name, value) {
|
||
var ret, hooks, nType = elem.nodeType;
|
||
// Don't get/set properties on text, comment and attribute nodes
|
||
if (nType === 3 || nType === 8 || nType === 2) {
|
||
return
|
||
}
|
||
if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
|
||
// Fix name and attach hooks
|
||
name = jQuery.propFix[name] || name;
|
||
hooks = jQuery.propHooks[name]
|
||
}
|
||
if (value !== undefined) {
|
||
if (hooks && 'set' in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
|
||
return ret
|
||
}
|
||
return elem[name] = value
|
||
}
|
||
if (hooks && 'get' in hooks && (ret = hooks.get(elem, name)) !== null) {
|
||
return ret
|
||
}
|
||
return elem[name]
|
||
},
|
||
propHooks: {
|
||
tabIndex: {
|
||
get: function (elem) {
|
||
// elem.tabIndex doesn't always return the
|
||
// correct value when it hasn't been explicitly set
|
||
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
||
// Use proper attribute retrieval(#12072)
|
||
var tabindex = jQuery.find.attr(elem, 'tabindex');
|
||
return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1
|
||
}
|
||
}
|
||
},
|
||
propFix: {
|
||
'for': 'htmlFor',
|
||
'class': 'className'
|
||
}
|
||
});
|
||
// Support: IE <=11 only
|
||
// Accessing the selectedIndex property
|
||
// forces the browser to respect setting selected
|
||
// on the option
|
||
// The getter ensures a default option is selected
|
||
// when in an optgroup
|
||
if (!support.optSelected) {
|
||
jQuery.propHooks.selected = {
|
||
get: function (elem) {
|
||
var parent = elem.parentNode;
|
||
if (parent && parent.parentNode) {
|
||
parent.parentNode.selectedIndex
|
||
}
|
||
return null
|
||
},
|
||
set: function (elem) {
|
||
var parent = elem.parentNode;
|
||
if (parent) {
|
||
parent.selectedIndex;
|
||
if (parent.parentNode) {
|
||
parent.parentNode.selectedIndex
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
jQuery.each([
|
||
'tabIndex',
|
||
'readOnly',
|
||
'maxLength',
|
||
'cellSpacing',
|
||
'cellPadding',
|
||
'rowSpan',
|
||
'colSpan',
|
||
'useMap',
|
||
'frameBorder',
|
||
'contentEditable'
|
||
], function () {
|
||
jQuery.propFix[this.toLowerCase()] = this
|
||
});
|
||
var rclass = /[\t\r\n\f]/g;
|
||
function getClass(elem) {
|
||
return elem.getAttribute && elem.getAttribute('class') || ''
|
||
}
|
||
jQuery.fn.extend({
|
||
addClass: function (value) {
|
||
var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
|
||
if (jQuery.isFunction(value)) {
|
||
return this.each(function (j) {
|
||
jQuery(this).addClass(value.call(this, j, getClass(this)))
|
||
})
|
||
}
|
||
if (typeof value === 'string' && value) {
|
||
classes = value.match(rnotwhite) || [];
|
||
while (elem = this[i++]) {
|
||
curValue = getClass(elem);
|
||
cur = elem.nodeType === 1 && (' ' + curValue + ' ').replace(rclass, ' ');
|
||
if (cur) {
|
||
j = 0;
|
||
while (clazz = classes[j++]) {
|
||
if (cur.indexOf(' ' + clazz + ' ') < 0) {
|
||
cur += clazz + ' '
|
||
}
|
||
}
|
||
// Only assign if different to avoid unneeded rendering.
|
||
finalValue = jQuery.trim(cur);
|
||
if (curValue !== finalValue) {
|
||
elem.setAttribute('class', finalValue)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
removeClass: function (value) {
|
||
var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
|
||
if (jQuery.isFunction(value)) {
|
||
return this.each(function (j) {
|
||
jQuery(this).removeClass(value.call(this, j, getClass(this)))
|
||
})
|
||
}
|
||
if (!arguments.length) {
|
||
return this.attr('class', '')
|
||
}
|
||
if (typeof value === 'string' && value) {
|
||
classes = value.match(rnotwhite) || [];
|
||
while (elem = this[i++]) {
|
||
curValue = getClass(elem);
|
||
// This expression is here for better compressibility (see addClass)
|
||
cur = elem.nodeType === 1 && (' ' + curValue + ' ').replace(rclass, ' ');
|
||
if (cur) {
|
||
j = 0;
|
||
while (clazz = classes[j++]) {
|
||
// Remove *all* instances
|
||
while (cur.indexOf(' ' + clazz + ' ') > -1) {
|
||
cur = cur.replace(' ' + clazz + ' ', ' ')
|
||
}
|
||
}
|
||
// Only assign if different to avoid unneeded rendering.
|
||
finalValue = jQuery.trim(cur);
|
||
if (curValue !== finalValue) {
|
||
elem.setAttribute('class', finalValue)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
toggleClass: function (value, stateVal) {
|
||
var type = typeof value;
|
||
if (typeof stateVal === 'boolean' && type === 'string') {
|
||
return stateVal ? this.addClass(value) : this.removeClass(value)
|
||
}
|
||
if (jQuery.isFunction(value)) {
|
||
return this.each(function (i) {
|
||
jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal)
|
||
})
|
||
}
|
||
return this.each(function () {
|
||
var className, i, self, classNames;
|
||
if (type === 'string') {
|
||
// Toggle individual class names
|
||
i = 0;
|
||
self = jQuery(this);
|
||
classNames = value.match(rnotwhite) || [];
|
||
while (className = classNames[i++]) {
|
||
// Check each className given, space separated list
|
||
if (self.hasClass(className)) {
|
||
self.removeClass(className)
|
||
} else {
|
||
self.addClass(className)
|
||
}
|
||
} // Toggle whole class name
|
||
} else if (value === undefined || type === 'boolean') {
|
||
className = getClass(this);
|
||
if (className) {
|
||
// Store className if set
|
||
dataPriv.set(this, '__className__', className)
|
||
}
|
||
// If the element has a class name or if we're passed `false`,
|
||
// then remove the whole classname (if there was one, the above saved it).
|
||
// Otherwise bring back whatever was previously saved (if anything),
|
||
// falling back to the empty string if nothing was stored.
|
||
if (this.setAttribute) {
|
||
this.setAttribute('class', className || value === false ? '' : dataPriv.get(this, '__className__') || '')
|
||
}
|
||
}
|
||
})
|
||
},
|
||
hasClass: function (selector) {
|
||
var className, elem, i = 0;
|
||
className = ' ' + selector + ' ';
|
||
while (elem = this[i++]) {
|
||
if (elem.nodeType === 1 && (' ' + getClass(elem) + ' ').replace(rclass, ' ').indexOf(className) > -1) {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
});
|
||
var rreturn = /\r/g, rspaces = /[\x20\t\r\n\f]+/g;
|
||
jQuery.fn.extend({
|
||
val: function (value) {
|
||
var hooks, ret, isFunction, elem = this[0];
|
||
if (!arguments.length) {
|
||
if (elem) {
|
||
hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];
|
||
if (hooks && 'get' in hooks && (ret = hooks.get(elem, 'value')) !== undefined) {
|
||
return ret
|
||
}
|
||
ret = elem.value;
|
||
return typeof ret === 'string' ? // Handle most common string cases
|
||
ret.replace(rreturn, '') : // Handle cases where value is null/undef or number
|
||
ret == null ? '' : ret
|
||
}
|
||
return
|
||
}
|
||
isFunction = jQuery.isFunction(value);
|
||
return this.each(function (i) {
|
||
var val;
|
||
if (this.nodeType !== 1) {
|
||
return
|
||
}
|
||
if (isFunction) {
|
||
val = value.call(this, i, jQuery(this).val())
|
||
} else {
|
||
val = value
|
||
}
|
||
// Treat null/undefined as ""; convert numbers to string
|
||
if (val == null) {
|
||
val = ''
|
||
} else if (typeof val === 'number') {
|
||
val += ''
|
||
} else if (jQuery.isArray(val)) {
|
||
val = jQuery.map(val, function (value) {
|
||
return value == null ? '' : value + ''
|
||
})
|
||
}
|
||
hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
|
||
// If set returns undefined, fall back to normal setting
|
||
if (!hooks || !('set' in hooks) || hooks.set(this, val, 'value') === undefined) {
|
||
this.value = val
|
||
}
|
||
})
|
||
}
|
||
});
|
||
jQuery.extend({
|
||
valHooks: {
|
||
option: {
|
||
get: function (elem) {
|
||
var val = jQuery.find.attr(elem, 'value');
|
||
return val != null ? val : // Support: IE10-11+
|
||
// option.text throws exceptions (#14686, #14858)
|
||
// Strip and collapse whitespace
|
||
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
||
jQuery.trim(jQuery.text(elem)).replace(rspaces, ' ')
|
||
}
|
||
},
|
||
select: {
|
||
get: function (elem) {
|
||
var value, option, options = elem.options, index = elem.selectedIndex, one = elem.type === 'select-one' || index < 0, values = one ? null : [], max = one ? index + 1 : options.length, i = index < 0 ? max : one ? index : 0;
|
||
// Loop through all the selected options
|
||
for (; i < max; i++) {
|
||
option = options[i];
|
||
// IE8-9 doesn't update selected after form reset (#2551)
|
||
if ((option.selected || i === index) && (support.optDisabled ? !option.disabled : option.getAttribute('disabled') === null) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, 'optgroup'))) {
|
||
// Get the specific value for the option
|
||
value = jQuery(option).val();
|
||
// We don't need an array for one selects
|
||
if (one) {
|
||
return value
|
||
}
|
||
// Multi-Selects return an array
|
||
values.push(value)
|
||
}
|
||
}
|
||
return values
|
||
},
|
||
set: function (elem, value) {
|
||
var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length;
|
||
while (i--) {
|
||
option = options[i];
|
||
if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
|
||
optionSet = true
|
||
}
|
||
}
|
||
// Force browsers to behave consistently when non-matching value is set
|
||
if (!optionSet) {
|
||
elem.selectedIndex = -1
|
||
}
|
||
return values
|
||
}
|
||
}
|
||
}
|
||
});
|
||
// Radios and checkboxes getter/setter
|
||
jQuery.each([
|
||
'radio',
|
||
'checkbox'
|
||
], function () {
|
||
jQuery.valHooks[this] = {
|
||
set: function (elem, value) {
|
||
if (jQuery.isArray(value)) {
|
||
return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1
|
||
}
|
||
}
|
||
};
|
||
if (!support.checkOn) {
|
||
jQuery.valHooks[this].get = function (elem) {
|
||
return elem.getAttribute('value') === null ? 'on' : elem.value
|
||
}
|
||
}
|
||
});
|
||
// Return jQuery for attributes-only inclusion
|
||
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
|
||
jQuery.extend(jQuery.event, {
|
||
trigger: function (event, data, elem, onlyHandlers) {
|
||
var i, cur, tmp, bubbleType, ontype, handle, special, eventPath = [elem || document], type = hasOwn.call(event, 'type') ? event.type : event, namespaces = hasOwn.call(event, 'namespace') ? event.namespace.split('.') : [];
|
||
cur = tmp = elem = elem || document;
|
||
// Don't do events on text and comment nodes
|
||
if (elem.nodeType === 3 || elem.nodeType === 8) {
|
||
return
|
||
}
|
||
// focus/blur morphs to focusin/out; ensure we're not firing them right now
|
||
if (rfocusMorph.test(type + jQuery.event.triggered)) {
|
||
return
|
||
}
|
||
if (type.indexOf('.') > -1) {
|
||
// Namespaced trigger; create a regexp to match event type in handle()
|
||
namespaces = type.split('.');
|
||
type = namespaces.shift();
|
||
namespaces.sort()
|
||
}
|
||
ontype = type.indexOf(':') < 0 && 'on' + type;
|
||
// Caller can pass in a jQuery.Event object, Object, or just an event type string
|
||
event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === 'object' && event);
|
||
// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
|
||
event.isTrigger = onlyHandlers ? 2 : 3;
|
||
event.namespace = namespaces.join('.');
|
||
event.rnamespace = event.namespace ? new RegExp('(^|\\.)' + namespaces.join('\\.(?:.*\\.|)') + '(\\.|$)') : null;
|
||
// Clean up the event in case it is being reused
|
||
event.result = undefined;
|
||
if (!event.target) {
|
||
event.target = elem
|
||
}
|
||
// Clone any incoming data and prepend the event, creating the handler arg list
|
||
data = data == null ? [event] : jQuery.makeArray(data, [event]);
|
||
// Allow special events to draw outside the lines
|
||
special = jQuery.event.special[type] || {};
|
||
if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
|
||
return
|
||
}
|
||
// Determine event propagation path in advance, per W3C events spec (#9951)
|
||
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
||
if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
|
||
bubbleType = special.delegateType || type;
|
||
if (!rfocusMorph.test(bubbleType + type)) {
|
||
cur = cur.parentNode
|
||
}
|
||
for (; cur; cur = cur.parentNode) {
|
||
eventPath.push(cur);
|
||
tmp = cur
|
||
}
|
||
// Only add window if we got to document (e.g., not plain obj or detached DOM)
|
||
if (tmp === (elem.ownerDocument || document)) {
|
||
eventPath.push(tmp.defaultView || tmp.parentWindow || window)
|
||
}
|
||
}
|
||
// Fire handlers on the event path
|
||
i = 0;
|
||
while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
|
||
event.type = i > 1 ? bubbleType : special.bindType || type;
|
||
// jQuery handler
|
||
handle = (dataPriv.get(cur, 'events') || {})[event.type] && dataPriv.get(cur, 'handle');
|
||
if (handle) {
|
||
handle.apply(cur, data)
|
||
}
|
||
// Native handler
|
||
handle = ontype && cur[ontype];
|
||
if (handle && handle.apply && acceptData(cur)) {
|
||
event.result = handle.apply(cur, data);
|
||
if (event.result === false) {
|
||
event.preventDefault()
|
||
}
|
||
}
|
||
}
|
||
event.type = type;
|
||
// If nobody prevented the default action, do it now
|
||
if (!onlyHandlers && !event.isDefaultPrevented()) {
|
||
if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
|
||
// Call a native DOM method on the target with the same name name as the event.
|
||
// Don't do default actions on window, that's where global variables be (#6170)
|
||
if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {
|
||
// Don't re-trigger an onFOO event when we call its FOO() method
|
||
tmp = elem[ontype];
|
||
if (tmp) {
|
||
elem[ontype] = null
|
||
}
|
||
// Prevent re-triggering of the same event, since we already bubbled it above
|
||
jQuery.event.triggered = type;
|
||
elem[type]();
|
||
jQuery.event.triggered = undefined;
|
||
if (tmp) {
|
||
elem[ontype] = tmp
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return event.result
|
||
},
|
||
// Piggyback on a donor event to simulate a different one
|
||
simulate: function (type, elem, event) {
|
||
var e = jQuery.extend(new jQuery.Event, event, {
|
||
type: type,
|
||
isSimulated: true // Previously, `originalEvent: {}` was set here, so stopPropagation call
|
||
// would not be triggered on donor event, since in our own
|
||
// jQuery.event.stopPropagation function we had a check for existence of
|
||
// originalEvent.stopPropagation method, so, consequently it would be a noop.
|
||
//
|
||
// But now, this "simulate" function is used only for events
|
||
// for which stopPropagation() is noop, so there is no need for that anymore.
|
||
//
|
||
// For the 1.x branch though, guard for "click" and "submit"
|
||
// events is still used, but was moved to jQuery.event.stopPropagation function
|
||
// because `originalEvent` should point to the original event for the constancy
|
||
// with other events and for more focused logic
|
||
});
|
||
jQuery.event.trigger(e, null, elem);
|
||
if (e.isDefaultPrevented()) {
|
||
event.preventDefault()
|
||
}
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
trigger: function (type, data) {
|
||
return this.each(function () {
|
||
jQuery.event.trigger(type, data, this)
|
||
})
|
||
},
|
||
triggerHandler: function (type, data) {
|
||
var elem = this[0];
|
||
if (elem) {
|
||
return jQuery.event.trigger(type, data, elem, true)
|
||
}
|
||
}
|
||
});
|
||
jQuery.each(('blur focus focusin focusout load resize scroll unload click dblclick ' + 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' + 'change select submit keydown keypress keyup error contextmenu').split(' '), function (i, name) {
|
||
// Handle event binding
|
||
jQuery.fn[name] = function (data, fn) {
|
||
return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name)
|
||
}
|
||
});
|
||
jQuery.fn.extend({
|
||
hover: function (fnOver, fnOut) {
|
||
return this.mouseenter(fnOver).mouseleave(fnOut || fnOver)
|
||
}
|
||
});
|
||
support.focusin = 'onfocusin' in window;
|
||
// Support: Firefox
|
||
// Firefox doesn't have focus(in | out) events
|
||
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
||
//
|
||
// Support: Chrome, Safari
|
||
// focus(in | out) events fire after focus & blur events,
|
||
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
|
||
// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
|
||
if (!support.focusin) {
|
||
jQuery.each({
|
||
focus: 'focusin',
|
||
blur: 'focusout'
|
||
}, function (orig, fix) {
|
||
// Attach a single capturing handler on the document while someone wants focusin/focusout
|
||
var handler = function (event) {
|
||
jQuery.event.simulate(fix, event.target, jQuery.event.fix(event))
|
||
};
|
||
jQuery.event.special[fix] = {
|
||
setup: function () {
|
||
var doc = this.ownerDocument || this, attaches = dataPriv.access(doc, fix);
|
||
if (!attaches) {
|
||
doc.addEventListener(orig, handler, true)
|
||
}
|
||
dataPriv.access(doc, fix, (attaches || 0) + 1)
|
||
},
|
||
teardown: function () {
|
||
var doc = this.ownerDocument || this, attaches = dataPriv.access(doc, fix) - 1;
|
||
if (!attaches) {
|
||
doc.removeEventListener(orig, handler, true);
|
||
dataPriv.remove(doc, fix)
|
||
} else {
|
||
dataPriv.access(doc, fix, attaches)
|
||
}
|
||
}
|
||
}
|
||
})
|
||
}
|
||
var location = window.location;
|
||
var nonce = jQuery.now();
|
||
var rquery = /\?/;
|
||
// Support: Android 2.3
|
||
// Workaround failure to string-cast null input
|
||
jQuery.parseJSON = function (data) {
|
||
return JSON.parse(data + '')
|
||
};
|
||
// Cross-browser xml parsing
|
||
jQuery.parseXML = function (data) {
|
||
var xml;
|
||
if (!data || typeof data !== 'string') {
|
||
return null
|
||
}
|
||
// Support: IE9
|
||
try {
|
||
xml = new window.DOMParser().parseFromString(data, 'text/xml')
|
||
} catch (e) {
|
||
xml = undefined
|
||
}
|
||
if (!xml || xml.getElementsByTagName('parsererror').length) {
|
||
jQuery.error('Invalid XML: ' + data)
|
||
}
|
||
return xml
|
||
};
|
||
var rhash = /#.*$/, rts = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/gm,
|
||
// #7653, #8125, #8152: local protocol detection
|
||
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//,
|
||
/* Prefilters
|
||
* 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
||
* 2) These are called:
|
||
* - BEFORE asking for a transport
|
||
* - AFTER param serialization (s.data is a string if s.processData is true)
|
||
* 3) key is the dataType
|
||
* 4) the catchall symbol "*" can be used
|
||
* 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
||
*/
|
||
prefilters = {},
|
||
/* Transports bindings
|
||
* 1) key is the dataType
|
||
* 2) the catchall symbol "*" can be used
|
||
* 3) selection will start with transport dataType and THEN go to "*" if needed
|
||
*/
|
||
transports = {},
|
||
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
||
allTypes = '*/'.concat('*'),
|
||
// Anchor tag for parsing the document origin
|
||
originAnchor = document.createElement('a');
|
||
originAnchor.href = location.href;
|
||
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
||
function addToPrefiltersOrTransports(structure) {
|
||
// dataTypeExpression is optional and defaults to "*"
|
||
return function (dataTypeExpression, func) {
|
||
if (typeof dataTypeExpression !== 'string') {
|
||
func = dataTypeExpression;
|
||
dataTypeExpression = '*'
|
||
}
|
||
var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
|
||
if (jQuery.isFunction(func)) {
|
||
// For each dataType in the dataTypeExpression
|
||
while (dataType = dataTypes[i++]) {
|
||
// Prepend if requested
|
||
if (dataType[0] === '+') {
|
||
dataType = dataType.slice(1) || '*';
|
||
(structure[dataType] = structure[dataType] || []).unshift(func) // Otherwise append
|
||
} else {
|
||
(structure[dataType] = structure[dataType] || []).push(func)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Base inspection function for prefilters and transports
|
||
function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
|
||
var inspected = {}, seekingTransport = structure === transports;
|
||
function inspect(dataType) {
|
||
var selected;
|
||
inspected[dataType] = true;
|
||
jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
|
||
var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
|
||
if (typeof dataTypeOrTransport === 'string' && !seekingTransport && !inspected[dataTypeOrTransport]) {
|
||
options.dataTypes.unshift(dataTypeOrTransport);
|
||
inspect(dataTypeOrTransport);
|
||
return false
|
||
} else if (seekingTransport) {
|
||
return !(selected = dataTypeOrTransport)
|
||
}
|
||
});
|
||
return selected
|
||
}
|
||
return inspect(options.dataTypes[0]) || !inspected['*'] && inspect('*')
|
||
}
|
||
// A special extend for ajax options
|
||
// that takes "flat" options (not to be deep extended)
|
||
// Fixes #9887
|
||
function ajaxExtend(target, src) {
|
||
var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
||
for (key in src) {
|
||
if (src[key] !== undefined) {
|
||
(flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]
|
||
}
|
||
}
|
||
if (deep) {
|
||
jQuery.extend(true, target, deep)
|
||
}
|
||
return target
|
||
}
|
||
/* Handles responses to an ajax request:
|
||
* - finds the right dataType (mediates between content-type and expected dataType)
|
||
* - returns the corresponding response
|
||
*/
|
||
function ajaxHandleResponses(s, jqXHR, responses) {
|
||
var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
|
||
// Remove auto dataType and get content-type in the process
|
||
while (dataTypes[0] === '*') {
|
||
dataTypes.shift();
|
||
if (ct === undefined) {
|
||
ct = s.mimeType || jqXHR.getResponseHeader('Content-Type')
|
||
}
|
||
}
|
||
// Check if we're dealing with a known content-type
|
||
if (ct) {
|
||
for (type in contents) {
|
||
if (contents[type] && contents[type].test(ct)) {
|
||
dataTypes.unshift(type);
|
||
break
|
||
}
|
||
}
|
||
}
|
||
// Check to see if we have a response for the expected dataType
|
||
if (dataTypes[0] in responses) {
|
||
finalDataType = dataTypes[0]
|
||
} else {
|
||
// Try convertible dataTypes
|
||
for (type in responses) {
|
||
if (!dataTypes[0] || s.converters[type + ' ' + dataTypes[0]]) {
|
||
finalDataType = type;
|
||
break
|
||
}
|
||
if (!firstDataType) {
|
||
firstDataType = type
|
||
}
|
||
}
|
||
// Or just use first one
|
||
finalDataType = finalDataType || firstDataType
|
||
}
|
||
// If we found a dataType
|
||
// We add the dataType to the list if needed
|
||
// and return the corresponding response
|
||
if (finalDataType) {
|
||
if (finalDataType !== dataTypes[0]) {
|
||
dataTypes.unshift(finalDataType)
|
||
}
|
||
return responses[finalDataType]
|
||
}
|
||
}
|
||
/* Chain conversions given the request and the original response
|
||
* Also sets the responseXXX fields on the jqXHR instance
|
||
*/
|
||
function ajaxConvert(s, response, jqXHR, isSuccess) {
|
||
var conv2, current, conv, tmp, prev, converters = {},
|
||
// Work with a copy of dataTypes in case we need to modify it for conversion
|
||
dataTypes = s.dataTypes.slice();
|
||
// Create converters map with lowercased keys
|
||
if (dataTypes[1]) {
|
||
for (conv in s.converters) {
|
||
converters[conv.toLowerCase()] = s.converters[conv]
|
||
}
|
||
}
|
||
current = dataTypes.shift();
|
||
// Convert to each sequential dataType
|
||
while (current) {
|
||
if (s.responseFields[current]) {
|
||
jqXHR[s.responseFields[current]] = response
|
||
}
|
||
// Apply the dataFilter if provided
|
||
if (!prev && isSuccess && s.dataFilter) {
|
||
response = s.dataFilter(response, s.dataType)
|
||
}
|
||
prev = current;
|
||
current = dataTypes.shift();
|
||
if (current) {
|
||
// There's only work to do if current dataType is non-auto
|
||
if (current === '*') {
|
||
current = prev // Convert response if prev dataType is non-auto and differs from current
|
||
} else if (prev !== '*' && prev !== current) {
|
||
// Seek a direct converter
|
||
conv = converters[prev + ' ' + current] || converters['* ' + current];
|
||
// If none found, seek a pair
|
||
if (!conv) {
|
||
for (conv2 in converters) {
|
||
// If conv2 outputs current
|
||
tmp = conv2.split(' ');
|
||
if (tmp[1] === current) {
|
||
// If prev can be converted to accepted input
|
||
conv = converters[prev + ' ' + tmp[0]] || converters['* ' + tmp[0]];
|
||
if (conv) {
|
||
// Condense equivalence converters
|
||
if (conv === true) {
|
||
conv = converters[conv2] // Otherwise, insert the intermediate dataType
|
||
} else if (converters[conv2] !== true) {
|
||
current = tmp[0];
|
||
dataTypes.unshift(tmp[1])
|
||
}
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// Apply converter (if not an equivalence)
|
||
if (conv !== true) {
|
||
// Unless errors are allowed to bubble, catch and return them
|
||
if (conv && s.throws) {
|
||
response = conv(response)
|
||
} else {
|
||
try {
|
||
response = conv(response)
|
||
} catch (e) {
|
||
return {
|
||
state: 'parsererror',
|
||
error: conv ? e : 'No conversion from ' + prev + ' to ' + current
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return {
|
||
state: 'success',
|
||
data: response
|
||
}
|
||
}
|
||
jQuery.extend({
|
||
// Counter for holding the number of active queries
|
||
active: 0,
|
||
// Last-Modified header cache for next request
|
||
lastModified: {},
|
||
etag: {},
|
||
ajaxSettings: {
|
||
url: location.href,
|
||
type: 'GET',
|
||
isLocal: rlocalProtocol.test(location.protocol),
|
||
global: true,
|
||
processData: true,
|
||
async: true,
|
||
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
|
||
/*
|
||
timeout: 0,
|
||
data: null,
|
||
dataType: null,
|
||
username: null,
|
||
password: null,
|
||
cache: null,
|
||
throws: false,
|
||
traditional: false,
|
||
headers: {},
|
||
*/
|
||
accepts: {
|
||
'*': allTypes,
|
||
text: 'text/plain',
|
||
html: 'text/html',
|
||
xml: 'application/xml, text/xml',
|
||
json: 'application/json, text/javascript'
|
||
},
|
||
contents: {
|
||
xml: /\bxml\b/,
|
||
html: /\bhtml/,
|
||
json: /\bjson\b/
|
||
},
|
||
responseFields: {
|
||
xml: 'responseXML',
|
||
text: 'responseText',
|
||
json: 'responseJSON'
|
||
},
|
||
// Data converters
|
||
// Keys separate source (or catchall "*") and destination types with a single space
|
||
converters: {
|
||
// Convert anything to text
|
||
'* text': String,
|
||
// Text to html (true = no transformation)
|
||
'text html': true,
|
||
// Evaluate text as a json expression
|
||
'text json': jQuery.parseJSON,
|
||
// Parse text as xml
|
||
'text xml': jQuery.parseXML
|
||
},
|
||
// For options that shouldn't be deep extended:
|
||
// you can add your own custom options here if
|
||
// and when you create one that shouldn't be
|
||
// deep extended (see ajaxExtend)
|
||
flatOptions: {
|
||
url: true,
|
||
context: true
|
||
}
|
||
},
|
||
// Creates a full fledged settings object into target
|
||
// with both ajaxSettings and settings fields.
|
||
// If target is omitted, writes into ajaxSettings.
|
||
ajaxSetup: function (target, settings) {
|
||
return settings ? // Building a settings object
|
||
ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings
|
||
ajaxExtend(jQuery.ajaxSettings, target)
|
||
},
|
||
ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
|
||
ajaxTransport: addToPrefiltersOrTransports(transports),
|
||
// Main method
|
||
ajax: function (url, options) {
|
||
// If url is an object, simulate pre-1.5 signature
|
||
if (typeof url === 'object') {
|
||
options = url;
|
||
url = undefined
|
||
}
|
||
// Force options to be an object
|
||
options = options || {};
|
||
var transport,
|
||
// URL without anti-cache param
|
||
cacheURL,
|
||
// Response headers
|
||
responseHeadersString, responseHeaders,
|
||
// timeout handle
|
||
timeoutTimer,
|
||
// Url cleanup var
|
||
urlAnchor,
|
||
// To know if global events are to be dispatched
|
||
fireGlobals,
|
||
// Loop variable
|
||
i,
|
||
// Create the final options object
|
||
s = jQuery.ajaxSetup({}, options),
|
||
// Callbacks context
|
||
callbackContext = s.context || s,
|
||
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
||
globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
|
||
// Deferreds
|
||
deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks('once memory'),
|
||
// Status-dependent callbacks
|
||
statusCode = s.statusCode || {},
|
||
// Headers (they are sent all at once)
|
||
requestHeaders = {}, requestHeadersNames = {},
|
||
// The jqXHR state
|
||
state = 0,
|
||
// Default abort message
|
||
strAbort = 'canceled',
|
||
// Fake xhr
|
||
jqXHR = {
|
||
readyState: 0,
|
||
// Builds headers hashtable if needed
|
||
getResponseHeader: function (key) {
|
||
var match;
|
||
if (state === 2) {
|
||
if (!responseHeaders) {
|
||
responseHeaders = {};
|
||
while (match = rheaders.exec(responseHeadersString)) {
|
||
responseHeaders[match[1].toLowerCase()] = match[2]
|
||
}
|
||
}
|
||
match = responseHeaders[key.toLowerCase()]
|
||
}
|
||
return match == null ? null : match
|
||
},
|
||
// Raw string
|
||
getAllResponseHeaders: function () {
|
||
return state === 2 ? responseHeadersString : null
|
||
},
|
||
// Caches the header
|
||
setRequestHeader: function (name, value) {
|
||
var lname = name.toLowerCase();
|
||
if (!state) {
|
||
name = requestHeadersNames[lname] = requestHeadersNames[lname] || name;
|
||
requestHeaders[name] = value
|
||
}
|
||
return this
|
||
},
|
||
// Overrides response content-type header
|
||
overrideMimeType: function (type) {
|
||
if (!state) {
|
||
s.mimeType = type
|
||
}
|
||
return this
|
||
},
|
||
// Status-dependent callbacks
|
||
statusCode: function (map) {
|
||
var code;
|
||
if (map) {
|
||
if (state < 2) {
|
||
for (code in map) {
|
||
// Lazy-add the new callback in a way that preserves old ones
|
||
statusCode[code] = [
|
||
statusCode[code],
|
||
map[code]
|
||
]
|
||
}
|
||
} else {
|
||
// Execute the appropriate callbacks
|
||
jqXHR.always(map[jqXHR.status])
|
||
}
|
||
}
|
||
return this
|
||
},
|
||
// Cancel the request
|
||
abort: function (statusText) {
|
||
var finalText = statusText || strAbort;
|
||
if (transport) {
|
||
transport.abort(finalText)
|
||
}
|
||
done(0, finalText);
|
||
return this
|
||
}
|
||
};
|
||
// Attach deferreds
|
||
deferred.promise(jqXHR).complete = completeDeferred.add;
|
||
jqXHR.success = jqXHR.done;
|
||
jqXHR.error = jqXHR.fail;
|
||
// Remove hash character (#7531: and string promotion)
|
||
// Add protocol if not provided (prefilters might expect it)
|
||
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
||
// We also use the url parameter if available
|
||
s.url = ((url || s.url || location.href) + '').replace(rhash, '').replace(rprotocol, location.protocol + '//');
|
||
// Alias method option to type as per ticket #12004
|
||
s.type = options.method || options.type || s.method || s.type;
|
||
// Extract dataTypes list
|
||
s.dataTypes = jQuery.trim(s.dataType || '*').toLowerCase().match(rnotwhite) || [''];
|
||
// A cross-domain request is in order when the origin doesn't match the current origin.
|
||
if (s.crossDomain == null) {
|
||
urlAnchor = document.createElement('a');
|
||
// Support: IE8-11+
|
||
// IE throws exception if url is malformed, e.g. http://example.com:80x/
|
||
try {
|
||
urlAnchor.href = s.url;
|
||
// Support: IE8-11+
|
||
// Anchor's host property isn't correctly set when s.url is relative
|
||
urlAnchor.href = urlAnchor.href;
|
||
s.crossDomain = originAnchor.protocol + '//' + originAnchor.host !== urlAnchor.protocol + '//' + urlAnchor.host
|
||
} catch (e) {
|
||
// If there is an error parsing the URL, assume it is crossDomain,
|
||
// it can be rejected by the transport if it is invalid
|
||
s.crossDomain = true
|
||
}
|
||
}
|
||
// Convert data if not already a string
|
||
if (s.data && s.processData && typeof s.data !== 'string') {
|
||
s.data = jQuery.param(s.data, s.traditional)
|
||
}
|
||
// Apply prefilters
|
||
inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
|
||
// If request was aborted inside a prefilter, stop there
|
||
if (state === 2) {
|
||
return jqXHR
|
||
}
|
||
// We can fire global events as of now if asked to
|
||
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
|
||
fireGlobals = jQuery.event && s.global;
|
||
// Watch for a new set of requests
|
||
if (fireGlobals && jQuery.active++ === 0) {
|
||
jQuery.event.trigger('ajaxStart')
|
||
}
|
||
// Uppercase the type
|
||
s.type = s.type.toUpperCase();
|
||
// Determine if request has content
|
||
s.hasContent = !rnoContent.test(s.type);
|
||
// Save the URL in case we're toying with the If-Modified-Since
|
||
// and/or If-None-Match header later on
|
||
cacheURL = s.url;
|
||
// More options handling for requests with no content
|
||
if (!s.hasContent) {
|
||
// If data is available, append data to url
|
||
if (s.data) {
|
||
cacheURL = s.url += (rquery.test(cacheURL) ? '&' : '?') + s.data;
|
||
// #9682: remove data so that it's not used in an eventual retry
|
||
delete s.data
|
||
}
|
||
// Add anti-cache in url if needed
|
||
if (s.cache === false) {
|
||
s.url = rts.test(cacheURL) ? // If there is already a '_' parameter, set its value
|
||
cacheURL.replace(rts, '$1_=' + nonce++) : // Otherwise add one to the end
|
||
cacheURL + (rquery.test(cacheURL) ? '&' : '?') + '_=' + nonce++
|
||
}
|
||
}
|
||
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
if (s.ifModified) {
|
||
if (jQuery.lastModified[cacheURL]) {
|
||
jqXHR.setRequestHeader('If-Modified-Since', jQuery.lastModified[cacheURL])
|
||
}
|
||
if (jQuery.etag[cacheURL]) {
|
||
jqXHR.setRequestHeader('If-None-Match', jQuery.etag[cacheURL])
|
||
}
|
||
}
|
||
// Set the correct header, if data is being sent
|
||
if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
|
||
jqXHR.setRequestHeader('Content-Type', s.contentType)
|
||
}
|
||
// Set the Accepts header for the server, depending on the dataType
|
||
jqXHR.setRequestHeader('Accept', s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== '*' ? ', ' + allTypes + '; q=0.01' : '') : s.accepts['*']);
|
||
// Check for headers option
|
||
for (i in s.headers) {
|
||
jqXHR.setRequestHeader(i, s.headers[i])
|
||
}
|
||
// Allow custom headers/mimetypes and early abort
|
||
if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) {
|
||
// Abort if not done already and return
|
||
return jqXHR.abort()
|
||
}
|
||
// Aborting is no longer a cancellation
|
||
strAbort = 'abort';
|
||
// Install callbacks on deferreds
|
||
for (i in {
|
||
success: 1,
|
||
error: 1,
|
||
complete: 1
|
||
}) {
|
||
jqXHR[i](s[i])
|
||
}
|
||
// Get transport
|
||
transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
|
||
// If no transport, we auto-abort
|
||
if (!transport) {
|
||
done(-1, 'No Transport')
|
||
} else {
|
||
jqXHR.readyState = 1;
|
||
// Send global event
|
||
if (fireGlobals) {
|
||
globalEventContext.trigger('ajaxSend', [
|
||
jqXHR,
|
||
s
|
||
])
|
||
}
|
||
// If request was aborted inside ajaxSend, stop there
|
||
if (state === 2) {
|
||
return jqXHR
|
||
}
|
||
// Timeout
|
||
if (s.async && s.timeout > 0) {
|
||
timeoutTimer = window.setTimeout(function () {
|
||
jqXHR.abort('timeout')
|
||
}, s.timeout)
|
||
}
|
||
try {
|
||
state = 1;
|
||
transport.send(requestHeaders, done)
|
||
} catch (e) {
|
||
// Propagate exception as error if not done
|
||
if (state < 2) {
|
||
done(-1, e) // Simply rethrow otherwise
|
||
} else {
|
||
throw e
|
||
}
|
||
}
|
||
}
|
||
// Callback for when everything is done
|
||
function done(status, nativeStatusText, responses, headers) {
|
||
var isSuccess, success, error, response, modified, statusText = nativeStatusText;
|
||
// Called once
|
||
if (state === 2) {
|
||
return
|
||
}
|
||
// State is "done" now
|
||
state = 2;
|
||
// Clear timeout if it exists
|
||
if (timeoutTimer) {
|
||
window.clearTimeout(timeoutTimer)
|
||
}
|
||
// Dereference transport for early garbage collection
|
||
// (no matter how long the jqXHR object will be used)
|
||
transport = undefined;
|
||
// Cache response headers
|
||
responseHeadersString = headers || '';
|
||
// Set readyState
|
||
jqXHR.readyState = status > 0 ? 4 : 0;
|
||
// Determine if successful
|
||
isSuccess = status >= 200 && status < 300 || status === 304;
|
||
// Get response data
|
||
if (responses) {
|
||
response = ajaxHandleResponses(s, jqXHR, responses)
|
||
}
|
||
// Convert no matter what (that way responseXXX fields are always set)
|
||
response = ajaxConvert(s, response, jqXHR, isSuccess);
|
||
// If successful, handle type chaining
|
||
if (isSuccess) {
|
||
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
if (s.ifModified) {
|
||
modified = jqXHR.getResponseHeader('Last-Modified');
|
||
if (modified) {
|
||
jQuery.lastModified[cacheURL] = modified
|
||
}
|
||
modified = jqXHR.getResponseHeader('etag');
|
||
if (modified) {
|
||
jQuery.etag[cacheURL] = modified
|
||
}
|
||
}
|
||
// if no content
|
||
if (status === 204 || s.type === 'HEAD') {
|
||
statusText = 'nocontent' // if not modified
|
||
} else if (status === 304) {
|
||
statusText = 'notmodified' // If we have data, let's convert it
|
||
} else {
|
||
statusText = response.state;
|
||
success = response.data;
|
||
error = response.error;
|
||
isSuccess = !error
|
||
}
|
||
} else {
|
||
// Extract error from statusText and normalize for non-aborts
|
||
error = statusText;
|
||
if (status || !statusText) {
|
||
statusText = 'error';
|
||
if (status < 0) {
|
||
status = 0
|
||
}
|
||
}
|
||
}
|
||
// Set data for the fake xhr object
|
||
jqXHR.status = status;
|
||
jqXHR.statusText = (nativeStatusText || statusText) + '';
|
||
// Success/Error
|
||
if (isSuccess) {
|
||
deferred.resolveWith(callbackContext, [
|
||
success,
|
||
statusText,
|
||
jqXHR
|
||
])
|
||
} else {
|
||
deferred.rejectWith(callbackContext, [
|
||
jqXHR,
|
||
statusText,
|
||
error
|
||
])
|
||
}
|
||
// Status-dependent callbacks
|
||
jqXHR.statusCode(statusCode);
|
||
statusCode = undefined;
|
||
if (fireGlobals) {
|
||
globalEventContext.trigger(isSuccess ? 'ajaxSuccess' : 'ajaxError', [
|
||
jqXHR,
|
||
s,
|
||
isSuccess ? success : error
|
||
])
|
||
}
|
||
// Complete
|
||
completeDeferred.fireWith(callbackContext, [
|
||
jqXHR,
|
||
statusText
|
||
]);
|
||
if (fireGlobals) {
|
||
globalEventContext.trigger('ajaxComplete', [
|
||
jqXHR,
|
||
s
|
||
]);
|
||
// Handle the global AJAX counter
|
||
if (!--jQuery.active) {
|
||
jQuery.event.trigger('ajaxStop')
|
||
}
|
||
}
|
||
}
|
||
return jqXHR
|
||
},
|
||
getJSON: function (url, data, callback) {
|
||
return jQuery.get(url, data, callback, 'json')
|
||
},
|
||
getScript: function (url, callback) {
|
||
return jQuery.get(url, undefined, callback, 'script')
|
||
}
|
||
});
|
||
jQuery.each([
|
||
'get',
|
||
'post'
|
||
], function (i, method) {
|
||
jQuery[method] = function (url, data, callback, type) {
|
||
// Shift arguments if data argument was omitted
|
||
if (jQuery.isFunction(data)) {
|
||
type = type || callback;
|
||
callback = data;
|
||
data = undefined
|
||
}
|
||
// The url can be an options object (which then must have .url)
|
||
return jQuery.ajax(jQuery.extend({
|
||
url: url,
|
||
type: method,
|
||
dataType: type,
|
||
data: data,
|
||
success: callback
|
||
}, jQuery.isPlainObject(url) && url))
|
||
}
|
||
});
|
||
jQuery._evalUrl = function (url) {
|
||
return jQuery.ajax({
|
||
url: url,
|
||
// Make this explicit, since user can override this through ajaxSetup (#11264)
|
||
type: 'GET',
|
||
dataType: 'script',
|
||
async: false,
|
||
global: false,
|
||
'throws': true
|
||
})
|
||
};
|
||
jQuery.fn.extend({
|
||
wrapAll: function (html) {
|
||
var wrap;
|
||
if (jQuery.isFunction(html)) {
|
||
return this.each(function (i) {
|
||
jQuery(this).wrapAll(html.call(this, i))
|
||
})
|
||
}
|
||
if (this[0]) {
|
||
// The elements to wrap the target around
|
||
wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
|
||
if (this[0].parentNode) {
|
||
wrap.insertBefore(this[0])
|
||
}
|
||
wrap.map(function () {
|
||
var elem = this;
|
||
while (elem.firstElementChild) {
|
||
elem = elem.firstElementChild
|
||
}
|
||
return elem
|
||
}).append(this)
|
||
}
|
||
return this
|
||
},
|
||
wrapInner: function (html) {
|
||
if (jQuery.isFunction(html)) {
|
||
return this.each(function (i) {
|
||
jQuery(this).wrapInner(html.call(this, i))
|
||
})
|
||
}
|
||
return this.each(function () {
|
||
var self = jQuery(this), contents = self.contents();
|
||
if (contents.length) {
|
||
contents.wrapAll(html)
|
||
} else {
|
||
self.append(html)
|
||
}
|
||
})
|
||
},
|
||
wrap: function (html) {
|
||
var isFunction = jQuery.isFunction(html);
|
||
return this.each(function (i) {
|
||
jQuery(this).wrapAll(isFunction ? html.call(this, i) : html)
|
||
})
|
||
},
|
||
unwrap: function () {
|
||
return this.parent().each(function () {
|
||
if (!jQuery.nodeName(this, 'body')) {
|
||
jQuery(this).replaceWith(this.childNodes)
|
||
}
|
||
}).end()
|
||
}
|
||
});
|
||
jQuery.expr.filters.hidden = function (elem) {
|
||
return !jQuery.expr.filters.visible(elem)
|
||
};
|
||
jQuery.expr.filters.visible = function (elem) {
|
||
// Support: Opera <= 12.12
|
||
// Opera reports offsetWidths and offsetHeights less than zero on some elements
|
||
// Use OR instead of AND as the element is not visible if either is true
|
||
// See tickets #10406 and #13132
|
||
return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0
|
||
};
|
||
var r20 = /%20/g, rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
||
function buildParams(prefix, obj, traditional, add) {
|
||
var name;
|
||
if (jQuery.isArray(obj)) {
|
||
// Serialize array item.
|
||
jQuery.each(obj, function (i, v) {
|
||
if (traditional || rbracket.test(prefix)) {
|
||
// Treat each array item as a scalar.
|
||
add(prefix, v)
|
||
} else {
|
||
// Item is non-scalar (array or object), encode its numeric index.
|
||
buildParams(prefix + '[' + (typeof v === 'object' && v != null ? i : '') + ']', v, traditional, add)
|
||
}
|
||
})
|
||
} else if (!traditional && jQuery.type(obj) === 'object') {
|
||
// Serialize object item.
|
||
for (name in obj) {
|
||
buildParams(prefix + '[' + name + ']', obj[name], traditional, add)
|
||
}
|
||
} else {
|
||
// Serialize scalar item.
|
||
add(prefix, obj)
|
||
}
|
||
}
|
||
// Serialize an array of form elements or a set of
|
||
// key/values into a query string
|
||
jQuery.param = function (a, traditional) {
|
||
var prefix, s = [], add = function (key, value) {
|
||
// If value is a function, invoke it and return its value
|
||
value = jQuery.isFunction(value) ? value() : value == null ? '' : value;
|
||
s[s.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value)
|
||
};
|
||
// Set traditional to true for jQuery <= 1.3.2 behavior.
|
||
if (traditional === undefined) {
|
||
traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional
|
||
}
|
||
// If an array was passed in, assume that it is an array of form elements.
|
||
if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
|
||
// Serialize the form elements
|
||
jQuery.each(a, function () {
|
||
add(this.name, this.value)
|
||
})
|
||
} else {
|
||
// If traditional, encode the "old" way (the way 1.3.2 or older
|
||
// did it), otherwise encode params recursively.
|
||
for (prefix in a) {
|
||
buildParams(prefix, a[prefix], traditional, add)
|
||
}
|
||
}
|
||
// Return the resulting serialization
|
||
return s.join('&').replace(r20, '+')
|
||
};
|
||
jQuery.fn.extend({
|
||
serialize: function () {
|
||
return jQuery.param(this.serializeArray())
|
||
},
|
||
serializeArray: function () {
|
||
return this.map(function () {
|
||
// Can add propHook for "elements" to filter or add form elements
|
||
var elements = jQuery.prop(this, 'elements');
|
||
return elements ? jQuery.makeArray(elements) : this
|
||
}).filter(function () {
|
||
var type = this.type;
|
||
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
||
return this.name && !jQuery(this).is(':disabled') && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type))
|
||
}).map(function (i, elem) {
|
||
var val = jQuery(this).val();
|
||
return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
|
||
return {
|
||
name: elem.name,
|
||
value: val.replace(rCRLF, '\r\n')
|
||
}
|
||
}) : {
|
||
name: elem.name,
|
||
value: val.replace(rCRLF, '\r\n')
|
||
}
|
||
}).get()
|
||
}
|
||
});
|
||
jQuery.ajaxSettings.xhr = function () {
|
||
try {
|
||
return new window.XMLHttpRequest
|
||
} catch (e) {
|
||
}
|
||
};
|
||
var xhrSuccessStatus = {
|
||
// File protocol always yields status code 0, assume 200
|
||
0: 200,
|
||
// Support: IE9
|
||
// #1450: sometimes IE returns 1223 when it should be 204
|
||
1223: 204
|
||
}, xhrSupported = jQuery.ajaxSettings.xhr();
|
||
support.cors = !!xhrSupported && 'withCredentials' in xhrSupported;
|
||
support.ajax = xhrSupported = !!xhrSupported;
|
||
jQuery.ajaxTransport(function (options) {
|
||
var callback, errorCallback;
|
||
// Cross domain only allowed if supported through XMLHttpRequest
|
||
if (support.cors || xhrSupported && !options.crossDomain) {
|
||
return {
|
||
send: function (headers, complete) {
|
||
var i, xhr = options.xhr();
|
||
xhr.open(options.type, options.url, options.async, options.username, options.password);
|
||
// Apply custom fields if provided
|
||
if (options.xhrFields) {
|
||
for (i in options.xhrFields) {
|
||
xhr[i] = options.xhrFields[i]
|
||
}
|
||
}
|
||
// Override mime type if needed
|
||
if (options.mimeType && xhr.overrideMimeType) {
|
||
xhr.overrideMimeType(options.mimeType)
|
||
}
|
||
// X-Requested-With header
|
||
// For cross-domain requests, seeing as conditions for a preflight are
|
||
// akin to a jigsaw puzzle, we simply never set it to be sure.
|
||
// (it can always be set on a per-request basis or even using ajaxSetup)
|
||
// For same-domain requests, won't change header if already provided.
|
||
if (!options.crossDomain && !headers['X-Requested-With']) {
|
||
headers['X-Requested-With'] = 'XMLHttpRequest'
|
||
}
|
||
// Set headers
|
||
for (i in headers) {
|
||
xhr.setRequestHeader(i, headers[i])
|
||
}
|
||
// Callback
|
||
callback = function (type) {
|
||
return function () {
|
||
if (callback) {
|
||
callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
|
||
if (type === 'abort') {
|
||
xhr.abort()
|
||
} else if (type === 'error') {
|
||
// Support: IE9
|
||
// On a manual native abort, IE9 throws
|
||
// errors on any property access that is not readyState
|
||
if (typeof xhr.status !== 'number') {
|
||
complete(0, 'error')
|
||
} else {
|
||
complete(// File: protocol always yields status 0; see #8605, #14207
|
||
xhr.status, xhr.statusText)
|
||
}
|
||
} else {
|
||
complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE9 only
|
||
// IE9 has no XHR2 but throws on binary (trac-11426)
|
||
// For XHR2 non-text, let the caller handle it (gh-2498)
|
||
(xhr.responseType || 'text') !== 'text' || typeof xhr.responseText !== 'string' ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders())
|
||
}
|
||
}
|
||
}
|
||
};
|
||
// Listen to events
|
||
xhr.onload = callback();
|
||
errorCallback = xhr.onerror = callback('error');
|
||
// Support: IE9
|
||
// Use onreadystatechange to replace onabort
|
||
// to handle uncaught aborts
|
||
if (xhr.onabort !== undefined) {
|
||
xhr.onabort = errorCallback
|
||
} else {
|
||
xhr.onreadystatechange = function () {
|
||
// Check readyState before timeout as it changes
|
||
if (xhr.readyState === 4) {
|
||
// Allow onerror to be called first,
|
||
// but that will not handle a native abort
|
||
// Also, save errorCallback to a variable
|
||
// as xhr.onerror cannot be accessed
|
||
window.setTimeout(function () {
|
||
if (callback) {
|
||
errorCallback()
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
// Create the abort callback
|
||
callback = callback('abort');
|
||
try {
|
||
// Do send the request (this may raise an exception)
|
||
xhr.send(options.hasContent && options.data || null)
|
||
} catch (e) {
|
||
// #14683: Only rethrow if this hasn't been notified as an error yet
|
||
if (callback) {
|
||
throw e
|
||
}
|
||
}
|
||
},
|
||
abort: function () {
|
||
if (callback) {
|
||
callback()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
// Install script dataType
|
||
jQuery.ajaxSetup({
|
||
accepts: { script: 'text/javascript, application/javascript, ' + 'application/ecmascript, application/x-ecmascript' },
|
||
contents: { script: /\b(?:java|ecma)script\b/ },
|
||
converters: {
|
||
'text script': function (text) {
|
||
jQuery.globalEval(text);
|
||
return text
|
||
}
|
||
}
|
||
});
|
||
// Handle cache's special case and crossDomain
|
||
jQuery.ajaxPrefilter('script', function (s) {
|
||
if (s.cache === undefined) {
|
||
s.cache = false
|
||
}
|
||
if (s.crossDomain) {
|
||
s.type = 'GET'
|
||
}
|
||
});
|
||
// Bind script tag hack transport
|
||
jQuery.ajaxTransport('script', function (s) {
|
||
// This transport only deals with cross domain requests
|
||
if (s.crossDomain) {
|
||
var script, callback;
|
||
return {
|
||
send: function (_, complete) {
|
||
script = jQuery('<script>').prop({
|
||
charset: s.scriptCharset,
|
||
src: s.url
|
||
}).on('load error', callback = function (evt) {
|
||
script.remove();
|
||
callback = null;
|
||
if (evt) {
|
||
complete(evt.type === 'error' ? 404 : 200, evt.type)
|
||
}
|
||
});
|
||
// Use native DOM manipulation to avoid our domManip AJAX trickery
|
||
document.head.appendChild(script[0])
|
||
},
|
||
abort: function () {
|
||
if (callback) {
|
||
callback()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
|
||
// Default jsonp settings
|
||
jQuery.ajaxSetup({
|
||
jsonp: 'callback',
|
||
jsonpCallback: function () {
|
||
var callback = oldCallbacks.pop() || jQuery.expando + '_' + nonce++;
|
||
this[callback] = true;
|
||
return callback
|
||
}
|
||
});
|
||
// Detect, normalize options and install callbacks for jsonp requests
|
||
jQuery.ajaxPrefilter('json jsonp', function (s, originalSettings, jqXHR) {
|
||
var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? 'url' : typeof s.data === 'string' && (s.contentType || '').indexOf('application/x-www-form-urlencoded') === 0 && rjsonp.test(s.data) && 'data');
|
||
// Handle iff the expected data type is "jsonp" or we have a parameter to set
|
||
if (jsonProp || s.dataTypes[0] === 'jsonp') {
|
||
// Get callback name, remembering preexisting value associated with it
|
||
callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
|
||
// Insert callback into url or form data
|
||
if (jsonProp) {
|
||
s[jsonProp] = s[jsonProp].replace(rjsonp, '$1' + callbackName)
|
||
} else if (s.jsonp !== false) {
|
||
s.url += (rquery.test(s.url) ? '&' : '?') + s.jsonp + '=' + callbackName
|
||
}
|
||
// Use data converter to retrieve json after script execution
|
||
s.converters['script json'] = function () {
|
||
if (!responseContainer) {
|
||
jQuery.error(callbackName + ' was not called')
|
||
}
|
||
return responseContainer[0]
|
||
};
|
||
// Force json dataType
|
||
s.dataTypes[0] = 'json';
|
||
// Install callback
|
||
overwritten = window[callbackName];
|
||
window[callbackName] = function () {
|
||
responseContainer = arguments
|
||
};
|
||
// Clean-up function (fires after converters)
|
||
jqXHR.always(function () {
|
||
// If previous value didn't exist - remove it
|
||
if (overwritten === undefined) {
|
||
jQuery(window).removeProp(callbackName) // Otherwise restore preexisting value
|
||
} else {
|
||
window[callbackName] = overwritten
|
||
}
|
||
// Save back as free
|
||
if (s[callbackName]) {
|
||
// Make sure that re-using the options doesn't screw things around
|
||
s.jsonpCallback = originalSettings.jsonpCallback;
|
||
// Save the callback name for future use
|
||
oldCallbacks.push(callbackName)
|
||
}
|
||
// Call if it was a function and we have a response
|
||
if (responseContainer && jQuery.isFunction(overwritten)) {
|
||
overwritten(responseContainer[0])
|
||
}
|
||
responseContainer = overwritten = undefined
|
||
});
|
||
// Delegate to script
|
||
return 'script'
|
||
}
|
||
});
|
||
// Argument "data" should be string of html
|
||
// context (optional): If specified, the fragment will be created in this context,
|
||
// defaults to document
|
||
// keepScripts (optional): If true, will include scripts passed in the html string
|
||
jQuery.parseHTML = function (data, context, keepScripts) {
|
||
if (!data || typeof data !== 'string') {
|
||
return null
|
||
}
|
||
if (typeof context === 'boolean') {
|
||
keepScripts = context;
|
||
context = false
|
||
}
|
||
context = context || document;
|
||
var parsed = rsingleTag.exec(data), scripts = !keepScripts && [];
|
||
// Single tag
|
||
if (parsed) {
|
||
return [context.createElement(parsed[1])]
|
||
}
|
||
parsed = buildFragment([data], context, scripts);
|
||
if (scripts && scripts.length) {
|
||
jQuery(scripts).remove()
|
||
}
|
||
return jQuery.merge([], parsed.childNodes)
|
||
};
|
||
// Keep a copy of the old load method
|
||
var _load = jQuery.fn.load;
|
||
/**
|
||
* Load a url into a page
|
||
*/
|
||
jQuery.fn.load = function (url, params, callback) {
|
||
if (typeof url !== 'string' && _load) {
|
||
return _load.apply(this, arguments)
|
||
}
|
||
var selector, type, response, self = this, off = url.indexOf(' ');
|
||
if (off > -1) {
|
||
selector = jQuery.trim(url.slice(off));
|
||
url = url.slice(0, off)
|
||
}
|
||
// If it's a function
|
||
if (jQuery.isFunction(params)) {
|
||
// We assume that it's the callback
|
||
callback = params;
|
||
params = undefined // Otherwise, build a param string
|
||
} else if (params && typeof params === 'object') {
|
||
type = 'POST'
|
||
}
|
||
// If we have elements to modify, make the request
|
||
if (self.length > 0) {
|
||
jQuery.ajax({
|
||
url: url,
|
||
// If "type" variable is undefined, then "GET" method will be used.
|
||
// Make value of this field explicit since
|
||
// user can override it through ajaxSetup method
|
||
type: type || 'GET',
|
||
dataType: 'html',
|
||
data: params
|
||
}).done(function (responseText) {
|
||
// Save response for use in complete callback
|
||
response = arguments;
|
||
self.html(selector ? // If a selector was specified, locate the right elements in a dummy div
|
||
// Exclude scripts to avoid IE 'Permission Denied' errors
|
||
jQuery('<div>').append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result
|
||
responseText) // If the request succeeds, this function gets "data", "status", "jqXHR"
|
||
// but they are ignored because response was set above.
|
||
// If it fails, this function gets "jqXHR", "status", "error"
|
||
}).always(callback && function (jqXHR, status) {
|
||
self.each(function () {
|
||
callback.apply(self, response || [
|
||
jqXHR.responseText,
|
||
status,
|
||
jqXHR
|
||
])
|
||
})
|
||
})
|
||
}
|
||
return this
|
||
};
|
||
// Attach a bunch of functions for handling common AJAX events
|
||
jQuery.each([
|
||
'ajaxStart',
|
||
'ajaxStop',
|
||
'ajaxComplete',
|
||
'ajaxError',
|
||
'ajaxSuccess',
|
||
'ajaxSend'
|
||
], function (i, type) {
|
||
jQuery.fn[type] = function (fn) {
|
||
return this.on(type, fn)
|
||
}
|
||
});
|
||
jQuery.expr.filters.animated = function (elem) {
|
||
return jQuery.grep(jQuery.timers, function (fn) {
|
||
return elem === fn.elem
|
||
}).length
|
||
};
|
||
/**
|
||
* Gets a window from an element
|
||
*/
|
||
function getWindow(elem) {
|
||
return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView
|
||
}
|
||
jQuery.offset = {
|
||
setOffset: function (elem, options, i) {
|
||
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, 'position'), curElem = jQuery(elem), props = {};
|
||
// Set position first, in-case top/left are set even on static elem
|
||
if (position === 'static') {
|
||
elem.style.position = 'relative'
|
||
}
|
||
curOffset = curElem.offset();
|
||
curCSSTop = jQuery.css(elem, 'top');
|
||
curCSSLeft = jQuery.css(elem, 'left');
|
||
calculatePosition = (position === 'absolute' || position === 'fixed') && (curCSSTop + curCSSLeft).indexOf('auto') > -1;
|
||
// Need to be able to calculate position if either
|
||
// top or left is auto and position is either absolute or fixed
|
||
if (calculatePosition) {
|
||
curPosition = curElem.position();
|
||
curTop = curPosition.top;
|
||
curLeft = curPosition.left
|
||
} else {
|
||
curTop = parseFloat(curCSSTop) || 0;
|
||
curLeft = parseFloat(curCSSLeft) || 0
|
||
}
|
||
if (jQuery.isFunction(options)) {
|
||
// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
|
||
options = options.call(elem, i, jQuery.extend({}, curOffset))
|
||
}
|
||
if (options.top != null) {
|
||
props.top = options.top - curOffset.top + curTop
|
||
}
|
||
if (options.left != null) {
|
||
props.left = options.left - curOffset.left + curLeft
|
||
}
|
||
if ('using' in options) {
|
||
options.using.call(elem, props)
|
||
} else {
|
||
curElem.css(props)
|
||
}
|
||
}
|
||
};
|
||
jQuery.fn.extend({
|
||
offset: function (options) {
|
||
if (arguments.length) {
|
||
return options === undefined ? this : this.each(function (i) {
|
||
jQuery.offset.setOffset(this, options, i)
|
||
})
|
||
}
|
||
var docElem, win, elem = this[0], box = {
|
||
top: 0,
|
||
left: 0
|
||
}, doc = elem && elem.ownerDocument;
|
||
if (!doc) {
|
||
return
|
||
}
|
||
docElem = doc.documentElement;
|
||
// Make sure it's not a disconnected DOM node
|
||
if (!jQuery.contains(docElem, elem)) {
|
||
return box
|
||
}
|
||
box = elem.getBoundingClientRect();
|
||
win = getWindow(doc);
|
||
return {
|
||
top: box.top + win.pageYOffset - docElem.clientTop,
|
||
left: box.left + win.pageXOffset - docElem.clientLeft
|
||
}
|
||
},
|
||
position: function () {
|
||
if (!this[0]) {
|
||
return
|
||
}
|
||
var offsetParent, offset, elem = this[0], parentOffset = {
|
||
top: 0,
|
||
left: 0
|
||
};
|
||
// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
|
||
// because it is its only offset parent
|
||
if (jQuery.css(elem, 'position') === 'fixed') {
|
||
// Assume getBoundingClientRect is there when computed position is fixed
|
||
offset = elem.getBoundingClientRect()
|
||
} else {
|
||
// Get *real* offsetParent
|
||
offsetParent = this.offsetParent();
|
||
// Get correct offsets
|
||
offset = this.offset();
|
||
if (!jQuery.nodeName(offsetParent[0], 'html')) {
|
||
parentOffset = offsetParent.offset()
|
||
}
|
||
// Add offsetParent borders
|
||
parentOffset.top += jQuery.css(offsetParent[0], 'borderTopWidth', true);
|
||
parentOffset.left += jQuery.css(offsetParent[0], 'borderLeftWidth', true)
|
||
}
|
||
// Subtract parent offsets and element margins
|
||
return {
|
||
top: offset.top - parentOffset.top - jQuery.css(elem, 'marginTop', true),
|
||
left: offset.left - parentOffset.left - jQuery.css(elem, 'marginLeft', true)
|
||
}
|
||
},
|
||
// This method will return documentElement in the following cases:
|
||
// 1) For the element inside the iframe without offsetParent, this method will return
|
||
// documentElement of the parent window
|
||
// 2) For the hidden or detached element
|
||
// 3) For body or html element, i.e. in case of the html node - it will return itself
|
||
//
|
||
// but those exceptions were never presented as a real life use-cases
|
||
// and might be considered as more preferable results.
|
||
//
|
||
// This logic, however, is not guaranteed and can change at any point in the future
|
||
offsetParent: function () {
|
||
return this.map(function () {
|
||
var offsetParent = this.offsetParent;
|
||
while (offsetParent && jQuery.css(offsetParent, 'position') === 'static') {
|
||
offsetParent = offsetParent.offsetParent
|
||
}
|
||
return offsetParent || documentElement
|
||
})
|
||
}
|
||
});
|
||
// Create scrollLeft and scrollTop methods
|
||
jQuery.each({
|
||
scrollLeft: 'pageXOffset',
|
||
scrollTop: 'pageYOffset'
|
||
}, function (method, prop) {
|
||
var top = 'pageYOffset' === prop;
|
||
jQuery.fn[method] = function (val) {
|
||
return access(this, function (elem, method, val) {
|
||
var win = getWindow(elem);
|
||
if (val === undefined) {
|
||
return win ? win[prop] : elem[method]
|
||
}
|
||
if (win) {
|
||
win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset)
|
||
} else {
|
||
elem[method] = val
|
||
}
|
||
}, method, val, arguments.length)
|
||
}
|
||
});
|
||
// Support: Safari<7-8+, Chrome<37-44+
|
||
// Add the top/left cssHooks using jQuery.fn.position
|
||
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
||
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
|
||
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
||
// rather than make the css module depend on the offset module, just check for it here
|
||
jQuery.each([
|
||
'top',
|
||
'left'
|
||
], function (i, prop) {
|
||
jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
|
||
if (computed) {
|
||
computed = curCSS(elem, prop);
|
||
// If curCSS returns percentage, fallback to offset
|
||
return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + 'px' : computed
|
||
}
|
||
})
|
||
});
|
||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||
jQuery.each({
|
||
Height: 'height',
|
||
Width: 'width'
|
||
}, function (name, type) {
|
||
jQuery.each({
|
||
padding: 'inner' + name,
|
||
content: type,
|
||
'': 'outer' + name
|
||
}, function (defaultExtra, funcName) {
|
||
// Margin is only for outerHeight, outerWidth
|
||
jQuery.fn[funcName] = function (margin, value) {
|
||
var chainable = arguments.length && (defaultExtra || typeof margin !== 'boolean'), extra = defaultExtra || (margin === true || value === true ? 'margin' : 'border');
|
||
return access(this, function (elem, type, value) {
|
||
var doc;
|
||
if (jQuery.isWindow(elem)) {
|
||
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
|
||
// isn't a whole lot we can do. See pull request at this URL for discussion:
|
||
// https://github.com/jquery/jquery/pull/764
|
||
return elem.document.documentElement['client' + name]
|
||
}
|
||
// Get document width or height
|
||
if (elem.nodeType === 9) {
|
||
doc = elem.documentElement;
|
||
// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
|
||
// whichever is greatest
|
||
return Math.max(elem.body['scroll' + name], doc['scroll' + name], elem.body['offset' + name], doc['offset' + name], doc['client' + name])
|
||
}
|
||
return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat
|
||
jQuery.css(elem, type, extra) : // Set width or height on the element
|
||
jQuery.style(elem, type, value, extra)
|
||
}, type, chainable ? margin : undefined, chainable, null)
|
||
}
|
||
})
|
||
});
|
||
jQuery.fn.extend({
|
||
bind: function (types, data, fn) {
|
||
return this.on(types, null, data, fn)
|
||
},
|
||
unbind: function (types, fn) {
|
||
return this.off(types, null, fn)
|
||
},
|
||
delegate: function (selector, types, data, fn) {
|
||
return this.on(types, selector, data, fn)
|
||
},
|
||
undelegate: function (selector, types, fn) {
|
||
// ( namespace ) or ( selector, types [, fn] )
|
||
return arguments.length === 1 ? this.off(selector, '**') : this.off(types, selector || '**', fn)
|
||
},
|
||
size: function () {
|
||
return this.length
|
||
}
|
||
});
|
||
jQuery.fn.andSelf = jQuery.fn.addBack;
|
||
// Register as a named AMD module, since jQuery can be concatenated with other
|
||
// files that may use define, but not via a proper concatenation script that
|
||
// understands anonymous AMD modules. A named AMD is safest and most robust
|
||
// way to register. Lowercase jquery is used because AMD module names are
|
||
// derived from file names, and jQuery is normally delivered in a lowercase
|
||
// file name. Do this after creating the global so that if an AMD module wants
|
||
// to call noConflict to hide this version of jQuery, it will work.
|
||
// Note that for maximum portability, libraries that are not jQuery should
|
||
// declare themselves as anonymous modules, and avoid setting a global if an
|
||
// AMD loader is present. jQuery is a special case. For more information, see
|
||
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
|
||
if (typeof define === 'function' && define.amd) {
|
||
define('jquery', [], function () {
|
||
return jQuery
|
||
})
|
||
}
|
||
var
|
||
// Map over jQuery in case of overwrite
|
||
_jQuery = window.jQuery,
|
||
// Map over the $ in case of overwrite
|
||
_$ = window.$;
|
||
jQuery.noConflict = function (deep) {
|
||
if (window.$ === jQuery) {
|
||
window.$ = _$
|
||
}
|
||
if (deep && window.jQuery === jQuery) {
|
||
window.jQuery = _jQuery
|
||
}
|
||
return jQuery
|
||
};
|
||
// Expose jQuery and $ identifiers, even in AMD
|
||
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
||
// and CommonJS for browser emulators (#13566)
|
||
if (!noGlobal) {
|
||
window.jQuery = window.$ = jQuery
|
||
}
|
||
return jQuery
|
||
}))
|
||
});
|
||
// source: src/controls/text.coffee
|
||
require.define('./controls/text', function (module, exports, __dirname, __filename, process) {
|
||
var Control, Text, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Control = require('./controls/control');
|
||
module.exports = Text = function (superClass) {
|
||
extend(Text, superClass);
|
||
function Text() {
|
||
return Text.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Text.prototype.tag = 'daisho-text-control';
|
||
Text.prototype.type = 'text';
|
||
Text.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/text');
|
||
Text.prototype.realtime = false;
|
||
Text.prototype.init = function () {
|
||
return Text.__super__.init.apply(this, arguments)
|
||
};
|
||
Text.prototype.keyup = function () {
|
||
if (this.realtime) {
|
||
this.change.apply(this, arguments)
|
||
}
|
||
return true
|
||
};
|
||
return Text
|
||
}(Control)
|
||
});
|
||
// source: templates/text.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/text', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<input id="{ input.name }" name="{ name || input.name }" type="{ type }" class="{ filled: input.ref(input.name) }" onchange="{ change }" onblur="{ change }" onkeyup="{ keyup }" value="{ input.ref(input.name) }">\n<label for="{ input.name }">{ placeholder }</label>\n'
|
||
});
|
||
// source: src/controls/inline-text.coffee
|
||
require.define('./controls/inline-text', function (module, exports, __dirname, __filename, process) {
|
||
var InlineText, Text, placeholder, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Text = require('./controls/text');
|
||
placeholder = require('./utils/placeholder');
|
||
module.exports = InlineText = function (superClass) {
|
||
extend(InlineText, superClass);
|
||
function InlineText() {
|
||
return InlineText.__super__.constructor.apply(this, arguments)
|
||
}
|
||
InlineText.prototype.tag = 'daisho-inline-text-control';
|
||
InlineText.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/inline-text');
|
||
InlineText.prototype.type = 'text';
|
||
InlineText.prototype.label = '';
|
||
InlineText.prototype.init = function () {
|
||
InlineText.__super__.init.apply(this, arguments);
|
||
return this.on('updated', function (_this) {
|
||
return function () {
|
||
var el;
|
||
el = _this.root.getElementsByTagName(_this.formElement)[0];
|
||
if (_this.type !== 'password') {
|
||
return placeholder(el)
|
||
}
|
||
}
|
||
}(this))
|
||
};
|
||
return InlineText
|
||
}(Text)
|
||
});
|
||
// source: src/utils/placeholder.coffee
|
||
require.define('./utils/placeholder', function (module, exports, __dirname, __filename, process) {
|
||
var hidePlaceholderOnFocus, unfocusOnAnElement;
|
||
hidePlaceholderOnFocus = function (event) {
|
||
var target;
|
||
target = event.currentTarget ? event.currentTarget : event.srcElement;
|
||
if (target.value === target.getAttribute('placeholder')) {
|
||
return target.value = ''
|
||
}
|
||
};
|
||
unfocusOnAnElement = function (event) {
|
||
var target;
|
||
target = event.currentTarget ? event.currentTarget : event.srcElement;
|
||
if (target.value === '') {
|
||
return target.value = target.getAttribute('placeholder')
|
||
}
|
||
};
|
||
if (document.createElement('input').placeholder != null) {
|
||
module.exports = function () {
|
||
}
|
||
} else {
|
||
module.exports = function (input) {
|
||
var ref;
|
||
input = (ref = input[0]) != null ? ref : input;
|
||
if (input._placeholdered != null) {
|
||
return
|
||
}
|
||
Object.defineProperty(input, '_placeholdered', {
|
||
value: true,
|
||
writable: true
|
||
});
|
||
if (!input.value) {
|
||
input.value = input.getAttribute('placeholder')
|
||
}
|
||
if (input.addEventListener) {
|
||
input.addEventListener('click', hidePlaceholderOnFocus, false);
|
||
return input.addEventListener('blur', unfocusOnAnElement, false)
|
||
} else if (input.attachEvent) {
|
||
input.attachEvent('onclick', hidePlaceholderOnFocus);
|
||
return input.attachEvent('onblur', unfocusOnAnElement)
|
||
}
|
||
}
|
||
}
|
||
});
|
||
// source: templates/inline-text.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/inline-text', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<input id="{ input.name }" name="{ name || input.name }" type="{ type }" class="{ filled: input.ref(input.name) }" onchange="{ change }" onblur="{ change }" onkeyup="{ keyup }" value="{ input.ref(input.name) }" placeholder="{ placeholder }">\n<label for="{ input.name }" if="{ label }">{ label }</label>\n\n'
|
||
});
|
||
// source: src/controls/static-text.coffee
|
||
require.define('./controls/static-text', function (module, exports, __dirname, __filename, process) {
|
||
var Control, StaticText, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Control = require('./controls/control');
|
||
module.exports = StaticText = function (superClass) {
|
||
extend(StaticText, superClass);
|
||
function StaticText() {
|
||
return StaticText.__super__.constructor.apply(this, arguments)
|
||
}
|
||
StaticText.prototype.tag = 'daisho-static-text';
|
||
StaticText.prototype.html = '<div>{ input.ref.get(input.name) }</div>';
|
||
StaticText.prototype.init = function () {
|
||
return StaticText.__super__.init.apply(this, arguments)
|
||
};
|
||
return StaticText
|
||
}(Control)
|
||
});
|
||
// source: src/controls/static-date.coffee
|
||
require.define('./controls/static-date', function (module, exports, __dirname, __filename, process) {
|
||
var Control, StaticDate, moment, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Control = require('./controls/control');
|
||
moment = require('moment/moment');
|
||
module.exports = StaticDate = function (superClass) {
|
||
extend(StaticDate, superClass);
|
||
function StaticDate() {
|
||
return StaticDate.__super__.constructor.apply(this, arguments)
|
||
}
|
||
StaticDate.prototype.tag = 'daisho-static-date';
|
||
StaticDate.prototype.html = '<div>{ format(input.ref.get(input.name)) }</div>';
|
||
StaticDate.prototype.init = function () {
|
||
return StaticDate.__super__.init.apply(this, arguments)
|
||
};
|
||
StaticDate.prototype.format = function (date) {
|
||
return moment(date).format('LLL')
|
||
};
|
||
return StaticDate
|
||
}(Control)
|
||
});
|
||
// source: node_modules/moment/moment.js
|
||
require.define('moment/moment', function (module, exports, __dirname, __filename, process) {
|
||
//! moment.js
|
||
//! version : 2.12.0
|
||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||
//! license : MIT
|
||
//! momentjs.com
|
||
;
|
||
(function (global, factory) {
|
||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory()
|
||
}(this, function () {
|
||
'use strict';
|
||
var hookCallback;
|
||
function utils_hooks__hooks() {
|
||
return hookCallback.apply(null, arguments)
|
||
}
|
||
// This is done to register the method called with moment()
|
||
// without creating circular dependencies.
|
||
function setHookCallback(callback) {
|
||
hookCallback = callback
|
||
}
|
||
function isArray(input) {
|
||
return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'
|
||
}
|
||
function isDate(input) {
|
||
return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'
|
||
}
|
||
function map(arr, fn) {
|
||
var res = [], i;
|
||
for (i = 0; i < arr.length; ++i) {
|
||
res.push(fn(arr[i], i))
|
||
}
|
||
return res
|
||
}
|
||
function hasOwnProp(a, b) {
|
||
return Object.prototype.hasOwnProperty.call(a, b)
|
||
}
|
||
function extend(a, b) {
|
||
for (var i in b) {
|
||
if (hasOwnProp(b, i)) {
|
||
a[i] = b[i]
|
||
}
|
||
}
|
||
if (hasOwnProp(b, 'toString')) {
|
||
a.toString = b.toString
|
||
}
|
||
if (hasOwnProp(b, 'valueOf')) {
|
||
a.valueOf = b.valueOf
|
||
}
|
||
return a
|
||
}
|
||
function create_utc__createUTC(input, format, locale, strict) {
|
||
return createLocalOrUTC(input, format, locale, strict, true).utc()
|
||
}
|
||
function defaultParsingFlags() {
|
||
// We need to deep clone this object.
|
||
return {
|
||
empty: false,
|
||
unusedTokens: [],
|
||
unusedInput: [],
|
||
overflow: -2,
|
||
charsLeftOver: 0,
|
||
nullInput: false,
|
||
invalidMonth: null,
|
||
invalidFormat: false,
|
||
userInvalidated: false,
|
||
iso: false
|
||
}
|
||
}
|
||
function getParsingFlags(m) {
|
||
if (m._pf == null) {
|
||
m._pf = defaultParsingFlags()
|
||
}
|
||
return m._pf
|
||
}
|
||
function valid__isValid(m) {
|
||
if (m._isValid == null) {
|
||
var flags = getParsingFlags(m);
|
||
m._isValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated;
|
||
if (m._strict) {
|
||
m._isValid = m._isValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined
|
||
}
|
||
}
|
||
return m._isValid
|
||
}
|
||
function valid__createInvalid(flags) {
|
||
var m = create_utc__createUTC(NaN);
|
||
if (flags != null) {
|
||
extend(getParsingFlags(m), flags)
|
||
} else {
|
||
getParsingFlags(m).userInvalidated = true
|
||
}
|
||
return m
|
||
}
|
||
function isUndefined(input) {
|
||
return input === void 0
|
||
}
|
||
// Plugins that add properties should also add the key here (null value),
|
||
// so we can properly clone ourselves.
|
||
var momentProperties = utils_hooks__hooks.momentProperties = [];
|
||
function copyConfig(to, from) {
|
||
var i, prop, val;
|
||
if (!isUndefined(from._isAMomentObject)) {
|
||
to._isAMomentObject = from._isAMomentObject
|
||
}
|
||
if (!isUndefined(from._i)) {
|
||
to._i = from._i
|
||
}
|
||
if (!isUndefined(from._f)) {
|
||
to._f = from._f
|
||
}
|
||
if (!isUndefined(from._l)) {
|
||
to._l = from._l
|
||
}
|
||
if (!isUndefined(from._strict)) {
|
||
to._strict = from._strict
|
||
}
|
||
if (!isUndefined(from._tzm)) {
|
||
to._tzm = from._tzm
|
||
}
|
||
if (!isUndefined(from._isUTC)) {
|
||
to._isUTC = from._isUTC
|
||
}
|
||
if (!isUndefined(from._offset)) {
|
||
to._offset = from._offset
|
||
}
|
||
if (!isUndefined(from._pf)) {
|
||
to._pf = getParsingFlags(from)
|
||
}
|
||
if (!isUndefined(from._locale)) {
|
||
to._locale = from._locale
|
||
}
|
||
if (momentProperties.length > 0) {
|
||
for (i in momentProperties) {
|
||
prop = momentProperties[i];
|
||
val = from[prop];
|
||
if (!isUndefined(val)) {
|
||
to[prop] = val
|
||
}
|
||
}
|
||
}
|
||
return to
|
||
}
|
||
var updateInProgress = false;
|
||
// Moment prototype object
|
||
function Moment(config) {
|
||
copyConfig(this, config);
|
||
this._d = new Date(config._d != null ? config._d.getTime() : NaN);
|
||
// Prevent infinite loop in case updateOffset creates new moment
|
||
// objects.
|
||
if (updateInProgress === false) {
|
||
updateInProgress = true;
|
||
utils_hooks__hooks.updateOffset(this);
|
||
updateInProgress = false
|
||
}
|
||
}
|
||
function isMoment(obj) {
|
||
return obj instanceof Moment || obj != null && obj._isAMomentObject != null
|
||
}
|
||
function absFloor(number) {
|
||
if (number < 0) {
|
||
return Math.ceil(number)
|
||
} else {
|
||
return Math.floor(number)
|
||
}
|
||
}
|
||
function toInt(argumentForCoercion) {
|
||
var coercedNumber = +argumentForCoercion, value = 0;
|
||
if (coercedNumber !== 0 && isFinite(coercedNumber)) {
|
||
value = absFloor(coercedNumber)
|
||
}
|
||
return value
|
||
}
|
||
// compare two arrays, return the number of differences
|
||
function compareArrays(array1, array2, dontConvert) {
|
||
var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i;
|
||
for (i = 0; i < len; i++) {
|
||
if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {
|
||
diffs++
|
||
}
|
||
}
|
||
return diffs + lengthDiff
|
||
}
|
||
function warn(msg) {
|
||
if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
|
||
console.warn('Deprecation warning: ' + msg)
|
||
}
|
||
}
|
||
function deprecate(msg, fn) {
|
||
var firstTime = true;
|
||
return extend(function () {
|
||
if (firstTime) {
|
||
warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + new Error().stack);
|
||
firstTime = false
|
||
}
|
||
return fn.apply(this, arguments)
|
||
}, fn)
|
||
}
|
||
var deprecations = {};
|
||
function deprecateSimple(name, msg) {
|
||
if (!deprecations[name]) {
|
||
warn(msg);
|
||
deprecations[name] = true
|
||
}
|
||
}
|
||
utils_hooks__hooks.suppressDeprecationWarnings = false;
|
||
function isFunction(input) {
|
||
return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'
|
||
}
|
||
function isObject(input) {
|
||
return Object.prototype.toString.call(input) === '[object Object]'
|
||
}
|
||
function locale_set__set(config) {
|
||
var prop, i;
|
||
for (i in config) {
|
||
prop = config[i];
|
||
if (isFunction(prop)) {
|
||
this[i] = prop
|
||
} else {
|
||
this['_' + i] = prop
|
||
}
|
||
}
|
||
this._config = config;
|
||
// Lenient ordinal parsing accepts just a number in addition to
|
||
// number + (possibly) stuff coming from _ordinalParseLenient.
|
||
this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source)
|
||
}
|
||
function mergeConfigs(parentConfig, childConfig) {
|
||
var res = extend({}, parentConfig), prop;
|
||
for (prop in childConfig) {
|
||
if (hasOwnProp(childConfig, prop)) {
|
||
if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
|
||
res[prop] = {};
|
||
extend(res[prop], parentConfig[prop]);
|
||
extend(res[prop], childConfig[prop])
|
||
} else if (childConfig[prop] != null) {
|
||
res[prop] = childConfig[prop]
|
||
} else {
|
||
delete res[prop]
|
||
}
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
function Locale(config) {
|
||
if (config != null) {
|
||
this.set(config)
|
||
}
|
||
}
|
||
// internal storage for locale config files
|
||
var locales = {};
|
||
var globalLocale;
|
||
function normalizeLocale(key) {
|
||
return key ? key.toLowerCase().replace('_', '-') : key
|
||
}
|
||
// pick the locale from the array
|
||
// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
|
||
// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
|
||
function chooseLocale(names) {
|
||
var i = 0, j, next, locale, split;
|
||
while (i < names.length) {
|
||
split = normalizeLocale(names[i]).split('-');
|
||
j = split.length;
|
||
next = normalizeLocale(names[i + 1]);
|
||
next = next ? next.split('-') : null;
|
||
while (j > 0) {
|
||
locale = loadLocale(split.slice(0, j).join('-'));
|
||
if (locale) {
|
||
return locale
|
||
}
|
||
if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
|
||
//the next array item is better than a shallower substring of this one
|
||
break
|
||
}
|
||
j--
|
||
}
|
||
i++
|
||
}
|
||
return null
|
||
}
|
||
function loadLocale(name) {
|
||
var oldLocale = null;
|
||
// TODO: Find a better way to register and load all the locales in Node
|
||
if (!locales[name] && typeof module !== 'undefined' && module && module.exports) {
|
||
try {
|
||
oldLocale = globalLocale._abbr;
|
||
require('./locale/' + name);
|
||
// because defineLocale currently also sets the global locale, we
|
||
// want to undo that for lazy loaded locales
|
||
locale_locales__getSetGlobalLocale(oldLocale)
|
||
} catch (e) {
|
||
}
|
||
}
|
||
return locales[name]
|
||
}
|
||
// This function will load locale and then set the global locale. If
|
||
// no arguments are passed in, it will simply return the current global
|
||
// locale key.
|
||
function locale_locales__getSetGlobalLocale(key, values) {
|
||
var data;
|
||
if (key) {
|
||
if (isUndefined(values)) {
|
||
data = locale_locales__getLocale(key)
|
||
} else {
|
||
data = defineLocale(key, values)
|
||
}
|
||
if (data) {
|
||
// moment.duration._locale = moment._locale = data;
|
||
globalLocale = data
|
||
}
|
||
}
|
||
return globalLocale._abbr
|
||
}
|
||
function defineLocale(name, config) {
|
||
if (config !== null) {
|
||
config.abbr = name;
|
||
if (locales[name] != null) {
|
||
deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale');
|
||
config = mergeConfigs(locales[name]._config, config)
|
||
} else if (config.parentLocale != null) {
|
||
if (locales[config.parentLocale] != null) {
|
||
config = mergeConfigs(locales[config.parentLocale]._config, config)
|
||
} else {
|
||
// treat as if there is no base config
|
||
deprecateSimple('parentLocaleUndefined', 'specified parentLocale is not defined yet')
|
||
}
|
||
}
|
||
locales[name] = new Locale(config);
|
||
// backwards compat for now: also set the locale
|
||
locale_locales__getSetGlobalLocale(name);
|
||
return locales[name]
|
||
} else {
|
||
// useful for testing
|
||
delete locales[name];
|
||
return null
|
||
}
|
||
}
|
||
function updateLocale(name, config) {
|
||
if (config != null) {
|
||
var locale;
|
||
if (locales[name] != null) {
|
||
config = mergeConfigs(locales[name]._config, config)
|
||
}
|
||
locale = new Locale(config);
|
||
locale.parentLocale = locales[name];
|
||
locales[name] = locale;
|
||
// backwards compat for now: also set the locale
|
||
locale_locales__getSetGlobalLocale(name)
|
||
} else {
|
||
// pass null for config to unupdate, useful for tests
|
||
if (locales[name] != null) {
|
||
if (locales[name].parentLocale != null) {
|
||
locales[name] = locales[name].parentLocale
|
||
} else if (locales[name] != null) {
|
||
delete locales[name]
|
||
}
|
||
}
|
||
}
|
||
return locales[name]
|
||
}
|
||
// returns locale data
|
||
function locale_locales__getLocale(key) {
|
||
var locale;
|
||
if (key && key._locale && key._locale._abbr) {
|
||
key = key._locale._abbr
|
||
}
|
||
if (!key) {
|
||
return globalLocale
|
||
}
|
||
if (!isArray(key)) {
|
||
//short-circuit everything else
|
||
locale = loadLocale(key);
|
||
if (locale) {
|
||
return locale
|
||
}
|
||
key = [key]
|
||
}
|
||
return chooseLocale(key)
|
||
}
|
||
function locale_locales__listLocales() {
|
||
return Object.keys(locales)
|
||
}
|
||
var aliases = {};
|
||
function addUnitAlias(unit, shorthand) {
|
||
var lowerCase = unit.toLowerCase();
|
||
aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit
|
||
}
|
||
function normalizeUnits(units) {
|
||
return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined
|
||
}
|
||
function normalizeObjectUnits(inputObject) {
|
||
var normalizedInput = {}, normalizedProp, prop;
|
||
for (prop in inputObject) {
|
||
if (hasOwnProp(inputObject, prop)) {
|
||
normalizedProp = normalizeUnits(prop);
|
||
if (normalizedProp) {
|
||
normalizedInput[normalizedProp] = inputObject[prop]
|
||
}
|
||
}
|
||
}
|
||
return normalizedInput
|
||
}
|
||
function makeGetSet(unit, keepTime) {
|
||
return function (value) {
|
||
if (value != null) {
|
||
get_set__set(this, unit, value);
|
||
utils_hooks__hooks.updateOffset(this, keepTime);
|
||
return this
|
||
} else {
|
||
return get_set__get(this, unit)
|
||
}
|
||
}
|
||
}
|
||
function get_set__get(mom, unit) {
|
||
return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN
|
||
}
|
||
function get_set__set(mom, unit, value) {
|
||
if (mom.isValid()) {
|
||
mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value)
|
||
}
|
||
}
|
||
// MOMENTS
|
||
function getSet(units, value) {
|
||
var unit;
|
||
if (typeof units === 'object') {
|
||
for (unit in units) {
|
||
this.set(unit, units[unit])
|
||
}
|
||
} else {
|
||
units = normalizeUnits(units);
|
||
if (isFunction(this[units])) {
|
||
return this[units](value)
|
||
}
|
||
}
|
||
return this
|
||
}
|
||
function zeroFill(number, targetLength, forceSign) {
|
||
var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0;
|
||
return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber
|
||
}
|
||
var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
|
||
var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
|
||
var formatFunctions = {};
|
||
var formatTokenFunctions = {};
|
||
// token: 'M'
|
||
// padded: ['MM', 2]
|
||
// ordinal: 'Mo'
|
||
// callback: function () { this.month() + 1 }
|
||
function addFormatToken(token, padded, ordinal, callback) {
|
||
var func = callback;
|
||
if (typeof callback === 'string') {
|
||
func = function () {
|
||
return this[callback]()
|
||
}
|
||
}
|
||
if (token) {
|
||
formatTokenFunctions[token] = func
|
||
}
|
||
if (padded) {
|
||
formatTokenFunctions[padded[0]] = function () {
|
||
return zeroFill(func.apply(this, arguments), padded[1], padded[2])
|
||
}
|
||
}
|
||
if (ordinal) {
|
||
formatTokenFunctions[ordinal] = function () {
|
||
return this.localeData().ordinal(func.apply(this, arguments), token)
|
||
}
|
||
}
|
||
}
|
||
function removeFormattingTokens(input) {
|
||
if (input.match(/\[[\s\S]/)) {
|
||
return input.replace(/^\[|\]$/g, '')
|
||
}
|
||
return input.replace(/\\/g, '')
|
||
}
|
||
function makeFormatFunction(format) {
|
||
var array = format.match(formattingTokens), i, length;
|
||
for (i = 0, length = array.length; i < length; i++) {
|
||
if (formatTokenFunctions[array[i]]) {
|
||
array[i] = formatTokenFunctions[array[i]]
|
||
} else {
|
||
array[i] = removeFormattingTokens(array[i])
|
||
}
|
||
}
|
||
return function (mom) {
|
||
var output = '';
|
||
for (i = 0; i < length; i++) {
|
||
output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]
|
||
}
|
||
return output
|
||
}
|
||
}
|
||
// format date using native date object
|
||
function formatMoment(m, format) {
|
||
if (!m.isValid()) {
|
||
return m.localeData().invalidDate()
|
||
}
|
||
format = expandFormat(format, m.localeData());
|
||
formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
|
||
return formatFunctions[format](m)
|
||
}
|
||
function expandFormat(format, locale) {
|
||
var i = 5;
|
||
function replaceLongDateFormatTokens(input) {
|
||
return locale.longDateFormat(input) || input
|
||
}
|
||
localFormattingTokens.lastIndex = 0;
|
||
while (i >= 0 && localFormattingTokens.test(format)) {
|
||
format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
|
||
localFormattingTokens.lastIndex = 0;
|
||
i -= 1
|
||
}
|
||
return format
|
||
}
|
||
var match1 = /\d/;
|
||
// 0 - 9
|
||
var match2 = /\d\d/;
|
||
// 00 - 99
|
||
var match3 = /\d{3}/;
|
||
// 000 - 999
|
||
var match4 = /\d{4}/;
|
||
// 0000 - 9999
|
||
var match6 = /[+-]?\d{6}/;
|
||
// -999999 - 999999
|
||
var match1to2 = /\d\d?/;
|
||
// 0 - 99
|
||
var match3to4 = /\d\d\d\d?/;
|
||
// 999 - 9999
|
||
var match5to6 = /\d\d\d\d\d\d?/;
|
||
// 99999 - 999999
|
||
var match1to3 = /\d{1,3}/;
|
||
// 0 - 999
|
||
var match1to4 = /\d{1,4}/;
|
||
// 0 - 9999
|
||
var match1to6 = /[+-]?\d{1,6}/;
|
||
// -999999 - 999999
|
||
var matchUnsigned = /\d+/;
|
||
// 0 - inf
|
||
var matchSigned = /[+-]?\d+/;
|
||
// -inf - inf
|
||
var matchOffset = /Z|[+-]\d\d:?\d\d/gi;
|
||
// +00:00 -00:00 +0000 -0000 or Z
|
||
var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi;
|
||
// +00 -00 +00:00 -00:00 +0000 -0000 or Z
|
||
var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/;
|
||
// 123456789 123456789.123
|
||
// any word (or two) characters or numbers including two/three word month in arabic.
|
||
// includes scottish gaelic two word and hyphenated months
|
||
var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
|
||
var regexes = {};
|
||
function addRegexToken(token, regex, strictRegex) {
|
||
regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
|
||
return isStrict && strictRegex ? strictRegex : regex
|
||
}
|
||
}
|
||
function getParseRegexForToken(token, config) {
|
||
if (!hasOwnProp(regexes, token)) {
|
||
return new RegExp(unescapeFormat(token))
|
||
}
|
||
return regexes[token](config._strict, config._locale)
|
||
}
|
||
// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
|
||
function unescapeFormat(s) {
|
||
return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
|
||
return p1 || p2 || p3 || p4
|
||
}))
|
||
}
|
||
function regexEscape(s) {
|
||
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
|
||
}
|
||
var tokens = {};
|
||
function addParseToken(token, callback) {
|
||
var i, func = callback;
|
||
if (typeof token === 'string') {
|
||
token = [token]
|
||
}
|
||
if (typeof callback === 'number') {
|
||
func = function (input, array) {
|
||
array[callback] = toInt(input)
|
||
}
|
||
}
|
||
for (i = 0; i < token.length; i++) {
|
||
tokens[token[i]] = func
|
||
}
|
||
}
|
||
function addWeekParseToken(token, callback) {
|
||
addParseToken(token, function (input, array, config, token) {
|
||
config._w = config._w || {};
|
||
callback(input, config._w, config, token)
|
||
})
|
||
}
|
||
function addTimeToArrayFromToken(token, input, config) {
|
||
if (input != null && hasOwnProp(tokens, token)) {
|
||
tokens[token](input, config._a, config, token)
|
||
}
|
||
}
|
||
var YEAR = 0;
|
||
var MONTH = 1;
|
||
var DATE = 2;
|
||
var HOUR = 3;
|
||
var MINUTE = 4;
|
||
var SECOND = 5;
|
||
var MILLISECOND = 6;
|
||
var WEEK = 7;
|
||
var WEEKDAY = 8;
|
||
function daysInMonth(year, month) {
|
||
return new Date(Date.UTC(year, month + 1, 0)).getUTCDate()
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('M', [
|
||
'MM',
|
||
2
|
||
], 'Mo', function () {
|
||
return this.month() + 1
|
||
});
|
||
addFormatToken('MMM', 0, 0, function (format) {
|
||
return this.localeData().monthsShort(this, format)
|
||
});
|
||
addFormatToken('MMMM', 0, 0, function (format) {
|
||
return this.localeData().months(this, format)
|
||
});
|
||
// ALIASES
|
||
addUnitAlias('month', 'M');
|
||
// PARSING
|
||
addRegexToken('M', match1to2);
|
||
addRegexToken('MM', match1to2, match2);
|
||
addRegexToken('MMM', function (isStrict, locale) {
|
||
return locale.monthsShortRegex(isStrict)
|
||
});
|
||
addRegexToken('MMMM', function (isStrict, locale) {
|
||
return locale.monthsRegex(isStrict)
|
||
});
|
||
addParseToken([
|
||
'M',
|
||
'MM'
|
||
], function (input, array) {
|
||
array[MONTH] = toInt(input) - 1
|
||
});
|
||
addParseToken([
|
||
'MMM',
|
||
'MMMM'
|
||
], function (input, array, config, token) {
|
||
var month = config._locale.monthsParse(input, token, config._strict);
|
||
// if we didn't find a month name, mark the date as invalid.
|
||
if (month != null) {
|
||
array[MONTH] = month
|
||
} else {
|
||
getParsingFlags(config).invalidMonth = input
|
||
}
|
||
});
|
||
// LOCALES
|
||
var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/;
|
||
var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
|
||
function localeMonths(m, format) {
|
||
return isArray(this._months) ? this._months[m.month()] : this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]
|
||
}
|
||
var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
|
||
function localeMonthsShort(m, format) {
|
||
return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]
|
||
}
|
||
function localeMonthsParse(monthName, format, strict) {
|
||
var i, mom, regex;
|
||
if (!this._monthsParse) {
|
||
this._monthsParse = [];
|
||
this._longMonthsParse = [];
|
||
this._shortMonthsParse = []
|
||
}
|
||
for (i = 0; i < 12; i++) {
|
||
// make the regex if we don't have it already
|
||
mom = create_utc__createUTC([
|
||
2000,
|
||
i
|
||
]);
|
||
if (strict && !this._longMonthsParse[i]) {
|
||
this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
|
||
this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i')
|
||
}
|
||
if (!strict && !this._monthsParse[i]) {
|
||
regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
|
||
this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i')
|
||
}
|
||
// test the regex
|
||
if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
|
||
return i
|
||
} else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
|
||
return i
|
||
} else if (!strict && this._monthsParse[i].test(monthName)) {
|
||
return i
|
||
}
|
||
}
|
||
}
|
||
// MOMENTS
|
||
function setMonth(mom, value) {
|
||
var dayOfMonth;
|
||
if (!mom.isValid()) {
|
||
// No op
|
||
return mom
|
||
}
|
||
if (typeof value === 'string') {
|
||
if (/^\d+$/.test(value)) {
|
||
value = toInt(value)
|
||
} else {
|
||
value = mom.localeData().monthsParse(value);
|
||
// TODO: Another silent failure?
|
||
if (typeof value !== 'number') {
|
||
return mom
|
||
}
|
||
}
|
||
}
|
||
dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
|
||
mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
|
||
return mom
|
||
}
|
||
function getSetMonth(value) {
|
||
if (value != null) {
|
||
setMonth(this, value);
|
||
utils_hooks__hooks.updateOffset(this, true);
|
||
return this
|
||
} else {
|
||
return get_set__get(this, 'Month')
|
||
}
|
||
}
|
||
function getDaysInMonth() {
|
||
return daysInMonth(this.year(), this.month())
|
||
}
|
||
var defaultMonthsShortRegex = matchWord;
|
||
function monthsShortRegex(isStrict) {
|
||
if (this._monthsParseExact) {
|
||
if (!hasOwnProp(this, '_monthsRegex')) {
|
||
computeMonthsParse.call(this)
|
||
}
|
||
if (isStrict) {
|
||
return this._monthsShortStrictRegex
|
||
} else {
|
||
return this._monthsShortRegex
|
||
}
|
||
} else {
|
||
return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex
|
||
}
|
||
}
|
||
var defaultMonthsRegex = matchWord;
|
||
function monthsRegex(isStrict) {
|
||
if (this._monthsParseExact) {
|
||
if (!hasOwnProp(this, '_monthsRegex')) {
|
||
computeMonthsParse.call(this)
|
||
}
|
||
if (isStrict) {
|
||
return this._monthsStrictRegex
|
||
} else {
|
||
return this._monthsRegex
|
||
}
|
||
} else {
|
||
return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex
|
||
}
|
||
}
|
||
function computeMonthsParse() {
|
||
function cmpLenRev(a, b) {
|
||
return b.length - a.length
|
||
}
|
||
var shortPieces = [], longPieces = [], mixedPieces = [], i, mom;
|
||
for (i = 0; i < 12; i++) {
|
||
// make the regex if we don't have it already
|
||
mom = create_utc__createUTC([
|
||
2000,
|
||
i
|
||
]);
|
||
shortPieces.push(this.monthsShort(mom, ''));
|
||
longPieces.push(this.months(mom, ''));
|
||
mixedPieces.push(this.months(mom, ''));
|
||
mixedPieces.push(this.monthsShort(mom, ''))
|
||
}
|
||
// Sorting makes sure if one month (or abbr) is a prefix of another it
|
||
// will match the longer piece.
|
||
shortPieces.sort(cmpLenRev);
|
||
longPieces.sort(cmpLenRev);
|
||
mixedPieces.sort(cmpLenRev);
|
||
for (i = 0; i < 12; i++) {
|
||
shortPieces[i] = regexEscape(shortPieces[i]);
|
||
longPieces[i] = regexEscape(longPieces[i]);
|
||
mixedPieces[i] = regexEscape(mixedPieces[i])
|
||
}
|
||
this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
|
||
this._monthsShortRegex = this._monthsRegex;
|
||
this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')$', 'i');
|
||
this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')$', 'i')
|
||
}
|
||
function checkOverflow(m) {
|
||
var overflow;
|
||
var a = m._a;
|
||
if (a && getParsingFlags(m).overflow === -2) {
|
||
overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;
|
||
if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
|
||
overflow = DATE
|
||
}
|
||
if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
|
||
overflow = WEEK
|
||
}
|
||
if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
|
||
overflow = WEEKDAY
|
||
}
|
||
getParsingFlags(m).overflow = overflow
|
||
}
|
||
return m
|
||
}
|
||
// iso 8601 regex
|
||
// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
|
||
var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
|
||
var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
|
||
var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
|
||
var isoDates = [
|
||
[
|
||
'YYYYYY-MM-DD',
|
||
/[+-]\d{6}-\d\d-\d\d/
|
||
],
|
||
[
|
||
'YYYY-MM-DD',
|
||
/\d{4}-\d\d-\d\d/
|
||
],
|
||
[
|
||
'GGGG-[W]WW-E',
|
||
/\d{4}-W\d\d-\d/
|
||
],
|
||
[
|
||
'GGGG-[W]WW',
|
||
/\d{4}-W\d\d/,
|
||
false
|
||
],
|
||
[
|
||
'YYYY-DDD',
|
||
/\d{4}-\d{3}/
|
||
],
|
||
[
|
||
'YYYY-MM',
|
||
/\d{4}-\d\d/,
|
||
false
|
||
],
|
||
[
|
||
'YYYYYYMMDD',
|
||
/[+-]\d{10}/
|
||
],
|
||
[
|
||
'YYYYMMDD',
|
||
/\d{8}/
|
||
],
|
||
// YYYYMM is NOT allowed by the standard
|
||
[
|
||
'GGGG[W]WWE',
|
||
/\d{4}W\d{3}/
|
||
],
|
||
[
|
||
'GGGG[W]WW',
|
||
/\d{4}W\d{2}/,
|
||
false
|
||
],
|
||
[
|
||
'YYYYDDD',
|
||
/\d{7}/
|
||
]
|
||
];
|
||
// iso time formats and regexes
|
||
var isoTimes = [
|
||
[
|
||
'HH:mm:ss.SSSS',
|
||
/\d\d:\d\d:\d\d\.\d+/
|
||
],
|
||
[
|
||
'HH:mm:ss,SSSS',
|
||
/\d\d:\d\d:\d\d,\d+/
|
||
],
|
||
[
|
||
'HH:mm:ss',
|
||
/\d\d:\d\d:\d\d/
|
||
],
|
||
[
|
||
'HH:mm',
|
||
/\d\d:\d\d/
|
||
],
|
||
[
|
||
'HHmmss.SSSS',
|
||
/\d\d\d\d\d\d\.\d+/
|
||
],
|
||
[
|
||
'HHmmss,SSSS',
|
||
/\d\d\d\d\d\d,\d+/
|
||
],
|
||
[
|
||
'HHmmss',
|
||
/\d\d\d\d\d\d/
|
||
],
|
||
[
|
||
'HHmm',
|
||
/\d\d\d\d/
|
||
],
|
||
[
|
||
'HH',
|
||
/\d\d/
|
||
]
|
||
];
|
||
var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
|
||
// date from iso format
|
||
function configFromISO(config) {
|
||
var i, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat;
|
||
if (match) {
|
||
getParsingFlags(config).iso = true;
|
||
for (i = 0, l = isoDates.length; i < l; i++) {
|
||
if (isoDates[i][1].exec(match[1])) {
|
||
dateFormat = isoDates[i][0];
|
||
allowTime = isoDates[i][2] !== false;
|
||
break
|
||
}
|
||
}
|
||
if (dateFormat == null) {
|
||
config._isValid = false;
|
||
return
|
||
}
|
||
if (match[3]) {
|
||
for (i = 0, l = isoTimes.length; i < l; i++) {
|
||
if (isoTimes[i][1].exec(match[3])) {
|
||
// match[2] should be 'T' or space
|
||
timeFormat = (match[2] || ' ') + isoTimes[i][0];
|
||
break
|
||
}
|
||
}
|
||
if (timeFormat == null) {
|
||
config._isValid = false;
|
||
return
|
||
}
|
||
}
|
||
if (!allowTime && timeFormat != null) {
|
||
config._isValid = false;
|
||
return
|
||
}
|
||
if (match[4]) {
|
||
if (tzRegex.exec(match[4])) {
|
||
tzFormat = 'Z'
|
||
} else {
|
||
config._isValid = false;
|
||
return
|
||
}
|
||
}
|
||
config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
|
||
configFromStringAndFormat(config)
|
||
} else {
|
||
config._isValid = false
|
||
}
|
||
}
|
||
// date from iso format or fallback
|
||
function configFromString(config) {
|
||
var matched = aspNetJsonRegex.exec(config._i);
|
||
if (matched !== null) {
|
||
config._d = new Date(+matched[1]);
|
||
return
|
||
}
|
||
configFromISO(config);
|
||
if (config._isValid === false) {
|
||
delete config._isValid;
|
||
utils_hooks__hooks.createFromInputFallback(config)
|
||
}
|
||
}
|
||
utils_hooks__hooks.createFromInputFallback = deprecate('moment construction falls back to js Date. This is ' + 'discouraged and will be removed in upcoming major ' + 'release. Please refer to ' + 'https://github.com/moment/moment/issues/1407 for more info.', function (config) {
|
||
config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''))
|
||
});
|
||
function createDate(y, m, d, h, M, s, ms) {
|
||
//can't just apply() to create a date:
|
||
//http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
|
||
var date = new Date(y, m, d, h, M, s, ms);
|
||
//the date constructor remaps years 0-99 to 1900-1999
|
||
if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
|
||
date.setFullYear(y)
|
||
}
|
||
return date
|
||
}
|
||
function createUTCDate(y) {
|
||
var date = new Date(Date.UTC.apply(null, arguments));
|
||
//the Date.UTC function remaps years 0-99 to 1900-1999
|
||
if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
|
||
date.setUTCFullYear(y)
|
||
}
|
||
return date
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('Y', 0, 0, function () {
|
||
var y = this.year();
|
||
return y <= 9999 ? '' + y : '+' + y
|
||
});
|
||
addFormatToken(0, [
|
||
'YY',
|
||
2
|
||
], 0, function () {
|
||
return this.year() % 100
|
||
});
|
||
addFormatToken(0, [
|
||
'YYYY',
|
||
4
|
||
], 0, 'year');
|
||
addFormatToken(0, [
|
||
'YYYYY',
|
||
5
|
||
], 0, 'year');
|
||
addFormatToken(0, [
|
||
'YYYYYY',
|
||
6,
|
||
true
|
||
], 0, 'year');
|
||
// ALIASES
|
||
addUnitAlias('year', 'y');
|
||
// PARSING
|
||
addRegexToken('Y', matchSigned);
|
||
addRegexToken('YY', match1to2, match2);
|
||
addRegexToken('YYYY', match1to4, match4);
|
||
addRegexToken('YYYYY', match1to6, match6);
|
||
addRegexToken('YYYYYY', match1to6, match6);
|
||
addParseToken([
|
||
'YYYYY',
|
||
'YYYYYY'
|
||
], YEAR);
|
||
addParseToken('YYYY', function (input, array) {
|
||
array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input)
|
||
});
|
||
addParseToken('YY', function (input, array) {
|
||
array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input)
|
||
});
|
||
addParseToken('Y', function (input, array) {
|
||
array[YEAR] = parseInt(input, 10)
|
||
});
|
||
// HELPERS
|
||
function daysInYear(year) {
|
||
return isLeapYear(year) ? 366 : 365
|
||
}
|
||
function isLeapYear(year) {
|
||
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0
|
||
}
|
||
// HOOKS
|
||
utils_hooks__hooks.parseTwoDigitYear = function (input) {
|
||
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000)
|
||
};
|
||
// MOMENTS
|
||
var getSetYear = makeGetSet('FullYear', false);
|
||
function getIsLeapYear() {
|
||
return isLeapYear(this.year())
|
||
}
|
||
// start-of-first-week - start-of-year
|
||
function firstWeekOffset(year, dow, doy) {
|
||
var
|
||
// first-week day -- which january is always in the first week (4 for iso, 1 for other)
|
||
fwd = 7 + dow - doy,
|
||
// first-week day local weekday -- which local weekday is fwd
|
||
fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
|
||
return -fwdlw + fwd - 1
|
||
}
|
||
//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
|
||
function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
|
||
var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear;
|
||
if (dayOfYear <= 0) {
|
||
resYear = year - 1;
|
||
resDayOfYear = daysInYear(resYear) + dayOfYear
|
||
} else if (dayOfYear > daysInYear(year)) {
|
||
resYear = year + 1;
|
||
resDayOfYear = dayOfYear - daysInYear(year)
|
||
} else {
|
||
resYear = year;
|
||
resDayOfYear = dayOfYear
|
||
}
|
||
return {
|
||
year: resYear,
|
||
dayOfYear: resDayOfYear
|
||
}
|
||
}
|
||
function weekOfYear(mom, dow, doy) {
|
||
var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear;
|
||
if (week < 1) {
|
||
resYear = mom.year() - 1;
|
||
resWeek = week + weeksInYear(resYear, dow, doy)
|
||
} else if (week > weeksInYear(mom.year(), dow, doy)) {
|
||
resWeek = week - weeksInYear(mom.year(), dow, doy);
|
||
resYear = mom.year() + 1
|
||
} else {
|
||
resYear = mom.year();
|
||
resWeek = week
|
||
}
|
||
return {
|
||
week: resWeek,
|
||
year: resYear
|
||
}
|
||
}
|
||
function weeksInYear(year, dow, doy) {
|
||
var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
|
||
return (daysInYear(year) - weekOffset + weekOffsetNext) / 7
|
||
}
|
||
// Pick the first defined of two or three arguments.
|
||
function defaults(a, b, c) {
|
||
if (a != null) {
|
||
return a
|
||
}
|
||
if (b != null) {
|
||
return b
|
||
}
|
||
return c
|
||
}
|
||
function currentDateArray(config) {
|
||
// hooks is actually the exported moment object
|
||
var nowValue = new Date(utils_hooks__hooks.now());
|
||
if (config._useUTC) {
|
||
return [
|
||
nowValue.getUTCFullYear(),
|
||
nowValue.getUTCMonth(),
|
||
nowValue.getUTCDate()
|
||
]
|
||
}
|
||
return [
|
||
nowValue.getFullYear(),
|
||
nowValue.getMonth(),
|
||
nowValue.getDate()
|
||
]
|
||
}
|
||
// convert an array to a date.
|
||
// the array should mirror the parameters below
|
||
// note: all values past the year are optional and will default to the lowest possible value.
|
||
// [year, month, day , hour, minute, second, millisecond]
|
||
function configFromArray(config) {
|
||
var i, date, input = [], currentDate, yearToUse;
|
||
if (config._d) {
|
||
return
|
||
}
|
||
currentDate = currentDateArray(config);
|
||
//compute day of the year from weeks and weekdays
|
||
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
|
||
dayOfYearFromWeekInfo(config)
|
||
}
|
||
//if the day of the year is set, figure out what it is
|
||
if (config._dayOfYear) {
|
||
yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
|
||
if (config._dayOfYear > daysInYear(yearToUse)) {
|
||
getParsingFlags(config)._overflowDayOfYear = true
|
||
}
|
||
date = createUTCDate(yearToUse, 0, config._dayOfYear);
|
||
config._a[MONTH] = date.getUTCMonth();
|
||
config._a[DATE] = date.getUTCDate()
|
||
}
|
||
// Default to current date.
|
||
// * if no year, month, day of month are given, default to today
|
||
// * if day of month is given, default month and year
|
||
// * if month is given, default only year
|
||
// * if year is given, don't default anything
|
||
for (i = 0; i < 3 && config._a[i] == null; ++i) {
|
||
config._a[i] = input[i] = currentDate[i]
|
||
}
|
||
// Zero out whatever was not defaulted, including time
|
||
for (; i < 7; i++) {
|
||
config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i]
|
||
}
|
||
// Check for 24:00:00.000
|
||
if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {
|
||
config._nextDay = true;
|
||
config._a[HOUR] = 0
|
||
}
|
||
config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
|
||
// Apply timezone offset from input. The actual utcOffset can be changed
|
||
// with parseZone.
|
||
if (config._tzm != null) {
|
||
config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm)
|
||
}
|
||
if (config._nextDay) {
|
||
config._a[HOUR] = 24
|
||
}
|
||
}
|
||
function dayOfYearFromWeekInfo(config) {
|
||
var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
|
||
w = config._w;
|
||
if (w.GG != null || w.W != null || w.E != null) {
|
||
dow = 1;
|
||
doy = 4;
|
||
// TODO: We need to take the current isoWeekYear, but that depends on
|
||
// how we interpret now (local, utc, fixed offset). So create
|
||
// a now version of current config (take local/utc/offset flags, and
|
||
// create now).
|
||
weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
|
||
week = defaults(w.W, 1);
|
||
weekday = defaults(w.E, 1);
|
||
if (weekday < 1 || weekday > 7) {
|
||
weekdayOverflow = true
|
||
}
|
||
} else {
|
||
dow = config._locale._week.dow;
|
||
doy = config._locale._week.doy;
|
||
weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
|
||
week = defaults(w.w, 1);
|
||
if (w.d != null) {
|
||
// weekday -- low day numbers are considered next week
|
||
weekday = w.d;
|
||
if (weekday < 0 || weekday > 6) {
|
||
weekdayOverflow = true
|
||
}
|
||
} else if (w.e != null) {
|
||
// local weekday -- counting starts from begining of week
|
||
weekday = w.e + dow;
|
||
if (w.e < 0 || w.e > 6) {
|
||
weekdayOverflow = true
|
||
}
|
||
} else {
|
||
// default to begining of week
|
||
weekday = dow
|
||
}
|
||
}
|
||
if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
|
||
getParsingFlags(config)._overflowWeeks = true
|
||
} else if (weekdayOverflow != null) {
|
||
getParsingFlags(config)._overflowWeekday = true
|
||
} else {
|
||
temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
|
||
config._a[YEAR] = temp.year;
|
||
config._dayOfYear = temp.dayOfYear
|
||
}
|
||
}
|
||
// constant that refers to the ISO standard
|
||
utils_hooks__hooks.ISO_8601 = function () {
|
||
};
|
||
// date from string and format string
|
||
function configFromStringAndFormat(config) {
|
||
// TODO: Move this to another part of the creation flow to prevent circular deps
|
||
if (config._f === utils_hooks__hooks.ISO_8601) {
|
||
configFromISO(config);
|
||
return
|
||
}
|
||
config._a = [];
|
||
getParsingFlags(config).empty = true;
|
||
// This array is used to make a Date, either with `new Date` or `Date.UTC`
|
||
var string = '' + config._i, i, parsedInput, tokens, token, skipped, stringLength = string.length, totalParsedInputLength = 0;
|
||
tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
|
||
for (i = 0; i < tokens.length; i++) {
|
||
token = tokens[i];
|
||
parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
|
||
// console.log('token', token, 'parsedInput', parsedInput,
|
||
// 'regex', getParseRegexForToken(token, config));
|
||
if (parsedInput) {
|
||
skipped = string.substr(0, string.indexOf(parsedInput));
|
||
if (skipped.length > 0) {
|
||
getParsingFlags(config).unusedInput.push(skipped)
|
||
}
|
||
string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
|
||
totalParsedInputLength += parsedInput.length
|
||
}
|
||
// don't parse if it's not a known token
|
||
if (formatTokenFunctions[token]) {
|
||
if (parsedInput) {
|
||
getParsingFlags(config).empty = false
|
||
} else {
|
||
getParsingFlags(config).unusedTokens.push(token)
|
||
}
|
||
addTimeToArrayFromToken(token, parsedInput, config)
|
||
} else if (config._strict && !parsedInput) {
|
||
getParsingFlags(config).unusedTokens.push(token)
|
||
}
|
||
}
|
||
// add remaining unparsed input length to the string
|
||
getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
|
||
if (string.length > 0) {
|
||
getParsingFlags(config).unusedInput.push(string)
|
||
}
|
||
// clear _12h flag if hour is <= 12
|
||
if (getParsingFlags(config).bigHour === true && config._a[HOUR] <= 12 && config._a[HOUR] > 0) {
|
||
getParsingFlags(config).bigHour = undefined
|
||
}
|
||
// handle meridiem
|
||
config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
|
||
configFromArray(config);
|
||
checkOverflow(config)
|
||
}
|
||
function meridiemFixWrap(locale, hour, meridiem) {
|
||
var isPm;
|
||
if (meridiem == null) {
|
||
// nothing to do
|
||
return hour
|
||
}
|
||
if (locale.meridiemHour != null) {
|
||
return locale.meridiemHour(hour, meridiem)
|
||
} else if (locale.isPM != null) {
|
||
// Fallback
|
||
isPm = locale.isPM(meridiem);
|
||
if (isPm && hour < 12) {
|
||
hour += 12
|
||
}
|
||
if (!isPm && hour === 12) {
|
||
hour = 0
|
||
}
|
||
return hour
|
||
} else {
|
||
// this is not supposed to happen
|
||
return hour
|
||
}
|
||
}
|
||
// date from string and array of format strings
|
||
function configFromStringAndArray(config) {
|
||
var tempConfig, bestMoment, scoreToBeat, i, currentScore;
|
||
if (config._f.length === 0) {
|
||
getParsingFlags(config).invalidFormat = true;
|
||
config._d = new Date(NaN);
|
||
return
|
||
}
|
||
for (i = 0; i < config._f.length; i++) {
|
||
currentScore = 0;
|
||
tempConfig = copyConfig({}, config);
|
||
if (config._useUTC != null) {
|
||
tempConfig._useUTC = config._useUTC
|
||
}
|
||
tempConfig._f = config._f[i];
|
||
configFromStringAndFormat(tempConfig);
|
||
if (!valid__isValid(tempConfig)) {
|
||
continue
|
||
}
|
||
// if there is any input that was not parsed add a penalty for that format
|
||
currentScore += getParsingFlags(tempConfig).charsLeftOver;
|
||
//or tokens
|
||
currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
|
||
getParsingFlags(tempConfig).score = currentScore;
|
||
if (scoreToBeat == null || currentScore < scoreToBeat) {
|
||
scoreToBeat = currentScore;
|
||
bestMoment = tempConfig
|
||
}
|
||
}
|
||
extend(config, bestMoment || tempConfig)
|
||
}
|
||
function configFromObject(config) {
|
||
if (config._d) {
|
||
return
|
||
}
|
||
var i = normalizeObjectUnits(config._i);
|
||
config._a = map([
|
||
i.year,
|
||
i.month,
|
||
i.day || i.date,
|
||
i.hour,
|
||
i.minute,
|
||
i.second,
|
||
i.millisecond
|
||
], function (obj) {
|
||
return obj && parseInt(obj, 10)
|
||
});
|
||
configFromArray(config)
|
||
}
|
||
function createFromConfig(config) {
|
||
var res = new Moment(checkOverflow(prepareConfig(config)));
|
||
if (res._nextDay) {
|
||
// Adding is smart enough around DST
|
||
res.add(1, 'd');
|
||
res._nextDay = undefined
|
||
}
|
||
return res
|
||
}
|
||
function prepareConfig(config) {
|
||
var input = config._i, format = config._f;
|
||
config._locale = config._locale || locale_locales__getLocale(config._l);
|
||
if (input === null || format === undefined && input === '') {
|
||
return valid__createInvalid({ nullInput: true })
|
||
}
|
||
if (typeof input === 'string') {
|
||
config._i = input = config._locale.preparse(input)
|
||
}
|
||
if (isMoment(input)) {
|
||
return new Moment(checkOverflow(input))
|
||
} else if (isArray(format)) {
|
||
configFromStringAndArray(config)
|
||
} else if (format) {
|
||
configFromStringAndFormat(config)
|
||
} else if (isDate(input)) {
|
||
config._d = input
|
||
} else {
|
||
configFromInput(config)
|
||
}
|
||
if (!valid__isValid(config)) {
|
||
config._d = null
|
||
}
|
||
return config
|
||
}
|
||
function configFromInput(config) {
|
||
var input = config._i;
|
||
if (input === undefined) {
|
||
config._d = new Date(utils_hooks__hooks.now())
|
||
} else if (isDate(input)) {
|
||
config._d = new Date(+input)
|
||
} else if (typeof input === 'string') {
|
||
configFromString(config)
|
||
} else if (isArray(input)) {
|
||
config._a = map(input.slice(0), function (obj) {
|
||
return parseInt(obj, 10)
|
||
});
|
||
configFromArray(config)
|
||
} else if (typeof input === 'object') {
|
||
configFromObject(config)
|
||
} else if (typeof input === 'number') {
|
||
// from milliseconds
|
||
config._d = new Date(input)
|
||
} else {
|
||
utils_hooks__hooks.createFromInputFallback(config)
|
||
}
|
||
}
|
||
function createLocalOrUTC(input, format, locale, strict, isUTC) {
|
||
var c = {};
|
||
if (typeof locale === 'boolean') {
|
||
strict = locale;
|
||
locale = undefined
|
||
}
|
||
// object construction must be done this way.
|
||
// https://github.com/moment/moment/issues/1423
|
||
c._isAMomentObject = true;
|
||
c._useUTC = c._isUTC = isUTC;
|
||
c._l = locale;
|
||
c._i = input;
|
||
c._f = format;
|
||
c._strict = strict;
|
||
return createFromConfig(c)
|
||
}
|
||
function local__createLocal(input, format, locale, strict) {
|
||
return createLocalOrUTC(input, format, locale, strict, false)
|
||
}
|
||
var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', function () {
|
||
var other = local__createLocal.apply(null, arguments);
|
||
if (this.isValid() && other.isValid()) {
|
||
return other < this ? this : other
|
||
} else {
|
||
return valid__createInvalid()
|
||
}
|
||
});
|
||
var prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', function () {
|
||
var other = local__createLocal.apply(null, arguments);
|
||
if (this.isValid() && other.isValid()) {
|
||
return other > this ? this : other
|
||
} else {
|
||
return valid__createInvalid()
|
||
}
|
||
});
|
||
// Pick a moment m from moments so that m[fn](other) is true for all
|
||
// other. This relies on the function fn to be transitive.
|
||
//
|
||
// moments should either be an array of moment objects or an array, whose
|
||
// first element is an array of moment objects.
|
||
function pickBy(fn, moments) {
|
||
var res, i;
|
||
if (moments.length === 1 && isArray(moments[0])) {
|
||
moments = moments[0]
|
||
}
|
||
if (!moments.length) {
|
||
return local__createLocal()
|
||
}
|
||
res = moments[0];
|
||
for (i = 1; i < moments.length; ++i) {
|
||
if (!moments[i].isValid() || moments[i][fn](res)) {
|
||
res = moments[i]
|
||
}
|
||
}
|
||
return res
|
||
}
|
||
// TODO: Use [].sort instead?
|
||
function min() {
|
||
var args = [].slice.call(arguments, 0);
|
||
return pickBy('isBefore', args)
|
||
}
|
||
function max() {
|
||
var args = [].slice.call(arguments, 0);
|
||
return pickBy('isAfter', args)
|
||
}
|
||
var now = function () {
|
||
return Date.now ? Date.now() : +new Date
|
||
};
|
||
function Duration(duration) {
|
||
var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months = normalizedInput.month || 0, weeks = normalizedInput.week || 0, days = normalizedInput.day || 0, hours = normalizedInput.hour || 0, minutes = normalizedInput.minute || 0, seconds = normalizedInput.second || 0, milliseconds = normalizedInput.millisecond || 0;
|
||
// representation for dateAddRemove
|
||
this._milliseconds = +milliseconds + seconds * 1000 + // 1000
|
||
minutes * 60000 + // 1000 * 60
|
||
hours * 3600000;
|
||
// 1000 * 60 * 60
|
||
// Because of dateAddRemove treats 24 hours as different from a
|
||
// day when working around DST, we need to store them separately
|
||
this._days = +days + weeks * 7;
|
||
// It is impossible translate months into days without knowing
|
||
// which months you are are talking about, so we have to store
|
||
// it separately.
|
||
this._months = +months + quarters * 3 + years * 12;
|
||
this._data = {};
|
||
this._locale = locale_locales__getLocale();
|
||
this._bubble()
|
||
}
|
||
function isDuration(obj) {
|
||
return obj instanceof Duration
|
||
}
|
||
// FORMATTING
|
||
function offset(token, separator) {
|
||
addFormatToken(token, 0, 0, function () {
|
||
var offset = this.utcOffset();
|
||
var sign = '+';
|
||
if (offset < 0) {
|
||
offset = -offset;
|
||
sign = '-'
|
||
}
|
||
return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2)
|
||
})
|
||
}
|
||
offset('Z', ':');
|
||
offset('ZZ', '');
|
||
// PARSING
|
||
addRegexToken('Z', matchShortOffset);
|
||
addRegexToken('ZZ', matchShortOffset);
|
||
addParseToken([
|
||
'Z',
|
||
'ZZ'
|
||
], function (input, array, config) {
|
||
config._useUTC = true;
|
||
config._tzm = offsetFromString(matchShortOffset, input)
|
||
});
|
||
// HELPERS
|
||
// timezone chunker
|
||
// '+10:00' > ['10', '00']
|
||
// '-1530' > ['-15', '30']
|
||
var chunkOffset = /([\+\-]|\d\d)/gi;
|
||
function offsetFromString(matcher, string) {
|
||
var matches = (string || '').match(matcher) || [];
|
||
var chunk = matches[matches.length - 1] || [];
|
||
var parts = (chunk + '').match(chunkOffset) || [
|
||
'-',
|
||
0,
|
||
0
|
||
];
|
||
var minutes = +(parts[1] * 60) + toInt(parts[2]);
|
||
return parts[0] === '+' ? minutes : -minutes
|
||
}
|
||
// Return a moment from input, that is local/utc/zone equivalent to model.
|
||
function cloneWithOffset(input, model) {
|
||
var res, diff;
|
||
if (model._isUTC) {
|
||
res = model.clone();
|
||
diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - +res;
|
||
// Use low-level api, because this fn is low-level api.
|
||
res._d.setTime(+res._d + diff);
|
||
utils_hooks__hooks.updateOffset(res, false);
|
||
return res
|
||
} else {
|
||
return local__createLocal(input).local()
|
||
}
|
||
}
|
||
function getDateOffset(m) {
|
||
// On Firefox.24 Date#getTimezoneOffset returns a floating point.
|
||
// https://github.com/moment/moment/pull/1871
|
||
return -Math.round(m._d.getTimezoneOffset() / 15) * 15
|
||
}
|
||
// HOOKS
|
||
// This function will be called whenever a moment is mutated.
|
||
// It is intended to keep the offset in sync with the timezone.
|
||
utils_hooks__hooks.updateOffset = function () {
|
||
};
|
||
// MOMENTS
|
||
// keepLocalTime = true means only change the timezone, without
|
||
// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
|
||
// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
|
||
// +0200, so we adjust the time as needed, to be valid.
|
||
//
|
||
// Keeping the time actually adds/subtracts (one hour)
|
||
// from the actual represented time. That is why we call updateOffset
|
||
// a second time. In case it wants us to change the offset again
|
||
// _changeInProgress == true case, then we have to adjust, because
|
||
// there is no such time in the given timezone.
|
||
function getSetOffset(input, keepLocalTime) {
|
||
var offset = this._offset || 0, localAdjust;
|
||
if (!this.isValid()) {
|
||
return input != null ? this : NaN
|
||
}
|
||
if (input != null) {
|
||
if (typeof input === 'string') {
|
||
input = offsetFromString(matchShortOffset, input)
|
||
} else if (Math.abs(input) < 16) {
|
||
input = input * 60
|
||
}
|
||
if (!this._isUTC && keepLocalTime) {
|
||
localAdjust = getDateOffset(this)
|
||
}
|
||
this._offset = input;
|
||
this._isUTC = true;
|
||
if (localAdjust != null) {
|
||
this.add(localAdjust, 'm')
|
||
}
|
||
if (offset !== input) {
|
||
if (!keepLocalTime || this._changeInProgress) {
|
||
add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false)
|
||
} else if (!this._changeInProgress) {
|
||
this._changeInProgress = true;
|
||
utils_hooks__hooks.updateOffset(this, true);
|
||
this._changeInProgress = null
|
||
}
|
||
}
|
||
return this
|
||
} else {
|
||
return this._isUTC ? offset : getDateOffset(this)
|
||
}
|
||
}
|
||
function getSetZone(input, keepLocalTime) {
|
||
if (input != null) {
|
||
if (typeof input !== 'string') {
|
||
input = -input
|
||
}
|
||
this.utcOffset(input, keepLocalTime);
|
||
return this
|
||
} else {
|
||
return -this.utcOffset()
|
||
}
|
||
}
|
||
function setOffsetToUTC(keepLocalTime) {
|
||
return this.utcOffset(0, keepLocalTime)
|
||
}
|
||
function setOffsetToLocal(keepLocalTime) {
|
||
if (this._isUTC) {
|
||
this.utcOffset(0, keepLocalTime);
|
||
this._isUTC = false;
|
||
if (keepLocalTime) {
|
||
this.subtract(getDateOffset(this), 'm')
|
||
}
|
||
}
|
||
return this
|
||
}
|
||
function setOffsetToParsedOffset() {
|
||
if (this._tzm) {
|
||
this.utcOffset(this._tzm)
|
||
} else if (typeof this._i === 'string') {
|
||
this.utcOffset(offsetFromString(matchOffset, this._i))
|
||
}
|
||
return this
|
||
}
|
||
function hasAlignedHourOffset(input) {
|
||
if (!this.isValid()) {
|
||
return false
|
||
}
|
||
input = input ? local__createLocal(input).utcOffset() : 0;
|
||
return (this.utcOffset() - input) % 60 === 0
|
||
}
|
||
function isDaylightSavingTime() {
|
||
return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
|
||
}
|
||
function isDaylightSavingTimeShifted() {
|
||
if (!isUndefined(this._isDSTShifted)) {
|
||
return this._isDSTShifted
|
||
}
|
||
var c = {};
|
||
copyConfig(c, this);
|
||
c = prepareConfig(c);
|
||
if (c._a) {
|
||
var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
|
||
this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0
|
||
} else {
|
||
this._isDSTShifted = false
|
||
}
|
||
return this._isDSTShifted
|
||
}
|
||
function isLocal() {
|
||
return this.isValid() ? !this._isUTC : false
|
||
}
|
||
function isUtcOffset() {
|
||
return this.isValid() ? this._isUTC : false
|
||
}
|
||
function isUtc() {
|
||
return this.isValid() ? this._isUTC && this._offset === 0 : false
|
||
}
|
||
// ASP.NET json date format regex
|
||
var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/;
|
||
// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
|
||
// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
|
||
// and further modified to allow for strings containing both week and day
|
||
var isoRegex = /^(-)?P(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)W)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?$/;
|
||
function create__createDuration(input, key) {
|
||
var duration = input,
|
||
// matching against regexp is expensive, do it on demand
|
||
match = null, sign, ret, diffRes;
|
||
if (isDuration(input)) {
|
||
duration = {
|
||
ms: input._milliseconds,
|
||
d: input._days,
|
||
M: input._months
|
||
}
|
||
} else if (typeof input === 'number') {
|
||
duration = {};
|
||
if (key) {
|
||
duration[key] = input
|
||
} else {
|
||
duration.milliseconds = input
|
||
}
|
||
} else if (!!(match = aspNetRegex.exec(input))) {
|
||
sign = match[1] === '-' ? -1 : 1;
|
||
duration = {
|
||
y: 0,
|
||
d: toInt(match[DATE]) * sign,
|
||
h: toInt(match[HOUR]) * sign,
|
||
m: toInt(match[MINUTE]) * sign,
|
||
s: toInt(match[SECOND]) * sign,
|
||
ms: toInt(match[MILLISECOND]) * sign
|
||
}
|
||
} else if (!!(match = isoRegex.exec(input))) {
|
||
sign = match[1] === '-' ? -1 : 1;
|
||
duration = {
|
||
y: parseIso(match[2], sign),
|
||
M: parseIso(match[3], sign),
|
||
w: parseIso(match[4], sign),
|
||
d: parseIso(match[5], sign),
|
||
h: parseIso(match[6], sign),
|
||
m: parseIso(match[7], sign),
|
||
s: parseIso(match[8], sign)
|
||
}
|
||
} else if (duration == null) {
|
||
// checks for null or undefined
|
||
duration = {}
|
||
} else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
|
||
diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
|
||
duration = {};
|
||
duration.ms = diffRes.milliseconds;
|
||
duration.M = diffRes.months
|
||
}
|
||
ret = new Duration(duration);
|
||
if (isDuration(input) && hasOwnProp(input, '_locale')) {
|
||
ret._locale = input._locale
|
||
}
|
||
return ret
|
||
}
|
||
create__createDuration.fn = Duration.prototype;
|
||
function parseIso(inp, sign) {
|
||
// We'd normally use ~~inp for this, but unfortunately it also
|
||
// converts floats to ints.
|
||
// inp may be undefined, so careful calling replace on it.
|
||
var res = inp && parseFloat(inp.replace(',', '.'));
|
||
// apply sign while we're at it
|
||
return (isNaN(res) ? 0 : res) * sign
|
||
}
|
||
function positiveMomentsDifference(base, other) {
|
||
var res = {
|
||
milliseconds: 0,
|
||
months: 0
|
||
};
|
||
res.months = other.month() - base.month() + (other.year() - base.year()) * 12;
|
||
if (base.clone().add(res.months, 'M').isAfter(other)) {
|
||
--res.months
|
||
}
|
||
res.milliseconds = +other - +base.clone().add(res.months, 'M');
|
||
return res
|
||
}
|
||
function momentsDifference(base, other) {
|
||
var res;
|
||
if (!(base.isValid() && other.isValid())) {
|
||
return {
|
||
milliseconds: 0,
|
||
months: 0
|
||
}
|
||
}
|
||
other = cloneWithOffset(other, base);
|
||
if (base.isBefore(other)) {
|
||
res = positiveMomentsDifference(base, other)
|
||
} else {
|
||
res = positiveMomentsDifference(other, base);
|
||
res.milliseconds = -res.milliseconds;
|
||
res.months = -res.months
|
||
}
|
||
return res
|
||
}
|
||
function absRound(number) {
|
||
if (number < 0) {
|
||
return Math.round(-1 * number) * -1
|
||
} else {
|
||
return Math.round(number)
|
||
}
|
||
}
|
||
// TODO: remove 'name' arg after deprecation is removed
|
||
function createAdder(direction, name) {
|
||
return function (val, period) {
|
||
var dur, tmp;
|
||
//invert the arguments, but complain about it
|
||
if (period !== null && !isNaN(+period)) {
|
||
deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
|
||
tmp = val;
|
||
val = period;
|
||
period = tmp
|
||
}
|
||
val = typeof val === 'string' ? +val : val;
|
||
dur = create__createDuration(val, period);
|
||
add_subtract__addSubtract(this, dur, direction);
|
||
return this
|
||
}
|
||
}
|
||
function add_subtract__addSubtract(mom, duration, isAdding, updateOffset) {
|
||
var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months);
|
||
if (!mom.isValid()) {
|
||
// No op
|
||
return
|
||
}
|
||
updateOffset = updateOffset == null ? true : updateOffset;
|
||
if (milliseconds) {
|
||
mom._d.setTime(+mom._d + milliseconds * isAdding)
|
||
}
|
||
if (days) {
|
||
get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding)
|
||
}
|
||
if (months) {
|
||
setMonth(mom, get_set__get(mom, 'Month') + months * isAdding)
|
||
}
|
||
if (updateOffset) {
|
||
utils_hooks__hooks.updateOffset(mom, days || months)
|
||
}
|
||
}
|
||
var add_subtract__add = createAdder(1, 'add');
|
||
var add_subtract__subtract = createAdder(-1, 'subtract');
|
||
function moment_calendar__calendar(time, formats) {
|
||
// We want to compare the start of today, vs this.
|
||
// Getting start-of-today depends on whether we're local/utc/offset or not.
|
||
var now = time || local__createLocal(), sod = cloneWithOffset(now, this).startOf('day'), diff = this.diff(sod, 'days', true), format = diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';
|
||
var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]);
|
||
return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)))
|
||
}
|
||
function clone() {
|
||
return new Moment(this)
|
||
}
|
||
function isAfter(input, units) {
|
||
var localInput = isMoment(input) ? input : local__createLocal(input);
|
||
if (!(this.isValid() && localInput.isValid())) {
|
||
return false
|
||
}
|
||
units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
|
||
if (units === 'millisecond') {
|
||
return +this > +localInput
|
||
} else {
|
||
return +localInput < +this.clone().startOf(units)
|
||
}
|
||
}
|
||
function isBefore(input, units) {
|
||
var localInput = isMoment(input) ? input : local__createLocal(input);
|
||
if (!(this.isValid() && localInput.isValid())) {
|
||
return false
|
||
}
|
||
units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
|
||
if (units === 'millisecond') {
|
||
return +this < +localInput
|
||
} else {
|
||
return +this.clone().endOf(units) < +localInput
|
||
}
|
||
}
|
||
function isBetween(from, to, units) {
|
||
return this.isAfter(from, units) && this.isBefore(to, units)
|
||
}
|
||
function isSame(input, units) {
|
||
var localInput = isMoment(input) ? input : local__createLocal(input), inputMs;
|
||
if (!(this.isValid() && localInput.isValid())) {
|
||
return false
|
||
}
|
||
units = normalizeUnits(units || 'millisecond');
|
||
if (units === 'millisecond') {
|
||
return +this === +localInput
|
||
} else {
|
||
inputMs = +localInput;
|
||
return +this.clone().startOf(units) <= inputMs && inputMs <= +this.clone().endOf(units)
|
||
}
|
||
}
|
||
function isSameOrAfter(input, units) {
|
||
return this.isSame(input, units) || this.isAfter(input, units)
|
||
}
|
||
function isSameOrBefore(input, units) {
|
||
return this.isSame(input, units) || this.isBefore(input, units)
|
||
}
|
||
function diff(input, units, asFloat) {
|
||
var that, zoneDelta, delta, output;
|
||
if (!this.isValid()) {
|
||
return NaN
|
||
}
|
||
that = cloneWithOffset(input, this);
|
||
if (!that.isValid()) {
|
||
return NaN
|
||
}
|
||
zoneDelta = (that.utcOffset() - this.utcOffset()) * 60000;
|
||
units = normalizeUnits(units);
|
||
if (units === 'year' || units === 'month' || units === 'quarter') {
|
||
output = monthDiff(this, that);
|
||
if (units === 'quarter') {
|
||
output = output / 3
|
||
} else if (units === 'year') {
|
||
output = output / 12
|
||
}
|
||
} else {
|
||
delta = this - that;
|
||
output = units === 'second' ? delta / 1000 : // 1000
|
||
units === 'minute' ? delta / 60000 : // 1000 * 60
|
||
units === 'hour' ? delta / 3600000 : // 1000 * 60 * 60
|
||
units === 'day' ? (delta - zoneDelta) / 86400000 : // 1000 * 60 * 60 * 24, negate dst
|
||
units === 'week' ? (delta - zoneDelta) / 604800000 : // 1000 * 60 * 60 * 24 * 7, negate dst
|
||
delta
|
||
}
|
||
return asFloat ? output : absFloor(output)
|
||
}
|
||
function monthDiff(a, b) {
|
||
// difference in months
|
||
var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
|
||
// b is in (anchor - 1 month, anchor + 1 month)
|
||
anchor = a.clone().add(wholeMonthDiff, 'months'), anchor2, adjust;
|
||
if (b - anchor < 0) {
|
||
anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
|
||
// linear across the month
|
||
adjust = (b - anchor) / (anchor - anchor2)
|
||
} else {
|
||
anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
|
||
// linear across the month
|
||
adjust = (b - anchor) / (anchor2 - anchor)
|
||
}
|
||
return -(wholeMonthDiff + adjust)
|
||
}
|
||
utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
|
||
function toString() {
|
||
return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')
|
||
}
|
||
function moment_format__toISOString() {
|
||
var m = this.clone().utc();
|
||
if (0 < m.year() && m.year() <= 9999) {
|
||
if (isFunction(Date.prototype.toISOString)) {
|
||
// native implementation is ~50x faster, use it when we can
|
||
return this.toDate().toISOString()
|
||
} else {
|
||
return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]')
|
||
}
|
||
} else {
|
||
return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]')
|
||
}
|
||
}
|
||
function format(inputString) {
|
||
var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
|
||
return this.localeData().postformat(output)
|
||
}
|
||
function from(time, withoutSuffix) {
|
||
if (this.isValid() && (isMoment(time) && time.isValid() || local__createLocal(time).isValid())) {
|
||
return create__createDuration({
|
||
to: this,
|
||
from: time
|
||
}).locale(this.locale()).humanize(!withoutSuffix)
|
||
} else {
|
||
return this.localeData().invalidDate()
|
||
}
|
||
}
|
||
function fromNow(withoutSuffix) {
|
||
return this.from(local__createLocal(), withoutSuffix)
|
||
}
|
||
function to(time, withoutSuffix) {
|
||
if (this.isValid() && (isMoment(time) && time.isValid() || local__createLocal(time).isValid())) {
|
||
return create__createDuration({
|
||
from: this,
|
||
to: time
|
||
}).locale(this.locale()).humanize(!withoutSuffix)
|
||
} else {
|
||
return this.localeData().invalidDate()
|
||
}
|
||
}
|
||
function toNow(withoutSuffix) {
|
||
return this.to(local__createLocal(), withoutSuffix)
|
||
}
|
||
// If passed a locale key, it will set the locale for this
|
||
// instance. Otherwise, it will return the locale configuration
|
||
// variables for this instance.
|
||
function locale(key) {
|
||
var newLocaleData;
|
||
if (key === undefined) {
|
||
return this._locale._abbr
|
||
} else {
|
||
newLocaleData = locale_locales__getLocale(key);
|
||
if (newLocaleData != null) {
|
||
this._locale = newLocaleData
|
||
}
|
||
return this
|
||
}
|
||
}
|
||
var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {
|
||
if (key === undefined) {
|
||
return this.localeData()
|
||
} else {
|
||
return this.locale(key)
|
||
}
|
||
});
|
||
function localeData() {
|
||
return this._locale
|
||
}
|
||
function startOf(units) {
|
||
units = normalizeUnits(units);
|
||
// the following switch intentionally omits break keywords
|
||
// to utilize falling through the cases.
|
||
switch (units) {
|
||
case 'year':
|
||
this.month(0);
|
||
/* falls through */
|
||
case 'quarter':
|
||
case 'month':
|
||
this.date(1);
|
||
/* falls through */
|
||
case 'week':
|
||
case 'isoWeek':
|
||
case 'day':
|
||
this.hours(0);
|
||
/* falls through */
|
||
case 'hour':
|
||
this.minutes(0);
|
||
/* falls through */
|
||
case 'minute':
|
||
this.seconds(0);
|
||
/* falls through */
|
||
case 'second':
|
||
this.milliseconds(0)
|
||
}
|
||
// weeks are a special case
|
||
if (units === 'week') {
|
||
this.weekday(0)
|
||
}
|
||
if (units === 'isoWeek') {
|
||
this.isoWeekday(1)
|
||
}
|
||
// quarters are also special
|
||
if (units === 'quarter') {
|
||
this.month(Math.floor(this.month() / 3) * 3)
|
||
}
|
||
return this
|
||
}
|
||
function endOf(units) {
|
||
units = normalizeUnits(units);
|
||
if (units === undefined || units === 'millisecond') {
|
||
return this
|
||
}
|
||
return this.startOf(units).add(1, units === 'isoWeek' ? 'week' : units).subtract(1, 'ms')
|
||
}
|
||
function to_type__valueOf() {
|
||
return +this._d - (this._offset || 0) * 60000
|
||
}
|
||
function unix() {
|
||
return Math.floor(+this / 1000)
|
||
}
|
||
function toDate() {
|
||
return this._offset ? new Date(+this) : this._d
|
||
}
|
||
function toArray() {
|
||
var m = this;
|
||
return [
|
||
m.year(),
|
||
m.month(),
|
||
m.date(),
|
||
m.hour(),
|
||
m.minute(),
|
||
m.second(),
|
||
m.millisecond()
|
||
]
|
||
}
|
||
function toObject() {
|
||
var m = this;
|
||
return {
|
||
years: m.year(),
|
||
months: m.month(),
|
||
date: m.date(),
|
||
hours: m.hours(),
|
||
minutes: m.minutes(),
|
||
seconds: m.seconds(),
|
||
milliseconds: m.milliseconds()
|
||
}
|
||
}
|
||
function toJSON() {
|
||
// new Date(NaN).toJSON() === null
|
||
return this.isValid() ? this.toISOString() : null
|
||
}
|
||
function moment_valid__isValid() {
|
||
return valid__isValid(this)
|
||
}
|
||
function parsingFlags() {
|
||
return extend({}, getParsingFlags(this))
|
||
}
|
||
function invalidAt() {
|
||
return getParsingFlags(this).overflow
|
||
}
|
||
function creationData() {
|
||
return {
|
||
input: this._i,
|
||
format: this._f,
|
||
locale: this._locale,
|
||
isUTC: this._isUTC,
|
||
strict: this._strict
|
||
}
|
||
}
|
||
// FORMATTING
|
||
addFormatToken(0, [
|
||
'gg',
|
||
2
|
||
], 0, function () {
|
||
return this.weekYear() % 100
|
||
});
|
||
addFormatToken(0, [
|
||
'GG',
|
||
2
|
||
], 0, function () {
|
||
return this.isoWeekYear() % 100
|
||
});
|
||
function addWeekYearFormatToken(token, getter) {
|
||
addFormatToken(0, [
|
||
token,
|
||
token.length
|
||
], 0, getter)
|
||
}
|
||
addWeekYearFormatToken('gggg', 'weekYear');
|
||
addWeekYearFormatToken('ggggg', 'weekYear');
|
||
addWeekYearFormatToken('GGGG', 'isoWeekYear');
|
||
addWeekYearFormatToken('GGGGG', 'isoWeekYear');
|
||
// ALIASES
|
||
addUnitAlias('weekYear', 'gg');
|
||
addUnitAlias('isoWeekYear', 'GG');
|
||
// PARSING
|
||
addRegexToken('G', matchSigned);
|
||
addRegexToken('g', matchSigned);
|
||
addRegexToken('GG', match1to2, match2);
|
||
addRegexToken('gg', match1to2, match2);
|
||
addRegexToken('GGGG', match1to4, match4);
|
||
addRegexToken('gggg', match1to4, match4);
|
||
addRegexToken('GGGGG', match1to6, match6);
|
||
addRegexToken('ggggg', match1to6, match6);
|
||
addWeekParseToken([
|
||
'gggg',
|
||
'ggggg',
|
||
'GGGG',
|
||
'GGGGG'
|
||
], function (input, week, config, token) {
|
||
week[token.substr(0, 2)] = toInt(input)
|
||
});
|
||
addWeekParseToken([
|
||
'gg',
|
||
'GG'
|
||
], function (input, week, config, token) {
|
||
week[token] = utils_hooks__hooks.parseTwoDigitYear(input)
|
||
});
|
||
// MOMENTS
|
||
function getSetWeekYear(input) {
|
||
return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
|
||
}
|
||
function getSetISOWeekYear(input) {
|
||
return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4)
|
||
}
|
||
function getISOWeeksInYear() {
|
||
return weeksInYear(this.year(), 1, 4)
|
||
}
|
||
function getWeeksInYear() {
|
||
var weekInfo = this.localeData()._week;
|
||
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy)
|
||
}
|
||
function getSetWeekYearHelper(input, week, weekday, dow, doy) {
|
||
var weeksTarget;
|
||
if (input == null) {
|
||
return weekOfYear(this, dow, doy).year
|
||
} else {
|
||
weeksTarget = weeksInYear(input, dow, doy);
|
||
if (week > weeksTarget) {
|
||
week = weeksTarget
|
||
}
|
||
return setWeekAll.call(this, input, week, weekday, dow, doy)
|
||
}
|
||
}
|
||
function setWeekAll(weekYear, week, weekday, dow, doy) {
|
||
var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
|
||
this.year(date.getUTCFullYear());
|
||
this.month(date.getUTCMonth());
|
||
this.date(date.getUTCDate());
|
||
return this
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('Q', 0, 'Qo', 'quarter');
|
||
// ALIASES
|
||
addUnitAlias('quarter', 'Q');
|
||
// PARSING
|
||
addRegexToken('Q', match1);
|
||
addParseToken('Q', function (input, array) {
|
||
array[MONTH] = (toInt(input) - 1) * 3
|
||
});
|
||
// MOMENTS
|
||
function getSetQuarter(input) {
|
||
return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3)
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('w', [
|
||
'ww',
|
||
2
|
||
], 'wo', 'week');
|
||
addFormatToken('W', [
|
||
'WW',
|
||
2
|
||
], 'Wo', 'isoWeek');
|
||
// ALIASES
|
||
addUnitAlias('week', 'w');
|
||
addUnitAlias('isoWeek', 'W');
|
||
// PARSING
|
||
addRegexToken('w', match1to2);
|
||
addRegexToken('ww', match1to2, match2);
|
||
addRegexToken('W', match1to2);
|
||
addRegexToken('WW', match1to2, match2);
|
||
addWeekParseToken([
|
||
'w',
|
||
'ww',
|
||
'W',
|
||
'WW'
|
||
], function (input, week, config, token) {
|
||
week[token.substr(0, 1)] = toInt(input)
|
||
});
|
||
// HELPERS
|
||
// LOCALES
|
||
function localeWeek(mom) {
|
||
return weekOfYear(mom, this._week.dow, this._week.doy).week
|
||
}
|
||
var defaultLocaleWeek = {
|
||
dow: 0,
|
||
// Sunday is the first day of the week.
|
||
doy: 6 // The week that contains Jan 1st is the first week of the year.
|
||
};
|
||
function localeFirstDayOfWeek() {
|
||
return this._week.dow
|
||
}
|
||
function localeFirstDayOfYear() {
|
||
return this._week.doy
|
||
}
|
||
// MOMENTS
|
||
function getSetWeek(input) {
|
||
var week = this.localeData().week(this);
|
||
return input == null ? week : this.add((input - week) * 7, 'd')
|
||
}
|
||
function getSetISOWeek(input) {
|
||
var week = weekOfYear(this, 1, 4).week;
|
||
return input == null ? week : this.add((input - week) * 7, 'd')
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('D', [
|
||
'DD',
|
||
2
|
||
], 'Do', 'date');
|
||
// ALIASES
|
||
addUnitAlias('date', 'D');
|
||
// PARSING
|
||
addRegexToken('D', match1to2);
|
||
addRegexToken('DD', match1to2, match2);
|
||
addRegexToken('Do', function (isStrict, locale) {
|
||
return isStrict ? locale._ordinalParse : locale._ordinalParseLenient
|
||
});
|
||
addParseToken([
|
||
'D',
|
||
'DD'
|
||
], DATE);
|
||
addParseToken('Do', function (input, array) {
|
||
array[DATE] = toInt(input.match(match1to2)[0], 10)
|
||
});
|
||
// MOMENTS
|
||
var getSetDayOfMonth = makeGetSet('Date', true);
|
||
// FORMATTING
|
||
addFormatToken('d', 0, 'do', 'day');
|
||
addFormatToken('dd', 0, 0, function (format) {
|
||
return this.localeData().weekdaysMin(this, format)
|
||
});
|
||
addFormatToken('ddd', 0, 0, function (format) {
|
||
return this.localeData().weekdaysShort(this, format)
|
||
});
|
||
addFormatToken('dddd', 0, 0, function (format) {
|
||
return this.localeData().weekdays(this, format)
|
||
});
|
||
addFormatToken('e', 0, 0, 'weekday');
|
||
addFormatToken('E', 0, 0, 'isoWeekday');
|
||
// ALIASES
|
||
addUnitAlias('day', 'd');
|
||
addUnitAlias('weekday', 'e');
|
||
addUnitAlias('isoWeekday', 'E');
|
||
// PARSING
|
||
addRegexToken('d', match1to2);
|
||
addRegexToken('e', match1to2);
|
||
addRegexToken('E', match1to2);
|
||
addRegexToken('dd', matchWord);
|
||
addRegexToken('ddd', matchWord);
|
||
addRegexToken('dddd', matchWord);
|
||
addWeekParseToken([
|
||
'dd',
|
||
'ddd',
|
||
'dddd'
|
||
], function (input, week, config, token) {
|
||
var weekday = config._locale.weekdaysParse(input, token, config._strict);
|
||
// if we didn't get a weekday name, mark the date as invalid
|
||
if (weekday != null) {
|
||
week.d = weekday
|
||
} else {
|
||
getParsingFlags(config).invalidWeekday = input
|
||
}
|
||
});
|
||
addWeekParseToken([
|
||
'd',
|
||
'e',
|
||
'E'
|
||
], function (input, week, config, token) {
|
||
week[token] = toInt(input)
|
||
});
|
||
// HELPERS
|
||
function parseWeekday(input, locale) {
|
||
if (typeof input !== 'string') {
|
||
return input
|
||
}
|
||
if (!isNaN(input)) {
|
||
return parseInt(input, 10)
|
||
}
|
||
input = locale.weekdaysParse(input);
|
||
if (typeof input === 'number') {
|
||
return input
|
||
}
|
||
return null
|
||
}
|
||
// LOCALES
|
||
var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
|
||
function localeWeekdays(m, format) {
|
||
return isArray(this._weekdays) ? this._weekdays[m.day()] : this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]
|
||
}
|
||
var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
|
||
function localeWeekdaysShort(m) {
|
||
return this._weekdaysShort[m.day()]
|
||
}
|
||
var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
|
||
function localeWeekdaysMin(m) {
|
||
return this._weekdaysMin[m.day()]
|
||
}
|
||
function localeWeekdaysParse(weekdayName, format, strict) {
|
||
var i, mom, regex;
|
||
if (!this._weekdaysParse) {
|
||
this._weekdaysParse = [];
|
||
this._minWeekdaysParse = [];
|
||
this._shortWeekdaysParse = [];
|
||
this._fullWeekdaysParse = []
|
||
}
|
||
for (i = 0; i < 7; i++) {
|
||
// make the regex if we don't have it already
|
||
mom = local__createLocal([
|
||
2000,
|
||
1
|
||
]).day(i);
|
||
if (strict && !this._fullWeekdaysParse[i]) {
|
||
this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '.?') + '$', 'i');
|
||
this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '.?') + '$', 'i');
|
||
this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '.?') + '$', 'i')
|
||
}
|
||
if (!this._weekdaysParse[i]) {
|
||
regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
|
||
this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i')
|
||
}
|
||
// test the regex
|
||
if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
|
||
return i
|
||
} else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
|
||
return i
|
||
} else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
|
||
return i
|
||
} else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
|
||
return i
|
||
}
|
||
}
|
||
}
|
||
// MOMENTS
|
||
function getSetDayOfWeek(input) {
|
||
if (!this.isValid()) {
|
||
return input != null ? this : NaN
|
||
}
|
||
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
|
||
if (input != null) {
|
||
input = parseWeekday(input, this.localeData());
|
||
return this.add(input - day, 'd')
|
||
} else {
|
||
return day
|
||
}
|
||
}
|
||
function getSetLocaleDayOfWeek(input) {
|
||
if (!this.isValid()) {
|
||
return input != null ? this : NaN
|
||
}
|
||
var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
|
||
return input == null ? weekday : this.add(input - weekday, 'd')
|
||
}
|
||
function getSetISODayOfWeek(input) {
|
||
if (!this.isValid()) {
|
||
return input != null ? this : NaN
|
||
}
|
||
// behaves the same as moment#day except
|
||
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
|
||
// as a setter, sunday should belong to the previous week.
|
||
return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7)
|
||
}
|
||
// FORMATTING
|
||
addFormatToken('DDD', [
|
||
'DDDD',
|
||
3
|
||
], 'DDDo', 'dayOfYear');
|
||
// ALIASES
|
||
addUnitAlias('dayOfYear', 'DDD');
|
||
// PARSING
|
||
addRegexToken('DDD', match1to3);
|
||
addRegexToken('DDDD', match3);
|
||
addParseToken([
|
||
'DDD',
|
||
'DDDD'
|
||
], function (input, array, config) {
|
||
config._dayOfYear = toInt(input)
|
||
});
|
||
// HELPERS
|
||
// MOMENTS
|
||
function getSetDayOfYear(input) {
|
||
var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 86400000) + 1;
|
||
return input == null ? dayOfYear : this.add(input - dayOfYear, 'd')
|
||
}
|
||
// FORMATTING
|
||
function hFormat() {
|
||
return this.hours() % 12 || 12
|
||
}
|
||
addFormatToken('H', [
|
||
'HH',
|
||
2
|
||
], 0, 'hour');
|
||
addFormatToken('h', [
|
||
'hh',
|
||
2
|
||
], 0, hFormat);
|
||
addFormatToken('hmm', 0, 0, function () {
|
||
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2)
|
||
});
|
||
addFormatToken('hmmss', 0, 0, function () {
|
||
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2)
|
||
});
|
||
addFormatToken('Hmm', 0, 0, function () {
|
||
return '' + this.hours() + zeroFill(this.minutes(), 2)
|
||
});
|
||
addFormatToken('Hmmss', 0, 0, function () {
|
||
return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2)
|
||
});
|
||
function meridiem(token, lowercase) {
|
||
addFormatToken(token, 0, 0, function () {
|
||
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase)
|
||
})
|
||
}
|
||
meridiem('a', true);
|
||
meridiem('A', false);
|
||
// ALIASES
|
||
addUnitAlias('hour', 'h');
|
||
// PARSING
|
||
function matchMeridiem(isStrict, locale) {
|
||
return locale._meridiemParse
|
||
}
|
||
addRegexToken('a', matchMeridiem);
|
||
addRegexToken('A', matchMeridiem);
|
||
addRegexToken('H', match1to2);
|
||
addRegexToken('h', match1to2);
|
||
addRegexToken('HH', match1to2, match2);
|
||
addRegexToken('hh', match1to2, match2);
|
||
addRegexToken('hmm', match3to4);
|
||
addRegexToken('hmmss', match5to6);
|
||
addRegexToken('Hmm', match3to4);
|
||
addRegexToken('Hmmss', match5to6);
|
||
addParseToken([
|
||
'H',
|
||
'HH'
|
||
], HOUR);
|
||
addParseToken([
|
||
'a',
|
||
'A'
|
||
], function (input, array, config) {
|
||
config._isPm = config._locale.isPM(input);
|
||
config._meridiem = input
|
||
});
|
||
addParseToken([
|
||
'h',
|
||
'hh'
|
||
], function (input, array, config) {
|
||
array[HOUR] = toInt(input);
|
||
getParsingFlags(config).bigHour = true
|
||
});
|
||
addParseToken('hmm', function (input, array, config) {
|
||
var pos = input.length - 2;
|
||
array[HOUR] = toInt(input.substr(0, pos));
|
||
array[MINUTE] = toInt(input.substr(pos));
|
||
getParsingFlags(config).bigHour = true
|
||
});
|
||
addParseToken('hmmss', function (input, array, config) {
|
||
var pos1 = input.length - 4;
|
||
var pos2 = input.length - 2;
|
||
array[HOUR] = toInt(input.substr(0, pos1));
|
||
array[MINUTE] = toInt(input.substr(pos1, 2));
|
||
array[SECOND] = toInt(input.substr(pos2));
|
||
getParsingFlags(config).bigHour = true
|
||
});
|
||
addParseToken('Hmm', function (input, array, config) {
|
||
var pos = input.length - 2;
|
||
array[HOUR] = toInt(input.substr(0, pos));
|
||
array[MINUTE] = toInt(input.substr(pos))
|
||
});
|
||
addParseToken('Hmmss', function (input, array, config) {
|
||
var pos1 = input.length - 4;
|
||
var pos2 = input.length - 2;
|
||
array[HOUR] = toInt(input.substr(0, pos1));
|
||
array[MINUTE] = toInt(input.substr(pos1, 2));
|
||
array[SECOND] = toInt(input.substr(pos2))
|
||
});
|
||
// LOCALES
|
||
function localeIsPM(input) {
|
||
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
|
||
// Using charAt should be more compatible.
|
||
return (input + '').toLowerCase().charAt(0) === 'p'
|
||
}
|
||
var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
|
||
function localeMeridiem(hours, minutes, isLower) {
|
||
if (hours > 11) {
|
||
return isLower ? 'pm' : 'PM'
|
||
} else {
|
||
return isLower ? 'am' : 'AM'
|
||
}
|
||
}
|
||
// MOMENTS
|
||
// Setting the hour should keep the time, because the user explicitly
|
||
// specified which hour he wants. So trying to maintain the same hour (in
|
||
// a new timezone) makes sense. Adding/subtracting hours does not follow
|
||
// this rule.
|
||
var getSetHour = makeGetSet('Hours', true);
|
||
// FORMATTING
|
||
addFormatToken('m', [
|
||
'mm',
|
||
2
|
||
], 0, 'minute');
|
||
// ALIASES
|
||
addUnitAlias('minute', 'm');
|
||
// PARSING
|
||
addRegexToken('m', match1to2);
|
||
addRegexToken('mm', match1to2, match2);
|
||
addParseToken([
|
||
'm',
|
||
'mm'
|
||
], MINUTE);
|
||
// MOMENTS
|
||
var getSetMinute = makeGetSet('Minutes', false);
|
||
// FORMATTING
|
||
addFormatToken('s', [
|
||
'ss',
|
||
2
|
||
], 0, 'second');
|
||
// ALIASES
|
||
addUnitAlias('second', 's');
|
||
// PARSING
|
||
addRegexToken('s', match1to2);
|
||
addRegexToken('ss', match1to2, match2);
|
||
addParseToken([
|
||
's',
|
||
'ss'
|
||
], SECOND);
|
||
// MOMENTS
|
||
var getSetSecond = makeGetSet('Seconds', false);
|
||
// FORMATTING
|
||
addFormatToken('S', 0, 0, function () {
|
||
return ~~(this.millisecond() / 100)
|
||
});
|
||
addFormatToken(0, [
|
||
'SS',
|
||
2
|
||
], 0, function () {
|
||
return ~~(this.millisecond() / 10)
|
||
});
|
||
addFormatToken(0, [
|
||
'SSS',
|
||
3
|
||
], 0, 'millisecond');
|
||
addFormatToken(0, [
|
||
'SSSS',
|
||
4
|
||
], 0, function () {
|
||
return this.millisecond() * 10
|
||
});
|
||
addFormatToken(0, [
|
||
'SSSSS',
|
||
5
|
||
], 0, function () {
|
||
return this.millisecond() * 100
|
||
});
|
||
addFormatToken(0, [
|
||
'SSSSSS',
|
||
6
|
||
], 0, function () {
|
||
return this.millisecond() * 1000
|
||
});
|
||
addFormatToken(0, [
|
||
'SSSSSSS',
|
||
7
|
||
], 0, function () {
|
||
return this.millisecond() * 10000
|
||
});
|
||
addFormatToken(0, [
|
||
'SSSSSSSS',
|
||
8
|
||
], 0, function () {
|
||
return this.millisecond() * 100000
|
||
});
|
||
addFormatToken(0, [
|
||
'SSSSSSSSS',
|
||
9
|
||
], 0, function () {
|
||
return this.millisecond() * 1000000
|
||
});
|
||
// ALIASES
|
||
addUnitAlias('millisecond', 'ms');
|
||
// PARSING
|
||
addRegexToken('S', match1to3, match1);
|
||
addRegexToken('SS', match1to3, match2);
|
||
addRegexToken('SSS', match1to3, match3);
|
||
var token;
|
||
for (token = 'SSSS'; token.length <= 9; token += 'S') {
|
||
addRegexToken(token, matchUnsigned)
|
||
}
|
||
function parseMs(input, array) {
|
||
array[MILLISECOND] = toInt(('0.' + input) * 1000)
|
||
}
|
||
for (token = 'S'; token.length <= 9; token += 'S') {
|
||
addParseToken(token, parseMs)
|
||
}
|
||
// MOMENTS
|
||
var getSetMillisecond = makeGetSet('Milliseconds', false);
|
||
// FORMATTING
|
||
addFormatToken('z', 0, 0, 'zoneAbbr');
|
||
addFormatToken('zz', 0, 0, 'zoneName');
|
||
// MOMENTS
|
||
function getZoneAbbr() {
|
||
return this._isUTC ? 'UTC' : ''
|
||
}
|
||
function getZoneName() {
|
||
return this._isUTC ? 'Coordinated Universal Time' : ''
|
||
}
|
||
var momentPrototype__proto = Moment.prototype;
|
||
momentPrototype__proto.add = add_subtract__add;
|
||
momentPrototype__proto.calendar = moment_calendar__calendar;
|
||
momentPrototype__proto.clone = clone;
|
||
momentPrototype__proto.diff = diff;
|
||
momentPrototype__proto.endOf = endOf;
|
||
momentPrototype__proto.format = format;
|
||
momentPrototype__proto.from = from;
|
||
momentPrototype__proto.fromNow = fromNow;
|
||
momentPrototype__proto.to = to;
|
||
momentPrototype__proto.toNow = toNow;
|
||
momentPrototype__proto.get = getSet;
|
||
momentPrototype__proto.invalidAt = invalidAt;
|
||
momentPrototype__proto.isAfter = isAfter;
|
||
momentPrototype__proto.isBefore = isBefore;
|
||
momentPrototype__proto.isBetween = isBetween;
|
||
momentPrototype__proto.isSame = isSame;
|
||
momentPrototype__proto.isSameOrAfter = isSameOrAfter;
|
||
momentPrototype__proto.isSameOrBefore = isSameOrBefore;
|
||
momentPrototype__proto.isValid = moment_valid__isValid;
|
||
momentPrototype__proto.lang = lang;
|
||
momentPrototype__proto.locale = locale;
|
||
momentPrototype__proto.localeData = localeData;
|
||
momentPrototype__proto.max = prototypeMax;
|
||
momentPrototype__proto.min = prototypeMin;
|
||
momentPrototype__proto.parsingFlags = parsingFlags;
|
||
momentPrototype__proto.set = getSet;
|
||
momentPrototype__proto.startOf = startOf;
|
||
momentPrototype__proto.subtract = add_subtract__subtract;
|
||
momentPrototype__proto.toArray = toArray;
|
||
momentPrototype__proto.toObject = toObject;
|
||
momentPrototype__proto.toDate = toDate;
|
||
momentPrototype__proto.toISOString = moment_format__toISOString;
|
||
momentPrototype__proto.toJSON = toJSON;
|
||
momentPrototype__proto.toString = toString;
|
||
momentPrototype__proto.unix = unix;
|
||
momentPrototype__proto.valueOf = to_type__valueOf;
|
||
momentPrototype__proto.creationData = creationData;
|
||
// Year
|
||
momentPrototype__proto.year = getSetYear;
|
||
momentPrototype__proto.isLeapYear = getIsLeapYear;
|
||
// Week Year
|
||
momentPrototype__proto.weekYear = getSetWeekYear;
|
||
momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
|
||
// Quarter
|
||
momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
|
||
// Month
|
||
momentPrototype__proto.month = getSetMonth;
|
||
momentPrototype__proto.daysInMonth = getDaysInMonth;
|
||
// Week
|
||
momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
|
||
momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
|
||
momentPrototype__proto.weeksInYear = getWeeksInYear;
|
||
momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
|
||
// Day
|
||
momentPrototype__proto.date = getSetDayOfMonth;
|
||
momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
|
||
momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
|
||
momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
|
||
momentPrototype__proto.dayOfYear = getSetDayOfYear;
|
||
// Hour
|
||
momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
|
||
// Minute
|
||
momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
|
||
// Second
|
||
momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
|
||
// Millisecond
|
||
momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
|
||
// Offset
|
||
momentPrototype__proto.utcOffset = getSetOffset;
|
||
momentPrototype__proto.utc = setOffsetToUTC;
|
||
momentPrototype__proto.local = setOffsetToLocal;
|
||
momentPrototype__proto.parseZone = setOffsetToParsedOffset;
|
||
momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
|
||
momentPrototype__proto.isDST = isDaylightSavingTime;
|
||
momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
|
||
momentPrototype__proto.isLocal = isLocal;
|
||
momentPrototype__proto.isUtcOffset = isUtcOffset;
|
||
momentPrototype__proto.isUtc = isUtc;
|
||
momentPrototype__proto.isUTC = isUtc;
|
||
// Timezone
|
||
momentPrototype__proto.zoneAbbr = getZoneAbbr;
|
||
momentPrototype__proto.zoneName = getZoneName;
|
||
// Deprecations
|
||
momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
|
||
momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
|
||
momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
|
||
momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
|
||
var momentPrototype = momentPrototype__proto;
|
||
function moment__createUnix(input) {
|
||
return local__createLocal(input * 1000)
|
||
}
|
||
function moment__createInZone() {
|
||
return local__createLocal.apply(null, arguments).parseZone()
|
||
}
|
||
var defaultCalendar = {
|
||
sameDay: '[Today at] LT',
|
||
nextDay: '[Tomorrow at] LT',
|
||
nextWeek: 'dddd [at] LT',
|
||
lastDay: '[Yesterday at] LT',
|
||
lastWeek: '[Last] dddd [at] LT',
|
||
sameElse: 'L'
|
||
};
|
||
function locale_calendar__calendar(key, mom, now) {
|
||
var output = this._calendar[key];
|
||
return isFunction(output) ? output.call(mom, now) : output
|
||
}
|
||
var defaultLongDateFormat = {
|
||
LTS: 'h:mm:ss A',
|
||
LT: 'h:mm A',
|
||
L: 'MM/DD/YYYY',
|
||
LL: 'MMMM D, YYYY',
|
||
LLL: 'MMMM D, YYYY h:mm A',
|
||
LLLL: 'dddd, MMMM D, YYYY h:mm A'
|
||
};
|
||
function longDateFormat(key) {
|
||
var format = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()];
|
||
if (format || !formatUpper) {
|
||
return format
|
||
}
|
||
this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
|
||
return val.slice(1)
|
||
});
|
||
return this._longDateFormat[key]
|
||
}
|
||
var defaultInvalidDate = 'Invalid date';
|
||
function invalidDate() {
|
||
return this._invalidDate
|
||
}
|
||
var defaultOrdinal = '%d';
|
||
var defaultOrdinalParse = /\d{1,2}/;
|
||
function ordinal(number) {
|
||
return this._ordinal.replace('%d', number)
|
||
}
|
||
function preParsePostFormat(string) {
|
||
return string
|
||
}
|
||
var defaultRelativeTime = {
|
||
future: 'in %s',
|
||
past: '%s ago',
|
||
s: 'a few seconds',
|
||
m: 'a minute',
|
||
mm: '%d minutes',
|
||
h: 'an hour',
|
||
hh: '%d hours',
|
||
d: 'a day',
|
||
dd: '%d days',
|
||
M: 'a month',
|
||
MM: '%d months',
|
||
y: 'a year',
|
||
yy: '%d years'
|
||
};
|
||
function relative__relativeTime(number, withoutSuffix, string, isFuture) {
|
||
var output = this._relativeTime[string];
|
||
return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number)
|
||
}
|
||
function pastFuture(diff, output) {
|
||
var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
|
||
return isFunction(format) ? format(output) : format.replace(/%s/i, output)
|
||
}
|
||
var prototype__proto = Locale.prototype;
|
||
prototype__proto._calendar = defaultCalendar;
|
||
prototype__proto.calendar = locale_calendar__calendar;
|
||
prototype__proto._longDateFormat = defaultLongDateFormat;
|
||
prototype__proto.longDateFormat = longDateFormat;
|
||
prototype__proto._invalidDate = defaultInvalidDate;
|
||
prototype__proto.invalidDate = invalidDate;
|
||
prototype__proto._ordinal = defaultOrdinal;
|
||
prototype__proto.ordinal = ordinal;
|
||
prototype__proto._ordinalParse = defaultOrdinalParse;
|
||
prototype__proto.preparse = preParsePostFormat;
|
||
prototype__proto.postformat = preParsePostFormat;
|
||
prototype__proto._relativeTime = defaultRelativeTime;
|
||
prototype__proto.relativeTime = relative__relativeTime;
|
||
prototype__proto.pastFuture = pastFuture;
|
||
prototype__proto.set = locale_set__set;
|
||
// Month
|
||
prototype__proto.months = localeMonths;
|
||
prototype__proto._months = defaultLocaleMonths;
|
||
prototype__proto.monthsShort = localeMonthsShort;
|
||
prototype__proto._monthsShort = defaultLocaleMonthsShort;
|
||
prototype__proto.monthsParse = localeMonthsParse;
|
||
prototype__proto._monthsRegex = defaultMonthsRegex;
|
||
prototype__proto.monthsRegex = monthsRegex;
|
||
prototype__proto._monthsShortRegex = defaultMonthsShortRegex;
|
||
prototype__proto.monthsShortRegex = monthsShortRegex;
|
||
// Week
|
||
prototype__proto.week = localeWeek;
|
||
prototype__proto._week = defaultLocaleWeek;
|
||
prototype__proto.firstDayOfYear = localeFirstDayOfYear;
|
||
prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
|
||
// Day of Week
|
||
prototype__proto.weekdays = localeWeekdays;
|
||
prototype__proto._weekdays = defaultLocaleWeekdays;
|
||
prototype__proto.weekdaysMin = localeWeekdaysMin;
|
||
prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
|
||
prototype__proto.weekdaysShort = localeWeekdaysShort;
|
||
prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
|
||
prototype__proto.weekdaysParse = localeWeekdaysParse;
|
||
// Hours
|
||
prototype__proto.isPM = localeIsPM;
|
||
prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
|
||
prototype__proto.meridiem = localeMeridiem;
|
||
function lists__get(format, index, field, setter) {
|
||
var locale = locale_locales__getLocale();
|
||
var utc = create_utc__createUTC().set(setter, index);
|
||
return locale[field](utc, format)
|
||
}
|
||
function list(format, index, field, count, setter) {
|
||
if (typeof format === 'number') {
|
||
index = format;
|
||
format = undefined
|
||
}
|
||
format = format || '';
|
||
if (index != null) {
|
||
return lists__get(format, index, field, setter)
|
||
}
|
||
var i;
|
||
var out = [];
|
||
for (i = 0; i < count; i++) {
|
||
out[i] = lists__get(format, i, field, setter)
|
||
}
|
||
return out
|
||
}
|
||
function lists__listMonths(format, index) {
|
||
return list(format, index, 'months', 12, 'month')
|
||
}
|
||
function lists__listMonthsShort(format, index) {
|
||
return list(format, index, 'monthsShort', 12, 'month')
|
||
}
|
||
function lists__listWeekdays(format, index) {
|
||
return list(format, index, 'weekdays', 7, 'day')
|
||
}
|
||
function lists__listWeekdaysShort(format, index) {
|
||
return list(format, index, 'weekdaysShort', 7, 'day')
|
||
}
|
||
function lists__listWeekdaysMin(format, index) {
|
||
return list(format, index, 'weekdaysMin', 7, 'day')
|
||
}
|
||
locale_locales__getSetGlobalLocale('en', {
|
||
ordinalParse: /\d{1,2}(th|st|nd|rd)/,
|
||
ordinal: function (number) {
|
||
var b = number % 10, output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
|
||
return number + output
|
||
}
|
||
});
|
||
// Side effect imports
|
||
utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
|
||
utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
|
||
var mathAbs = Math.abs;
|
||
function duration_abs__abs() {
|
||
var data = this._data;
|
||
this._milliseconds = mathAbs(this._milliseconds);
|
||
this._days = mathAbs(this._days);
|
||
this._months = mathAbs(this._months);
|
||
data.milliseconds = mathAbs(data.milliseconds);
|
||
data.seconds = mathAbs(data.seconds);
|
||
data.minutes = mathAbs(data.minutes);
|
||
data.hours = mathAbs(data.hours);
|
||
data.months = mathAbs(data.months);
|
||
data.years = mathAbs(data.years);
|
||
return this
|
||
}
|
||
function duration_add_subtract__addSubtract(duration, input, value, direction) {
|
||
var other = create__createDuration(input, value);
|
||
duration._milliseconds += direction * other._milliseconds;
|
||
duration._days += direction * other._days;
|
||
duration._months += direction * other._months;
|
||
return duration._bubble()
|
||
}
|
||
// supports only 2.0-style add(1, 's') or add(duration)
|
||
function duration_add_subtract__add(input, value) {
|
||
return duration_add_subtract__addSubtract(this, input, value, 1)
|
||
}
|
||
// supports only 2.0-style subtract(1, 's') or subtract(duration)
|
||
function duration_add_subtract__subtract(input, value) {
|
||
return duration_add_subtract__addSubtract(this, input, value, -1)
|
||
}
|
||
function absCeil(number) {
|
||
if (number < 0) {
|
||
return Math.floor(number)
|
||
} else {
|
||
return Math.ceil(number)
|
||
}
|
||
}
|
||
function bubble() {
|
||
var milliseconds = this._milliseconds;
|
||
var days = this._days;
|
||
var months = this._months;
|
||
var data = this._data;
|
||
var seconds, minutes, hours, years, monthsFromDays;
|
||
// if we have a mix of positive and negative values, bubble down first
|
||
// check: https://github.com/moment/moment/issues/2166
|
||
if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {
|
||
milliseconds += absCeil(monthsToDays(months) + days) * 86400000;
|
||
days = 0;
|
||
months = 0
|
||
}
|
||
// The following code bubbles up values, see the tests for
|
||
// examples of what that means.
|
||
data.milliseconds = milliseconds % 1000;
|
||
seconds = absFloor(milliseconds / 1000);
|
||
data.seconds = seconds % 60;
|
||
minutes = absFloor(seconds / 60);
|
||
data.minutes = minutes % 60;
|
||
hours = absFloor(minutes / 60);
|
||
data.hours = hours % 24;
|
||
days += absFloor(hours / 24);
|
||
// convert days to months
|
||
monthsFromDays = absFloor(daysToMonths(days));
|
||
months += monthsFromDays;
|
||
days -= absCeil(monthsToDays(monthsFromDays));
|
||
// 12 months -> 1 year
|
||
years = absFloor(months / 12);
|
||
months %= 12;
|
||
data.days = days;
|
||
data.months = months;
|
||
data.years = years;
|
||
return this
|
||
}
|
||
function daysToMonths(days) {
|
||
// 400 years have 146097 days (taking into account leap year rules)
|
||
// 400 years have 12 months === 4800
|
||
return days * 4800 / 146097
|
||
}
|
||
function monthsToDays(months) {
|
||
// the reverse of daysToMonths
|
||
return months * 146097 / 4800
|
||
}
|
||
function as(units) {
|
||
var days;
|
||
var months;
|
||
var milliseconds = this._milliseconds;
|
||
units = normalizeUnits(units);
|
||
if (units === 'month' || units === 'year') {
|
||
days = this._days + milliseconds / 86400000;
|
||
months = this._months + daysToMonths(days);
|
||
return units === 'month' ? months : months / 12
|
||
} else {
|
||
// handle milliseconds separately because of floating point math errors (issue #1867)
|
||
days = this._days + Math.round(monthsToDays(this._months));
|
||
switch (units) {
|
||
case 'week':
|
||
return days / 7 + milliseconds / 604800000;
|
||
case 'day':
|
||
return days + milliseconds / 86400000;
|
||
case 'hour':
|
||
return days * 24 + milliseconds / 3600000;
|
||
case 'minute':
|
||
return days * 1440 + milliseconds / 60000;
|
||
case 'second':
|
||
return days * 86400 + milliseconds / 1000;
|
||
// Math.floor prevents floating point math errors here
|
||
case 'millisecond':
|
||
return Math.floor(days * 86400000) + milliseconds;
|
||
default:
|
||
throw new Error('Unknown unit ' + units)
|
||
}
|
||
}
|
||
}
|
||
// TODO: Use this.as('ms')?
|
||
function duration_as__valueOf() {
|
||
return this._milliseconds + this._days * 86400000 + this._months % 12 * 2592000000 + toInt(this._months / 12) * 31536000000
|
||
}
|
||
function makeAs(alias) {
|
||
return function () {
|
||
return this.as(alias)
|
||
}
|
||
}
|
||
var asMilliseconds = makeAs('ms');
|
||
var asSeconds = makeAs('s');
|
||
var asMinutes = makeAs('m');
|
||
var asHours = makeAs('h');
|
||
var asDays = makeAs('d');
|
||
var asWeeks = makeAs('w');
|
||
var asMonths = makeAs('M');
|
||
var asYears = makeAs('y');
|
||
function duration_get__get(units) {
|
||
units = normalizeUnits(units);
|
||
return this[units + 's']()
|
||
}
|
||
function makeGetter(name) {
|
||
return function () {
|
||
return this._data[name]
|
||
}
|
||
}
|
||
var milliseconds = makeGetter('milliseconds');
|
||
var seconds = makeGetter('seconds');
|
||
var minutes = makeGetter('minutes');
|
||
var hours = makeGetter('hours');
|
||
var days = makeGetter('days');
|
||
var months = makeGetter('months');
|
||
var years = makeGetter('years');
|
||
function weeks() {
|
||
return absFloor(this.days() / 7)
|
||
}
|
||
var round = Math.round;
|
||
var thresholds = {
|
||
s: 45,
|
||
// seconds to minute
|
||
m: 45,
|
||
// minutes to hour
|
||
h: 22,
|
||
// hours to day
|
||
d: 26,
|
||
// days to month
|
||
M: 11 // months to year
|
||
};
|
||
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
|
||
function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
|
||
return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture)
|
||
}
|
||
function duration_humanize__relativeTime(posNegDuration, withoutSuffix, locale) {
|
||
var duration = create__createDuration(posNegDuration).abs();
|
||
var seconds = round(duration.as('s'));
|
||
var minutes = round(duration.as('m'));
|
||
var hours = round(duration.as('h'));
|
||
var days = round(duration.as('d'));
|
||
var months = round(duration.as('M'));
|
||
var years = round(duration.as('y'));
|
||
var a = seconds < thresholds.s && [
|
||
's',
|
||
seconds
|
||
] || minutes <= 1 && ['m'] || minutes < thresholds.m && [
|
||
'mm',
|
||
minutes
|
||
] || hours <= 1 && ['h'] || hours < thresholds.h && [
|
||
'hh',
|
||
hours
|
||
] || days <= 1 && ['d'] || days < thresholds.d && [
|
||
'dd',
|
||
days
|
||
] || months <= 1 && ['M'] || months < thresholds.M && [
|
||
'MM',
|
||
months
|
||
] || years <= 1 && ['y'] || [
|
||
'yy',
|
||
years
|
||
];
|
||
a[2] = withoutSuffix;
|
||
a[3] = +posNegDuration > 0;
|
||
a[4] = locale;
|
||
return substituteTimeAgo.apply(null, a)
|
||
}
|
||
// This function allows you to set a threshold for relative time strings
|
||
function duration_humanize__getSetRelativeTimeThreshold(threshold, limit) {
|
||
if (thresholds[threshold] === undefined) {
|
||
return false
|
||
}
|
||
if (limit === undefined) {
|
||
return thresholds[threshold]
|
||
}
|
||
thresholds[threshold] = limit;
|
||
return true
|
||
}
|
||
function humanize(withSuffix) {
|
||
var locale = this.localeData();
|
||
var output = duration_humanize__relativeTime(this, !withSuffix, locale);
|
||
if (withSuffix) {
|
||
output = locale.pastFuture(+this, output)
|
||
}
|
||
return locale.postformat(output)
|
||
}
|
||
var iso_string__abs = Math.abs;
|
||
function iso_string__toISOString() {
|
||
// for ISO strings we do not use the normal bubbling rules:
|
||
// * milliseconds bubble up until they become hours
|
||
// * days do not bubble at all
|
||
// * months bubble up until they become years
|
||
// This is because there is no context-free conversion between hours and days
|
||
// (think of clock changes)
|
||
// and also not between days and months (28-31 days per month)
|
||
var seconds = iso_string__abs(this._milliseconds) / 1000;
|
||
var days = iso_string__abs(this._days);
|
||
var months = iso_string__abs(this._months);
|
||
var minutes, hours, years;
|
||
// 3600 seconds -> 60 minutes -> 1 hour
|
||
minutes = absFloor(seconds / 60);
|
||
hours = absFloor(minutes / 60);
|
||
seconds %= 60;
|
||
minutes %= 60;
|
||
// 12 months -> 1 year
|
||
years = absFloor(months / 12);
|
||
months %= 12;
|
||
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
|
||
var Y = years;
|
||
var M = months;
|
||
var D = days;
|
||
var h = hours;
|
||
var m = minutes;
|
||
var s = seconds;
|
||
var total = this.asSeconds();
|
||
if (!total) {
|
||
// this is the same as C#'s (Noda) and python (isodate)...
|
||
// but not other JS (goog.date)
|
||
return 'P0D'
|
||
}
|
||
return (total < 0 ? '-' : '') + 'P' + (Y ? Y + 'Y' : '') + (M ? M + 'M' : '') + (D ? D + 'D' : '') + (h || m || s ? 'T' : '') + (h ? h + 'H' : '') + (m ? m + 'M' : '') + (s ? s + 'S' : '')
|
||
}
|
||
var duration_prototype__proto = Duration.prototype;
|
||
duration_prototype__proto.abs = duration_abs__abs;
|
||
duration_prototype__proto.add = duration_add_subtract__add;
|
||
duration_prototype__proto.subtract = duration_add_subtract__subtract;
|
||
duration_prototype__proto.as = as;
|
||
duration_prototype__proto.asMilliseconds = asMilliseconds;
|
||
duration_prototype__proto.asSeconds = asSeconds;
|
||
duration_prototype__proto.asMinutes = asMinutes;
|
||
duration_prototype__proto.asHours = asHours;
|
||
duration_prototype__proto.asDays = asDays;
|
||
duration_prototype__proto.asWeeks = asWeeks;
|
||
duration_prototype__proto.asMonths = asMonths;
|
||
duration_prototype__proto.asYears = asYears;
|
||
duration_prototype__proto.valueOf = duration_as__valueOf;
|
||
duration_prototype__proto._bubble = bubble;
|
||
duration_prototype__proto.get = duration_get__get;
|
||
duration_prototype__proto.milliseconds = milliseconds;
|
||
duration_prototype__proto.seconds = seconds;
|
||
duration_prototype__proto.minutes = minutes;
|
||
duration_prototype__proto.hours = hours;
|
||
duration_prototype__proto.days = days;
|
||
duration_prototype__proto.weeks = weeks;
|
||
duration_prototype__proto.months = months;
|
||
duration_prototype__proto.years = years;
|
||
duration_prototype__proto.humanize = humanize;
|
||
duration_prototype__proto.toISOString = iso_string__toISOString;
|
||
duration_prototype__proto.toString = iso_string__toISOString;
|
||
duration_prototype__proto.toJSON = iso_string__toISOString;
|
||
duration_prototype__proto.locale = locale;
|
||
duration_prototype__proto.localeData = localeData;
|
||
// Deprecations
|
||
duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
|
||
duration_prototype__proto.lang = lang;
|
||
// Side effect imports
|
||
// FORMATTING
|
||
addFormatToken('X', 0, 0, 'unix');
|
||
addFormatToken('x', 0, 0, 'valueOf');
|
||
// PARSING
|
||
addRegexToken('x', matchSigned);
|
||
addRegexToken('X', matchTimestamp);
|
||
addParseToken('X', function (input, array, config) {
|
||
config._d = new Date(parseFloat(input, 10) * 1000)
|
||
});
|
||
addParseToken('x', function (input, array, config) {
|
||
config._d = new Date(toInt(input))
|
||
});
|
||
// Side effect imports
|
||
utils_hooks__hooks.version = '2.12.0';
|
||
setHookCallback(local__createLocal);
|
||
utils_hooks__hooks.fn = momentPrototype;
|
||
utils_hooks__hooks.min = min;
|
||
utils_hooks__hooks.max = max;
|
||
utils_hooks__hooks.now = now;
|
||
utils_hooks__hooks.utc = create_utc__createUTC;
|
||
utils_hooks__hooks.unix = moment__createUnix;
|
||
utils_hooks__hooks.months = lists__listMonths;
|
||
utils_hooks__hooks.isDate = isDate;
|
||
utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
|
||
utils_hooks__hooks.invalid = valid__createInvalid;
|
||
utils_hooks__hooks.duration = create__createDuration;
|
||
utils_hooks__hooks.isMoment = isMoment;
|
||
utils_hooks__hooks.weekdays = lists__listWeekdays;
|
||
utils_hooks__hooks.parseZone = moment__createInZone;
|
||
utils_hooks__hooks.localeData = locale_locales__getLocale;
|
||
utils_hooks__hooks.isDuration = isDuration;
|
||
utils_hooks__hooks.monthsShort = lists__listMonthsShort;
|
||
utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
|
||
utils_hooks__hooks.defineLocale = defineLocale;
|
||
utils_hooks__hooks.updateLocale = updateLocale;
|
||
utils_hooks__hooks.locales = locale_locales__listLocales;
|
||
utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
|
||
utils_hooks__hooks.normalizeUnits = normalizeUnits;
|
||
utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
|
||
utils_hooks__hooks.prototype = momentPrototype;
|
||
var _moment = utils_hooks__hooks;
|
||
return _moment
|
||
}))
|
||
});
|
||
// source: src/controls/static-ago.coffee
|
||
require.define('./controls/static-ago', function (module, exports, __dirname, __filename, process) {
|
||
var Control, StaticAgo, moment, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Control = require('./controls/control');
|
||
moment = require('moment/moment');
|
||
module.exports = StaticAgo = function (superClass) {
|
||
extend(StaticAgo, superClass);
|
||
function StaticAgo() {
|
||
return StaticAgo.__super__.constructor.apply(this, arguments)
|
||
}
|
||
StaticAgo.prototype.tag = 'daisho-static-ago';
|
||
StaticAgo.prototype.html = '<div>{ ago(input.ref.get(input.name)) }</div>';
|
||
StaticAgo.prototype.init = function () {
|
||
return StaticAgo.__super__.init.apply(this, arguments)
|
||
};
|
||
StaticAgo.prototype.ago = function (date) {
|
||
return moment(date).fromNow()
|
||
};
|
||
return StaticAgo
|
||
}(Control)
|
||
});
|
||
// source: node_modules/selectize/dist/js/selectize.js
|
||
require.define('selectize/dist/js/selectize', function (module, exports, __dirname, __filename, process) {
|
||
/**
|
||
* selectize.js (v0.12.1)
|
||
* Copyright (c) 2013–2015 Brian Reavis & contributors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
||
* file except in compliance with the License. You may obtain a copy of the License at:
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software distributed under
|
||
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||
* ANY KIND, either express or implied. See the License for the specific language
|
||
* governing permissions and limitations under the License.
|
||
*
|
||
* @author Brian Reavis <[email protected]>
|
||
*/
|
||
/*jshint curly:false */
|
||
/*jshint browser:true */
|
||
(function (root, factory) {
|
||
if (typeof define === 'function' && define.amd) {
|
||
define([
|
||
'jquery',
|
||
'sifter',
|
||
'microplugin'
|
||
], factory)
|
||
} else if (typeof exports === 'object') {
|
||
module.exports = factory(require('jquery/dist/jquery'), require('sifter/sifter'), require('microplugin/src/microplugin'))
|
||
} else {
|
||
root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin)
|
||
}
|
||
}(this, function ($, Sifter, MicroPlugin) {
|
||
'use strict';
|
||
var highlight = function ($element, pattern) {
|
||
if (typeof pattern === 'string' && !pattern.length)
|
||
return;
|
||
var regex = typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;
|
||
var highlight = function (node) {
|
||
var skip = 0;
|
||
if (node.nodeType === 3) {
|
||
var pos = node.data.search(regex);
|
||
if (pos >= 0 && node.data.length > 0) {
|
||
var match = node.data.match(regex);
|
||
var spannode = document.createElement('span');
|
||
spannode.className = 'highlight';
|
||
var middlebit = node.splitText(pos);
|
||
var endbit = middlebit.splitText(match[0].length);
|
||
var middleclone = middlebit.cloneNode(true);
|
||
spannode.appendChild(middleclone);
|
||
middlebit.parentNode.replaceChild(spannode, middlebit);
|
||
skip = 1
|
||
}
|
||
} else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
|
||
for (var i = 0; i < node.childNodes.length; ++i) {
|
||
i += highlight(node.childNodes[i])
|
||
}
|
||
}
|
||
return skip
|
||
};
|
||
return $element.each(function () {
|
||
highlight(this)
|
||
})
|
||
};
|
||
var MicroEvent = function () {
|
||
};
|
||
MicroEvent.prototype = {
|
||
on: function (event, fct) {
|
||
this._events = this._events || {};
|
||
this._events[event] = this._events[event] || [];
|
||
this._events[event].push(fct)
|
||
},
|
||
off: function (event, fct) {
|
||
var n = arguments.length;
|
||
if (n === 0)
|
||
return delete this._events;
|
||
if (n === 1)
|
||
return delete this._events[event];
|
||
this._events = this._events || {};
|
||
if (event in this._events === false)
|
||
return;
|
||
this._events[event].splice(this._events[event].indexOf(fct), 1)
|
||
},
|
||
trigger: function (event) {
|
||
this._events = this._events || {};
|
||
if (event in this._events === false)
|
||
return;
|
||
for (var i = 0; i < this._events[event].length; i++) {
|
||
this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1))
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Mixin will delegate all MicroEvent.js function in the destination object.
|
||
*
|
||
* - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent
|
||
*
|
||
* @param {object} the object which will support MicroEvent
|
||
*/
|
||
MicroEvent.mixin = function (destObject) {
|
||
var props = [
|
||
'on',
|
||
'off',
|
||
'trigger'
|
||
];
|
||
for (var i = 0; i < props.length; i++) {
|
||
destObject.prototype[props[i]] = MicroEvent.prototype[props[i]]
|
||
}
|
||
};
|
||
var IS_MAC = /Mac/.test(navigator.userAgent);
|
||
var KEY_A = 65;
|
||
var KEY_COMMA = 188;
|
||
var KEY_RETURN = 13;
|
||
var KEY_ESC = 27;
|
||
var KEY_LEFT = 37;
|
||
var KEY_UP = 38;
|
||
var KEY_P = 80;
|
||
var KEY_RIGHT = 39;
|
||
var KEY_DOWN = 40;
|
||
var KEY_N = 78;
|
||
var KEY_BACKSPACE = 8;
|
||
var KEY_DELETE = 46;
|
||
var KEY_SHIFT = 16;
|
||
var KEY_CMD = IS_MAC ? 91 : 17;
|
||
var KEY_CTRL = IS_MAC ? 18 : 17;
|
||
var KEY_TAB = 9;
|
||
var TAG_SELECT = 1;
|
||
var TAG_INPUT = 2;
|
||
// for now, android support in general is too spotty to support validity
|
||
var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('form').validity;
|
||
var isset = function (object) {
|
||
return typeof object !== 'undefined'
|
||
};
|
||
/**
|
||
* Converts a scalar to its best string representation
|
||
* for hash keys and HTML attribute values.
|
||
*
|
||
* Transformations:
|
||
* 'str' -> 'str'
|
||
* null -> ''
|
||
* undefined -> ''
|
||
* true -> '1'
|
||
* false -> '0'
|
||
* 0 -> '0'
|
||
* 1 -> '1'
|
||
*
|
||
* @param {string} value
|
||
* @returns {string|null}
|
||
*/
|
||
var hash_key = function (value) {
|
||
if (typeof value === 'undefined' || value === null)
|
||
return null;
|
||
if (typeof value === 'boolean')
|
||
return value ? '1' : '0';
|
||
return value + ''
|
||
};
|
||
/**
|
||
* Escapes a string for use within HTML.
|
||
*
|
||
* @param {string} str
|
||
* @returns {string}
|
||
*/
|
||
var escape_html = function (str) {
|
||
return (str + '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"')
|
||
};
|
||
/**
|
||
* Escapes "$" characters in replacement strings.
|
||
*
|
||
* @param {string} str
|
||
* @returns {string}
|
||
*/
|
||
var escape_replace = function (str) {
|
||
return (str + '').replace(/\$/g, '$$$$')
|
||
};
|
||
var hook = {};
|
||
/**
|
||
* Wraps `method` on `self` so that `fn`
|
||
* is invoked before the original method.
|
||
*
|
||
* @param {object} self
|
||
* @param {string} method
|
||
* @param {function} fn
|
||
*/
|
||
hook.before = function (self, method, fn) {
|
||
var original = self[method];
|
||
self[method] = function () {
|
||
fn.apply(self, arguments);
|
||
return original.apply(self, arguments)
|
||
}
|
||
};
|
||
/**
|
||
* Wraps `method` on `self` so that `fn`
|
||
* is invoked after the original method.
|
||
*
|
||
* @param {object} self
|
||
* @param {string} method
|
||
* @param {function} fn
|
||
*/
|
||
hook.after = function (self, method, fn) {
|
||
var original = self[method];
|
||
self[method] = function () {
|
||
var result = original.apply(self, arguments);
|
||
fn.apply(self, arguments);
|
||
return result
|
||
}
|
||
};
|
||
/**
|
||
* Wraps `fn` so that it can only be invoked once.
|
||
*
|
||
* @param {function} fn
|
||
* @returns {function}
|
||
*/
|
||
var once = function (fn) {
|
||
var called = false;
|
||
return function () {
|
||
if (called)
|
||
return;
|
||
called = true;
|
||
fn.apply(this, arguments)
|
||
}
|
||
};
|
||
/**
|
||
* Wraps `fn` so that it can only be called once
|
||
* every `delay` milliseconds (invoked on the falling edge).
|
||
*
|
||
* @param {function} fn
|
||
* @param {int} delay
|
||
* @returns {function}
|
||
*/
|
||
var debounce = function (fn, delay) {
|
||
var timeout;
|
||
return function () {
|
||
var self = this;
|
||
var args = arguments;
|
||
window.clearTimeout(timeout);
|
||
timeout = window.setTimeout(function () {
|
||
fn.apply(self, args)
|
||
}, delay)
|
||
}
|
||
};
|
||
/**
|
||
* Debounce all fired events types listed in `types`
|
||
* while executing the provided `fn`.
|
||
*
|
||
* @param {object} self
|
||
* @param {array} types
|
||
* @param {function} fn
|
||
*/
|
||
var debounce_events = function (self, types, fn) {
|
||
var type;
|
||
var trigger = self.trigger;
|
||
var event_args = {};
|
||
// override trigger method
|
||
self.trigger = function () {
|
||
var type = arguments[0];
|
||
if (types.indexOf(type) !== -1) {
|
||
event_args[type] = arguments
|
||
} else {
|
||
return trigger.apply(self, arguments)
|
||
}
|
||
};
|
||
// invoke provided function
|
||
fn.apply(self, []);
|
||
self.trigger = trigger;
|
||
// trigger queued events
|
||
for (type in event_args) {
|
||
if (event_args.hasOwnProperty(type)) {
|
||
trigger.apply(self, event_args[type])
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* A workaround for http://bugs.jquery.com/ticket/6696
|
||
*
|
||
* @param {object} $parent - Parent element to listen on.
|
||
* @param {string} event - Event name.
|
||
* @param {string} selector - Descendant selector to filter by.
|
||
* @param {function} fn - Event handler.
|
||
*/
|
||
var watchChildEvent = function ($parent, event, selector, fn) {
|
||
$parent.on(event, selector, function (e) {
|
||
var child = e.target;
|
||
while (child && child.parentNode !== $parent[0]) {
|
||
child = child.parentNode
|
||
}
|
||
e.currentTarget = child;
|
||
return fn.apply(this, [e])
|
||
})
|
||
};
|
||
/**
|
||
* Determines the current selection within a text input control.
|
||
* Returns an object containing:
|
||
* - start
|
||
* - length
|
||
*
|
||
* @param {object} input
|
||
* @returns {object}
|
||
*/
|
||
var getSelection = function (input) {
|
||
var result = {};
|
||
if ('selectionStart' in input) {
|
||
result.start = input.selectionStart;
|
||
result.length = input.selectionEnd - result.start
|
||
} else if (document.selection) {
|
||
input.focus();
|
||
var sel = document.selection.createRange();
|
||
var selLen = document.selection.createRange().text.length;
|
||
sel.moveStart('character', -input.value.length);
|
||
result.start = sel.text.length - selLen;
|
||
result.length = selLen
|
||
}
|
||
return result
|
||
};
|
||
/**
|
||
* Copies CSS properties from one element to another.
|
||
*
|
||
* @param {object} $from
|
||
* @param {object} $to
|
||
* @param {array} properties
|
||
*/
|
||
var transferStyles = function ($from, $to, properties) {
|
||
var i, n, styles = {};
|
||
if (properties) {
|
||
for (i = 0, n = properties.length; i < n; i++) {
|
||
styles[properties[i]] = $from.css(properties[i])
|
||
}
|
||
} else {
|
||
styles = $from.css()
|
||
}
|
||
$to.css(styles)
|
||
};
|
||
/**
|
||
* Measures the width of a string within a
|
||
* parent element (in pixels).
|
||
*
|
||
* @param {string} str
|
||
* @param {object} $parent
|
||
* @returns {int}
|
||
*/
|
||
var measureString = function (str, $parent) {
|
||
if (!str) {
|
||
return 0
|
||
}
|
||
var $test = $('<test>').css({
|
||
position: 'absolute',
|
||
top: -99999,
|
||
left: -99999,
|
||
width: 'auto',
|
||
padding: 0,
|
||
whiteSpace: 'pre'
|
||
}).text(str).appendTo('body');
|
||
transferStyles($parent, $test, [
|
||
'letterSpacing',
|
||
'fontSize',
|
||
'fontFamily',
|
||
'fontWeight',
|
||
'textTransform'
|
||
]);
|
||
var width = $test.width();
|
||
$test.remove();
|
||
return width
|
||
};
|
||
/**
|
||
* Sets up an input to grow horizontally as the user
|
||
* types. If the value is changed manually, you can
|
||
* trigger the "update" handler to resize:
|
||
*
|
||
* $input.trigger('update');
|
||
*
|
||
* @param {object} $input
|
||
*/
|
||
var autoGrow = function ($input) {
|
||
var currentWidth = null;
|
||
var update = function (e, options) {
|
||
var value, keyCode, printable, placeholder, width;
|
||
var shift, character, selection;
|
||
e = e || window.event || {};
|
||
options = options || {};
|
||
if (e.metaKey || e.altKey)
|
||
return;
|
||
if (!options.force && $input.data('grow') === false)
|
||
return;
|
||
value = $input.val();
|
||
if (e.type && e.type.toLowerCase() === 'keydown') {
|
||
keyCode = e.keyCode;
|
||
printable = keyCode >= 97 && keyCode <= 122 || keyCode >= 65 && keyCode <= 90 || keyCode >= 48 && keyCode <= 57 || // 0-9
|
||
keyCode === 32 // space
|
||
;
|
||
if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {
|
||
selection = getSelection($input[0]);
|
||
if (selection.length) {
|
||
value = value.substring(0, selection.start) + value.substring(selection.start + selection.length)
|
||
} else if (keyCode === KEY_BACKSPACE && selection.start) {
|
||
value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1)
|
||
} else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {
|
||
value = value.substring(0, selection.start) + value.substring(selection.start + 1)
|
||
}
|
||
} else if (printable) {
|
||
shift = e.shiftKey;
|
||
character = String.fromCharCode(e.keyCode);
|
||
if (shift)
|
||
character = character.toUpperCase();
|
||
else
|
||
character = character.toLowerCase();
|
||
value += character
|
||
}
|
||
}
|
||
placeholder = $input.attr('placeholder');
|
||
if (!value && placeholder) {
|
||
value = placeholder
|
||
}
|
||
width = measureString(value, $input) + 4;
|
||
if (width !== currentWidth) {
|
||
currentWidth = width;
|
||
$input.width(width);
|
||
$input.triggerHandler('resize')
|
||
}
|
||
};
|
||
$input.on('keydown keyup update blur', update);
|
||
update()
|
||
};
|
||
var Selectize = function ($input, settings) {
|
||
var key, i, n, dir, input, self = this;
|
||
input = $input[0];
|
||
input.selectize = self;
|
||
// detect rtl environment
|
||
var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);
|
||
dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;
|
||
dir = dir || $input.parents('[dir]:first').attr('dir') || '';
|
||
// setup default state
|
||
$.extend(self, {
|
||
order: 0,
|
||
settings: settings,
|
||
$input: $input,
|
||
tabIndex: $input.attr('tabindex') || '',
|
||
tagType: input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,
|
||
rtl: /rtl/i.test(dir),
|
||
eventNS: '.selectize' + ++Selectize.count,
|
||
highlightedValue: null,
|
||
isOpen: false,
|
||
isDisabled: false,
|
||
isRequired: $input.is('[required]'),
|
||
isInvalid: false,
|
||
isLocked: false,
|
||
isFocused: false,
|
||
isInputHidden: false,
|
||
isSetup: false,
|
||
isShiftDown: false,
|
||
isCmdDown: false,
|
||
isCtrlDown: false,
|
||
ignoreFocus: false,
|
||
ignoreBlur: false,
|
||
ignoreHover: false,
|
||
hasOptions: false,
|
||
currentResults: null,
|
||
lastValue: '',
|
||
caretPos: 0,
|
||
loading: 0,
|
||
loadedSearches: {},
|
||
$activeOption: null,
|
||
$activeItems: [],
|
||
optgroups: {},
|
||
options: {},
|
||
userOptions: {},
|
||
items: [],
|
||
renderCache: {},
|
||
onSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)
|
||
});
|
||
// search system
|
||
self.sifter = new Sifter(this.options, { diacritics: settings.diacritics });
|
||
// build options table
|
||
if (self.settings.options) {
|
||
for (i = 0, n = self.settings.options.length; i < n; i++) {
|
||
self.registerOption(self.settings.options[i])
|
||
}
|
||
delete self.settings.options
|
||
}
|
||
// build optgroup table
|
||
if (self.settings.optgroups) {
|
||
for (i = 0, n = self.settings.optgroups.length; i < n; i++) {
|
||
self.registerOptionGroup(self.settings.optgroups[i])
|
||
}
|
||
delete self.settings.optgroups
|
||
}
|
||
// option-dependent defaults
|
||
self.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');
|
||
if (typeof self.settings.hideSelected !== 'boolean') {
|
||
self.settings.hideSelected = self.settings.mode === 'multi'
|
||
}
|
||
self.initializePlugins(self.settings.plugins);
|
||
self.setupCallbacks();
|
||
self.setupTemplates();
|
||
self.setup()
|
||
};
|
||
// mixins
|
||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
MicroEvent.mixin(Selectize);
|
||
MicroPlugin.mixin(Selectize);
|
||
// methods
|
||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
$.extend(Selectize.prototype, {
|
||
/**
|
||
* Creates all elements and sets up event bindings.
|
||
*/
|
||
setup: function () {
|
||
var self = this;
|
||
var settings = self.settings;
|
||
var eventNS = self.eventNS;
|
||
var $window = $(window);
|
||
var $document = $(document);
|
||
var $input = self.$input;
|
||
var $wrapper;
|
||
var $control;
|
||
var $control_input;
|
||
var $dropdown;
|
||
var $dropdown_content;
|
||
var $dropdown_parent;
|
||
var inputMode;
|
||
var timeout_blur;
|
||
var timeout_focus;
|
||
var classes;
|
||
var classes_plugins;
|
||
inputMode = self.settings.mode;
|
||
classes = $input.attr('class') || '';
|
||
$wrapper = $('<div>').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);
|
||
$control = $('<div>').addClass(settings.inputClass).addClass('items').appendTo($wrapper);
|
||
$control_input = $('<input type="text" autocomplete="off" />').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);
|
||
$dropdown_parent = $(settings.dropdownParent || $wrapper);
|
||
$dropdown = $('<div>').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);
|
||
$dropdown_content = $('<div>').addClass(settings.dropdownContentClass).appendTo($dropdown);
|
||
if (self.settings.copyClassesToDropdown) {
|
||
$dropdown.addClass(classes)
|
||
}
|
||
$wrapper.css({ width: $input[0].style.width });
|
||
if (self.plugins.names.length) {
|
||
classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
|
||
$wrapper.addClass(classes_plugins);
|
||
$dropdown.addClass(classes_plugins)
|
||
}
|
||
if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {
|
||
$input.attr('multiple', 'multiple')
|
||
}
|
||
if (self.settings.placeholder) {
|
||
$control_input.attr('placeholder', settings.placeholder)
|
||
}
|
||
// if splitOn was not passed in, construct it from the delimiter to allow pasting universally
|
||
if (!self.settings.splitOn && self.settings.delimiter) {
|
||
var delimiterEscaped = self.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||
self.settings.splitOn = new RegExp('\\s*' + delimiterEscaped + '+\\s*')
|
||
}
|
||
if ($input.attr('autocorrect')) {
|
||
$control_input.attr('autocorrect', $input.attr('autocorrect'))
|
||
}
|
||
if ($input.attr('autocapitalize')) {
|
||
$control_input.attr('autocapitalize', $input.attr('autocapitalize'))
|
||
}
|
||
self.$wrapper = $wrapper;
|
||
self.$control = $control;
|
||
self.$control_input = $control_input;
|
||
self.$dropdown = $dropdown;
|
||
self.$dropdown_content = $dropdown_content;
|
||
$dropdown.on('mouseenter', '[data-selectable]', function () {
|
||
return self.onOptionHover.apply(self, arguments)
|
||
});
|
||
$dropdown.on('mousedown click', '[data-selectable]', function () {
|
||
return self.onOptionSelect.apply(self, arguments)
|
||
});
|
||
watchChildEvent($control, 'mousedown', '*:not(input)', function () {
|
||
return self.onItemSelect.apply(self, arguments)
|
||
});
|
||
autoGrow($control_input);
|
||
$control.on({
|
||
mousedown: function () {
|
||
return self.onMouseDown.apply(self, arguments)
|
||
},
|
||
click: function () {
|
||
return self.onClick.apply(self, arguments)
|
||
}
|
||
});
|
||
$control_input.on({
|
||
mousedown: function (e) {
|
||
e.stopPropagation()
|
||
},
|
||
keydown: function () {
|
||
return self.onKeyDown.apply(self, arguments)
|
||
},
|
||
keyup: function () {
|
||
return self.onKeyUp.apply(self, arguments)
|
||
},
|
||
keypress: function () {
|
||
return self.onKeyPress.apply(self, arguments)
|
||
},
|
||
resize: function () {
|
||
self.positionDropdown.apply(self, [])
|
||
},
|
||
blur: function () {
|
||
return self.onBlur.apply(self, arguments)
|
||
},
|
||
focus: function () {
|
||
self.ignoreBlur = false;
|
||
return self.onFocus.apply(self, arguments)
|
||
},
|
||
paste: function () {
|
||
return self.onPaste.apply(self, arguments)
|
||
}
|
||
});
|
||
$document.on('keydown' + eventNS, function (e) {
|
||
self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];
|
||
self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];
|
||
self.isShiftDown = e.shiftKey
|
||
});
|
||
$document.on('keyup' + eventNS, function (e) {
|
||
if (e.keyCode === KEY_CTRL)
|
||
self.isCtrlDown = false;
|
||
if (e.keyCode === KEY_SHIFT)
|
||
self.isShiftDown = false;
|
||
if (e.keyCode === KEY_CMD)
|
||
self.isCmdDown = false
|
||
});
|
||
$document.on('mousedown' + eventNS, function (e) {
|
||
if (self.isFocused) {
|
||
// prevent events on the dropdown scrollbar from causing the control to blur
|
||
if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {
|
||
return false
|
||
}
|
||
// blur on click outside
|
||
if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {
|
||
self.blur(e.target)
|
||
}
|
||
}
|
||
});
|
||
$window.on([
|
||
'scroll' + eventNS,
|
||
'resize' + eventNS
|
||
].join(' '), function () {
|
||
if (self.isOpen) {
|
||
self.positionDropdown.apply(self, arguments)
|
||
}
|
||
});
|
||
$window.on('mousemove' + eventNS, function () {
|
||
self.ignoreHover = false
|
||
});
|
||
// store original children and tab index so that they can be
|
||
// restored when the destroy() method is called.
|
||
this.revertSettings = {
|
||
$children: $input.children().detach(),
|
||
tabindex: $input.attr('tabindex')
|
||
};
|
||
$input.attr('tabindex', -1).hide().after(self.$wrapper);
|
||
if ($.isArray(settings.items)) {
|
||
self.setValue(settings.items);
|
||
delete settings.items
|
||
}
|
||
// feature detect for the validation API
|
||
if (SUPPORTS_VALIDITY_API) {
|
||
$input.on('invalid' + eventNS, function (e) {
|
||
e.preventDefault();
|
||
self.isInvalid = true;
|
||
self.refreshState()
|
||
})
|
||
}
|
||
self.updateOriginalInput();
|
||
self.refreshItems();
|
||
self.refreshState();
|
||
self.updatePlaceholder();
|
||
self.isSetup = true;
|
||
if ($input.is(':disabled')) {
|
||
self.disable()
|
||
}
|
||
self.on('change', this.onChange);
|
||
$input.data('selectize', self);
|
||
$input.addClass('selectized');
|
||
self.trigger('initialize');
|
||
// preload options
|
||
if (settings.preload === true) {
|
||
self.onSearchChange('')
|
||
}
|
||
},
|
||
/**
|
||
* Sets up default rendering functions.
|
||
*/
|
||
setupTemplates: function () {
|
||
var self = this;
|
||
var field_label = self.settings.labelField;
|
||
var field_optgroup = self.settings.optgroupLabelField;
|
||
var templates = {
|
||
'optgroup': function (data) {
|
||
return '<div class="optgroup">' + data.html + '</div>'
|
||
},
|
||
'optgroup_header': function (data, escape) {
|
||
return '<div class="optgroup-header">' + escape(data[field_optgroup]) + '</div>'
|
||
},
|
||
'option': function (data, escape) {
|
||
return '<div class="option">' + escape(data[field_label]) + '</div>'
|
||
},
|
||
'item': function (data, escape) {
|
||
return '<div class="item">' + escape(data[field_label]) + '</div>'
|
||
},
|
||
'option_create': function (data, escape) {
|
||
return '<div class="create">Add <strong>' + escape(data.input) + '</strong>…</div>'
|
||
}
|
||
};
|
||
self.settings.render = $.extend({}, templates, self.settings.render)
|
||
},
|
||
/**
|
||
* Maps fired events to callbacks provided
|
||
* in the settings used when creating the control.
|
||
*/
|
||
setupCallbacks: function () {
|
||
var key, fn, callbacks = {
|
||
'initialize': 'onInitialize',
|
||
'change': 'onChange',
|
||
'item_add': 'onItemAdd',
|
||
'item_remove': 'onItemRemove',
|
||
'clear': 'onClear',
|
||
'option_add': 'onOptionAdd',
|
||
'option_remove': 'onOptionRemove',
|
||
'option_clear': 'onOptionClear',
|
||
'optgroup_add': 'onOptionGroupAdd',
|
||
'optgroup_remove': 'onOptionGroupRemove',
|
||
'optgroup_clear': 'onOptionGroupClear',
|
||
'dropdown_open': 'onDropdownOpen',
|
||
'dropdown_close': 'onDropdownClose',
|
||
'type': 'onType',
|
||
'load': 'onLoad',
|
||
'focus': 'onFocus',
|
||
'blur': 'onBlur'
|
||
};
|
||
for (key in callbacks) {
|
||
if (callbacks.hasOwnProperty(key)) {
|
||
fn = this.settings[callbacks[key]];
|
||
if (fn)
|
||
this.on(key, fn)
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Triggered when the main control element
|
||
* has a click event.
|
||
*
|
||
* @param {object} e
|
||
* @return {boolean}
|
||
*/
|
||
onClick: function (e) {
|
||
var self = this;
|
||
// necessary for mobile webkit devices (manual focus triggering
|
||
// is ignored unless invoked within a click event)
|
||
if (!self.isFocused) {
|
||
self.focus();
|
||
e.preventDefault()
|
||
}
|
||
},
|
||
/**
|
||
* Triggered when the main control element
|
||
* has a mouse down event.
|
||
*
|
||
* @param {object} e
|
||
* @return {boolean}
|
||
*/
|
||
onMouseDown: function (e) {
|
||
var self = this;
|
||
var defaultPrevented = e.isDefaultPrevented();
|
||
var $target = $(e.target);
|
||
if (self.isFocused) {
|
||
// retain focus by preventing native handling. if the
|
||
// event target is the input it should not be modified.
|
||
// otherwise, text selection within the input won't work.
|
||
if (e.target !== self.$control_input[0]) {
|
||
if (self.settings.mode === 'single') {
|
||
// toggle dropdown
|
||
self.isOpen ? self.close() : self.open()
|
||
} else if (!defaultPrevented) {
|
||
self.setActiveItem(null)
|
||
}
|
||
return false
|
||
}
|
||
} else {
|
||
// give control focus
|
||
if (!defaultPrevented) {
|
||
window.setTimeout(function () {
|
||
self.focus()
|
||
}, 0)
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Triggered when the value of the control has been changed.
|
||
* This should propagate the event to the original DOM
|
||
* input / select element.
|
||
*/
|
||
onChange: function () {
|
||
this.$input.trigger('change')
|
||
},
|
||
/**
|
||
* Triggered on <input> paste.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onPaste: function (e) {
|
||
var self = this;
|
||
if (self.isFull() || self.isInputHidden || self.isLocked) {
|
||
e.preventDefault()
|
||
} else {
|
||
// If a regex or string is included, this will split the pasted
|
||
// input and create Items for each separate value
|
||
if (self.settings.splitOn) {
|
||
setTimeout(function () {
|
||
var splitInput = $.trim(self.$control_input.val() || '').split(self.settings.splitOn);
|
||
for (var i = 0, n = splitInput.length; i < n; i++) {
|
||
self.createItem(splitInput[i])
|
||
}
|
||
}, 0)
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Triggered on <input> keypress.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onKeyPress: function (e) {
|
||
if (this.isLocked)
|
||
return e && e.preventDefault();
|
||
var character = String.fromCharCode(e.keyCode || e.which);
|
||
if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {
|
||
this.createItem();
|
||
e.preventDefault();
|
||
return false
|
||
}
|
||
},
|
||
/**
|
||
* Triggered on <input> keydown.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onKeyDown: function (e) {
|
||
var isInput = e.target === this.$control_input[0];
|
||
var self = this;
|
||
if (self.isLocked) {
|
||
if (e.keyCode !== KEY_TAB) {
|
||
e.preventDefault()
|
||
}
|
||
return
|
||
}
|
||
switch (e.keyCode) {
|
||
case KEY_A:
|
||
if (self.isCmdDown) {
|
||
self.selectAll();
|
||
return
|
||
}
|
||
break;
|
||
case KEY_ESC:
|
||
if (self.isOpen) {
|
||
e.preventDefault();
|
||
e.stopPropagation();
|
||
self.close()
|
||
}
|
||
return;
|
||
case KEY_N:
|
||
if (!e.ctrlKey || e.altKey)
|
||
break;
|
||
case KEY_DOWN:
|
||
if (!self.isOpen && self.hasOptions) {
|
||
self.open()
|
||
} else if (self.$activeOption) {
|
||
self.ignoreHover = true;
|
||
var $next = self.getAdjacentOption(self.$activeOption, 1);
|
||
if ($next.length)
|
||
self.setActiveOption($next, true, true)
|
||
}
|
||
e.preventDefault();
|
||
return;
|
||
case KEY_P:
|
||
if (!e.ctrlKey || e.altKey)
|
||
break;
|
||
case KEY_UP:
|
||
if (self.$activeOption) {
|
||
self.ignoreHover = true;
|
||
var $prev = self.getAdjacentOption(self.$activeOption, -1);
|
||
if ($prev.length)
|
||
self.setActiveOption($prev, true, true)
|
||
}
|
||
e.preventDefault();
|
||
return;
|
||
case KEY_RETURN:
|
||
if (self.isOpen && self.$activeOption) {
|
||
self.onOptionSelect({ currentTarget: self.$activeOption });
|
||
e.preventDefault()
|
||
}
|
||
return;
|
||
case KEY_LEFT:
|
||
self.advanceSelection(-1, e);
|
||
return;
|
||
case KEY_RIGHT:
|
||
self.advanceSelection(1, e);
|
||
return;
|
||
case KEY_TAB:
|
||
if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {
|
||
self.onOptionSelect({ currentTarget: self.$activeOption });
|
||
// Default behaviour is to jump to the next field, we only want this
|
||
// if the current field doesn't accept any more entries
|
||
if (!self.isFull()) {
|
||
e.preventDefault()
|
||
}
|
||
}
|
||
if (self.settings.create && self.createItem()) {
|
||
e.preventDefault()
|
||
}
|
||
return;
|
||
case KEY_BACKSPACE:
|
||
case KEY_DELETE:
|
||
self.deleteSelection(e);
|
||
return
|
||
}
|
||
if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {
|
||
e.preventDefault();
|
||
return
|
||
}
|
||
},
|
||
/**
|
||
* Triggered on <input> keyup.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onKeyUp: function (e) {
|
||
var self = this;
|
||
if (self.isLocked)
|
||
return e && e.preventDefault();
|
||
var value = self.$control_input.val() || '';
|
||
if (self.lastValue !== value) {
|
||
self.lastValue = value;
|
||
self.onSearchChange(value);
|
||
self.refreshOptions();
|
||
self.trigger('type', value)
|
||
}
|
||
},
|
||
/**
|
||
* Invokes the user-provide option provider / loader.
|
||
*
|
||
* Note: this function is debounced in the Selectize
|
||
* constructor (by `settings.loadDelay` milliseconds)
|
||
*
|
||
* @param {string} value
|
||
*/
|
||
onSearchChange: function (value) {
|
||
var self = this;
|
||
var fn = self.settings.load;
|
||
if (!fn)
|
||
return;
|
||
if (self.loadedSearches.hasOwnProperty(value))
|
||
return;
|
||
self.loadedSearches[value] = true;
|
||
self.load(function (callback) {
|
||
fn.apply(self, [
|
||
value,
|
||
callback
|
||
])
|
||
})
|
||
},
|
||
/**
|
||
* Triggered on <input> focus.
|
||
*
|
||
* @param {object} e (optional)
|
||
* @returns {boolean}
|
||
*/
|
||
onFocus: function (e) {
|
||
var self = this;
|
||
var wasFocused = self.isFocused;
|
||
if (self.isDisabled) {
|
||
self.blur();
|
||
e && e.preventDefault();
|
||
return false
|
||
}
|
||
if (self.ignoreFocus)
|
||
return;
|
||
self.isFocused = true;
|
||
if (self.settings.preload === 'focus')
|
||
self.onSearchChange('');
|
||
if (!wasFocused)
|
||
self.trigger('focus');
|
||
if (!self.$activeItems.length) {
|
||
self.showInput();
|
||
self.setActiveItem(null);
|
||
self.refreshOptions(!!self.settings.openOnFocus)
|
||
}
|
||
self.refreshState()
|
||
},
|
||
/**
|
||
* Triggered on <input> blur.
|
||
*
|
||
* @param {object} e
|
||
* @param {Element} dest
|
||
*/
|
||
onBlur: function (e, dest) {
|
||
var self = this;
|
||
if (!self.isFocused)
|
||
return;
|
||
self.isFocused = false;
|
||
if (self.ignoreFocus) {
|
||
return
|
||
} else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {
|
||
// necessary to prevent IE closing the dropdown when the scrollbar is clicked
|
||
self.ignoreBlur = true;
|
||
self.onFocus(e);
|
||
return
|
||
}
|
||
var deactivate = function () {
|
||
self.close();
|
||
self.setTextboxValue('');
|
||
self.setActiveItem(null);
|
||
self.setActiveOption(null);
|
||
self.setCaret(self.items.length);
|
||
self.refreshState();
|
||
// IE11 bug: element still marked as active
|
||
(dest || document.body).focus();
|
||
self.ignoreFocus = false;
|
||
self.trigger('blur')
|
||
};
|
||
self.ignoreFocus = true;
|
||
if (self.settings.create && self.settings.createOnBlur) {
|
||
self.createItem(null, false, deactivate)
|
||
} else {
|
||
deactivate()
|
||
}
|
||
},
|
||
/**
|
||
* Triggered when the user rolls over
|
||
* an option in the autocomplete dropdown menu.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onOptionHover: function (e) {
|
||
if (this.ignoreHover)
|
||
return;
|
||
this.setActiveOption(e.currentTarget, false)
|
||
},
|
||
/**
|
||
* Triggered when the user clicks on an option
|
||
* in the autocomplete dropdown menu.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onOptionSelect: function (e) {
|
||
var value, $target, $option, self = this;
|
||
if (e.preventDefault) {
|
||
e.preventDefault();
|
||
e.stopPropagation()
|
||
}
|
||
$target = $(e.currentTarget);
|
||
if ($target.hasClass('create')) {
|
||
self.createItem(null, function () {
|
||
if (self.settings.closeAfterSelect) {
|
||
self.close()
|
||
}
|
||
})
|
||
} else {
|
||
value = $target.attr('data-value');
|
||
if (typeof value !== 'undefined') {
|
||
self.lastQuery = null;
|
||
self.setTextboxValue('');
|
||
self.addItem(value);
|
||
if (self.settings.closeAfterSelect) {
|
||
self.close()
|
||
} else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {
|
||
self.setActiveOption(self.getOption(value))
|
||
}
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Triggered when the user clicks on an item
|
||
* that has been selected.
|
||
*
|
||
* @param {object} e
|
||
* @returns {boolean}
|
||
*/
|
||
onItemSelect: function (e) {
|
||
var self = this;
|
||
if (self.isLocked)
|
||
return;
|
||
if (self.settings.mode === 'multi') {
|
||
e.preventDefault();
|
||
self.setActiveItem(e.currentTarget, e)
|
||
}
|
||
},
|
||
/**
|
||
* Invokes the provided method that provides
|
||
* results to a callback---which are then added
|
||
* as options to the control.
|
||
*
|
||
* @param {function} fn
|
||
*/
|
||
load: function (fn) {
|
||
var self = this;
|
||
var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);
|
||
self.loading++;
|
||
fn.apply(self, [function (results) {
|
||
self.loading = Math.max(self.loading - 1, 0);
|
||
if (results && results.length) {
|
||
self.addOption(results);
|
||
self.refreshOptions(self.isFocused && !self.isInputHidden)
|
||
}
|
||
if (!self.loading) {
|
||
$wrapper.removeClass(self.settings.loadingClass)
|
||
}
|
||
self.trigger('load', results)
|
||
}])
|
||
},
|
||
/**
|
||
* Sets the input field of the control to the specified value.
|
||
*
|
||
* @param {string} value
|
||
*/
|
||
setTextboxValue: function (value) {
|
||
var $input = this.$control_input;
|
||
var changed = $input.val() !== value;
|
||
if (changed) {
|
||
$input.val(value).triggerHandler('update');
|
||
this.lastValue = value
|
||
}
|
||
},
|
||
/**
|
||
* Returns the value of the control. If multiple items
|
||
* can be selected (e.g. <select multiple>), this returns
|
||
* an array. If only one item can be selected, this
|
||
* returns a string.
|
||
*
|
||
* @returns {mixed}
|
||
*/
|
||
getValue: function () {
|
||
if (this.tagType === TAG_SELECT && this.$input.attr('multiple')) {
|
||
return this.items
|
||
} else {
|
||
return this.items.join(this.settings.delimiter)
|
||
}
|
||
},
|
||
/**
|
||
* Resets the selected items to the given value.
|
||
*
|
||
* @param {mixed} value
|
||
*/
|
||
setValue: function (value, silent) {
|
||
var events = silent ? [] : ['change'];
|
||
debounce_events(this, events, function () {
|
||
this.clear(silent);
|
||
this.addItems(value, silent)
|
||
})
|
||
},
|
||
/**
|
||
* Sets the selected item.
|
||
*
|
||
* @param {object} $item
|
||
* @param {object} e (optional)
|
||
*/
|
||
setActiveItem: function ($item, e) {
|
||
var self = this;
|
||
var eventName;
|
||
var i, idx, begin, end, item, swap;
|
||
var $last;
|
||
if (self.settings.mode === 'single')
|
||
return;
|
||
$item = $($item);
|
||
// clear the active selection
|
||
if (!$item.length) {
|
||
$(self.$activeItems).removeClass('active');
|
||
self.$activeItems = [];
|
||
if (self.isFocused) {
|
||
self.showInput()
|
||
}
|
||
return
|
||
}
|
||
// modify selection
|
||
eventName = e && e.type.toLowerCase();
|
||
if (eventName === 'mousedown' && self.isShiftDown && self.$activeItems.length) {
|
||
$last = self.$control.children('.active:last');
|
||
begin = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$last[0]]);
|
||
end = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$item[0]]);
|
||
if (begin > end) {
|
||
swap = begin;
|
||
begin = end;
|
||
end = swap
|
||
}
|
||
for (i = begin; i <= end; i++) {
|
||
item = self.$control[0].childNodes[i];
|
||
if (self.$activeItems.indexOf(item) === -1) {
|
||
$(item).addClass('active');
|
||
self.$activeItems.push(item)
|
||
}
|
||
}
|
||
e.preventDefault()
|
||
} else if (eventName === 'mousedown' && self.isCtrlDown || eventName === 'keydown' && this.isShiftDown) {
|
||
if ($item.hasClass('active')) {
|
||
idx = self.$activeItems.indexOf($item[0]);
|
||
self.$activeItems.splice(idx, 1);
|
||
$item.removeClass('active')
|
||
} else {
|
||
self.$activeItems.push($item.addClass('active')[0])
|
||
}
|
||
} else {
|
||
$(self.$activeItems).removeClass('active');
|
||
self.$activeItems = [$item.addClass('active')[0]]
|
||
}
|
||
// ensure control has focus
|
||
self.hideInput();
|
||
if (!this.isFocused) {
|
||
self.focus()
|
||
}
|
||
},
|
||
/**
|
||
* Sets the selected item in the dropdown menu
|
||
* of available options.
|
||
*
|
||
* @param {object} $object
|
||
* @param {boolean} scroll
|
||
* @param {boolean} animate
|
||
*/
|
||
setActiveOption: function ($option, scroll, animate) {
|
||
var height_menu, height_item, y;
|
||
var scroll_top, scroll_bottom;
|
||
var self = this;
|
||
if (self.$activeOption)
|
||
self.$activeOption.removeClass('active');
|
||
self.$activeOption = null;
|
||
$option = $($option);
|
||
if (!$option.length)
|
||
return;
|
||
self.$activeOption = $option.addClass('active');
|
||
if (scroll || !isset(scroll)) {
|
||
height_menu = self.$dropdown_content.height();
|
||
height_item = self.$activeOption.outerHeight(true);
|
||
scroll = self.$dropdown_content.scrollTop() || 0;
|
||
y = self.$activeOption.offset().top - self.$dropdown_content.offset().top + scroll;
|
||
scroll_top = y;
|
||
scroll_bottom = y - height_menu + height_item;
|
||
if (y + height_item > height_menu + scroll) {
|
||
self.$dropdown_content.stop().animate({ scrollTop: scroll_bottom }, animate ? self.settings.scrollDuration : 0)
|
||
} else if (y < scroll) {
|
||
self.$dropdown_content.stop().animate({ scrollTop: scroll_top }, animate ? self.settings.scrollDuration : 0)
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Selects all items (CTRL + A).
|
||
*/
|
||
selectAll: function () {
|
||
var self = this;
|
||
if (self.settings.mode === 'single')
|
||
return;
|
||
self.$activeItems = Array.prototype.slice.apply(self.$control.children(':not(input)').addClass('active'));
|
||
if (self.$activeItems.length) {
|
||
self.hideInput();
|
||
self.close()
|
||
}
|
||
self.focus()
|
||
},
|
||
/**
|
||
* Hides the input element out of view, while
|
||
* retaining its focus.
|
||
*/
|
||
hideInput: function () {
|
||
var self = this;
|
||
self.setTextboxValue('');
|
||
self.$control_input.css({
|
||
opacity: 0,
|
||
position: 'absolute',
|
||
left: self.rtl ? 10000 : -10000
|
||
});
|
||
self.isInputHidden = true
|
||
},
|
||
/**
|
||
* Restores input visibility.
|
||
*/
|
||
showInput: function () {
|
||
this.$control_input.css({
|
||
opacity: 1,
|
||
position: 'relative',
|
||
left: 0
|
||
});
|
||
this.isInputHidden = false
|
||
},
|
||
/**
|
||
* Gives the control focus.
|
||
*/
|
||
focus: function () {
|
||
var self = this;
|
||
if (self.isDisabled)
|
||
return;
|
||
self.ignoreFocus = true;
|
||
self.$control_input[0].focus();
|
||
window.setTimeout(function () {
|
||
self.ignoreFocus = false;
|
||
self.onFocus()
|
||
}, 0)
|
||
},
|
||
/**
|
||
* Forces the control out of focus.
|
||
*
|
||
* @param {Element} dest
|
||
*/
|
||
blur: function (dest) {
|
||
this.$control_input[0].blur();
|
||
this.onBlur(null, dest)
|
||
},
|
||
/**
|
||
* Returns a function that scores an object
|
||
* to show how good of a match it is to the
|
||
* provided query.
|
||
*
|
||
* @param {string} query
|
||
* @param {object} options
|
||
* @return {function}
|
||
*/
|
||
getScoreFunction: function (query) {
|
||
return this.sifter.getScoreFunction(query, this.getSearchOptions())
|
||
},
|
||
/**
|
||
* Returns search options for sifter (the system
|
||
* for scoring and sorting results).
|
||
*
|
||
* @see https://github.com/brianreavis/sifter.js
|
||
* @return {object}
|
||
*/
|
||
getSearchOptions: function () {
|
||
var settings = this.settings;
|
||
var sort = settings.sortField;
|
||
if (typeof sort === 'string') {
|
||
sort = [{ field: sort }]
|
||
}
|
||
return {
|
||
fields: settings.searchField,
|
||
conjunction: settings.searchConjunction,
|
||
sort: sort
|
||
}
|
||
},
|
||
/**
|
||
* Searches through available options and returns
|
||
* a sorted array of matches.
|
||
*
|
||
* Returns an object containing:
|
||
*
|
||
* - query {string}
|
||
* - tokens {array}
|
||
* - total {int}
|
||
* - items {array}
|
||
*
|
||
* @param {string} query
|
||
* @returns {object}
|
||
*/
|
||
search: function (query) {
|
||
var i, value, score, result, calculateScore;
|
||
var self = this;
|
||
var settings = self.settings;
|
||
var options = this.getSearchOptions();
|
||
// validate user-provided result scoring function
|
||
if (settings.score) {
|
||
calculateScore = self.settings.score.apply(this, [query]);
|
||
if (typeof calculateScore !== 'function') {
|
||
throw new Error('Selectize "score" setting must be a function that returns a function')
|
||
}
|
||
}
|
||
// perform search
|
||
if (query !== self.lastQuery) {
|
||
self.lastQuery = query;
|
||
result = self.sifter.search(query, $.extend(options, { score: calculateScore }));
|
||
self.currentResults = result
|
||
} else {
|
||
result = $.extend(true, {}, self.currentResults)
|
||
}
|
||
// filter out selected items
|
||
if (settings.hideSelected) {
|
||
for (i = result.items.length - 1; i >= 0; i--) {
|
||
if (self.items.indexOf(hash_key(result.items[i].id)) !== -1) {
|
||
result.items.splice(i, 1)
|
||
}
|
||
}
|
||
}
|
||
return result
|
||
},
|
||
/**
|
||
* Refreshes the list of available options shown
|
||
* in the autocomplete dropdown menu.
|
||
*
|
||
* @param {boolean} triggerDropdown
|
||
*/
|
||
refreshOptions: function (triggerDropdown) {
|
||
var i, j, k, n, groups, groups_order, option, option_html, optgroup, optgroups, html, html_children, has_create_option;
|
||
var $active, $active_before, $create;
|
||
if (typeof triggerDropdown === 'undefined') {
|
||
triggerDropdown = true
|
||
}
|
||
var self = this;
|
||
var query = $.trim(self.$control_input.val());
|
||
var results = self.search(query);
|
||
var $dropdown_content = self.$dropdown_content;
|
||
var active_before = self.$activeOption && hash_key(self.$activeOption.attr('data-value'));
|
||
// build markup
|
||
n = results.items.length;
|
||
if (typeof self.settings.maxOptions === 'number') {
|
||
n = Math.min(n, self.settings.maxOptions)
|
||
}
|
||
// render and group available options individually
|
||
groups = {};
|
||
groups_order = [];
|
||
for (i = 0; i < n; i++) {
|
||
option = self.options[results.items[i].id];
|
||
option_html = self.render('option', option);
|
||
optgroup = option[self.settings.optgroupField] || '';
|
||
optgroups = $.isArray(optgroup) ? optgroup : [optgroup];
|
||
for (j = 0, k = optgroups && optgroups.length; j < k; j++) {
|
||
optgroup = optgroups[j];
|
||
if (!self.optgroups.hasOwnProperty(optgroup)) {
|
||
optgroup = ''
|
||
}
|
||
if (!groups.hasOwnProperty(optgroup)) {
|
||
groups[optgroup] = [];
|
||
groups_order.push(optgroup)
|
||
}
|
||
groups[optgroup].push(option_html)
|
||
}
|
||
}
|
||
// sort optgroups
|
||
if (this.settings.lockOptgroupOrder) {
|
||
groups_order.sort(function (a, b) {
|
||
var a_order = self.optgroups[a].$order || 0;
|
||
var b_order = self.optgroups[b].$order || 0;
|
||
return a_order - b_order
|
||
})
|
||
}
|
||
// render optgroup headers & join groups
|
||
html = [];
|
||
for (i = 0, n = groups_order.length; i < n; i++) {
|
||
optgroup = groups_order[i];
|
||
if (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].length) {
|
||
// render the optgroup header and options within it,
|
||
// then pass it to the wrapper template
|
||
html_children = self.render('optgroup_header', self.optgroups[optgroup]) || '';
|
||
html_children += groups[optgroup].join('');
|
||
html.push(self.render('optgroup', $.extend({}, self.optgroups[optgroup], { html: html_children })))
|
||
} else {
|
||
html.push(groups[optgroup].join(''))
|
||
}
|
||
}
|
||
$dropdown_content.html(html.join(''));
|
||
// highlight matching terms inline
|
||
if (self.settings.highlight && results.query.length && results.tokens.length) {
|
||
for (i = 0, n = results.tokens.length; i < n; i++) {
|
||
highlight($dropdown_content, results.tokens[i].regex)
|
||
}
|
||
}
|
||
// add "selected" class to selected options
|
||
if (!self.settings.hideSelected) {
|
||
for (i = 0, n = self.items.length; i < n; i++) {
|
||
self.getOption(self.items[i]).addClass('selected')
|
||
}
|
||
}
|
||
// add create option
|
||
has_create_option = self.canCreate(query);
|
||
if (has_create_option) {
|
||
$dropdown_content.prepend(self.render('option_create', { input: query }));
|
||
$create = $($dropdown_content[0].childNodes[0])
|
||
}
|
||
// activate
|
||
self.hasOptions = results.items.length > 0 || has_create_option;
|
||
if (self.hasOptions) {
|
||
if (results.items.length > 0) {
|
||
$active_before = active_before && self.getOption(active_before);
|
||
if ($active_before && $active_before.length) {
|
||
$active = $active_before
|
||
} else if (self.settings.mode === 'single' && self.items.length) {
|
||
$active = self.getOption(self.items[0])
|
||
}
|
||
if (!$active || !$active.length) {
|
||
if ($create && !self.settings.addPrecedence) {
|
||
$active = self.getAdjacentOption($create, 1)
|
||
} else {
|
||
$active = $dropdown_content.find('[data-selectable]:first')
|
||
}
|
||
}
|
||
} else {
|
||
$active = $create
|
||
}
|
||
self.setActiveOption($active);
|
||
if (triggerDropdown && !self.isOpen) {
|
||
self.open()
|
||
}
|
||
} else {
|
||
self.setActiveOption(null);
|
||
if (triggerDropdown && self.isOpen) {
|
||
self.close()
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Adds an available option. If it already exists,
|
||
* nothing will happen. Note: this does not refresh
|
||
* the options list dropdown (use `refreshOptions`
|
||
* for that).
|
||
*
|
||
* Usage:
|
||
*
|
||
* this.addOption(data)
|
||
*
|
||
* @param {object|array} data
|
||
*/
|
||
addOption: function (data) {
|
||
var i, n, value, self = this;
|
||
if ($.isArray(data)) {
|
||
for (i = 0, n = data.length; i < n; i++) {
|
||
self.addOption(data[i])
|
||
}
|
||
return
|
||
}
|
||
if (value = self.registerOption(data)) {
|
||
self.userOptions[value] = true;
|
||
self.lastQuery = null;
|
||
self.trigger('option_add', value, data)
|
||
}
|
||
},
|
||
/**
|
||
* Registers an option to the pool of options.
|
||
*
|
||
* @param {object} data
|
||
* @return {boolean|string}
|
||
*/
|
||
registerOption: function (data) {
|
||
var key = hash_key(data[this.settings.valueField]);
|
||
if (!key || this.options.hasOwnProperty(key))
|
||
return false;
|
||
data.$order = data.$order || ++this.order;
|
||
this.options[key] = data;
|
||
return key
|
||
},
|
||
/**
|
||
* Registers an option group to the pool of option groups.
|
||
*
|
||
* @param {object} data
|
||
* @return {boolean|string}
|
||
*/
|
||
registerOptionGroup: function (data) {
|
||
var key = hash_key(data[this.settings.optgroupValueField]);
|
||
if (!key)
|
||
return false;
|
||
data.$order = data.$order || ++this.order;
|
||
this.optgroups[key] = data;
|
||
return key
|
||
},
|
||
/**
|
||
* Registers a new optgroup for options
|
||
* to be bucketed into.
|
||
*
|
||
* @param {string} id
|
||
* @param {object} data
|
||
*/
|
||
addOptionGroup: function (id, data) {
|
||
data[this.settings.optgroupValueField] = id;
|
||
if (id = this.registerOptionGroup(data)) {
|
||
this.trigger('optgroup_add', id, data)
|
||
}
|
||
},
|
||
/**
|
||
* Removes an existing option group.
|
||
*
|
||
* @param {string} id
|
||
*/
|
||
removeOptionGroup: function (id) {
|
||
if (this.optgroups.hasOwnProperty(id)) {
|
||
delete this.optgroups[id];
|
||
this.renderCache = {};
|
||
this.trigger('optgroup_remove', id)
|
||
}
|
||
},
|
||
/**
|
||
* Clears all existing option groups.
|
||
*/
|
||
clearOptionGroups: function () {
|
||
this.optgroups = {};
|
||
this.renderCache = {};
|
||
this.trigger('optgroup_clear')
|
||
},
|
||
/**
|
||
* Updates an option available for selection. If
|
||
* it is visible in the selected items or options
|
||
* dropdown, it will be re-rendered automatically.
|
||
*
|
||
* @param {string} value
|
||
* @param {object} data
|
||
*/
|
||
updateOption: function (value, data) {
|
||
var self = this;
|
||
var $item, $item_new;
|
||
var value_new, index_item, cache_items, cache_options, order_old;
|
||
value = hash_key(value);
|
||
value_new = hash_key(data[self.settings.valueField]);
|
||
// sanity checks
|
||
if (value === null)
|
||
return;
|
||
if (!self.options.hasOwnProperty(value))
|
||
return;
|
||
if (typeof value_new !== 'string')
|
||
throw new Error('Value must be set in option data');
|
||
order_old = self.options[value].$order;
|
||
// update references
|
||
if (value_new !== value) {
|
||
delete self.options[value];
|
||
index_item = self.items.indexOf(value);
|
||
if (index_item !== -1) {
|
||
self.items.splice(index_item, 1, value_new)
|
||
}
|
||
}
|
||
data.$order = data.$order || order_old;
|
||
self.options[value_new] = data;
|
||
// invalidate render cache
|
||
cache_items = self.renderCache['item'];
|
||
cache_options = self.renderCache['option'];
|
||
if (cache_items) {
|
||
delete cache_items[value];
|
||
delete cache_items[value_new]
|
||
}
|
||
if (cache_options) {
|
||
delete cache_options[value];
|
||
delete cache_options[value_new]
|
||
}
|
||
// update the item if it's selected
|
||
if (self.items.indexOf(value_new) !== -1) {
|
||
$item = self.getItem(value);
|
||
$item_new = $(self.render('item', data));
|
||
if ($item.hasClass('active'))
|
||
$item_new.addClass('active');
|
||
$item.replaceWith($item_new)
|
||
}
|
||
// invalidate last query because we might have updated the sortField
|
||
self.lastQuery = null;
|
||
// update dropdown contents
|
||
if (self.isOpen) {
|
||
self.refreshOptions(false)
|
||
}
|
||
},
|
||
/**
|
||
* Removes a single option.
|
||
*
|
||
* @param {string} value
|
||
* @param {boolean} silent
|
||
*/
|
||
removeOption: function (value, silent) {
|
||
var self = this;
|
||
value = hash_key(value);
|
||
var cache_items = self.renderCache['item'];
|
||
var cache_options = self.renderCache['option'];
|
||
if (cache_items)
|
||
delete cache_items[value];
|
||
if (cache_options)
|
||
delete cache_options[value];
|
||
delete self.userOptions[value];
|
||
delete self.options[value];
|
||
self.lastQuery = null;
|
||
self.trigger('option_remove', value);
|
||
self.removeItem(value, silent)
|
||
},
|
||
/**
|
||
* Clears all options.
|
||
*/
|
||
clearOptions: function () {
|
||
var self = this;
|
||
self.loadedSearches = {};
|
||
self.userOptions = {};
|
||
self.renderCache = {};
|
||
self.options = self.sifter.items = {};
|
||
self.lastQuery = null;
|
||
self.trigger('option_clear');
|
||
self.clear()
|
||
},
|
||
/**
|
||
* Returns the jQuery element of the option
|
||
* matching the given value.
|
||
*
|
||
* @param {string} value
|
||
* @returns {object}
|
||
*/
|
||
getOption: function (value) {
|
||
return this.getElementWithValue(value, this.$dropdown_content.find('[data-selectable]'))
|
||
},
|
||
/**
|
||
* Returns the jQuery element of the next or
|
||
* previous selectable option.
|
||
*
|
||
* @param {object} $option
|
||
* @param {int} direction can be 1 for next or -1 for previous
|
||
* @return {object}
|
||
*/
|
||
getAdjacentOption: function ($option, direction) {
|
||
var $options = this.$dropdown.find('[data-selectable]');
|
||
var index = $options.index($option) + direction;
|
||
return index >= 0 && index < $options.length ? $options.eq(index) : $()
|
||
},
|
||
/**
|
||
* Finds the first element with a "data-value" attribute
|
||
* that matches the given value.
|
||
*
|
||
* @param {mixed} value
|
||
* @param {object} $els
|
||
* @return {object}
|
||
*/
|
||
getElementWithValue: function (value, $els) {
|
||
value = hash_key(value);
|
||
if (typeof value !== 'undefined' && value !== null) {
|
||
for (var i = 0, n = $els.length; i < n; i++) {
|
||
if ($els[i].getAttribute('data-value') === value) {
|
||
return $($els[i])
|
||
}
|
||
}
|
||
}
|
||
return $()
|
||
},
|
||
/**
|
||
* Returns the jQuery element of the item
|
||
* matching the given value.
|
||
*
|
||
* @param {string} value
|
||
* @returns {object}
|
||
*/
|
||
getItem: function (value) {
|
||
return this.getElementWithValue(value, this.$control.children())
|
||
},
|
||
/**
|
||
* "Selects" multiple items at once. Adds them to the list
|
||
* at the current caret position.
|
||
*
|
||
* @param {string} value
|
||
* @param {boolean} silent
|
||
*/
|
||
addItems: function (values, silent) {
|
||
var items = $.isArray(values) ? values : [values];
|
||
for (var i = 0, n = items.length; i < n; i++) {
|
||
this.isPending = i < n - 1;
|
||
this.addItem(items[i], silent)
|
||
}
|
||
},
|
||
/**
|
||
* "Selects" an item. Adds it to the list
|
||
* at the current caret position.
|
||
*
|
||
* @param {string} value
|
||
* @param {boolean} silent
|
||
*/
|
||
addItem: function (value, silent) {
|
||
var events = silent ? [] : ['change'];
|
||
debounce_events(this, events, function () {
|
||
var $item, $option, $options;
|
||
var self = this;
|
||
var inputMode = self.settings.mode;
|
||
var i, active, value_next, wasFull;
|
||
value = hash_key(value);
|
||
if (self.items.indexOf(value) !== -1) {
|
||
if (inputMode === 'single')
|
||
self.close();
|
||
return
|
||
}
|
||
if (!self.options.hasOwnProperty(value))
|
||
return;
|
||
if (inputMode === 'single')
|
||
self.clear(silent);
|
||
if (inputMode === 'multi' && self.isFull())
|
||
return;
|
||
$item = $(self.render('item', self.options[value]));
|
||
wasFull = self.isFull();
|
||
self.items.splice(self.caretPos, 0, value);
|
||
self.insertAtCaret($item);
|
||
if (!self.isPending || !wasFull && self.isFull()) {
|
||
self.refreshState()
|
||
}
|
||
if (self.isSetup) {
|
||
$options = self.$dropdown_content.find('[data-selectable]');
|
||
// update menu / remove the option (if this is not one item being added as part of series)
|
||
if (!self.isPending) {
|
||
$option = self.getOption(value);
|
||
value_next = self.getAdjacentOption($option, 1).attr('data-value');
|
||
self.refreshOptions(self.isFocused && inputMode !== 'single');
|
||
if (value_next) {
|
||
self.setActiveOption(self.getOption(value_next))
|
||
}
|
||
}
|
||
// hide the menu if the maximum number of items have been selected or no options are left
|
||
if (!$options.length || self.isFull()) {
|
||
self.close()
|
||
} else {
|
||
self.positionDropdown()
|
||
}
|
||
self.updatePlaceholder();
|
||
self.trigger('item_add', value, $item);
|
||
self.updateOriginalInput({ silent: silent })
|
||
}
|
||
})
|
||
},
|
||
/**
|
||
* Removes the selected item matching
|
||
* the provided value.
|
||
*
|
||
* @param {string} value
|
||
*/
|
||
removeItem: function (value, silent) {
|
||
var self = this;
|
||
var $item, i, idx;
|
||
$item = typeof value === 'object' ? value : self.getItem(value);
|
||
value = hash_key($item.attr('data-value'));
|
||
i = self.items.indexOf(value);
|
||
if (i !== -1) {
|
||
$item.remove();
|
||
if ($item.hasClass('active')) {
|
||
idx = self.$activeItems.indexOf($item[0]);
|
||
self.$activeItems.splice(idx, 1)
|
||
}
|
||
self.items.splice(i, 1);
|
||
self.lastQuery = null;
|
||
if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {
|
||
self.removeOption(value, silent)
|
||
}
|
||
if (i < self.caretPos) {
|
||
self.setCaret(self.caretPos - 1)
|
||
}
|
||
self.refreshState();
|
||
self.updatePlaceholder();
|
||
self.updateOriginalInput({ silent: silent });
|
||
self.positionDropdown();
|
||
self.trigger('item_remove', value, $item)
|
||
}
|
||
},
|
||
/**
|
||
* Invokes the `create` method provided in the
|
||
* selectize options that should provide the data
|
||
* for the new item, given the user input.
|
||
*
|
||
* Once this completes, it will be added
|
||
* to the item list.
|
||
*
|
||
* @param {string} value
|
||
* @param {boolean} [triggerDropdown]
|
||
* @param {function} [callback]
|
||
* @return {boolean}
|
||
*/
|
||
createItem: function (input, triggerDropdown) {
|
||
var self = this;
|
||
var caret = self.caretPos;
|
||
input = input || $.trim(self.$control_input.val() || '');
|
||
var callback = arguments[arguments.length - 1];
|
||
if (typeof callback !== 'function')
|
||
callback = function () {
|
||
};
|
||
if (typeof triggerDropdown !== 'boolean') {
|
||
triggerDropdown = true
|
||
}
|
||
if (!self.canCreate(input)) {
|
||
callback();
|
||
return false
|
||
}
|
||
self.lock();
|
||
var setup = typeof self.settings.create === 'function' ? this.settings.create : function (input) {
|
||
var data = {};
|
||
data[self.settings.labelField] = input;
|
||
data[self.settings.valueField] = input;
|
||
return data
|
||
};
|
||
var create = once(function (data) {
|
||
self.unlock();
|
||
if (!data || typeof data !== 'object')
|
||
return callback();
|
||
var value = hash_key(data[self.settings.valueField]);
|
||
if (typeof value !== 'string')
|
||
return callback();
|
||
self.setTextboxValue('');
|
||
self.addOption(data);
|
||
self.setCaret(caret);
|
||
self.addItem(value);
|
||
self.refreshOptions(triggerDropdown && self.settings.mode !== 'single');
|
||
callback(data)
|
||
});
|
||
var output = setup.apply(this, [
|
||
input,
|
||
create
|
||
]);
|
||
if (typeof output !== 'undefined') {
|
||
create(output)
|
||
}
|
||
return true
|
||
},
|
||
/**
|
||
* Re-renders the selected item lists.
|
||
*/
|
||
refreshItems: function () {
|
||
this.lastQuery = null;
|
||
if (this.isSetup) {
|
||
this.addItem(this.items)
|
||
}
|
||
this.refreshState();
|
||
this.updateOriginalInput()
|
||
},
|
||
/**
|
||
* Updates all state-dependent attributes
|
||
* and CSS classes.
|
||
*/
|
||
refreshState: function () {
|
||
var invalid, self = this;
|
||
if (self.isRequired) {
|
||
if (self.items.length)
|
||
self.isInvalid = false;
|
||
self.$control_input.prop('required', invalid)
|
||
}
|
||
self.refreshClasses()
|
||
},
|
||
/**
|
||
* Updates all state-dependent CSS classes.
|
||
*/
|
||
refreshClasses: function () {
|
||
var self = this;
|
||
var isFull = self.isFull();
|
||
var isLocked = self.isLocked;
|
||
self.$wrapper.toggleClass('rtl', self.rtl);
|
||
self.$control.toggleClass('focus', self.isFocused).toggleClass('disabled', self.isDisabled).toggleClass('required', self.isRequired).toggleClass('invalid', self.isInvalid).toggleClass('locked', isLocked).toggleClass('full', isFull).toggleClass('not-full', !isFull).toggleClass('input-active', self.isFocused && !self.isInputHidden).toggleClass('dropdown-active', self.isOpen).toggleClass('has-options', !$.isEmptyObject(self.options)).toggleClass('has-items', self.items.length > 0);
|
||
self.$control_input.data('grow', !isFull && !isLocked)
|
||
},
|
||
/**
|
||
* Determines whether or not more items can be added
|
||
* to the control without exceeding the user-defined maximum.
|
||
*
|
||
* @returns {boolean}
|
||
*/
|
||
isFull: function () {
|
||
return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems
|
||
},
|
||
/**
|
||
* Refreshes the original <select> or <input>
|
||
* element to reflect the current state.
|
||
*/
|
||
updateOriginalInput: function (opts) {
|
||
var i, n, options, label, self = this;
|
||
opts = opts || {};
|
||
if (self.tagType === TAG_SELECT) {
|
||
options = [];
|
||
for (i = 0, n = self.items.length; i < n; i++) {
|
||
label = self.options[self.items[i]][self.settings.labelField] || '';
|
||
options.push('<option value="' + escape_html(self.items[i]) + '" selected="selected">' + escape_html(label) + '</option>')
|
||
}
|
||
if (!options.length && !this.$input.attr('multiple')) {
|
||
options.push('<option value="" selected="selected"></option>')
|
||
}
|
||
self.$input.html(options.join(''))
|
||
} else {
|
||
self.$input.val(self.getValue());
|
||
self.$input.attr('value', self.$input.val())
|
||
}
|
||
if (self.isSetup) {
|
||
if (!opts.silent) {
|
||
self.trigger('change', self.$input.val())
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Shows/hide the input placeholder depending
|
||
* on if there items in the list already.
|
||
*/
|
||
updatePlaceholder: function () {
|
||
if (!this.settings.placeholder)
|
||
return;
|
||
var $input = this.$control_input;
|
||
if (this.items.length) {
|
||
$input.removeAttr('placeholder')
|
||
} else {
|
||
$input.attr('placeholder', this.settings.placeholder)
|
||
}
|
||
$input.triggerHandler('update', { force: true })
|
||
},
|
||
/**
|
||
* Shows the autocomplete dropdown containing
|
||
* the available options.
|
||
*/
|
||
open: function () {
|
||
var self = this;
|
||
if (self.isLocked || self.isOpen || self.settings.mode === 'multi' && self.isFull())
|
||
return;
|
||
self.focus();
|
||
self.isOpen = true;
|
||
self.refreshState();
|
||
self.$dropdown.css({
|
||
visibility: 'hidden',
|
||
display: 'block'
|
||
});
|
||
self.positionDropdown();
|
||
self.$dropdown.css({ visibility: 'visible' });
|
||
self.trigger('dropdown_open', self.$dropdown)
|
||
},
|
||
/**
|
||
* Closes the autocomplete dropdown menu.
|
||
*/
|
||
close: function () {
|
||
var self = this;
|
||
var trigger = self.isOpen;
|
||
if (self.settings.mode === 'single' && self.items.length) {
|
||
self.hideInput()
|
||
}
|
||
self.isOpen = false;
|
||
self.$dropdown.hide();
|
||
self.setActiveOption(null);
|
||
self.refreshState();
|
||
if (trigger)
|
||
self.trigger('dropdown_close', self.$dropdown)
|
||
},
|
||
/**
|
||
* Calculates and applies the appropriate
|
||
* position of the dropdown.
|
||
*/
|
||
positionDropdown: function () {
|
||
var $control = this.$control;
|
||
var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();
|
||
offset.top += $control.outerHeight(true);
|
||
this.$dropdown.css({
|
||
width: $control.outerWidth(),
|
||
top: offset.top,
|
||
left: offset.left
|
||
})
|
||
},
|
||
/**
|
||
* Resets / clears all selected items
|
||
* from the control.
|
||
*
|
||
* @param {boolean} silent
|
||
*/
|
||
clear: function (silent) {
|
||
var self = this;
|
||
if (!self.items.length)
|
||
return;
|
||
self.$control.children(':not(input)').remove();
|
||
self.items = [];
|
||
self.lastQuery = null;
|
||
self.setCaret(0);
|
||
self.setActiveItem(null);
|
||
self.updatePlaceholder();
|
||
self.updateOriginalInput({ silent: silent });
|
||
self.refreshState();
|
||
self.showInput();
|
||
self.trigger('clear')
|
||
},
|
||
/**
|
||
* A helper method for inserting an element
|
||
* at the current caret position.
|
||
*
|
||
* @param {object} $el
|
||
*/
|
||
insertAtCaret: function ($el) {
|
||
var caret = Math.min(this.caretPos, this.items.length);
|
||
if (caret === 0) {
|
||
this.$control.prepend($el)
|
||
} else {
|
||
$(this.$control[0].childNodes[caret]).before($el)
|
||
}
|
||
this.setCaret(caret + 1)
|
||
},
|
||
/**
|
||
* Removes the current selected item(s).
|
||
*
|
||
* @param {object} e (optional)
|
||
* @returns {boolean}
|
||
*/
|
||
deleteSelection: function (e) {
|
||
var i, n, direction, selection, values, caret, option_select, $option_select, $tail;
|
||
var self = this;
|
||
direction = e && e.keyCode === KEY_BACKSPACE ? -1 : 1;
|
||
selection = getSelection(self.$control_input[0]);
|
||
if (self.$activeOption && !self.settings.hideSelected) {
|
||
option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value')
|
||
}
|
||
// determine items that will be removed
|
||
values = [];
|
||
if (self.$activeItems.length) {
|
||
$tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));
|
||
caret = self.$control.children(':not(input)').index($tail);
|
||
if (direction > 0) {
|
||
caret++
|
||
}
|
||
for (i = 0, n = self.$activeItems.length; i < n; i++) {
|
||
values.push($(self.$activeItems[i]).attr('data-value'))
|
||
}
|
||
if (e) {
|
||
e.preventDefault();
|
||
e.stopPropagation()
|
||
}
|
||
} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {
|
||
if (direction < 0 && selection.start === 0 && selection.length === 0) {
|
||
values.push(self.items[self.caretPos - 1])
|
||
} else if (direction > 0 && selection.start === self.$control_input.val().length) {
|
||
values.push(self.items[self.caretPos])
|
||
}
|
||
}
|
||
// allow the callback to abort
|
||
if (!values.length || typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false) {
|
||
return false
|
||
}
|
||
// perform removal
|
||
if (typeof caret !== 'undefined') {
|
||
self.setCaret(caret)
|
||
}
|
||
while (values.length) {
|
||
self.removeItem(values.pop())
|
||
}
|
||
self.showInput();
|
||
self.positionDropdown();
|
||
self.refreshOptions(true);
|
||
// select previous option
|
||
if (option_select) {
|
||
$option_select = self.getOption(option_select);
|
||
if ($option_select.length) {
|
||
self.setActiveOption($option_select)
|
||
}
|
||
}
|
||
return true
|
||
},
|
||
/**
|
||
* Selects the previous / next item (depending
|
||
* on the `direction` argument).
|
||
*
|
||
* > 0 - right
|
||
* < 0 - left
|
||
*
|
||
* @param {int} direction
|
||
* @param {object} e (optional)
|
||
*/
|
||
advanceSelection: function (direction, e) {
|
||
var tail, selection, idx, valueLength, cursorAtEdge, $tail;
|
||
var self = this;
|
||
if (direction === 0)
|
||
return;
|
||
if (self.rtl)
|
||
direction *= -1;
|
||
tail = direction > 0 ? 'last' : 'first';
|
||
selection = getSelection(self.$control_input[0]);
|
||
if (self.isFocused && !self.isInputHidden) {
|
||
valueLength = self.$control_input.val().length;
|
||
cursorAtEdge = direction < 0 ? selection.start === 0 && selection.length === 0 : selection.start === valueLength;
|
||
if (cursorAtEdge && !valueLength) {
|
||
self.advanceCaret(direction, e)
|
||
}
|
||
} else {
|
||
$tail = self.$control.children('.active:' + tail);
|
||
if ($tail.length) {
|
||
idx = self.$control.children(':not(input)').index($tail);
|
||
self.setActiveItem(null);
|
||
self.setCaret(direction > 0 ? idx + 1 : idx)
|
||
}
|
||
}
|
||
},
|
||
/**
|
||
* Moves the caret left / right.
|
||
*
|
||
* @param {int} direction
|
||
* @param {object} e (optional)
|
||
*/
|
||
advanceCaret: function (direction, e) {
|
||
var self = this, fn, $adj;
|
||
if (direction === 0)
|
||
return;
|
||
fn = direction > 0 ? 'next' : 'prev';
|
||
if (self.isShiftDown) {
|
||
$adj = self.$control_input[fn]();
|
||
if ($adj.length) {
|
||
self.hideInput();
|
||
self.setActiveItem($adj);
|
||
e && e.preventDefault()
|
||
}
|
||
} else {
|
||
self.setCaret(self.caretPos + direction)
|
||
}
|
||
},
|
||
/**
|
||
* Moves the caret to the specified index.
|
||
*
|
||
* @param {int} i
|
||
*/
|
||
setCaret: function (i) {
|
||
var self = this;
|
||
if (self.settings.mode === 'single') {
|
||
i = self.items.length
|
||
} else {
|
||
i = Math.max(0, Math.min(self.items.length, i))
|
||
}
|
||
if (!self.isPending) {
|
||
// the input must be moved by leaving it in place and moving the
|
||
// siblings, due to the fact that focus cannot be restored once lost
|
||
// on mobile webkit devices
|
||
var j, n, fn, $children, $child;
|
||
$children = self.$control.children(':not(input)');
|
||
for (j = 0, n = $children.length; j < n; j++) {
|
||
$child = $($children[j]).detach();
|
||
if (j < i) {
|
||
self.$control_input.before($child)
|
||
} else {
|
||
self.$control.append($child)
|
||
}
|
||
}
|
||
}
|
||
self.caretPos = i
|
||
},
|
||
/**
|
||
* Disables user input on the control. Used while
|
||
* items are being asynchronously created.
|
||
*/
|
||
lock: function () {
|
||
this.close();
|
||
this.isLocked = true;
|
||
this.refreshState()
|
||
},
|
||
/**
|
||
* Re-enables user input on the control.
|
||
*/
|
||
unlock: function () {
|
||
this.isLocked = false;
|
||
this.refreshState()
|
||
},
|
||
/**
|
||
* Disables user input on the control completely.
|
||
* While disabled, it cannot receive focus.
|
||
*/
|
||
disable: function () {
|
||
var self = this;
|
||
self.$input.prop('disabled', true);
|
||
self.$control_input.prop('disabled', true).prop('tabindex', -1);
|
||
self.isDisabled = true;
|
||
self.lock()
|
||
},
|
||
/**
|
||
* Enables the control so that it can respond
|
||
* to focus and user input.
|
||
*/
|
||
enable: function () {
|
||
var self = this;
|
||
self.$input.prop('disabled', false);
|
||
self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);
|
||
self.isDisabled = false;
|
||
self.unlock()
|
||
},
|
||
/**
|
||
* Completely destroys the control and
|
||
* unbinds all event listeners so that it can
|
||
* be garbage collected.
|
||
*/
|
||
destroy: function () {
|
||
var self = this;
|
||
var eventNS = self.eventNS;
|
||
var revertSettings = self.revertSettings;
|
||
self.trigger('destroy');
|
||
self.off();
|
||
self.$wrapper.remove();
|
||
self.$dropdown.remove();
|
||
self.$input.html('').append(revertSettings.$children).removeAttr('tabindex').removeClass('selectized').attr({ tabindex: revertSettings.tabindex }).show();
|
||
self.$control_input.removeData('grow');
|
||
self.$input.removeData('selectize');
|
||
$(window).off(eventNS);
|
||
$(document).off(eventNS);
|
||
$(document.body).off(eventNS);
|
||
delete self.$input[0].selectize
|
||
},
|
||
/**
|
||
* A helper method for rendering "item" and
|
||
* "option" templates, given the data.
|
||
*
|
||
* @param {string} templateName
|
||
* @param {object} data
|
||
* @returns {string}
|
||
*/
|
||
render: function (templateName, data) {
|
||
var value, id, label;
|
||
var html = '';
|
||
var cache = false;
|
||
var self = this;
|
||
var regex_tag = /^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i;
|
||
if (templateName === 'option' || templateName === 'item') {
|
||
value = hash_key(data[self.settings.valueField]);
|
||
cache = !!value
|
||
}
|
||
// pull markup from cache if it exists
|
||
if (cache) {
|
||
if (!isset(self.renderCache[templateName])) {
|
||
self.renderCache[templateName] = {}
|
||
}
|
||
if (self.renderCache[templateName].hasOwnProperty(value)) {
|
||
return self.renderCache[templateName][value]
|
||
}
|
||
}
|
||
// render markup
|
||
html = self.settings.render[templateName].apply(this, [
|
||
data,
|
||
escape_html
|
||
]);
|
||
// add mandatory attributes
|
||
if (templateName === 'option' || templateName === 'option_create') {
|
||
html = html.replace(regex_tag, '<$1 data-selectable')
|
||
}
|
||
if (templateName === 'optgroup') {
|
||
id = data[self.settings.optgroupValueField] || '';
|
||
html = html.replace(regex_tag, '<$1 data-group="' + escape_replace(escape_html(id)) + '"')
|
||
}
|
||
if (templateName === 'option' || templateName === 'item') {
|
||
html = html.replace(regex_tag, '<$1 data-value="' + escape_replace(escape_html(value || '')) + '"')
|
||
}
|
||
// update cache
|
||
if (cache) {
|
||
self.renderCache[templateName][value] = html
|
||
}
|
||
return html
|
||
},
|
||
/**
|
||
* Clears the render cache for a template. If
|
||
* no template is given, clears all render
|
||
* caches.
|
||
*
|
||
* @param {string} templateName
|
||
*/
|
||
clearCache: function (templateName) {
|
||
var self = this;
|
||
if (typeof templateName === 'undefined') {
|
||
self.renderCache = {}
|
||
} else {
|
||
delete self.renderCache[templateName]
|
||
}
|
||
},
|
||
/**
|
||
* Determines whether or not to display the
|
||
* create item prompt, given a user input.
|
||
*
|
||
* @param {string} input
|
||
* @return {boolean}
|
||
*/
|
||
canCreate: function (input) {
|
||
var self = this;
|
||
if (!self.settings.create)
|
||
return false;
|
||
var filter = self.settings.createFilter;
|
||
return input.length && (typeof filter !== 'function' || filter.apply(self, [input])) && (typeof filter !== 'string' || new RegExp(filter).test(input)) && (!(filter instanceof RegExp) || filter.test(input))
|
||
}
|
||
});
|
||
Selectize.count = 0;
|
||
Selectize.defaults = {
|
||
options: [],
|
||
optgroups: [],
|
||
plugins: [],
|
||
delimiter: ',',
|
||
splitOn: null,
|
||
// regexp or string for splitting up values from a paste command
|
||
persist: true,
|
||
diacritics: true,
|
||
create: false,
|
||
createOnBlur: false,
|
||
createFilter: null,
|
||
highlight: true,
|
||
openOnFocus: true,
|
||
maxOptions: 1000,
|
||
maxItems: null,
|
||
hideSelected: null,
|
||
addPrecedence: false,
|
||
selectOnTab: false,
|
||
preload: false,
|
||
allowEmptyOption: false,
|
||
closeAfterSelect: false,
|
||
scrollDuration: 60,
|
||
loadThrottle: 300,
|
||
loadingClass: 'loading',
|
||
dataAttr: 'data-data',
|
||
optgroupField: 'optgroup',
|
||
valueField: 'value',
|
||
labelField: 'text',
|
||
optgroupLabelField: 'label',
|
||
optgroupValueField: 'value',
|
||
lockOptgroupOrder: false,
|
||
sortField: '$order',
|
||
searchField: ['text'],
|
||
searchConjunction: 'and',
|
||
mode: null,
|
||
wrapperClass: 'selectize-control',
|
||
inputClass: 'selectize-input',
|
||
dropdownClass: 'selectize-dropdown',
|
||
dropdownContentClass: 'selectize-dropdown-content',
|
||
dropdownParent: null,
|
||
copyClassesToDropdown: true,
|
||
/*
|
||
load : null, // function(query, callback) { ... }
|
||
score : null, // function(search) { ... }
|
||
onInitialize : null, // function() { ... }
|
||
onChange : null, // function(value) { ... }
|
||
onItemAdd : null, // function(value, $item) { ... }
|
||
onItemRemove : null, // function(value) { ... }
|
||
onClear : null, // function() { ... }
|
||
onOptionAdd : null, // function(value, data) { ... }
|
||
onOptionRemove : null, // function(value) { ... }
|
||
onOptionClear : null, // function() { ... }
|
||
onOptionGroupAdd : null, // function(id, data) { ... }
|
||
onOptionGroupRemove : null, // function(id) { ... }
|
||
onOptionGroupClear : null, // function() { ... }
|
||
onDropdownOpen : null, // function($dropdown) { ... }
|
||
onDropdownClose : null, // function($dropdown) { ... }
|
||
onType : null, // function(str) { ... }
|
||
onDelete : null, // function(values) { ... }
|
||
*/
|
||
render: {}
|
||
};
|
||
$.fn.selectize = function (settings_user) {
|
||
var defaults = $.fn.selectize.defaults;
|
||
var settings = $.extend({}, defaults, settings_user);
|
||
var attr_data = settings.dataAttr;
|
||
var field_label = settings.labelField;
|
||
var field_value = settings.valueField;
|
||
var field_optgroup = settings.optgroupField;
|
||
var field_optgroup_label = settings.optgroupLabelField;
|
||
var field_optgroup_value = settings.optgroupValueField;
|
||
/**
|
||
* Initializes selectize from a <input type="text"> element.
|
||
*
|
||
* @param {object} $input
|
||
* @param {object} settings_element
|
||
*/
|
||
var init_textbox = function ($input, settings_element) {
|
||
var i, n, values, option;
|
||
var data_raw = $input.attr(attr_data);
|
||
if (!data_raw) {
|
||
var value = $.trim($input.val() || '');
|
||
if (!settings.allowEmptyOption && !value.length)
|
||
return;
|
||
values = value.split(settings.delimiter);
|
||
for (i = 0, n = values.length; i < n; i++) {
|
||
option = {};
|
||
option[field_label] = values[i];
|
||
option[field_value] = values[i];
|
||
settings_element.options.push(option)
|
||
}
|
||
settings_element.items = values
|
||
} else {
|
||
settings_element.options = JSON.parse(data_raw);
|
||
for (i = 0, n = settings_element.options.length; i < n; i++) {
|
||
settings_element.items.push(settings_element.options[i][field_value])
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Initializes selectize from a <select> element.
|
||
*
|
||
* @param {object} $input
|
||
* @param {object} settings_element
|
||
*/
|
||
var init_select = function ($input, settings_element) {
|
||
var i, n, tagName, $children, order = 0;
|
||
var options = settings_element.options;
|
||
var optionsMap = {};
|
||
var readData = function ($el) {
|
||
var data = attr_data && $el.attr(attr_data);
|
||
if (typeof data === 'string' && data.length) {
|
||
return JSON.parse(data)
|
||
}
|
||
return null
|
||
};
|
||
var addOption = function ($option, group) {
|
||
$option = $($option);
|
||
var value = hash_key($option.attr('value'));
|
||
if (!value && !settings.allowEmptyOption)
|
||
return;
|
||
// if the option already exists, it's probably been
|
||
// duplicated in another optgroup. in this case, push
|
||
// the current group to the "optgroup" property on the
|
||
// existing option so that it's rendered in both places.
|
||
if (optionsMap.hasOwnProperty(value)) {
|
||
if (group) {
|
||
var arr = optionsMap[value][field_optgroup];
|
||
if (!arr) {
|
||
optionsMap[value][field_optgroup] = group
|
||
} else if (!$.isArray(arr)) {
|
||
optionsMap[value][field_optgroup] = [
|
||
arr,
|
||
group
|
||
]
|
||
} else {
|
||
arr.push(group)
|
||
}
|
||
}
|
||
return
|
||
}
|
||
var option = readData($option) || {};
|
||
option[field_label] = option[field_label] || $option.text();
|
||
option[field_value] = option[field_value] || value;
|
||
option[field_optgroup] = option[field_optgroup] || group;
|
||
optionsMap[value] = option;
|
||
options.push(option);
|
||
if ($option.is(':selected')) {
|
||
settings_element.items.push(value)
|
||
}
|
||
};
|
||
var addGroup = function ($optgroup) {
|
||
var i, n, id, optgroup, $options;
|
||
$optgroup = $($optgroup);
|
||
id = $optgroup.attr('label');
|
||
if (id) {
|
||
optgroup = readData($optgroup) || {};
|
||
optgroup[field_optgroup_label] = id;
|
||
optgroup[field_optgroup_value] = id;
|
||
settings_element.optgroups.push(optgroup)
|
||
}
|
||
$options = $('option', $optgroup);
|
||
for (i = 0, n = $options.length; i < n; i++) {
|
||
addOption($options[i], id)
|
||
}
|
||
};
|
||
settings_element.maxItems = $input.attr('multiple') ? null : 1;
|
||
$children = $input.children();
|
||
for (i = 0, n = $children.length; i < n; i++) {
|
||
tagName = $children[i].tagName.toLowerCase();
|
||
if (tagName === 'optgroup') {
|
||
addGroup($children[i])
|
||
} else if (tagName === 'option') {
|
||
addOption($children[i])
|
||
}
|
||
}
|
||
};
|
||
return this.each(function () {
|
||
if (this.selectize)
|
||
return;
|
||
var instance;
|
||
var $input = $(this);
|
||
var tag_name = this.tagName.toLowerCase();
|
||
var placeholder = $input.attr('placeholder') || $input.attr('data-placeholder');
|
||
if (!placeholder && !settings.allowEmptyOption) {
|
||
placeholder = $input.children('option[value=""]').text()
|
||
}
|
||
var settings_element = {
|
||
'placeholder': placeholder,
|
||
'options': [],
|
||
'optgroups': [],
|
||
'items': []
|
||
};
|
||
if (tag_name === 'select') {
|
||
init_select($input, settings_element)
|
||
} else {
|
||
init_textbox($input, settings_element)
|
||
}
|
||
instance = new Selectize($input, $.extend(true, {}, defaults, settings_element, settings_user))
|
||
})
|
||
};
|
||
$.fn.selectize.defaults = Selectize.defaults;
|
||
$.fn.selectize.support = { validity: SUPPORTS_VALIDITY_API };
|
||
Selectize.define('drag_drop', function (options) {
|
||
if (!$.fn.sortable)
|
||
throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".');
|
||
if (this.settings.mode !== 'multi')
|
||
return;
|
||
var self = this;
|
||
self.lock = function () {
|
||
var original = self.lock;
|
||
return function () {
|
||
var sortable = self.$control.data('sortable');
|
||
if (sortable)
|
||
sortable.disable();
|
||
return original.apply(self, arguments)
|
||
}
|
||
}();
|
||
self.unlock = function () {
|
||
var original = self.unlock;
|
||
return function () {
|
||
var sortable = self.$control.data('sortable');
|
||
if (sortable)
|
||
sortable.enable();
|
||
return original.apply(self, arguments)
|
||
}
|
||
}();
|
||
self.setup = function () {
|
||
var original = self.setup;
|
||
return function () {
|
||
original.apply(this, arguments);
|
||
var $control = self.$control.sortable({
|
||
items: '[data-value]',
|
||
forcePlaceholderSize: true,
|
||
disabled: self.isLocked,
|
||
start: function (e, ui) {
|
||
ui.placeholder.css('width', ui.helper.css('width'));
|
||
$control.css({ overflow: 'visible' })
|
||
},
|
||
stop: function () {
|
||
$control.css({ overflow: 'hidden' });
|
||
var active = self.$activeItems ? self.$activeItems.slice() : null;
|
||
var values = [];
|
||
$control.children('[data-value]').each(function () {
|
||
values.push($(this).attr('data-value'))
|
||
});
|
||
self.setValue(values);
|
||
self.setActiveItem(active)
|
||
}
|
||
})
|
||
}
|
||
}()
|
||
});
|
||
Selectize.define('dropdown_header', function (options) {
|
||
var self = this;
|
||
options = $.extend({
|
||
title: 'Untitled',
|
||
headerClass: 'selectize-dropdown-header',
|
||
titleRowClass: 'selectize-dropdown-header-title',
|
||
labelClass: 'selectize-dropdown-header-label',
|
||
closeClass: 'selectize-dropdown-header-close',
|
||
html: function (data) {
|
||
return '<div class="' + data.headerClass + '">' + '<div class="' + data.titleRowClass + '">' + '<span class="' + data.labelClass + '">' + data.title + '</span>' + '<a href="javascript:void(0)" class="' + data.closeClass + '">×</a>' + '</div>' + '</div>'
|
||
}
|
||
}, options);
|
||
self.setup = function () {
|
||
var original = self.setup;
|
||
return function () {
|
||
original.apply(self, arguments);
|
||
self.$dropdown_header = $(options.html(options));
|
||
self.$dropdown.prepend(self.$dropdown_header)
|
||
}
|
||
}()
|
||
});
|
||
Selectize.define('optgroup_columns', function (options) {
|
||
var self = this;
|
||
options = $.extend({
|
||
equalizeWidth: true,
|
||
equalizeHeight: true
|
||
}, options);
|
||
this.getAdjacentOption = function ($option, direction) {
|
||
var $options = $option.closest('[data-group]').find('[data-selectable]');
|
||
var index = $options.index($option) + direction;
|
||
return index >= 0 && index < $options.length ? $options.eq(index) : $()
|
||
};
|
||
this.onKeyDown = function () {
|
||
var original = self.onKeyDown;
|
||
return function (e) {
|
||
var index, $option, $options, $optgroup;
|
||
if (this.isOpen && (e.keyCode === KEY_LEFT || e.keyCode === KEY_RIGHT)) {
|
||
self.ignoreHover = true;
|
||
$optgroup = this.$activeOption.closest('[data-group]');
|
||
index = $optgroup.find('[data-selectable]').index(this.$activeOption);
|
||
if (e.keyCode === KEY_LEFT) {
|
||
$optgroup = $optgroup.prev('[data-group]')
|
||
} else {
|
||
$optgroup = $optgroup.next('[data-group]')
|
||
}
|
||
$options = $optgroup.find('[data-selectable]');
|
||
$option = $options.eq(Math.min($options.length - 1, index));
|
||
if ($option.length) {
|
||
this.setActiveOption($option)
|
||
}
|
||
return
|
||
}
|
||
return original.apply(this, arguments)
|
||
}
|
||
}();
|
||
var getScrollbarWidth = function () {
|
||
var div;
|
||
var width = getScrollbarWidth.width;
|
||
var doc = document;
|
||
if (typeof width === 'undefined') {
|
||
div = doc.createElement('div');
|
||
div.innerHTML = '<div style="width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;"><div style="width:1px;height:100px;"></div></div>';
|
||
div = div.firstChild;
|
||
doc.body.appendChild(div);
|
||
width = getScrollbarWidth.width = div.offsetWidth - div.clientWidth;
|
||
doc.body.removeChild(div)
|
||
}
|
||
return width
|
||
};
|
||
var equalizeSizes = function () {
|
||
var i, n, height_max, width, width_last, width_parent, $optgroups;
|
||
$optgroups = $('[data-group]', self.$dropdown_content);
|
||
n = $optgroups.length;
|
||
if (!n || !self.$dropdown_content.width())
|
||
return;
|
||
if (options.equalizeHeight) {
|
||
height_max = 0;
|
||
for (i = 0; i < n; i++) {
|
||
height_max = Math.max(height_max, $optgroups.eq(i).height())
|
||
}
|
||
$optgroups.css({ height: height_max })
|
||
}
|
||
if (options.equalizeWidth) {
|
||
width_parent = self.$dropdown_content.innerWidth() - getScrollbarWidth();
|
||
width = Math.round(width_parent / n);
|
||
$optgroups.css({ width: width });
|
||
if (n > 1) {
|
||
width_last = width_parent - width * (n - 1);
|
||
$optgroups.eq(n - 1).css({ width: width_last })
|
||
}
|
||
}
|
||
};
|
||
if (options.equalizeHeight || options.equalizeWidth) {
|
||
hook.after(this, 'positionDropdown', equalizeSizes);
|
||
hook.after(this, 'refreshOptions', equalizeSizes)
|
||
}
|
||
});
|
||
Selectize.define('remove_button', function (options) {
|
||
if (this.settings.mode === 'single')
|
||
return;
|
||
options = $.extend({
|
||
label: '×',
|
||
title: 'Remove',
|
||
className: 'remove',
|
||
append: true
|
||
}, options);
|
||
var self = this;
|
||
var html = '<a href="javascript:void(0)" class="' + options.className + '" tabindex="-1" title="' + escape_html(options.title) + '">' + options.label + '</a>';
|
||
/**
|
||
* Appends an element as a child (with raw HTML).
|
||
*
|
||
* @param {string} html_container
|
||
* @param {string} html_element
|
||
* @return {string}
|
||
*/
|
||
var append = function (html_container, html_element) {
|
||
var pos = html_container.search(/(<\/[^>]+>\s*)$/);
|
||
return html_container.substring(0, pos) + html_element + html_container.substring(pos)
|
||
};
|
||
this.setup = function () {
|
||
var original = self.setup;
|
||
return function () {
|
||
// override the item rendering method to add the button to each
|
||
if (options.append) {
|
||
var render_item = self.settings.render.item;
|
||
self.settings.render.item = function (data) {
|
||
return append(render_item.apply(this, arguments), html)
|
||
}
|
||
}
|
||
original.apply(this, arguments);
|
||
// add event listener
|
||
this.$control.on('click', '.' + options.className, function (e) {
|
||
e.preventDefault();
|
||
if (self.isLocked)
|
||
return;
|
||
var $item = $(e.currentTarget).parent();
|
||
self.setActiveItem($item);
|
||
if (self.deleteSelection()) {
|
||
self.setCaret(self.items.length)
|
||
}
|
||
})
|
||
}
|
||
}()
|
||
});
|
||
Selectize.define('restore_on_backspace', function (options) {
|
||
var self = this;
|
||
options.text = options.text || function (option) {
|
||
return option[this.settings.labelField]
|
||
};
|
||
this.onKeyDown = function () {
|
||
var original = self.onKeyDown;
|
||
return function (e) {
|
||
var index, option;
|
||
if (e.keyCode === KEY_BACKSPACE && this.$control_input.val() === '' && !this.$activeItems.length) {
|
||
index = this.caretPos - 1;
|
||
if (index >= 0 && index < this.items.length) {
|
||
option = this.options[this.items[index]];
|
||
if (this.deleteSelection(e)) {
|
||
this.setTextboxValue(options.text.apply(this, [option]));
|
||
this.refreshOptions(true)
|
||
}
|
||
e.preventDefault();
|
||
return
|
||
}
|
||
}
|
||
return original.apply(this, arguments)
|
||
}
|
||
}()
|
||
});
|
||
return Selectize
|
||
}))
|
||
});
|
||
// source: node_modules/sifter/sifter.js
|
||
require.define('sifter/sifter', function (module, exports, __dirname, __filename, process) {
|
||
/**
|
||
* sifter.js
|
||
* Copyright (c) 2013 Brian Reavis & contributors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
||
* file except in compliance with the License. You may obtain a copy of the License at:
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software distributed under
|
||
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||
* ANY KIND, either express or implied. See the License for the specific language
|
||
* governing permissions and limitations under the License.
|
||
*
|
||
* @author Brian Reavis <[email protected]>
|
||
*/
|
||
(function (root, factory) {
|
||
if (typeof define === 'function' && define.amd) {
|
||
define(factory)
|
||
} else if (typeof exports === 'object') {
|
||
module.exports = factory()
|
||
} else {
|
||
root.Sifter = factory()
|
||
}
|
||
}(this, function () {
|
||
/**
|
||
* Textually searches arrays and hashes of objects
|
||
* by property (or multiple properties). Designed
|
||
* specifically for autocomplete.
|
||
*
|
||
* @constructor
|
||
* @param {array|object} items
|
||
* @param {object} items
|
||
*/
|
||
var Sifter = function (items, settings) {
|
||
this.items = items;
|
||
this.settings = settings || { diacritics: true }
|
||
};
|
||
/**
|
||
* Splits a search string into an array of individual
|
||
* regexps to be used to match results.
|
||
*
|
||
* @param {string} query
|
||
* @returns {array}
|
||
*/
|
||
Sifter.prototype.tokenize = function (query) {
|
||
query = trim(String(query || '').toLowerCase());
|
||
if (!query || !query.length)
|
||
return [];
|
||
var i, n, regex, letter;
|
||
var tokens = [];
|
||
var words = query.split(/ +/);
|
||
for (i = 0, n = words.length; i < n; i++) {
|
||
regex = escape_regex(words[i]);
|
||
if (this.settings.diacritics) {
|
||
for (letter in DIACRITICS) {
|
||
if (DIACRITICS.hasOwnProperty(letter)) {
|
||
regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter])
|
||
}
|
||
}
|
||
}
|
||
tokens.push({
|
||
string: words[i],
|
||
regex: new RegExp(regex, 'i')
|
||
})
|
||
}
|
||
return tokens
|
||
};
|
||
/**
|
||
* Iterates over arrays and hashes.
|
||
*
|
||
* ```
|
||
* this.iterator(this.items, function(item, id) {
|
||
* // invoked for each item
|
||
* });
|
||
* ```
|
||
*
|
||
* @param {array|object} object
|
||
*/
|
||
Sifter.prototype.iterator = function (object, callback) {
|
||
var iterator;
|
||
if (is_array(object)) {
|
||
iterator = Array.prototype.forEach || function (callback) {
|
||
for (var i = 0, n = this.length; i < n; i++) {
|
||
callback(this[i], i, this)
|
||
}
|
||
}
|
||
} else {
|
||
iterator = function (callback) {
|
||
for (var key in this) {
|
||
if (this.hasOwnProperty(key)) {
|
||
callback(this[key], key, this)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
iterator.apply(object, [callback])
|
||
};
|
||
/**
|
||
* Returns a function to be used to score individual results.
|
||
*
|
||
* Good matches will have a higher score than poor matches.
|
||
* If an item is not a match, 0 will be returned by the function.
|
||
*
|
||
* @param {object|string} search
|
||
* @param {object} options (optional)
|
||
* @returns {function}
|
||
*/
|
||
Sifter.prototype.getScoreFunction = function (search, options) {
|
||
var self, fields, tokens, token_count;
|
||
self = this;
|
||
search = self.prepareSearch(search, options);
|
||
tokens = search.tokens;
|
||
fields = search.options.fields;
|
||
token_count = tokens.length;
|
||
/**
|
||
* Calculates how close of a match the
|
||
* given value is against a search token.
|
||
*
|
||
* @param {mixed} value
|
||
* @param {object} token
|
||
* @return {number}
|
||
*/
|
||
var scoreValue = function (value, token) {
|
||
var score, pos;
|
||
if (!value)
|
||
return 0;
|
||
value = String(value || '');
|
||
pos = value.search(token.regex);
|
||
if (pos === -1)
|
||
return 0;
|
||
score = token.string.length / value.length;
|
||
if (pos === 0)
|
||
score += 0.5;
|
||
return score
|
||
};
|
||
/**
|
||
* Calculates the score of an object
|
||
* against the search query.
|
||
*
|
||
* @param {object} token
|
||
* @param {object} data
|
||
* @return {number}
|
||
*/
|
||
var scoreObject = function () {
|
||
var field_count = fields.length;
|
||
if (!field_count) {
|
||
return function () {
|
||
return 0
|
||
}
|
||
}
|
||
if (field_count === 1) {
|
||
return function (token, data) {
|
||
return scoreValue(data[fields[0]], token)
|
||
}
|
||
}
|
||
return function (token, data) {
|
||
for (var i = 0, sum = 0; i < field_count; i++) {
|
||
sum += scoreValue(data[fields[i]], token)
|
||
}
|
||
return sum / field_count
|
||
}
|
||
}();
|
||
if (!token_count) {
|
||
return function () {
|
||
return 0
|
||
}
|
||
}
|
||
if (token_count === 1) {
|
||
return function (data) {
|
||
return scoreObject(tokens[0], data)
|
||
}
|
||
}
|
||
if (search.options.conjunction === 'and') {
|
||
return function (data) {
|
||
var score;
|
||
for (var i = 0, sum = 0; i < token_count; i++) {
|
||
score = scoreObject(tokens[i], data);
|
||
if (score <= 0)
|
||
return 0;
|
||
sum += score
|
||
}
|
||
return sum / token_count
|
||
}
|
||
} else {
|
||
return function (data) {
|
||
for (var i = 0, sum = 0; i < token_count; i++) {
|
||
sum += scoreObject(tokens[i], data)
|
||
}
|
||
return sum / token_count
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Returns a function that can be used to compare two
|
||
* results, for sorting purposes. If no sorting should
|
||
* be performed, `null` will be returned.
|
||
*
|
||
* @param {string|object} search
|
||
* @param {object} options
|
||
* @return function(a,b)
|
||
*/
|
||
Sifter.prototype.getSortFunction = function (search, options) {
|
||
var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;
|
||
self = this;
|
||
search = self.prepareSearch(search, options);
|
||
sort = !search.query && options.sort_empty || options.sort;
|
||
/**
|
||
* Fetches the specified sort field value
|
||
* from a search result item.
|
||
*
|
||
* @param {string} name
|
||
* @param {object} result
|
||
* @return {mixed}
|
||
*/
|
||
get_field = function (name, result) {
|
||
if (name === '$score')
|
||
return result.score;
|
||
return self.items[result.id][name]
|
||
};
|
||
// parse options
|
||
fields = [];
|
||
if (sort) {
|
||
for (i = 0, n = sort.length; i < n; i++) {
|
||
if (search.query || sort[i].field !== '$score') {
|
||
fields.push(sort[i])
|
||
}
|
||
}
|
||
}
|
||
// the "$score" field is implied to be the primary
|
||
// sort field, unless it's manually specified
|
||
if (search.query) {
|
||
implicit_score = true;
|
||
for (i = 0, n = fields.length; i < n; i++) {
|
||
if (fields[i].field === '$score') {
|
||
implicit_score = false;
|
||
break
|
||
}
|
||
}
|
||
if (implicit_score) {
|
||
fields.unshift({
|
||
field: '$score',
|
||
direction: 'desc'
|
||
})
|
||
}
|
||
} else {
|
||
for (i = 0, n = fields.length; i < n; i++) {
|
||
if (fields[i].field === '$score') {
|
||
fields.splice(i, 1);
|
||
break
|
||
}
|
||
}
|
||
}
|
||
multipliers = [];
|
||
for (i = 0, n = fields.length; i < n; i++) {
|
||
multipliers.push(fields[i].direction === 'desc' ? -1 : 1)
|
||
}
|
||
// build function
|
||
fields_count = fields.length;
|
||
if (!fields_count) {
|
||
return null
|
||
} else if (fields_count === 1) {
|
||
field = fields[0].field;
|
||
multiplier = multipliers[0];
|
||
return function (a, b) {
|
||
return multiplier * cmp(get_field(field, a), get_field(field, b))
|
||
}
|
||
} else {
|
||
return function (a, b) {
|
||
var i, result, a_value, b_value, field;
|
||
for (i = 0; i < fields_count; i++) {
|
||
field = fields[i].field;
|
||
result = multipliers[i] * cmp(get_field(field, a), get_field(field, b));
|
||
if (result)
|
||
return result
|
||
}
|
||
return 0
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* Parses a search query and returns an object
|
||
* with tokens and fields ready to be populated
|
||
* with results.
|
||
*
|
||
* @param {string} query
|
||
* @param {object} options
|
||
* @returns {object}
|
||
*/
|
||
Sifter.prototype.prepareSearch = function (query, options) {
|
||
if (typeof query === 'object')
|
||
return query;
|
||
options = extend({}, options);
|
||
var option_fields = options.fields;
|
||
var option_sort = options.sort;
|
||
var option_sort_empty = options.sort_empty;
|
||
if (option_fields && !is_array(option_fields))
|
||
options.fields = [option_fields];
|
||
if (option_sort && !is_array(option_sort))
|
||
options.sort = [option_sort];
|
||
if (option_sort_empty && !is_array(option_sort_empty))
|
||
options.sort_empty = [option_sort_empty];
|
||
return {
|
||
options: options,
|
||
query: String(query || '').toLowerCase(),
|
||
tokens: this.tokenize(query),
|
||
total: 0,
|
||
items: []
|
||
}
|
||
};
|
||
/**
|
||
* Searches through all items and returns a sorted array of matches.
|
||
*
|
||
* The `options` parameter can contain:
|
||
*
|
||
* - fields {string|array}
|
||
* - sort {array}
|
||
* - score {function}
|
||
* - filter {bool}
|
||
* - limit {integer}
|
||
*
|
||
* Returns an object containing:
|
||
*
|
||
* - options {object}
|
||
* - query {string}
|
||
* - tokens {array}
|
||
* - total {int}
|
||
* - items {array}
|
||
*
|
||
* @param {string} query
|
||
* @param {object} options
|
||
* @returns {object}
|
||
*/
|
||
Sifter.prototype.search = function (query, options) {
|
||
var self = this, value, score, search, calculateScore;
|
||
var fn_sort;
|
||
var fn_score;
|
||
search = this.prepareSearch(query, options);
|
||
options = search.options;
|
||
query = search.query;
|
||
// generate result scoring function
|
||
fn_score = options.score || self.getScoreFunction(search);
|
||
// perform search and sort
|
||
if (query.length) {
|
||
self.iterator(self.items, function (item, id) {
|
||
score = fn_score(item);
|
||
if (options.filter === false || score > 0) {
|
||
search.items.push({
|
||
'score': score,
|
||
'id': id
|
||
})
|
||
}
|
||
})
|
||
} else {
|
||
self.iterator(self.items, function (item, id) {
|
||
search.items.push({
|
||
'score': 1,
|
||
'id': id
|
||
})
|
||
})
|
||
}
|
||
fn_sort = self.getSortFunction(search, options);
|
||
if (fn_sort)
|
||
search.items.sort(fn_sort);
|
||
// apply limits
|
||
search.total = search.items.length;
|
||
if (typeof options.limit === 'number') {
|
||
search.items = search.items.slice(0, options.limit)
|
||
}
|
||
return search
|
||
};
|
||
// utilities
|
||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
var cmp = function (a, b) {
|
||
if (typeof a === 'number' && typeof b === 'number') {
|
||
return a > b ? 1 : a < b ? -1 : 0
|
||
}
|
||
a = asciifold(String(a || ''));
|
||
b = asciifold(String(b || ''));
|
||
if (a > b)
|
||
return 1;
|
||
if (b > a)
|
||
return -1;
|
||
return 0
|
||
};
|
||
var extend = function (a, b) {
|
||
var i, n, k, object;
|
||
for (i = 1, n = arguments.length; i < n; i++) {
|
||
object = arguments[i];
|
||
if (!object)
|
||
continue;
|
||
for (k in object) {
|
||
if (object.hasOwnProperty(k)) {
|
||
a[k] = object[k]
|
||
}
|
||
}
|
||
}
|
||
return a
|
||
};
|
||
var trim = function (str) {
|
||
return (str + '').replace(/^\s+|\s+$|/g, '')
|
||
};
|
||
var escape_regex = function (str) {
|
||
return (str + '').replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1')
|
||
};
|
||
var is_array = Array.isArray || typeof $ !== 'undefined' && $.isArray || function (object) {
|
||
return Object.prototype.toString.call(object) === '[object Array]'
|
||
};
|
||
var DIACRITICS = {
|
||
'a': '[aÀÁÂÃÄÅàáâãäåĀāąĄ]',
|
||
'c': '[cÇçćĆčČ]',
|
||
'd': '[dđĐďĎð]',
|
||
'e': '[eÈÉÊËèéêëěĚĒēęĘ]',
|
||
'i': '[iÌÍÎÏìíîïĪī]',
|
||
'l': '[lłŁ]',
|
||
'n': '[nÑñňŇńŃ]',
|
||
'o': '[oÒÓÔÕÕÖØòóôõöøŌō]',
|
||
'r': '[rřŘ]',
|
||
's': '[sŠšśŚ]',
|
||
't': '[tťŤ]',
|
||
'u': '[uÙÚÛÜùúûüůŮŪū]',
|
||
'y': '[yŸÿýÝ]',
|
||
'z': '[zŽžżŻźŹ]'
|
||
};
|
||
var asciifold = function () {
|
||
var i, n, k, chunk;
|
||
var foreignletters = '';
|
||
var lookup = {};
|
||
for (k in DIACRITICS) {
|
||
if (DIACRITICS.hasOwnProperty(k)) {
|
||
chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);
|
||
foreignletters += chunk;
|
||
for (i = 0, n = chunk.length; i < n; i++) {
|
||
lookup[chunk.charAt(i)] = k
|
||
}
|
||
}
|
||
}
|
||
var regexp = new RegExp('[' + foreignletters + ']', 'g');
|
||
return function (str) {
|
||
return str.replace(regexp, function (foreignletter) {
|
||
return lookup[foreignletter]
|
||
}).toLowerCase()
|
||
}
|
||
}();
|
||
// export
|
||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
return Sifter
|
||
}))
|
||
});
|
||
// source: node_modules/microplugin/src/microplugin.js
|
||
require.define('microplugin/src/microplugin', function (module, exports, __dirname, __filename, process) {
|
||
/**
|
||
* microplugin.js
|
||
* Copyright (c) 2013 Brian Reavis & contributors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
||
* file except in compliance with the License. You may obtain a copy of the License at:
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software distributed under
|
||
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||
* ANY KIND, either express or implied. See the License for the specific language
|
||
* governing permissions and limitations under the License.
|
||
*
|
||
* @author Brian Reavis <[email protected]>
|
||
*/
|
||
(function (root, factory) {
|
||
if (typeof define === 'function' && define.amd) {
|
||
define(factory)
|
||
} else if (typeof exports === 'object') {
|
||
module.exports = factory()
|
||
} else {
|
||
root.MicroPlugin = factory()
|
||
}
|
||
}(this, function () {
|
||
var MicroPlugin = {};
|
||
MicroPlugin.mixin = function (Interface) {
|
||
Interface.plugins = {};
|
||
/**
|
||
* Initializes the listed plugins (with options).
|
||
* Acceptable formats:
|
||
*
|
||
* List (without options):
|
||
* ['a', 'b', 'c']
|
||
*
|
||
* List (with options):
|
||
* [{'name': 'a', options: {}}, {'name': 'b', options: {}}]
|
||
*
|
||
* Hash (with options):
|
||
* {'a': { ... }, 'b': { ... }, 'c': { ... }}
|
||
*
|
||
* @param {mixed} plugins
|
||
*/
|
||
Interface.prototype.initializePlugins = function (plugins) {
|
||
var i, n, key;
|
||
var self = this;
|
||
var queue = [];
|
||
self.plugins = {
|
||
names: [],
|
||
settings: {},
|
||
requested: {},
|
||
loaded: {}
|
||
};
|
||
if (utils.isArray(plugins)) {
|
||
for (i = 0, n = plugins.length; i < n; i++) {
|
||
if (typeof plugins[i] === 'string') {
|
||
queue.push(plugins[i])
|
||
} else {
|
||
self.plugins.settings[plugins[i].name] = plugins[i].options;
|
||
queue.push(plugins[i].name)
|
||
}
|
||
}
|
||
} else if (plugins) {
|
||
for (key in plugins) {
|
||
if (plugins.hasOwnProperty(key)) {
|
||
self.plugins.settings[key] = plugins[key];
|
||
queue.push(key)
|
||
}
|
||
}
|
||
}
|
||
while (queue.length) {
|
||
self.require(queue.shift())
|
||
}
|
||
};
|
||
Interface.prototype.loadPlugin = function (name) {
|
||
var self = this;
|
||
var plugins = self.plugins;
|
||
var plugin = Interface.plugins[name];
|
||
if (!Interface.plugins.hasOwnProperty(name)) {
|
||
throw new Error('Unable to find "' + name + '" plugin')
|
||
}
|
||
plugins.requested[name] = true;
|
||
plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);
|
||
plugins.names.push(name)
|
||
};
|
||
/**
|
||
* Initializes a plugin.
|
||
*
|
||
* @param {string} name
|
||
*/
|
||
Interface.prototype.require = function (name) {
|
||
var self = this;
|
||
var plugins = self.plugins;
|
||
if (!self.plugins.loaded.hasOwnProperty(name)) {
|
||
if (plugins.requested[name]) {
|
||
throw new Error('Plugin has circular dependency ("' + name + '")')
|
||
}
|
||
self.loadPlugin(name)
|
||
}
|
||
return plugins.loaded[name]
|
||
};
|
||
/**
|
||
* Registers a plugin.
|
||
*
|
||
* @param {string} name
|
||
* @param {function} fn
|
||
*/
|
||
Interface.define = function (name, fn) {
|
||
Interface.plugins[name] = {
|
||
'name': name,
|
||
'fn': fn
|
||
}
|
||
}
|
||
};
|
||
var utils = {
|
||
isArray: Array.isArray || function (vArg) {
|
||
return Object.prototype.toString.call(vArg) === '[object Array]'
|
||
}
|
||
};
|
||
return MicroPlugin
|
||
}))
|
||
});
|
||
// source: src/page.coffee
|
||
require.define('./page', function (module, exports, __dirname, __filename, process) {
|
||
var Page, RiotPage, riot, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Page = require('daisho-sdk/lib').Page;
|
||
riot = require('crowdcontrol/lib').riot.riot;
|
||
module.exports = RiotPage = function (superClass) {
|
||
extend(RiotPage, superClass);
|
||
function RiotPage() {
|
||
return RiotPage.__super__.constructor.apply(this, arguments)
|
||
}
|
||
RiotPage.prototype.tagEl = 'tag';
|
||
RiotPage.prototype.opts = null;
|
||
RiotPage.prototype.load = function (opts) {
|
||
this.opts = opts != null ? opts : {}
|
||
};
|
||
RiotPage.prototype.render = function () {
|
||
var el;
|
||
el = document.createElement(this.tag);
|
||
this.el.appendChild(el);
|
||
this.tagEl = riot.mount(el, this.tag, this.opts)[0];
|
||
return this.tagEl.update()
|
||
};
|
||
RiotPage.prototype.unload = function () {
|
||
return this.tagEl.unmount()
|
||
};
|
||
return RiotPage
|
||
}(Page)
|
||
});
|
||
// source: node_modules/daisho-sdk/lib/index.js
|
||
require.define('daisho-sdk/lib', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
module.exports = {
|
||
Page: require('daisho-sdk/lib/page'),
|
||
Module: require('daisho-sdk/lib/module')
|
||
} //# sourceMappingURL=index.js.map
|
||
});
|
||
// source: node_modules/daisho-sdk/lib/page.js
|
||
require.define('daisho-sdk/lib/page', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Page;
|
||
module.exports = Page = function () {
|
||
Page.prototype.el = null;
|
||
Page.prototype.module = null;
|
||
function Page(el, module1) {
|
||
this.el = el;
|
||
this.module = module1
|
||
}
|
||
Page.prototype.load = function (opts) {
|
||
this.opts = opts != null ? opts : {}
|
||
};
|
||
Page.prototype.render = function () {
|
||
};
|
||
Page.prototype.unload = function () {
|
||
};
|
||
Page.prototype.annotations = function () {
|
||
};
|
||
return Page
|
||
}() //# sourceMappingURL=page.js.map
|
||
});
|
||
// source: node_modules/daisho-sdk/lib/module.js
|
||
require.define('daisho-sdk/lib/module', function (module, exports, __dirname, __filename, process) {
|
||
// Generated by CoffeeScript 1.10.0
|
||
var Module;
|
||
module.exports = Module = function () {
|
||
Module.prototype.json = null;
|
||
function Module() {
|
||
}
|
||
Module.prototype.load = function (opts) {
|
||
this.opts = opts != null ? opts : {}
|
||
};
|
||
Module.prototype.unload = function () {
|
||
};
|
||
return Module
|
||
}() //# sourceMappingURL=module.js.map
|
||
});
|
||
// source: src/forms/index.coffee
|
||
require.define('./forms', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = {
|
||
TableRow: require('./forms/table-row'),
|
||
register: function () {
|
||
return this.TableRow.register()
|
||
}
|
||
}
|
||
});
|
||
// source: src/forms/table-row.coffee
|
||
require.define('./forms/table-row', function (module, exports, __dirname, __filename, process) {
|
||
var CrowdControl, TableRow, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
CrowdControl = require('crowdcontrol/lib');
|
||
module.exports = TableRow = function (superClass) {
|
||
extend(TableRow, superClass);
|
||
function TableRow() {
|
||
return TableRow.__super__.constructor.apply(this, arguments)
|
||
}
|
||
TableRow.prototype.tag = 'daisho-table-row';
|
||
TableRow.prototype.configs = null;
|
||
TableRow.prototype.tableData = null;
|
||
TableRow.prototype.data = null;
|
||
TableRow.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/table-row');
|
||
TableRow.prototype.init = function () {
|
||
if (this.configs == null) {
|
||
this.configs = this.parent.configs
|
||
}
|
||
if (this.tableData == null) {
|
||
this.tableData = this.parent.tableData
|
||
}
|
||
return TableRow.__super__.init.apply(this, arguments)
|
||
};
|
||
return TableRow
|
||
}(CrowdControl.Views.Form)
|
||
});
|
||
// source: templates/table-row.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/table-row', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<div each="{ column, i in tableData.get(\'columns\') }">\n <daisho-poly-control lookup="{ column.id }" tag="{ column.tag }"></daisho-poly-control>\n</div>\n\n'
|
||
});
|
||
// source: src/widgets/index.coffee
|
||
require.define('./widgets', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = {
|
||
Table: require('./widgets/table'),
|
||
TableControls: require('./widgets/table-controls'),
|
||
Menu: require('./widgets/menu'),
|
||
TableFilterMenu: require('./widgets/table-filter-menu'),
|
||
register: function () {
|
||
this.Table.register();
|
||
this.TableControls.register();
|
||
this.Menu.register();
|
||
return this.TableFilterMenu.register()
|
||
}
|
||
}
|
||
});
|
||
// source: src/widgets/table.coffee
|
||
require.define('./widgets/table', function (module, exports, __dirname, __filename, process) {
|
||
var CrowdControl, Table, refer, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
CrowdControl = require('crowdcontrol/lib');
|
||
refer = require('referential/lib');
|
||
module.exports = Table = function (superClass) {
|
||
extend(Table, superClass);
|
||
function Table() {
|
||
return Table.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Table.prototype.tag = 'daisho-table-widget';
|
||
Table.prototype.nameSinglular = 'Thing';
|
||
Table.prototype.namePlural = 'Things';
|
||
Table.prototype.configs = [];
|
||
Table.prototype.data = refer({});
|
||
Table.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/table-widget');
|
||
return Table
|
||
}(CrowdControl.Views.View)
|
||
});
|
||
// source: templates/table-widget.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/table-widget', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<div class="table-head">\n <div class="table-row">\n <div each="{ column, i in data.get(\'columns\') }">{ column.name }</div>\n </div>\n</div>\n<div class="table-body">\n <daisho-table-row class="table-row" each="{ item, i in data.get(\'items\') }" table-data="{ this.parent.data }" data="{ this.parent.data.ref(\'items.\' + i) }" config="{ this.parent.config }"></daisho-table-row>\n</div>\n\n'
|
||
});
|
||
// source: src/widgets/table-controls.coffee
|
||
require.define('./widgets/table-controls', function (module, exports, __dirname, __filename, process) {
|
||
var $, CrowdControl, TableControls, refer, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
CrowdControl = require('crowdcontrol/lib');
|
||
refer = require('referential/lib');
|
||
$ = require('jquery/dist/jquery');
|
||
module.exports = TableControls = function (superClass) {
|
||
extend(TableControls, superClass);
|
||
function TableControls() {
|
||
return TableControls.__super__.constructor.apply(this, arguments)
|
||
}
|
||
TableControls.prototype.tag = 'daisho-table-controls-widget';
|
||
TableControls.prototype.configs = [];
|
||
TableControls.prototype.data = null;
|
||
TableControls.prototype.filterData = null;
|
||
TableControls.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/table-controls-widget');
|
||
TableControls.prototype.init = function () {
|
||
if (this.data == null) {
|
||
this.data = refer({ filter: '' })
|
||
}
|
||
if (this.data.get('filter') == null) {
|
||
this.data.set('filter', '')
|
||
}
|
||
if (this.filterData == null) {
|
||
this.filterData = refer({ options: [] })
|
||
}
|
||
return TableControls.__super__.init.apply(this, arguments)
|
||
};
|
||
TableControls.prototype.countWords = function () {
|
||
var count;
|
||
count = this.data.get('count');
|
||
if (count === 1) {
|
||
return count + ' ' + this.nameSingular
|
||
} else {
|
||
return count + ' ' + this.namePlural
|
||
}
|
||
};
|
||
TableControls.prototype.sortWords = function () {
|
||
var column, columns, i, len, lsort, sort;
|
||
sort = this.data.get('sort');
|
||
if (sort[0] === '-') {
|
||
sort = sort.substr(1)
|
||
}
|
||
lsort = sort.toLowerCase();
|
||
columns = this.data.get('columns');
|
||
for (i = 0, len = columns.length; i < len; i++) {
|
||
column = columns[i];
|
||
if (column.id.toLowerCase() === lsort) {
|
||
return column.name
|
||
}
|
||
}
|
||
return sort
|
||
};
|
||
TableControls.prototype.resetMenus = function (event) {
|
||
var $toggle, value;
|
||
if (event != null) {
|
||
$toggle = $(this.root).find('#' + event.target.htmlFor);
|
||
value = $toggle.prop('checked')
|
||
}
|
||
$(this.root).find('.menu-toggle').prop('checked', false);
|
||
if (event != null) {
|
||
return $toggle.prop('checked', !value)
|
||
}
|
||
};
|
||
TableControls.prototype.ignore = function (event) {
|
||
event.stopPropagation();
|
||
event.preventDefault();
|
||
return false
|
||
};
|
||
return TableControls
|
||
}(CrowdControl.Views.View)
|
||
});
|
||
// source: templates/table-controls-widget.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/table-controls-widget', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<div class="table-filter-summary">\n <span class="table-filter-count">\n { countWords() }\n </span>\n <span>sorted by</span>\n <span class="table-filter-sort">\n { sortWords() }\n </span>\n</div>\n<input id="table-column-button" class="menu-toggle" type="checkbox">\n<label class="table-filter-option button" for="table-column-button">\n Columns\n</label>\n<input id="table-filter-button" class="menu-toggle" type="checkbox">\n<label class="table-filter-option button" for="table-filter-button" onclick="{ resetMenus }">\n <span>Filters</span>\n <div class="menu" onclick="{ ignore }">\n <div class="menu-title">Filters</div>\n<daisho-table-filter-menu-widget configs="{ configs }" data="{ data }" filter-data="{ filterData }" filter-placeholder="Find a filter"></daisho-table-filter-menu-widget>\n </div>\n</label>\n'
|
||
});
|
||
// source: src/widgets/menu.coffee
|
||
require.define('./widgets/menu', function (module, exports, __dirname, __filename, process) {
|
||
var CrowdControl, Menu, filter, refer, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
CrowdControl = require('crowdcontrol/lib');
|
||
refer = require('referential/lib');
|
||
filter = require('./utils/menu').filter;
|
||
module.exports = Menu = function (superClass) {
|
||
extend(Menu, superClass);
|
||
function Menu() {
|
||
return Menu.__super__.constructor.apply(this, arguments)
|
||
}
|
||
Menu.prototype.tag = 'daisho-menu-widget';
|
||
Menu.prototype.configs = { filter: null };
|
||
Menu.prototype.filter = true;
|
||
Menu.prototype.filterPlaceholder = 'Type Something';
|
||
Menu.prototype.options = [];
|
||
Menu.prototype.filterData = null;
|
||
Menu.prototype.data = null;
|
||
Menu.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/menu-widget');
|
||
Menu.prototype.init = function () {
|
||
if (this.data == null) {
|
||
this.data = refer({ filter: '' })
|
||
}
|
||
if (this.filterData == null) {
|
||
this.filterData = refer({ options: [] })
|
||
}
|
||
Menu.__super__.init.apply(this, arguments);
|
||
this.on('update', function (_this) {
|
||
return function () {
|
||
return _this.options = filter(_this.filterData.get('options'), _this.data.get('filter'))
|
||
}
|
||
}(this));
|
||
return this.inputs.filter.on('change', function (_this) {
|
||
return function () {
|
||
return _this.update()
|
||
}
|
||
}(this))
|
||
};
|
||
Menu.prototype.noResults = function () {
|
||
return this.options.length === 0
|
||
};
|
||
return Menu
|
||
}(CrowdControl.Views.Form)
|
||
});
|
||
// source: src/utils/menu.coffee
|
||
require.define('./utils/menu', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = {
|
||
filter: function (options, filter) {
|
||
var i, len, option, ret;
|
||
ret = [];
|
||
for (i = 0, len = options.length; i < len; i++) {
|
||
option = options[i];
|
||
if (option.name.toLowerCase().indexOf(filter.toLowerCase()) > -1) {
|
||
ret.push(option)
|
||
}
|
||
}
|
||
return ret
|
||
}
|
||
}
|
||
});
|
||
// source: templates/menu-widget.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/menu-widget', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<daisho-inline-text-control lookup="filter" if="{ filter }" placeholder="{ filterPlaceholder }" realtime="true"></daisho-inline-text-control>\n<ul>\n <li each="{ option, i in options }" onclick="{ option.action }">{ option.name }</li>\n <li class="no-results" if="{ noResults() }">No Search Results</li>\n</ul>\n'
|
||
});
|
||
// source: src/widgets/table-filter-menu.coffee
|
||
require.define('./widgets/table-filter-menu', function (module, exports, __dirname, __filename, process) {
|
||
var Menu, TableFilterMenu, extend = function (child, parent) {
|
||
for (var key in parent) {
|
||
if (hasProp.call(parent, key))
|
||
child[key] = parent[key]
|
||
}
|
||
function ctor() {
|
||
this.constructor = child
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child
|
||
}, hasProp = {}.hasOwnProperty;
|
||
Menu = require('./widgets/menu');
|
||
module.exports = TableFilterMenu = function (superClass) {
|
||
extend(TableFilterMenu, superClass);
|
||
function TableFilterMenu() {
|
||
return TableFilterMenu.__super__.constructor.apply(this, arguments)
|
||
}
|
||
TableFilterMenu.prototype.tag = 'daisho-table-filter-menu-widget';
|
||
TableFilterMenu.prototype.configs = { filter: null };
|
||
TableFilterMenu.prototype.data = null;
|
||
TableFilterMenu.prototype.filterData = null;
|
||
TableFilterMenu.prototype.html = require('./Users/dtai/work/hanzo/daisho-riot/templates/table-filter-menu-widget');
|
||
TableFilterMenu.prototype.init = function () {
|
||
return TableFilterMenu.__super__.init.apply(this, arguments)
|
||
};
|
||
return TableFilterMenu
|
||
}(Menu)
|
||
});
|
||
// source: templates/table-filter-menu-widget.html
|
||
require.define('./Users/dtai/work/hanzo/daisho-riot/templates/table-filter-menu-widget', function (module, exports, __dirname, __filename, process) {
|
||
module.exports = '<daisho-inline-text-control lookup="filter" if="{ filter }" placeholder="{ filterPlaceholder }" realtime="true"></daisho-inline-text-control>\n<ul>\n <li each="{ option, i in options }" onclick="{ option.action }">\n <daisho-poly-control lookup="{ option.id }" tag="{ option.tag }" opts-override="{ option.options }"></daisho-poly-control>\n </li>\n <li class="no-results" if="{ noResults() }">No Search Results</li>\n</ul>\n'
|
||
});
|
||
// source: src/index.coffee
|
||
require.define('./index', function (module, exports, __dirname, __filename, process) {
|
||
var Controls;
|
||
Controls = require('./controls');
|
||
if (typeof window !== 'undefined' && window !== null) {
|
||
window.$ = require('jquery/dist/jquery');
|
||
require('selectize/dist/js/selectize')
|
||
}
|
||
module.exports = {
|
||
RiotPage: require('./page'),
|
||
Events: require('./events'),
|
||
Controls: require('./controls'),
|
||
Forms: require('./forms'),
|
||
Widgets: require('./widgets'),
|
||
register: function (m) {
|
||
this.Controls.register(m);
|
||
this.Forms.register();
|
||
return this.Widgets.register()
|
||
}
|
||
}
|
||
});
|
||
require('./index')
|
||
}.call(this, this))//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRyb2xzL2luZGV4LmNvZmZlZSIsImNvbnRyb2xzL3BvbHkuY29mZmVlIiwibm9kZV9tb2R1bGVzL2Nyb3dkY29udHJvbC9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY3Jvd2Rjb250cm9sL2xpYi9yaW90LmpzIiwibm9kZV9tb2R1bGVzL2Nyb3dkY29udHJvbC9saWIvdmlld3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY3Jvd2Rjb250cm9sL2xpYi92aWV3cy9mb3JtLmpzIiwibm9kZV9tb2R1bGVzL2Nyb3dkY29udHJvbC9saWIvdmlld3Mvdmlldy5qcyIsIm5vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLWZ1bmN0aW9uL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Nyb3dkY29udHJvbC9saWIvdmlld3MvaW5wdXRpZnkuanMiLCJub2RlX21vZHVsZXMvYnJva2VuL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy96b3VzYW4vem91c2FuLW1pbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWZlcmVudGlhbC9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmVmZXJlbnRpYWwvbGliL3JlZmVyLmpzIiwibm9kZV9tb2R1bGVzL3JlZmVyZW50aWFsL2xpYi9yZWYuanMiLCJub2RlX21vZHVsZXMvbm9kZS5leHRlbmQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbm9kZS5leHRlbmQvbGliL2V4dGVuZC5qcyIsIm5vZGVfbW9kdWxlcy9pcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pcy1hcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pcy1udW1iZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMva2luZC1vZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXMtb2JqZWN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLXN0cmluZy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9taXNlLXNldHRsZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wcm9taXNlLXNldHRsZS9saWIvcHJvbWlzZS1zZXR0bGUuanMiLCJub2RlX21vZHVsZXMvY3Jvd2Rjb250cm9sL2xpYi92aWV3cy9pbnB1dC5qcyIsImNvbnRyb2xzL2NvbnRyb2wuY29mZmVlIiwiZXZlbnRzLmNvZmZlZSIsIm5vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMiLCJjb250cm9scy90ZXh0LmNvZmZlZSIsIlVzZXJzL2R0YWkvd29yay9oYW56by9kYWlzaG8tcmlvdC90ZW1wbGF0ZXMvdGV4dC5odG1sIiwiY29udHJvbHMvaW5saW5lLXRleHQuY29mZmVlIiwidXRpbHMvcGxhY2Vob2xkZXIuY29mZmVlIiwiVXNlcnMvZHRhaS93b3JrL2hhbnpvL2RhaXNoby1yaW90L3RlbXBsYXRlcy9pbmxpbmUtdGV4dC5odG1sIiwiY29udHJvbHMvc3RhdGljLXRleHQuY29mZmVlIiwiY29udHJvbHMvc3RhdGljLWRhdGUuY29mZmVlIiwibm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJjb250cm9scy9zdGF0aWMtYWdvLmNvZmZlZSIsIm5vZGVfbW9kdWxlcy9zZWxlY3RpemUvZGlzdC9qcy9zZWxlY3RpemUuanMiLCJub2RlX21vZHVsZXMvc2lmdGVyL3NpZnRlci5qcyIsIm5vZGVfbW9kdWxlcy9taWNyb3BsdWdpbi9zcmMvbWljcm9wbHVnaW4uanMiLCJwYWdlLmNvZmZlZSIsIm5vZGVfbW9kdWxlcy9kYWlzaG8tc2RrL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWlzaG8tc2RrL2xpYi9wYWdlLmpzIiwibm9kZV9tb2R1bGVzL2RhaXNoby1zZGsvbGliL21vZHVsZS5qcyIsImZvcm1zL2luZGV4LmNvZmZlZSIsImZvcm1zL3RhYmxlLXJvdy5jb2ZmZWUiLCJVc2Vycy9kdGFpL3dvcmsvaGFuem8vZGFpc2hvLXJpb3QvdGVtcGxhdGVzL3RhYmxlLXJvdy5odG1sIiwid2lkZ2V0cy9pbmRleC5jb2ZmZWUiLCJ3aWRnZXRzL3RhYmxlLmNvZmZlZSIsIlVzZXJzL2R0YWkvd29yay9oYW56by9kYWlzaG8tcmlvdC90ZW1wbGF0ZXMvdGFibGUtd2lkZ2V0Lmh0bWwiLCJ3aWRnZXRzL3RhYmxlLWNvbnRyb2xzLmNvZmZlZSIsIlVzZXJzL2R0YWkvd29yay9oYW56by9kYWlzaG8tcmlvdC90ZW1wbGF0ZXMvdGFibGUtY29udHJvbHMtd2lkZ2V0Lmh0bWwiLCJ3aWRnZXRzL21lbnUuY29mZmVlIiwidXRpbHMvbWVudS5jb2ZmZWUiLCJVc2Vycy9kdGFpL3dvcmsvaGFuem8vZGFpc2hvLXJpb3QvdGVtcGxhdGVzL21lbnUtd2lkZ2V0Lmh0bWwiLCJ3aWRnZXRzL3RhYmxlLWZpbHRlci1tZW51LmNvZmZlZSIsIlVzZXJzL2R0YWkvd29yay9oYW56by9kYWlzaG8tcmlvdC90ZW1wbGF0ZXMvdGFibGUtZmlsdGVyLW1lbnUtd2lkZ2V0Lmh0bWwiLCJpbmRleC5jb2ZmZWUiXSwibmFtZXMiOlsicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJDb250cm9sIiwiVGV4dCIsIklubGluZVRleHQiLCJTdGF0aWNUZXh0IiwiU3RhdGljRGF0ZSIsIlN0YXRpY0FnbyIsInJlZ2lzdGVyIiwibSIsInJpb3QiLCJ0YWciLCJvcHRzIiwiZWwiLCJ0YWdFbCIsIm9wdHNPdmVycmlkZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInJvb3QiLCJhcHBlbmRDaGlsZCIsInBhcmVudCIsIm1vdW50IiwidXBkYXRlIiwiQ3Jvd2RDb250cm9sIiwiciIsIlZpZXdzIiwidGFncyIsInN0YXJ0IiwiaSIsImxlbiIsInJlZiIsInJlc3VsdHMiLCJsZW5ndGgiLCJwdXNoIiwid2luZG93IiwiQ3Jvd2RzdGFydCIsIkNyb3dkY29udHJvbCIsInNldCIsIkZvcm0iLCJJbnB1dCIsIlZpZXciLCJQcm9taXNlIiwiaW5wdXRpZnkiLCJvYnNlcnZhYmxlIiwic2V0dGxlIiwiZXh0ZW5kIiwiY2hpbGQiLCJrZXkiLCJoYXNQcm9wIiwiY2FsbCIsImN0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9fc3VwZXJfXyIsImhhc093blByb3BlcnR5Iiwic3VwZXJDbGFzcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiY29uZmlncyIsImlucHV0cyIsImRhdGEiLCJpbml0SW5wdXRzIiwiaW5wdXQiLCJuYW1lIiwicmVzdWx0czEiLCJpbml0Iiwic3VibWl0IiwicFJlZiIsInBzIiwidHJpZ2dlciIsInAiLCJ0aGVuIiwiX3RoaXMiLCJyZXN1bHQiLCJpc0Z1bGZpbGxlZCIsIl9zdWJtaXQiLCJjb2xsYXBzZVByb3RvdHlwZSIsImlzRnVuY3Rpb24iLCJvYmplY3RBc3NpZ24iLCJzZXRQcm90b3R5cGVPZiIsIm1peGluUHJvcGVydGllcyIsInNldFByb3RvT2YiLCJvYmoiLCJwcm90byIsIl9fcHJvdG9fXyIsInByb3AiLCJPYmplY3QiLCJBcnJheSIsImNvbGxhcHNlIiwicGFyZW50UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsImh0bWwiLCJjc3MiLCJhdHRycyIsImV2ZW50cyIsIm5ld1Byb3RvIiwiYmVmb3JlSW5pdCIsImZuIiwiaGFuZGxlciIsImsiLCJyZWYxIiwic2VsZiIsInYiLCJvbGRGbiIsIm9uIiwicHJvcElzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9PYmplY3QiLCJ2YWwiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJhc3NpZ24iLCJ0YXJnZXQiLCJzb3VyY2UiLCJmcm9tIiwidG8iLCJzeW1ib2xzIiwicyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInRvU3RyaW5nIiwic3RyaW5nIiwic2V0VGltZW91dCIsImFsZXJ0IiwiY29uZmlybSIsInByb21wdCIsImlzUmVmIiwicmVmZXIiLCJvIiwiY29uZmlnIiwiZm4xIiwibWlkZGxld2FyZSIsIm1pZGRsZXdhcmVGbiIsInZhbGlkYXRlIiwicGFpciIsInJlc29sdmUiLCJnZXQiLCJqIiwibGVuMSIsIlByb21pc2VJbnNwZWN0aW9uIiwic3VwcHJlc3NVbmNhdWdodFJlamVjdGlvbkVycm9yIiwiYXJnIiwic3RhdGUiLCJ2YWx1ZSIsInJlYXNvbiIsImlzUmVqZWN0ZWQiLCJyZWZsZWN0IiwicHJvbWlzZSIsInJlamVjdCIsImVyciIsInByb21pc2VzIiwiYWxsIiwibWFwIiwiY2FsbGJhY2siLCJjYiIsImVycm9yIiwidCIsImUiLCJuIiwieSIsImMiLCJ1IiwiZiIsInNwbGljZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiYXR0cmlidXRlcyIsInNldEF0dHJpYnV0ZSIsInNldEltbWVkaWF0ZSIsImNvbnNvbGUiLCJsb2ciLCJzdGFjayIsImwiLCJhIiwidGltZW91dCIsIkVycm9yIiwiWm91c2FuIiwic29vbiIsImdsb2JhbCIsIlJlZiIsIm1ldGhvZCIsIndyYXBwZXIiLCJjbG9uZSIsImlzQXJyYXkiLCJpc051bWJlciIsImlzT2JqZWN0IiwiaXNTdHJpbmciLCJfdmFsdWUiLCJrZXkxIiwiX2NhY2hlIiwiX211dGF0ZSIsImluZGV4IiwicHJldiIsIm5leHQiLCJwcm9wcyIsIlN0cmluZyIsInNwbGl0Iiwic2hpZnQiLCJpcyIsImRlZXAiLCJvcHRpb25zIiwic3JjIiwiY29weSIsImNvcHlfaXNfYXJyYXkiLCJoYXNoIiwiYXJyYXkiLCJ2ZXJzaW9uIiwib2JqUHJvdG8iLCJvd25zIiwidG9TdHIiLCJzeW1ib2xWYWx1ZU9mIiwiU3ltYm9sIiwidmFsdWVPZiIsImlzQWN0dWFsTmFOIiwiTk9OX0hPU1RfVFlQRVMiLCJudW1iZXIiLCJiYXNlNjRSZWdleCIsImhleFJlZ2V4IiwidHlwZSIsImRlZmluZWQiLCJlbXB0eSIsImVxdWFsIiwib3RoZXIiLCJnZXRUaW1lIiwiaG9zdGVkIiwiaG9zdCIsImluc3RhbmNlIiwibmlsIiwidW5kZWYiLCJhcmdzIiwiaXNTdGFuZGFyZEFyZ3VtZW50cyIsImlzT2xkQXJndW1lbnRzIiwiYXJyYXlsaWtlIiwib2JqZWN0IiwiY2FsbGVlIiwiYm9vbCIsImlzRmluaXRlIiwiQm9vbGVhbiIsIk51bWJlciIsImRhdGUiLCJlbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJub2RlVHlwZSIsImlzQWxlcnQiLCJpbmZpbml0ZSIsIkluZmluaXR5IiwiZGVjaW1hbCIsImRpdmlzaWJsZUJ5IiwiaXNEaXZpZGVuZEluZmluaXRlIiwiaXNEaXZpc29ySW5maW5pdGUiLCJpc05vblplcm9OdW1iZXIiLCJpbnRlZ2VyIiwibWF4aW11bSIsIm90aGVycyIsIm1pbmltdW0iLCJuYW4iLCJldmVuIiwib2RkIiwiZ2UiLCJndCIsImxlIiwibHQiLCJ3aXRoaW4iLCJmaW5pc2giLCJpc0FueUluZmluaXRlIiwic2V0SW50ZXJ2YWwiLCJyZWdleHAiLCJiYXNlNjQiLCJ0ZXN0IiwiaGV4Iiwic3ltYm9sIiwic3RyIiwidHlwZU9mIiwibnVtIiwiaXNCdWZmZXIiLCJraW5kT2YiLCJGdW5jdGlvbiIsIlJlZ0V4cCIsIkRhdGUiLCJCdWZmZXIiLCJfaXNCdWZmZXIiLCJ4Iiwic3RyVmFsdWUiLCJ0cnlTdHJpbmdPYmplY3QiLCJzdHJDbGFzcyIsImhhc1RvU3RyaW5nVGFnIiwidG9TdHJpbmdUYWciLCJwcm9taXNlUmVzdWx0cyIsInByb21pc2VSZXN1bHQiLCJjYXRjaCIsInJldHVybnMiLCJiaW5kIiwidGhyb3dzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JIdG1sIiwiZ2V0VmFsdWUiLCJldmVudCIsImNoYW5nZSIsImNsZWFyRXJyb3IiLCJtZXNzYWdlIiwiY2hhbmdlZCIsIiQiLCJFdmVudHMiLCJzY3JvbGxpbmciLCJsb29rdXAiLCJ0cmltIiwiRE9NRXhjZXB0aW9uIiwiYW5pbWF0ZSIsInNjcm9sbFRvcCIsIm9mZnNldCIsInRvcCIsImhlaWdodCIsImNvbXBsZXRlIiwiZHVyYXRpb24iLCJDaGFuZ2VGYWlsZWQiLCJDaGFuZ2UiLCJDaGFuZ2VTdWNjZXNzIiwiRmlsdGVyQ2hhbmdlIiwiZmFjdG9yeSIsInciLCJub0dsb2JhbCIsImFyciIsInNsaWNlIiwiY29uY2F0IiwiaW5kZXhPZiIsImNsYXNzMnR5cGUiLCJoYXNPd24iLCJzdXBwb3J0IiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0IiwicnRyaW0iLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImxldHRlciIsInRvVXBwZXJDYXNlIiwianF1ZXJ5IiwidG9BcnJheSIsInB1c2hTdGFjayIsImVsZW1zIiwicmV0IiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNvcnQiLCJjb3B5SXNBcnJheSIsImlzUGxhaW5PYmplY3QiLCJleHBhbmRvIiwiTWF0aCIsInJhbmRvbSIsInJlcGxhY2UiLCJpc1JlYWR5IiwibXNnIiwibm9vcCIsImlzV2luZG93IiwiaXNOdW1lcmljIiwicmVhbFN0cmluZ09iaiIsInBhcnNlRmxvYXQiLCJpc0VtcHR5T2JqZWN0IiwiZ2xvYmFsRXZhbCIsImNvZGUiLCJzY3JpcHQiLCJpbmRpcmVjdCIsImV2YWwiLCJ0ZXh0IiwiaGVhZCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImNhbWVsQ2FzZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0FycmF5TGlrZSIsIm1ha2VBcnJheSIsImluQXJyYXkiLCJzZWNvbmQiLCJncmVwIiwiaW52ZXJ0IiwiY2FsbGJhY2tJbnZlcnNlIiwibWF0Y2hlcyIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsInByb3h5IiwidG1wIiwibm93IiwiaXRlcmF0b3IiLCJTaXp6bGUiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJjb21waWxlIiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxpY2F0ZSIsInNldERvY3VtZW50IiwiZG9jRWxlbSIsImRvY3VtZW50SXNIVE1MIiwicmJ1Z2d5UVNBIiwicmJ1Z2d5TWF0Y2hlcyIsImNvbnRhaW5zIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImRvbmUiLCJjbGFzc0NhY2hlIiwiY3JlYXRlQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNvcnRPcmRlciIsImIiLCJNQVhfTkVHQVRJVkUiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwicHNldWRvcyIsInJ3aGl0ZXNwYWNlIiwicmNvbW1hIiwicmNvbWJpbmF0b3JzIiwicmF0dHJpYnV0ZVF1b3RlcyIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1hdGNoRXhwciIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJlc2NhcGUiLCJydW5lc2NhcGUiLCJmdW5lc2NhcGUiLCJfIiwiZXNjYXBlZCIsImVzY2FwZWRXaGl0ZXNwYWNlIiwiaGlnaCIsImZyb21DaGFyQ29kZSIsInVubG9hZEhhbmRsZXIiLCJjaGlsZE5vZGVzIiwiZWxzIiwic2VlZCIsIm5pZCIsIm5pZHNlbGVjdCIsIm1hdGNoIiwiZ3JvdXBzIiwibmV3U2VsZWN0b3IiLCJuZXdDb250ZXh0Iiwib3duZXJEb2N1bWVudCIsImV4ZWMiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicXNhIiwiZ2V0QXR0cmlidXRlIiwidG9TZWxlY3RvciIsImpvaW4iLCJ0ZXN0Q29udGV4dCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJxc2FFcnJvciIsInJlbW92ZUF0dHJpYnV0ZSIsImtleXMiLCJjYWNoZSIsImNhY2hlTGVuZ3RoIiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZGl2IiwiYWRkSGFuZGxlIiwiYXR0ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsImRpZmYiLCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJkb2N1bWVudEVsZW1lbnQiLCJub2RlIiwiaGFzQ29tcGFyZSIsImRvYyIsImRlZmF1bHRWaWV3IiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY2xhc3NOYW1lIiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImZpbmQiLCJmaWx0ZXIiLCJhdHRySWQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwiaW5uZXJIVE1MIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInNwZWNpZmllZCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsImRpciIsInByZUZpbHRlciIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJ4bWwiLCJ1bmlxdWVDYWNoZSIsIm91dGVyQ2FjaGUiLCJub2RlSW5kZXgiLCJ1c2VDYWNoZSIsImxhc3RDaGlsZCIsInVuaXF1ZUlEIiwicHNldWRvIiwic2V0RmlsdGVycyIsImlkeCIsIm1hdGNoZWQiLCJtYXRjaGVyIiwidW5tYXRjaGVkIiwiaW5uZXJUZXh0IiwibGFuZyIsImVsZW1MYW5nIiwibG9jYXRpb24iLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJkaXNhYmxlZCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJyZXNldCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJhZGRDb21iaW5hdG9yIiwiY29tYmluYXRvciIsImJhc2UiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250ZXh0cyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwidG9rZW4iLCJjb21waWxlZCIsImRpdjEiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsInVudGlsIiwidHJ1bmNhdGUiLCJzaWJsaW5ncyIsInJuZWVkc0NvbnRleHQiLCJuZWVkc0NvbnRleHQiLCJyc2luZ2xlVGFnIiwicmlzU2ltcGxlIiwid2lubm93IiwicXVhbGlmaWVyIiwibm90Iiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJoYXMiLCJ0YXJnZXRzIiwiY2xvc2VzdCIsInBvcyIsInByZXZBbGwiLCJhZGQiLCJhZGRCYWNrIiwic2libGluZyIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwiLCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwicmV2ZXJzZSIsInJub3R3aGl0ZSIsImNyZWF0ZU9wdGlvbnMiLCJmbGFnIiwiQ2FsbGJhY2tzIiwiZmlyaW5nIiwibWVtb3J5IiwiZmlyZWQiLCJsb2NrZWQiLCJxdWV1ZSIsImZpcmluZ0luZGV4IiwiZmlyZSIsIm9uY2UiLCJzdG9wT25GYWxzZSIsInJlbW92ZSIsImRpc2FibGUiLCJsb2NrIiwiZmlyZVdpdGgiLCJEZWZlcnJlZCIsImZ1bmMiLCJ0dXBsZXMiLCJhbHdheXMiLCJkZWZlcnJlZCIsImZhaWwiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsInBpcGUiLCJzdGF0ZVN0cmluZyIsIndoZW4iLCJzdWJvcmRpbmF0ZSIsInJlc29sdmVWYWx1ZXMiLCJyZW1haW5pbmciLCJ1cGRhdGVGdW5jIiwidmFsdWVzIiwicHJvZ3Jlc3NWYWx1ZXMiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9ncmVzc0NvbnRleHRzIiwicmVzb2x2ZUNvbnRleHRzIiwicmVhZHlMaXN0IiwicmVhZHlXYWl0IiwiaG9sZFJlYWR5IiwiaG9sZCIsIndhaXQiLCJ0cmlnZ2VySGFuZGxlciIsIm9mZiIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZWFkeVN0YXRlIiwiZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJhY2NlcHREYXRhIiwib3duZXIiLCJEYXRhIiwidWlkIiwiaW5pdGlhbCIsImRlZmluZVByb3BlcnR5Iiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJzdG9yZWQiLCJjYW1lbCIsImhhc0RhdGEiLCJkYXRhUHJpdiIsImRhdGFVc2VyIiwicmJyYWNlIiwicm11bHRpRGFzaCIsImRhdGFBdHRyIiwicGFyc2VKU09OIiwicmVtb3ZlRGF0YSIsIl9kYXRhIiwiX3JlbW92ZURhdGEiLCJjYW1lbEtleSIsImRlcXVldWUiLCJzdGFydExlbmd0aCIsImhvb2tzIiwiX3F1ZXVlSG9va3MiLCJzdG9wIiwic2V0dGVyIiwiY2xlYXJRdWV1ZSIsImNvdW50IiwiZGVmZXIiLCJwbnVtIiwicmNzc051bSIsImNzc0V4cGFuZCIsImlzSGlkZGVuIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVuIiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJ1bml0IiwiY3NzTnVtYmVyIiwiaW5pdGlhbEluVW5pdCIsInN0eWxlIiwicmNoZWNrYWJsZVR5cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwiY29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0Iiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGgiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3JlZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImNyZWF0ZVRleHROb2RlIiwiaHRtbFByZWZpbHRlciIsImNoZWNrQ2xvbmUiLCJjbG9uZU5vZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1lc3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsInR5cGVzIiwib25lIiwib3JpZ0ZuIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImhhbmRsZU9iaiIsInNwZWNpYWwiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIsImVsZW1EYXRhIiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlwZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5cGVzIiwib3JpZ0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsImZpeCIsImhhbmRsZXJRdWV1ZSIsImRlbGVnYXRlVGFyZ2V0IiwicHJlRGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsInNlbCIsImlzTmFOIiwiYnV0dG9uIiwiZml4SG9va3MiLCJrZXlIb29rcyIsIm9yaWdpbmFsIiwid2hpY2giLCJjaGFyQ29kZSIsImtleUNvZGUiLCJtb3VzZUhvb2tzIiwiZXZlbnREb2MiLCJib2R5IiwicGFnZVgiLCJjbGllbnRYIiwic2Nyb2xsTGVmdCIsImNsaWVudExlZnQiLCJwYWdlWSIsImNsaWVudFkiLCJjbGllbnRUb3AiLCJvcmlnaW5hbEV2ZW50IiwiZml4SG9vayIsIkV2ZW50IiwibG9hZCIsIm5vQnViYmxlIiwiZm9jdXMiLCJibHVyIiwiY2xpY2siLCJiZWZvcmV1bmxvYWQiLCJyZXR1cm5WYWx1ZSIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJ0aW1lU3RhbXAiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicmVsYXRlZFRhcmdldCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJjaGVja2VkIiwicnNjcmlwdFR5cGVNYXNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJjb250ZW50IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1ciIsImZpeElucHV0IiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwiX2V2YWxVcmwiLCJrZWVwRGF0YSIsImNsZWFuRGF0YSIsImRhdGFBbmRFdmVudHMiLCJkZWVwRGF0YUFuZEV2ZW50cyIsInNyY0VsZW1lbnRzIiwiZGVzdEVsZW1lbnRzIiwiaW5QYWdlIiwiZGV0YWNoIiwiYXBwZW5kIiwicHJlcGVuZCIsImluc2VydEJlZm9yZSIsImJlZm9yZSIsImFmdGVyIiwicmVwbGFjZVdpdGgiLCJyZXBsYWNlQ2hpbGQiLCJhcHBlbmRUbyIsInByZXBlbmRUbyIsImluc2VydEFmdGVyIiwicmVwbGFjZUFsbCIsImluc2VydCIsImlmcmFtZSIsImVsZW1kaXNwbGF5IiwiSFRNTCIsIkJPRFkiLCJhY3R1YWxEaXNwbGF5IiwiZGlzcGxheSIsImRlZmF1bHREaXNwbGF5Iiwid3JpdGUiLCJjbG9zZSIsInJtYXJnaW4iLCJybnVtbm9ucHgiLCJnZXRTdHlsZXMiLCJ2aWV3Iiwib3BlbmVyIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInN3YXAiLCJvbGQiLCJwaXhlbFBvc2l0aW9uVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJwaXhlbE1hcmdpblJpZ2h0VmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwiY29udGFpbmVyIiwiYmFja2dyb3VuZENsaXAiLCJjbGVhckNsb25lU3R5bGUiLCJjc3NUZXh0IiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJkaXZTdHlsZSIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsIm1hcmdpblJpZ2h0IiwicGl4ZWxQb3NpdGlvbiIsImJveFNpemluZ1JlbGlhYmxlIiwicGl4ZWxNYXJnaW5SaWdodCIsInJlbGlhYmxlTWFyZ2luTGVmdCIsInJlbGlhYmxlTWFyZ2luUmlnaHQiLCJtYXJnaW5EaXYiLCJjdXJDU1MiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJyZGlzcGxheXN3YXAiLCJjc3NTaG93IiwicG9zaXRpb24iLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJ2ZW5kb3JQcm9wTmFtZSIsImNhcE5hbWUiLCJzZXRQb3NpdGl2ZU51bWJlciIsInN1YnRyYWN0IiwibWF4IiwiYXVnbWVudFdpZHRoT3JIZWlnaHQiLCJleHRyYSIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsIm1zRnVsbHNjcmVlbkVsZW1lbnQiLCJnZXRDbGllbnRSZWN0cyIsInJvdW5kIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZGVuIiwiY3NzSG9va3MiLCJvcGFjaXR5IiwiY3NzUHJvcHMiLCJvcmlnTmFtZSIsImxlZnQiLCJtYXJnaW4iLCJwYWRkaW5nIiwiYm9yZGVyIiwicHJlZml4Iiwic3VmZml4IiwiZXhwYW5kIiwiZXhwYW5kZWQiLCJwYXJ0cyIsImhpZGUiLCJ0b2dnbGUiLCJUd2VlbiIsImVhc2luZyIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsInN0ZXAiLCJmeCIsImxpbmVhciIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsInRpbWVySWQiLCJyZnh0eXBlcyIsInJydW4iLCJjcmVhdGVGeE5vdyIsImdlbkZ4IiwiaW5jbHVkZVdpZHRoIiwiY3JlYXRlVHdlZW4iLCJhbmltYXRpb24iLCJBbmltYXRpb24iLCJ0d2VlbmVycyIsImRlZmF1bHRQcmVmaWx0ZXIiLCJvbGRmaXJlIiwiY2hlY2tEaXNwbGF5IiwiYW5pbSIsImRhdGFTaG93IiwidW5xdWV1ZWQiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByb3BGaWx0ZXIiLCJzcGVjaWFsRWFzaW5nIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwidGljayIsImN1cnJlbnRUaW1lIiwic3RhcnRUaW1lIiwidHdlZW5zIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInJlamVjdFdpdGgiLCJ0aW1lciIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsImludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJ0aW1lIiwiY2xlYXJUaW1lb3V0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwib3B0RGlzYWJsZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJwcm9wTmFtZSIsImF0dHJOYW1lcyIsInByb3BGaXgiLCJnZXR0ZXIiLCJyZm9jdXNhYmxlIiwicmNsaWNrYWJsZSIsInJlbW92ZVByb3AiLCJ0YWJpbmRleCIsInBhcnNlSW50IiwicmNsYXNzIiwiZ2V0Q2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJyc3BhY2VzIiwidmFsSG9va3MiLCJvcHRpb25TZXQiLCJyZm9jdXNNb3JwaCIsIm9ubHlIYW5kbGVycyIsImJ1YmJsZVR5cGUiLCJvbnR5cGUiLCJldmVudFBhdGgiLCJpc1RyaWdnZXIiLCJwYXJlbnRXaW5kb3ciLCJzaW11bGF0ZSIsImlzU2ltdWxhdGVkIiwiaG92ZXIiLCJmbk92ZXIiLCJmbk91dCIsImZvY3VzaW4iLCJhdHRhY2hlcyIsIm5vbmNlIiwicnF1ZXJ5IiwiSlNPTiIsInBhcnNlIiwicGFyc2VYTUwiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJyaGFzaCIsInJ0cyIsInJoZWFkZXJzIiwicmxvY2FsUHJvdG9jb2wiLCJybm9Db250ZW50IiwicnByb3RvY29sIiwidHJhbnNwb3J0cyIsImFsbFR5cGVzIiwib3JpZ2luQW5jaG9yIiwiYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwic3RydWN0dXJlIiwiZGF0YVR5cGVFeHByZXNzaW9uIiwiZGF0YVR5cGUiLCJkYXRhVHlwZXMiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdGVkIiwic2Vla2luZ1RyYW5zcG9ydCIsImluc3BlY3QiLCJwcmVmaWx0ZXJPckZhY3RvcnkiLCJkYXRhVHlwZU9yVHJhbnNwb3J0IiwiYWpheEV4dGVuZCIsImZsYXRPcHRpb25zIiwiYWpheFNldHRpbmdzIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsInJlc3BvbnNlcyIsImN0IiwiZmluYWxEYXRhVHlwZSIsImZpcnN0RGF0YVR5cGUiLCJtaW1lVHlwZSIsImdldFJlc3BvbnNlSGVhZGVyIiwiY29udmVydGVycyIsImFqYXhDb252ZXJ0IiwicmVzcG9uc2UiLCJpc1N1Y2Nlc3MiLCJjb252MiIsImN1cnJlbnQiLCJjb252IiwicmVzcG9uc2VGaWVsZHMiLCJkYXRhRmlsdGVyIiwiYWN0aXZlIiwibGFzdE1vZGlmaWVkIiwiZXRhZyIsInVybCIsImlzTG9jYWwiLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJjb250ZW50VHlwZSIsImFjY2VwdHMiLCJqc29uIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsImFqYXgiLCJ0cmFuc3BvcnQiLCJjYWNoZVVSTCIsInJlc3BvbnNlSGVhZGVyc1N0cmluZyIsInJlc3BvbnNlSGVhZGVycyIsInRpbWVvdXRUaW1lciIsInVybEFuY2hvciIsImZpcmVHbG9iYWxzIiwiY2FsbGJhY2tDb250ZXh0IiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInN0YXR1c0NvZGUiLCJyZXF1ZXN0SGVhZGVycyIsInJlcXVlc3RIZWFkZXJzTmFtZXMiLCJzdHJBYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJsbmFtZSIsIm92ZXJyaWRlTWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJzdWNjZXNzIiwiY3Jvc3NEb21haW4iLCJwYXJhbSIsInRyYWRpdGlvbmFsIiwiaGFzQ29udGVudCIsImlmTW9kaWZpZWQiLCJoZWFkZXJzIiwiYmVmb3JlU2VuZCIsInNlbmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwibW9kaWZpZWQiLCJnZXRKU09OIiwiZ2V0U2NyaXB0Iiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwidW53cmFwIiwidmlzaWJsZSIsInIyMCIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZSIsInNlcmlhbGl6ZUFycmF5IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsImVycm9yQ2FsbGJhY2siLCJvcGVuIiwidXNlcm5hbWUiLCJ4aHJGaWVsZHMiLCJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsImJpbmFyeSIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwiX2xvYWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsImdldFdpbmRvdyIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1c2luZyIsIndpbiIsImJveCIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJ1bmJpbmQiLCJkZWxlZ2F0ZSIsInVuZGVsZWdhdGUiLCJzaXplIiwiYW5kU2VsZiIsImRlZmluZSIsImFtZCIsIl9qUXVlcnkiLCJfJCIsIm5vQ29uZmxpY3QiLCJyZWFsdGltZSIsImtleXVwIiwicGxhY2Vob2xkZXIiLCJsYWJlbCIsImZvcm1FbGVtZW50IiwiaGlkZVBsYWNlaG9sZGVyT25Gb2N1cyIsInVuZm9jdXNPbkFuRWxlbWVudCIsInNyY0VsZW1lbnQiLCJfcGxhY2Vob2xkZXJlZCIsIm1vbWVudCIsImZvcm1hdCIsImhvb2tDYWxsYmFjayIsInV0aWxzX2hvb2tzX19ob29rcyIsInNldEhvb2tDYWxsYmFjayIsImlzRGF0ZSIsInJlcyIsImhhc093blByb3AiLCJjcmVhdGVfdXRjX19jcmVhdGVVVEMiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZGVmYXVsdFBhcnNpbmdGbGFncyIsInVudXNlZFRva2VucyIsInVudXNlZElucHV0IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJnZXRQYXJzaW5nRmxhZ3MiLCJfcGYiLCJ2YWxpZF9faXNWYWxpZCIsIl9pc1ZhbGlkIiwiZmxhZ3MiLCJfZCIsImludmFsaWRXZWVrZGF5IiwiX3N0cmljdCIsImJpZ0hvdXIiLCJ2YWxpZF9fY3JlYXRlSW52YWxpZCIsIk5hTiIsImlzVW5kZWZpbmVkIiwibW9tZW50UHJvcGVydGllcyIsImNvcHlDb25maWciLCJfaXNBTW9tZW50T2JqZWN0IiwiX2kiLCJfZiIsIl9sIiwiX3R6bSIsIl9pc1VUQyIsIl9vZmZzZXQiLCJfbG9jYWxlIiwidXBkYXRlSW5Qcm9ncmVzcyIsIk1vbWVudCIsInVwZGF0ZU9mZnNldCIsImlzTW9tZW50IiwiYWJzRmxvb3IiLCJjZWlsIiwiZmxvb3IiLCJ0b0ludCIsImFyZ3VtZW50Rm9yQ29lcmNpb24iLCJjb2VyY2VkTnVtYmVyIiwiY29tcGFyZUFycmF5cyIsImFycmF5MSIsImFycmF5MiIsImRvbnRDb252ZXJ0IiwibWluIiwibGVuZ3RoRGlmZiIsImFicyIsImRpZmZzIiwid2FybiIsInN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0ZSIsImZpcnN0VGltZSIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsImxvY2FsZV9zZXRfX3NldCIsIl9jb25maWciLCJfb3JkaW5hbFBhcnNlTGVuaWVudCIsIl9vcmRpbmFsUGFyc2UiLCJtZXJnZUNvbmZpZ3MiLCJwYXJlbnRDb25maWciLCJjaGlsZENvbmZpZyIsIkxvY2FsZSIsImxvY2FsZXMiLCJnbG9iYWxMb2NhbGUiLCJub3JtYWxpemVMb2NhbGUiLCJjaG9vc2VMb2NhbGUiLCJuYW1lcyIsImxvYWRMb2NhbGUiLCJvbGRMb2NhbGUiLCJfYWJiciIsImxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUiLCJsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlIiwiZGVmaW5lTG9jYWxlIiwiYWJiciIsInBhcmVudExvY2FsZSIsInVwZGF0ZUxvY2FsZSIsImxvY2FsZV9sb2NhbGVzX19saXN0TG9jYWxlcyIsImFsaWFzZXMiLCJhZGRVbml0QWxpYXMiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJub3JtYWxpemVVbml0cyIsInVuaXRzIiwibm9ybWFsaXplT2JqZWN0VW5pdHMiLCJpbnB1dE9iamVjdCIsIm5vcm1hbGl6ZWRJbnB1dCIsIm5vcm1hbGl6ZWRQcm9wIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwiZ2V0X3NldF9fc2V0IiwiZ2V0X3NldF9fZ2V0IiwibW9tIiwiaXNWYWxpZCIsImdldFNldCIsInplcm9GaWxsIiwidGFyZ2V0TGVuZ3RoIiwiZm9yY2VTaWduIiwiYWJzTnVtYmVyIiwiemVyb3NUb0ZpbGwiLCJzaWduIiwicG93Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJwYWRkZWQiLCJvcmRpbmFsIiwibG9jYWxlRGF0YSIsInJlbW92ZUZvcm1hdHRpbmdUb2tlbnMiLCJtYWtlRm9ybWF0RnVuY3Rpb24iLCJvdXRwdXQiLCJmb3JtYXRNb21lbnQiLCJpbnZhbGlkRGF0ZSIsImV4cGFuZEZvcm1hdCIsInJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyIsImxvbmdEYXRlRm9ybWF0IiwibGFzdEluZGV4IiwibWF0Y2gxIiwibWF0Y2gyIiwibWF0Y2gzIiwibWF0Y2g0IiwibWF0Y2g2IiwibWF0Y2gxdG8yIiwibWF0Y2gzdG80IiwibWF0Y2g1dG82IiwibWF0Y2gxdG8zIiwibWF0Y2gxdG80IiwibWF0Y2gxdG82IiwibWF0Y2hVbnNpZ25lZCIsIm1hdGNoU2lnbmVkIiwibWF0Y2hPZmZzZXQiLCJtYXRjaFNob3J0T2Zmc2V0IiwibWF0Y2hUaW1lc3RhbXAiLCJtYXRjaFdvcmQiLCJyZWdleGVzIiwiYWRkUmVnZXhUb2tlbiIsInJlZ2V4Iiwic3RyaWN0UmVnZXgiLCJpc1N0cmljdCIsImdldFBhcnNlUmVnZXhGb3JUb2tlbiIsInVuZXNjYXBlRm9ybWF0IiwicmVnZXhFc2NhcGUiLCJwMSIsInAyIiwicDMiLCJwNCIsImFkZFBhcnNlVG9rZW4iLCJhZGRXZWVrUGFyc2VUb2tlbiIsIl93IiwiYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4iLCJfYSIsIllFQVIiLCJNT05USCIsIkRBVEUiLCJIT1VSIiwiTUlOVVRFIiwiU0VDT05EIiwiTUlMTElTRUNPTkQiLCJXRUVLIiwiV0VFS0RBWSIsImRheXNJbk1vbnRoIiwieWVhciIsIm1vbnRoIiwiVVRDIiwiZ2V0VVRDRGF0ZSIsIm1vbnRoc1Nob3J0IiwibW9udGhzIiwibW9udGhzU2hvcnRSZWdleCIsIm1vbnRoc1JlZ2V4IiwibW9udGhzUGFyc2UiLCJNT05USFNfSU5fRk9STUFUIiwiZGVmYXVsdExvY2FsZU1vbnRocyIsImxvY2FsZU1vbnRocyIsIl9tb250aHMiLCJkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQiLCJsb2NhbGVNb250aHNTaG9ydCIsIl9tb250aHNTaG9ydCIsImxvY2FsZU1vbnRoc1BhcnNlIiwibW9udGhOYW1lIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwic2V0TW9udGgiLCJkYXlPZk1vbnRoIiwiZ2V0U2V0TW9udGgiLCJnZXREYXlzSW5Nb250aCIsImRlZmF1bHRNb250aHNTaG9ydFJlZ2V4IiwiX21vbnRoc1BhcnNlRXhhY3QiLCJjb21wdXRlTW9udGhzUGFyc2UiLCJfbW9udGhzU2hvcnRTdHJpY3RSZWdleCIsIl9tb250aHNTaG9ydFJlZ2V4IiwiZGVmYXVsdE1vbnRoc1JlZ2V4IiwiX21vbnRoc1N0cmljdFJlZ2V4IiwiX21vbnRoc1JlZ2V4IiwiY21wTGVuUmV2Iiwic2hvcnRQaWVjZXMiLCJsb25nUGllY2VzIiwibWl4ZWRQaWVjZXMiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZXh0ZW5kZWRJc29SZWdleCIsImJhc2ljSXNvUmVnZXgiLCJ0elJlZ2V4IiwiaXNvRGF0ZXMiLCJpc29UaW1lcyIsImFzcE5ldEpzb25SZWdleCIsImNvbmZpZ0Zyb21JU08iLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0IiwiY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCIsImNvbmZpZ0Zyb21TdHJpbmciLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsIl91c2VVVEMiLCJjcmVhdGVEYXRlIiwiZCIsImgiLCJNIiwibXMiLCJnZXRGdWxsWWVhciIsInNldEZ1bGxZZWFyIiwiY3JlYXRlVVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJwYXJzZVR3b0RpZ2l0WWVhciIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0U2V0WWVhciIsImdldElzTGVhcFllYXIiLCJmaXJzdFdlZWtPZmZzZXQiLCJkb3ciLCJkb3kiLCJmd2QiLCJmd2RsdyIsImdldFVUQ0RheSIsImRheU9mWWVhckZyb21XZWVrcyIsIndlZWsiLCJ3ZWVrZGF5IiwibG9jYWxXZWVrZGF5Iiwid2Vla09mZnNldCIsImRheU9mWWVhciIsInJlc1llYXIiLCJyZXNEYXlPZlllYXIiLCJ3ZWVrT2ZZZWFyIiwicmVzV2VlayIsIndlZWtzSW5ZZWFyIiwid2Vla09mZnNldE5leHQiLCJkZWZhdWx0cyIsImN1cnJlbnREYXRlQXJyYXkiLCJub3dWYWx1ZSIsImdldFVUQ01vbnRoIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJ5ZWFyVG9Vc2UiLCJkYXlPZlllYXJGcm9tV2Vla0luZm8iLCJfZGF5T2ZZZWFyIiwiX25leHREYXkiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIndlZWtZZWFyIiwid2Vla2RheU92ZXJmbG93IiwiR0ciLCJXIiwiRSIsImxvY2FsX19jcmVhdGVMb2NhbCIsIl93ZWVrIiwiZ2ciLCJJU09fODYwMSIsInBhcnNlZElucHV0Iiwic2tpcHBlZCIsInN0cmluZ0xlbmd0aCIsInRvdGFsUGFyc2VkSW5wdXRMZW5ndGgiLCJtZXJpZGllbUZpeFdyYXAiLCJfbWVyaWRpZW0iLCJob3VyIiwibWVyaWRpZW0iLCJpc1BtIiwibWVyaWRpZW1Ib3VyIiwiaXNQTSIsImNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheSIsInRlbXBDb25maWciLCJiZXN0TW9tZW50Iiwic2NvcmVUb0JlYXQiLCJjdXJyZW50U2NvcmUiLCJzY29yZSIsImNvbmZpZ0Zyb21PYmplY3QiLCJkYXkiLCJtaW51dGUiLCJtaWxsaXNlY29uZCIsImNyZWF0ZUZyb21Db25maWciLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsInByb3RvdHlwZU1pbiIsInByb3RvdHlwZU1heCIsInBpY2tCeSIsIm1vbWVudHMiLCJEdXJhdGlvbiIsInllYXJzIiwicXVhcnRlcnMiLCJxdWFydGVyIiwid2Vla3MiLCJkYXlzIiwiaG91cnMiLCJtaW51dGVzIiwic2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwic2VwYXJhdG9yIiwidXRjT2Zmc2V0Iiwib2Zmc2V0RnJvbVN0cmluZyIsImNodW5rT2Zmc2V0IiwiY2h1bmsiLCJjbG9uZVdpdGhPZmZzZXQiLCJtb2RlbCIsInNldFRpbWUiLCJsb2NhbCIsImdldERhdGVPZmZzZXQiLCJnZXRUaW1lem9uZU9mZnNldCIsImdldFNldE9mZnNldCIsImtlZXBMb2NhbFRpbWUiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwiYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCIsImNyZWF0ZV9fY3JlYXRlRHVyYXRpb24iLCJnZXRTZXRab25lIiwic2V0T2Zmc2V0VG9VVEMiLCJzZXRPZmZzZXRUb0xvY2FsIiwic2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRGF5bGlnaHRTYXZpbmdUaW1lIiwiaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkIiwiX2lzRFNUU2hpZnRlZCIsImlzVXRjT2Zmc2V0IiwiaXNVdGMiLCJhc3BOZXRSZWdleCIsImlzb1JlZ2V4IiwiZGlmZlJlcyIsInBhcnNlSXNvIiwibW9tZW50c0RpZmZlcmVuY2UiLCJpbnAiLCJwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlIiwiaXNBZnRlciIsImlzQmVmb3JlIiwiYWJzUm91bmQiLCJjcmVhdGVBZGRlciIsImRpcmVjdGlvbiIsInBlcmlvZCIsImR1ciIsImlzQWRkaW5nIiwiYWRkX3N1YnRyYWN0X19hZGQiLCJhZGRfc3VidHJhY3RfX3N1YnRyYWN0IiwibW9tZW50X2NhbGVuZGFyX19jYWxlbmRhciIsImZvcm1hdHMiLCJzb2QiLCJzdGFydE9mIiwiY2FsZW5kYXIiLCJsb2NhbElucHV0IiwiZW5kT2YiLCJpc0JldHdlZW4iLCJpc1NhbWUiLCJpbnB1dE1zIiwiaXNTYW1lT3JBZnRlciIsImlzU2FtZU9yQmVmb3JlIiwiYXNGbG9hdCIsInRoYXQiLCJ6b25lRGVsdGEiLCJkZWx0YSIsIm1vbnRoRGlmZiIsIndob2xlTW9udGhEaWZmIiwiYW5jaG9yIiwiYW5jaG9yMiIsImFkanVzdCIsImRlZmF1bHRGb3JtYXQiLCJtb21lbnRfZm9ybWF0X190b0lTT1N0cmluZyIsInRvSVNPU3RyaW5nIiwidG9EYXRlIiwiaW5wdXRTdHJpbmciLCJwb3N0Zm9ybWF0Iiwid2l0aG91dFN1ZmZpeCIsImh1bWFuaXplIiwiZnJvbU5vdyIsInRvTm93IiwibmV3TG9jYWxlRGF0YSIsImlzb1dlZWtkYXkiLCJ0b190eXBlX192YWx1ZU9mIiwidW5peCIsInRvSlNPTiIsIm1vbWVudF92YWxpZF9faXNWYWxpZCIsInBhcnNpbmdGbGFncyIsImludmFsaWRBdCIsImNyZWF0aW9uRGF0YSIsImlzb1dlZWtZZWFyIiwiYWRkV2Vla1llYXJGb3JtYXRUb2tlbiIsImdldFNldFdlZWtZZWFyIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJnZXRTZXRJU09XZWVrWWVhciIsImlzb1dlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsImdldFdlZWtzSW5ZZWFyIiwid2Vla0luZm8iLCJ3ZWVrc1RhcmdldCIsInNldFdlZWtBbGwiLCJkYXlPZlllYXJEYXRhIiwiZ2V0U2V0UXVhcnRlciIsImxvY2FsZVdlZWsiLCJkZWZhdWx0TG9jYWxlV2VlayIsImxvY2FsZUZpcnN0RGF5T2ZXZWVrIiwibG9jYWxlRmlyc3REYXlPZlllYXIiLCJnZXRTZXRXZWVrIiwiZ2V0U2V0SVNPV2VlayIsImdldFNldERheU9mTW9udGgiLCJ3ZWVrZGF5c01pbiIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzUGFyc2UiLCJwYXJzZVdlZWtkYXkiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXMiLCJsb2NhbGVXZWVrZGF5cyIsIl93ZWVrZGF5cyIsImlzRm9ybWF0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJsb2NhbGVXZWVrZGF5c1Nob3J0IiwiX3dlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJsb2NhbGVXZWVrZGF5c01pbiIsIl93ZWVrZGF5c01pbiIsImxvY2FsZVdlZWtkYXlzUGFyc2UiLCJ3ZWVrZGF5TmFtZSIsIl93ZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX2Z1bGxXZWVrZGF5c1BhcnNlIiwiZ2V0U2V0RGF5T2ZXZWVrIiwiZ2V0RGF5IiwiZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrIiwiZ2V0U2V0SVNPRGF5T2ZXZWVrIiwiZ2V0U2V0RGF5T2ZZZWFyIiwiaEZvcm1hdCIsImxvd2VyY2FzZSIsIm1hdGNoTWVyaWRpZW0iLCJfbWVyaWRpZW1QYXJzZSIsIl9pc1BtIiwicG9zMSIsInBvczIiLCJsb2NhbGVJc1BNIiwiY2hhckF0IiwiZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UiLCJsb2NhbGVNZXJpZGllbSIsImlzTG93ZXIiLCJnZXRTZXRIb3VyIiwiZ2V0U2V0TWludXRlIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsImdldFNldE1pbGxpc2Vjb25kIiwiZ2V0Wm9uZUFiYnIiLCJnZXRab25lTmFtZSIsIm1vbWVudFByb3RvdHlwZV9fcHJvdG8iLCJpc29XZWVrcyIsImlzb1dlZWtzSW5ZZWFyIiwicGFyc2Vab25lIiwiaXNEU1QiLCJpc0RTVFNoaWZ0ZWQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJ6b25lIiwibW9tZW50UHJvdG90eXBlIiwibW9tZW50X19jcmVhdGVVbml4IiwibW9tZW50X19jcmVhdGVJblpvbmUiLCJkZWZhdWx0Q2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJsb2NhbGVfY2FsZW5kYXJfX2NhbGVuZGFyIiwiX2NhbGVuZGFyIiwiZGVmYXVsdExvbmdEYXRlRm9ybWF0IiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJkZWZhdWx0SW52YWxpZERhdGUiLCJfaW52YWxpZERhdGUiLCJkZWZhdWx0T3JkaW5hbCIsImRlZmF1bHRPcmRpbmFsUGFyc2UiLCJfb3JkaW5hbCIsInByZVBhcnNlUG9zdEZvcm1hdCIsImRlZmF1bHRSZWxhdGl2ZVRpbWUiLCJmdXR1cmUiLCJwYXN0IiwibW0iLCJoaCIsImRkIiwiTU0iLCJ5eSIsInJlbGF0aXZlX19yZWxhdGl2ZVRpbWUiLCJpc0Z1dHVyZSIsIl9yZWxhdGl2ZVRpbWUiLCJwYXN0RnV0dXJlIiwicHJvdG90eXBlX19wcm90byIsInJlbGF0aXZlVGltZSIsImZpcnN0RGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJsaXN0c19fZ2V0IiwiZmllbGQiLCJvdXQiLCJsaXN0c19fbGlzdE1vbnRocyIsImxpc3RzX19saXN0TW9udGhzU2hvcnQiLCJsaXN0c19fbGlzdFdlZWtkYXlzIiwibGlzdHNfX2xpc3RXZWVrZGF5c1Nob3J0IiwibGlzdHNfX2xpc3RXZWVrZGF5c01pbiIsIm9yZGluYWxQYXJzZSIsImxhbmdEYXRhIiwibWF0aEFicyIsImR1cmF0aW9uX2Fic19fYWJzIiwiZHVyYXRpb25fYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCIsImR1cmF0aW9uX2FkZF9zdWJ0cmFjdF9fYWRkIiwiZHVyYXRpb25fYWRkX3N1YnRyYWN0X19zdWJ0cmFjdCIsImFic0NlaWwiLCJidWJibGUiLCJtb250aHNGcm9tRGF5cyIsIm1vbnRoc1RvRGF5cyIsImRheXNUb01vbnRocyIsImFzIiwiZHVyYXRpb25fYXNfX3ZhbHVlT2YiLCJtYWtlQXMiLCJhbGlhcyIsImFzTWlsbGlzZWNvbmRzIiwiYXNTZWNvbmRzIiwiYXNNaW51dGVzIiwiYXNIb3VycyIsImFzRGF5cyIsImFzV2Vla3MiLCJhc01vbnRocyIsImFzWWVhcnMiLCJkdXJhdGlvbl9nZXRfX2dldCIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwic3Vic3RpdHV0ZVRpbWVBZ28iLCJkdXJhdGlvbl9odW1hbml6ZV9fcmVsYXRpdmVUaW1lIiwicG9zTmVnRHVyYXRpb24iLCJkdXJhdGlvbl9odW1hbml6ZV9fZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkIiwidGhyZXNob2xkIiwibGltaXQiLCJ3aXRoU3VmZml4IiwiaXNvX3N0cmluZ19fYWJzIiwiaXNvX3N0cmluZ19fdG9JU09TdHJpbmciLCJZIiwiRCIsInRvdGFsIiwiZHVyYXRpb25fcHJvdG90eXBlX19wcm90byIsInRvSXNvU3RyaW5nIiwiaW52YWxpZCIsInJlbGF0aXZlVGltZVRocmVzaG9sZCIsIl9tb21lbnQiLCJhZ28iLCJTZWxlY3RpemUiLCJTaWZ0ZXIiLCJNaWNyb1BsdWdpbiIsImhpZ2hsaWdodCIsIiRlbGVtZW50Iiwic2tpcCIsInNlYXJjaCIsInNwYW5ub2RlIiwibWlkZGxlYml0Iiwic3BsaXRUZXh0IiwiZW5kYml0IiwibWlkZGxlY2xvbmUiLCJ0YWdOYW1lIiwiTWljcm9FdmVudCIsImZjdCIsIl9ldmVudHMiLCJtaXhpbiIsImRlc3RPYmplY3QiLCJJU19NQUMiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJLRVlfQSIsIktFWV9DT01NQSIsIktFWV9SRVRVUk4iLCJLRVlfRVNDIiwiS0VZX0xFRlQiLCJLRVlfVVAiLCJLRVlfUCIsIktFWV9SSUdIVCIsIktFWV9ET1dOIiwiS0VZX04iLCJLRVlfQkFDS1NQQUNFIiwiS0VZX0RFTEVURSIsIktFWV9TSElGVCIsIktFWV9DTUQiLCJLRVlfQ1RSTCIsIktFWV9UQUIiLCJUQUdfU0VMRUNUIiwiVEFHX0lOUFVUIiwiU1VQUE9SVFNfVkFMSURJVFlfQVBJIiwidmFsaWRpdHkiLCJpc3NldCIsImhhc2hfa2V5IiwiZXNjYXBlX2h0bWwiLCJlc2NhcGVfcmVwbGFjZSIsImhvb2siLCJjYWxsZWQiLCJkZWJvdW5jZSIsImRlYm91bmNlX2V2ZW50cyIsImV2ZW50X2FyZ3MiLCJ3YXRjaENoaWxkRXZlbnQiLCIkcGFyZW50IiwiZ2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJjcmVhdGVSYW5nZSIsInNlbExlbiIsIm1vdmVTdGFydCIsInRyYW5zZmVyU3R5bGVzIiwiJGZyb20iLCIkdG8iLCJtZWFzdXJlU3RyaW5nIiwiJHRlc3QiLCJ3aGl0ZVNwYWNlIiwiYXV0b0dyb3ciLCIkaW5wdXQiLCJjdXJyZW50V2lkdGgiLCJwcmludGFibGUiLCJjaGFyYWN0ZXIiLCJtZXRhS2V5IiwiYWx0S2V5IiwiZm9yY2UiLCJzdWJzdHJpbmciLCJzaGlmdEtleSIsInNlbGVjdGl6ZSIsImNvbXB1dGVkU3R5bGUiLCJjdXJyZW50U3R5bGUiLCJvcmRlciIsInRhZ1R5cGUiLCJydGwiLCJldmVudE5TIiwiaGlnaGxpZ2h0ZWRWYWx1ZSIsImlzT3BlbiIsImlzRGlzYWJsZWQiLCJpc1JlcXVpcmVkIiwiaXNJbnZhbGlkIiwiaXNMb2NrZWQiLCJpc0ZvY3VzZWQiLCJpc0lucHV0SGlkZGVuIiwiaXNTZXR1cCIsImlzU2hpZnREb3duIiwiaXNDbWREb3duIiwiaXNDdHJsRG93biIsImlnbm9yZUZvY3VzIiwiaWdub3JlQmx1ciIsImlnbm9yZUhvdmVyIiwiaGFzT3B0aW9ucyIsImN1cnJlbnRSZXN1bHRzIiwibGFzdFZhbHVlIiwiY2FyZXRQb3MiLCJsb2FkaW5nIiwibG9hZGVkU2VhcmNoZXMiLCIkYWN0aXZlT3B0aW9uIiwiJGFjdGl2ZUl0ZW1zIiwib3B0Z3JvdXBzIiwidXNlck9wdGlvbnMiLCJpdGVtcyIsInJlbmRlckNhY2hlIiwib25TZWFyY2hDaGFuZ2UiLCJsb2FkVGhyb3R0bGUiLCJzaWZ0ZXIiLCJkaWFjcml0aWNzIiwicmVnaXN0ZXJPcHRpb24iLCJyZWdpc3Rlck9wdGlvbkdyb3VwIiwibW9kZSIsIm1heEl0ZW1zIiwiaGlkZVNlbGVjdGVkIiwiaW5pdGlhbGl6ZVBsdWdpbnMiLCJwbHVnaW5zIiwic2V0dXBDYWxsYmFja3MiLCJzZXR1cFRlbXBsYXRlcyIsIiR3aW5kb3ciLCIkZG9jdW1lbnQiLCIkd3JhcHBlciIsIiRjb250cm9sIiwiJGNvbnRyb2xfaW5wdXQiLCIkZHJvcGRvd24iLCIkZHJvcGRvd25fY29udGVudCIsIiRkcm9wZG93bl9wYXJlbnQiLCJpbnB1dE1vZGUiLCJ0aW1lb3V0X2JsdXIiLCJ0aW1lb3V0X2ZvY3VzIiwiY2xhc3Nlc19wbHVnaW5zIiwid3JhcHBlckNsYXNzIiwiaW5wdXRDbGFzcyIsImRyb3Bkb3duUGFyZW50IiwiZHJvcGRvd25DbGFzcyIsImRyb3Bkb3duQ29udGVudENsYXNzIiwiY29weUNsYXNzZXNUb0Ryb3Bkb3duIiwic3BsaXRPbiIsImRlbGltaXRlciIsImRlbGltaXRlckVzY2FwZWQiLCJvbk9wdGlvbkhvdmVyIiwib25PcHRpb25TZWxlY3QiLCJvbkl0ZW1TZWxlY3QiLCJtb3VzZWRvd24iLCJvbk1vdXNlRG93biIsIm9uQ2xpY2siLCJrZXlkb3duIiwib25LZXlEb3duIiwib25LZXlVcCIsImtleXByZXNzIiwib25LZXlQcmVzcyIsInJlc2l6ZSIsInBvc2l0aW9uRHJvcGRvd24iLCJvbkJsdXIiLCJvbkZvY3VzIiwicGFzdGUiLCJvblBhc3RlIiwicmV2ZXJ0U2V0dGluZ3MiLCIkY2hpbGRyZW4iLCJzZXRWYWx1ZSIsInJlZnJlc2hTdGF0ZSIsInVwZGF0ZU9yaWdpbmFsSW5wdXQiLCJyZWZyZXNoSXRlbXMiLCJ1cGRhdGVQbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwicHJlbG9hZCIsImZpZWxkX2xhYmVsIiwibGFiZWxGaWVsZCIsImZpZWxkX29wdGdyb3VwIiwib3B0Z3JvdXBMYWJlbEZpZWxkIiwidGVtcGxhdGVzIiwiZXNjYXBlIiwicmVuZGVyIiwiY2FsbGJhY2tzIiwiJHRhcmdldCIsInNldEFjdGl2ZUl0ZW0iLCJpc0Z1bGwiLCJzcGxpdElucHV0IiwiY3JlYXRlSXRlbSIsImNyZWF0ZSIsImlzSW5wdXQiLCJzZWxlY3RBbGwiLCJjdHJsS2V5IiwiJG5leHQiLCJnZXRBZGphY2VudE9wdGlvbiIsInNldEFjdGl2ZU9wdGlvbiIsIiRwcmV2IiwiYWR2YW5jZVNlbGVjdGlvbiIsInNlbGVjdE9uVGFiIiwiZGVsZXRlU2VsZWN0aW9uIiwicmVmcmVzaE9wdGlvbnMiLCJ3YXNGb2N1c2VkIiwic2hvd0lucHV0Iiwib3Blbk9uRm9jdXMiLCJkZWFjdGl2YXRlIiwic2V0VGV4dGJveFZhbHVlIiwic2V0Q2FyZXQiLCJjcmVhdGVPbkJsdXIiLCIkb3B0aW9uIiwiY2xvc2VBZnRlclNlbGVjdCIsImxhc3RRdWVyeSIsImFkZEl0ZW0iLCJnZXRPcHRpb24iLCJsb2FkaW5nQ2xhc3MiLCJhZGRPcHRpb24iLCJzaWxlbnQiLCJjbGVhciIsImFkZEl0ZW1zIiwiJGl0ZW0iLCJldmVudE5hbWUiLCJiZWdpbiIsIml0ZW0iLCIkbGFzdCIsImhpZGVJbnB1dCIsInNjcm9sbCIsImhlaWdodF9tZW51IiwiaGVpZ2h0X2l0ZW0iLCJzY3JvbGxfdG9wIiwic2Nyb2xsX2JvdHRvbSIsIm91dGVySGVpZ2h0Iiwic2Nyb2xsRHVyYXRpb24iLCJnZXRTY29yZUZ1bmN0aW9uIiwicXVlcnkiLCJnZXRTZWFyY2hPcHRpb25zIiwic29ydEZpZWxkIiwiZmllbGRzIiwic2VhcmNoRmllbGQiLCJjb25qdW5jdGlvbiIsInNlYXJjaENvbmp1bmN0aW9uIiwiY2FsY3VsYXRlU2NvcmUiLCJ0cmlnZ2VyRHJvcGRvd24iLCJncm91cHNfb3JkZXIiLCJvcHRpb25faHRtbCIsImh0bWxfY2hpbGRyZW4iLCJoYXNfY3JlYXRlX29wdGlvbiIsIiRhY3RpdmUiLCIkYWN0aXZlX2JlZm9yZSIsIiRjcmVhdGUiLCJhY3RpdmVfYmVmb3JlIiwibWF4T3B0aW9ucyIsIm9wdGdyb3VwRmllbGQiLCJsb2NrT3B0Z3JvdXBPcmRlciIsImFfb3JkZXIiLCIkb3JkZXIiLCJiX29yZGVyIiwiY2FuQ3JlYXRlIiwiYWRkUHJlY2VkZW5jZSIsInZhbHVlRmllbGQiLCJvcHRncm91cFZhbHVlRmllbGQiLCJhZGRPcHRpb25Hcm91cCIsInJlbW92ZU9wdGlvbkdyb3VwIiwiY2xlYXJPcHRpb25Hcm91cHMiLCJ1cGRhdGVPcHRpb24iLCIkaXRlbV9uZXciLCJ2YWx1ZV9uZXciLCJpbmRleF9pdGVtIiwiY2FjaGVfaXRlbXMiLCJjYWNoZV9vcHRpb25zIiwib3JkZXJfb2xkIiwiZ2V0SXRlbSIsInJlbW92ZU9wdGlvbiIsInJlbW92ZUl0ZW0iLCJjbGVhck9wdGlvbnMiLCJnZXRFbGVtZW50V2l0aFZhbHVlIiwiJG9wdGlvbnMiLCIkZWxzIiwiaXNQZW5kaW5nIiwidmFsdWVfbmV4dCIsIndhc0Z1bGwiLCJpbnNlcnRBdENhcmV0IiwicGVyc2lzdCIsImNhcmV0IiwidW5sb2NrIiwicmVmcmVzaENsYXNzZXMiLCJvdXRlcldpZHRoIiwiJGVsIiwib3B0aW9uX3NlbGVjdCIsIiRvcHRpb25fc2VsZWN0IiwiJHRhaWwiLCJvbkRlbGV0ZSIsInRhaWwiLCJ2YWx1ZUxlbmd0aCIsImN1cnNvckF0RWRnZSIsImFkdmFuY2VDYXJldCIsIiRhZGoiLCIkY2hpbGQiLCJlbmFibGUiLCJkZXN0cm95IiwidGVtcGxhdGVOYW1lIiwicmVnZXhfdGFnIiwiY2xlYXJDYWNoZSIsImNyZWF0ZUZpbHRlciIsImFsbG93RW1wdHlPcHRpb24iLCJzZXR0aW5nc191c2VyIiwiYXR0cl9kYXRhIiwiZmllbGRfdmFsdWUiLCJmaWVsZF9vcHRncm91cF9sYWJlbCIsImZpZWxkX29wdGdyb3VwX3ZhbHVlIiwiaW5pdF90ZXh0Ym94Iiwic2V0dGluZ3NfZWxlbWVudCIsImRhdGFfcmF3IiwiaW5pdF9zZWxlY3QiLCJvcHRpb25zTWFwIiwicmVhZERhdGEiLCJncm91cCIsImFkZEdyb3VwIiwiJG9wdGdyb3VwIiwidGFnX25hbWUiLCJzb3J0YWJsZSIsImZvcmNlUGxhY2Vob2xkZXJTaXplIiwidWkiLCJoZWxwZXIiLCJ0aXRsZSIsImhlYWRlckNsYXNzIiwidGl0bGVSb3dDbGFzcyIsImxhYmVsQ2xhc3MiLCJjbG9zZUNsYXNzIiwiJGRyb3Bkb3duX2hlYWRlciIsImVxdWFsaXplV2lkdGgiLCJlcXVhbGl6ZUhlaWdodCIsImdldFNjcm9sbGJhcldpZHRoIiwiY2xpZW50V2lkdGgiLCJlcXVhbGl6ZVNpemVzIiwiaGVpZ2h0X21heCIsIndpZHRoX2xhc3QiLCJ3aWR0aF9wYXJlbnQiLCIkb3B0Z3JvdXBzIiwiaW5uZXJXaWR0aCIsImh0bWxfY29udGFpbmVyIiwiaHRtbF9lbGVtZW50IiwicmVuZGVyX2l0ZW0iLCJ3b3JkcyIsImVzY2FwZV9yZWdleCIsIkRJQUNSSVRJQ1MiLCJpc19hcnJheSIsImZvckVhY2giLCJ0b2tlbl9jb3VudCIsInByZXBhcmVTZWFyY2giLCJzY29yZVZhbHVlIiwic2NvcmVPYmplY3QiLCJmaWVsZF9jb3VudCIsInN1bSIsImdldFNvcnRGdW5jdGlvbiIsImZpZWxkc19jb3VudCIsIm11bHRpcGxpZXIiLCJtdWx0aXBsaWVycyIsImdldF9maWVsZCIsImltcGxpY2l0X3Njb3JlIiwic29ydF9lbXB0eSIsImNtcCIsImFfdmFsdWUiLCJiX3ZhbHVlIiwib3B0aW9uX2ZpZWxkcyIsIm9wdGlvbl9zb3J0Iiwib3B0aW9uX3NvcnRfZW1wdHkiLCJmbl9zb3J0IiwiZm5fc2NvcmUiLCJhc2NpaWZvbGQiLCJmb3JlaWdubGV0dGVycyIsImZvcmVpZ25sZXR0ZXIiLCJJbnRlcmZhY2UiLCJyZXF1ZXN0ZWQiLCJsb2FkZWQiLCJ1dGlscyIsImxvYWRQbHVnaW4iLCJwbHVnaW4iLCJ2QXJnIiwiUGFnZSIsIlJpb3RQYWdlIiwidW5sb2FkIiwidW5tb3VudCIsIk1vZHVsZSIsIm1vZHVsZTEiLCJhbm5vdGF0aW9ucyIsIlRhYmxlUm93IiwidGFibGVEYXRhIiwiVGFibGUiLCJUYWJsZUNvbnRyb2xzIiwiTWVudSIsIlRhYmxlRmlsdGVyTWVudSIsIm5hbWVTaW5nbHVsYXIiLCJuYW1lUGx1cmFsIiwiZmlsdGVyRGF0YSIsImNvdW50V29yZHMiLCJuYW1lU2luZ3VsYXIiLCJzb3J0V29yZHMiLCJjb2x1bW4iLCJjb2x1bW5zIiwibHNvcnQiLCJyZXNldE1lbnVzIiwiJHRvZ2dsZSIsImh0bWxGb3IiLCJpZ25vcmUiLCJmaWx0ZXJQbGFjZWhvbGRlciIsIm5vUmVzdWx0cyIsIkNvbnRyb2xzIiwiRm9ybXMiLCJXaWRnZXRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LGVBQUEsQ0FBZ0IvcUUsU0FBaEIsQ0FBMEJrckUsVUFBMUIsR0FBdUMsSUFBdkMsQ0FmdUQ7QUFBQSxNQWlCdkRILGVBQUEsQ0FBZ0IvcUUsU0FBaEIsQ0FBMEJ1QyxJQUExQixHQUFpQzVGLE9BQUEsQ0FBUSx3RUFBUixDQUFqQyxDQWpCdUQ7QUFBQSxNQW1CdkRvdUUsZUFBQSxDQUFnQi9xRSxTQUFoQixDQUEwQmEsSUFBMUIsR0FBaUMsWUFBVztBQUFBLFFBQzFDLE9BQU9rcUUsZUFBQSxDQUFnQjlxRSxTQUFoQixDQUEwQlksSUFBMUIsQ0FBK0JULEtBQS9CLENBQXFDLElBQXJDLEVBQTJDQyxTQUEzQyxDQURtQztBQUFBLE9BQTVDLENBbkJ1RDtBQUFBLE1BdUJ2RCxPQUFPMHFFLGVBdkJnRDtBQUFBLEtBQXRCLENBeUJoQ0QsSUF6QmdDLEM7Ozs7SUNObkNsdUUsTUFBQSxDQUFPQyxPQUFQLEdBQWlCLGliOzs7O0lDQWpCLElBQUFrdkUsUUFBQSxDO0lBQUFBLFFBQUEsR0FBV3B2RSxPQUFBLENBQVEsWUFBUixDQUFYLEM7SUFFQSxJQUFHLE9BQUFtQyxNQUFBLG9CQUFBQSxNQUFBLFNBQUg7QUFBQSxNQUNFQSxNQUFBLENBQU8wUSxDQUFQLEdBQVc3UyxPQUFBLENBQVEsb0JBQVIsQ0FBWCxDQURGO0FBQUEsTUFFRUEsT0FBQSxDQUFRLDZCQUFSLENBRkY7QUFBQSxLO0lBSUFDLE1BQUEsQ0FBT0MsT0FBUCxHQUNFO0FBQUEsTUFBQXV0RSxRQUFBLEVBQVV6dEUsT0FBQSxDQUFRLFFBQVIsQ0FBVjtBQUFBLE1BQ0E4UyxNQUFBLEVBQVU5UyxPQUFBLENBQVEsVUFBUixDQURWO0FBQUEsTUFFQW92RSxRQUFBLEVBQVVwdkUsT0FBQSxDQUFRLFlBQVIsQ0FGVjtBQUFBLE1BR0FxdkUsS0FBQSxFQUFVcnZFLE9BQUEsQ0FBUSxTQUFSLENBSFY7QUFBQSxNQUlBc3ZFLE9BQUEsRUFBVXR2RSxPQUFBLENBQVEsV0FBUixDQUpWO0FBQUEsTUFNQVMsUUFBQSxFQUFVLFVBQUNDLENBQUQ7QUFBQSxRQUNSLEtBQUMwdUUsUUFBRCxDQUFVM3VFLFFBQVYsQ0FBbUJDLENBQW5CLEVBRFE7QUFBQSxRQUVSLEtBQUMydUUsS0FBRCxDQUFPNXVFLFFBQVAsR0FGUTtBQUFBLFEsT0FHUixLQUFDNnVFLE9BQUQsQ0FBUzd1RSxRQUFULEVBSFE7QUFBQSxPQU5WO0FBQUEsSyIsInNvdXJjZVJvb3QiOiIvc3JjIn0= |