Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*can-util@3.0.0-pre.33#dom/class-name/class-name*/
- define('can-util@3.0.0-pre.33#dom/class-name/class-name', function (require, exports, module) {
- var has = function (className) {
- if (this.classList) {
- return this.classList.contains(className);
- } else {
- return !!this.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
- }
- };
- module.exports = {
- has: has,
- add: function (className) {
- if (this.classList) {
- this.classList.add(className);
- } else if (!has.call(this, className)) {
- this.className += ' ' + className;
- }
- },
- remove: function (className) {
- if (this.classList) {
- this.classList.remove(className);
- } else if (has.call(this, className)) {
- var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
- this.className = this.className.replace(reg, ' ');
- }
- }
- };
- });
- /*can-control@3.0.0-pre.5#can-control*/
- define('can-control@3.0.0-pre.5#can-control', function (require, exports, module) {
- var Construct = require('can-construct');
- var namespace = require('can-util/namespace');
- var string = require('can-util/js/string/string');
- var assign = require('can-util/js/assign/assign');
- var isFunction = require('can-util/js/is-function/is-function');
- var isArray = require('can-util/js/is-array/is-array');
- var each = require('can-util/js/each/each');
- var dev = require('can-util/js/dev/dev');
- var domData = require('can-util/dom/data/data');
- var className = require('can-util/dom/class-name/class-name');
- var domEvents = require('can-util/dom/events/events');
- var canEvent = require('can-event');
- var processors;
- require('can-util/dom/dispatch/dispatch');
- require('can-util/dom/events/delegate/delegate');
- var bind = function (el, ev, callback) {
- canEvent.on.call(el, ev, callback);
- return function () {
- canEvent.off.call(el, ev, callback);
- };
- }, slice = [].slice, paramReplacer = /\{([^\}]+)\}/g, delegate = function (el, selector, ev, callback) {
- canEvent.on.call(el, ev, selector, callback);
- return function () {
- canEvent.off.call(el, ev, selector, callback);
- };
- }, binder = function (el, ev, callback, selector) {
- return selector ? delegate(el, selector.trim(), ev, callback) : bind(el, ev, callback);
- }, basicProcessor;
- var Control = Construct.extend({
- setup: function () {
- Construct.setup.apply(this, arguments);
- if (Control) {
- var control = this, funcName;
- control.actions = {};
- for (funcName in control.prototype) {
- if (control._isAction(funcName)) {
- control.actions[funcName] = control._action(funcName);
- }
- }
- }
- },
- _shifter: function (context, name) {
- var method = typeof name === 'string' ? context[name] : name;
- if (!isFunction(method)) {
- method = context[method];
- }
- return function () {
- context.called = name;
- return method.apply(context, [this].concat(slice.call(arguments, 0)));
- };
- },
- _isAction: function (methodName) {
- var val = this.prototype[methodName], type = typeof val;
- return methodName !== 'constructor' && (type === 'function' || type === 'string' && isFunction(this.prototype[val])) && !!(Control.isSpecial(methodName) || processors[methodName] || /[^\w]/.test(methodName));
- },
- _action: function (methodName, options) {
- paramReplacer.lastIndex = 0;
- if (options || !paramReplacer.test(methodName)) {
- var convertedName = options ? string.sub(methodName, this._lookup(options)) : methodName;
- if (!convertedName) {
- return null;
- }
- var arr = isArray(convertedName), name = arr ? convertedName[1] : convertedName, parts = name.split(/\s+/g), event = parts.pop();
- return {
- processor: processors[event] || basicProcessor,
- parts: [
- name,
- parts.join(' '),
- event
- ],
- delegate: arr ? convertedName[0] : undefined
- };
- }
- },
- _lookup: function (options) {
- return [
- options,
- window
- ];
- },
- processors: {},
- defaults: {},
- convertElement: function (element) {
- return typeof element === 'string' ? document.querySelector(element) : element;
- },
- isSpecial: function (eventName) {
- return eventName === 'inserted' || eventName === 'removed';
- }
- }, {
- setup: function (element, options) {
- var cls = this.constructor, pluginname = cls.pluginName || cls.shortName, arr;
- this.element = cls.convertElement(element);
- if (pluginname && pluginname !== 'can_control') {
- className.add.call(element, pluginname);
- }
- arr = domData.get.call(this.element, 'controls');
- if (!arr) {
- arr = [];
- domData.set.call(this.element, 'controls', arr);
- }
- arr.push(this);
- this.options = assign(assign({}, cls.defaults), options);
- this.on();
- return [
- this.element,
- this.options
- ];
- },
- on: function (el, selector, eventName, func) {
- if (!el) {
- this.off();
- var cls = this.constructor, bindings = this._bindings, actions = cls.actions, element = this.element, destroyCB = Control._shifter(this, 'destroy'), funcName, ready;
- for (funcName in actions) {
- if (actions.hasOwnProperty(funcName)) {
- ready = actions[funcName] || cls._action(funcName, this.options, this);
- if (ready) {
- bindings.control[funcName] = ready.processor(ready.delegate || element, ready.parts[2], ready.parts[1], funcName, this);
- }
- }
- }
- domEvents.addEventListener.call(element, 'removed', destroyCB);
- bindings.user.push(function (el) {
- domEvents.removeEventListener.call(el, 'removed', destroyCB);
- });
- return bindings.user.length;
- }
- if (typeof el === 'string') {
- func = eventName;
- eventName = selector;
- selector = el;
- el = this.element;
- }
- if (func === undefined) {
- func = eventName;
- eventName = selector;
- selector = null;
- }
- if (typeof func === 'string') {
- func = Control._shifter(this, func);
- }
- this._bindings.user.push(binder(el, eventName, func, selector));
- return this._bindings.user.length;
- },
- off: function () {
- var el = this.element[0], bindings = this._bindings;
- if (bindings) {
- each(bindings.user || [], function (value) {
- value(el);
- });
- each(bindings.control || {}, function (value) {
- value(el);
- });
- }
- this._bindings = {
- user: [],
- control: {}
- };
- },
- destroy: function () {
- if (this.element === null) {
- return;
- }
- var Class = this.constructor, pluginName = Class.pluginName || Class.shortName && string.underscore(Class.shortName), controls;
- this.off();
- if (pluginName && pluginName !== 'can_control') {
- className.remove.call(this.element, pluginName);
- }
- controls = domData.get.call(this.element, 'controls');
- controls.splice(controls.indexOf(this), 1);
- canEvent.dispatch.call(this, 'destroyed');
- this.element = null;
- }
- });
- processors = Control.processors;
- basicProcessor = function (el, event, selector, methodName, control) {
- return binder(el, event, Control._shifter(control, methodName), selector);
- };
- each([
- 'change',
- 'click',
- 'contextmenu',
- 'dblclick',
- 'keydown',
- 'keyup',
- 'keypress',
- 'mousedown',
- 'mousemove',
- 'mouseout',
- 'mouseover',
- 'mouseup',
- 'reset',
- 'resize',
- 'scroll',
- 'select',
- 'submit',
- 'focusin',
- 'focusout',
- 'mouseenter',
- 'mouseleave',
- 'touchstart',
- 'touchmove',
- 'touchcancel',
- 'touchend',
- 'touchleave',
- 'inserted',
- 'removed',
- 'dragstart',
- 'dragenter',
- 'dragover',
- 'dragleave',
- 'drag',
- 'drop',
- 'dragend'
- ], function (v) {
- processors[v] = basicProcessor;
- });
- module.exports = namespace.Control = Control;
- });
- /*can-component@3.0.0-pre.14#control/control*/
- define('can-component@3.0.0-pre.14#control/control', function (require, exports, module) {
- var Control = require('can-control');
- var canEach = require('can-util/js/each/each');
- var string = require('can-util/js/string/string');
- var canCompute = require('can-compute');
- var observeReader = require('can-observation/reader/reader');
- var paramReplacer = /\{([^\}]+)\}/g;
- var ComponentControl = Control.extend({
- _lookup: function (options) {
- return [
- options.scope,
- options,
- window
- ];
- },
- _action: function (methodName, options, controlInstance) {
- var hasObjectLookup, readyCompute;
- paramReplacer.lastIndex = 0;
- hasObjectLookup = paramReplacer.test(methodName);
- if (!controlInstance && hasObjectLookup) {
- return;
- } else if (!hasObjectLookup) {
- return Control._action.apply(this, arguments);
- } else {
- readyCompute = canCompute(function () {
- var delegate;
- var name = methodName.replace(paramReplacer, function (matched, key) {
- var value;
- if (key === 'scope' || key === 'viewModel') {
- delegate = options.viewModel;
- return '';
- }
- key = key.replace(/^(scope|^viewModel)\./, '');
- value = observeReader.read(options.viewModel, observeReader.reads(key), { readCompute: false }).value;
- if (value === undefined) {
- value = string.getObject(key);
- }
- if (typeof value === 'string') {
- return value;
- } else {
- delegate = value;
- return '';
- }
- });
- var parts = name.split(/\s+/g), event = parts.pop();
- return {
- processor: this.processors[event] || this.processors.click,
- parts: [
- name,
- parts.join(' '),
- event
- ],
- delegate: delegate || undefined
- };
- }, this);
- var handler = function (ev, ready) {
- controlInstance._bindings.control[methodName](controlInstance.element);
- controlInstance._bindings.control[methodName] = ready.processor(ready.delegate || controlInstance.element, ready.parts[2], ready.parts[1], methodName, controlInstance);
- };
- readyCompute.bind('change', handler);
- controlInstance._bindings.readyComputes[methodName] = {
- compute: readyCompute,
- handler: handler
- };
- return readyCompute();
- }
- }
- }, {
- setup: function (el, options) {
- this.scope = options.scope;
- this.viewModel = options.viewModel;
- return Control.prototype.setup.call(this, el, options);
- },
- off: function () {
- if (this._bindings) {
- canEach(this._bindings.readyComputes || {}, function (value) {
- value.compute.unbind('change', value.handler);
- });
- }
- Control.prototype.off.apply(this, arguments);
- this._bindings.readyComputes = {};
- },
- destroy: function () {
- Control.prototype.destroy.apply(this, arguments);
- if (typeof this.options.destroy === 'function') {
- this.options.destroy.apply(this, arguments);
- }
- }
- });
- module.exports = ComponentControl;
- });
- /*can-view-model@3.0.0-pre.4#can-view-model*/
- define('can-view-model@3.0.0-pre.4#can-view-model', function (require, exports, module) {
- 'use strict';
- var domData = require('can-util/dom/data/data');
- var SimpleMap = require('can-simple-map');
- var types = require('can-util/js/types/types');
- var ns = require('can-util/namespace');
- module.exports = ns.viewModel = function (el, attr, val) {
- var scope = domData.get.call(el, 'viewModel');
- if (!scope) {
- scope = types.DefaultMap ? new types.DefaultMap() : new SimpleMap();
- domData.set.call(el, 'viewModel', scope);
- }
- switch (arguments.length) {
- case 0:
- case 1:
- return scope;
- case 2:
- return 'attr' in scope ? scope.attr(attr) : scope[attr];
- default:
- if ('attr' in scope) {
- scope.attr(attr, val);
- } else {
- scope[attr] = val;
- }
- return el;
- }
- };
- });
- /*can-util@3.0.0-pre.33#js/string-to-any/string-to-any*/
- define('can-util@3.0.0-pre.33#js/string-to-any/string-to-any', function (require, exports, module) {
- module.exports = function (str) {
- switch (str) {
- case 'NaN':
- case 'Infinity':
- return +str;
- case 'null':
- return null;
- case 'undefined':
- return undefined;
- case 'true':
- case 'false':
- return str === 'true';
- default:
- var val = +str;
- if (!isNaN(val)) {
- return val;
- } else {
- return str;
- }
- }
- };
- });
- /*can-stache-bindings@3.0.0-pre.12#converters*/
- define('can-stache-bindings@3.0.0-pre.12#converters', function (require, exports, module) {
- var stache = require('can-stache');
- var stringToAny = require('can-util/js/string-to-any/string-to-any');
- stache.registerConverter('boolean-to-inList', {
- get: function (item, list) {
- if (!list) {
- return false;
- } else {
- return list.indexOf(item) !== -1;
- }
- },
- set: function (newVal, item, list) {
- if (!list) {
- return;
- }
- if (!newVal) {
- var idx = list.indexOf(item);
- if (idx !== -1) {
- list.splice(idx, 1);
- }
- } else {
- list.push(item);
- }
- }
- });
- stache.registerConverter('string-to-any', {
- get: function (compute) {
- return '' + compute();
- },
- set: function (newVal, compute) {
- var converted = stringToAny(newVal);
- compute(converted);
- }
- });
- });
- /*can-stache-bindings@3.0.0-pre.12#can-stache-bindings*/
- define('can-stache-bindings@3.0.0-pre.12#can-stache-bindings', function (require, exports, module) {
- var expression = require('can-stache/src/expression');
- var viewCallbacks = require('can-view-callbacks');
- var live = require('can-view-live');
- var Scope = require('can-view-scope');
- var canViewModel = require('can-view-model');
- var canEvent = require('can-event');
- var canBatch = require('can-event/batch/batch');
- var compute = require('can-compute');
- var observeReader = require('can-observation/reader/reader');
- var assign = require('can-util/js/assign/assign');
- var makeArray = require('can-util/js/make-array/make-array');
- var each = require('can-util/js/each/each');
- var string = require('can-util/js/string/string');
- var dev = require('can-util/js/dev/dev');
- var isArray = require('can-util/js/is-array/is-array');
- var types = require('can-util/js/types/types');
- var last = require('can-util/js/last/last');
- var getMutationObserver = require('can-util/dom/mutation-observer/mutation-observer');
- var domEvents = require('can-util/dom/events/events');
- require('can-util/dom/events/removed/removed');
- var domData = require('can-util/dom/data/data');
- var attr = require('can-util/dom/attr/attr');
- require('./converters');
- var behaviors = {
- viewModel: function (el, tagData, makeViewModel, initialViewModelData) {
- initialViewModelData = initialViewModelData || {};
- var bindingsSemaphore = {}, viewModel, onCompleteBindings = [], onTeardowns = {}, bindingInfos = {}, attributeViewModelBindings = assign({}, initialViewModelData);
- each(makeArray(el.attributes), function (node) {
- var dataBinding = makeDataBinding(node, el, {
- templateType: tagData.templateType,
- scope: tagData.scope,
- semaphore: bindingsSemaphore,
- getViewModel: function () {
- return viewModel;
- },
- attributeViewModelBindings: attributeViewModelBindings,
- alreadyUpdatedChild: true,
- nodeList: tagData.parentNodeList
- });
- if (dataBinding) {
- if (dataBinding.onCompleteBinding) {
- if (dataBinding.bindingInfo.parentToChild && dataBinding.value !== undefined) {
- initialViewModelData[cleanVMName(dataBinding.bindingInfo.childName)] = dataBinding.value;
- }
- onCompleteBindings.push(dataBinding.onCompleteBinding);
- }
- onTeardowns[node.name] = dataBinding.onTeardown;
- }
- });
- viewModel = makeViewModel(initialViewModelData);
- for (var i = 0, len = onCompleteBindings.length; i < len; i++) {
- onCompleteBindings[i]();
- }
- domEvents.addEventListener.call(el, 'attributes', function (ev) {
- var attrName = ev.attributeName, value = el.getAttribute(attrName);
- if (onTeardowns[attrName]) {
- onTeardowns[attrName]();
- }
- var parentBindingWasAttribute = bindingInfos[attrName] && bindingInfos[attrName].parent === 'attribute';
- if (value !== null || parentBindingWasAttribute) {
- var dataBinding = makeDataBinding({
- name: attrName,
- value: value
- }, el, {
- templateType: tagData.templateType,
- scope: tagData.scope,
- semaphore: {},
- getViewModel: function () {
- return viewModel;
- },
- attributeViewModelBindings: attributeViewModelBindings,
- initializeValues: true,
- nodeList: tagData.parentNodeList
- });
- if (dataBinding) {
- if (dataBinding.onCompleteBinding) {
- dataBinding.onCompleteBinding();
- }
- bindingInfos[attrName] = dataBinding.bindingInfo;
- onTeardowns[attrName] = dataBinding.onTeardown;
- }
- }
- });
- return function () {
- for (var attrName in onTeardowns) {
- onTeardowns[attrName]();
- }
- };
- },
- data: function (el, attrData) {
- if (domData.get.call(el, 'preventDataBindings')) {
- return;
- }
- var viewModel = canViewModel(el), semaphore = {}, teardown;
- var dataBinding = makeDataBinding({
- name: attrData.attributeName,
- value: el.getAttribute(attrData.attributeName),
- nodeList: attrData.nodeList
- }, el, {
- templateType: attrData.templateType,
- scope: attrData.scope,
- semaphore: semaphore,
- getViewModel: function () {
- return viewModel;
- }
- });
- if (dataBinding.onCompleteBinding) {
- dataBinding.onCompleteBinding();
- }
- teardown = dataBinding.onTeardown;
- canEvent.one.call(el, 'removed', function () {
- teardown();
- });
- domEvents.addEventListener.call(el, 'attributes', function (ev) {
- var attrName = ev.attributeName, value = el.getAttribute(attrName);
- if (attrName === attrData.attributeName) {
- if (teardown) {
- teardown();
- }
- if (value !== null) {
- var dataBinding = makeDataBinding({
- name: attrName,
- value: value
- }, el, {
- templateType: attrData.templateType,
- scope: attrData.scope,
- semaphore: semaphore,
- getViewModel: function () {
- return viewModel;
- },
- initializeValues: true,
- nodeList: attrData.nodeList
- });
- if (dataBinding) {
- if (dataBinding.onCompleteBinding) {
- dataBinding.onCompleteBinding();
- }
- teardown = dataBinding.onTeardown;
- }
- }
- }
- });
- },
- reference: function (el, attrData) {
- if (el.getAttribute(attrData.attributeName)) {
- console.warn('*reference attributes can only export the view model.');
- }
- var name = string.camelize(attrData.attributeName.substr(1).toLowerCase());
- var viewModel = canViewModel(el);
- var refs = attrData.scope.getRefs();
- refs._context.attr('*' + name, viewModel);
- },
- event: function (el, data) {
- var attributeName = data.attributeName, legacyBinding = attributeName.indexOf('can-') === 0, event = attributeName.indexOf('can-') === 0 ? attributeName.substr('can-'.length) : removeBrackets(attributeName, '(', ')'), onBindElement = legacyBinding;
- if (event.charAt(0) === '$') {
- event = event.substr(1);
- onBindElement = true;
- }
- var handler = function (ev) {
- var attrVal = el.getAttribute(attributeName);
- if (!attrVal) {
- return;
- }
- var viewModel = canViewModel(el);
- var expr = expression.parse(removeBrackets(attrVal), {
- lookupRule: 'method',
- methodRule: 'call'
- });
- if (!(expr instanceof expression.Call) && !(expr instanceof expression.Helper)) {
- var defaultArgs = [
- data.scope._context,
- el
- ].concat(makeArray(arguments)).map(function (data) {
- return new expression.Arg(new expression.Literal(data));
- });
- expr = new expression.Call(expr, defaultArgs, {});
- }
- var scopeData = data.scope.read(expr.methodExpr.key, { isArgument: true });
- if (!scopeData.value) {
- scopeData = data.scope.read(expr.methodExpr.key, { isArgument: true });
- return null;
- }
- var localScope = data.scope.add({
- '@element': el,
- '@event': ev,
- '@viewModel': viewModel,
- '@scope': data.scope,
- '@context': data.scope._context,
- '%element': this,
- '$element': el,
- '%event': ev,
- '%viewModel': viewModel,
- '%scope': data.scope,
- '%context': data.scope._context
- }, { notContext: true });
- var args = expr.args(localScope, null)();
- return scopeData.value.apply(scopeData.parent, args);
- };
- if (special[event]) {
- var specialData = special[event](data, el, handler);
- handler = specialData.handler;
- event = specialData.event;
- }
- canEvent.on.call(onBindElement ? el : canViewModel(el), event, handler);
- var attributesHandler = function (ev) {
- if (ev.attributeName === attributeName && !this.getAttribute(attributeName)) {
- canEvent.off.call(onBindElement ? el : canViewModel(el), event, handler);
- canEvent.off.call(el, 'attributes', attributesHandler);
- }
- };
- canEvent.on.call(el, 'attributes', attributesHandler);
- },
- value: function (el, data) {
- var propName = '$value', attrValue = removeBrackets(el.getAttribute('can-value')).trim(), getterSetter;
- if (el.nodeName.toLowerCase() === 'input' && (el.type === 'checkbox' || el.type === 'radio')) {
- var property = getComputeFrom.scope(el, data.scope, attrValue, {}, true);
- if (el.type === 'checkbox') {
- var trueValue = attr.has(el, 'can-true-value') ? el.getAttribute('can-true-value') : true, falseValue = attr.has(el, 'can-false-value') ? el.getAttribute('can-false-value') : false;
- getterSetter = compute(function (newValue) {
- if (arguments.length) {
- property(newValue ? trueValue : falseValue);
- } else {
- return property() == trueValue;
- }
- });
- } else if (el.type === 'radio') {
- getterSetter = compute(function (newValue) {
- if (arguments.length) {
- if (newValue) {
- property(el.value);
- }
- } else {
- return property() == el.value;
- }
- });
- }
- propName = '$checked';
- attrValue = 'getterSetter';
- data.scope = new Scope({ getterSetter: getterSetter });
- } else if (isContentEditable(el)) {
- propName = '$innerHTML';
- }
- var dataBinding = makeDataBinding({
- name: '{(' + propName + '})',
- value: attrValue
- }, el, {
- templateType: data.templateType,
- scope: data.scope,
- semaphore: {},
- initializeValues: true,
- legacyBindings: true,
- syncChildWithParent: true
- });
- canEvent.one.call(el, 'removed', function () {
- dataBinding.onTeardown();
- });
- }
- };
- viewCallbacks.attr(/^\{[^\}]+\}$/, behaviors.data);
- viewCallbacks.attr(/\*[\w\.\-_]+/, behaviors.reference);
- viewCallbacks.attr(/^\([\$?\w\.]+\)$/, behaviors.event);
- viewCallbacks.attr(/can-[\w\.]+/, behaviors.event);
- viewCallbacks.attr('can-value', behaviors.value);
- var getComputeFrom = {
- scope: function (el, scope, scopeProp, bindingData, mustBeACompute, stickyCompute) {
- if (!scopeProp) {
- return compute();
- } else {
- if (mustBeACompute) {
- var parentExpression = expression.parse(scopeProp, { baseMethodType: 'Call' });
- return parentExpression.value(scope, new Scope.Options({}));
- } else {
- return function (newVal) {
- scope.attr(cleanVMName(scopeProp), newVal);
- };
- }
- }
- },
- viewModel: function (el, scope, vmName, bindingData, mustBeACompute, stickyCompute) {
- var setName = cleanVMName(vmName);
- if (mustBeACompute) {
- return compute(function (newVal) {
- var viewModel = bindingData.getViewModel();
- if (arguments.length) {
- if (types.isMapLike(viewModel)) {
- viewModel.attr(setName, newVal);
- } else {
- viewModel[setName] = newVal;
- }
- } else {
- return vmName === '.' ? viewModel : observeReader.read(viewModel, observeReader.reads(vmName), {}).value;
- }
- });
- } else {
- return function (newVal) {
- var viewModel = bindingData.getViewModel();
- if (types.isMapLike(viewModel)) {
- viewModel.attr(setName, newVal);
- } else {
- viewModel[setName] = newVal;
- }
- };
- }
- },
- attribute: function (el, scope, prop, bindingData, mustBeACompute, stickyCompute, event) {
- if (!event) {
- if (prop === 'innerHTML') {
- event = [
- 'blur',
- 'change'
- ];
- } else {
- event = 'change';
- }
- }
- if (!isArray(event)) {
- event = [event];
- }
- var hasChildren = el.nodeName.toLowerCase() === 'select', isMultiselectValue = prop === 'value' && hasChildren && el.multiple, isStringValue, lastSet, scheduledAsyncSet = false, timer, set = function (newVal) {
- if (hasChildren && !scheduledAsyncSet) {
- clearTimeout(timer);
- timer = setTimeout(function () {
- set(newVal);
- }, 1);
- }
- lastSet = newVal;
- if (isMultiselectValue) {
- if (newVal && typeof newVal === 'string') {
- newVal = newVal.split(';');
- isStringValue = true;
- } else if (newVal) {
- newVal = makeArray(newVal);
- } else {
- newVal = [];
- }
- var isSelected = {};
- each(newVal, function (val) {
- isSelected[val] = true;
- });
- each(el.childNodes, function (option) {
- if ('value' in option && 'selected' in option) {
- option.selected = !!isSelected[option.value];
- }
- });
- } else {
- if (!bindingData.legacyBindings && hasChildren && 'selectedIndex' in el && prop === 'value') {
- attr.setSelectValue(el, newVal);
- } else {
- attr.setAttrOrProp(el, prop, newVal == null ? '' : newVal);
- }
- }
- return newVal;
- }, get = function () {
- if (isMultiselectValue) {
- var values = [], children = el.childNodes;
- each(children, function (child) {
- if (child.selected && child.value) {
- values.push(child.value);
- }
- });
- return isStringValue ? values.join(';') : values;
- } else if (hasChildren && 'selectedIndex' in el && el.selectedIndex === -1) {
- return undefined;
- }
- return attr.get(el, prop);
- };
- if (hasChildren) {
- setTimeout(function () {
- scheduledAsyncSet = true;
- }, 1);
- }
- var observer;
- return compute(get(), {
- on: function (updater) {
- each(event, function (eventName) {
- canEvent.on.call(el, eventName, updater);
- });
- if (hasChildren) {
- var onMutation = function (mutations) {
- if (stickyCompute) {
- set(stickyCompute());
- }
- updater();
- };
- var MO = getMutationObserver();
- if (MO) {
- observer = new MO(onMutation);
- observer.observe(el, {
- childList: true,
- subtree: true
- });
- } else {
- domData.set.call(el, 'canBindingCallback', { onMutation: onMutation });
- }
- }
- },
- off: function (updater) {
- each(event, function (eventName) {
- canEvent.off.call(el, eventName, updater);
- });
- if (hasChildren) {
- if (getMutationObserver()) {
- observer.disconnect();
- } else {
- domData.clean.call(el, 'canBindingCallback');
- }
- }
- },
- get: get,
- set: set
- });
- }
- };
- var bind = {
- childToParent: function (el, parentCompute, childCompute, bindingsSemaphore, attrName, syncChild) {
- var parentUpdateIsFunction = typeof parentCompute === 'function';
- var updateParent = function (ev, newVal) {
- if (!bindingsSemaphore[attrName]) {
- if (parentUpdateIsFunction) {
- parentCompute(newVal);
- if (syncChild) {
- if (parentCompute() !== childCompute()) {
- bindingsSemaphore[attrName] = (bindingsSemaphore[attrName] || 0) + 1;
- childCompute(parentCompute());
- canBatch.after(function () {
- --bindingsSemaphore[attrName];
- });
- }
- }
- } else if (types.isMapLike(parentCompute)) {
- parentCompute.attr(newVal, true);
- }
- }
- };
- if (childCompute && childCompute.isComputed) {
- childCompute.bind('change', updateParent);
- }
- return updateParent;
- },
- parentToChild: function (el, parentCompute, childUpdate, bindingsSemaphore, attrName) {
- var updateChild = function (ev, newValue) {
- bindingsSemaphore[attrName] = (bindingsSemaphore[attrName] || 0) + 1;
- childUpdate(newValue);
- canBatch.after(function () {
- --bindingsSemaphore[attrName];
- });
- };
- if (parentCompute && parentCompute.isComputed) {
- parentCompute.bind('change', updateChild);
- }
- return updateChild;
- }
- };
- var getBindingInfo = function (node, attributeViewModelBindings, templateType, tagName) {
- var attributeName = node.name, attributeValue = node.value || '';
- var matches = attributeName.match(bindingsRegExp);
- if (!matches) {
- var ignoreAttribute = ignoreAttributesRegExp.test(attributeName);
- var vmName = string.camelize(attributeName);
- if (ignoreAttribute || viewCallbacks.attr(attributeName)) {
- return;
- }
- var syntaxRight = attributeValue[0] === '{' && last(attributeValue) === '}';
- var isAttributeToChild = templateType === 'legacy' ? attributeViewModelBindings[vmName] : !syntaxRight;
- var scopeName = syntaxRight ? attributeValue.substr(1, attributeValue.length - 2) : attributeValue;
- if (isAttributeToChild) {
- return {
- bindingAttributeName: attributeName,
- parent: 'attribute',
- parentName: attributeName,
- child: 'viewModel',
- childName: vmName,
- parentToChild: true,
- childToParent: true
- };
- } else {
- return {
- bindingAttributeName: attributeName,
- parent: 'scope',
- parentName: scopeName,
- child: 'viewModel',
- childName: vmName,
- parentToChild: true,
- childToParent: true
- };
- }
- }
- var twoWay = !!matches[1], childToParent = twoWay || !!matches[2], parentToChild = twoWay || !childToParent;
- var childName = matches[3];
- var isDOM = childName.charAt(0) === '$';
- if (isDOM) {
- var bindingInfo = {
- parent: 'scope',
- child: 'attribute',
- childToParent: childToParent,
- parentToChild: parentToChild,
- bindingAttributeName: attributeName,
- childName: childName.substr(1),
- parentName: attributeValue,
- initializeValues: true
- };
- if (tagName === 'select') {
- bindingInfo.stickyParentToChild = true;
- }
- return bindingInfo;
- } else {
- return {
- parent: 'scope',
- child: 'viewModel',
- childToParent: childToParent,
- parentToChild: parentToChild,
- bindingAttributeName: attributeName,
- childName: string.camelize(childName),
- parentName: attributeValue,
- initializeValues: true
- };
- }
- };
- var bindingsRegExp = /\{(\()?(\^)?([^\}\)]+)\)?\}/, ignoreAttributesRegExp = /^(data-view-id|class|id|\[[\w\.-]+\]|#[\w\.-])$/i;
- var makeDataBinding = function (node, el, bindingData) {
- var bindingInfo = getBindingInfo(node, bindingData.attributeViewModelBindings, bindingData.templateType, el.nodeName.toLowerCase());
- if (!bindingInfo) {
- return;
- }
- bindingInfo.alreadyUpdatedChild = bindingData.alreadyUpdatedChild;
- if (bindingData.initializeValues) {
- bindingInfo.initializeValues = true;
- }
- var parentCompute = getComputeFrom[bindingInfo.parent](el, bindingData.scope, bindingInfo.parentName, bindingData, bindingInfo.parentToChild), childCompute = getComputeFrom[bindingInfo.child](el, bindingData.scope, bindingInfo.childName, bindingData, bindingInfo.childToParent, bindingInfo.stickyParentToChild && parentCompute), updateParent, updateChild, childLifecycle;
- if (bindingData.nodeList) {
- if (parentCompute && parentCompute.isComputed) {
- parentCompute.computeInstance.setPrimaryDepth(bindingData.nodeList.nesting + 1);
- }
- if (childCompute && childCompute.isComputed) {
- childCompute.computeInstance.setPrimaryDepth(bindingData.nodeList.nesting + 1);
- }
- }
- if (bindingInfo.parentToChild) {
- updateChild = bind.parentToChild(el, parentCompute, childCompute, bindingData.semaphore, bindingInfo.bindingAttributeName);
- }
- var completeBinding = function () {
- if (bindingInfo.childToParent) {
- updateParent = bind.childToParent(el, parentCompute, childCompute, bindingData.semaphore, bindingInfo.bindingAttributeName, bindingData.syncChildWithParent);
- } else if (bindingInfo.stickyParentToChild) {
- childCompute.bind('change', childLifecycle = function () {
- });
- }
- if (bindingInfo.initializeValues) {
- initializeValues(bindingInfo, childCompute, parentCompute, updateChild, updateParent);
- }
- };
- var onTeardown = function () {
- unbindUpdate(parentCompute, updateChild);
- unbindUpdate(childCompute, updateParent);
- unbindUpdate(childCompute, childLifecycle);
- };
- if (bindingInfo.child === 'viewModel') {
- return {
- value: getValue(parentCompute),
- onCompleteBinding: completeBinding,
- bindingInfo: bindingInfo,
- onTeardown: onTeardown
- };
- } else {
- completeBinding();
- return {
- bindingInfo: bindingInfo,
- onTeardown: onTeardown
- };
- }
- };
- var initializeValues = function (bindingInfo, childCompute, parentCompute, updateChild, updateParent) {
- var doUpdateParent = false;
- if (bindingInfo.parentToChild && !bindingInfo.childToParent) {
- } else if (!bindingInfo.parentToChild && bindingInfo.childToParent) {
- doUpdateParent = true;
- } else if (getValue(childCompute) === undefined) {
- } else if (getValue(parentCompute) === undefined) {
- doUpdateParent = true;
- }
- if (doUpdateParent) {
- updateParent({}, getValue(childCompute));
- } else {
- if (!bindingInfo.alreadyUpdatedChild) {
- updateChild({}, getValue(parentCompute));
- }
- }
- };
- if (!getMutationObserver()) {
- var updateSelectValue = function (el) {
- var bindingCallback = domData.get.call(el, 'canBindingCallback');
- if (bindingCallback) {
- bindingCallback.onMutation(el);
- }
- };
- live.registerChildMutationCallback('select', updateSelectValue);
- live.registerChildMutationCallback('optgroup', function (el) {
- updateSelectValue(el.parentNode);
- });
- }
- var isContentEditable = function () {
- var values = {
- '': true,
- 'true': true,
- 'false': false
- };
- var editable = function (el) {
- if (!el || !el.getAttribute) {
- return;
- }
- var attr = el.getAttribute('contenteditable');
- return values[attr];
- };
- return function (el) {
- var val = editable(el);
- if (typeof val === 'boolean') {
- return val;
- } else {
- return !!editable(el.parentNode);
- }
- };
- }(), removeBrackets = function (value, open, close) {
- open = open || '{';
- close = close || '}';
- if (value[0] === open && value[value.length - 1] === close) {
- return value.substr(1, value.length - 2);
- }
- return value;
- }, getValue = function (value) {
- return value && value.isComputed ? value() : value;
- }, unbindUpdate = function (compute, updateOther) {
- if (compute && compute.isComputed && typeof updateOther === 'function') {
- compute.unbind('change', updateOther);
- }
- }, cleanVMName = function (name) {
- return name.replace(/@/g, '');
- };
- var special = {
- enter: function (data, el, original) {
- return {
- event: 'keyup',
- handler: function (ev) {
- if (ev.keyCode === 13) {
- return original.call(this, ev);
- }
- }
- };
- }
- };
- module.exports = {
- behaviors: behaviors,
- getBindingInfo: getBindingInfo,
- special: special
- };
- });
- /*can-util@3.0.0-pre.33#dom/events/inserted/inserted*/
- define('can-util@3.0.0-pre.33#dom/events/inserted/inserted', function (require, exports, module) {
- var makeMutationEvent = require('../make-mutation-event/make-mutation-event');
- makeMutationEvent('inserted', 'addedNodes');
- });
- /*can-component@3.0.0-pre.14#can-component*/
- define('can-component@3.0.0-pre.14#can-component', function (require, exports, module) {
- var ComponentControl = require('./control/control');
- var namespace = require('can-util/namespace');
- var Construct = require('can-construct');
- var stacheBindings = require('can-stache-bindings');
- var Scope = require('can-view-scope');
- var viewCallbacks = require('can-view-callbacks');
- var nodeLists = require('can-view-nodelist');
- var domData = require('can-util/dom/data/data');
- var domMutate = require('can-util/dom/mutate/mutate');
- var getChildNodes = require('can-util/dom/child-nodes/child-nodes');
- var domDispatch = require('can-util/dom/dispatch/dispatch');
- var types = require('can-util/js/types/types');
- var assign = require('can-util/js/assign/assign');
- var canEach = require('can-util/js/each/each');
- var isFunction = require('can-util/js/is-function/is-function');
- require('can-util/dom/events/inserted/inserted');
- require('can-util/dom/events/removed/removed');
- require('can-view-model');
- var Component = Construct.extend({
- setup: function () {
- Construct.setup.apply(this, arguments);
- if (Component) {
- var self = this;
- this.Control = ComponentControl.extend(this.prototype.events);
- var protoViewModel = this.prototype.viewModel || this.prototype.scope;
- if (protoViewModel && this.prototype.ViewModel) {
- throw new Error('Cannot provide both a ViewModel and a viewModel property');
- }
- if (protoViewModel && types.isMapLike(protoViewModel.prototype)) {
- this.prototype.viewModel = this.prototype.scope = undefined;
- } else {
- protoViewModel = undefined;
- }
- this.ViewModel = this.prototype.ViewModel || protoViewModel || types.DefaultMap;
- if (this.prototype.template || this.prototype.view) {
- this.renderer = this.prototype.view || this.prototype.template;
- }
- viewCallbacks.tag(this.prototype.tag, function (el, options) {
- new self(el, options);
- });
- }
- }
- }, {
- setup: function (el, componentTagData) {
- var component = this;
- var lexicalContent = (typeof this.leakScope === 'undefined' ? true : !this.leakScope) && !!(this.template || this.view);
- var teardownFunctions = [];
- var initialViewModelData = {};
- var callTeardownFunctions = function () {
- for (var i = 0, len = teardownFunctions.length; i < len; i++) {
- teardownFunctions[i]();
- }
- };
- var setupBindings = !domData.get.call(el, 'preventDataBindings');
- var viewModel, frag;
- var teardownBindings;
- if (setupBindings) {
- var setupFn = componentTagData.setupBindings || function (el, callback, data) {
- return stacheBindings.behaviors.viewModel(el, componentTagData, callback, data);
- };
- teardownBindings = setupFn(el, function (initialViewModelData) {
- initialViewModelData['%root'] = componentTagData.scope.attr('%root');
- var protoViewModel = component.scope || component.viewModel;
- if (typeof protoViewModel === 'function') {
- var scopeResult = protoViewModel.call(component, initialViewModelData, componentTagData.scope, el);
- viewModel = scopeResult;
- } else if (protoViewModel instanceof types.DefaultMap) {
- viewModel = protoViewModel;
- } else {
- var scopeData = assign(assign({}, initialViewModelData), protoViewModel);
- viewModel = new component.constructor.ViewModel(scopeData);
- }
- return viewModel;
- }, initialViewModelData);
- }
- this.scope = this.viewModel = viewModel;
- domData.set.call(el, 'viewModel', viewModel);
- domData.set.call(el, 'preventDataBindings', true);
- var shadowScope;
- if (lexicalContent) {
- shadowScope = Scope.refsScope().add(this.viewModel, { viewModel: true });
- } else {
- shadowScope = (this.constructor.renderer ? componentTagData.scope.add(new Scope.Refs()) : componentTagData.scope).add(this.viewModel, { viewModel: true });
- }
- var options = { helpers: {} }, addHelper = function (name, fn) {
- options.helpers[name] = function () {
- return fn.apply(viewModel, arguments);
- };
- };
- canEach(this.helpers || {}, function (val, prop) {
- if (isFunction(val)) {
- addHelper(prop, val);
- }
- });
- this._control = new this.constructor.Control(el, {
- scope: this.viewModel,
- viewModel: this.viewModel,
- destroy: callTeardownFunctions
- });
- var nodeList = nodeLists.register([], function () {
- domDispatch.call(el, 'beforeremove', [], false);
- if (teardownBindings) {
- teardownBindings();
- }
- }, componentTagData.parentNodeList || true, false);
- nodeList.expression = '<' + this.tag + '>';
- teardownFunctions.push(function () {
- nodeLists.unregister(nodeList);
- });
- if (this.constructor.renderer) {
- if (!options.tags) {
- options.tags = {};
- }
- options.tags.content = function contentHookup(el, contentTagData) {
- var subtemplate = componentTagData.subtemplate || contentTagData.subtemplate, renderingLightContent = subtemplate === componentTagData.subtemplate;
- if (subtemplate) {
- delete options.tags.content;
- var lightTemplateData;
- if (renderingLightContent) {
- if (lexicalContent) {
- lightTemplateData = componentTagData;
- } else {
- lightTemplateData = {
- scope: contentTagData.scope.cloneFromRef(),
- options: contentTagData.options
- };
- }
- } else {
- lightTemplateData = contentTagData;
- }
- if (contentTagData.parentNodeList) {
- var frag = subtemplate(lightTemplateData.scope, lightTemplateData.options, contentTagData.parentNodeList);
- nodeLists.replace([el], frag);
- } else {
- nodeLists.replace([el], subtemplate(lightTemplateData.scope, lightTemplateData.options));
- }
- options.tags.content = contentHookup;
- }
- };
- frag = this.constructor.renderer(shadowScope, componentTagData.options.add(options), nodeList);
- } else {
- frag = componentTagData.subtemplate ? componentTagData.subtemplate(shadowScope, componentTagData.options.add(options), nodeList) : document.createDocumentFragment();
- }
- domMutate.appendChild.call(el, frag);
- nodeLists.update(nodeList, getChildNodes(el));
- }
- });
- viewCallbacks.tag('content', function (el, tagData) {
- return tagData.scope;
- });
- module.exports = namespace.Component = Component;
- });
- /*can-define@0.7.17#can-define*/
- define('can-define@0.7.17#can-define', function (require, exports, module) {
- 'use strict';
- 'format cjs';
- var event = require('can-event');
- var eventLifecycle = require('can-event/lifecycle/lifecycle');
- var canBatch = require('can-event/batch/batch');
- var compute = require('can-compute');
- var Observation = require('can-observation');
- var canEach = require('can-util/js/each/each');
- var isEmptyObject = require('can-util/js/is-empty-object/is-empty-object');
- var assign = require('can-util/js/assign/assign');
- var dev = require('can-util/js/dev/dev');
- var CID = require('can-util/js/cid/cid');
- var isPlainObject = require('can-util/js/is-plain-object/is-plain-object');
- var isArray = require('can-util/js/is-array/is-array');
- var types = require('can-util/js/types/types');
- var each = require('can-util/js/each/each');
- var ns = require('can-util/namespace');
- var behaviors, eventsProto, getPropDefineBehavior, define, make, makeDefinition, replaceWith, getDefinitionsAndMethods, isDefineType, getDefinitionOrMethod;
- module.exports = define = ns.define = function (objPrototype, defines) {
- var dataInitializers = {}, computedInitializers = {};
- var result = getDefinitionsAndMethods(defines);
- canEach(result.definitions, function (definition, property) {
- define.property(objPrototype, property, definition, dataInitializers, computedInitializers);
- });
- replaceWith(objPrototype, '_data', function () {
- var map = this;
- var data = {};
- for (var prop in dataInitializers) {
- replaceWith(data, prop, dataInitializers[prop].bind(map), true);
- }
- return data;
- });
- replaceWith(objPrototype, '_computed', function () {
- var map = this;
- var data = {};
- for (var prop in computedInitializers) {
- replaceWith(data, prop, computedInitializers[prop].bind(map));
- }
- return data;
- });
- for (var prop in eventsProto) {
- Object.defineProperty(objPrototype, prop, {
- enumerable: false,
- value: eventsProto[prop],
- configurable: true,
- writable: true
- });
- }
- Object.defineProperty(objPrototype, '_define', {
- enumerable: false,
- value: result,
- configurable: true,
- writable: true
- });
- return result;
- };
- define.property = function (objPrototype, prop, definition, dataInitializers, computedInitializers) {
- var type = definition.type;
- delete definition.type;
- if (type && isEmptyObject(definition) && type === define.types['*']) {
- definition.type = type;
- Object.defineProperty(objPrototype, prop, {
- get: make.get.data(prop),
- set: make.set.events(prop, make.get.data(prop), make.set.data(prop), make.eventType.data(prop)),
- enumerable: true
- });
- return;
- }
- definition.type = type;
- var dataProperty = definition.get ? 'computed' : 'data', reader = make.read[dataProperty](prop), getter = make.get[dataProperty](prop), setter = make.set[dataProperty](prop), getInitialValue;
- var typeConvert = function (val) {
- return val;
- };
- if (definition.Type) {
- typeConvert = make.set.Type(prop, definition.Type, typeConvert);
- }
- if (type) {
- typeConvert = make.set.type(prop, type, typeConvert);
- }
- if (definition.value !== undefined || definition.Value !== undefined) {
- getInitialValue = make.get.defaultValue(prop, definition, typeConvert);
- }
- if (definition.get) {
- computedInitializers[prop] = make.compute(prop, definition.get, getInitialValue);
- } else if (getInitialValue) {
- dataInitializers[prop] = getInitialValue;
- }
- if (definition.get && definition.set) {
- setter = make.set.setter(prop, definition.set, make.read.lastSet(prop), setter, true);
- } else if (definition.set) {
- setter = make.set.events(prop, reader, setter, make.eventType[dataProperty](prop));
- setter = make.set.setter(prop, definition.set, reader, setter, false);
- } else if (!definition.get) {
- setter = make.set.events(prop, reader, setter, make.eventType[dataProperty](prop));
- }
- if (type) {
- setter = make.set.type(prop, type, setter);
- }
- if (definition.Type) {
- setter = make.set.Type(prop, definition.Type, setter);
- }
- Object.defineProperty(objPrototype, prop, {
- get: getter,
- set: setter,
- enumerable: 'serialize' in definition ? !!definition.serialize : !definition.get
- });
- };
- define.Constructor = function (defines) {
- var constructor = function (props) {
- define.setup.call(this, props);
- };
- define(constructor.prototype, defines);
- return constructor;
- };
- make = {
- compute: function (prop, get, defaultValue) {
- return function () {
- var map = this;
- return {
- compute: compute.async(defaultValue && defaultValue(), get, map),
- count: 0,
- handler: function (ev, newVal, oldVal) {
- canBatch.trigger.call(map, {
- type: prop,
- target: map
- }, [
- newVal,
- oldVal
- ]);
- }
- };
- };
- },
- set: {
- data: function (prop) {
- return function (newVal) {
- this._data[prop] = newVal;
- };
- },
- computed: function (prop) {
- return function (val) {
- this._computed[prop].compute(val);
- };
- },
- events: function (prop, getCurrent, setData, eventType) {
- return function (newVal) {
- var current = getCurrent.call(this);
- if (newVal !== current) {
- setData.call(this, newVal);
- canBatch.trigger.call(this, {
- type: prop,
- target: this
- }, [
- newVal,
- current
- ]);
- }
- };
- },
- setter: function (prop, setter, getCurrent, setEvents, hasGetter) {
- return function (value) {
- var self = this;
- canBatch.start();
- var setterCalled = false, current = getCurrent.call(this), setValue = setter.call(this, value, function (value) {
- setEvents.call(self, value);
- setterCalled = true;
- }, current);
- if (setterCalled) {
- canBatch.stop();
- } else {
- if (hasGetter) {
- if (setValue !== undefined) {
- if (current !== setValue) {
- setEvents.call(this, setValue);
- }
- canBatch.stop();
- } else if (setter.length === 0) {
- setEvents.call(this, value);
- canBatch.stop();
- return;
- } else if (setter.length === 1) {
- canBatch.stop();
- } else {
- canBatch.stop();
- return;
- }
- } else {
- if (setValue !== undefined) {
- setEvents.call(this, setValue);
- canBatch.stop();
- } else if (setter.length === 0) {
- setEvents.call(this, value);
- canBatch.stop();
- return;
- } else if (setter.length === 1) {
- setEvents.call(this, undefined);
- canBatch.stop();
- } else {
- canBatch.stop();
- return;
- }
- }
- }
- };
- },
- type: function (prop, type, set) {
- if (typeof type === 'object') {
- return make.set.Type(prop, type, set);
- } else {
- return function (newValue) {
- return set.call(this, type.call(this, newValue, prop));
- };
- }
- },
- Type: function (prop, Type, set) {
- if (isArray(Type) && types.DefineList) {
- Type = types.DefineList.extend({ '*': Type[0] });
- } else if (typeof Type === 'object') {
- if (types.DefineMap) {
- Type = types.DefineMap.extend(Type);
- } else {
- Type = define.constructor(Type);
- }
- }
- return function (newValue) {
- if (newValue instanceof Type) {
- return set.call(this, newValue);
- } else {
- return set.call(this, new Type(newValue));
- }
- };
- }
- },
- eventType: {
- data: function (prop) {
- return function (newVal, oldVal) {
- return oldVal !== undefined || this._data.hasOwnProperty(prop) ? 'set' : 'add';
- };
- },
- computed: function () {
- return function () {
- return 'set';
- };
- }
- },
- read: {
- data: function (prop) {
- return function () {
- return this._data[prop];
- };
- },
- computed: function (prop) {
- return function () {
- return this._computed[prop].compute();
- };
- },
- lastSet: function (prop) {
- return function () {
- return this._computed[prop].compute.computeInstance.lastSetValue.get();
- };
- }
- },
- get: {
- defaultValue: function (prop, definition, typeConvert) {
- return function () {
- var value = definition.value;
- if (value !== undefined) {
- if (typeof value === 'function') {
- value = value.call(this);
- }
- return typeConvert(value);
- }
- var Value = definition.Value;
- if (Value) {
- return typeConvert(new Value());
- }
- };
- },
- data: function (prop) {
- return function () {
- Observation.add(this, prop);
- return this._data[prop];
- };
- },
- computed: function (prop) {
- return function () {
- return this._computed[prop].compute();
- };
- }
- }
- };
- behaviors = [
- 'get',
- 'set',
- 'value',
- 'Value',
- 'type',
- 'Type',
- 'serialize'
- ];
- getPropDefineBehavior = function (behaviorName, prop, def, defaultDefinition) {
- if (behaviorName in def) {
- return def[behaviorName];
- } else {
- return defaultDefinition[behaviorName];
- }
- };
- makeDefinition = function (prop, def, defaultDefinition) {
- var definition = {};
- behaviors.forEach(function (behavior) {
- var behaviorDef = getPropDefineBehavior(behavior, prop, def, defaultDefinition);
- if (behaviorDef !== undefined) {
- if (behavior === 'type' && typeof behaviorDef === 'string') {
- behaviorDef = define.types[behaviorDef];
- }
- definition[behavior] = behaviorDef;
- }
- });
- if (isEmptyObject(definition)) {
- definition.type = define.types['*'];
- }
- return definition;
- };
- getDefinitionOrMethod = function (prop, value, defaultDefinition) {
- var definition;
- if (typeof value === 'string') {
- definition = { type: value };
- } else if (typeof value === 'function') {
- if (types.isConstructor(value)) {
- definition = { Type: value };
- } else if (isDefineType(value)) {
- definition = { type: value };
- }
- } else if (isPlainObject(value)) {
- definition = value;
- }
- if (definition) {
- return makeDefinition(prop, definition, defaultDefinition);
- } else {
- return value;
- }
- };
- getDefinitionsAndMethods = function (defines) {
- var definitions = {};
- var methods = {};
- var defaults = defines['*'], defaultDefinition;
- if (defaults) {
- delete defines['*'];
- defaultDefinition = getDefinitionOrMethod('*', defaults, {});
- } else {
- defaultDefinition = {};
- }
- canEach(defines, function (value, prop) {
- if (prop === 'constructor') {
- methods[prop] = value;
- return;
- } else {
- var result = getDefinitionOrMethod(prop, value, defaultDefinition);
- if (result && typeof result === 'object') {
- definitions[prop] = result;
- } else {
- methods[prop] = result;
- }
- }
- });
- if (defaults) {
- defines['*'] = defaults;
- }
- return {
- definitions: definitions,
- methods: methods,
- defaultDefinition: defaultDefinition
- };
- };
- replaceWith = function (obj, prop, cb, writable) {
- Object.defineProperty(obj, prop, {
- configurable: true,
- get: function () {
- var value = cb.call(this, obj, prop);
- Object.defineProperty(this, prop, {
- value: value,
- writable: !!writable
- });
- return value;
- }
- });
- };
- eventsProto = assign({}, event);
- assign(eventsProto, {
- _eventSetup: function () {
- },
- _eventTeardown: function () {
- },
- addEventListener: function (eventName, handler) {
- var computedBinding = this._computed && this._computed[eventName];
- if (computedBinding && computedBinding.compute) {
- if (!computedBinding.count) {
- computedBinding.count = 1;
- computedBinding.compute.addEventListener('change', computedBinding.handler);
- } else {
- computedBinding.count++;
- }
- }
- return eventLifecycle.addAndSetup.apply(this, arguments);
- },
- removeEventListener: function (eventName, handler) {
- var computedBinding = this._computed && this._computed[eventName];
- if (computedBinding) {
- if (computedBinding.count === 1) {
- computedBinding.count = 0;
- computedBinding.compute.removeEventListener('change', computedBinding.handler);
- } else {
- computedBinding.count--;
- }
- }
- return eventLifecycle.removeAndTeardown.apply(this, arguments);
- }
- });
- eventsProto.on = eventsProto.bind = eventsProto.addEventListener;
- eventsProto.off = eventsProto.unbind = eventsProto.removeEventListener;
- delete eventsProto.one;
- var defineConfigurableAndNotEnumerable = function (obj, prop, value) {
- Object.defineProperty(obj, prop, {
- configurable: true,
- enumerable: false,
- writable: true,
- value: value
- });
- };
- define.setup = function (props, sealed) {
- defineConfigurableAndNotEnumerable(this, '_cid');
- defineConfigurableAndNotEnumerable(this, '__bindEvents', {});
- defineConfigurableAndNotEnumerable(this, '_bindings', 0);
- CID(this);
- var definitions = this._define.definitions;
- var instanceDefinitions = {};
- var map = this;
- each(props, function (value, prop) {
- if (definitions[prop]) {
- map[prop] = value;
- } else {
- var def = define.makeSimpleGetterSetter(prop);
- instanceDefinitions[prop] = {};
- Object.defineProperty(map, prop, def);
- map[prop] = define.types.observable(value);
- }
- });
- if (!isEmptyObject(instanceDefinitions)) {
- defineConfigurableAndNotEnumerable(this, '_instanceDefinitions', instanceDefinitions);
- }
- };
- define.replaceWith = replaceWith;
- define.eventsProto = eventsProto;
- define.defineConfigurableAndNotEnumerable = defineConfigurableAndNotEnumerable;
- define.make = make;
- define.getDefinitionOrMethod = getDefinitionOrMethod;
- var simpleGetterSetters = {};
- define.makeSimpleGetterSetter = function (prop) {
- if (!simpleGetterSetters[prop]) {
- var setter = make.set.events(prop, make.get.data(prop), make.set.data(prop), make.eventType.data(prop));
- simpleGetterSetters[prop] = {
- get: make.get.data(prop),
- set: function (newVal) {
- return setter.call(this, define.types.observable(newVal));
- },
- enumerable: true
- };
- }
- return simpleGetterSetters[prop];
- };
- isDefineType = function (func) {
- return func && func.canDefineType === true;
- };
- define.types = {
- 'date': function (str) {
- var type = typeof str;
- if (type === 'string') {
- str = Date.parse(str);
- return isNaN(str) ? null : new Date(str);
- } else if (type === 'number') {
- return new Date(str);
- } else {
- return str;
- }
- },
- 'number': function (val) {
- if (val == null) {
- return val;
- }
- return +val;
- },
- 'boolean': function (val) {
- if (val === 'false' || val === '0' || !val) {
- return false;
- }
- return true;
- },
- 'observable': function (newVal) {
- if (isArray(newVal) && types.DefineList) {
- newVal = new types.DefineList(newVal);
- } else if (isPlainObject(newVal) && types.DefineMap) {
- newVal = new types.DefineMap(newVal);
- }
- return newVal;
- },
- 'stringOrObservable': function (newVal) {
- if (isArray(newVal)) {
- return new types.DefaultList(newVal);
- } else if (isPlainObject(newVal)) {
- return new types.DefaultMap(newVal);
- } else {
- return define.types.string(newVal);
- }
- },
- 'htmlbool': function (val) {
- return typeof val === 'string' || !!val;
- },
- '*': function (val) {
- return val;
- },
- 'any': function (val) {
- return val;
- },
- 'string': function (val) {
- if (val == null) {
- return val;
- }
- return '' + val;
- },
- 'compute': {
- set: function (newValue, setVal, setErr, oldValue) {
- if (newValue.isComputed) {
- return newValue;
- }
- if (oldValue && oldValue.isComputed) {
- oldValue(newValue);
- return oldValue;
- }
- return newValue;
- },
- get: function (value) {
- return value && value.isComputed ? value() : value;
- }
- }
- };
- });
- /*can-define@0.7.17#define-helpers/define-helpers*/
- define('can-define@0.7.17#define-helpers/define-helpers', function (require, exports, module) {
- var assign = require('can-util/js/assign/assign');
- var CID = require('can-util/js/cid/cid');
- var define = require('can-define');
- var canBatch = require('can-event/batch/batch');
- var hasMethod = function (obj, method) {
- return obj && typeof obj === 'object' && method in obj;
- };
- var defineHelpers = {
- extendedSetup: function (props) {
- assign(this, props);
- },
- toObject: function (map, props, where, Type) {
- if (props instanceof Type) {
- props.each(function (value, prop) {
- where[prop] = value;
- });
- return where;
- } else {
- return props;
- }
- },
- defineExpando: function (map, prop, value) {
- var constructorDefines = map._define.definitions;
- if (constructorDefines && constructorDefines[prop]) {
- return;
- }
- var instanceDefines = map._instanceDefinitions;
- if (!instanceDefines) {
- instanceDefines = map._instanceDefinitions = {};
- }
- if (!instanceDefines[prop]) {
- var defaultDefinition = map._define.defaultDefinition || { type: define.types.observable };
- define.property(map, prop, defaultDefinition, {}, {});
- map._data[prop] = defaultDefinition.type ? defaultDefinition.type(value) : define.types.observable(value);
- instanceDefines[prop] = defaultDefinition;
- canBatch.start();
- canBatch.trigger.call(map, {
- type: '__keys',
- target: map
- });
- if (map._data[prop] !== undefined) {
- canBatch.trigger.call(map, {
- type: prop,
- target: map
- }, [
- map._data[prop],
- undefined
- ]);
- }
- canBatch.stop();
- return true;
- }
- },
- getValue: function (map, name, val, how) {
- if (how === 'serialize') {
- var constructorDefinitions = map._define.definitions;
- var propDef = constructorDefinitions[name];
- if (propDef && typeof propDef.serialize === 'function') {
- return propDef.serialize.call(map, val, name);
- }
- var defaultDefinition = map._define.defaultDefinition;
- if (defaultDefinition && typeof defaultDefinition.serialize === 'function') {
- return defaultDefinition.serialize.call(map, val, name);
- }
- }
- if (hasMethod(val, how)) {
- return val[how]();
- } else {
- return val;
- }
- },
- serialize: function () {
- var serializeMap = null;
- return function (map, how, where) {
- var cid = CID(map), firstSerialize = false;
- if (!serializeMap) {
- firstSerialize = true;
- serializeMap = {
- get: {},
- serialize: {}
- };
- }
- serializeMap[how][cid] = where;
- map.each(function (val, name) {
- var result, isObservable = hasMethod(val, how), serialized = isObservable && serializeMap[how][CID(val)];
- if (serialized) {
- result = serialized;
- } else {
- result = defineHelpers.getValue(map, name, val, how);
- }
- if (result !== undefined) {
- where[name] = result;
- }
- });
- if (firstSerialize) {
- serializeMap = null;
- }
- return where;
- };
- }()
- };
- module.exports = defineHelpers;
- });
- /*can-define@0.7.17#map/map*/
- define('can-define@0.7.17#map/map', function (require, exports, module) {
- var Construct = require('can-construct');
- var define = require('can-define');
- var assign = require('can-util/js/assign/assign');
- var isArray = require('can-util/js/is-array/is-array');
- var isPlainObject = require('can-util/js/is-plain-object/is-plain-object');
- var defineHelpers = require('../define-helpers/define-helpers');
- var Observation = require('can-observation');
- var types = require('can-util/js/types/types');
- var canBatch = require('can-event/batch/batch');
- var ns = require('can-util/namespace');
- var readWithoutObserve = Observation.ignore(function (map, prop) {
- return map[prop];
- });
- var eachDefinition = function (map, cb, thisarg, definitions, observe) {
- for (var prop in definitions) {
- var definition = definitions[prop];
- if (typeof definition !== 'object' || ('serialize' in definition ? !!definition.serialize : !definition.get)) {
- var item = observe === false ? readWithoutObserve(map, prop) : map[prop];
- if (cb.call(thisarg || item, item, prop, map) === false) {
- return false;
- }
- }
- }
- };
- var setProps = function (props, remove) {
- props = assign({}, props);
- var prop, self = this, newVal;
- canBatch.start();
- this.each(function (curVal, prop) {
- if (prop === '_cid') {
- return;
- }
- newVal = props[prop];
- if (newVal === undefined) {
- if (remove) {
- self[prop] = undefined;
- }
- return;
- }
- if (typeof curVal !== 'object') {
- self.set(prop, newVal);
- } else if ('set' in curVal && isPlainObject(newVal)) {
- curVal.set(newVal, remove);
- } else if ('attr' in curVal && (isPlainObject(newVal) || isArray(newVal))) {
- curVal.attr(newVal, remove);
- } else if ('replace' in curVal && isArray(newVal)) {
- curVal.replace(newVal);
- } else if (curVal !== newVal) {
- self.set(prop, newVal);
- }
- delete props[prop];
- }, this, false);
- for (prop in props) {
- if (prop !== '_cid') {
- newVal = props[prop];
- this.set(prop, newVal);
- }
- }
- canBatch.stop();
- return this;
- };
- var DefineMap = Construct.extend('DefineMap', {
- setup: function () {
- if (DefineMap) {
- var prototype = this.prototype;
- define(prototype, prototype);
- this.prototype.setup = function (props) {
- define.setup.call(this, defineHelpers.toObject(this, props, {}, DefineMap), this.constructor.seal);
- };
- }
- }
- }, {
- setup: function (props, sealed) {
- if (!this._define) {
- Object.defineProperty(this, '_define', {
- enumerable: false,
- value: { definitions: {} }
- });
- Object.defineProperty(this, '_data', {
- enumerable: false,
- value: {}
- });
- }
- define.setup.call(this, defineHelpers.toObject(this, props, {}, DefineMap), sealed === true);
- },
- get: function (prop) {
- if (arguments.length) {
- defineHelpers.defineExpando(this, prop);
- return this[prop];
- } else {
- return defineHelpers.serialize(this, 'get', {});
- }
- },
- set: function (prop, value) {
- if (typeof prop === 'object') {
- return setProps.call(this, prop, value);
- }
- var defined = defineHelpers.defineExpando(this, prop, value);
- if (!defined) {
- this[prop] = value;
- }
- return this;
- },
- serialize: function () {
- return defineHelpers.serialize(this, 'serialize', {});
- },
- forEach: function (cb, thisarg, observe) {
- if (observe !== false) {
- Observation.add(this, '__keys');
- }
- var res;
- var constructorDefinitions = this._define.definitions;
- if (constructorDefinitions) {
- res = eachDefinition(this, cb, thisarg, constructorDefinitions, observe);
- }
- if (res === false) {
- return this;
- }
- if (this._instanceDefinitions) {
- eachDefinition(this, cb, thisarg, this._instanceDefinitions, observe);
- }
- return this;
- },
- '*': { type: define.types.observable }
- });
- for (var prop in define.eventsProto) {
- Object.defineProperty(DefineMap.prototype, prop, {
- enumerable: false,
- value: define.eventsProto[prop]
- });
- }
- types.DefineMap = DefineMap;
- types.DefaultMap = DefineMap;
- DefineMap.prototype.toObject = function () {
- console.warn('Use DefineMap::get instead of DefineMap::toObject');
- return this.get();
- };
- DefineMap.prototype.each = DefineMap.prototype.forEach;
- module.exports = ns.DefineMap = DefineMap;
- });
- /*jquery@2.2.4#dist/jquery*/
- (function (global, factory) {
- if (typeof module === 'object' && typeof module.exports === 'object') {
- 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);
- }
- }(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {
- 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.4', jQuery = function (selector, context) {
- return new jQuery.fn.init(selector, context);
- }, rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, fcamelCase = function (all, letter) {
- return letter.toUpperCase();
- };
- jQuery.fn = jQuery.prototype = {
- jquery: version,
- constructor: jQuery,
- selector: '',
- length: 0,
- toArray: function () {
- return slice.call(this);
- },
- get: function (num) {
- return num != null ? num < 0 ? this[num + this.length] : this[num] : slice.call(this);
- },
- pushStack: function (elems) {
- var ret = jQuery.merge(this.constructor(), elems);
- ret.prevObject = this;
- ret.context = this.context;
- return ret;
- },
- 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();
- },
- 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;
- if (typeof target === 'boolean') {
- deep = target;
- target = arguments[i] || {};
- i++;
- }
- if (typeof target !== 'object' && !jQuery.isFunction(target)) {
- target = {};
- }
- if (i === length) {
- target = this;
- i--;
- }
- for (; i < length; i++) {
- if ((options = arguments[i]) != null) {
- for (name in options) {
- src = target[name];
- copy = options[name];
- if (target === copy) {
- continue;
- }
- 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 : {};
- }
- target[name] = jQuery.extend(deep, clone, copy);
- } else if (copy !== undefined) {
- target[name] = copy;
- }
- }
- }
- }
- return target;
- };
- jQuery.extend({
- expando: 'jQuery' + (version + Math.random()).replace(/\D/g, ''),
- 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) {
- var realStringObj = obj && obj.toString();
- return !jQuery.isArray(obj) && realStringObj - parseFloat(realStringObj) + 1 >= 0;
- },
- isPlainObject: function (obj) {
- var key;
- if (jQuery.type(obj) !== 'object' || obj.nodeType || jQuery.isWindow(obj)) {
- return false;
- }
- if (obj.constructor && !hasOwn.call(obj, 'constructor') && !hasOwn.call(obj.constructor.prototype || {}, 'isPrototypeOf')) {
- return false;
- }
- 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 + '';
- }
- return typeof obj === 'object' || typeof obj === 'function' ? class2type[toString.call(obj)] || 'object' : typeof obj;
- },
- globalEval: function (code) {
- var script, indirect = eval;
- code = jQuery.trim(code);
- if (code) {
- if (code.indexOf('use strict') === 1) {
- script = document.createElement('script');
- script.text = code;
- document.head.appendChild(script).parentNode.removeChild(script);
- } else {
- indirect(code);
- }
- }
- },
- 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;
- },
- trim: function (text) {
- return text == null ? '' : (text + '').replace(rtrim, '');
- },
- 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;
- for (; i < length; i++) {
- callbackInverse = !callback(elems[i], i);
- if (callbackInverse !== callbackExpect) {
- matches.push(elems[i]);
- }
- }
- return matches;
- },
- map: function (elems, callback, arg) {
- var length, value, i = 0, ret = [];
- if (isArrayLike(elems)) {
- length = elems.length;
- for (; i < length; i++) {
- value = callback(elems[i], i, arg);
- if (value != null) {
- ret.push(value);
- }
- }
- } else {
- for (i in elems) {
- value = callback(elems[i], i, arg);
- if (value != null) {
- ret.push(value);
- }
- }
- }
- return concat.apply([], ret);
- },
- guid: 1,
- proxy: function (fn, context) {
- var tmp, args, proxy;
- if (typeof context === 'string') {
- tmp = fn[context];
- context = fn;
- fn = tmp;
- }
- if (!jQuery.isFunction(fn)) {
- return undefined;
- }
- args = slice.call(arguments, 2);
- proxy = function () {
- return fn.apply(context || this, args.concat(slice.call(arguments)));
- };
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
- return proxy;
- },
- now: Date.now,
- support: support
- });
- if (typeof Symbol === 'function') {
- jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
- }
- jQuery.each('Boolean Number String Function Array Date RegExp Object Error Symbol'.split(' '), function (i, name) {
- class2type['[object ' + name + ']'] = name.toLowerCase();
- });
- function isArrayLike(obj) {
- 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 = function (window) {
- var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, 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;
- }, MAX_NEGATIVE = 1 << 31, hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, 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', whitespace = '[\\x20\\t\\r\\n\\f]', identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+', attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]', pseudos = ':(' + identifier + ')(?:\\((' + '(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + '((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + '.*' + ')\\)|)', 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'),
- '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/, rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'), funescape = function (_, escaped, escapedWhitespace) {
- var high = '0x' + escaped - 65536;
- return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
- }, unloadHandler = function () {
- setDocument();
- };
- try {
- push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
- arr[preferredDoc.childNodes.length].nodeType;
- } catch (e) {
- push = {
- apply: arr.length ? function (target, els) {
- push_native.apply(target, slice.call(els));
- } : function (target, els) {
- var j = target.length, i = 0;
- 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 = context ? context.nodeType : 9;
- results = results || [];
- if (typeof selector !== 'string' || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
- return results;
- }
- if (!seed) {
- if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
- setDocument(context);
- }
- context = context || document;
- if (documentIsHTML) {
- if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
- if (m = match[1]) {
- if (nodeType === 9) {
- if (elem = context.getElementById(m)) {
- if (elem.id === m) {
- results.push(elem);
- return results;
- }
- } else {
- return results;
- }
- } else {
- if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
- results.push(elem);
- return results;
- }
- }
- } else if (match[2]) {
- push.apply(results, context.getElementsByTagName(selector));
- return results;
- } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {
- push.apply(results, context.getElementsByClassName(m));
- return results;
- }
- }
- if (support.qsa && !compilerCache[selector + ' '] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
- if (nodeType !== 1) {
- newContext = context;
- newSelector = selector;
- } else if (context.nodeName.toLowerCase() !== 'object') {
- if (nid = context.getAttribute('id')) {
- nid = nid.replace(rescape, '\\$&');
- } else {
- context.setAttribute('id', nid = expando);
- }
- groups = tokenize(selector);
- i = groups.length;
- nidselect = ridentifier.test(nid) ? '#' + nid : '[id=\'' + nid + '\']';
- while (i--) {
- groups[i] = nidselect + ' ' + toSelector(groups[i]);
- }
- newSelector = groups.join(',');
- 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');
- }
- }
- }
- }
- }
- }
- return select(selector.replace(rtrim, '$1'), context, results, seed);
- }
- function createCache() {
- var keys = [];
- function cache(key, value) {
- if (keys.push(key + ' ') > Expr.cacheLength) {
- delete cache[keys.shift()];
- }
- return cache[key + ' '] = value;
- }
- return cache;
- }
- function markFunction(fn) {
- fn[expando] = true;
- return fn;
- }
- function assert(fn) {
- var div = document.createElement('div');
- try {
- return !!fn(div);
- } catch (e) {
- return false;
- } finally {
- if (div.parentNode) {
- div.parentNode.removeChild(div);
- }
- div = null;
- }
- }
- function addHandle(attrs, handler) {
- var arr = attrs.split('|'), i = arr.length;
- while (i--) {
- Expr.attrHandle[arr[i]] = handler;
- }
- }
- function siblingCheck(a, b) {
- var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
- if (diff) {
- return diff;
- }
- if (cur) {
- while (cur = cur.nextSibling) {
- if (cur === b) {
- return -1;
- }
- }
- }
- return a ? 1 : -1;
- }
- function createInputPseudo(type) {
- return function (elem) {
- var name = elem.nodeName.toLowerCase();
- return name === 'input' && elem.type === type;
- };
- }
- function createButtonPseudo(type) {
- return function (elem) {
- var name = elem.nodeName.toLowerCase();
- return (name === 'input' || name === 'button') && elem.type === type;
- };
- }
- function createPositionalPseudo(fn) {
- return markFunction(function (argument) {
- argument = +argument;
- return markFunction(function (seed, matches) {
- var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;
- while (i--) {
- if (seed[j = matchIndexes[i]]) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
- }
- function testContext(context) {
- return context && typeof context.getElementsByTagName !== 'undefined' && context;
- }
- support = Sizzle.support = {};
- isXML = Sizzle.isXML = function (elem) {
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== 'HTML' : false;
- };
- setDocument = Sizzle.setDocument = function (node) {
- var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc;
- if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
- return document;
- }
- document = doc;
- docElem = document.documentElement;
- documentIsHTML = !isXML(document);
- if ((parent = document.defaultView) && parent.top !== parent) {
- if (parent.addEventListener) {
- parent.addEventListener('unload', unloadHandler, false);
- } else if (parent.attachEvent) {
- parent.attachEvent('onunload', unloadHandler);
- }
- }
- support.attributes = assert(function (div) {
- div.className = 'i';
- return !div.getAttribute('className');
- });
- support.getElementsByTagName = assert(function (div) {
- div.appendChild(document.createComment(''));
- return !div.getElementsByTagName('*').length;
- });
- support.getElementsByClassName = rnative.test(document.getElementsByClassName);
- support.getById = assert(function (div) {
- docElem.appendChild(div).id = expando;
- return !document.getElementsByName || !document.getElementsByName(expando).length;
- });
- 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 {
- 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;
- };
- };
- }
- Expr.find['TAG'] = support.getElementsByTagName ? function (tag, context) {
- if (typeof context.getElementsByTagName !== 'undefined') {
- return context.getElementsByTagName(tag);
- } else if (support.qsa) {
- return context.querySelectorAll(tag);
- }
- } : function (tag, context) {
- var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);
- if (tag === '*') {
- while (elem = results[i++]) {
- if (elem.nodeType === 1) {
- tmp.push(elem);
- }
- }
- return tmp;
- }
- return results;
- };
- Expr.find['CLASS'] = support.getElementsByClassName && function (className, context) {
- if (typeof context.getElementsByClassName !== 'undefined' && documentIsHTML) {
- return context.getElementsByClassName(className);
- }
- };
- rbuggyMatches = [];
- rbuggyQSA = [];
- if (support.qsa = rnative.test(document.querySelectorAll)) {
- assert(function (div) {
- docElem.appendChild(div).innerHTML = '<a id=\'' + expando + '\'></a>' + '<select id=\'' + expando + '-\r\\\' msallowcapture=\'\'>' + '<option selected=\'\'></option></select>';
- if (div.querySelectorAll('[msallowcapture^=\'\']').length) {
- rbuggyQSA.push('[*^$]=' + whitespace + '*(?:\'\'|"")');
- }
- if (!div.querySelectorAll('[selected]').length) {
- rbuggyQSA.push('\\[' + whitespace + '*(?:value|' + booleans + ')');
- }
- if (!div.querySelectorAll('[id~=' + expando + '-]').length) {
- rbuggyQSA.push('~=');
- }
- if (!div.querySelectorAll(':checked').length) {
- rbuggyQSA.push(':checked');
- }
- if (!div.querySelectorAll('a#' + expando + '+*').length) {
- rbuggyQSA.push('.#.+[+~]');
- }
- });
- assert(function (div) {
- var input = document.createElement('input');
- input.setAttribute('type', 'hidden');
- div.appendChild(input).setAttribute('name', 'D');
- if (div.querySelectorAll('[name=d]').length) {
- rbuggyQSA.push('name' + whitespace + '*[*^$|!~]?=');
- }
- if (!div.querySelectorAll(':enabled').length) {
- rbuggyQSA.push(':enabled', ':disabled');
- }
- div.querySelectorAll('*,:x');
- rbuggyQSA.push(',.*:');
- });
- }
- if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
- assert(function (div) {
- support.disconnectedMatch = matches.call(div, 'div');
- matches.call(div, '[s!=\'\']:x');
- rbuggyMatches.push('!=', pseudos);
- });
- }
- rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));
- rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));
- hasCompare = rnative.test(docElem.compareDocumentPosition);
- 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;
- };
- sortOrder = hasCompare ? function (a, b) {
- if (a === b) {
- hasDuplicate = true;
- return 0;
- }
- var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
- if (compare) {
- return compare;
- }
- compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
- if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
- if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {
- return -1;
- }
- if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {
- return 1;
- }
- return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
- }
- return compare & 4 ? -1 : 1;
- } : function (a, b) {
- if (a === b) {
- hasDuplicate = true;
- return 0;
- }
- var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];
- if (!aup || !bup) {
- return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
- } else if (aup === bup) {
- return siblingCheck(a, b);
- }
- cur = a;
- while (cur = cur.parentNode) {
- ap.unshift(cur);
- }
- cur = b;
- while (cur = cur.parentNode) {
- bp.unshift(cur);
- }
- while (ap[i] === bp[i]) {
- i++;
- }
- return i ? siblingCheck(ap[i], bp[i]) : 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) {
- if ((elem.ownerDocument || elem) !== document) {
- setDocument(elem);
- }
- 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);
- if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {
- return ret;
- }
- } catch (e) {
- }
- }
- return Sizzle(expr, document, null, [elem]).length > 0;
- };
- Sizzle.contains = function (context, elem) {
- if ((context.ownerDocument || context) !== document) {
- setDocument(context);
- }
- return contains(context, elem);
- };
- Sizzle.attr = function (elem, name) {
- if ((elem.ownerDocument || elem) !== document) {
- setDocument(elem);
- }
- var fn = Expr.attrHandle[name.toLowerCase()], 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);
- };
- Sizzle.uniqueSort = function (results) {
- var elem, duplicates = [], j = 0, i = 0;
- 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);
- }
- }
- sortInput = null;
- return results;
- };
- getText = Sizzle.getText = function (elem) {
- var node, ret = '', i = 0, nodeType = elem.nodeType;
- if (!nodeType) {
- while (node = elem[i++]) {
- ret += getText(node);
- }
- } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
- if (typeof elem.textContent === 'string') {
- return elem.textContent;
- } else {
- for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText(elem);
- }
- }
- } else if (nodeType === 3 || nodeType === 4) {
- return elem.nodeValue;
- }
- return ret;
- };
- Expr = Sizzle.selectors = {
- 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);
- 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) {
- match[1] = match[1].toLowerCase();
- if (match[1].slice(0, 3) === 'nth') {
- if (!match[3]) {
- Sizzle.error(match[0]);
- }
- 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');
- } 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;
- }
- if (match[3]) {
- match[2] = match[4] || match[5] || '';
- } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {
- match[0] = match[0].slice(0, excess);
- match[2] = unquoted.slice(0, excess);
- }
- 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 ? 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) {
- if (simple) {
- while (dir) {
- node = elem;
- while (node = node[dir]) {
- if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
- return false;
- }
- }
- start = dir = type === 'only' && !start && 'nextSibling';
- }
- return true;
- }
- start = [forward ? parent.firstChild : parent.lastChild];
- if (forward && useCache) {
- node = parent;
- outerCache = node[expando] || (node[expando] = {});
- 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()) {
- if (node.nodeType === 1 && ++diff && node === elem) {
- uniqueCache[type] = [
- dirruns,
- nodeIndex,
- diff
- ];
- break;
- }
- }
- } else {
- if (useCache) {
- node = elem;
- outerCache = node[expando] || (node[expando] = {});
- uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
- cache = uniqueCache[type] || [];
- nodeIndex = cache[0] === dirruns && cache[1];
- diff = nodeIndex;
- }
- if (diff === false) {
- while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
- if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
- if (useCache) {
- outerCache = node[expando] || (node[expando] = {});
- uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
- uniqueCache[type] = [
- dirruns,
- diff
- ];
- }
- if (node === elem) {
- break;
- }
- }
- }
- }
- }
- diff -= last;
- return diff === first || diff % first === 0 && diff / first >= 0;
- }
- };
- },
- 'PSEUDO': function (pseudo, argument) {
- var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);
- if (fn[expando]) {
- return fn(argument);
- }
- 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: {
- 'not': markFunction(function (selector) {
- 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;
- while (i--) {
- if (elem = unmatched[i]) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) : function (elem, context, xml) {
- input[0] = elem;
- matcher(input, null, xml, results);
- 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;
- };
- }),
- 'lang': markFunction(function (lang) {
- 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;
- };
- }),
- '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);
- },
- 'enabled': function (elem) {
- return elem.disabled === false;
- },
- 'disabled': function (elem) {
- return elem.disabled === true;
- },
- 'checked': function (elem) {
- var nodeName = elem.nodeName.toLowerCase();
- return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;
- },
- 'selected': function (elem) {
- if (elem.parentNode) {
- elem.parentNode.selectedIndex;
- }
- return elem.selected === true;
- },
- 'empty': function (elem) {
- for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
- if (elem.nodeType < 6) {
- return false;
- }
- }
- return true;
- },
- 'parent': function (elem) {
- return !Expr.pseudos['empty'](elem);
- },
- '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');
- },
- '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'];
- 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);
- }
- 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) {
- if (!matched || (match = rcomma.exec(soFar))) {
- if (match) {
- soFar = soFar.slice(match[0].length) || soFar;
- }
- groups.push(tokens = []);
- }
- matched = false;
- if (match = rcombinators.exec(soFar)) {
- matched = match.shift();
- tokens.push({
- value: matched,
- type: match[0].replace(rtrim, ' ')
- });
- soFar = soFar.slice(matched.length);
- }
- 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 parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : 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 ? function (elem, context, xml) {
- while (elem = elem[dir]) {
- if (elem.nodeType === 1 || checkNonElements) {
- return matcher(elem, context, xml);
- }
- }
- } : function (elem, context, xml) {
- var oldCache, uniqueCache, outerCache, newCache = [
- dirruns,
- doneName
- ];
- 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] = {});
- uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
- if ((oldCache = uniqueCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
- return newCache[2] = oldCache[2];
- } else {
- uniqueCache[dir] = newCache;
- 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, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
- if (matcher) {
- matcher(matcherIn, matcherOut, context, xml);
- }
- if (postFilter) {
- temp = condense(matcherOut, postMap);
- postFilter(temp, [], context, xml);
- i = temp.length;
- while (i--) {
- if (elem = temp[i]) {
- matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
- }
- }
- }
- if (seed) {
- if (postFinder || preFilter) {
- if (postFinder) {
- temp = [];
- i = matcherOut.length;
- while (i--) {
- if (elem = matcherOut[i]) {
- temp.push(matcherIn[i] = elem);
- }
- }
- postFinder(null, matcherOut = [], temp, xml);
- }
- i = matcherOut.length;
- while (i--) {
- if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {
- seed[temp] = !(results[temp] = elem);
- }
- }
- }
- } 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, 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));
- 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);
- if (matcher[expando]) {
- j = ++i;
- for (; j < len; j++) {
- if (Expr.relative[tokens[j].type]) {
- break;
- }
- }
- return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(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, elems = seed || byElement && Expr.find['TAG']('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
- if (outermost) {
- outermostContext = context === document || context || outermost;
- }
- 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;
- }
- }
- if (bySet) {
- if (elem = !matcher && elem) {
- matchedCount--;
- }
- if (seed) {
- unmatched.push(elem);
- }
- }
- }
- matchedCount += i;
- if (bySet && i !== matchedCount) {
- j = 0;
- while (matcher = setMatchers[j++]) {
- matcher(unmatched, setMatched, context, xml);
- }
- if (seed) {
- if (matchedCount > 0) {
- while (i--) {
- if (!(unmatched[i] || setMatched[i])) {
- setMatched[i] = pop.call(results);
- }
- }
- }
- setMatched = condense(setMatched);
- }
- push.apply(results, setMatched);
- if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
- Sizzle.uniqueSort(results);
- }
- }
- 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) {
- if (!match) {
- match = tokenize(selector);
- }
- i = match.length;
- while (i--) {
- cached = matcherFromTokens(match[i]);
- if (cached[expando]) {
- setMatchers.push(cached);
- } else {
- elementMatchers.push(cached);
- }
- }
- cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
- cached.selector = selector;
- }
- return cached;
- };
- 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 || [];
- if (match.length === 1) {
- 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;
- } else if (compiled) {
- context = context.parentNode;
- }
- selector = selector.slice(tokens.shift().value.length);
- }
- i = matchExpr['needsContext'].test(selector) ? 0 : tokens.length;
- while (i--) {
- token = tokens[i];
- if (Expr.relative[type = token.type]) {
- break;
- }
- if (find = Expr.find[type]) {
- if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
- tokens.splice(i, 1);
- selector = seed.length && toSelector(tokens);
- if (!selector) {
- push.apply(results, seed);
- return results;
- }
- break;
- }
- }
- }
- }
- (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
- return results;
- };
- support.sortStable = expando.split('').sort(sortOrder).join('') === expando;
- support.detectDuplicates = !!hasDuplicate;
- setDocument();
- support.sortDetached = assert(function (div1) {
- return div1.compareDocumentPosition(document.createElement('div')) & 1;
- });
- 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);
- }
- });
- }
- 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;
- }
- });
- }
- 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 = /^.[^:#\[\.,]*$/;
- function winnow(elements, qualifier, not) {
- if (jQuery.isFunction(qualifier)) {
- return jQuery.grep(elements, function (elem, i) {
- 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);
- }
- 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, typeof selector === 'string' && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
- }
- });
- var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function (selector, context, root) {
- var match, elem;
- if (!selector) {
- return this;
- }
- root = root || rootjQuery;
- if (typeof selector === 'string') {
- if (selector[0] === '<' && selector[selector.length - 1] === '>' && selector.length >= 3) {
- match = [
- null,
- selector,
- null
- ];
- } else {
- match = rquickExpr.exec(selector);
- }
- if (match && (match[1] || !context)) {
- if (match[1]) {
- context = context instanceof jQuery ? context[0] : context;
- jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));
- if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
- for (match in context) {
- if (jQuery.isFunction(this[match])) {
- this[match](context[match]);
- } else {
- this.attr(match, context[match]);
- }
- }
- }
- return this;
- } else {
- elem = document.getElementById(match[2]);
- if (elem && elem.parentNode) {
- this.length = 1;
- this[0] = elem;
- }
- this.context = document;
- this.selector = selector;
- return this;
- }
- } else if (!context || context.jquery) {
- return (context || root).find(selector);
- } else {
- return this.constructor(context).find(selector);
- }
- } else if (selector.nodeType) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- } else if (jQuery.isFunction(selector)) {
- return root.ready !== undefined ? root.ready(selector) : selector(jQuery);
- }
- if (selector.selector !== undefined) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
- return jQuery.makeArray(selector, this);
- };
- init.prototype = jQuery.fn;
- rootjQuery = jQuery(document);
- var rparentsprev = /^(?:parents|prev(?:Until|All))/, 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) {
- if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {
- matched.push(cur);
- break;
- }
- }
- }
- return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
- },
- index: function (elem) {
- if (!elem) {
- return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
- }
- if (typeof elem === 'string') {
- return indexOf.call(jQuery(elem), this[0]);
- }
- return indexOf.call(this, 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) {
- if (!guaranteedUnique[name]) {
- jQuery.uniqueSort(matched);
- }
- if (rparentsprev.test(name)) {
- matched.reverse();
- }
- }
- return this.pushStack(matched);
- };
- });
- var rnotwhite = /\S+/g;
- function createOptions(options) {
- var object = {};
- jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
- object[flag] = true;
- });
- return object;
- }
- jQuery.Callbacks = function (options) {
- options = typeof options === 'string' ? createOptions(options) : jQuery.extend({}, options);
- var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function () {
- locked = options.once;
- fired = firing = true;
- for (; queue.length; firingIndex = -1) {
- memory = queue.shift();
- while (++firingIndex < list.length) {
- if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
- firingIndex = list.length;
- memory = false;
- }
- }
- }
- if (!options.memory) {
- memory = false;
- }
- firing = false;
- if (locked) {
- if (memory) {
- list = [];
- } else {
- list = '';
- }
- }
- }, self = {
- add: function () {
- if (list) {
- 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') {
- add(arg);
- }
- });
- }(arguments));
- if (memory && !firing) {
- fire();
- }
- }
- return this;
- },
- remove: function () {
- jQuery.each(arguments, function (_, arg) {
- var index;
- while ((index = jQuery.inArray(arg, list, index)) > -1) {
- list.splice(index, 1);
- if (index <= firingIndex) {
- firingIndex--;
- }
- }
- });
- return this;
- },
- has: function (fn) {
- return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;
- },
- empty: function () {
- if (list) {
- list = [];
- }
- return this;
- },
- disable: function () {
- locked = queue = [];
- list = memory = '';
- return this;
- },
- disabled: function () {
- return !list;
- },
- lock: function () {
- locked = queue = [];
- if (!memory) {
- list = memory = '';
- }
- return this;
- },
- locked: function () {
- return !!locked;
- },
- fireWith: function (context, args) {
- if (!locked) {
- args = args || [];
- args = [
- context,
- args.slice ? args.slice() : args
- ];
- queue.push(args);
- if (!firing) {
- fire();
- }
- }
- return this;
- },
- fire: function () {
- self.fireWith(this, arguments);
- return this;
- },
- fired: function () {
- return !!fired;
- }
- };
- return self;
- };
- jQuery.extend({
- Deferred: function (func) {
- var tuples = [
- [
- '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[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();
- },
- promise: function (obj) {
- return obj != null ? jQuery.extend(obj, promise) : promise;
- }
- }, deferred = {};
- promise.pipe = promise.then;
- jQuery.each(tuples, function (i, tuple) {
- var list = tuple[2], stateString = tuple[3];
- promise[tuple[1]] = list.add;
- if (stateString) {
- list.add(function () {
- state = stateString;
- }, tuples[i ^ 1][2].disable, tuples[2][2].lock);
- }
- deferred[tuple[0]] = function () {
- deferred[tuple[0] + 'With'](this === deferred ? promise : this, arguments);
- return this;
- };
- deferred[tuple[0] + 'With'] = list.fireWith;
- });
- promise.promise(deferred);
- if (func) {
- func.call(deferred, deferred);
- }
- return deferred;
- },
- when: function (subordinate) {
- var i = 0, resolveValues = slice.call(arguments), length = resolveValues.length, remaining = length !== 1 || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0, deferred = remaining === 1 ? subordinate : jQuery.Deferred(), 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;
- 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 (!remaining) {
- deferred.resolveWith(resolveContexts, resolveValues);
- }
- return deferred.promise();
- }
- });
- var readyList;
- jQuery.fn.ready = function (fn) {
- jQuery.ready.promise().done(fn);
- return this;
- };
- jQuery.extend({
- isReady: false,
- readyWait: 1,
- holdReady: function (hold) {
- if (hold) {
- jQuery.readyWait++;
- } else {
- jQuery.ready(true);
- }
- },
- ready: function (wait) {
- if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
- return;
- }
- jQuery.isReady = true;
- if (wait !== true && --jQuery.readyWait > 0) {
- return;
- }
- readyList.resolveWith(document, [jQuery]);
- if (jQuery.fn.triggerHandler) {
- jQuery(document).triggerHandler('ready');
- jQuery(document).off('ready');
- }
- }
- });
- function completed() {
- document.removeEventListener('DOMContentLoaded', completed);
- window.removeEventListener('load', completed);
- jQuery.ready();
- }
- jQuery.ready.promise = function (obj) {
- if (!readyList) {
- readyList = jQuery.Deferred();
- if (document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll) {
- window.setTimeout(jQuery.ready);
- } else {
- document.addEventListener('DOMContentLoaded', completed);
- window.addEventListener('load', completed);
- }
- }
- return readyList.promise(obj);
- };
- jQuery.ready.promise();
- var access = function (elems, fn, key, value, chainable, emptyGet, raw) {
- var i = 0, len = elems.length, bulk = key == null;
- if (jQuery.type(key) === 'object') {
- chainable = true;
- for (i in key) {
- access(elems, fn, i, key[i], true, emptyGet, raw);
- }
- } else if (value !== undefined) {
- chainable = true;
- if (!jQuery.isFunction(value)) {
- raw = true;
- }
- if (bulk) {
- if (raw) {
- fn.call(elems, value);
- fn = null;
- } 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 : bulk ? fn.call(elems) : len ? fn(elems[0], key) : emptyGet;
- };
- var acceptData = function (owner) {
- 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 (owner.nodeType) {
- owner[this.expando] = value;
- } else {
- Object.defineProperty(owner, this.expando, {
- value: value,
- writable: true,
- configurable: true
- });
- }
- return owner[this.expando];
- },
- cache: function (owner) {
- if (!acceptData(owner)) {
- return {};
- }
- var value = owner[this.expando];
- if (!value) {
- value = {};
- if (acceptData(owner)) {
- if (owner.nodeType) {
- owner[this.expando] = value;
- } else {
- Object.defineProperty(owner, this.expando, {
- value: value,
- configurable: true
- });
- }
- }
- }
- return value;
- },
- set: function (owner, data, value) {
- var prop, cache = this.cache(owner);
- if (typeof data === 'string') {
- cache[data] = value;
- } else {
- 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;
- if (key === undefined || key && typeof key === 'string' && value === undefined) {
- stored = this.get(owner, key);
- return stored !== undefined ? stored : this.get(owner, jQuery.camelCase(key));
- }
- this.set(owner, key, value);
- 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 {
- if (jQuery.isArray(key)) {
- name = key.concat(key.map(jQuery.camelCase));
- } else {
- camel = jQuery.camelCase(key);
- if (key in cache) {
- name = [
- key,
- camel
- ];
- } else {
- name = camel;
- name = name in cache ? [name] : name.match(rnotwhite) || [];
- }
- }
- i = name.length;
- while (i--) {
- delete cache[name[i]];
- }
- }
- if (key === undefined || jQuery.isEmptyObject(cache)) {
- 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();
- var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
- function dataAttr(elem, key, data) {
- var name;
- 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 : +data + '' === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
- } catch (e) {
- }
- 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);
- },
- _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;
- if (key === undefined) {
- if (this.length) {
- data = dataUser.get(elem);
- if (elem.nodeType === 1 && !dataPriv.get(elem, 'hasDataAttrs')) {
- i = attrs.length;
- while (i--) {
- 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;
- }
- if (typeof key === 'object') {
- return this.each(function () {
- dataUser.set(this, key);
- });
- }
- return access(this, function (value) {
- var data, camelKey;
- if (elem && value === undefined) {
- data = dataUser.get(elem, key) || dataUser.get(elem, key.replace(rmultiDash, '-$&').toLowerCase());
- if (data !== undefined) {
- return data;
- }
- camelKey = jQuery.camelCase(key);
- data = dataUser.get(elem, camelKey);
- if (data !== undefined) {
- return data;
- }
- data = dataAttr(elem, camelKey, undefined);
- if (data !== undefined) {
- return data;
- }
- return;
- }
- camelKey = jQuery.camelCase(key);
- this.each(function () {
- var data = dataUser.get(this, camelKey);
- dataUser.set(this, camelKey, value);
- 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);
- 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 (fn === 'inprogress') {
- fn = queue.shift();
- startLength--;
- }
- if (fn) {
- if (type === 'fx') {
- queue.unshift('inprogress');
- }
- delete hooks.stop;
- fn.call(elem, next, hooks);
- }
- if (!startLength && hooks) {
- hooks.empty.fire();
- }
- },
- _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);
- 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', []);
- },
- 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) {
- 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'), initialInUnit = (jQuery.cssNumber[prop] || unit !== 'px' && +initial) && rcssNum.exec(jQuery.css(elem, prop));
- if (initialInUnit && initialInUnit[3] !== unit) {
- unit = unit || initialInUnit[3];
- valueParts = valueParts || [];
- initialInUnit = +initial || 1;
- do {
- scale = scale || '.5';
- initialInUnit = initialInUnit / scale;
- jQuery.style(elem, prop, initialInUnit + unit);
- } while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations);
- }
- if (valueParts) {
- initialInUnit = +initialInUnit || +initial || 0;
- 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;
- var wrapMap = {
- option: [
- 1,
- '<select multiple=\'multiple\'>',
- '</select>'
- ],
- 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,
- '',
- ''
- ]
- };
- wrapMap.optgroup = wrapMap.option;
- wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
- wrapMap.th = wrapMap.td;
- function getAll(context, tag) {
- 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;
- }
- 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) {
- if (jQuery.type(elem) === 'object') {
- jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
- } else if (!rhtml.test(elem)) {
- nodes.push(context.createTextNode(elem));
- } else {
- tmp = tmp || fragment.appendChild(context.createElement('div'));
- tag = (rtagName.exec(elem) || [
- '',
- ''
- ])[1].toLowerCase();
- wrap = wrapMap[tag] || wrapMap._default;
- tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
- j = wrap[0];
- while (j--) {
- tmp = tmp.lastChild;
- }
- jQuery.merge(nodes, tmp.childNodes);
- tmp = fragment.firstChild;
- tmp.textContent = '';
- }
- }
- }
- fragment.textContent = '';
- i = 0;
- while (elem = nodes[i++]) {
- if (selection && jQuery.inArray(elem, selection) > -1) {
- if (ignored) {
- ignored.push(elem);
- }
- continue;
- }
- contains = jQuery.contains(elem.ownerDocument, elem);
- tmp = getAll(fragment.appendChild(elem), 'script');
- if (contains) {
- setGlobalEval(tmp);
- }
- 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');
- input.setAttribute('type', 'radio');
- input.setAttribute('checked', 'checked');
- input.setAttribute('name', 't');
- div.appendChild(input);
- support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
- 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;
- }
- function safeActiveElement() {
- try {
- return document.activeElement;
- } catch (err) {
- }
- }
- function on(elem, types, selector, data, fn, one) {
- var origFn, type;
- if (typeof types === 'object') {
- if (typeof selector !== 'string') {
- data = data || selector;
- selector = undefined;
- }
- for (type in types) {
- on(elem, type, selector, data, types[type], one);
- }
- return elem;
- }
- if (data == null && fn == null) {
- fn = selector;
- data = selector = undefined;
- } else if (fn == null) {
- if (typeof selector === 'string') {
- fn = data;
- data = undefined;
- } else {
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if (fn === false) {
- fn = returnFalse;
- } else if (!fn) {
- return elem;
- }
- if (one === 1) {
- origFn = fn;
- fn = function (event) {
- jQuery().off(event);
- return origFn.apply(this, arguments);
- };
- fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
- }
- return elem.each(function () {
- jQuery.event.add(this, types, fn, data, selector);
- });
- }
- 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);
- if (!elemData) {
- return;
- }
- if (handler.handler) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
- if (!handler.guid) {
- handler.guid = jQuery.guid++;
- }
- if (!(events = elemData.events)) {
- events = elemData.events = {};
- }
- if (!(eventHandle = elemData.handle)) {
- eventHandle = elemData.handle = function (e) {
- return typeof jQuery !== 'undefined' && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;
- };
- }
- types = (types || '').match(rnotwhite) || [''];
- t = types.length;
- while (t--) {
- tmp = rtypenamespace.exec(types[t]) || [];
- type = origType = tmp[1];
- namespaces = (tmp[2] || '').split('.').sort();
- if (!type) {
- continue;
- }
- special = jQuery.event.special[type] || {};
- type = (selector ? special.delegateType : special.bindType) || type;
- special = jQuery.event.special[type] || {};
- 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);
- if (!(handlers = events[type])) {
- handlers = events[type] = [];
- handlers.delegateCount = 0;
- 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;
- }
- }
- if (selector) {
- handlers.splice(handlers.delegateCount++, 0, handleObj);
- } else {
- handlers.push(handleObj);
- }
- jQuery.event.global[type] = true;
- }
- },
- 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;
- }
- types = (types || '').match(rnotwhite) || [''];
- t = types.length;
- while (t--) {
- tmp = rtypenamespace.exec(types[t]) || [];
- type = origType = tmp[1];
- namespaces = (tmp[2] || '').split('.').sort();
- 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('\\.(?:.*\\.|)') + '(\\.|$)');
- 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);
- }
- }
- }
- if (origCount && !handlers.length) {
- if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
- jQuery.removeEvent(elem, type, elemData.handle);
- }
- delete events[type];
- }
- }
- if (jQuery.isEmptyObject(events)) {
- dataPriv.remove(elem, 'handle events');
- }
- },
- dispatch: function (event) {
- 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] || {};
- args[0] = event;
- event.delegateTarget = this;
- if (special.preDispatch && special.preDispatch.call(this, event) === false) {
- return;
- }
- handlerQueue = jQuery.event.handlers.call(this, event, handlers);
- i = 0;
- while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
- event.currentTarget = matched.elem;
- j = 0;
- while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
- 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();
- }
- }
- }
- }
- }
- 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;
- if (delegateCount && cur.nodeType && (event.type !== 'click' || isNaN(event.button) || event.button < 1)) {
- for (; cur !== this; cur = cur.parentNode || this) {
- if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== 'click')) {
- matches = [];
- for (i = 0; i < delegateCount; i++) {
- handleObj = handlers[i];
- 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
- });
- }
- }
- }
- }
- if (delegateCount < handlers.length) {
- handlerQueue.push({
- elem: this,
- handlers: handlers.slice(delegateCount)
- });
- }
- return handlerQueue;
- },
- 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) {
- 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;
- 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);
- }
- 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;
- }
- 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];
- }
- if (!event.target) {
- event.target = document;
- }
- if (event.target.nodeType === 3) {
- event.target = event.target.parentNode;
- }
- return fixHook.filter ? fixHook.filter(event, originalEvent) : event;
- },
- special: {
- load: { noBubble: true },
- focus: {
- 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: {
- trigger: function () {
- if (this.type === 'checkbox' && this.click && jQuery.nodeName(this, 'input')) {
- this.click();
- return false;
- }
- },
- _default: function (event) {
- return jQuery.nodeName(event.target, 'a');
- }
- },
- beforeunload: {
- postDispatch: function (event) {
- if (event.result !== undefined && event.originalEvent) {
- event.originalEvent.returnValue = event.result;
- }
- }
- }
- }
- };
- jQuery.removeEvent = function (elem, type, handle) {
- if (elem.removeEventListener) {
- elem.removeEventListener(type, handle);
- }
- };
- jQuery.Event = function (src, props) {
- if (!(this instanceof jQuery.Event)) {
- return new jQuery.Event(src, props);
- }
- if (src && src.type) {
- this.originalEvent = src;
- this.type = src.type;
- this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && src.returnValue === false ? returnTrue : returnFalse;
- } else {
- this.type = src;
- }
- if (props) {
- jQuery.extend(this, props);
- }
- this.timeStamp = src && src.timeStamp || jQuery.now();
- this[jQuery.expando] = true;
- };
- jQuery.Event.prototype = {
- constructor: jQuery.Event,
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse,
- isSimulated: false,
- preventDefault: function () {
- var e = this.originalEvent;
- this.isDefaultPrevented = returnTrue;
- if (e && !this.isSimulated) {
- e.preventDefault();
- }
- },
- stopPropagation: function () {
- var e = this.originalEvent;
- this.isPropagationStopped = returnTrue;
- if (e && !this.isSimulated) {
- e.stopPropagation();
- }
- },
- stopImmediatePropagation: function () {
- var e = this.originalEvent;
- this.isImmediatePropagationStopped = returnTrue;
- if (e && !this.isSimulated) {
- e.stopImmediatePropagation();
- }
- this.stopPropagation();
- }
- };
- 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;
- 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) {
- 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') {
- for (type in types) {
- this.off(type, selector, types[type]);
- }
- return this;
- }
- if (selector === false || typeof selector === 'function') {
- 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, rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
- 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;
- }
- 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;
- }
- 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]);
- }
- }
- }
- }
- if (dataUser.hasData(src)) {
- udataOld = dataUser.access(src);
- udataCur = jQuery.extend({}, udataOld);
- dataUser.set(dest, udataCur);
- }
- }
- function fixInput(src, dest) {
- var nodeName = dest.nodeName.toLowerCase();
- if (nodeName === 'input' && rcheckableType.test(src.type)) {
- dest.checked = src.checked;
- } else if (nodeName === 'input' || nodeName === 'textarea') {
- dest.defaultValue = src.defaultValue;
- }
- }
- function domManip(collection, args, callback, ignored) {
- 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);
- 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;
- }
- if (first || ignored) {
- scripts = jQuery.map(getAll(fragment, 'script'), disableScript);
- hasScripts = scripts.length;
- for (; i < l; i++) {
- node = fragment;
- if (i !== iNoClone) {
- node = jQuery.clone(node, true, true);
- if (hasScripts) {
- jQuery.merge(scripts, getAll(node, 'script'));
- }
- }
- callback.call(collection[i], node, i);
- }
- if (hasScripts) {
- doc = scripts[scripts.length - 1].ownerDocument;
- jQuery.map(scripts, restoreScript);
- 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) {
- 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);
- if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
- destElements = getAll(clone);
- srcElements = getAll(elem);
- for (i = 0, l = srcElements.length; i < l; i++) {
- fixInput(srcElements[i], destElements[i]);
- }
- }
- 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);
- }
- }
- destElements = getAll(clone, 'script');
- if (destElements.length > 0) {
- setGlobalEval(destElements, !inPage && getAll(elem, 'script'));
- }
- 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);
- } else {
- jQuery.removeEvent(elem, type, data.handle);
- }
- }
- }
- elem[dataPriv.expando] = undefined;
- }
- if (elem[dataUser.expando]) {
- elem[dataUser.expando] = undefined;
- }
- }
- }
- }
- });
- jQuery.fn.extend({
- 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) {
- jQuery.cleanData(getAll(elem, false));
- 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;
- }
- 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] || {};
- if (elem.nodeType === 1) {
- jQuery.cleanData(getAll(elem, false));
- elem.innerHTML = value;
- }
- }
- elem = 0;
- } catch (e) {
- }
- }
- if (elem) {
- this.empty().append(value);
- }
- }, null, value, arguments.length);
- },
- replaceWith: function () {
- var ignored = [];
- 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);
- }
- }
- }, 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);
- push.apply(ret, elems.get());
- }
- return this.pushStack(ret);
- };
- });
- var iframe, elemdisplay = {
- HTML: 'block',
- BODY: 'block'
- };
- function actualDisplay(name, doc) {
- var elem = jQuery(doc.createElement(name)).appendTo(doc.body), display = jQuery.css(elem[0], 'display');
- elem.detach();
- return display;
- }
- function defaultDisplay(nodeName) {
- var doc = document, display = elemdisplay[nodeName];
- if (!display) {
- display = actualDisplay(nodeName, doc);
- if (display === 'none' || !display) {
- iframe = (iframe || jQuery('<iframe frameborder=\'0\' width=\'0\' height=\'0\'/>')).appendTo(doc.documentElement);
- doc = iframe[0].contentDocument;
- doc.write();
- doc.close();
- display = actualDisplay(nodeName, doc);
- iframe.detach();
- }
- elemdisplay[nodeName] = display;
- }
- return display;
- }
- var rmargin = /^margin/;
- var rnumnonpx = new RegExp('^(' + pnum + ')(?!px)[a-z%]+$', 'i');
- var getStyles = function (elem) {
- 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 = {};
- for (name in options) {
- old[name] = elem.style[name];
- elem.style[name] = options[name];
- }
- ret = callback.apply(elem, args || []);
- 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');
- if (!div.style) {
- return;
- }
- 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);
- function computeStyleTests() {
- div.style.cssText = '-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';
- div.style.marginRight = '50%';
- pixelMarginRightVal = divStyle.marginRight === '4px';
- documentElement.removeChild(container);
- }
- jQuery.extend(support, {
- pixelPosition: function () {
- computeStyleTests();
- return pixelPositionVal;
- },
- boxSizingReliable: function () {
- if (boxSizingReliableVal == null) {
- computeStyleTests();
- }
- return boxSizingReliableVal;
- },
- pixelMarginRight: function () {
- if (boxSizingReliableVal == null) {
- computeStyleTests();
- }
- return pixelMarginRightVal;
- },
- reliableMarginLeft: function () {
- if (boxSizingReliableVal == null) {
- computeStyleTests();
- }
- return reliableMarginLeftVal;
- },
- reliableMarginRight: function () {
- var ret, marginDiv = div.appendChild(document.createElement('div'));
- marginDiv.style.cssText = div.style.cssText = '-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;
- if ((ret === '' || ret === undefined) && !jQuery.contains(elem.ownerDocument, elem)) {
- ret = jQuery.style(elem, name);
- }
- if (computed) {
- if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {
- width = style.width;
- minWidth = style.minWidth;
- maxWidth = style.maxWidth;
- style.minWidth = style.maxWidth = style.width = ret;
- ret = computed.width;
- style.width = width;
- style.minWidth = minWidth;
- style.maxWidth = maxWidth;
- }
- }
- return ret !== undefined ? ret + '' : ret;
- }
- function addGetHookIf(conditionFn, hookFn) {
- return {
- get: function () {
- if (conditionFn()) {
- delete this.get;
- return;
- }
- return (this.get = hookFn).apply(this, arguments);
- }
- };
- }
- var 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;
- function vendorPropName(name) {
- if (name in emptyStyle) {
- return name;
- }
- 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) {
- var matches = rcssNum.exec(value);
- return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || 'px') : value;
- }
- function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
- var i = extra === (isBorderBox ? 'border' : 'content') ? 4 : name === 'width' ? 1 : 0, val = 0;
- for (; i < 4; i += 2) {
- if (extra === 'margin') {
- val += jQuery.css(elem, extra + cssExpand[i], true, styles);
- }
- if (isBorderBox) {
- if (extra === 'content') {
- val -= jQuery.css(elem, 'padding' + cssExpand[i], true, styles);
- }
- if (extra !== 'margin') {
- val -= jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles);
- }
- } else {
- val += jQuery.css(elem, 'padding' + cssExpand[i], true, styles);
- if (extra !== 'padding') {
- val += jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles);
- }
- }
- }
- return val;
- }
- function getWidthOrHeight(elem, name, extra) {
- var valueIsBorderBox = true, val = name === 'width' ? elem.offsetWidth : elem.offsetHeight, styles = getStyles(elem), isBorderBox = jQuery.css(elem, 'boxSizing', false, styles) === 'border-box';
- if (val <= 0 || val == null) {
- val = curCSS(elem, name, styles);
- if (val < 0 || val == null) {
- val = elem.style[name];
- }
- if (rnumnonpx.test(val)) {
- return val;
- }
- valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);
- val = parseFloat(val) || 0;
- }
- 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) {
- if (!values[index] && display === 'none') {
- elem.style.display = '';
- }
- 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'));
- }
- }
- }
- 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({
- cssHooks: {
- opacity: {
- get: function (elem, computed) {
- if (computed) {
- var ret = curCSS(elem, 'opacity');
- return ret === '' ? '1' : ret;
- }
- }
- }
- },
- 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
- },
- cssProps: { 'float': 'cssFloat' },
- style: function (elem, name, value, extra) {
- if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
- return;
- }
- var ret, type, hooks, origName = jQuery.camelCase(name), style = elem.style;
- name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);
- hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
- if (value !== undefined) {
- type = typeof value;
- if (type === 'string' && (ret = rcssNum.exec(value)) && ret[1]) {
- value = adjustCSS(elem, name, ret);
- type = 'number';
- }
- if (value == null || value !== value) {
- return;
- }
- if (type === 'number') {
- value += ret && ret[3] || (jQuery.cssNumber[origName] ? '' : 'px');
- }
- if (!support.clearCloneStyle && value === '' && name.indexOf('background') === 0) {
- style[name] = 'inherit';
- }
- if (!hooks || !('set' in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {
- style[name] = value;
- }
- } else {
- if (hooks && 'get' in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {
- return ret;
- }
- return style[name];
- }
- },
- css: function (elem, name, extra, styles) {
- var val, num, hooks, origName = jQuery.camelCase(name);
- name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);
- hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
- if (hooks && 'get' in hooks) {
- val = hooks.get(elem, true, extra);
- }
- if (val === undefined) {
- val = curCSS(elem, name, styles);
- }
- if (val === 'normal' && name in cssNormalTransform) {
- val = cssNormalTransform[name];
- }
- 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) {
- 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);
- 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';
- }
- });
- jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
- if (computed) {
- return swap(elem, { 'display': 'inline-block' }, curCSS, [
- elem,
- 'marginRight'
- ]);
- }
- });
- jQuery.each({
- margin: '',
- padding: '',
- border: 'Width'
- }, function (prefix, suffix) {
- jQuery.cssHooks[prefix + suffix] = {
- expand: function (value) {
- var i = 0, expanded = {}, 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;
- if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
- return tween.elem[tween.prop];
- }
- result = jQuery.css(tween.elem, tween.prop, '');
- return !result || result === 'auto' ? 0 : result;
- },
- set: function (tween) {
- 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;
- }
- }
- }
- };
- 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;
- jQuery.fx.step = {};
- var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
- function createFxNow() {
- window.setTimeout(function () {
- fxNow = undefined;
- });
- return fxNow = jQuery.now();
- }
- function genFx(type, includeWidth) {
- var which, i = 0, attrs = { height: type };
- 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)) {
- return tween;
- }
- }
- }
- function defaultPrefilter(elem, props, opts) {
- 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');
- 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 () {
- anim.always(function () {
- hooks.unqueued--;
- if (!jQuery.queue(elem, 'fx').length) {
- hooks.empty.fire();
- }
- });
- });
- }
- if (elem.nodeType === 1 && ('height' in props || 'width' in props)) {
- opts.overflow = [
- style.overflow,
- style.overflowX,
- style.overflowY
- ];
- display = jQuery.css(elem, 'display');
- 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];
- });
- }
- for (prop in props) {
- value = props[prop];
- if (rfxtypes.exec(value)) {
- delete props[prop];
- toggle = toggle || value === 'toggle';
- if (value === (hidden ? 'hide' : 'show')) {
- if (value === 'show' && dataShow && dataShow[prop] !== undefined) {
- hidden = true;
- } else {
- continue;
- }
- }
- orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
- } else {
- display = undefined;
- }
- }
- if (!jQuery.isEmptyObject(orig)) {
- if (dataShow) {
- if ('hidden' in dataShow) {
- hidden = dataShow.hidden;
- }
- } else {
- dataShow = dataPriv.access(elem, 'fxshow', {});
- }
- 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;
- }
- }
- }
- } else if ((display === 'none' ? defaultDisplay(elem.nodeName) : display) === 'inline') {
- style.display = display;
- }
- }
- function propFilter(props, specialEasing) {
- var index, name, easing, value, hooks;
- 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];
- 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 () {
- delete tick.elem;
- }), tick = function () {
- if (stopped) {
- return false;
- }
- var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), 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, length = gotoEnd ? animation.tweens.length : 0;
- if (stopped) {
- return this;
- }
- stopped = true;
- for (; index < length; index++) {
- animation.tweens[index].run(1);
- }
- 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
- }));
- 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;
- if (opt.queue == null || opt.queue === true) {
- opt.queue = 'fx';
- }
- 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) {
- return this.filter(isHidden).css('opacity', 0).show().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 () {
- var anim = Animation(this, jQuery.extend({}, prop), optall);
- 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);
- }
- }
- 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;
- data.finish = true;
- jQuery.queue(this, type, []);
- if (hooks && hooks.stop) {
- hooks.stop.call(this, true);
- }
- for (index = timers.length; index--;) {
- if (timers[index].elem === this && timers[index].queue === type) {
- timers[index].anim.stop(true);
- timers.splice(index, 1);
- }
- }
- for (index = 0; index < length; index++) {
- if (queue[index] && queue[index].finish) {
- queue[index].finish.call(this);
- }
- }
- 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);
- };
- });
- 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];
- 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: 400
- };
- 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.checkOn = input.value !== '';
- support.optSelected = opt.selected;
- select.disabled = true;
- support.optDisabled = !opt.disabled;
- 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;
- if (nType === 3 || nType === 8 || nType === 2) {
- return;
- }
- if (typeof elem.getAttribute === 'undefined') {
- return jQuery.prop(elem, name, value);
- }
- 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);
- 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;
- if (jQuery.expr.match.bool.test(name)) {
- elem[propName] = false;
- }
- elem.removeAttribute(name);
- }
- }
- }
- });
- boolHook = {
- set: function (elem, value, name) {
- if (value === 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) {
- 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;
- if (nType === 3 || nType === 8 || nType === 2) {
- return;
- }
- if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
- 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) {
- 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'
- }
- });
- 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 + ' ';
- }
- }
- 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);
- cur = elem.nodeType === 1 && (' ' + curValue + ' ').replace(rclass, ' ');
- if (cur) {
- j = 0;
- while (clazz = classes[j++]) {
- while (cur.indexOf(' ' + clazz + ' ') > -1) {
- cur = cur.replace(' ' + clazz + ' ', ' ');
- }
- }
- 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') {
- i = 0;
- self = jQuery(this);
- classNames = value.match(rnotwhite) || [];
- while (className = classNames[i++]) {
- if (self.hasClass(className)) {
- self.removeClass(className);
- } else {
- self.addClass(className);
- }
- }
- } else if (value === undefined || type === 'boolean') {
- className = getClass(this);
- if (className) {
- dataPriv.set(this, '__className__', className);
- }
- 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' ? ret.replace(rreturn, '') : 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;
- }
- 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 (!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 : 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;
- for (; i < max; i++) {
- option = options[i];
- if ((option.selected || i === index) && (support.optDisabled ? !option.disabled : option.getAttribute('disabled') === null) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, 'optgroup'))) {
- value = jQuery(option).val();
- if (one) {
- return value;
- }
- 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;
- }
- }
- if (!optionSet) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- }
- });
- 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;
- };
- }
- });
- 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;
- if (elem.nodeType === 3 || elem.nodeType === 8) {
- return;
- }
- if (rfocusMorph.test(type + jQuery.event.triggered)) {
- return;
- }
- if (type.indexOf('.') > -1) {
- namespaces = type.split('.');
- type = namespaces.shift();
- namespaces.sort();
- }
- ontype = type.indexOf(':') < 0 && 'on' + type;
- event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === 'object' && event);
- event.isTrigger = onlyHandlers ? 2 : 3;
- event.namespace = namespaces.join('.');
- event.rnamespace = event.namespace ? new RegExp('(^|\\.)' + namespaces.join('\\.(?:.*\\.|)') + '(\\.|$)') : null;
- event.result = undefined;
- if (!event.target) {
- event.target = elem;
- }
- data = data == null ? [event] : jQuery.makeArray(data, [event]);
- special = jQuery.event.special[type] || {};
- if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
- return;
- }
- 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;
- }
- if (tmp === (elem.ownerDocument || document)) {
- eventPath.push(tmp.defaultView || tmp.parentWindow || window);
- }
- }
- i = 0;
- while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
- event.type = i > 1 ? bubbleType : special.bindType || type;
- handle = (dataPriv.get(cur, 'events') || {})[event.type] && dataPriv.get(cur, 'handle');
- if (handle) {
- handle.apply(cur, data);
- }
- 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 (!onlyHandlers && !event.isDefaultPrevented()) {
- if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
- if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {
- tmp = elem[ontype];
- if (tmp) {
- elem[ontype] = null;
- }
- jQuery.event.triggered = type;
- elem[type]();
- jQuery.event.triggered = undefined;
- if (tmp) {
- elem[ontype] = tmp;
- }
- }
- }
- }
- return event.result;
- },
- simulate: function (type, elem, event) {
- var e = jQuery.extend(new jQuery.Event(), event, {
- type: type,
- isSimulated: true
- });
- jQuery.event.trigger(e, null, elem);
- }
- });
- 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) {
- 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;
- if (!support.focusin) {
- jQuery.each({
- focus: 'focusin',
- blur: 'focusout'
- }, function (orig, fix) {
- 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 = /\?/;
- jQuery.parseJSON = function (data) {
- return JSON.parse(data + '');
- };
- jQuery.parseXML = function (data) {
- var xml;
- if (!data || typeof data !== 'string') {
- return null;
- }
- 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, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = '*/'.concat('*'), originAnchor = document.createElement('a');
- originAnchor.href = location.href;
- function addToPrefiltersOrTransports(structure) {
- return function (dataTypeExpression, func) {
- if (typeof dataTypeExpression !== 'string') {
- func = dataTypeExpression;
- dataTypeExpression = '*';
- }
- var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
- if (jQuery.isFunction(func)) {
- while (dataType = dataTypes[i++]) {
- if (dataType[0] === '+') {
- dataType = dataType.slice(1) || '*';
- (structure[dataType] = structure[dataType] || []).unshift(func);
- } else {
- (structure[dataType] = structure[dataType] || []).push(func);
- }
- }
- }
- };
- }
- 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('*');
- }
- 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;
- }
- function ajaxHandleResponses(s, jqXHR, responses) {
- var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
- while (dataTypes[0] === '*') {
- dataTypes.shift();
- if (ct === undefined) {
- ct = s.mimeType || jqXHR.getResponseHeader('Content-Type');
- }
- }
- if (ct) {
- for (type in contents) {
- if (contents[type] && contents[type].test(ct)) {
- dataTypes.unshift(type);
- break;
- }
- }
- }
- if (dataTypes[0] in responses) {
- finalDataType = dataTypes[0];
- } else {
- for (type in responses) {
- if (!dataTypes[0] || s.converters[type + ' ' + dataTypes[0]]) {
- finalDataType = type;
- break;
- }
- if (!firstDataType) {
- firstDataType = type;
- }
- }
- finalDataType = finalDataType || firstDataType;
- }
- if (finalDataType) {
- if (finalDataType !== dataTypes[0]) {
- dataTypes.unshift(finalDataType);
- }
- return responses[finalDataType];
- }
- }
- function ajaxConvert(s, response, jqXHR, isSuccess) {
- var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice();
- if (dataTypes[1]) {
- for (conv in s.converters) {
- converters[conv.toLowerCase()] = s.converters[conv];
- }
- }
- current = dataTypes.shift();
- while (current) {
- if (s.responseFields[current]) {
- jqXHR[s.responseFields[current]] = response;
- }
- if (!prev && isSuccess && s.dataFilter) {
- response = s.dataFilter(response, s.dataType);
- }
- prev = current;
- current = dataTypes.shift();
- if (current) {
- if (current === '*') {
- current = prev;
- } else if (prev !== '*' && prev !== current) {
- conv = converters[prev + ' ' + current] || converters['* ' + current];
- if (!conv) {
- for (conv2 in converters) {
- tmp = conv2.split(' ');
- if (tmp[1] === current) {
- conv = converters[prev + ' ' + tmp[0]] || converters['* ' + tmp[0]];
- if (conv) {
- if (conv === true) {
- conv = converters[conv2];
- } else if (converters[conv2] !== true) {
- current = tmp[0];
- dataTypes.unshift(tmp[1]);
- }
- break;
- }
- }
- }
- }
- if (conv !== true) {
- 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({
- active: 0,
- 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',
- 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'
- },
- converters: {
- '* text': String,
- 'text html': true,
- 'text json': jQuery.parseJSON,
- 'text xml': jQuery.parseXML
- },
- flatOptions: {
- url: true,
- context: true
- }
- },
- ajaxSetup: function (target, settings) {
- return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
- },
- ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
- ajaxTransport: addToPrefiltersOrTransports(transports),
- ajax: function (url, options) {
- if (typeof url === 'object') {
- options = url;
- url = undefined;
- }
- options = options || {};
- var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, fireGlobals, i, s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks('once memory'), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, state = 0, strAbort = 'canceled', jqXHR = {
- readyState: 0,
- 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;
- },
- getAllResponseHeaders: function () {
- return state === 2 ? responseHeadersString : null;
- },
- setRequestHeader: function (name, value) {
- var lname = name.toLowerCase();
- if (!state) {
- name = requestHeadersNames[lname] = requestHeadersNames[lname] || name;
- requestHeaders[name] = value;
- }
- return this;
- },
- overrideMimeType: function (type) {
- if (!state) {
- s.mimeType = type;
- }
- return this;
- },
- statusCode: function (map) {
- var code;
- if (map) {
- if (state < 2) {
- for (code in map) {
- statusCode[code] = [
- statusCode[code],
- map[code]
- ];
- }
- } else {
- jqXHR.always(map[jqXHR.status]);
- }
- }
- return this;
- },
- abort: function (statusText) {
- var finalText = statusText || strAbort;
- if (transport) {
- transport.abort(finalText);
- }
- done(0, finalText);
- return this;
- }
- };
- deferred.promise(jqXHR).complete = completeDeferred.add;
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
- s.url = ((url || s.url || location.href) + '').replace(rhash, '').replace(rprotocol, location.protocol + '//');
- s.type = options.method || options.type || s.method || s.type;
- s.dataTypes = jQuery.trim(s.dataType || '*').toLowerCase().match(rnotwhite) || [''];
- if (s.crossDomain == null) {
- urlAnchor = document.createElement('a');
- try {
- urlAnchor.href = s.url;
- urlAnchor.href = urlAnchor.href;
- s.crossDomain = originAnchor.protocol + '//' + originAnchor.host !== urlAnchor.protocol + '//' + urlAnchor.host;
- } catch (e) {
- s.crossDomain = true;
- }
- }
- if (s.data && s.processData && typeof s.data !== 'string') {
- s.data = jQuery.param(s.data, s.traditional);
- }
- inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
- if (state === 2) {
- return jqXHR;
- }
- fireGlobals = jQuery.event && s.global;
- if (fireGlobals && jQuery.active++ === 0) {
- jQuery.event.trigger('ajaxStart');
- }
- s.type = s.type.toUpperCase();
- s.hasContent = !rnoContent.test(s.type);
- cacheURL = s.url;
- if (!s.hasContent) {
- if (s.data) {
- cacheURL = s.url += (rquery.test(cacheURL) ? '&' : '?') + s.data;
- delete s.data;
- }
- if (s.cache === false) {
- s.url = rts.test(cacheURL) ? cacheURL.replace(rts, '$1_=' + nonce++) : cacheURL + (rquery.test(cacheURL) ? '&' : '?') + '_=' + nonce++;
- }
- }
- 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]);
- }
- }
- if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
- jqXHR.setRequestHeader('Content-Type', s.contentType);
- }
- 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['*']);
- for (i in s.headers) {
- jqXHR.setRequestHeader(i, s.headers[i]);
- }
- if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) {
- return jqXHR.abort();
- }
- strAbort = 'abort';
- for (i in {
- success: 1,
- error: 1,
- complete: 1
- }) {
- jqXHR[i](s[i]);
- }
- transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
- if (!transport) {
- done(-1, 'No Transport');
- } else {
- jqXHR.readyState = 1;
- if (fireGlobals) {
- globalEventContext.trigger('ajaxSend', [
- jqXHR,
- s
- ]);
- }
- if (state === 2) {
- return jqXHR;
- }
- if (s.async && s.timeout > 0) {
- timeoutTimer = window.setTimeout(function () {
- jqXHR.abort('timeout');
- }, s.timeout);
- }
- try {
- state = 1;
- transport.send(requestHeaders, done);
- } catch (e) {
- if (state < 2) {
- done(-1, e);
- } else {
- throw e;
- }
- }
- }
- function done(status, nativeStatusText, responses, headers) {
- var isSuccess, success, error, response, modified, statusText = nativeStatusText;
- if (state === 2) {
- return;
- }
- state = 2;
- if (timeoutTimer) {
- window.clearTimeout(timeoutTimer);
- }
- transport = undefined;
- responseHeadersString = headers || '';
- jqXHR.readyState = status > 0 ? 4 : 0;
- isSuccess = status >= 200 && status < 300 || status === 304;
- if (responses) {
- response = ajaxHandleResponses(s, jqXHR, responses);
- }
- response = ajaxConvert(s, response, jqXHR, isSuccess);
- if (isSuccess) {
- 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 (status === 204 || s.type === 'HEAD') {
- statusText = 'nocontent';
- } else if (status === 304) {
- statusText = 'notmodified';
- } else {
- statusText = response.state;
- success = response.data;
- error = response.error;
- isSuccess = !error;
- }
- } else {
- error = statusText;
- if (status || !statusText) {
- statusText = 'error';
- if (status < 0) {
- status = 0;
- }
- }
- }
- jqXHR.status = status;
- jqXHR.statusText = (nativeStatusText || statusText) + '';
- if (isSuccess) {
- deferred.resolveWith(callbackContext, [
- success,
- statusText,
- jqXHR
- ]);
- } else {
- deferred.rejectWith(callbackContext, [
- jqXHR,
- statusText,
- error
- ]);
- }
- jqXHR.statusCode(statusCode);
- statusCode = undefined;
- if (fireGlobals) {
- globalEventContext.trigger(isSuccess ? 'ajaxSuccess' : 'ajaxError', [
- jqXHR,
- s,
- isSuccess ? success : error
- ]);
- }
- completeDeferred.fireWith(callbackContext, [
- jqXHR,
- statusText
- ]);
- if (fireGlobals) {
- globalEventContext.trigger('ajaxComplete', [
- jqXHR,
- s
- ]);
- 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) {
- if (jQuery.isFunction(data)) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
- 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,
- 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]) {
- 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) {
- 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)) {
- jQuery.each(obj, function (i, v) {
- if (traditional || rbracket.test(prefix)) {
- add(prefix, v);
- } else {
- buildParams(prefix + '[' + (typeof v === 'object' && v != null ? i : '') + ']', v, traditional, add);
- }
- });
- } else if (!traditional && jQuery.type(obj) === 'object') {
- for (name in obj) {
- buildParams(prefix + '[' + name + ']', obj[name], traditional, add);
- }
- } else {
- add(prefix, obj);
- }
- }
- jQuery.param = function (a, traditional) {
- var prefix, s = [], add = function (key, value) {
- value = jQuery.isFunction(value) ? value() : value == null ? '' : value;
- s[s.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
- };
- if (traditional === undefined) {
- traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
- }
- if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
- jQuery.each(a, function () {
- add(this.name, this.value);
- });
- } else {
- for (prefix in a) {
- buildParams(prefix, a[prefix], traditional, add);
- }
- }
- return s.join('&').replace(r20, '+');
- };
- jQuery.fn.extend({
- serialize: function () {
- return jQuery.param(this.serializeArray());
- },
- serializeArray: function () {
- return this.map(function () {
- var elements = jQuery.prop(this, 'elements');
- return elements ? jQuery.makeArray(elements) : this;
- }).filter(function () {
- var type = this.type;
- 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 = {
- 0: 200,
- 1223: 204
- }, xhrSupported = jQuery.ajaxSettings.xhr();
- support.cors = !!xhrSupported && 'withCredentials' in xhrSupported;
- support.ajax = xhrSupported = !!xhrSupported;
- jQuery.ajaxTransport(function (options) {
- var callback, errorCallback;
- 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);
- if (options.xhrFields) {
- for (i in options.xhrFields) {
- xhr[i] = options.xhrFields[i];
- }
- }
- if (options.mimeType && xhr.overrideMimeType) {
- xhr.overrideMimeType(options.mimeType);
- }
- if (!options.crossDomain && !headers['X-Requested-With']) {
- headers['X-Requested-With'] = 'XMLHttpRequest';
- }
- for (i in headers) {
- xhr.setRequestHeader(i, headers[i]);
- }
- 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') {
- if (typeof xhr.status !== 'number') {
- complete(0, 'error');
- } else {
- complete(xhr.status, xhr.statusText);
- }
- } else {
- complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, (xhr.responseType || 'text') !== 'text' || typeof xhr.responseText !== 'string' ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders());
- }
- }
- };
- };
- xhr.onload = callback();
- errorCallback = xhr.onerror = callback('error');
- if (xhr.onabort !== undefined) {
- xhr.onabort = errorCallback;
- } else {
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4) {
- window.setTimeout(function () {
- if (callback) {
- errorCallback();
- }
- });
- }
- };
- }
- callback = callback('abort');
- try {
- xhr.send(options.hasContent && options.data || null);
- } catch (e) {
- if (callback) {
- throw e;
- }
- }
- },
- abort: function () {
- if (callback) {
- callback();
- }
- }
- };
- }
- });
- 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;
- }
- }
- });
- jQuery.ajaxPrefilter('script', function (s) {
- if (s.cache === undefined) {
- s.cache = false;
- }
- if (s.crossDomain) {
- s.type = 'GET';
- }
- });
- jQuery.ajaxTransport('script', function (s) {
- 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);
- }
- });
- document.head.appendChild(script[0]);
- },
- abort: function () {
- if (callback) {
- callback();
- }
- }
- };
- }
- });
- var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
- jQuery.ajaxSetup({
- jsonp: 'callback',
- jsonpCallback: function () {
- var callback = oldCallbacks.pop() || jQuery.expando + '_' + nonce++;
- this[callback] = true;
- return callback;
- }
- });
- 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');
- if (jsonProp || s.dataTypes[0] === 'jsonp') {
- callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
- if (jsonProp) {
- s[jsonProp] = s[jsonProp].replace(rjsonp, '$1' + callbackName);
- } else if (s.jsonp !== false) {
- s.url += (rquery.test(s.url) ? '&' : '?') + s.jsonp + '=' + callbackName;
- }
- s.converters['script json'] = function () {
- if (!responseContainer) {
- jQuery.error(callbackName + ' was not called');
- }
- return responseContainer[0];
- };
- s.dataTypes[0] = 'json';
- overwritten = window[callbackName];
- window[callbackName] = function () {
- responseContainer = arguments;
- };
- jqXHR.always(function () {
- if (overwritten === undefined) {
- jQuery(window).removeProp(callbackName);
- } else {
- window[callbackName] = overwritten;
- }
- if (s[callbackName]) {
- s.jsonpCallback = originalSettings.jsonpCallback;
- oldCallbacks.push(callbackName);
- }
- if (responseContainer && jQuery.isFunction(overwritten)) {
- overwritten(responseContainer[0]);
- }
- responseContainer = overwritten = undefined;
- });
- return 'script';
- }
- });
- 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 && [];
- if (parsed) {
- return [context.createElement(parsed[1])];
- }
- parsed = buildFragment([data], context, scripts);
- if (scripts && scripts.length) {
- jQuery(scripts).remove();
- }
- return jQuery.merge([], parsed.childNodes);
- };
- var _load = jQuery.fn.load;
- 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 (jQuery.isFunction(params)) {
- callback = params;
- params = undefined;
- } else if (params && typeof params === 'object') {
- type = 'POST';
- }
- if (self.length > 0) {
- jQuery.ajax({
- url: url,
- type: type || 'GET',
- dataType: 'html',
- data: params
- }).done(function (responseText) {
- response = arguments;
- self.html(selector ? jQuery('<div>').append(jQuery.parseHTML(responseText)).find(selector) : responseText);
- }).always(callback && function (jqXHR, status) {
- self.each(function () {
- callback.apply(this, response || [
- jqXHR.responseText,
- status,
- jqXHR
- ]);
- });
- });
- }
- return this;
- };
- 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;
- };
- 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 = {};
- 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;
- if (calculatePosition) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat(curCSSTop) || 0;
- curLeft = parseFloat(curCSSLeft) || 0;
- }
- if (jQuery.isFunction(options)) {
- 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;
- 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
- };
- if (jQuery.css(elem, 'position') === 'fixed') {
- offset = elem.getBoundingClientRect();
- } else {
- offsetParent = this.offsetParent();
- offset = this.offset();
- if (!jQuery.nodeName(offsetParent[0], 'html')) {
- parentOffset = offsetParent.offset();
- }
- parentOffset.top += jQuery.css(offsetParent[0], 'borderTopWidth', true);
- parentOffset.left += jQuery.css(offsetParent[0], 'borderLeftWidth', true);
- }
- return {
- top: offset.top - parentOffset.top - jQuery.css(elem, 'marginTop', true),
- left: offset.left - parentOffset.left - jQuery.css(elem, 'marginLeft', true)
- };
- },
- offsetParent: function () {
- return this.map(function () {
- var offsetParent = this.offsetParent;
- while (offsetParent && jQuery.css(offsetParent, 'position') === 'static') {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent || documentElement;
- });
- }
- });
- 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);
- };
- });
- jQuery.each([
- 'top',
- 'left'
- ], function (i, prop) {
- jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
- if (computed) {
- computed = curCSS(elem, prop);
- return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + 'px' : computed;
- }
- });
- });
- jQuery.each({
- Height: 'height',
- Width: 'width'
- }, function (name, type) {
- jQuery.each({
- padding: 'inner' + name,
- content: type,
- '': 'outer' + name
- }, function (defaultExtra, funcName) {
- 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)) {
- return elem.document.documentElement['client' + name];
- }
- if (elem.nodeType === 9) {
- doc = elem.documentElement;
- return Math.max(elem.body['scroll' + name], doc['scroll' + name], elem.body['offset' + name], doc['offset' + name], doc['client' + name]);
- }
- return value === undefined ? jQuery.css(elem, type, extra) : 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) {
- return arguments.length === 1 ? this.off(selector, '**') : this.off(types, selector || '**', fn);
- },
- size: function () {
- return this.length;
- }
- });
- jQuery.fn.andSelf = jQuery.fn.addBack;
- if (typeof define === 'function' && define.amd) {
- define('jquery@2.2.4#dist/jquery', [], function () {
- return jQuery;
- });
- }
- var _jQuery = window.jQuery, _$ = window.$;
- jQuery.noConflict = function (deep) {
- if (window.$ === jQuery) {
- window.$ = _$;
- }
- if (deep && window.jQuery === jQuery) {
- window.jQuery = _jQuery;
- }
- return jQuery;
- };
- if (!noGlobal) {
- window.jQuery = window.$ = jQuery;
- }
- return jQuery;
- }));
- /*can-view-import@3.0.0-pre.2#can-view-import*/
- define('can-view-import@3.0.0-pre.2#can-view-import', function (require, exports, module) {
- var assign = require('can-util/js/assign/assign');
- var canData = require('can-util/dom/data/data');
- var isFunction = require('can-util/js/is-function/is-function');
- var importer = require('can-util/js/import/import');
- var nodeLists = require('can-view-nodelist');
- var tag = require('can-view-callbacks').tag;
- var events = require('can-event');
- tag('can-import', function (el, tagData) {
- var moduleName = el.getAttribute('from');
- var templateModule = tagData.options.attr('helpers.module');
- var parentName = templateModule ? templateModule.id : undefined;
- if (!moduleName) {
- return Promise.reject('No module name provided');
- }
- var importPromise = importer(moduleName, parentName);
- var root = tagData.scope.attr('%root');
- if (root && isFunction(root.waitFor)) {
- root.waitFor(importPromise);
- }
- canData.set.call(el, 'viewModel', importPromise);
- canData.set.call(el, 'scope', importPromise);
- var scope = tagData.scope.add(importPromise);
- var handOffTag = el.getAttribute('can-tag');
- if (handOffTag) {
- var callback = tag(handOffTag);
- canData.set.call(el, 'preventDataBindings', true);
- callback(el, assign(tagData, { scope: scope }));
- canData.set.call(el, 'preventDataBindings', false);
- canData.set.call(el, 'viewModel', importPromise);
- canData.set.call(el, 'scope', importPromise);
- } else {
- var frag = tagData.subtemplate ? tagData.subtemplate(scope, tagData.options) : document.createDocumentFragment();
- var nodeList = nodeLists.register([], undefined, true);
- events.one.call(el, 'removed', function () {
- nodeLists.unregister(nodeList);
- });
- el.appendChild(frag);
- nodeLists.update(nodeList, el.childNodes);
- }
- });
- });
- /*steal-stache@3.0.0-pre.3#add-bundles*/
- define('steal-stache@3.0.0-pre.3#add-bundles', [], function(){ return {}; });
- /*steal-stache@3.0.0-pre.3#steal-stache*/
- define('steal-stache@3.0.0-pre.3#steal-stache', [], function(){ return {}; });
- /*src/player-bio/components/player-bio.stache!steal-stache@3.0.0-pre.3#steal-stache*/
- define('src/player-bio/components/player-bio.stache!steal-stache@3.0.0-pre.3#steal-stache', [
- 'module',
- 'can-stache',
- 'can-stache/src/mustache_core',
- 'can-view-import@3.0.0-pre.2#can-view-import',
- 'can-stache-bindings@3.0.0-pre.12#can-stache-bindings'
- ], function (module, stache, mustacheCore) {
- var renderer = stache([
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['player-bio']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['player-image']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.playerId']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'img',
- true
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['src']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['http://i.pgatour.com/image/upload/t_headshot_244x324/headshots_']
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.playerId']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['.png']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['src']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'img',
- true
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.playerId']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-central']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-top']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['player-name']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['name']
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['dropdown-icon glyphicon glyphicon-menu-down']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['dropdown hidden']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['dropdown-content hidden']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'ul',
- false
- ]
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'ul',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#playerList']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'li',
- false
- ]
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'li',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['player-select']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['data-id']
- },
- {
- 'tokenType': 'special',
- 'args': ['playerId']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['data-id']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['playerName']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['li']
- },
- {
- 'tokenType': 'special',
- 'args': ['/playerList']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['ul']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.countryCode']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['flag flag-24x24 ']
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.countryCode']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': [' ']
- },
- {
- 'tokenType': 'special',
- 'args': ['else']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['flag flag-24x24 UNKNOWN']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.countryCode']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['social-icon glyphicon glyphicon-new-window']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-left']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-left-upper']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['sponsor']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n sponsor\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['metric-toggle']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['on']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n METRIC ON\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'b',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['switcher']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'b',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['b']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': [' ']
- },
- {
- 'tokenType': 'special',
- 'args': ['else']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['off']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'span',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n METRIC OFF\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'b',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['switcher']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'b',
- false
- ]
- },
- {
- 'tokenType': 'close',
- 'args': ['b']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'special',
- 'args': ['/showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['span']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-left-lower']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['row-1']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.height']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['height']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['height-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.heightMetric']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': [' ']
- },
- {
- 'tokenType': 'special',
- 'args': ['else']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['height-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.height']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['height-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['height']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.height']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.age']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['age']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['age-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.age']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['age-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['age']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.age']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.school']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['school']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['school-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.school']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['school-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['college']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.school']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.weight']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['weight']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['#showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['weight-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.weightMetric']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': [' ']
- },
- {
- 'tokenType': 'special',
- 'args': ['else']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['weight-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.weight']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/showMetric']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['weight-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['weight']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.weight']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.turnedPro']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['turned-pro']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['turned-pro-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.turnedPro']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['turned-pro-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['turned pro']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.turnedPro']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'special',
- 'args': ['#personalInfo.birthPlace']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['birthplace']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['birth-place-data']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalInfo.birthPlace']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['birth-place-title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['birthplace']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'special',
- 'args': ['/personalInfo.birthPlace']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-right']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-left-upper']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['fedexcup-rank']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalResults.rank']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalResults.rankTitle']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-right-upper']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['fedexcup-points']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalResults.points']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalResults.pointsTitle']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-left-lower']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['owg-rank']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalStat186.owgRank']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['owg rank']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['box-right-lower']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['driving-distance']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'special',
- 'args': ['personalStats.scoringAverage']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['title']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['scoring average']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'attrStart',
- 'args': ['class']
- },
- {
- 'tokenType': 'attrValue',
- 'args': ['player-bio-ad']
- },
- {
- 'tokenType': 'attrEnd',
- 'args': ['class']
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'div',
- false
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'start',
- 'args': [
- 'pga-player-bio-ad',
- true
- ]
- },
- {
- 'tokenType': 'end',
- 'args': [
- 'pga-player-bio-ad',
- true
- ]
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n ']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n']
- },
- {
- 'tokenType': 'close',
- 'args': ['div']
- },
- {
- 'tokenType': 'chars',
- 'args': ['\n']
- },
- {
- 'tokenType': 'done',
- 'args': []
- }
- ]);
- return function (scope, options, nodeList) {
- var moduleOptions = { module: module };
- if (!(options instanceof mustacheCore.Options)) {
- options = new mustacheCore.Options(options || {});
- }
- return renderer(scope, options.add(moduleOptions), nodeList);
- };
- });
- /*when@3.7.7#es6-shim/Promise*/
- define('when@3.7.7#es6-shim/Promise', [
- 'module',
- '@loader'
- ], function (module, loader) {
- loader.get('@@global-helpers').prepareGlobal(module.id, []);
- var define = loader.global.define;
- var require = loader.global.require;
- var source = '!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Promise=e():"undefined"!=typeof global?global.Promise=e():"undefined"!=typeof self&&(self.Promise=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module \'"+o+"\'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n/**\n * ES6 global Promise shim\n */\nvar unhandledRejections = require(\'../lib/decorators/unhandledRejection\');\nvar PromiseConstructor = unhandledRejections(require(\'../lib/Promise\'));\n\nmodule.exports = typeof global != \'undefined\' ? (global.Promise = PromiseConstructor)\n\t : typeof self != \'undefined\' ? (self.Promise = PromiseConstructor)\n\t : PromiseConstructor;\n\n},{"../lib/Promise":2,"../lib/decorators/unhandledRejection":4}],2:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { \'use strict\';\ndefine(function (require) {\n\n\tvar makePromise = require(\'./makePromise\');\n\tvar Scheduler = require(\'./Scheduler\');\n\tvar async = require(\'./env\').asap;\n\n\treturn makePromise({\n\t\tscheduler: new Scheduler(async)\n\t});\n\n});\n})(typeof define === \'function\' && define.amd ? define : function (factory) { module.exports = factory(require); });\n\n},{"./Scheduler":3,"./env":5,"./makePromise":7}],3:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { \'use strict\';\ndefine(function() {\n\n\t// Credit to Twisol (https://github.com/Twisol) for suggesting\n\t// this type of extensible queue + trampoline approach for next-tick conflation.\n\n\t/**\n\t * Async task scheduler\n\t * @param {function} async function to schedule a single async function\n\t * @constructor\n\t */\n\tfunction Scheduler(async) {\n\t\tthis._async = async;\n\t\tthis._running = false;\n\n\t\tthis._queue = this;\n\t\tthis._queueLen = 0;\n\t\tthis._afterQueue = {};\n\t\tthis._afterQueueLen = 0;\n\n\t\tvar self = this;\n\t\tthis.drain = function() {\n\t\t\tself._drain();\n\t\t};\n\t}\n\n\t/**\n\t * Enqueue a task\n\t * @param {{ run:function }} task\n\t */\n\tScheduler.prototype.enqueue = function(task) {\n\t\tthis._queue[this._queueLen++] = task;\n\t\tthis.run();\n\t};\n\n\t/**\n\t * Enqueue a task to run after the main task queue\n\t * @param {{ run:function }} task\n\t */\n\tScheduler.prototype.afterQueue = function(task) {\n\t\tthis._afterQueue[this._afterQueueLen++] = task;\n\t\tthis.run();\n\t};\n\n\tScheduler.prototype.run = function() {\n\t\tif (!this._running) {\n\t\t\tthis._running = true;\n\t\t\tthis._async(this.drain);\n\t\t}\n\t};\n\n\t/**\n\t * Drain the handler queue entirely, and then the after queue\n\t */\n\tScheduler.prototype._drain = function() {\n\t\tvar i = 0;\n\t\tfor (; i < this._queueLen; ++i) {\n\t\t\tthis._queue[i].run();\n\t\t\tthis._queue[i] = void 0;\n\t\t}\n\n\t\tthis._queueLen = 0;\n\t\tthis._running = false;\n\n\t\tfor (i = 0; i < this._afterQueueLen; ++i) {\n\t\t\tthis._afterQueue[i].run();\n\t\t\tthis._afterQueue[i] = void 0;\n\t\t}\n\n\t\tthis._afterQueueLen = 0;\n\t};\n\n\treturn Scheduler;\n\n});\n}(typeof define === \'function\' && define.amd ? define : function(factory) { module.exports = factory(); }));\n\n},{}],4:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { \'use strict\';\ndefine(function(require) {\n\n\tvar setTimer = require(\'../env\').setTimer;\n\tvar format = require(\'../format\');\n\n\treturn function unhandledRejection(Promise) {\n\n\t\tvar logError = noop;\n\t\tvar logInfo = noop;\n\t\tvar localConsole;\n\n\t\tif(typeof console !== \'undefined\') {\n\t\t\t// Alias console to prevent things like uglify\'s drop_console option from\n\t\t\t// removing console.log/error. Unhandled rejections fall into the same\n\t\t\t// category as uncaught exceptions, and build tools shouldn\'t silence them.\n\t\t\tlocalConsole = console;\n\t\t\tlogError = typeof localConsole.error !== \'undefined\'\n\t\t\t\t? function (e) { localConsole.error(e); }\n\t\t\t\t: function (e) { localConsole.log(e); };\n\n\t\t\tlogInfo = typeof localConsole.info !== \'undefined\'\n\t\t\t\t? function (e) { localConsole.info(e); }\n\t\t\t\t: function (e) { localConsole.log(e); };\n\t\t}\n\n\t\tPromise.onPotentiallyUnhandledRejection = function(rejection) {\n\t\t\tenqueue(report, rejection);\n\t\t};\n\n\t\tPromise.onPotentiallyUnhandledRejectionHandled = function(rejection) {\n\t\t\tenqueue(unreport, rejection);\n\t\t};\n\n\t\tPromise.onFatalRejection = function(rejection) {\n\t\t\tenqueue(throwit, rejection.value);\n\t\t};\n\n\t\tvar tasks = [];\n\t\tvar reported = [];\n\t\tvar running = null;\n\n\t\tfunction report(r) {\n\t\t\tif(!r.handled) {\n\t\t\t\treported.push(r);\n\t\t\t\tlogError(\'Potentially unhandled rejection [\' + r.id + \'] \' + format.formatError(r.value));\n\t\t\t}\n\t\t}\n\n\t\tfunction unreport(r) {\n\t\t\tvar i = reported.indexOf(r);\n\t\t\tif(i >= 0) {\n\t\t\t\treported.splice(i, 1);\n\t\t\t\tlogInfo(\'Handled previous rejection [\' + r.id + \'] \' + format.formatObject(r.value));\n\t\t\t}\n\t\t}\n\n\t\tfunction enqueue(f, x) {\n\t\t\ttasks.push(f, x);\n\t\t\tif(running === null) {\n\t\t\t\trunning = setTimer(flush, 0);\n\t\t\t}\n\t\t}\n\n\t\tfunction flush() {\n\t\t\trunning = null;\n\t\t\twhile(tasks.length > 0) {\n\t\t\t\ttasks.shift()(tasks.shift());\n\t\t\t}\n\t\t}\n\n\t\treturn Promise;\n\t};\n\n\tfunction throwit(e) {\n\t\tthrow e;\n\t}\n\n\tfunction noop() {}\n\n});\n}(typeof define === \'function\' && define.amd ? define : function(factory) { module.exports = factory(require); }));\n\n},{"../env":5,"../format":6}],5:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n/*global process,document,setTimeout,clearTimeout,MutationObserver,WebKitMutationObserver*/\n(function(define) { \'use strict\';\ndefine(function(require) {\n\t/*jshint maxcomplexity:6*/\n\n\t// Sniff "best" async scheduling option\n\t// Prefer process.nextTick or MutationObserver, then check for\n\t// setTimeout, and finally vertx, since its the only env that doesn\'t\n\t// have setTimeout\n\n\tvar MutationObs;\n\tvar capturedSetTimeout = typeof setTimeout !== \'undefined\' && setTimeout;\n\n\t// Default env\n\tvar setTimer = function(f, ms) { return setTimeout(f, ms); };\n\tvar clearTimer = function(t) { return clearTimeout(t); };\n\tvar asap = function (f) { return capturedSetTimeout(f, 0); };\n\n\t// Detect specific env\n\tif (isNode()) { // Node\n\t\tasap = function (f) { return process.nextTick(f); };\n\n\t} else if (MutationObs = hasMutationObserver()) { // Modern browser\n\t\tasap = initMutationObserver(MutationObs);\n\n\t} else if (!capturedSetTimeout) { // vert.x\n\t\tvar vertxRequire = require;\n\t\tvar vertx = vertxRequire(\'vertx\');\n\t\tsetTimer = function (f, ms) { return vertx.setTimer(ms, f); };\n\t\tclearTimer = vertx.cancelTimer;\n\t\tasap = vertx.runOnLoop || vertx.runOnContext;\n\t}\n\n\treturn {\n\t\tsetTimer: setTimer,\n\t\tclearTimer: clearTimer,\n\t\tasap: asap\n\t};\n\n\tfunction isNode () {\n\t\treturn typeof process !== \'undefined\' &&\n\t\t\tObject.prototype.toString.call(process) === \'[object process]\';\n\t}\n\n\tfunction hasMutationObserver () {\n\t\treturn (typeof MutationObserver === \'function\' && MutationObserver) ||\n\t\t\t(typeof WebKitMutationObserver === \'function\' && WebKitMutationObserver);\n\t}\n\n\tfunction initMutationObserver(MutationObserver) {\n\t\tvar scheduled;\n\t\tvar node = document.createTextNode(\'\');\n\t\tvar o = new MutationObserver(run);\n\t\to.observe(node, { characterData: true });\n\n\t\tfunction run() {\n\t\t\tvar f = scheduled;\n\t\t\tscheduled = void 0;\n\t\t\tf();\n\t\t}\n\n\t\tvar i = 0;\n\t\treturn function (f) {\n\t\t\tscheduled = f;\n\t\t\tnode.data = (i ^= 1);\n\t\t};\n\t}\n});\n}(typeof define === \'function\' && define.amd ? define : function(factory) { module.exports = factory(require); }));\n\n},{}],6:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { \'use strict\';\ndefine(function() {\n\n\treturn {\n\t\tformatError: formatError,\n\t\tformatObject: formatObject,\n\t\ttryStringify: tryStringify\n\t};\n\n\t/**\n\t * Format an error into a string. If e is an Error and has a stack property,\n\t * it\'s returned. Otherwise, e is formatted using formatObject, with a\n\t * warning added about e not being a proper Error.\n\t * @param {*} e\n\t * @returns {String} formatted string, suitable for output to developers\n\t */\n\tfunction formatError(e) {\n\t\tvar s = typeof e === \'object\' && e !== null && (e.stack || e.message) ? e.stack || e.message : formatObject(e);\n\t\treturn e instanceof Error ? s : s + \' (WARNING: non-Error used)\';\n\t}\n\n\t/**\n\t * Format an object, detecting "plain" objects and running them through\n\t * JSON.stringify if possible.\n\t * @param {Object} o\n\t * @returns {string}\n\t */\n\tfunction formatObject(o) {\n\t\tvar s = String(o);\n\t\tif(s === \'[object Object]\' && typeof JSON !== \'undefined\') {\n\t\t\ts = tryStringify(o, s);\n\t\t}\n\t\treturn s;\n\t}\n\n\t/**\n\t * Try to return the result of JSON.stringify(x). If that fails, return\n\t * defaultValue\n\t * @param {*} x\n\t * @param {*} defaultValue\n\t * @returns {String|*} JSON.stringify(x) or defaultValue\n\t */\n\tfunction tryStringify(x, defaultValue) {\n\t\ttry {\n\t\t\treturn JSON.stringify(x);\n\t\t} catch(e) {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n});\n}(typeof define === \'function\' && define.amd ? define : function(factory) { module.exports = factory(); }));\n\n},{}],7:[function(require,module,exports){\n/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { \'use strict\';\ndefine(function() {\n\n\treturn function makePromise(environment) {\n\n\t\tvar tasks = environment.scheduler;\n\t\tvar emitRejection = initEmitRejection();\n\n\t\tvar objectCreate = Object.create ||\n\t\t\tfunction(proto) {\n\t\t\t\tfunction Child() {}\n\t\t\t\tChild.prototype = proto;\n\t\t\t\treturn new Child();\n\t\t\t};\n\n\t\t/**\n\t\t * Create a promise whose fate is determined by resolver\n\t\t * @constructor\n\t\t * @returns {Promise} promise\n\t\t * @name Promise\n\t\t */\n\t\tfunction Promise(resolver, handler) {\n\t\t\tthis._handler = resolver === Handler ? handler : init(resolver);\n\t\t}\n\n\t\t/**\n\t\t * Run the supplied resolver\n\t\t * @param resolver\n\t\t * @returns {Pending}\n\t\t */\n\t\tfunction init(resolver) {\n\t\t\tvar handler = new Pending();\n\n\t\t\ttry {\n\t\t\t\tresolver(promiseResolve, promiseReject, promiseNotify);\n\t\t\t} catch (e) {\n\t\t\t\tpromiseReject(e);\n\t\t\t}\n\n\t\t\treturn handler;\n\n\t\t\t/**\n\t\t\t * Transition from pre-resolution state to post-resolution state, notifying\n\t\t\t * all listeners of the ultimate fulfillment or rejection\n\t\t\t * @param {*} x resolution value\n\t\t\t */\n\t\t\tfunction promiseResolve (x) {\n\t\t\t\thandler.resolve(x);\n\t\t\t}\n\t\t\t/**\n\t\t\t * Reject this promise with reason, which will be used verbatim\n\t\t\t * @param {Error|*} reason rejection reason, strongly suggested\n\t\t\t * to be an Error type\n\t\t\t */\n\t\t\tfunction promiseReject (reason) {\n\t\t\t\thandler.reject(reason);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @deprecated\n\t\t\t * Issue a progress event, notifying all progress listeners\n\t\t\t * @param {*} x progress event payload to pass to all listeners\n\t\t\t */\n\t\t\tfunction promiseNotify (x) {\n\t\t\t\thandler.notify(x);\n\t\t\t}\n\t\t}\n\n\t\t// Creation\n\n\t\tPromise.resolve = resolve;\n\t\tPromise.reject = reject;\n\t\tPromise.never = never;\n\n\t\tPromise._defer = defer;\n\t\tPromise._handler = getHandler;\n\n\t\t/**\n\t\t * Returns a trusted promise. If x is already a trusted promise, it is\n\t\t * returned, otherwise returns a new trusted Promise which follows x.\n\t\t * @param {*} x\n\t\t * @return {Promise} promise\n\t\t */\n\t\tfunction resolve(x) {\n\t\t\treturn isPromise(x) ? x\n\t\t\t\t: new Promise(Handler, new Async(getHandler(x)));\n\t\t}\n\n\t\t/**\n\t\t * Return a reject promise with x as its reason (x is used verbatim)\n\t\t * @param {*} x\n\t\t * @returns {Promise} rejected promise\n\t\t */\n\t\tfunction reject(x) {\n\t\t\treturn new Promise(Handler, new Async(new Rejected(x)));\n\t\t}\n\n\t\t/**\n\t\t * Return a promise that remains pending forever\n\t\t * @returns {Promise} forever-pending promise.\n\t\t */\n\t\tfunction never() {\n\t\t\treturn foreverPendingPromise; // Should be frozen\n\t\t}\n\n\t\t/**\n\t\t * Creates an internal {promise, resolver} pair\n\t\t * @private\n\t\t * @returns {Promise}\n\t\t */\n\t\tfunction defer() {\n\t\t\treturn new Promise(Handler, new Pending());\n\t\t}\n\n\t\t// Transformation and flow control\n\n\t\t/**\n\t\t * Transform this promise\'s fulfillment value, returning a new Promise\n\t\t * for the transformed result. If the promise cannot be fulfilled, onRejected\n\t\t * is called with the reason. onProgress *may* be called with updates toward\n\t\t * this promise\'s fulfillment.\n\t\t * @param {function=} onFulfilled fulfillment handler\n\t\t * @param {function=} onRejected rejection handler\n\t\t * @param {function=} onProgress @deprecated progress handler\n\t\t * @return {Promise} new promise\n\t\t */\n\t\tPromise.prototype.then = function(onFulfilled, onRejected, onProgress) {\n\t\t\tvar parent = this._handler;\n\t\t\tvar state = parent.join().state();\n\n\t\t\tif ((typeof onFulfilled !== \'function\' && state > 0) ||\n\t\t\t\t(typeof onRejected !== \'function\' && state < 0)) {\n\t\t\t\t// Short circuit: value will not change, simply share handler\n\t\t\t\treturn new this.constructor(Handler, parent);\n\t\t\t}\n\n\t\t\tvar p = this._beget();\n\t\t\tvar child = p._handler;\n\n\t\t\tparent.chain(child, parent.receiver, onFulfilled, onRejected, onProgress);\n\n\t\t\treturn p;\n\t\t};\n\n\t\t/**\n\t\t * If this promise cannot be fulfilled due to an error, call onRejected to\n\t\t * handle the error. Shortcut for .then(undefined, onRejected)\n\t\t * @param {function?} onRejected\n\t\t * @return {Promise}\n\t\t */\n\t\tPromise.prototype[\'catch\'] = function(onRejected) {\n\t\t\treturn this.then(void 0, onRejected);\n\t\t};\n\n\t\t/**\n\t\t * Creates a new, pending promise of the same type as this promise\n\t\t * @private\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype._beget = function() {\n\t\t\treturn begetFrom(this._handler, this.constructor);\n\t\t};\n\n\t\tfunction begetFrom(parent, Promise) {\n\t\t\tvar child = new Pending(parent.receiver, parent.join().context);\n\t\t\treturn new Promise(Handler, child);\n\t\t}\n\n\t\t// Array combinators\n\n\t\tPromise.all = all;\n\t\tPromise.race = race;\n\t\tPromise._traverse = traverse;\n\n\t\t/**\n\t\t * Return a promise that will fulfill when all promises in the\n\t\t * input array have fulfilled, or will reject when one of the\n\t\t * promises rejects.\n\t\t * @param {array} promises array of promises\n\t\t * @returns {Promise} promise for array of fulfillment values\n\t\t */\n\t\tfunction all(promises) {\n\t\t\treturn traverseWith(snd, null, promises);\n\t\t}\n\n\t\t/**\n\t\t * Array<Promise<X>> -> Promise<Array<f(X)>>\n\t\t * @private\n\t\t * @param {function} f function to apply to each promise\'s value\n\t\t * @param {Array} promises array of promises\n\t\t * @returns {Promise} promise for transformed values\n\t\t */\n\t\tfunction traverse(f, promises) {\n\t\t\treturn traverseWith(tryCatch2, f, promises);\n\t\t}\n\n\t\tfunction traverseWith(tryMap, f, promises) {\n\t\t\tvar handler = typeof f === \'function\' ? mapAt : settleAt;\n\n\t\t\tvar resolver = new Pending();\n\t\t\tvar pending = promises.length >>> 0;\n\t\t\tvar results = new Array(pending);\n\n\t\t\tfor (var i = 0, x; i < promises.length && !resolver.resolved; ++i) {\n\t\t\t\tx = promises[i];\n\n\t\t\t\tif (x === void 0 && !(i in promises)) {\n\t\t\t\t\t--pending;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttraverseAt(promises, handler, i, x, resolver);\n\t\t\t}\n\n\t\t\tif(pending === 0) {\n\t\t\t\tresolver.become(new Fulfilled(results));\n\t\t\t}\n\n\t\t\treturn new Promise(Handler, resolver);\n\n\t\t\tfunction mapAt(i, x, resolver) {\n\t\t\t\tif(!resolver.resolved) {\n\t\t\t\t\ttraverseAt(promises, settleAt, i, tryMap(f, x, i), resolver);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction settleAt(i, x, resolver) {\n\t\t\t\tresults[i] = x;\n\t\t\t\tif(--pending === 0) {\n\t\t\t\t\tresolver.become(new Fulfilled(results));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction traverseAt(promises, handler, i, x, resolver) {\n\t\t\tif (maybeThenable(x)) {\n\t\t\t\tvar h = getHandlerMaybeThenable(x);\n\t\t\t\tvar s = h.state();\n\n\t\t\t\tif (s === 0) {\n\t\t\t\t\th.fold(handler, i, void 0, resolver);\n\t\t\t\t} else if (s > 0) {\n\t\t\t\t\thandler(i, h.value, resolver);\n\t\t\t\t} else {\n\t\t\t\t\tresolver.become(h);\n\t\t\t\t\tvisitRemaining(promises, i+1, h);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thandler(i, x, resolver);\n\t\t\t}\n\t\t}\n\n\t\tPromise._visitRemaining = visitRemaining;\n\t\tfunction visitRemaining(promises, start, handler) {\n\t\t\tfor(var i=start; i<promises.length; ++i) {\n\t\t\t\tmarkAsHandled(getHandler(promises[i]), handler);\n\t\t\t}\n\t\t}\n\n\t\tfunction markAsHandled(h, handler) {\n\t\t\tif(h === handler) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar s = h.state();\n\t\t\tif(s === 0) {\n\t\t\t\th.visit(h, void 0, h._unreport);\n\t\t\t} else if(s < 0) {\n\t\t\t\th._unreport();\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Fulfill-reject competitive race. Return a promise that will settle\n\t\t * to the same state as the earliest input promise to settle.\n\t\t *\n\t\t * WARNING: The ES6 Promise spec requires that race()ing an empty array\n\t\t * must return a promise that is pending forever. This implementation\n\t\t * returns a singleton forever-pending promise, the same singleton that is\n\t\t * returned by Promise.never(), thus can be checked with ===\n\t\t *\n\t\t * @param {array} promises array of promises to race\n\t\t * @returns {Promise} if input is non-empty, a promise that will settle\n\t\t * to the same outcome as the earliest input promise to settle. if empty\n\t\t * is empty, returns a promise that will never settle.\n\t\t */\n\t\tfunction race(promises) {\n\t\t\tif(typeof promises !== \'object\' || promises === null) {\n\t\t\t\treturn reject(new TypeError(\'non-iterable passed to race()\'));\n\t\t\t}\n\n\t\t\t// Sigh, race([]) is untestable unless we return *something*\n\t\t\t// that is recognizable without calling .then() on it.\n\t\t\treturn promises.length === 0 ? never()\n\t\t\t\t : promises.length === 1 ? resolve(promises[0])\n\t\t\t\t : runRace(promises);\n\t\t}\n\n\t\tfunction runRace(promises) {\n\t\t\tvar resolver = new Pending();\n\t\t\tvar i, x, h;\n\t\t\tfor(i=0; i<promises.length; ++i) {\n\t\t\t\tx = promises[i];\n\t\t\t\tif (x === void 0 && !(i in promises)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\th = getHandler(x);\n\t\t\t\tif(h.state() !== 0) {\n\t\t\t\t\tresolver.become(h);\n\t\t\t\t\tvisitRemaining(promises, i+1, h);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\th.visit(resolver, resolver.resolve, resolver.reject);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn new Promise(Handler, resolver);\n\t\t}\n\n\t\t// Promise internals\n\t\t// Below this, everything is @private\n\n\t\t/**\n\t\t * Get an appropriate handler for x, without checking for cycles\n\t\t * @param {*} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandler(x) {\n\t\t\tif(isPromise(x)) {\n\t\t\t\treturn x._handler.join();\n\t\t\t}\n\t\t\treturn maybeThenable(x) ? getHandlerUntrusted(x) : new Fulfilled(x);\n\t\t}\n\n\t\t/**\n\t\t * Get a handler for thenable x.\n\t\t * NOTE: You must only call this if maybeThenable(x) == true\n\t\t * @param {object|function|Promise} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandlerMaybeThenable(x) {\n\t\t\treturn isPromise(x) ? x._handler.join() : getHandlerUntrusted(x);\n\t\t}\n\n\t\t/**\n\t\t * Get a handler for potentially untrusted thenable x\n\t\t * @param {*} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandlerUntrusted(x) {\n\t\t\ttry {\n\t\t\t\tvar untrustedThen = x.then;\n\t\t\t\treturn typeof untrustedThen === \'function\'\n\t\t\t\t\t? new Thenable(untrustedThen, x)\n\t\t\t\t\t: new Fulfilled(x);\n\t\t\t} catch(e) {\n\t\t\t\treturn new Rejected(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Handler for a promise that is pending forever\n\t\t * @constructor\n\t\t */\n\t\tfunction Handler() {}\n\n\t\tHandler.prototype.when\n\t\t\t= Handler.prototype.become\n\t\t\t= Handler.prototype.notify // deprecated\n\t\t\t= Handler.prototype.fail\n\t\t\t= Handler.prototype._unreport\n\t\t\t= Handler.prototype._report\n\t\t\t= noop;\n\n\t\tHandler.prototype._state = 0;\n\n\t\tHandler.prototype.state = function() {\n\t\t\treturn this._state;\n\t\t};\n\n\t\t/**\n\t\t * Recursively collapse handler chain to find the handler\n\t\t * nearest to the fully resolved value.\n\t\t * @returns {object} handler nearest the fully resolved value\n\t\t */\n\t\tHandler.prototype.join = function() {\n\t\t\tvar h = this;\n\t\t\twhile(h.handler !== void 0) {\n\t\t\t\th = h.handler;\n\t\t\t}\n\t\t\treturn h;\n\t\t};\n\n\t\tHandler.prototype.chain = function(to, receiver, fulfilled, rejected, progress) {\n\t\t\tthis.when({\n\t\t\t\tresolver: to,\n\t\t\t\treceiver: receiver,\n\t\t\t\tfulfilled: fulfilled,\n\t\t\t\trejected: rejected,\n\t\t\t\tprogress: progress\n\t\t\t});\n\t\t};\n\n\t\tHandler.prototype.visit = function(receiver, fulfilled, rejected, progress) {\n\t\t\tthis.chain(failIfRejected, receiver, fulfilled, rejected, progress);\n\t\t};\n\n\t\tHandler.prototype.fold = function(f, z, c, to) {\n\t\t\tthis.when(new Fold(f, z, c, to));\n\t\t};\n\n\t\t/**\n\t\t * Handler that invokes fail() on any handler it becomes\n\t\t * @constructor\n\t\t */\n\t\tfunction FailIfRejected() {}\n\n\t\tinherit(Handler, FailIfRejected);\n\n\t\tFailIfRejected.prototype.become = function(h) {\n\t\t\th.fail();\n\t\t};\n\n\t\tvar failIfRejected = new FailIfRejected();\n\n\t\t/**\n\t\t * Handler that manages a queue of consumers waiting on a pending promise\n\t\t * @constructor\n\t\t */\n\t\tfunction Pending(receiver, inheritedContext) {\n\t\t\tPromise.createContext(this, inheritedContext);\n\n\t\t\tthis.consumers = void 0;\n\t\t\tthis.receiver = receiver;\n\t\t\tthis.handler = void 0;\n\t\t\tthis.resolved = false;\n\t\t}\n\n\t\tinherit(Handler, Pending);\n\n\t\tPending.prototype._state = 0;\n\n\t\tPending.prototype.resolve = function(x) {\n\t\t\tthis.become(getHandler(x));\n\t\t};\n\n\t\tPending.prototype.reject = function(x) {\n\t\t\tif(this.resolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.become(new Rejected(x));\n\t\t};\n\n\t\tPending.prototype.join = function() {\n\t\t\tif (!this.resolved) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar h = this;\n\n\t\t\twhile (h.handler !== void 0) {\n\t\t\t\th = h.handler;\n\t\t\t\tif (h === this) {\n\t\t\t\t\treturn this.handler = cycle();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn h;\n\t\t};\n\n\t\tPending.prototype.run = function() {\n\t\t\tvar q = this.consumers;\n\t\t\tvar handler = this.handler;\n\t\t\tthis.handler = this.handler.join();\n\t\t\tthis.consumers = void 0;\n\n\t\t\tfor (var i = 0; i < q.length; ++i) {\n\t\t\t\thandler.when(q[i]);\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.become = function(handler) {\n\t\t\tif(this.resolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.resolved = true;\n\t\t\tthis.handler = handler;\n\t\t\tif(this.consumers !== void 0) {\n\t\t\t\ttasks.enqueue(this);\n\t\t\t}\n\n\t\t\tif(this.context !== void 0) {\n\t\t\t\thandler._report(this.context);\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.when = function(continuation) {\n\t\t\tif(this.resolved) {\n\t\t\t\ttasks.enqueue(new ContinuationTask(continuation, this.handler));\n\t\t\t} else {\n\t\t\t\tif(this.consumers === void 0) {\n\t\t\t\t\tthis.consumers = [continuation];\n\t\t\t\t} else {\n\t\t\t\t\tthis.consumers.push(continuation);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\tPending.prototype.notify = function(x) {\n\t\t\tif(!this.resolved) {\n\t\t\t\ttasks.enqueue(new ProgressTask(x, this));\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.fail = function(context) {\n\t\t\tvar c = typeof context === \'undefined\' ? this.context : context;\n\t\t\tthis.resolved && this.handler.join().fail(c);\n\t\t};\n\n\t\tPending.prototype._report = function(context) {\n\t\t\tthis.resolved && this.handler.join()._report(context);\n\t\t};\n\n\t\tPending.prototype._unreport = function() {\n\t\t\tthis.resolved && this.handler.join()._unreport();\n\t\t};\n\n\t\t/**\n\t\t * Wrap another handler and force it into a future stack\n\t\t * @param {object} handler\n\t\t * @constructor\n\t\t */\n\t\tfunction Async(handler) {\n\t\t\tthis.handler = handler;\n\t\t}\n\n\t\tinherit(Handler, Async);\n\n\t\tAsync.prototype.when = function(continuation) {\n\t\t\ttasks.enqueue(new ContinuationTask(continuation, this));\n\t\t};\n\n\t\tAsync.prototype._report = function(context) {\n\t\t\tthis.join()._report(context);\n\t\t};\n\n\t\tAsync.prototype._unreport = function() {\n\t\t\tthis.join()._unreport();\n\t\t};\n\n\t\t/**\n\t\t * Handler that wraps an untrusted thenable and assimilates it in a future stack\n\t\t * @param {function} then\n\t\t * @param {{then: function}} thenable\n\t\t * @constructor\n\t\t */\n\t\tfunction Thenable(then, thenable) {\n\t\t\tPending.call(this);\n\t\t\ttasks.enqueue(new AssimilateTask(then, thenable, this));\n\t\t}\n\n\t\tinherit(Pending, Thenable);\n\n\t\t/**\n\t\t * Handler for a fulfilled promise\n\t\t * @param {*} x fulfillment value\n\t\t * @constructor\n\t\t */\n\t\tfunction Fulfilled(x) {\n\t\t\tPromise.createContext(this);\n\t\t\tthis.value = x;\n\t\t}\n\n\t\tinherit(Handler, Fulfilled);\n\n\t\tFulfilled.prototype._state = 1;\n\n\t\tFulfilled.prototype.fold = function(f, z, c, to) {\n\t\t\trunContinuation3(f, z, this, c, to);\n\t\t};\n\n\t\tFulfilled.prototype.when = function(cont) {\n\t\t\trunContinuation1(cont.fulfilled, this, cont.receiver, cont.resolver);\n\t\t};\n\n\t\tvar errorId = 0;\n\n\t\t/**\n\t\t * Handler for a rejected promise\n\t\t * @param {*} x rejection reason\n\t\t * @constructor\n\t\t */\n\t\tfunction Rejected(x) {\n\t\t\tPromise.createContext(this);\n\n\t\t\tthis.id = ++errorId;\n\t\t\tthis.value = x;\n\t\t\tthis.handled = false;\n\t\t\tthis.reported = false;\n\n\t\t\tthis._report();\n\t\t}\n\n\t\tinherit(Handler, Rejected);\n\n\t\tRejected.prototype._state = -1;\n\n\t\tRejected.prototype.fold = function(f, z, c, to) {\n\t\t\tto.become(this);\n\t\t};\n\n\t\tRejected.prototype.when = function(cont) {\n\t\t\tif(typeof cont.rejected === \'function\') {\n\t\t\t\tthis._unreport();\n\t\t\t}\n\t\t\trunContinuation1(cont.rejected, this, cont.receiver, cont.resolver);\n\t\t};\n\n\t\tRejected.prototype._report = function(context) {\n\t\t\ttasks.afterQueue(new ReportTask(this, context));\n\t\t};\n\n\t\tRejected.prototype._unreport = function() {\n\t\t\tif(this.handled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.handled = true;\n\t\t\ttasks.afterQueue(new UnreportTask(this));\n\t\t};\n\n\t\tRejected.prototype.fail = function(context) {\n\t\t\tthis.reported = true;\n\t\t\temitRejection(\'unhandledRejection\', this);\n\t\t\tPromise.onFatalRejection(this, context === void 0 ? this.context : context);\n\t\t};\n\n\t\tfunction ReportTask(rejection, context) {\n\t\t\tthis.rejection = rejection;\n\t\t\tthis.context = context;\n\t\t}\n\n\t\tReportTask.prototype.run = function() {\n\t\t\tif(!this.rejection.handled && !this.rejection.reported) {\n\t\t\t\tthis.rejection.reported = true;\n\t\t\t\temitRejection(\'unhandledRejection\', this.rejection) ||\n\t\t\t\t\tPromise.onPotentiallyUnhandledRejection(this.rejection, this.context);\n\t\t\t}\n\t\t};\n\n\t\tfunction UnreportTask(rejection) {\n\t\t\tthis.rejection = rejection;\n\t\t}\n\n\t\tUnreportTask.prototype.run = function() {\n\t\t\tif(this.rejection.reported) {\n\t\t\t\temitRejection(\'rejectionHandled\', this.rejection) ||\n\t\t\t\t\tPromise.onPotentiallyUnhandledRejectionHandled(this.rejection);\n\t\t\t}\n\t\t};\n\n\t\t// Unhandled rejection hooks\n\t\t// By default, everything is a noop\n\n\t\tPromise.createContext\n\t\t\t= Promise.enterContext\n\t\t\t= Promise.exitContext\n\t\t\t= Promise.onPotentiallyUnhandledRejection\n\t\t\t= Promise.onPotentiallyUnhandledRejectionHandled\n\t\t\t= Promise.onFatalRejection\n\t\t\t= noop;\n\n\t\t// Errors and singletons\n\n\t\tvar foreverPendingHandler = new Handler();\n\t\tvar foreverPendingPromise = new Promise(Handler, foreverPendingHandler);\n\n\t\tfunction cycle() {\n\t\t\treturn new Rejected(new TypeError(\'Promise cycle\'));\n\t\t}\n\n\t\t// Task runners\n\n\t\t/**\n\t\t * Run a single consumer\n\t\t * @constructor\n\t\t */\n\t\tfunction ContinuationTask(continuation, handler) {\n\t\t\tthis.continuation = continuation;\n\t\t\tthis.handler = handler;\n\t\t}\n\n\t\tContinuationTask.prototype.run = function() {\n\t\t\tthis.handler.join().when(this.continuation);\n\t\t};\n\n\t\t/**\n\t\t * Run a queue of progress handlers\n\t\t * @constructor\n\t\t */\n\t\tfunction ProgressTask(value, handler) {\n\t\t\tthis.handler = handler;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tProgressTask.prototype.run = function() {\n\t\t\tvar q = this.handler.consumers;\n\t\t\tif(q === void 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var c, i = 0; i < q.length; ++i) {\n\t\t\t\tc = q[i];\n\t\t\t\trunNotify(c.progress, this.value, this.handler, c.receiver, c.resolver);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Assimilate a thenable, sending it\'s value to resolver\n\t\t * @param {function} then\n\t\t * @param {object|function} thenable\n\t\t * @param {object} resolver\n\t\t * @constructor\n\t\t */\n\t\tfunction AssimilateTask(then, thenable, resolver) {\n\t\t\tthis._then = then;\n\t\t\tthis.thenable = thenable;\n\t\t\tthis.resolver = resolver;\n\t\t}\n\n\t\tAssimilateTask.prototype.run = function() {\n\t\t\tvar h = this.resolver;\n\t\t\ttryAssimilate(this._then, this.thenable, _resolve, _reject, _notify);\n\n\t\t\tfunction _resolve(x) { h.resolve(x); }\n\t\t\tfunction _reject(x) { h.reject(x); }\n\t\t\tfunction _notify(x) { h.notify(x); }\n\t\t};\n\n\t\tfunction tryAssimilate(then, thenable, resolve, reject, notify) {\n\t\t\ttry {\n\t\t\t\tthen.call(thenable, resolve, reject, notify);\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Fold a handler value with z\n\t\t * @constructor\n\t\t */\n\t\tfunction Fold(f, z, c, to) {\n\t\t\tthis.f = f; this.z = z; this.c = c; this.to = to;\n\t\t\tthis.resolver = failIfRejected;\n\t\t\tthis.receiver = this;\n\t\t}\n\n\t\tFold.prototype.fulfilled = function(x) {\n\t\t\tthis.f.call(this.c, this.z, x, this.to);\n\t\t};\n\n\t\tFold.prototype.rejected = function(x) {\n\t\t\tthis.to.reject(x);\n\t\t};\n\n\t\tFold.prototype.progress = function(x) {\n\t\t\tthis.to.notify(x);\n\t\t};\n\n\t\t// Other helpers\n\n\t\t/**\n\t\t * @param {*} x\n\t\t * @returns {boolean} true iff x is a trusted Promise\n\t\t */\n\t\tfunction isPromise(x) {\n\t\t\treturn x instanceof Promise;\n\t\t}\n\n\t\t/**\n\t\t * Test just enough to rule out primitives, in order to take faster\n\t\t * paths in some code\n\t\t * @param {*} x\n\t\t * @returns {boolean} false iff x is guaranteed *not* to be a thenable\n\t\t */\n\t\tfunction maybeThenable(x) {\n\t\t\treturn (typeof x === \'object\' || typeof x === \'function\') && x !== null;\n\t\t}\n\n\t\tfunction runContinuation1(f, h, receiver, next) {\n\t\t\tif(typeof f !== \'function\') {\n\t\t\t\treturn next.become(h);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReject(f, h.value, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\tfunction runContinuation3(f, x, h, receiver, next) {\n\t\t\tif(typeof f !== \'function\') {\n\t\t\t\treturn next.become(h);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReject3(f, x, h.value, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\tfunction runNotify(f, x, h, receiver, next) {\n\t\t\tif(typeof f !== \'function\') {\n\t\t\t\treturn next.notify(x);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReturn(f, x, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\tfunction tryCatch2(f, a, b) {\n\t\t\ttry {\n\t\t\t\treturn f(a, b);\n\t\t\t} catch(e) {\n\t\t\t\treturn reject(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Return f.call(thisArg, x), or if it throws return a rejected promise for\n\t\t * the thrown exception\n\t\t */\n\t\tfunction tryCatchReject(f, x, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tnext.become(getHandler(f.call(thisArg, x)));\n\t\t\t} catch(e) {\n\t\t\t\tnext.become(new Rejected(e));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Same as above, but includes the extra argument parameter.\n\t\t */\n\t\tfunction tryCatchReject3(f, x, y, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tf.call(thisArg, x, y, next);\n\t\t\t} catch(e) {\n\t\t\t\tnext.become(new Rejected(e));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @deprecated\n\t\t * Return f.call(thisArg, x), or if it throws, *return* the exception\n\t\t */\n\t\tfunction tryCatchReturn(f, x, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tnext.notify(f.call(thisArg, x));\n\t\t\t} catch(e) {\n\t\t\t\tnext.notify(e);\n\t\t\t}\n\t\t}\n\n\t\tfunction inherit(Parent, Child) {\n\t\t\tChild.prototype = objectCreate(Parent.prototype);\n\t\t\tChild.prototype.constructor = Child;\n\t\t}\n\n\t\tfunction snd(x, y) {\n\t\t\treturn y;\n\t\t}\n\n\t\tfunction noop() {}\n\n\t\tfunction initEmitRejection() {\n\t\t\t/*global process, self, CustomEvent*/\n\t\t\tif(typeof process !== \'undefined\' && process !== null\n\t\t\t\t&& typeof process.emit === \'function\') {\n\t\t\t\t// Returning falsy here means to call the default\n\t\t\t\t// onPotentiallyUnhandledRejection API. This is safe even in\n\t\t\t\t// browserify since process.emit always returns falsy in browserify:\n\t\t\t\t// https://github.com/defunctzombie/node-process/blob/master/browser.js#L40-L46\n\t\t\t\treturn function(type, rejection) {\n\t\t\t\t\treturn type === \'unhandledRejection\'\n\t\t\t\t\t\t? process.emit(type, rejection.value, rejection)\n\t\t\t\t\t\t: process.emit(type, rejection);\n\t\t\t\t};\n\t\t\t} else if(typeof self !== \'undefined\' && typeof CustomEvent === \'function\') {\n\t\t\t\treturn (function(noop, self, CustomEvent) {\n\t\t\t\t\tvar hasCustomEvent = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ev = new CustomEvent(\'unhandledRejection\');\n\t\t\t\t\t\thasCustomEvent = ev instanceof CustomEvent;\n\t\t\t\t\t} catch (e) {}\n\n\t\t\t\t\treturn !hasCustomEvent ? noop : function(type, rejection) {\n\t\t\t\t\t\tvar ev = new CustomEvent(type, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\treason: rejection.value,\n\t\t\t\t\t\t\t\tkey: rejection\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: false,\n\t\t\t\t\t\t\tcancelable: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn !self.dispatchEvent(ev);\n\t\t\t\t\t};\n\t\t\t\t}(noop, self, CustomEvent));\n\t\t\t}\n\n\t\t\treturn noop;\n\t\t}\n\n\t\treturn Promise;\n\t};\n});\n}(typeof define === \'function\' && define.amd ? define : function(factory) { module.exports = factory(); }));\n\n},{}]},{},[1])\n//# sourceMappingURL=Promise.js.map\n(1)\n});\n;';
- loader.global.define = undefined;
- loader.global.module = undefined;
- loader.global.exports = undefined;
- loader.__exec({
- 'source': source,
- 'address': module.uri
- });
- loader.global.require = require;
- loader.global.define = define;
- return loader.get('@@global-helpers').retrieveGlobal(module.id, undefined);
- });
- /*can-connect@0.5.5#helpers/helpers*/
- define('can-connect@0.5.5#helpers/helpers', function (require, exports, module) {
- require('when/es6-shim/Promise');
- var strReplacer = /\{([^\}]+)\}/g, isContainer = function (current) {
- return /^f|^o/.test(typeof current);
- }, arrayProto = Array.prototype;
- var helpers;
- module.exports = helpers = {
- extend: function (d, s) {
- for (var name in s) {
- d[name] = s[name];
- }
- return d;
- },
- deferred: function () {
- var def = {};
- def.promise = new Promise(function (resolve, reject) {
- def.resolve = resolve;
- def.reject = reject;
- });
- return def;
- },
- each: function (obj, cb) {
- for (var prop in obj) {
- cb(obj[prop], prop);
- }
- return obj;
- },
- forEach: arrayProto.forEach || function (cb) {
- var i = 0, len = this.length;
- for (; i < len; i++) {
- cb(this[i], i);
- }
- },
- map: arrayProto.map || function (cb) {
- var out = [], arr = this;
- helpers.forEach.call(arr, function (o, i) {
- out.push(cb(o, i, arr));
- });
- return out;
- },
- indexOf: arrayProto.indexOf || function (item) {
- for (var i = 0, thisLen = this.length; i < thisLen; i++) {
- if (this[i] === item) {
- return i;
- }
- }
- return -1;
- },
- getObject: function (prop, data, remove) {
- var res = data[prop];
- if (remove) {
- delete data[prop];
- }
- return res;
- },
- sub: function (str, data, remove) {
- var obs = [];
- str = str || '';
- obs.push(str.replace(strReplacer, function (whole, inside) {
- var ob = helpers.getObject(inside, data, remove);
- if (ob === undefined || ob === null) {
- obs = null;
- return '';
- }
- if (isContainer(ob) && obs) {
- obs.push(ob);
- return '';
- }
- return '' + ob;
- }));
- return obs === null ? obs : obs.length <= 1 ? obs[0] : obs;
- },
- keys: Object.keys || function () {
- var hasOwnProperty = Object.prototype.hasOwnProperty, hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'), dontEnums = [
- 'toString',
- 'toLocaleString',
- 'valueOf',
- 'hasOwnProperty',
- 'isPrototypeOf',
- 'propertyIsEnumerable',
- 'constructor'
- ], dontEnumsLength = dontEnums.length;
- return function (obj) {
- if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) {
- throw new TypeError('Object.keys called on non-object');
- }
- var result = [];
- for (var prop in obj) {
- if (hasOwnProperty.call(obj, prop)) {
- result.push(prop);
- }
- }
- if (hasDontEnumBug) {
- for (var i = 0; i < dontEnumsLength; i++) {
- if (hasOwnProperty.call(obj, dontEnums[i])) {
- result.push(dontEnums[i]);
- }
- }
- }
- return result;
- };
- }(),
- defineProperty: function () {
- try {
- var tmp = {};
- Object.defineProperty(tmp, 'foo', {});
- return Object.defineProperty;
- } catch (_) {
- return function (obj, name, desc) {
- if (desc.value) {
- obj[name] = desc.value;
- }
- };
- }
- }(),
- isArray: Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) === '[object Array]';
- },
- bind: function () {
- if (Function.prototype.bind) {
- return function (fn, ctx) {
- return fn.bind(ctx);
- };
- } else {
- return function (fn, ctx) {
- return function () {
- return fn.apply(ctx, arguments);
- };
- };
- }
- }()
- };
- });
- /*can-connect@0.5.5#can-connect*/
- define('can-connect@0.5.5#can-connect', function (require, exports, module) {
- var helpers = require('./helpers/');
- var connect = function (behaviors, options) {
- behaviors = helpers.map.call(behaviors, function (behavior, index) {
- var sortedIndex;
- if (typeof behavior === 'string') {
- sortedIndex = helpers.indexOf.call(connect.order, behavior);
- behavior = behaviorsMap[behavior];
- } else if (behavior.isBehavior) {
- } else {
- behavior = connect.behavior(behavior);
- }
- return {
- originalIndex: index,
- sortedIndex: sortedIndex,
- behavior: behavior
- };
- }).sort(function (b1, b2) {
- if (b1.sortedIndex != null && b2.sortedIndex != null) {
- return b1.sortedIndex - b2.sortedIndex;
- }
- return b1.originalIndex - b2.originalIndex;
- });
- behaviors = helpers.map.call(behaviors, function (b) {
- return b.behavior;
- });
- var behavior = core(connect.behavior('options', function () {
- return options;
- })());
- helpers.forEach.call(behaviors, function (behave) {
- behavior = behave(behavior);
- });
- if (behavior.init) {
- behavior.init();
- }
- return behavior;
- };
- connect.order = [
- 'data-localstorage-cache',
- 'data-url',
- 'data-parse',
- 'cache-requests',
- 'data-combine-requests',
- 'constructor',
- 'constructor-store',
- 'can-map',
- 'fall-through-cache',
- 'data-inline-cache',
- 'data-worker',
- 'data-callbacks-cache',
- 'data-callbacks',
- 'constructor-callbacks-once'
- ];
- connect.behavior = function (name, behavior) {
- if (typeof name !== 'string') {
- behavior = name;
- name = undefined;
- }
- var behaviorMixin = function (base) {
- var Behavior = function () {
- };
- Behavior.name = name;
- Behavior.prototype = base;
- var newBehavior = new Behavior();
- var res = typeof behavior === 'function' ? behavior.apply(newBehavior, arguments) : behavior;
- helpers.extend(newBehavior, res);
- newBehavior.__behaviorName = name;
- return newBehavior;
- };
- if (name) {
- behaviorMixin.name = name;
- behaviorsMap[name] = behaviorMixin;
- }
- behaviorMixin.isBehavior = true;
- return behaviorMixin;
- };
- var behaviorsMap = {};
- var core = connect.behavior('base', function (base) {
- return {
- id: function (instance) {
- var ids = [], algebra = this.algebra;
- if (algebra && algebra.clauses && algebra.clauses.id) {
- for (var prop in algebra.clauses.id) {
- ids.push(instance[prop]);
- }
- }
- if (this.idProp && !ids.length) {
- ids.push(instance[this.idProp]);
- }
- if (!ids.length) {
- ids.push(instance.id);
- }
- return ids.length > 1 ? ids.join('@|@') : ids[0];
- },
- idProp: base.idProp || 'id',
- listSet: function (list) {
- return list[this.listSetProp];
- },
- listSetProp: '__listSet',
- init: function () {
- }
- };
- });
- connect.base = core;
- module.exports = connect;
- });
- /*can-define@0.7.17#list/list*/
- define('can-define@0.7.17#list/list', function (require, exports, module) {
- var Construct = require('can-construct');
- var define = require('can-define');
- var make = define.make;
- var canBatch = require('can-event/batch/batch');
- var Observation = require('can-observation');
- var defineHelpers = require('../define-helpers/define-helpers');
- var assign = require('can-util/js/assign/assign');
- var each = require('can-util/js/each/each');
- var isArray = require('can-util/js/is-array/is-array');
- var makeArray = require('can-util/js/make-array/make-array');
- var types = require('can-util/js/types/types');
- var ns = require('can-util/namespace');
- var splice = [].splice;
- var identity = function (x) {
- return x;
- };
- var makeFilterCallback = function (props) {
- return function (item) {
- for (var prop in props) {
- if (item[prop] !== props[prop]) {
- return false;
- }
- }
- return true;
- };
- };
- var DefineList = Construct.extend('DefineList', {
- setup: function () {
- if (DefineList) {
- var prototype = this.prototype;
- var itemsDefinition = prototype['*'];
- delete prototype['*'];
- define(prototype, prototype);
- if (itemsDefinition) {
- prototype['*'] = itemsDefinition;
- itemsDefinition = define.getDefinitionOrMethod('*', itemsDefinition, {});
- if (itemsDefinition.Type) {
- this.prototype.__type = make.set.Type('*', itemsDefinition.Type, identity);
- } else if (itemsDefinition.type) {
- this.prototype.__type = make.set.type('*', itemsDefinition.type, identity);
- }
- }
- }
- }
- }, {
- setup: function (items) {
- if (!this._define) {
- Object.defineProperty(this, '_define', {
- enumerable: false,
- value: { definitions: {} }
- });
- Object.defineProperty(this, '_data', {
- enumerable: false,
- value: {}
- });
- }
- define.setup.call(this, {}, false);
- this._length = 0;
- if (items) {
- this.splice.apply(this, [
- 0,
- 0
- ].concat(defineHelpers.toObject(this, items, [], DefineList)));
- }
- },
- __type: define.types.observable,
- _triggerChange: function (attr, how, newVal, oldVal) {
- canBatch.trigger.call(this, {
- type: '' + attr,
- target: this
- }, [
- newVal,
- oldVal
- ]);
- var index = +attr;
- if (!~('' + attr).indexOf('.') && !isNaN(index)) {
- if (how === 'add') {
- canBatch.trigger.call(this, how, [
- newVal,
- index
- ]);
- canBatch.trigger.call(this, 'length', [this._length]);
- } else if (how === 'remove') {
- canBatch.trigger.call(this, how, [
- oldVal,
- index
- ]);
- canBatch.trigger.call(this, 'length', [this._length]);
- } else {
- canBatch.trigger.call(this, how, [
- newVal,
- index
- ]);
- }
- }
- },
- get: function (index) {
- if (arguments.length) {
- Observation.add(this, '' + index);
- return this[index];
- } else {
- return defineHelpers.serialize(this, 'get', []);
- }
- },
- set: function (prop, value) {
- if (typeof prop !== 'object') {
- prop = isNaN(+prop) || prop % 1 ? prop : +prop;
- if (typeof prop === 'number') {
- if (typeof prop === 'number' && prop > this._length - 1) {
- var newArr = new Array(prop + 1 - this._length);
- newArr[newArr.length - 1] = value;
- this.push.apply(this, newArr);
- return newArr;
- }
- this.splice(prop, 1, value);
- } else {
- var defined = defineHelpers.defineExpando(this, prop, value);
- if (!defined) {
- this[prop] = value;
- }
- }
- } else {
- if (isArray(prop)) {
- if (value) {
- this.replace(prop);
- } else {
- this.splice.apply(this, [
- 0,
- prop.length
- ].concat(prop));
- }
- } else {
- each(prop, function (value, prop) {
- this.set(prop, value);
- }, this);
- }
- }
- return this;
- },
- _items: function () {
- var arr = [];
- this._each(function (item) {
- arr.push(item);
- });
- return arr;
- },
- _each: function (callback) {
- for (var i = 0, len = this._length; i < len; i++) {
- callback(this[i], i);
- }
- },
- splice: function (index, howMany) {
- var args = makeArray(arguments), added = [], i, len, listIndex, allSame = args.length > 2;
- index = index || 0;
- for (i = 0, len = args.length - 2; i < len; i++) {
- listIndex = i + 2;
- args[listIndex] = this.__type(args[listIndex], listIndex);
- added.push(args[listIndex]);
- if (this[i + index] !== args[listIndex]) {
- allSame = false;
- }
- }
- if (allSame && this._length <= added.length) {
- return added;
- }
- if (howMany === undefined) {
- howMany = args[1] = this._length - index;
- }
- var removed = splice.apply(this, args);
- canBatch.start();
- if (howMany > 0) {
- this._triggerChange('' + index, 'remove', undefined, removed);
- }
- if (args.length > 2) {
- this._triggerChange('' + index, 'add', added, removed);
- }
- canBatch.stop();
- return removed;
- },
- serialize: function () {
- return defineHelpers.serialize(this, 'serialize', []);
- }
- });
- var getArgs = function (args) {
- return args[0] && Array.isArray(args[0]) ? args[0] : makeArray(args);
- };
- each({
- push: 'length',
- unshift: 0
- }, function (where, name) {
- var orig = [][name];
- DefineList.prototype[name] = function () {
- var args = [], len = where ? this._length : 0, i = arguments.length, res, val;
- while (i--) {
- val = arguments[i];
- args[i] = this.__type(val, i);
- }
- res = orig.apply(this, args);
- if (!this.comparator || args.length) {
- this._triggerChange('' + len, 'add', args, undefined);
- }
- return res;
- };
- });
- each({
- pop: 'length',
- shift: 0
- }, function (where, name) {
- DefineList.prototype[name] = function () {
- if (!this._length) {
- return undefined;
- }
- var args = getArgs(arguments), len = where && this._length ? this._length - 1 : 0;
- var res = [][name].apply(this, args);
- this._triggerChange('' + len, 'remove', undefined, [res]);
- return res;
- };
- });
- assign(DefineList.prototype, {
- indexOf: function (item, fromIndex) {
- for (var i = fromIndex || 0, len = this.length; i < len; i++) {
- if (this.get(i) === item) {
- return i;
- }
- }
- return -1;
- },
- join: function () {
- Observation.add(this, 'length');
- return [].join.apply(this, arguments);
- },
- reverse: function () {
- var list = [].reverse.call(this._items());
- return this.replace(list);
- },
- slice: function () {
- Observation.add(this, 'length');
- var temp = Array.prototype.slice.apply(this, arguments);
- return new this.constructor(temp);
- },
- concat: function () {
- var args = [];
- each(makeArray(arguments), function (arg, i) {
- args[i] = arg instanceof DefineList ? arg.get() : arg;
- });
- return new this.constructor(Array.prototype.concat.apply(this.get(), args));
- },
- forEach: function (cb, thisarg) {
- var item;
- for (var i = 0, len = this.length; i < len; i++) {
- item = this.get(i);
- if (cb.call(thisarg || item, item, i, this) === false) {
- break;
- }
- }
- return this;
- },
- replace: function (newList) {
- this.splice.apply(this, [
- 0,
- this._length
- ].concat(makeArray(newList || [])));
- return this;
- },
- filter: function (callback, thisArg) {
- var filteredList = [], self = this, filtered;
- if (typeof callback === 'object') {
- callback = makeFilterCallback(callback);
- }
- this.each(function (item, index, list) {
- filtered = callback.call(thisArg | self, item, index, self);
- if (filtered) {
- filteredList.push(item);
- }
- });
- return new this.constructor(filteredList);
- },
- map: function (callback, thisArg) {
- var mappedList = [], self = this;
- this.each(function (item, index, list) {
- var mapped = callback.call(thisArg | self, item, index, self);
- mappedList.push(mapped);
- });
- return new this.constructor(mappedList);
- }
- });
- for (var prop in define.eventsProto) {
- Object.defineProperty(DefineList.prototype, prop, {
- enumerable: false,
- value: define.eventsProto[prop],
- writable: true
- });
- }
- Object.defineProperty(DefineList.prototype, 'length', {
- get: function () {
- if (!this.__inSetup) {
- Observation.add(this, 'length');
- }
- return this._length;
- },
- set: function (newVal) {
- this._length = newVal;
- },
- enumerable: true
- });
- var oldIsListLike = types.isListLike;
- types.isListLike = function (obj) {
- return obj instanceof DefineList || oldIsListLike.apply(this, arguments);
- };
- DefineList.prototype.each = DefineList.prototype.forEach;
- DefineList.prototype.attr = function (prop, value) {
- console.warn('DefineMap::attr shouldn\'t be called');
- if (arguments.length === 0) {
- return this.get();
- } else if (prop && typeof prop === 'object') {
- return this.set.apply(this, arguments);
- } else if (arguments.length === 1) {
- return this.get(prop);
- } else {
- return this.set(prop, value);
- }
- };
- DefineList.prototype.item = function (index, value) {
- if (arguments.length === 1) {
- return this.get(index);
- } else {
- return this.set(index, value);
- }
- };
- DefineList.prototype.items = function () {
- console.warn('DefineList::get should should be used instead of DefineList::items');
- return this.get();
- };
- types.DefineList = DefineList;
- types.DefaultList = DefineList;
- module.exports = ns.DefineList = DefineList;
- });
- /*src/player-bio/config*/
- define('src/player-bio/config', ['exports'], function (exports) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- exports.default = {
- playersUrl: '/modules/page.players-redesign/player-bio/data/players.json',
- playerBioUrl: '/modules/page.players-redesign/player-bio/data/players/{id}/bio.json',
- playerResultsUrl: '/modules/page.players-redesign/player-bio/data/players/{id}/{year}results.json',
- playerStatsUrl: '/modules/page.players-redesign/player-bio/data/players/{id}/2016stat.json',
- playerStat186Url: '/modules/page.players-redesign/player-bio/data/r/stats/current/186.json',
- tourCode: 'r',
- inPlayoffs: false
- };
- });
- /*src/player-bio/models/players-model*/
- define('src/player-bio/models/players-model', [
- 'exports',
- 'can-connect',
- 'can-define/map/map',
- 'can-define/list/list',
- '../config',
- 'jquery',
- 'can-connect/constructor/constructor',
- 'can-connect/can/map/map',
- 'can-connect/data/parse/parse'
- ], function (exports, _canConnect, _map, _list, _config, _jquery) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var _canConnect2 = _interopRequireDefault(_canConnect);
- var _map2 = _interopRequireDefault(_map);
- var _list2 = _interopRequireDefault(_list);
- var _config2 = _interopRequireDefault(_config);
- var _jquery2 = _interopRequireDefault(_jquery);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var Player = _map2.default.extend({
- playerId: {
- type: 'string',
- value: ''
- },
- name: {
- type: 'string',
- value: ''
- },
- country: {
- type: 'string',
- value: ''
- }
- });
- var PlayerList = _list2.default.extend([{
- player: {
- type: Object,
- Value: Player
- }
- }]);
- (0, _canConnect2.default)([], {
- Map: PlayerList,
- getData: function getData(params) {
- var url = pgatour.format(_config2.default.playersUrl, { id: params.id });
- return new Promise(function (resolve, reject) {
- _jquery2.default.get(url).then(resolve, reject);
- });
- },
- parseInstanceData: function parseInstanceData(response) {
- var data = JSON.parse(response);
- return data.plrs.filter(function (player) {
- return player.pr === _config2.default.tourCode;
- }).map(function (player) {
- return {
- playerName: player.nameL + ',' + player.nameF,
- playerId: player.pid,
- countryCode: player.ct
- };
- });
- }
- });
- exports.default = PlayerList;
- });
- /*src/player-bio/models/player-bio-model*/
- define('src/player-bio/models/player-bio-model', [
- 'exports',
- 'can-connect',
- 'can-define/map/map',
- '../config',
- 'jquery',
- 'can-connect/constructor/constructor',
- 'can-connect/can/map/map',
- 'can-connect/data/parse/parse'
- ], function (exports, _canConnect, _map, _config, _jquery) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var _canConnect2 = _interopRequireDefault(_canConnect);
- var _map2 = _interopRequireDefault(_map);
- var _config2 = _interopRequireDefault(_config);
- var _jquery2 = _interopRequireDefault(_jquery);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var PlayerBio = _map2.default.extend({
- age: {
- type: 'string',
- value: ''
- },
- birthPlace: {
- type: 'string',
- value: ''
- },
- countryCode: {
- type: 'string',
- value: ''
- },
- height: {
- type: 'string',
- value: ''
- },
- heightMetric: {
- type: 'string',
- value: ''
- },
- playerId: {
- type: 'string',
- value: ''
- },
- school: {
- type: 'string',
- value: ''
- },
- turnedPro: {
- type: 'string',
- value: ''
- },
- weight: {
- type: 'string',
- value: ''
- },
- weightMetric: {
- type: 'string',
- value: ''
- }
- });
- (0, _canConnect2.default)([], {
- Map: PlayerBio,
- getData: function getData(params) {
- var url = pgatour.format(_config2.default.playerBioUrl, { id: params.id });
- return new Promise(function (resolve, reject) {
- _jquery2.default.get(url).then(resolve, reject);
- });
- },
- parseInstanceData: function parseInstanceData(response) {
- var data = JSON.parse(response);
- var personalInfo = data.plrs[0].personalInfo;
- var playerId = data.plrs[0].plrNum;
- return {
- playerId: playerId,
- name: personalInfo.name.first + ' ' + personalInfo.name.last,
- height: personalInfo.height,
- heightMetric: personalInfo.heightMetric,
- weight: personalInfo.weight,
- weightMetric: personalInfo.weightMetric,
- age: personalInfo.age,
- school: personalInfo.education,
- birthPlace: personalInfo.birthPlace,
- turnedPro: personalInfo.trndProYear,
- countryCode: '',
- country: ''
- };
- }
- });
- exports.default = PlayerBio;
- });
- /*jspath@0.3.3#lib/jspath*/
- (function () {
- var SYNTAX = {
- PATH: 1,
- SELECTOR: 2,
- OBJ_PRED: 3,
- POS_PRED: 4,
- LOGICAL_EXPR: 5,
- COMPARISON_EXPR: 6,
- MATH_EXPR: 7,
- CONCAT_EXPR: 8,
- UNARY_EXPR: 9,
- POS_EXPR: 10,
- LITERAL: 11
- };
- var parse = function () {
- var TOKEN = {
- ID: 1,
- NUM: 2,
- STR: 3,
- BOOL: 4,
- PUNCT: 5,
- EOP: 6
- }, MESSAGES = {
- UNEXP_TOKEN: 'Unexpected token "%0"',
- UNEXP_EOP: 'Unexpected end of path'
- };
- var path, idx, buf, len;
- function parse(_path) {
- path = _path.split('');
- idx = 0;
- buf = null;
- len = path.length;
- var res = parsePathConcatExpr(), token = lex();
- if (token.type !== TOKEN.EOP) {
- throwUnexpected(token);
- }
- return res;
- }
- function parsePathConcatExpr() {
- var expr = parsePathConcatPartExpr(), operands;
- while (match('|')) {
- lex();
- (operands || (operands = [expr])).push(parsePathConcatPartExpr());
- }
- return operands ? {
- type: SYNTAX.CONCAT_EXPR,
- args: operands
- } : expr;
- }
- function parsePathConcatPartExpr() {
- return match('(') ? parsePathGroupExpr() : parsePath();
- }
- function parsePathGroupExpr() {
- expect('(');
- var expr = parsePathConcatExpr();
- expect(')');
- var parts = [], part;
- while (part = parsePredicate()) {
- parts.push(part);
- }
- if (!parts.length) {
- return expr;
- } else if (expr.type === SYNTAX.PATH) {
- expr.parts = expr.parts.concat(parts);
- return expr;
- }
- parts.unshift(expr);
- return {
- type: SYNTAX.PATH,
- parts: parts
- };
- }
- function parsePredicate() {
- if (match('[')) {
- return parsePosPredicate();
- }
- if (match('{')) {
- return parseObjectPredicate();
- }
- if (match('(')) {
- return parsePathGroupExpr();
- }
- }
- function parsePath() {
- if (!matchPath()) {
- throwUnexpected(lex());
- }
- var fromRoot = false, subst;
- if (match('^')) {
- lex();
- fromRoot = true;
- } else if (matchSubst()) {
- subst = lex().val.substr(1);
- }
- var parts = [], part;
- while (part = parsePathPart()) {
- parts.push(part);
- }
- return {
- type: SYNTAX.PATH,
- fromRoot: fromRoot,
- subst: subst,
- parts: parts
- };
- }
- function parsePathPart() {
- return matchSelector() ? parseSelector() : parsePredicate();
- }
- function parseSelector() {
- var selector = lex().val, token = lookahead(), prop;
- if (match('*') || token.type === TOKEN.ID || token.type === TOKEN.STR) {
- prop = lex().val;
- }
- return {
- type: SYNTAX.SELECTOR,
- selector: selector,
- prop: prop
- };
- }
- function parsePosPredicate() {
- expect('[');
- var expr = parsePosExpr();
- expect(']');
- return {
- type: SYNTAX.POS_PRED,
- arg: expr
- };
- }
- function parseObjectPredicate() {
- expect('{');
- var expr = parseLogicalORExpr();
- expect('}');
- return {
- type: SYNTAX.OBJ_PRED,
- arg: expr
- };
- }
- function parseLogicalORExpr() {
- var expr = parseLogicalANDExpr(), operands;
- while (match('||')) {
- lex();
- (operands || (operands = [expr])).push(parseLogicalANDExpr());
- }
- return operands ? {
- type: SYNTAX.LOGICAL_EXPR,
- op: '||',
- args: operands
- } : expr;
- }
- function parseLogicalANDExpr() {
- var expr = parseEqualityExpr(), operands;
- while (match('&&')) {
- lex();
- (operands || (operands = [expr])).push(parseEqualityExpr());
- }
- return operands ? {
- type: SYNTAX.LOGICAL_EXPR,
- op: '&&',
- args: operands
- } : expr;
- }
- function parseEqualityExpr() {
- var expr = parseRelationalExpr();
- while (match('==') || match('!=') || match('===') || match('!==') || match('^=') || match('^==') || match('$==') || match('$=') || match('*==') || match('*=')) {
- expr = {
- type: SYNTAX.COMPARISON_EXPR,
- op: lex().val,
- args: [
- expr,
- parseEqualityExpr()
- ]
- };
- }
- return expr;
- }
- function parseRelationalExpr() {
- var expr = parseAdditiveExpr();
- while (match('<') || match('>') || match('<=') || match('>=')) {
- expr = {
- type: SYNTAX.COMPARISON_EXPR,
- op: lex().val,
- args: [
- expr,
- parseRelationalExpr()
- ]
- };
- }
- return expr;
- }
- function parseAdditiveExpr() {
- var expr = parseMultiplicativeExpr();
- while (match('+') || match('-')) {
- expr = {
- type: SYNTAX.MATH_EXPR,
- op: lex().val,
- args: [
- expr,
- parseMultiplicativeExpr()
- ]
- };
- }
- return expr;
- }
- function parseMultiplicativeExpr() {
- var expr = parseUnaryExpr();
- while (match('*') || match('/') || match('%')) {
- expr = {
- type: SYNTAX.MATH_EXPR,
- op: lex().val,
- args: [
- expr,
- parseMultiplicativeExpr()
- ]
- };
- }
- return expr;
- }
- function parsePosExpr() {
- if (match(':')) {
- lex();
- return {
- type: SYNTAX.POS_EXPR,
- toIdx: parseUnaryExpr()
- };
- }
- var fromExpr = parseUnaryExpr();
- if (match(':')) {
- lex();
- if (match(']')) {
- return {
- type: SYNTAX.POS_EXPR,
- fromIdx: fromExpr
- };
- }
- return {
- type: SYNTAX.POS_EXPR,
- fromIdx: fromExpr,
- toIdx: parseUnaryExpr()
- };
- }
- return {
- type: SYNTAX.POS_EXPR,
- idx: fromExpr
- };
- }
- function parseUnaryExpr() {
- if (match('!') || match('-')) {
- return {
- type: SYNTAX.UNARY_EXPR,
- op: lex().val,
- arg: parseUnaryExpr()
- };
- }
- return parsePrimaryExpr();
- }
- function parsePrimaryExpr() {
- var token = lookahead(), type = token.type;
- if (type === TOKEN.STR || type === TOKEN.NUM || type === TOKEN.BOOL) {
- return {
- type: SYNTAX.LITERAL,
- val: lex().val
- };
- }
- if (matchPath()) {
- return parsePath();
- }
- if (match('(')) {
- return parseGroupExpr();
- }
- return throwUnexpected(lex());
- }
- function parseGroupExpr() {
- expect('(');
- var expr = parseLogicalORExpr();
- expect(')');
- return expr;
- }
- function match(val) {
- var token = lookahead();
- return token.type === TOKEN.PUNCT && token.val === val;
- }
- function matchPath() {
- return matchSelector() || matchSubst() || match('^');
- }
- function matchSelector() {
- var token = lookahead();
- if (token.type === TOKEN.PUNCT) {
- var val = token.val;
- return val === '.' || val === '..';
- }
- return false;
- }
- function matchSubst() {
- var token = lookahead();
- return token.type === TOKEN.ID && token.val[0] === '$';
- }
- function expect(val) {
- var token = lex();
- if (token.type !== TOKEN.PUNCT || token.val !== val) {
- throwUnexpected(token);
- }
- }
- function lookahead() {
- if (buf !== null) {
- return buf;
- }
- var pos = idx;
- buf = advance();
- idx = pos;
- return buf;
- }
- function advance() {
- while (isWhiteSpace(path[idx])) {
- ++idx;
- }
- if (idx >= len) {
- return {
- type: TOKEN.EOP,
- range: [
- idx,
- idx
- ]
- };
- }
- var token = scanPunctuator();
- if (token || (token = scanId()) || (token = scanString()) || (token = scanNumeric())) {
- return token;
- }
- token = {
- range: [
- idx,
- idx
- ]
- };
- idx >= len ? token.type = TOKEN.EOP : token.val = path[idx];
- throwUnexpected(token);
- }
- function lex() {
- var token;
- if (buf) {
- idx = buf.range[1];
- token = buf;
- buf = null;
- return token;
- }
- return advance();
- }
- function isDigit(ch) {
- return '0123456789'.indexOf(ch) >= 0;
- }
- function isWhiteSpace(ch) {
- return ch === ' ';
- }
- function isIdStart(ch) {
- return ch === '$' || ch === '@' || ch === '_' || ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z';
- }
- function isIdPart(ch) {
- return isIdStart(ch) || ch >= '0' && ch <= '9';
- }
- function scanId() {
- var ch = path[idx];
- if (!isIdStart(ch)) {
- return;
- }
- var start = idx, id = ch;
- while (++idx < len) {
- ch = path[idx];
- if (!isIdPart(ch)) {
- break;
- }
- id += ch;
- }
- return id === 'true' || id === 'false' ? {
- type: TOKEN.BOOL,
- val: id === 'true',
- range: [
- start,
- idx
- ]
- } : {
- type: TOKEN.ID,
- val: id,
- range: [
- start,
- idx
- ]
- };
- }
- function scanString() {
- if (path[idx] !== '"') {
- return;
- }
- var start = ++idx, str = '', eosFound = false, ch;
- while (idx < len) {
- ch = path[idx++];
- if (ch === '\\') {
- ch = path[idx++];
- } else if (ch === '"') {
- eosFound = true;
- break;
- }
- str += ch;
- }
- if (eosFound) {
- return {
- type: TOKEN.STR,
- val: str,
- range: [
- start,
- idx
- ]
- };
- }
- }
- function scanNumeric() {
- var start = idx, ch = path[idx], isFloat = ch === '.';
- if (isFloat || isDigit(ch)) {
- var num = ch;
- while (++idx < len) {
- ch = path[idx];
- if (ch === '.') {
- if (isFloat) {
- return;
- }
- isFloat = true;
- } else if (!isDigit(ch)) {
- break;
- }
- num += ch;
- }
- return {
- type: TOKEN.NUM,
- val: isFloat ? parseFloat(num) : parseInt(num, 10),
- range: [
- start,
- idx
- ]
- };
- }
- }
- function scanPunctuator() {
- var start = idx, ch1 = path[idx], ch2 = path[idx + 1];
- if (ch1 === '.') {
- if (isDigit(ch2)) {
- return;
- }
- return path[++idx] === '.' ? {
- type: TOKEN.PUNCT,
- val: '..',
- range: [
- start,
- ++idx
- ]
- } : {
- type: TOKEN.PUNCT,
- val: '.',
- range: [
- start,
- idx
- ]
- };
- }
- if (ch2 === '=') {
- var ch3 = path[idx + 2];
- if (ch3 === '=') {
- if ('=!^$*'.indexOf(ch1) >= 0) {
- return {
- type: TOKEN.PUNCT,
- val: ch1 + ch2 + ch3,
- range: [
- start,
- idx += 3
- ]
- };
- }
- } else if ('=!^$*><'.indexOf(ch1) >= 0) {
- return {
- type: TOKEN.PUNCT,
- val: ch1 + ch2,
- range: [
- start,
- idx += 2
- ]
- };
- }
- }
- if (ch1 === ch2 && (ch1 === '|' || ch1 === '&')) {
- return {
- type: TOKEN.PUNCT,
- val: ch1 + ch2,
- range: [
- start,
- idx += 2
- ]
- };
- }
- if (':{}()[]^+-*/%!><|'.indexOf(ch1) >= 0) {
- return {
- type: TOKEN.PUNCT,
- val: ch1,
- range: [
- start,
- ++idx
- ]
- };
- }
- }
- function throwUnexpected(token) {
- if (token.type === TOKEN.EOP) {
- throwError(token, MESSAGES.UNEXP_EOP);
- }
- throwError(token, MESSAGES.UNEXP_TOKEN, token.val);
- }
- function throwError(token, messageFormat) {
- var args = Array.prototype.slice.call(arguments, 2), msg = messageFormat.replace(/%(\d)/g, function (_, idx) {
- return args[idx] || '';
- }), error = new Error(msg);
- error.column = token.range[0];
- throw error;
- }
- return parse;
- }();
- var translate = function () {
- var body, vars, lastVarId, unusedVars;
- function acquireVar() {
- if (unusedVars.length) {
- return unusedVars.shift();
- }
- var varName = 'v' + ++lastVarId;
- vars.push(varName);
- return varName;
- }
- function releaseVars() {
- var args = arguments, i = args.length;
- while (i--) {
- unusedVars.push(args[i]);
- }
- }
- function translate(ast) {
- body = [];
- vars = ['res'];
- lastVarId = 0;
- unusedVars = [];
- translateExpr(ast, 'res', 'data');
- body.unshift('var ', Array.isArray ? 'isArr = Array.isArray' : 'toStr = Object.prototype.toString, isArr = function(o) { return toStr.call(o) === "[object Array]"; }', ', concat = Array.prototype.concat', ',', vars.join(','), ';');
- if (ast.type === SYNTAX.PATH) {
- var lastPart = ast.parts[ast.parts.length - 1];
- if (lastPart && lastPart.type === SYNTAX.POS_PRED && 'idx' in lastPart.arg) {
- body.push('res = res[0];');
- }
- }
- body.push('return res;');
- return body.join('');
- }
- function translatePath(path, dest, ctx) {
- var parts = path.parts, i = 0, len = parts.length;
- body.push(dest, '=', path.fromRoot ? 'data' : path.subst ? 'subst.' + path.subst : ctx, ';', 'isArr(' + dest + ') || (' + dest + ' = [' + dest + ']);');
- while (i < len) {
- var item = parts[i++];
- switch (item.type) {
- case SYNTAX.SELECTOR:
- item.selector === '..' ? translateDescendantSelector(item, dest, dest) : translateSelector(item, dest, dest);
- break;
- case SYNTAX.OBJ_PRED:
- translateObjectPredicate(item, dest, dest);
- break;
- case SYNTAX.POS_PRED:
- translatePosPredicate(item, dest, dest);
- break;
- case SYNTAX.CONCAT_EXPR:
- translateConcatExpr(item, dest, dest);
- break;
- }
- }
- }
- function translateSelector(sel, dest, ctx) {
- if (sel.prop) {
- var propStr = escapeStr(sel.prop), res = acquireVar(), i = acquireVar(), len = acquireVar(), curCtx = acquireVar(), j = acquireVar(), val = acquireVar(), tmpArr = acquireVar();
- body.push(res, '= [];', i, '= 0;', len, '=', ctx, '.length;', tmpArr, '= [];', 'while(', i, '<', len, ') {', curCtx, '=', ctx, '[', i, '++];', 'if(', curCtx, '!= null) {');
- if (sel.prop === '*') {
- body.push('if(typeof ', curCtx, '=== "object") {', 'if(isArr(', curCtx, ')) {', res, '=', res, '.concat(', curCtx, ');', '}', 'else {', 'for(', j, ' in ', curCtx, ') {', 'if(', curCtx, '.hasOwnProperty(', j, ')) {', val, '=', curCtx, '[', j, '];');
- inlineAppendToArray(res, val);
- body.push('}', '}', '}', '}');
- } else {
- body.push(val, '=', curCtx, '[', propStr, '];');
- inlineAppendToArray(res, val, tmpArr, len);
- }
- body.push('}', '}', dest, '=', len, '> 1 &&', tmpArr, '.length?', tmpArr, '.length > 1?', 'concat.apply(', res, ',', tmpArr, ') :', res, '.concat(', tmpArr, '[0]) :', res, ';');
- releaseVars(res, i, len, curCtx, j, val, tmpArr);
- }
- }
- function translateDescendantSelector(sel, dest, baseCtx) {
- var prop = sel.prop, ctx = acquireVar(), curCtx = acquireVar(), childCtxs = acquireVar(), i = acquireVar(), j = acquireVar(), val = acquireVar(), len = acquireVar(), res = acquireVar();
- body.push(ctx, '=', baseCtx, '.slice(),', res, '= [];', 'while(', ctx, '.length) {', curCtx, '=', ctx, '.shift();');
- prop ? body.push('if(typeof ', curCtx, '=== "object" &&', curCtx, ') {') : body.push('if(typeof ', curCtx, '!= null) {');
- body.push(childCtxs, '= [];', 'if(isArr(', curCtx, ')) {', i, '= 0,', len, '=', curCtx, '.length;', 'while(', i, '<', len, ') {', val, '=', curCtx, '[', i, '++];');
- prop && body.push('if(typeof ', val, '=== "object") {');
- inlineAppendToArray(childCtxs, val);
- prop && body.push('}');
- body.push('}', '}', 'else {');
- if (prop) {
- if (prop !== '*') {
- body.push(val, '=', curCtx, '["' + prop + '"];');
- inlineAppendToArray(res, val);
- }
- } else {
- inlineAppendToArray(res, curCtx);
- body.push('if(typeof ', curCtx, '=== "object") {');
- }
- body.push('for(', j, ' in ', curCtx, ') {', 'if(', curCtx, '.hasOwnProperty(', j, ')) {', val, '=', curCtx, '[', j, '];');
- inlineAppendToArray(childCtxs, val);
- prop === '*' && inlineAppendToArray(res, val);
- body.push('}', '}');
- prop || body.push('}');
- body.push('}', childCtxs, '.length &&', ctx, '.unshift.apply(', ctx, ',', childCtxs, ');', '}', '}', dest, '=', res, ';');
- releaseVars(ctx, curCtx, childCtxs, i, j, val, len, res);
- }
- function translateObjectPredicate(expr, dest, ctx) {
- var resVar = acquireVar(), i = acquireVar(), len = acquireVar(), cond = acquireVar(), curItem = acquireVar();
- body.push(resVar, '= [];', i, '= 0;', len, '=', ctx, '.length;', 'while(', i, '<', len, ') {', curItem, '=', ctx, '[', i, '++];');
- translateExpr(expr.arg, cond, curItem);
- body.push(convertToBool(expr.arg, cond), '&&', resVar, '.push(', curItem, ');', '}', dest, '=', resVar, ';');
- releaseVars(resVar, i, len, curItem, cond);
- }
- function translatePosPredicate(item, dest, ctx) {
- var arrayExpr = item.arg, fromIdx, toIdx;
- if (arrayExpr.idx) {
- var idx = acquireVar();
- translateExpr(arrayExpr.idx, idx, ctx);
- body.push(idx, '< 0 && (', idx, '=', ctx, '.length +', idx, ');', dest, '=', ctx, '[', idx, '] == null? [] : [', ctx, '[', idx, ']];');
- releaseVars(idx);
- return false;
- } else if (arrayExpr.fromIdx) {
- if (arrayExpr.toIdx) {
- translateExpr(arrayExpr.fromIdx, fromIdx = acquireVar(), ctx);
- translateExpr(arrayExpr.toIdx, toIdx = acquireVar(), ctx);
- body.push(dest, '=', ctx, '.slice(', fromIdx, ',', toIdx, ');');
- releaseVars(fromIdx, toIdx);
- } else {
- translateExpr(arrayExpr.fromIdx, fromIdx = acquireVar(), ctx);
- body.push(dest, '=', ctx, '.slice(', fromIdx, ');');
- releaseVars(fromIdx);
- }
- } else {
- translateExpr(arrayExpr.toIdx, toIdx = acquireVar(), ctx);
- body.push(dest, '=', ctx, '.slice(0,', toIdx, ');');
- releaseVars(toIdx);
- }
- }
- function translateExpr(expr, dest, ctx) {
- switch (expr.type) {
- case SYNTAX.PATH:
- translatePath(expr, dest, ctx);
- break;
- case SYNTAX.CONCAT_EXPR:
- translateConcatExpr(expr, dest, ctx);
- break;
- case SYNTAX.COMPARISON_EXPR:
- translateComparisonExpr(expr, dest, ctx);
- break;
- case SYNTAX.MATH_EXPR:
- translateMathExpr(expr, dest, ctx);
- break;
- case SYNTAX.LOGICAL_EXPR:
- translateLogicalExpr(expr, dest, ctx);
- break;
- case SYNTAX.UNARY_EXPR:
- translateUnaryExpr(expr, dest, ctx);
- break;
- case SYNTAX.LITERAL:
- var val = expr.val;
- body.push(dest, '=', typeof val === 'string' ? escapeStr(val) : val, ';');
- break;
- }
- }
- function translateComparisonExpr(expr, dest, ctx) {
- var val1 = acquireVar(), val2 = acquireVar(), isVal1Array = acquireVar(), isVal2Array = acquireVar(), i = acquireVar(), j = acquireVar(), len1 = acquireVar(), len2 = acquireVar(), leftArg = expr.args[0], rightArg = expr.args[1];
- body.push(dest, '= false;');
- translateExpr(leftArg, val1, ctx);
- translateExpr(rightArg, val2, ctx);
- var isLeftArgPath = leftArg.type === SYNTAX.PATH, isRightArgLiteral = rightArg.type === SYNTAX.LITERAL;
- body.push(isVal1Array, '=');
- isLeftArgPath ? body.push('true;') : body.push('isArr(', val1, ');');
- body.push(isVal2Array, '=');
- isRightArgLiteral ? body.push('false;') : body.push('isArr(', val2, ');');
- body.push('if(');
- isLeftArgPath || body.push(isVal1Array, '&&');
- body.push(val1, '.length === 1) {', val1, '=', val1, '[0];', isVal1Array, '= false;', '}');
- isRightArgLiteral || body.push('if(', isVal2Array, '&&', val2, '.length === 1) {', val2, '=', val2, '[0];', isVal2Array, '= false;', '}');
- body.push(i, '= 0;', 'if(', isVal1Array, ') {', len1, '=', val1, '.length;');
- if (!isRightArgLiteral) {
- body.push('if(', isVal2Array, ') {', len2, '=', val2, '.length;', 'while(', i, '<', len1, '&& !', dest, ') {', j, '= 0;', 'while(', j, '<', len2, ') {');
- writeCondition(expr.op, [
- val1,
- '[',
- i,
- ']'
- ].join(''), [
- val2,
- '[',
- j,
- ']'
- ].join(''));
- body.push(dest, '= true;', 'break;', '}', '++', j, ';', '}', '++', i, ';', '}', '}', 'else {');
- }
- body.push('while(', i, '<', len1, ') {');
- writeCondition(expr.op, [
- val1,
- '[',
- i,
- ']'
- ].join(''), val2);
- body.push(dest, '= true;', 'break;', '}', '++', i, ';', '}');
- isRightArgLiteral || body.push('}');
- body.push('}');
- if (!isRightArgLiteral) {
- body.push('else if(', isVal2Array, ') {', len2, '=', val2, '.length;', 'while(', i, '<', len2, ') {');
- writeCondition(expr.op, val1, [
- val2,
- '[',
- i,
- ']'
- ].join(''));
- body.push(dest, '= true;', 'break;', '}', '++', i, ';', '}', '}');
- }
- body.push('else {', dest, '=', binaryOperators[expr.op](val1, val2), ';', '}');
- releaseVars(val1, val2, isVal1Array, isVal2Array, i, j, len1, len2);
- }
- function writeCondition(op, val1Expr, val2Expr) {
- body.push('if(', binaryOperators[op](val1Expr, val2Expr), ') {');
- }
- function translateLogicalExpr(expr, dest, ctx) {
- var conditionVars = [], args = expr.args, len = args.length, i = 0, val;
- body.push(dest, '= false;');
- switch (expr.op) {
- case '&&':
- while (i < len) {
- conditionVars.push(val = acquireVar());
- translateExpr(args[i], val, ctx);
- body.push('if(', convertToBool(args[i++], val), ') {');
- }
- body.push(dest, '= true;');
- break;
- case '||':
- while (i < len) {
- conditionVars.push(val = acquireVar());
- translateExpr(args[i], val, ctx);
- body.push('if(', convertToBool(args[i], val), ') {', dest, '= true;', '}');
- if (i++ + 1 < len) {
- body.push('else {');
- }
- }
- --len;
- break;
- }
- while (len--) {
- body.push('}');
- }
- releaseVars.apply(null, conditionVars);
- }
- function translateMathExpr(expr, dest, ctx) {
- var val1 = acquireVar(), val2 = acquireVar(), args = expr.args;
- translateExpr(args[0], val1, ctx);
- translateExpr(args[1], val2, ctx);
- body.push(dest, '=', binaryOperators[expr.op](convertToSingleValue(args[0], val1), convertToSingleValue(args[1], val2)), ';');
- releaseVars(val1, val2);
- }
- function translateUnaryExpr(expr, dest, ctx) {
- var val = acquireVar(), arg = expr.arg;
- translateExpr(arg, val, ctx);
- switch (expr.op) {
- case '!':
- body.push(dest, '= !', convertToBool(arg, val) + ';');
- break;
- case '-':
- body.push(dest, '= -', convertToSingleValue(arg, val) + ';');
- break;
- }
- releaseVars(val);
- }
- function translateConcatExpr(expr, dest, ctx) {
- var argVars = [], args = expr.args, len = args.length, i = 0;
- while (i < len) {
- argVars.push(acquireVar());
- translateExpr(args[i], argVars[i++], ctx);
- }
- body.push(dest, '= concat.call(', argVars.join(','), ');');
- releaseVars.apply(null, argVars);
- }
- function escapeStr(s) {
- return '\'' + s.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + '\'';
- }
- function inlineAppendToArray(res, val, tmpArr, len) {
- body.push('if(', val, '!= null) {', 'if(isArr(', val, ')) {');
- if (tmpArr) {
- body.push(len, '> 1?');
- inlinePushToArray(tmpArr, val);
- body.push(':');
- }
- body.push(res, '=', res, '.length?', res, '.concat(', val, ') :', val, '.slice()', ';', '}', 'else {');
- tmpArr && body.push('if(', tmpArr, '.length) {', res, '= concat.apply(', res, ',', tmpArr, ');', tmpArr, '= [];', '}');
- inlinePushToArray(res, val);
- body.push(';', '}', '}');
- }
- function inlinePushToArray(res, val) {
- body.push(res, '.length?', res, '.push(', val, ') :', res, '[0] =', val);
- }
- function convertToBool(arg, varName) {
- switch (arg.type) {
- case SYNTAX.LOGICAL_EXPR:
- return varName;
- case SYNTAX.LITERAL:
- return '!!' + varName;
- case SYNTAX.PATH:
- return varName + '.length > 0';
- default:
- return [
- '(typeof ',
- varName,
- '=== "boolean"?',
- varName,
- ':',
- 'isArr(',
- varName,
- ')?',
- varName,
- '.length > 0 : !!',
- varName,
- ')'
- ].join('');
- }
- }
- function convertToSingleValue(arg, varName) {
- switch (arg.type) {
- case SYNTAX.LITERAL:
- return varName;
- case SYNTAX.PATH:
- return varName + '[0]';
- default:
- return [
- '(isArr(',
- varName,
- ')?',
- varName,
- '[0] : ',
- varName,
- ')'
- ].join('');
- }
- }
- var binaryOperators = {
- '===': function (val1, val2) {
- return val1 + '===' + val2;
- },
- '==': function (val1, val2) {
- return [
- 'typeof ',
- val1,
- '=== "string" && typeof ',
- val2,
- '=== "string"?',
- val1,
- '.toLowerCase() ===',
- val2,
- '.toLowerCase() :' + val1,
- '==',
- val2
- ].join('');
- },
- '>=': function (val1, val2) {
- return val1 + '>=' + val2;
- },
- '>': function (val1, val2) {
- return val1 + '>' + val2;
- },
- '<=': function (val1, val2) {
- return val1 + '<=' + val2;
- },
- '<': function (val1, val2) {
- return val1 + '<' + val2;
- },
- '!==': function (val1, val2) {
- return val1 + '!==' + val2;
- },
- '!=': function (val1, val2) {
- return val1 + '!=' + val2;
- },
- '^==': function (val1, val2) {
- return [
- 'typeof ',
- val1,
- '=== "string" && typeof ',
- val2,
- '=== "string" &&',
- val1,
- '.indexOf(',
- val2,
- ') === 0'
- ].join('');
- },
- '^=': function (val1, val2) {
- return [
- val1,
- '!= null &&',
- val2,
- '!= null &&',
- val1,
- '.toString().toLowerCase().indexOf(',
- val2,
- '.toString().toLowerCase()) === 0'
- ].join('');
- },
- '$==': function (val1, val2) {
- return [
- 'typeof ',
- val1,
- '=== "string" && typeof ',
- val2,
- '=== "string" &&',
- val1,
- '.lastIndexOf(',
- val2,
- ') ===',
- val1,
- '.length -',
- val2,
- '.length'
- ].join('');
- },
- '$=': function (val1, val2) {
- return [
- val1,
- '!= null &&',
- val2,
- '!= null &&',
- '(',
- val1,
- '=',
- val1,
- '.toLowerCase().toString()).indexOf(',
- '(',
- val2,
- '=',
- val2,
- '.toLowerCase().toLowerCase())) ===',
- val1,
- '.length -',
- val2,
- '.length'
- ].join('');
- },
- '*==': function (val1, val2) {
- return [
- 'typeof ',
- val1,
- '=== "string" && typeof ',
- val2,
- '=== "string" &&',
- val1,
- '.indexOf(',
- val2,
- ') > -1'
- ].join('');
- },
- '*=': function (val1, val2) {
- return [
- val1,
- '!= null && ',
- val2,
- '!= null &&',
- val1,
- '.toString().toLowerCase().indexOf(',
- val2,
- '.toString().toLowerCase()) > -1'
- ].join('');
- },
- '+': function (val1, val2) {
- return val1 + '+' + val2;
- },
- '-': function (val1, val2) {
- return val1 + '-' + val2;
- },
- '*': function (val1, val2) {
- return val1 + '*' + val2;
- },
- '/': function (val1, val2) {
- return val1 + '/' + val2;
- },
- '%': function (val1, val2) {
- return val1 + '%' + val2;
- }
- };
- return translate;
- }();
- function compile(path) {
- return Function('data,subst', translate(parse(path)));
- }
- var cache = {}, cacheKeys = [], params = { cacheSize: 100 }, setParamsHooks = {
- cacheSize: function (oldVal, newVal) {
- if (newVal < oldVal && cacheKeys.length > newVal) {
- var removedKeys = cacheKeys.splice(0, cacheKeys.length - newVal), i = removedKeys.length;
- while (i--) {
- delete cache[removedKeys[i]];
- }
- }
- }
- };
- var decl = function (path, ctx, substs) {
- if (!cache[path]) {
- cache[path] = compile(path);
- if (cacheKeys.push(path) > params.cacheSize) {
- delete cache[cacheKeys.shift()];
- }
- }
- return cache[path](ctx, substs || {});
- };
- decl.version = '0.3.3';
- decl.params = function (_params) {
- if (!arguments.length) {
- return params;
- }
- for (var name in _params) {
- if (_params.hasOwnProperty(name)) {
- setParamsHooks[name] && setParamsHooks[name](params[name], _params[name]);
- params[name] = _params[name];
- }
- }
- };
- decl.compile = compile;
- decl.apply = decl;
- if (typeof module === 'object' && typeof module.exports === 'object') {
- module.exports = decl;
- } else if (typeof modules === 'object') {
- modules.define('jspath', function (provide) {
- provide(decl);
- });
- } else if (typeof define === 'function') {
- define('jspath@0.3.3#lib/jspath', function (require, exports, module) {
- module.exports = decl;
- });
- } else {
- JSPath = decl;
- }
- }());
- /*jspath@0.3.3#index*/
- define('jspath@0.3.3#index', function (require, exports, module) {
- module.exports = require('./lib/jspath');
- });
- /*src/player-bio/models/player-results-model*/
- define('src/player-bio/models/player-results-model', [
- 'exports',
- 'can-connect',
- 'can-define/map/map',
- '../config',
- 'jspath',
- 'jquery',
- 'can-define',
- 'can-connect/constructor/constructor',
- 'can-connect/can/map/map',
- 'can-connect/data/parse/parse'
- ], function (exports, _canConnect, _map, _config, _jspath, _jquery) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var _canConnect2 = _interopRequireDefault(_canConnect);
- var _map2 = _interopRequireDefault(_map);
- var _config2 = _interopRequireDefault(_config);
- var _jspath2 = _interopRequireDefault(_jspath);
- var _jquery2 = _interopRequireDefault(_jquery);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var PlayerResults = _map2.default.extend({
- rankTitle: {
- type: 'string',
- value: 'Rank'
- },
- pointsTitle: {
- type: 'string',
- value: 'Points'
- },
- rank: {
- type: 'string',
- value: '--'
- },
- points: {
- type: 'string',
- value: '--'
- }
- });
- function buildPlayerResultsR(playerResults, personalResults) {
- playerResults.rankTitle = 'FedExCup Rank';
- playerResults.pointsTitle = 'FedExCup Points';
- if (_config2.default.isPlayoffs) {
- playerResults.rank = personalResults.fedexRnkPO;
- playerResults.points = personalResults.fedexPtsPO;
- } else {
- playerResults.rank = personalResults.fedexRnkReg;
- playerResults.points = personalResults.fedexPtsReg;
- }
- }
- function buildPlayerResultsS(playerResults, personalResults) {
- playerResults.rankTitle = 'Charles Schwab Cup Rank';
- if (_config2.default.isPlayoffs) {
- playerResults.pointsTitle = 'Charles Schwab Cup Points';
- playerResults.rank = personalResults.fedexRnkPO;
- playerResults.points = personalResults.fedexPtsPO;
- } else {
- playerResults.pointsTitle = 'Charles Schwab Cup Money';
- playerResults.rank = personalResults.moneyRank;
- playerResults.points = personalResults.offMoney;
- }
- }
- function buildPlayerResultsH(playerResults, personalResults) {
- playerResults.rankTitle = 'The 25';
- playerResults.pointsTitle = 'Web.com Points';
- if (_config2.default.isPlayoffs) {
- playerResults.rank = personalResults.finalsRank;
- playerResults.points = personalResults.finalsMoney;
- } else {
- playerResults.rank = personalResults.moneyRank;
- playerResults.points = personalResults.offMoney;
- }
- }
- function buildPlayerResultsCM(playerResults, personalResults) {
- if (_config2.default.tourCode === 'c') {
- playerResults.rankTitle = 'The Five Rank';
- playerResults.pointsTitle = 'The Five Money';
- } else {
- playerResults.rankTitle = 'Los Cinco Rank';
- playerResults.pointsTitle = 'Los Cinco Money';
- }
- playerResults.rank = personalResults.moneyRank;
- playerResults.points = personalResults.offMoney;
- }
- (0, _canConnect2.default)([], {
- Map: PlayerResults,
- getData: function getData(params) {
- var url = pgatour.format(_config2.default.playerResultsUrl, {
- id: params.id,
- year: params.year
- });
- return new Promise(function (resolve, reject) {
- _jquery2.default.get(url).then(resolve, reject);
- });
- },
- parseInstanceData: function parseInstanceData(response) {
- var data = JSON.parse(response);
- var personalResults = _jspath2.default.apply('..tours {.tourCodeLC === $tourCode} .totals[0]', data, { tourCode: _config2.default.tourCode });
- var playerResults = {};
- switch (_config2.default.tourCode) {
- case 'r':
- buildPlayerResultsR(playerResults, personalResults);
- break;
- case 's':
- buildPlayerResultsS(playerResults, personalResults);
- break;
- case 'h':
- buildPlayerResultsH(playerResults, personalResults);
- break;
- default:
- buildPlayerResultsCM(playerResults, personalResults);
- break;
- }
- return playerResults;
- }
- });
- exports.default = PlayerResults;
- });
- /*src/player-bio/models/player-stats-model*/
- define('src/player-bio/models/player-stats-model', [
- 'exports',
- 'can-connect',
- 'can-define/map/map',
- '../config',
- 'jspath',
- 'jquery',
- 'can-define',
- 'can-connect/constructor/constructor',
- 'can-connect/can/map/map',
- 'can-connect/data/parse/parse'
- ], function (exports, _canConnect, _map, _config, _jspath, _jquery) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var _canConnect2 = _interopRequireDefault(_canConnect);
- var _map2 = _interopRequireDefault(_map);
- var _config2 = _interopRequireDefault(_config);
- var _jspath2 = _interopRequireDefault(_jspath);
- var _jquery2 = _interopRequireDefault(_jquery);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var PlayerStats = _map2.default.extend({ scoringAverage: { value: '--' } });
- (0, _canConnect2.default)([], {
- Map: PlayerStats,
- getData: function getData(params) {
- var url = pgatour.format(_config2.default.playerStatsUrl, {
- id: params.id,
- year: params.year
- });
- return new Promise(function (resolve, reject) {
- _jquery2.default.get(url).then(resolve, reject);
- });
- },
- parseInstanceData: function parseInstanceData(response) {
- var data = JSON.parse(response);
- var personalStats = _jspath2.default.apply('..tours {.tourCodeLC === $tourCode} ..stats {.statID === "120"}[0]', data, { tourCode: _config2.default.tourCode });
- return { scoringAverage: personalStats.value };
- }
- });
- exports.default = PlayerStats;
- });
- /*src/player-bio/models/player-stat186-model*/
- define('src/player-bio/models/player-stat186-model', [
- 'exports',
- 'can-connect',
- 'can-define/map/map',
- '../config',
- 'jspath',
- 'jquery',
- 'can-define',
- 'can-connect/constructor/constructor',
- 'can-connect/can/map/map',
- 'can-connect/data/parse/parse'
- ], function (exports, _canConnect, _map, _config, _jspath, _jquery) {
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var _canConnect2 = _interopRequireDefault(_canConnect);
- var _map2 = _interopRequireDefault(_map);
- var _config2 = _interopRequireDefault(_config);
- var _jspath2 = _interopRequireDefault(_jspath);
- var _jquery2 = _interopRequireDefault(_jquery);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var PlayerStat186 = _map2.default.extend({ owgRank: { value: '--' } });
- (0, _canConnect2.default)([], {
- Map: PlayerStat186,
- getData: function getData(params) {
- this.playerId = params.id;
- return new Promise(function (resolve, reject) {
- _jquery2.default.get(_config2.default.playerStat186Url).then(resolve, reject);
- });
- },
- parseInstanceData: function parseInstanceData(response) {
- var data = JSON.parse(response);
- var personalStat186 = _jspath2.default.apply('.tours {.tourCodeLC === $tourCode} ..details {.plrNum === $playerId}[0]', data, {
- tourCode: _config2.default.tourCode,
- playerId: this.playerId
- });
- return { owgRank: personalStat186 ? personalStat186.curRank : '--' };
- }
- });
- exports.default = PlayerStat186;
- });
- /*src/player-bio/components/player-bio*/
- define('src/player-bio/components/player-bio', [
- 'can-component',
- 'can-define/map/map',
- 'jquery',
- './player-bio.stache!',
- '../models/players-model',
- '../models/player-bio-model',
- '../models/player-results-model',
- '../models/player-stats-model',
- '../models/player-stat186-model',
- './player-bio.less',
- './player-bio-ad',
- 'can-view-model'
- ], function (_canComponent, _map, _jquery, _playerBio, _playersModel, _playerBioModel, _playerResultsModel, _playerStatsModel, _playerStat186Model) {
- 'use strict';
- var _canComponent2 = _interopRequireDefault(_canComponent);
- var _map2 = _interopRequireDefault(_map);
- var _jquery2 = _interopRequireDefault(_jquery);
- var _playerBio2 = _interopRequireDefault(_playerBio);
- var _playersModel2 = _interopRequireDefault(_playersModel);
- var _playerBioModel2 = _interopRequireDefault(_playerBioModel);
- var _playerResultsModel2 = _interopRequireDefault(_playerResultsModel);
- var _playerStatsModel2 = _interopRequireDefault(_playerStatsModel);
- var _playerStat186Model2 = _interopRequireDefault(_playerStat186Model);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- var PlayerViewModel = _map2.default.extend({
- name: {
- type: 'string',
- value: 'Select Player'
- },
- personalInfo: {
- value: Object,
- Type: _playerBioModel2.default
- },
- personalResults: {
- value: Object,
- Type: _playerResultsModel2.default
- },
- personalStats: {
- value: Object,
- Type: _playerStatsModel2.default
- },
- personalStat186: {
- value: Object,
- Type: _playerStat186Model2.default
- },
- playerList: {
- value: Array,
- Type: _playersModel2.default
- },
- showMetric: {
- type: 'boolean',
- value: false
- }
- });
- _canComponent2.default.extend({
- tag: 'pgat-player-bio',
- template: _playerBio2.default,
- ViewModel: PlayerViewModel,
- events: {
- inserted: function inserted() {
- var _this = this;
- _playersModel2.default.get({ id: 'id' }).then(_jquery2.default.proxy(function (data) {
- _this.onPlayersData(data);
- }, this));
- },
- '.switcher click': function switcherClick() {
- this.viewModel.showMetric = !this.viewModel.showMetric;
- },
- '.dropdown-icon click': function dropdownIconClick() {
- (0, _jquery2.default)('.dropdown').removeClass('hidden');
- (0, _jquery2.default)('.dropdown-content').removeClass('hidden');
- },
- '.player-select click': function playerSelectClick(element) {
- var _this2 = this;
- (0, _jquery2.default)('.dropdown').addClass('hidden');
- (0, _jquery2.default)('.dropdown-content').addClass('hidden');
- var playerId = (0, _jquery2.default)(element).attr('data-id');
- _playerBioModel2.default.get({ id: playerId }).then(_jquery2.default.proxy(function (data) {
- _this2.onPlayerBioData(data);
- }, this));
- _playerResultsModel2.default.get({
- id: playerId,
- year: '2016'
- }).then(_jquery2.default.proxy(function (data) {
- _this2.onPlayerResultsData(data);
- }, this));
- _playerStatsModel2.default.get({
- id: playerId,
- year: '2016'
- }).then(_jquery2.default.proxy(function (data) {
- _this2.onPlayerStatsData(data);
- }, this));
- _playerStat186Model2.default.get({ id: playerId }).then(_jquery2.default.proxy(function (data) {
- _this2.onPlayerStat186Data(data);
- }, this));
- },
- onPlayerBioData: function onPlayerBioData(playerBio) {
- playerBio.countryCode = this.players[playerBio.playerId].countryCode;
- this.viewModel.name = playerBio.name;
- this.viewModel.personalInfo = playerBio;
- },
- onPlayerResultsData: function onPlayerResultsData(playerResults) {
- this.viewModel.personalResults = playerResults;
- },
- onPlayersData: function onPlayersData(playerList) {
- var _this3 = this;
- this.players = {};
- playerList.forEach(function (player) {
- _this3.players[player.playerId] = player;
- });
- this.viewModel.playerList = playerList;
- },
- onPlayerStat186Data: function onPlayerStat186Data(playerStat186) {
- this.viewModel.personalStat186 = playerStat186;
- },
- onPlayerStatsData: function onPlayerStatsData(playerStats) {
- this.viewModel.personalStats = playerStats;
- }
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement