diff --git a/dist/grapes.js b/dist/grapes.js index b8534e92b..cda9e5bb0 100644 --- a/dist/grapes.js +++ b/dist/grapes.js @@ -1276,7 +1276,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ // Set up Backbone appropriately for the environment. Start with AMD. if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! underscore */ "./node_modules/underscore/underscore.js"), __webpack_require__(/*! jquery */ "./node_modules/cash-dom/dist/cash.js"), exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function(_, $, exports) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! underscore */ "./node_modules/underscore/underscore.js"), __webpack_require__(/*! jquery */ "./node_modules/cash-dom/dist/cash.esm.js"), exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function(_, $, exports) { // Export global even in AMD case in case this script is loaded with // others that may still expect a global Backbone. root.Backbone = factory(root, exports, _, $); @@ -3178,972 +3178,1438 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/***/ "./node_modules/cash-dom/dist/cash.js": -/*!********************************************!*\ - !*** ./node_modules/cash-dom/dist/cash.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/***/ "./node_modules/cash-dom/dist/cash.esm.js": +/*!************************************************!*\ + !*** ./node_modules/cash-dom/dist/cash.esm.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; - -/*! cash-dom 1.3.7, https://github.com/kenwheeler/cash @license MIT */ -;(function (root, factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : - __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} -})(this, function () { - var doc = document, win = window, ArrayProto = Array.prototype, slice = ArrayProto.slice, filter = ArrayProto.filter, push = ArrayProto.push; +__webpack_require__.r(__webpack_exports__); +/* MIT https://github.com/kenwheeler/cash */ - var noop = function () {}, isFunction = function (item) { - // @see https://crbug.com/568448 - return typeof item === typeof noop && item.call; - }, isString = function (item) { - return typeof item === typeof ""; - }; - var idMatch = /^#[\w-]*$/, classMatch = /^\.[\w-]*$/, htmlMatch = /<.+>/, singlet = /^\w+$/; +var doc = document, + win = window, + _Array$prototype = Array.prototype, + filter = _Array$prototype.filter, + indexOf = _Array$prototype.indexOf, + map = _Array$prototype.map, + push = _Array$prototype.push, + reverse = _Array$prototype.reverse, + slice = _Array$prototype.slice, + splice = _Array$prototype.splice; +var idRe = /^#[\w-]*$/, + classRe = /^\.[\w-]*$/, + htmlRe = /<.+>/, + tagRe = /^\w+$/; // @require ./variables.js - function find(selector, context) { - context = context || doc; - var elems = (classMatch.test(selector) ? context.getElementsByClassName(selector.slice(1)) : singlet.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector)); - return elems; +function find(selector, context) { + if (context === void 0) { + context = doc; } - var frag; - function parseHTML(str) { - if (!frag) { - frag = doc.implementation.createHTMLDocument(null); - var base = frag.createElement("base"); - base.href = doc.location.href; - frag.head.appendChild(base); - } + return classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector); +} // @require ./find.js +// @require ./variables.js - frag.body.innerHTML = str; - return frag.body.childNodes; +function Cash(selector, context) { + if (context === void 0) { + context = doc; } - function onReady(fn) { - if (doc.readyState !== "loading") { - setTimeout(fn); - } else { - doc.addEventListener("DOMContentLoaded", fn); - } + if (!selector) return; + if (selector.__cash) return selector; + var eles = selector; + + if (isString(selector)) { + if (context.__cash) context = context[0]; + eles = idRe.test(selector) ? context.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, context); + if (!eles) return; + } else if (isFunction(selector)) { + return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality } - function Init(selector, context) { - if (!selector) { - return this; - } + if (eles.nodeType || eles === win) eles = [eles]; + this.length = eles.length; - // If already a cash collection, don't do any further processing - if (selector.cash && selector !== win) { - return selector; - } + for (var i = 0, l = this.length; i < l; i++) { + this[i] = eles[i]; + } +} - var elems = selector, i = 0, length; +function cash(selector, context) { + return new Cash(selector, context); +} +/* PROTOTYPE */ - if (isString(selector)) { - elems = (idMatch.test(selector) ? - // If an ID use the faster getElementById check - doc.getElementById(selector.slice(1)) : htmlMatch.test(selector) ? - // If HTML, parse it into real elements - parseHTML(selector) : - // else use `find` - find(selector, context)); - // If function, use as shortcut for DOM ready - } else if (isFunction(selector)) { - onReady(selector);return this; - } +var fn = cash.fn = cash.prototype = Cash.prototype = { + constructor: cash, + __cash: true, + length: 0, + splice: splice // Ensures a cash collection gets printed as array-like in Chrome - if (!elems) { - return this; - } +}; // @require core/cash.js +// @require core/variables.js - // If a single DOM element is passed in or received via ID, return the single element - if (elems.nodeType || elems === win) { - this[0] = elems; - this.length = 1; - } else { - // Treat like an array and loop through each item. - length = this.length = elems.length; - for (; i < length; i++) { - this[i] = elems[i]; - } - } +fn.get = function (index) { + if (index === undefined) return slice.call(this); + return this[index < 0 ? index + this.length : index]; +}; // @require core/cash.js +// @require ./get.js - return this; - } - function cash(selector, context) { - return new Init(selector, context); - } +fn.eq = function (index) { + return cash(this.get(index)); +}; // @require core/cash.js +// @require ./eq.js - var fn = cash.fn = cash.prototype = Init.prototype = { // jshint ignore:line - cash: true, - length: 0, - push: push, - splice: ArrayProto.splice, - map: ArrayProto.map, - init: Init - }; - Object.defineProperty(fn, "constructor", { value: cash }); +fn.first = function () { + return this.eq(0); +}; // @require core/cash.js +// @require ./eq.js - cash.parseHTML = parseHTML; - cash.noop = noop; - cash.isFunction = isFunction; - cash.isString = isString; - cash.extend = fn.extend = function (target) { - target = target || {}; +fn.last = function () { + return this.eq(-1); +}; // @require core/cash.js +// @require core/variables.js - var args = slice.call(arguments), length = args.length, i = 1; - if (args.length === 1) { - target = this; - i = 0; - } +fn.map = function (callback) { + return cash(map.call(this, function (ele, i) { + return callback.call(ele, i, ele); + })); +}; // @require core/cash.js +// @require core/variables.js - for (; i < length; i++) { - if (!args[i]) { - continue; - } - for (var key in args[i]) { - if (args[i].hasOwnProperty(key)) { - target[key] = args[i][key]; - } - } - } - return target; - }; +fn.slice = function () { + return cash(slice.apply(this, arguments)); +}; // @require ./cash.js - function each(collection, callback) { - var l = collection.length, i = 0; - for (; i < l; i++) { - if (callback.call(collection[i], collection[i], i, collection) === false) { - break; - } - } +var camelCaseRe = /(?:^\w|[A-Z]|\b\w)/g, + camelCaseWhitespaceRe = /[\s-_]+/g; + +function camelCase(str) { + return str.replace(camelCaseRe, function (letter, index) { + return letter[!index ? 'toLowerCase' : 'toUpperCase'](); + }).replace(camelCaseWhitespaceRe, ''); +} + +; +cash.camelCase = camelCase; // @require ./cash.js + +function each(arr, callback) { + for (var i = 0, l = arr.length; i < l; i++) { + if (callback.call(arr[i], arr[i], i, arr) === false) break; + } +} + +cash.each = each; // @require core/cash.js +// @require core/each.js + +fn.each = function (callback) { + each(this, function (ele, i) { + return callback.call(ele, i, ele); + }); + return this; +}; // @require core/cash.js +// @require collection/each.js + + +fn.removeProp = function (prop) { + return this.each(function (i, ele) { + delete ele[prop]; + }); +}; // @require ./cash.js + + +function extend(target) { + if (target === void 0) { + target = this; } - function matches(el, selector) { - var m = el && (el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector); - return !!m && m.call(el, selector); + var args = arguments, + length = args.length; + + for (var i = length < 2 ? 0 : 1; i < length; i++) { + for (var key in args[i]) { + target[key] = args[i][key]; + } } - function getCompareFunction(selector) { - return ( - /* Use browser's `matches` function if string */ - isString(selector) ? matches : - /* Match a cash element */ - selector.cash ? function (el) { - return selector.is(el); - } : - /* Direct comparison */ - function (el, selector) { - return el === selector; + return target; +} + +; +cash.extend = fn.extend = extend; // @require ./cash.js + +var guid = 1; +cash.guid = guid; // @require ./cash.js + +function matches(ele, selector) { + var matches = ele && (ele.matches || ele.webkitMatchesSelector || ele.mozMatchesSelector || ele.msMatchesSelector || ele.oMatchesSelector); + return !!matches && matches.call(ele, selector); +} + +cash.matches = matches; // @require ./cash.js + +function isFunction(x) { + return typeof x === 'function'; +} + +cash.isFunction = isFunction; + +function isString(x) { + return typeof x === 'string'; +} + +cash.isString = isString; + +function isNumeric(x) { + return !isNaN(parseFloat(x)) && isFinite(x); +} + +cash.isNumeric = isNumeric; +var isArray = Array.isArray; +cash.isArray = isArray; // @require core/cash.js +// @require core/type_checking.js +// @require collection/each.js + +fn.prop = function (prop, value) { + if (!prop) return; + + if (isString(prop)) { + if (arguments.length < 2) return this[0] && this[0][prop]; + return this.each(function (i, ele) { + ele[prop] = value; }); } - function unique(collection) { - return cash(slice.call(collection).filter(function (item, index, self) { - return self.indexOf(item) === index; - })); + for (var key in prop) { + this.prop(key, prop[key]); } - cash.extend({ - merge: function (first, second) { - var len = +second.length, i = first.length, j = 0; + return this; +}; // @require ./matches.js +// @require ./type_checking.js - for (; j < len; i++, j++) { - first[i] = second[j]; - } - first.length = i; - return first; - }, +function getCompareFunction(selector) { + return isString(selector) ? function (i, ele) { + return matches(ele, selector); + } : selector.__cash ? function (i, ele) { + return selector.is(ele); + } : function (i, ele, selector) { + return ele === selector; + }; +} // @require core/cash.js +// @require core/get_compare_function.js +// @require core/type_checking.js +// @require core/variables.js +// @require collection/get.js - each: each, - matches: matches, - unique: unique, - isArray: Array.isArray, - isNumeric: function (n) { - return !isNaN(parseFloat(n)) && isFinite(n); - } - }); +fn.filter = function (selector) { + if (!selector) return cash(); + var comparator = isFunction(selector) ? selector : getCompareFunction(selector); + return cash(filter.call(this, function (ele, i) { + return comparator.call(ele, i, ele, selector); + })); +}; // @require ./type_checking.js - var uid = cash.uid = "_cash" + Date.now(); - function getDataCache(node) { - return (node[uid] = node[uid] || {}); - } +var splitValuesRe = /\S+/g; - function setData(node, key, value) { - return (getDataCache(node)[key] = value); +function getSplitValues(str) { + return isString(str) ? str.match(splitValuesRe) || [] : []; +} // @require core/cash.js +// @require core/get_split_values.js +// @require collection/each.js + + +fn.hasClass = function (cls) { + var classes = getSplitValues(cls); + var check = false; + + if (classes.length) { + this.each(function (i, ele) { + check = ele.classList.contains(classes[0]); + return !check; + }); } - function getData(node, key) { - var c = getDataCache(node); - if (c[key] === undefined) { - c[key] = node.dataset ? node.dataset[key] : cash(node).attr("data-" + key); + return check; +}; // @require core/cash.js +// @require core/get_split_values.js +// @require collection/each.js + + +fn.removeAttr = function (attr) { + var attrs = getSplitValues(attr); + if (!attrs.length) return this; + return this.each(function (i, ele) { + each(attrs, function (a) { + ele.removeAttribute(a); + }); + }); +}; // @require core/cash.js +// @require core/type_checking.js +// @require collection/each.js +// @require ./remove_attr.js + + +fn.attr = function (attr, value) { + if (!attr) return; + + if (isString(attr)) { + if (arguments.length < 2) { + if (!this[0]) return; + + var _value = this[0].getAttribute(attr); + + return _value === null ? undefined : _value; } - return c[key]; + + if (value === null) return this.removeAttr(attr); + return this.each(function (i, ele) { + ele.setAttribute(attr, value); + }); } - function removeData(node, key) { - var c = getDataCache(node); - if (c) { - delete c[key]; - } else if (node.dataset) { - delete node.dataset[key]; - } else { - cash(node).removeAttr("data-" + name); - } + for (var key in attr) { + this.attr(key, attr[key]); } - fn.extend({ - data: function (name, value) { - if (isString(name)) { - return (value === undefined ? getData(this[0], name) : this.each(function (v) { - return setData(v, name, value); - })); - } + return this; +}; // @require core/cash.js +// @require core/each.js +// @require core/get_split_values.js +// @require collection/each.js + - for (var key in name) { - this.data(key, name[key]); +fn.toggleClass = function (cls, force) { + var classes = getSplitValues(cls), + isForce = force !== undefined; + if (!classes.length) return this; + return this.each(function (i, ele) { + each(classes, function (c) { + if (isForce) { + force ? ele.classList.add(c) : ele.classList.remove(c); + } else { + ele.classList.toggle(c); } + }); + }); +}; // @require core/cash.js +// @require ./toggle_class.js - return this; - }, - removeData: function (key) { - return this.each(function (v) { - return removeData(v, key); - }); - } +fn.addClass = function (cls) { + return this.toggleClass(cls, true); +}; // @require core/cash.js +// @require ./attr.js +// @require ./toggle_class.js + +fn.removeClass = function (cls) { + return !arguments.length ? this.attr('class', '') : this.toggleClass(cls, false); +}; // @optional ./add_class.js +// @optional ./attr.js +// @optional ./has_class.js +// @optional ./prop.js +// @optional ./remove_attr.js +// @optional ./remove_class.js +// @optional ./remove_prop.js +// @optional ./toggle_class.js +// @require ./cash.js + + +function unique(arr) { + return arr.filter(function (item, index, self) { + return self.indexOf(item) === index; }); +} - var notWhiteMatch = /\S+/g; +cash.unique = unique; // @require core/cash.js +// @require core/unique.js +// @require ./get.js - function getClasses(c) { - return isString(c) && c.match(notWhiteMatch); - } +fn.add = function (selector, context) { + return cash(unique(this.get().concat(cash(selector, context).get()))); +}; // @require core/variables.js - function hasClass(v, c) { - return (v.classList ? v.classList.contains(c) : new RegExp("(^| )" + c + "( |$)", "gi").test(v.className)); - } - function addClass(v, c) { - if (v.classList) { - v.classList.add(c); - } else if (!hasClass(v, c)) { - v.className += " " + c; - } +function computeStyle(ele, prop, isVariable) { + if (ele.nodeType !== 1) return; + var style = win.getComputedStyle(ele, null); + return prop ? isVariable ? style.getPropertyValue(prop) : style[prop] : style; +} // @require ./compute_style.js + + +function computeStyleInt(ele, prop) { + return parseInt(computeStyle(ele, prop), 10) || 0; +} + +var cssVariableRe = /^--/; // @require ./variables.js + +function isCSSVariable(prop) { + return cssVariableRe.test(prop); +} // @require core/camel_case.js +// @require core/cash.js +// @require core/each.js +// @require core/variables.js +// @require ./is_css_variable.js + + +var prefixedProps = {}, + _doc$createElement = doc.createElement('div'), + style = _doc$createElement.style, + vendorsPrefixes = ['webkit', 'moz', 'ms', 'o']; + +function getPrefixedProp(prop, isVariable) { + if (isVariable === void 0) { + isVariable = isCSSVariable(prop); } - function removeClass(v, c) { - if (v.classList) { - v.classList.remove(c); - } else { - v.className = v.className.replace(c, ""); - } + if (isVariable) return prop; + + if (!prefixedProps[prop]) { + var propCC = camelCase(prop), + propUC = "" + propCC.charAt(0).toUpperCase() + propCC.slice(1), + props = (propCC + " " + vendorsPrefixes.join(propUC + " ") + propUC).split(' '); + each(props, function (p) { + if (p in style) { + prefixedProps[prop] = p; + return false; + } + }); } - fn.extend({ - addClass: function (c) { - var classes = getClasses(c); + return prefixedProps[prop]; +} - return (classes ? this.each(function (v) { - each(classes, function (c) { - addClass(v, c); - }); - }) : this); - }, +; +cash.prefixedProp = getPrefixedProp; // @require core/type_checking.js +// @require ./is_css_variable.js + +var numericProps = { + animationIterationCount: true, + columnCount: true, + flexGrow: true, + flexShrink: true, + fontWeight: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + widows: true, + zIndex: true +}; - attr: function (name, value) { - if (!name) { - return undefined; +function getSuffixedValue(prop, value, isVariable) { + if (isVariable === void 0) { + isVariable = isCSSVariable(prop); + } + + return !isVariable && !numericProps[prop] && isNumeric(value) ? value + "px" : value; +} // @require core/cash.js +// @require core/type_checking.js +// @require collection/each.js +// @require ./helpers/compute_style.js +// @require ./helpers/get_prefixed_prop.js +// @require ./helpers/get_suffixed_value.js +// @require ./helpers/is_css_variable.js + + +fn.css = function (prop, value) { + if (isString(prop)) { + var isVariable = isCSSVariable(prop); + prop = getPrefixedProp(prop, isVariable); + if (arguments.length < 2) return this[0] && computeStyle(this[0], prop, isVariable); + if (!prop) return this; + value = getSuffixedValue(prop, value, isVariable); + return this.each(function (i, ele) { + if (ele.nodeType !== 1) return; + + if (isVariable) { + ele.style.setProperty(prop, value); + } else { + ele.style[prop] = value; } + }); + } - if (isString(name)) { - if (value === undefined) { - return this[0] ? this[0].getAttribute ? this[0].getAttribute(name) : this[0][name] : undefined; - } + for (var key in prop) { + this.css(key, prop[key]); + } - return this.each(function (v) { - if (v.setAttribute) { - v.setAttribute(name, value); - } else { - v[name] = value; - } - }); - } + return this; +}; // @optional ./css.js - for (var key in name) { - this.attr(key, name[key]); - } - return this; - }, +var dataNamespace = '__cashData', + dataAttributeRe = /^data-(.*)/; // @require core/cash.js +// @require ./helpers/variables.js - hasClass: function (c) { - var check = false, classes = getClasses(c); - if (classes && classes.length) { - this.each(function (v) { - check = hasClass(v, classes[0]); - return !check; - }); - } - return check; - }, +cash.hasData = function (ele) { + return dataNamespace in ele; +}; // @require ./variables.js - prop: function (name, value) { - if (isString(name)) { - return (value === undefined ? this[0][name] : this.each(function (v) { - v[name] = value; - })); - } - for (var key in name) { - this.prop(key, name[key]); - } +function getDataCache(ele) { + return ele[dataNamespace] = ele[dataNamespace] || {}; +} // @require attributes/attr.js +// @require ./get_data_cache.js - return this; - }, - removeAttr: function (name) { - return this.each(function (v) { - if (v.removeAttribute) { - v.removeAttribute(name); - } else { - delete v[name]; - } - }); - }, +function getData(ele, key) { + var cache = getDataCache(ele); - removeClass: function (c) { - if (!arguments.length) { - return this.attr("class", ""); - } - var classes = getClasses(c); - return (classes ? this.each(function (v) { - each(classes, function (c) { - removeClass(v, c); - }); - }) : this); - }, + if (key) { + if (!(key in cache)) { + var value = ele.dataset ? ele.dataset[key] || ele.dataset[camelCase(key)] : cash(ele).attr("data-" + key); - removeProp: function (name) { - return this.each(function (v) { - delete v[name]; - }); - }, + if (value !== undefined) { + try { + value = JSON.parse(value); + } catch (e) {} - toggleClass: function (c, state) { - if (state !== undefined) { - return this[state ? "addClass" : "removeClass"](c); + cache[key] = value; } - var classes = getClasses(c); - return (classes ? this.each(function (v) { - each(classes, function (c) { - if (hasClass(v, c)) { - removeClass(v, c); - } else { - addClass(v, c); - } - }); - }) : this); - } }); + } - fn.extend({ - add: function (selector, context) { - return unique(cash.merge(this, cash(selector, context))); - }, + return cache[key]; + } - each: function (callback) { - each(this, callback); - return this; - }, + return cache; +} // @require ./variables.js +// @require ./get_data_cache.js - eq: function (index) { - return cash(this.get(index)); - }, - filter: function (selector) { - if (!selector) { - return this; - } +function removeData(ele, key) { + if (key === undefined) { + delete ele[dataNamespace]; + } else { + delete getDataCache(ele)[key]; + } +} // @require ./get_data_cache.js - var comparator = (isFunction(selector) ? selector : getCompareFunction(selector)); - return cash(filter.call(this, function (e) { - return comparator(e, selector); - })); - }, +function setData(ele, key, value) { + getDataCache(ele)[key] = value; +} // @require core/cash.js +// @require core/type_checking.js +// @require collection/each.js +// @require ./helpers/get_data.js +// @require ./helpers/set_data.js +// @require ./helpers/variables.js - first: function () { - return this.eq(0); - }, - get: function (index) { - if (index === undefined) { - return slice.call(this); - } - return (index < 0 ? this[index + this.length] : this[index]); - }, +fn.data = function (name, value) { + var _this = this; - index: function (elem) { - var child = elem ? cash(elem)[0] : this[0], collection = elem ? this : cash(child).parent().children(); - return slice.call(collection).indexOf(child); - }, + if (!name) { + if (!this[0]) return; + each(this[0].attributes, function (attr) { + var match = attr.name.match(dataAttributeRe); + if (!match) return; - last: function () { - return this.eq(-1); - } + _this.data(match[1]); + }); + return getData(this[0]); + } - }); + if (isString(name)) { + if (value === undefined) return this[0] && getData(this[0], name); + return this.each(function (i, ele) { + return setData(ele, name, value); + }); + } - var camelCase = (function () { - var camelRegex = /(?:^\w|[A-Z]|\b\w)/g, whiteSpace = /[\s-_]+/g; - return function (str) { - return str.replace(camelRegex, function (letter, index) { - return letter[index === 0 ? "toLowerCase" : "toUpperCase"](); - }).replace(whiteSpace, ""); - }; - }()); + for (var key in name) { + this.data(key, name[key]); + } - var getPrefixedProp = (function () { - var cache = {}, doc = document, div = doc.createElement("div"), style = div.style; + return this; +}; // @require core/cash.js +// @require collection/each.js +// @require ./helpers/remove_data.js - return function (prop) { - prop = camelCase(prop); - if (cache[prop]) { - return cache[prop]; - } - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), prefixes = ["webkit", "moz", "ms", "o"], props = (prop + " " + (prefixes).join(ucProp + " ") + ucProp).split(" "); +fn.removeData = function (key) { + return this.each(function (i, ele) { + return removeData(ele, key); + }); +}; // @optional ./data.js +// @optional ./remove_data.js +// @require css/helpers/compute_style_int.js - each(props, function (p) { - if (p in style) { - cache[p] = prop = cache[prop] = p; - return false; - } - }); - return cache[prop]; - }; - }()); +function getExtraSpace(ele, xAxis) { + return computeStyleInt(ele, "border" + (xAxis ? 'Left' : 'Top') + "Width") + computeStyleInt(ele, "padding" + (xAxis ? 'Left' : 'Top')) + computeStyleInt(ele, "padding" + (xAxis ? 'Right' : 'Bottom')) + computeStyleInt(ele, "border" + (xAxis ? 'Right' : 'Bottom') + "Width"); +} // @require core/cash.js +// @require core/each.js +// @require core/variables.js - cash.prefixedProp = getPrefixedProp; - cash.camelCase = camelCase; - fn.extend({ - css: function (prop, value) { - if (isString(prop)) { - prop = getPrefixedProp(prop); - return (arguments.length > 1 ? this.each(function (v) { - return v.style[prop] = value; - }) : win.getComputedStyle(this[0])[prop]); - } +each(['Width', 'Height'], function (prop) { + fn["inner" + prop] = function () { + if (!this[0]) return; + if (this[0] === win) return win["inner" + prop]; + return this[0]["client" + prop]; + }; +}); // @require core/camel_case.js +// @require core/cash.js +// @require core/each.js +// @require core/variables.js +// @require css/helpers/compute_style.js +// @require css/helpers/get_suffixed_value.js +// @require ./helpers/get_extra_space.js - for (var key in prop) { - this.css(key, prop[key]); - } +each(['width', 'height'], function (prop, index) { + fn[prop] = function (value) { + if (!this[0]) return value === undefined ? undefined : this; - return this; + if (!arguments.length) { + if (this[0] === win) return this[0][camelCase("outer-" + prop)]; + return this[0].getBoundingClientRect()[prop] - getExtraSpace(this[0], !index); } - }); + value = parseInt(value, 10); + return this.each(function (i, ele) { + if (ele.nodeType !== 1) return; + var boxSizing = computeStyle(ele, 'boxSizing'); + ele.style[prop] = getSuffixedValue(prop, value + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0)); + }); + }; +}); // @require core/cash.js +// @require core/each.js +// @require core/variables.js +// @require css/helpers/compute_style_int.js - function compute(el, prop) { - return parseInt(win.getComputedStyle(el[0], null)[prop], 10) || 0; - } +each(['Width', 'Height'], function (prop, index) { + fn["outer" + prop] = function (includeMargins) { + if (!this[0]) return; + if (this[0] === win) return win["outer" + prop]; + return this[0]["offset" + prop] + (includeMargins ? computeStyleInt(this[0], "margin" + (!index ? 'Left' : 'Top')) + computeStyleInt(this[0], "margin" + (!index ? 'Right' : 'Bottom')) : 0); + }; +}); // @optional ./inner.js +// @optional ./normal.js +// @optional ./outer.js - each(["Width", "Height"], function (v) { - var lower = v.toLowerCase(); +function hasNamespaces(ns1, ns2) { + for (var i = 0, l = ns2.length; i < l; i++) { + if (ns1.indexOf(ns2[i]) < 0) return false; + } - fn[lower] = function () { - return this[0].getBoundingClientRect()[lower]; - }; + return true; +} // @require core/each.js - fn["inner" + v] = function () { - return this[0]["client" + v]; - }; - fn["outer" + v] = function (margins) { - return this[0]["offset" + v] + (margins ? compute(this, "margin" + (v === "Width" ? "Left" : "Top")) + compute(this, "margin" + (v === "Width" ? "Right" : "Bottom")) : 0); - }; +function removeEventListeners(cache, ele, name) { + each(cache[name], function (_ref) { + var namespaces = _ref[0], + callback = _ref[1]; + ele.removeEventListener(name, callback); }); + delete cache[name]; +} - function registerEvent(node, eventName, callback) { - var eventCache = getData(node, "_cashEvents") || setData(node, "_cashEvents", {}); - eventCache[eventName] = eventCache[eventName] || []; - eventCache[eventName].push(callback); - node.addEventListener(eventName, callback); - } +var eventsNamespace = '__cashEvents', + eventsNamespacesSeparator = '.'; // @require ./variables.js - function removeEvent(node, eventName, callback) { - var events = getData(node, "_cashEvents"), eventCache = (events && events[eventName]), index; +function getEventsCache(ele) { + return ele[eventsNamespace] = ele[eventsNamespace] || {}; +} // @require core/guid.js +// @require events/helpers/get_events_cache.js - if (!eventCache) { - return; - } - if (callback) { - node.removeEventListener(eventName, callback); - index = eventCache.indexOf(callback); - if (index >= 0) { - eventCache.splice(index, 1); +function addEvent(ele, name, namespaces, callback) { + callback.guid = callback.guid || guid++; + var eventCache = getEventsCache(ele); + eventCache[name] = eventCache[name] || []; + eventCache[name].push([namespaces, callback]); + ele.addEventListener(name, callback); +} // @require ./variables.js + + +function parseEventName(eventName) { + var parts = eventName.split(eventsNamespacesSeparator); + return [parts[0], parts.slice(1).sort()]; // [name, namespaces] +} // @require core/guid.js +// @require ./get_events_cache.js +// @require ./has_namespaces.js +// @require ./parse_event_name.js +// @require ./remove_event_listeners.js + + +function removeEvent(ele, name, namespaces, callback) { + var cache = getEventsCache(ele); + + if (!name) { + if (!namespaces || !namespaces.length) { + for (name in cache) { + removeEventListeners(cache, ele, name); } } else { - each(eventCache, function (event) { - node.removeEventListener(eventName, event); - }); - eventCache = []; + for (name in cache) { + removeEvent(ele, name, namespaces, callback); + } } + } else { + var eventCache = cache[name]; + if (!eventCache) return; + if (callback) callback.guid = callback.guid || guid++; + cache[name] = eventCache.filter(function (_ref2) { + var ns = _ref2[0], + cb = _ref2[1]; + if (callback && cb.guid !== callback.guid || !hasNamespaces(ns, namespaces)) return true; + ele.removeEventListener(name, cb); + }); } +} // @require core/cash.js +// @require core/each.js +// @require collection/each.js +// @require ./helpers/parse_event_name.js +// @require ./helpers/remove_event.js + + +fn.off = function (eventFullName, callback) { + var _this2 = this; + + if (eventFullName === undefined) { + this.each(function (i, ele) { + return removeEvent(ele); + }); + } else { + each(getSplitValues(eventFullName), function (eventFullName) { + var _parseEventName = parseEventName(eventFullName), + name = _parseEventName[0], + namespaces = _parseEventName[1]; - fn.extend({ - off: function (eventName, callback) { - return this.each(function (v) { - return removeEvent(v, eventName, callback); + _this2.each(function (i, ele) { + return removeEvent(ele, name, namespaces, callback); }); - }, + }); + } - on: function (eventName, delegate, callback, runOnce) { - // jshint ignore:line + return this; +}; // @require core/cash.js +// @require core/get_split_values.js +// @require core/guid.js +// @require core/matches.js +// @require core/type_checking.js +// @require collection/each.js +// @require ./helpers/variables.js +// @require ./helpers/add_event.js +// @require ./helpers/has_namespaces.js +// @require ./helpers/parse_event_name.js +// @require ./helpers/remove_event.js - var originalCallback; - if (!isString(eventName)) { - for (var key in eventName) { - this.on(key, delegate, eventName[key]); - } - return this; - } +fn.on = function (eventFullName, selector, callback, _one) { + var _this3 = this; - if (isFunction(delegate)) { - callback = delegate; - delegate = null; - } + if (!isString(eventFullName)) { + for (var key in eventFullName) { + this.on(key, selector, eventFullName[key]); + } - if (eventName === "ready") { - onReady(callback); - return this; - } + return this; + } - if (delegate) { - originalCallback = callback; - callback = function (e) { - var t = e.target; + if (isFunction(selector)) { + callback = selector; + selector = false; + } - while (!matches(t, delegate)) { - if (t === this) { - return (t = false); - } - t = t.parentNode; - } + each(getSplitValues(eventFullName), function (eventFullName) { + var _parseEventName2 = parseEventName(eventFullName), + name = _parseEventName2[0], + namespaces = _parseEventName2[1]; + + _this3.each(function (i, ele) { + var finalCallback = function finalCallback(event) { + if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator))) return; + var thisArg = ele; + + if (selector) { + var target = event.target; - if (t) { - originalCallback.call(t, e); + while (!matches(target, selector)) { + if (target === ele) return; + target = target.parentNode; + if (!target) return; } - }; - } - return this.each(function (v) { - var finalCallback = callback; - if (runOnce) { - finalCallback = function () { - callback.apply(this, arguments); - removeEvent(v, eventName, finalCallback); - }; + thisArg = target; } - registerEvent(v, eventName, finalCallback); - }); - }, - one: function (eventName, delegate, callback) { - return this.on(eventName, delegate, callback, true); - }, + event.namespace = event.namespace || ''; + var returnValue = callback.call(thisArg, event, event.data); - ready: onReady, + if (_one) { + removeEvent(ele, name, namespaces, finalCallback); + } - trigger: function (eventName, data) { - var evt = doc.createEvent("HTMLEvents"); - evt.data = data; - evt.initEvent(eventName, true, false); - return this.each(function (v) { - return v.dispatchEvent(evt); - }); - } + if (returnValue === false) { + event.preventDefault(); + event.stopPropagation(); + } + }; + finalCallback.guid = callback.guid = callback.guid || guid++; + addEvent(ele, name, namespaces, finalCallback); + }); }); + return this; +}; // @require core/cash.js +// @require ./on.js - function encode(name, value) { - return "&" + encodeURIComponent(name) + "=" + encodeURIComponent(value).replace(/%20/g, "+"); - } - function getSelectMultiple_(el) { - var values = []; - each(el.options, function (o) { - if (o.selected) { - values.push(o.value); - } - }); - return values.length ? values : null; +fn.one = function (eventFullName, delegate, callback) { + return this.on(eventFullName, delegate, callback, true); +}; // @require core/cash.js +// @require core/variables.js + + +fn.ready = function (callback) { + var finalCallback = function finalCallback() { + return callback(cash); + }; + + if (doc.readyState !== 'loading') { + setTimeout(finalCallback); + } else { + doc.addEventListener('DOMContentLoaded', finalCallback); } - function getSelectSingle_(el) { - var selectedIndex = el.selectedIndex; - return selectedIndex >= 0 ? el.options[selectedIndex].value : null; + return this; +}; // @require core/cash.js +// @require core/type_checking.js +// @require core/variables.js +// @require collection/each.js +// @require ./helpers/parse_event_name.js +// @require ./helpers/variables.js + + +fn.trigger = function (eventFullName, data) { + var evt = eventFullName; + + if (isString(eventFullName)) { + var _parseEventName3 = parseEventName(eventFullName), + name = _parseEventName3[0], + namespaces = _parseEventName3[1]; + + evt = doc.createEvent('HTMLEvents'); + evt.initEvent(name, true, true); + evt.namespace = namespaces.join(eventsNamespacesSeparator); } - function getValue(el) { - var type = el.type; - if (!type) { - return null; - } - switch (type.toLowerCase()) { - case "select-one": - return getSelectSingle_(el); - case "select-multiple": - return getSelectMultiple_(el); - case "radio": - return (el.checked) ? el.value : null; - case "checkbox": - return (el.checked) ? el.value : null; - default: - return el.value ? el.value : null; + evt.data = data; + return this.each(function (i, ele) { + ele.dispatchEvent(evt); + }); +}; // @optional ./off.js +// @optional ./on.js +// @optional ./one.js +// @optional ./ready.js +// @optional ./trigger.js +// @require core/each.js + + +function getValueSelectMultiple(ele) { + var values = []; + each(ele.options, function (option) { + if (option.selected && !option.disabled && !option.parentNode.disabled) { + values.push(option.value); } - } + }); + return values; +} - fn.extend({ - serialize: function () { - var query = ""; +function getValueSelectSingle(ele) { + return ele.selectedIndex < 0 ? null : ele.options[ele.selectedIndex].value; +} // @require ./get_value_select_single.js +// @require ./get_value_select_multiple.js - each(this[0].elements || this, function (el) { - if (el.disabled || el.tagName === "FIELDSET") { - return; - } - var name = el.name; - switch (el.type.toLowerCase()) { - case "file": - case "reset": - case "submit": - case "button": - break; - case "select-multiple": - var values = getValue(el); - if (values !== null) { - each(values, function (value) { - query += encode(name, value); - }); - } - break; - default: - var value = getValue(el); - if (value !== null) { - query += encode(name, value); - } - } - }); - return query.substr(1); - }, +var selectOneRe = /select-one/i, + selectMultipleRe = /select-multiple/i; - val: function (value) { - if (value === undefined) { - return getValue(this[0]); - } else { - return this.each(function (v) { - return v.value = value; - }); - } +function getValue(ele) { + var type = ele.type; + if (selectOneRe.test(type)) return getValueSelectSingle(ele); + if (selectMultipleRe.test(type)) return getValueSelectMultiple(ele); + return ele.value; +} + +var queryEncodeSpaceRe = /%20/g; + +function queryEncode(prop, value) { + return "&" + encodeURIComponent(prop) + "=" + encodeURIComponent(value).replace(queryEncodeSpaceRe, '+'); +} // @require core/cash.js +// @require core/each.js +// @require core/type_checking.js +// @require ./helpers/get_value.js +// @require ./helpers/query_encode.js + + +var skippableRe = /file|reset|submit|button|image/i, + checkableRe = /radio|checkbox/i; + +fn.serialize = function () { + var query = ''; + this.each(function (i, ele) { + each(ele.elements || [ele], function (ele) { + if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET') return; + if (skippableRe.test(ele.type)) return; + if (checkableRe.test(ele.type) && !ele.checked) return; + var value = getValue(ele); + if (value === undefined) return; + var values = isArray(value) ? value : [value]; + each(values, function (value) { + query += queryEncode(ele.name, value); + }); + }); + }); + return query.substr(1); +}; // @require core/cash.js +// @require core/each.js +// @require core/type_checking.js +// @require collection/each.js +// @require ./helpers/get_value.js + + +fn.val = function (value) { + if (value === undefined) return this[0] && getValue(this[0]); + return this.each(function (i, ele) { + var isMultiple = selectMultipleRe.test(ele.type), + eleValue = value === null ? isMultiple ? [] : '' : value; + + if (isMultiple && isArray(eleValue)) { + each(ele.options, function (option) { + option.selected = eleValue.indexOf(option.value) >= 0; + }); + } else { + ele.value = eleValue; } + }); +}; // @optional ./serialize.js +// @optional ./val.js +// @require core/cash.js +// @require collection/map.js + +fn.clone = function () { + return this.map(function (i, ele) { + return ele.cloneNode(true); }); +}; // @require core/cash.js +// @require collection/each.js - function insertElement(el, child, prepend) { - if (prepend) { - var first = el.childNodes[0]; - el.insertBefore(child, first); - } else { - el.appendChild(child); + +fn.detach = function () { + return this.each(function (i, ele) { + if (ele.parentNode) { + ele.parentNode.removeChild(ele); } - } + }); +}; // @require ./cash.js +// @require ./variables.js +// @require ./type_checking.js +// @require collection/get.js +// @require manipulation/detach.js + + +var fragmentRe = /^\s*<(\w+)[^>]*>/, + singleTagRe = /^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/; +var containers; + +function initContainers() { + if (containers) return; + var table = doc.createElement('table'), + tr = doc.createElement('tr'); + containers = { + '*': doc.createElement('div'), + tr: doc.createElement('tbody'), + td: tr, + th: tr, + thead: table, + tbody: table, + tfoot: table + }; +} - function insertContent(parent, child, prepend) { - var str = isString(child); +function parseHTML(html) { + initContainers(); + if (!isString(html)) return []; + if (singleTagRe.test(html)) return [doc.createElement(RegExp.$1)]; + var fragment = fragmentRe.test(html) && RegExp.$1, + container = containers[fragment] || containers['*']; + container.innerHTML = html; + return cash(container.childNodes).detach().get(); +} - if (!str && child.length) { - each(child, function (v) { - return insertContent(parent, v, prepend); - }); - return; +cash.parseHTML = parseHTML; // @optional ./camel_case.js +// @optional ./each.js +// @optional ./export.js +// @optional ./extend.js +// @optional ./find.js +// @optional ./get_compare_function.js +// @optional ./get_split_values.js +// @optional ./guid.js +// @optional ./matches.js +// @optional ./parse_html.js +// @optional ./unique.js +// @optional ./variables.js +// @require ./cash.js +// @require ./type_checking.js +// @require core/cash.js + +fn.empty = function () { + var ele = this[0]; + + if (ele) { + while (ele.firstChild) { + ele.removeChild(ele.firstChild); } + } + + return this; +}; + +function insertElement(ele, child, prepend) { + if (prepend) { + ele.insertBefore(child, ele.childNodes[0]); + } else { + ele.appendChild(child); + } +} // @require core/each.js +// @require core/type_checking.js +// @require ./insert_element.js - each(parent, str ? function (v) { - return v.insertAdjacentHTML(prepend ? "afterbegin" : "beforeend", child); - } : function (v, i) { - return insertElement(v, (i === 0 ? child : child.cloneNode(true)), prepend); + +function insertContent(parent, child, prepend) { + if (child === undefined) return; + var isStr = isString(child); + + if (!isStr && child.length) { + each(child, function (ele) { + return insertContent(parent, ele, prepend); + }); + } else { + each(parent, isStr ? function (ele) { + ele.insertAdjacentHTML(prepend ? 'afterbegin' : 'beforeend', child); + } : function (ele, index) { + return insertElement(ele, !index ? child : child.cloneNode(true), prepend); }); } +} // @require core/cash.js +// @require core/each.js +// @require ./helpers/insert_content.js - fn.extend({ - after: function (selector) { - cash(selector).insertAfter(this); - return this; - }, - append: function (content) { - insertContent(this, content); - return this; - }, +fn.append = function () { + var _this4 = this; - appendTo: function (parent) { - insertContent(cash(parent), this); - return this; - }, + each(arguments, function (content) { + insertContent(_this4, content); + }); + return this; +}; // @require core/cash.js +// @require ./helpers/insert_content.js - before: function (selector) { - cash(selector).insertBefore(this); - return this; - }, - clone: function () { - return cash(this.map(function (v) { - return v.cloneNode(true); - })); - }, +fn.appendTo = function (parent) { + insertContent(cash(parent), this); + return this; +}; // @require core/cash.js +// @require collection/each.js - empty: function () { - this.html(""); - return this; - }, - html: function (content) { - if (content === undefined) { - return this[0].innerHTML; - } - var source = (content.nodeType ? content[0].outerHTML : content); - return this.each(function (v) { - return v.innerHTML = source; - }); - }, +fn.html = function (content) { + if (content === undefined) return this[0] && this[0].innerHTML; + var source = content.nodeType ? content[0].outerHTML : content; + return this.each(function (i, ele) { + ele.innerHTML = source; + }); +}; // @require core/cash.js +// @require collection/each.js - insertAfter: function (selector) { - var _this = this; +fn.insertAfter = function (content) { + var _this5 = this; - cash(selector).each(function (el, i) { - var parent = el.parentNode, sibling = el.nextSibling; - _this.each(function (v) { - parent.insertBefore((i === 0 ? v : v.cloneNode(true)), sibling); - }); - }); + cash(content).each(function (index, ele) { + var parent = ele.parentNode; - return this; - }, + _this5.each(function (i, e) { + parent.insertBefore(!index ? e : e.cloneNode(true), ele.nextSibling); + }); + }); + return this; +}; // @require core/cash.js +// @require core/each.js +// @require core/variables.js +// @require collection/slice.js +// @require ./insert_after.js - insertBefore: function (selector) { - var _this2 = this; - cash(selector).each(function (el, i) { - var parent = el.parentNode; - _this2.each(function (v) { - parent.insertBefore((i === 0 ? v : v.cloneNode(true)), el); - }); - }); - return this; - }, - prepend: function (content) { - insertContent(this, content, true); - return this; - }, +fn.after = function () { + var _this6 = this; - prependTo: function (parent) { - insertContent(cash(parent), this, true); - return this; - }, + each(reverse.apply(arguments), function (content) { + reverse.apply(cash(content).slice()).insertAfter(_this6); + }); + return this; +}; // @require core/cash.js +// @require collection/each.js - remove: function () { - return this.each(function (v) { - return v.parentNode.removeChild(v); - }); - }, - text: function (content) { - if (content === undefined) { - return this[0].textContent; - } - return this.each(function (v) { - return v.textContent = content; - }); - } +fn.insertBefore = function (selector) { + var _this7 = this; + cash(selector).each(function (index, ele) { + var parent = ele.parentNode; + + _this7.each(function (i, e) { + parent.insertBefore(!index ? e : e.cloneNode(true), ele); + }); }); + return this; +}; // @require core/cash.js +// @require core/each.js +// @require ./insert_before.js - var docEl = doc.documentElement; - fn.extend({ - position: function () { - var el = this[0]; - return { - left: el.offsetLeft, - top: el.offsetTop - }; - }, +fn.before = function () { + var _this8 = this; - offset: function () { - var rect = this[0].getBoundingClientRect(); - return { - top: rect.top + win.pageYOffset - docEl.clientTop, - left: rect.left + win.pageXOffset - docEl.clientLeft - }; - }, + each(arguments, function (content) { + cash(content).insertBefore(_this8); + }); + return this; +}; // @require core/cash.js +// @require core/each.js +// @require ./helpers/insert_content.js + + +fn.prepend = function () { + var _this9 = this; - offsetParent: function () { - return cash(this[0].offsetParent); + each(arguments, function (content) { + insertContent(_this9, content, true); + }); + return this; +}; // @require core/cash.js +// @require core/variables.js +// @require collection/slice.js +// @require ./helpers/insert_content.js + + +fn.prependTo = function (parent) { + insertContent(cash(parent), reverse.apply(this.slice()), true); + return this; +}; // @require core/cash.js +// @require events/off.js +// @require ./detach.js + + +fn.remove = function () { + return this.detach().off(); +}; // @require core/cash.js +// @require collection/each.js +// @require collection/slice.js +// @require ./after.js +// @require ./remove.js + + +fn.replaceWith = function (content) { + var _this10 = this; + + return this.each(function (i, ele) { + var parent = ele.parentNode; + if (!parent) return; + var $eles = i ? cash(content).clone() : cash(content); + + if (!$eles[0]) { + _this10.remove(); + + return false; } + parent.replaceChild($eles[0], ele); + cash($eles[0]).after($eles.slice(1)); }); +}; // @require core/cash.js +// @require ./replace_with.js - fn.extend({ - children: function (selector) { - var elems = []; - this.each(function (el) { - push.apply(elems, el.children); - }); - elems = unique(elems); - return (!selector ? elems : elems.filter(function (v) { - return matches(v, selector); - })); - }, +fn.replaceAll = function (content) { + cash(content).replaceWith(this); + return this; +}; // @require core/cash.js +// @require collection/each.js - closest: function (selector) { - if (!selector || this.length < 1) { - return cash(); - } - if (this.is(selector)) { - return this.filter(selector); - } - return this.parent().closest(selector); - }, - is: function (selector) { - if (!selector) { - return false; - } +fn.text = function (content) { + if (content === undefined) return this[0] ? this[0].textContent : ''; + return this.each(function (i, ele) { + ele.textContent = content; + }); +}; // @optional ./after.js +// @optional ./append.js +// @optional ./append_to.js +// @optional ./before.js +// @optional ./clone.js +// @optional ./detach.js +// @optional ./empty.js +// @optional ./html.js +// @optional ./insert_after.js +// @optional ./insert_before.js +// @optional ./prepend.js +// @optional ./prepend_to.js +// @optional ./remove.js +// @optional ./replace_all.js +// @optional ./replace_with.js +// @optional ./text.js +// @require core/cash.js +// @require core/variables.js + + +var docEle = doc.documentElement; + +fn.offset = function () { + var ele = this[0]; + if (!ele) return; + var rect = ele.getBoundingClientRect(); + return { + top: rect.top + win.pageYOffset - docEle.clientTop, + left: rect.left + win.pageXOffset - docEle.clientLeft + }; +}; // @require core/cash.js - var match = false, comparator = getCompareFunction(selector); - this.each(function (el) { - match = comparator(el, selector); - return !match; - }); +fn.offsetParent = function () { + return cash(this[0] && this[0].offsetParent); +}; // @require core/cash.js - return match; - }, - find: function (selector) { - if (!selector || selector.nodeType) { - return cash(selector && this.has(selector).length ? selector : null); - } +fn.position = function () { + var ele = this[0]; + if (!ele) return; + return { + left: ele.offsetLeft, + top: ele.offsetTop + }; +}; // @optional ./offset.js +// @optional ./offset_parent.js +// @optional ./position.js +// @require core/cash.js +// @require core/matches.js +// @require core/unique.js +// @require collection/each.js +// @require collection/filter.js - var elems = []; - this.each(function (el) { - push.apply(elems, find(selector, el)); - }); - return unique(elems); - }, +fn.children = function (selector) { + var result = []; + this.each(function (i, ele) { + push.apply(result, ele.children); + }); + result = cash(unique(result)); + if (!selector) return result; + return result.filter(function (i, ele) { + return matches(ele, selector); + }); +}; // @require core/cash.js +// @require core/unique.js +// @require collection/each.js - has: function (selector) { - var comparator = (isString(selector) ? function (el) { - return find(selector, el).length !== 0; - } : function (el) { - return el.contains(selector); - }); - return this.filter(comparator); - }, +fn.contents = function () { + var result = []; + this.each(function (i, ele) { + push.apply(result, ele.tagName === 'IFRAME' ? [ele.contentDocument] : ele.childNodes); + }); + return cash(result.length && unique(result)); +}; // @require core/cash.js +// @require core/unique.js +// @require core/find.js +// @require core/variables.js - next: function () { - return cash(this[0].nextElementSibling); - }, - not: function (selector) { - if (!selector) { - return this; - } +fn.find = function (selector) { + var result = []; - var comparator = getCompareFunction(selector); + for (var i = 0, l = this.length; i < l; i++) { + var found = find(selector, this[i]); - return this.filter(function (el) { - return !comparator(el, selector); - }); - }, + if (found.length) { + push.apply(result, found); + } + } - parent: function () { - var result = []; + return cash(result.length && unique(result)); +}; // @require core/cash.js +// @require core/find.js +// @require core/type_checking.js +// @require collection/filter.js - this.each(function (item) { - if (item && item.parentNode) { - result.push(item.parentNode); - } - }); - return unique(result); - }, +fn.has = function (selector) { + var comparator = isString(selector) ? function (i, ele) { + return !!find(selector, ele).length; + } : function (i, ele) { + return ele.contains(selector); + }; + return this.filter(comparator); +}; // @require core/cash.js +// @require core/get_compare_function.js +// @require collection/each.js - parents: function (selector) { - var last, result = []; - this.each(function (item) { - last = item; +fn.is = function (selector) { + if (!selector || !this[0]) return false; + var comparator = getCompareFunction(selector); + var check = false; + this.each(function (i, ele) { + check = comparator(i, ele, selector); + return !check; + }); + return check; +}; // @require core/cash.js - while (last && last.parentNode && last !== doc.body.parentNode) { - last = last.parentNode; - if (!selector || (selector && matches(last, selector))) { - result.push(last); - } - } - }); +fn.next = function () { + return cash(this[0] && this[0].nextElementSibling); +}; // @require core/cash.js +// @require core/get_compare_function.js +// @require collection/filter.js - return unique(result); - }, - prev: function () { - return cash(this[0].previousElementSibling); - }, +fn.not = function (selector) { + if (!selector || !this[0]) return this; + var comparator = getCompareFunction(selector); + return this.filter(function (i, ele) { + return !comparator(i, ele, selector); + }); +}; // @require core/cash.js +// @require core/unique.js +// @require collection/each.js - siblings: function () { - var collection = this.parent().children(), el = this[0]; - return collection.filter(function (i) { - return i !== el; - }); +fn.parent = function () { + var result = []; + this.each(function (i, ele) { + if (ele && ele.parentNode) { + result.push(ele.parentNode); } + }); + return cash(unique(result)); +}; // @require core/cash.js +// @require core/variables.js +// @require traversal/children.js +// @require traversal/parent.js +// @require ./get.js +//FIXME Ugly file name, is there a better option? + + +fn.index = function (ele) { + var child = ele ? cash(ele)[0] : this[0], + collection = ele ? this : cash(child).parent().children(); + return indexOf.call(collection, child); +}; // @optional ./add.js +// @optional ./each.js +// @optional ./eq.js +// @optional ./filter.js +// @optional ./first.js +// @optional ./get.js +// @optional ./indexFn.js +// @optional ./last.js +// @optional ./map.js +// @optional ./slice.js +// @require core/cash.js +// @require collection/filter.js +// @require ./is.js +// @require ./parent.js + + +fn.closest = function (selector) { + if (!selector || !this[0]) return cash(); + if (this.is(selector)) return this.filter(selector); + return this.parent().closest(selector); +}; // @require core/cash.js +// @require core/matches.js +// @require core/unique.js +// @require core/variables.js +// @require collection/each.js + + +fn.parents = function (selector) { + var result = []; + var last; + this.each(function (i, ele) { + last = ele; + while (last && last.parentNode && last !== doc.body.parentNode) { + last = last.parentNode; + + if (!selector || selector && matches(last, selector)) { + result.push(last); + } + } }); + return cash(unique(result)); +}; // @require core/cash.js - return cash; -}); +fn.prev = function () { + return cash(this[0] && this[0].previousElementSibling); +}; // @require core/cash.js +// @require collection/filter.js +// @require ./children.js +// @require ./parent.js + + +fn.siblings = function () { + var ele = this[0]; + return this.parent().children().filter(function (i, child) { + return child !== ele; + }); +}; // @optional ./children.js +// @optional ./closest.js +// @optional ./contents.js +// @optional ./find.js +// @optional ./has.js +// @optional ./is.js +// @optional ./next.js +// @optional ./not.js +// @optional ./parent.js +// @optional ./parents.js +// @optional ./prev.js +// @optional ./siblings.js +// @optional attributes/index.js +// @optional collection/index.js +// @optional css/index.js +// @optional data/index.js +// @optional dimensions/index.js +// @optional events/index.js +// @optional forms/index.js +// @optional manipulation/index.js +// @optional offset/index.js +// @optional traversal/index.js +// @require core/index.js +/* harmony default export */ __webpack_exports__["default"] = (cash); + /***/ }), @@ -19365,7 +19831,9 @@ __webpack_require__.r(__webpack_exports__); // var stopUpload = true; // if(stopUpload) return false; // } - beforeUpload: null + beforeUpload: null, + // Toggles visiblity of assets url input + showUrlInput: true }); /***/ }), @@ -20021,7 +20489,13 @@ __webpack_require__.r(__webpack_exports__); em = _ref.em, view = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(_ref, ["pfx", "ppfx", "em"]); - return "\n