diff --git a/dist/lodash.compat.js b/dist/lodash.compat.js index 0d59296f4..8b657035b 100644 --- a/dist/lodash.compat.js +++ b/dist/lodash.compat.js @@ -1057,7 +1057,7 @@ /** * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. + * for `this` binding. * * @private * @param {*} value The value to clone. @@ -1336,7 +1336,7 @@ /** * The base implementation of `_.forEach` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -1365,7 +1365,7 @@ /** * The base implementation of `_.forEachRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -1391,9 +1391,34 @@ return collection; } + /** + * The base implementation of `find`, 'findLast`, `findKey`, and `findLastKey` + * without support for callback shorthands or `this` binding which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function called per iteration. + * @param {Function} eachFunc The function to iterate over the collection. + * @param {boolean} [retKey=false] A flag to indicate returning the key of + * the found element instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return false; + } + }); + return result; + } + /** * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array} array The array to flatten. @@ -1483,7 +1508,7 @@ /** * The base implementation of `_.forIn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1496,7 +1521,7 @@ /** * The base implementation of `_.forOwn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1509,7 +1534,7 @@ /** * The base implementation of `_.forOwnRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1687,7 +1712,7 @@ /** * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. + * for `this` binding. * * @private * @param {Object} object The destination object. @@ -1765,7 +1790,7 @@ /** * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. + * or `this` binding. * * @private * @param {Array} array The array to process. @@ -3778,27 +3803,12 @@ * // => { 'name': 'fred', 'age': 40, 'blocked': true } */ function find(collection, predicate, thisArg) { - predicate = lodash.createCallback(predicate, thisArg, 3); if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (predicate(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result = value; - return false; - } - }); - return result; + var index = findIndex(collection, predicate, thisArg); + return index > -1 ? collection[index] : undefined; } + predicate = lodash.createCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEach); } /** @@ -3822,16 +3832,8 @@ * // => 3 */ function findLast(collection, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseEachRight(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result = value; - return false; - } - }); - return result; + return baseFind(collection, predicate, baseEachRight); } /** @@ -5687,16 +5689,8 @@ * // => 'fred' */ function findKey(object, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseForOwn(object, function(value, key, object) { - if (predicate(value, key, object)) { - result = key; - return false; - } - }); - return result; + return baseFind(object, predicate, baseForOwn, true); } /** @@ -5741,16 +5735,8 @@ * // => 'pebbles' */ function findLastKey(object, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseForOwnRight(object, function(value, key, object) { - if (predicate(value, key, object)) { - result = key; - return false; - } - }); - return result; + return baseFind(object, predicate, baseForOwnRight, true); } /** @@ -6076,9 +6062,9 @@ } /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". + * Checks if a collection is empty. A value is considered empty unless it is + * an array, array-like object, or string with a length greater than `0` or + * an object with own properties. * * @static * @memberOf _ @@ -6110,9 +6096,11 @@ var className = toString.call(value), length = value.length; - if ((className == arrayClass || className == stringClass || - (support.argsClass ? className == argsClass : isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { + if (length > -1 && length <= maxSafeInteger && ( + (className == arrayClass || className == stringClass || + (support.argsClass ? className == argsClass : isArguments(value))) || + (className == objectClass && isFunction(value.splice)) + )) { return !length; } baseForOwn(value, function() { diff --git a/dist/lodash.compat.min.js b/dist/lodash.compat.min.js index d8be01c76..b7a479434 100644 --- a/dist/lodash.compat.min.js +++ b/dist/lodash.compat.min.js @@ -6,63 +6,63 @@ ;(function(){function n(n,t){return typeof n=="undefined"?t:n}function t(n,t){if(n!==t){if(n>t||typeof n=="undefined")return 1;if(ne||13e||8202r||13r||8202a(t,l)&&f.push(l);return f}function pt(n,t){var r=-1,e=n,u=n?n.length:0;if(typeof u=="number"&&-1i(s,h)&&((u||f)&&s.push(h),c.push(p))}return c}function Ot(n,t){for(var r=-1,e=t(n),u=e.length,o=Ar(u);++rr&&(r=0),s&&(a=[]),p&&(i=[]),h=[n,t,r,e,u,o,a,i],t==x||t==(x|O)?c(h):X(h)) -}function Rt(){var n=(n=o.indexOf)===Ft?r:n;return n}function Nt(n){return typeof n=="function"&&Zr.test(Hr.call(n))}function Tt(n){var t,r;return!n||Vr.call(n)!=ot||!Qr.call(n,"constructor")&&(t=n.constructor,pr(t)&&!(t instanceof t))||!Ce.argsClass&&cr(n)||!Ce.nodeClass&&h(n)?false:Ce.ownLast?(dt(n,function(n,t,e){return r=Qr.call(e,t),false}),false!==r):(dt(n,function(n,t){r=t}),typeof r=="undefined"||Qr.call(n,r))}function Lt(n){for(var t=-1,r=mr(n),e=r.length,u=[];++ta?0:a)}function Ft(n,t,e){var u=n?n.length:0;if(typeof e=="number")e=0>e?he(0,u+e):e||0;else if(e)return e=Bt(n,t),u&&n[e]===t?e:-1;return r(n,t,e)}function Pt(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,a=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)a++}else a=null==t||r?1:t; -return a=e-a,zt(n,0,0>a?0:a)}function $t(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,a=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)a++}else if(a=t,null==a||r)return n?n[e-1]:w;return a=e-a,zt(n,0>a?0:a)}function Dt(n,t,r){if(typeof t!="number"&&null!=t){var e=-1,u=n?n.length:0,a=0;for(t=o.createCallback(t,r,3);++et?0:t;return zt(n,a)}function zt(n,t,r){var e=-1,u=n?n.length:0;for(t=+t||0,0>t?t=he(u+t,0):t>u&&(t=u),r=typeof r=="undefined"?u:+r||0,0>r?r=he(u+r,0):r>u&&(r=u),u=t>r?0:r-t,r=Ar(u);++e>>1,r(n[e])r?0:r);++tr?he(0,e+r):r,-1u?0:u>>>0);if(t=o.createCallback(t,r,3),Re(n))for(;++ea&&(a=l)}else t=null==t&&yr(n)?u:o.createCallback(t,r,3),pt(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,a=n)});return a}function nr(n,t,r,e){var u=3>arguments.length;if(t=o.createCallback(t,e,4),Re(n)){var a=-1,i=n.length;for(u&&i&&(r=n[++a]);++aarguments.length;return t=o.createCallback(t,e,4),ht(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function rr(n){var t=-1,r=n&&n.length,e=Ar(0>r?0:r>>>0); -return pt(n,function(n){var r=jt(0,++t);e[t]=e[r],e[r]=n}),e}function er(n,t,r){var e;if(t=o.createCallback(t,r,3),Re(n)){r=-1;for(var u=n.length;++rarguments.length)return It(n,x,null,t);if(n)var r=n[S]?n[S][2]:n.length,e=zt(arguments,2),r=r-e.length;return It(n,x|O,r,t,e)}function or(n,t,r){function e(){c&&Yr(c),a=c=s=w,(g||h!==t)&&(p=ze(),i=n.apply(f,o),c||a||(o=f=null))}function u(){var r=t-(ze()-l); -0>=r||r>t?(a&&Yr(a),r=s,a=c=s=w,r&&(p=ze(),i=n.apply(f,o),c||a||(o=f=null))):c=ee(u,r)}var o,a,i,l,f,c,s,p=0,h=false,g=true;if(!pr(n))throw new $r;if(t=0>t?0:t,true===r)var v=true,g=false;else hr(r)&&(v=r.leading,h="maxWait"in r&&(he(t,r.maxWait)||0),g="trailing"in r?r.trailing:g);return function(){if(o=arguments,l=ze(),f=this,s=g&&(c||!v),false===h)var r=v&&!c;else{a||v||(p=l);var y=h-(l-p),m=0>=y||y>h;m?(a&&(a=Yr(a)),p=l,i=n.apply(f,o)):a||(a=ee(e,y))}return m&&c?c=Yr(c):c||t===h||(c=ee(u,t)),r&&(m=true,i=n.apply(f,o)),!m||c||a||(o=f=null),i -}}function ar(n){if(!pr(n))throw new $r;return function(){return!n.apply(this,arguments)}}function ir(n,t,r){var e=arguments;if(!n||2>e.length)return n;var u=0,o=e.length,a=typeof r;if("number"!=a&&"string"!=a||!e[3]||e[3][r]!==t||(o=2),3arguments.length)return t;var r=zt(arguments); -return r.push(n),ir.apply(null,r)}function fr(n){var t=[];return dt(n,function(n,r){pr(n)&&t.push(r)}),t.sort()}function cr(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Vr.call(n)==J||false}function sr(n){return n&&typeof n=="object"&&1===n.nodeType&&(Ce.nodeClass?-1t||null==n)return r;n=Pr(n);do t%2&&(r+=n),t=Gr(t/2),n+=n;while(t);return r}function xr(n,t,r){var e=typeof n; -return"function"==e||null==n?(typeof t=="undefined"||!("prototype"in n))&&n||U(n,t,r):"object"!=e?Er(n):jr(n)}function Cr(n){return n}function jr(n){n||(n={});var t=Te(n),r=t.length,e=t[0],u=n[e];return 1!=r||u!==u||hr(u)?function(e){for(var u=r,o=false;u--&&(o=t[u],o=Qr.call(e,o)&&xt(e[o],n[o],null,true)););return o}:function(n){return Qr.call(n,e)?(n=n[e],u===n&&(0!==u||1/u==1/n)):false}}function kr(n,t,r){var e=true,u=t&&fr(t);t&&(r||u.length)||(null==r&&(r=t),t=n,n=o,u=fr(t)),false===r?e=false:hr(r)&&"chain"in r&&(e=r.chain),r=-1; -for(var a=pr(n),i=u?u.length:0;++r--n?t.apply(this,arguments):void 0}},o.assign=ir,o.at=function(n,t){var r=arguments,e=-1,u=gt(r,true,false,1),o=u.length,a=typeof t;for("number"!=a&&"string"!=a||!r[2]||r[2][t]!==n||(o=1),Ce.unindexedChars&&yr(n)&&(n=n.split("")),r=Ar(o);++earguments.length?It(t,x|C,null,n):It(t,x|C|O,null,n,zt(arguments,2))},o.chain=function(n){return n=new a(n),n.__chain__=true,n},o.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t(h?e(h,c):i(f,c))){for(u=o,(h||f).push(c);--u;)if(h=a[u],0>(h?e(h,c):i(t[u],c)))continue n; -p.push(c)}}return p},o.invert=function(n,t){for(var r=-1,e=Te(n),u=e.length,o={};++ro?0:o>>>0);return pt(n,function(n){var o=u?t:null!=n&&n[t];a[++e]=o?o.apply(n,r):w}),a},o.keys=Te,o.keysIn=mr,o.map=Jt,o.mapValues=function(n,t,r){var e={};return t=o.createCallback(t,r,3),_t(n,function(n,r,u){e[r]=t(n,r,u)}),e},o.matches=jr,o.max=Qt,o.memoize=function(n,t){function r(){var e=r.cache,u=t?t.apply(this,arguments):"_"+arguments[0]; -return Qr.call(e,u)?e[u]:e[u]=n.apply(this,arguments)}if(!pr(n))throw new $r;return r.cache={},r},o.merge=function(n,t,r){if(!n)return n;var e=arguments,u=e.length,o=typeof r;if("number"!=o&&"string"!=o||!e[3]||e[3][r]!==t||(u=2),3u?0:u>>>0);for(a||(t=o.createCallback(t,r,3)),pt(n,function(n,r,u){if(a)for(r=t.length,u=Ar(r);r--;)u[r]=n[t[r]]; -else u=t(n,r,u);f[++e]={a:u,b:e,c:n}}),u=f.length,f.sort(a?l:i);u--;)f[u]=f[u].c;return f},o.tap=function(n,t,r){return t.call(r,n),n},o.throttle=function(n,t,r){var e=true,u=true;if(!pr(n))throw new $r;return false===r?e=false:hr(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ft.leading=e,ft.maxWait=+t,ft.trailing=u,or(n,t,ft)},o.times=function(n,t,r){n=-1<(n=+n)?n:0;var e=-1,u=Ar(n);for(t=U(t,r,1);++er?he(0,e+r):ge(r,e-1))+1);e--;)if(n[e]===t)return e; -return-1},o.mixin=kr,o.noConflict=function(){return t._=Kr,this},o.noop=Or,o.now=ze,o.pad=function(n,t,r){n=null==n?"":Pr(n),t|=0;var e=n.length;return e=n.length)return n;var o=r-e.length;if(1>o)return e;if(r=n.slice(0,o),null==u)return r+e;if(vr(u)){if(n.slice(o).search(u)){var a,i,l=n.slice(0,o);for(u.global||(u=Fr(u.source,(z.exec(u)||"")+"g")),u.lastIndex=0;a=u.exec(l);)i=a.index; -r=r.slice(0,null==i?o:i)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),-1n.indexOf(";")?n:n.replace(L,b))},o.uniqueId=function(n){var t=++I;return Pr(null==n?"":n)+t},o.all=Zt,o.any=er,o.detect=Yt,o.findWhere=Yt,o.foldl=nr,o.foldr=tr,o.include=Vt,o.inject=nr,kr(function(){var n={};return _t(o,function(t,r){o.prototype[r]||(n[r]=t)}),n}(),false),o.first=Wt,o.last=$t,o.sample=function(n,t,r){return n&&typeof n.length!="number"?n=br(n):Ce.unindexedChars&&yr(n)&&(n=n.split("")),null==t||r?(t=n?n.length:0,0a(t,l)&&f.push(l);return f}function pt(n,t){var r=-1,e=n,u=n?n.length:0;if(typeof u=="number"&&-1i(s,h)&&((u||f)&&s.push(h),c.push(p))}return c}function Et(n,t){for(var r=-1,e=t(n),u=e.length,o=Ir(u);++rr&&(r=0),s&&(a=[]),p&&(i=[]),h=[n,t,r,e,u,o,a,i],t==x||t==(x|O)?c(h):X(h)) +}function Nt(){var n=(n=o.indexOf)===$t?r:n;return n}function Tt(n){return typeof n=="function"&&Yr.test(Qr.call(n))}function Lt(n){var t,r;return!n||Xr.call(n)!=ot||!te.call(n,"constructor")&&(t=n.constructor,gr(t)&&!(t instanceof t))||!ke.argsClass&&pr(n)||!ke.nodeClass&&h(n)?false:ke.ownLast?(_t(n,function(n,t,e){return r=te.call(e,t),false}),false!==r):(_t(n,function(n,t){r=t}),typeof r=="undefined"||te.call(n,r))}function Wt(n){for(var t=-1,r=br(n),e=r.length,u=[];++ta?0:a)}function $t(n,t,e){var u=n?n.length:0;if(typeof e=="number")e=0>e?ve(0,u+e):e||0;else if(e)return e=Ut(n,t),u&&n[e]===t?e:-1;return r(n,t,e)}function Dt(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,a=0; +for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)a++}else a=null==t||r?1:t;return a=e-a,qt(n,0,0>a?0:a)}function zt(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,a=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)a++}else if(a=t,null==a||r)return n?n[e-1]:w;return a=e-a,qt(n,0>a?0:a)}function Bt(n,t,r){if(typeof t!="number"&&null!=t){var e=-1,u=n?n.length:0,a=0;for(t=o.createCallback(t,r,3);++et?0:t;return qt(n,a)}function qt(n,t,r){var e=-1,u=n?n.length:0; +for(t=+t||0,0>t?t=ve(u+t,0):t>u&&(t=u),r=typeof r=="undefined"?u:+r||0,0>r?r=ve(u+r,0):r>u&&(r=u),u=t>r?0:r-t,r=Ir(u);++e>>1,r(n[e])r?0:r);++tr?ve(0,e+r):r,-1u?0:u>>>0);if(t=o.createCallback(t,r,3),Te(n))for(;++ea&&(a=l)}else t=null==t&&dr(n)?u:o.createCallback(t,r,3),pt(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,a=n) +});return a}function rr(n,t,r,e){var u=3>arguments.length;if(t=o.createCallback(t,e,4),Te(n)){var a=-1,i=n.length;for(u&&i&&(r=n[++a]);++aarguments.length;return t=o.createCallback(t,e,4),ht(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function ur(n){var t=-1,r=n&&n.length,e=Ir(0>r?0:r>>>0);return pt(n,function(n){var r=kt(0,++t);e[t]=e[r],e[r]=n}),e}function or(n,t,r){var e;if(t=o.createCallback(t,r,3),Te(n)){r=-1; +for(var u=n.length;++rarguments.length)return Rt(n,x,null,t);if(n)var r=n[S]?n[S][2]:n.length,e=qt(arguments,2),r=r-e.length;return Rt(n,x|O,r,t,e)}function ir(n,t,r){function e(){c&&Hr(c),a=c=s=w,(g||h!==t)&&(p=qe(),i=n.apply(f,o),c||a||(o=f=null))}function u(){var r=t-(qe()-l);0>=r||r>t?(a&&Hr(a),r=s,a=c=s=w,r&&(p=qe(),i=n.apply(f,o),c||a||(o=f=null))):c=oe(u,r)}var o,a,i,l,f,c,s,p=0,h=false,g=true; +if(!gr(n))throw new zr;if(t=0>t?0:t,true===r)var v=true,g=false;else vr(r)&&(v=r.leading,h="maxWait"in r&&(ve(t,r.maxWait)||0),g="trailing"in r?r.trailing:g);return function(){if(o=arguments,l=qe(),f=this,s=g&&(c||!v),false===h)var r=v&&!c;else{a||v||(p=l);var y=h-(l-p),m=0>=y||y>h;m?(a&&(a=Hr(a)),p=l,i=n.apply(f,o)):a||(a=oe(e,y))}return m&&c?c=Hr(c):c||t===h||(c=oe(u,t)),r&&(m=true,i=n.apply(f,o)),!m||c||a||(o=f=null),i}}function lr(n){if(!gr(n))throw new zr;return function(){return!n.apply(this,arguments) +}}function fr(n,t,r){var e=arguments;if(!n||2>e.length)return n;var u=0,o=e.length,a=typeof r;if("number"!=a&&"string"!=a||!e[3]||e[3][r]!==t||(o=2),3arguments.length)return t;var r=qt(arguments);return r.push(n),fr.apply(null,r)}function sr(n){var t=[];return _t(n,function(n,r){gr(n)&&t.push(r) +}),t.sort()}function pr(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Xr.call(n)==J||false}function hr(n){return n&&typeof n=="object"&&1===n.nodeType&&(ke.nodeClass?-1t||null==n)return r;n=Dr(n);do t%2&&(r+=n),t=Jr(t/2),n+=n;while(t);return r}function jr(n,t,r){var e=typeof n;return"function"==e||null==n?(typeof t=="undefined"||!("prototype"in n))&&n||U(n,t,r):"object"!=e?Sr(n):Or(n) +}function kr(n){return n}function Or(n){n||(n={});var t=We(n),r=t.length,e=t[0],u=n[e];return 1!=r||u!==u||vr(u)?function(e){for(var u=r,o=false;u--&&(o=t[u],o=te.call(e,o)&&Ct(e[o],n[o],null,true)););return o}:function(n){return te.call(n,e)?(n=n[e],u===n&&(0!==u||1/u==1/n)):false}}function Er(n,t,r){var e=true,u=t&&sr(t);t&&(r||u.length)||(null==r&&(r=t),t=n,n=o,u=sr(t)),false===r?e=false:vr(r)&&"chain"in r&&(e=r.chain),r=-1;for(var a=gr(n),i=u?u.length:0;++r--n?t.apply(this,arguments):void 0}},o.assign=fr,o.at=function(n,t){var r=arguments,e=-1,u=vt(r,true,false,1),o=u.length,a=typeof t;for("number"!=a&&"string"!=a||!r[2]||r[2][t]!==n||(o=1),ke.unindexedChars&&dr(n)&&(n=n.split("")),r=Ir(o);++earguments.length?Rt(t,x|C,null,n):Rt(t,x|C|O,null,n,qt(arguments,2))},o.chain=function(n){return n=new a(n),n.__chain__=true,n},o.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t(h?e(h,c):i(f,c))){for(u=o,(h||f).push(c);--u;)if(h=a[u],0>(h?e(h,c):i(t[u],c)))continue n; +p.push(c)}}return p},o.invert=function(n,t){for(var r=-1,e=We(n),u=e.length,o={};++ro?0:o>>>0);return pt(n,function(n){var o=u?t:null!=n&&n[t];a[++e]=o?o.apply(n,r):w}),a},o.keys=We,o.keysIn=br,o.map=nr,o.mapValues=function(n,t,r){var e={};return t=o.createCallback(t,r,3),wt(n,function(n,r,u){e[r]=t(n,r,u)}),e},o.matches=Or,o.max=tr,o.memoize=function(n,t){function r(){var e=r.cache,u=t?t.apply(this,arguments):"_"+arguments[0]; +return te.call(e,u)?e[u]:e[u]=n.apply(this,arguments)}if(!gr(n))throw new zr;return r.cache={},r},o.merge=function(n,t,r){if(!n)return n;var e=arguments,u=e.length,o=typeof r;if("number"!=o&&"string"!=o||!e[3]||e[3][r]!==t||(u=2),3u?0:u>>>0);for(a||(t=o.createCallback(t,r,3)),pt(n,function(n,r,u){if(a)for(r=t.length,u=Ir(r);r--;)u[r]=n[t[r]]; +else u=t(n,r,u);f[++e]={a:u,b:e,c:n}}),u=f.length,f.sort(a?l:i);u--;)f[u]=f[u].c;return f},o.tap=function(n,t,r){return t.call(r,n),n},o.throttle=function(n,t,r){var e=true,u=true;if(!gr(n))throw new zr;return false===r?e=false:vr(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ft.leading=e,ft.maxWait=+t,ft.trailing=u,ir(n,t,ft)},o.times=function(n,t,r){n=-1<(n=+n)?n:0;var e=-1,u=Ir(n);for(t=U(t,r,1);++er?ve(0,e+r):ye(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},o.mixin=Er,o.noConflict=function(){return t._=Vr,this},o.noop=Ar,o.now=qe,o.pad=function(n,t,r){n=null==n?"":Dr(n),t|=0;var e=n.length;return e=n.length)return n;var o=r-e.length;if(1>o)return e;if(r=n.slice(0,o),null==u)return r+e;if(mr(u)){if(n.slice(o).search(u)){var a,i,l=n.slice(0,o);for(u.global||(u=$r(u.source,(z.exec(u)||"")+"g")),u.lastIndex=0;a=u.exec(l);)i=a.index; +r=r.slice(0,null==i?o:i)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),-1n.indexOf(";")?n:n.replace(L,b))},o.uniqueId=function(n){var t=++I;return Dr(null==n?"":n)+t},o.all=Yt,o.any=or,o.detect=Ht,o.findWhere=Ht,o.foldl=rr,o.foldr=er,o.include=Xt,o.inject=rr,Er(function(){var n={};return wt(o,function(t,r){o.prototype[r]||(n[r]=t)}),n}(),false),o.first=Pt,o.last=zt,o.sample=function(n,t,r){return n&&typeof n.length!="number"?n=wr(n):ke.unindexedChars&&dr(n)&&(n=n.split("")),null==t||r?(t=n?n.length:0,0"']/g,F=/<%-([\s\S]+?)%>/g,P=/<%([\s\S]+?)%>/g,$=/<%=([\s\S]+?)%>/g,D=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,B=/^\s*function[ \n\r\t]+\w/,q=/^0[xX]/,U=/[\xC0-\xFF]/g,K=/($^)/,M=/[.*+?^${}()|[\]\\]/g,V=/\bthis\b/,Z=/['\n\r\t\u2028\u2029\\]/g,X=/[A-Z]{2,}|[a-zA-Z0-9][a-z0-9]*/g,Y=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",G="Array Boolean Date Error Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),H="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),J="[object Arguments]",Q="[object Array]",nt="[object Boolean]",tt="[object Date]",rt="[object Error]",et="[object Function]",ut="[object Number]",ot="[object Object]",at="[object RegExp]",it="[object String]",lt={}; lt[et]=false,lt[J]=lt[Q]=lt[nt]=lt[tt]=lt[ut]=lt[ot]=lt[at]=lt[it]=true;var ft={leading:false,maxWait:0,trailing:false},ct={configurable:false,enumerable:false,value:null,writable:false},st={"&":"&","<":"<",">":">",'"':""","'":"'"},pt={"&":"&","<":"<",">":">",""":'"',"'":"'"},ht={\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"AE",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss","\xd7":" ","\xf7":" "},gt={"function":true,object:true},vt={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},yt=gt[typeof window]&&window||this,mt=gt[typeof exports]&&exports&&!exports.nodeType&&exports,gt=gt[typeof module]&&module&&!module.nodeType&&module,dt=mt&>&&typeof global=="object"&&global; !dt||dt.global!==dt&&dt.window!==dt&&dt.self!==dt||(yt=dt);var dt=gt&>.exports===mt&&mt,bt=_();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(yt._=bt, define(function(){return bt})):mt&>?dt?(gt.exports=bt)._=bt:mt._=bt:yt._=bt}).call(this); \ No newline at end of file diff --git a/dist/lodash.js b/dist/lodash.js index dd98160a7..22d078492 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -900,7 +900,7 @@ /** * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. + * for `this` binding. * * @private * @param {*} value The value to clone. @@ -1179,7 +1179,7 @@ /** * The base implementation of `_.forEach` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -1205,7 +1205,7 @@ /** * The base implementation of `_.forEachRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -1228,9 +1228,34 @@ return collection; } + /** + * The base implementation of `find`, 'findLast`, `findKey`, and `findLastKey` + * without support for callback shorthands or `this` binding which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function called per iteration. + * @param {Function} eachFunc The function to iterate over the collection. + * @param {boolean} [retKey=false] A flag to indicate returning the key of + * the found element instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return false; + } + }); + return result; + } + /** * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array} array The array to flatten. @@ -1320,7 +1345,7 @@ /** * The base implementation of `_.forIn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1333,7 +1358,7 @@ /** * The base implementation of `_.forOwn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1346,7 +1371,7 @@ /** * The base implementation of `_.forOwnRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -1524,7 +1549,7 @@ /** * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. + * for `this` binding. * * @private * @param {Object} object The destination object. @@ -1602,7 +1627,7 @@ /** * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. + * or `this` binding. * * @private * @param {Array} array The array to process. @@ -3600,27 +3625,14 @@ * // => { 'name': 'fred', 'age': 40, 'blocked': true } */ function find(collection, predicate, thisArg) { - predicate = lodash.createCallback(predicate, thisArg, 3); - var index = -1, - length = collection ? collection.length : 0; + var length = collection ? collection.length : 0; if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) { - while (++index < length) { - var value = collection[index]; - if (predicate(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result = value; - return false; - } - }); - return result; + var index = findIndex(collection, predicate, thisArg); + return index > -1 ? collection[index] : undefined; } + predicate = lodash.createCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEach); } /** @@ -3644,16 +3656,8 @@ * // => 3 */ function findLast(collection, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseEachRight(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result = value; - return false; - } - }); - return result; + return baseFind(collection, predicate, baseEachRight); } /** @@ -5509,16 +5513,8 @@ * // => 'fred' */ function findKey(object, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseForOwn(object, function(value, key, object) { - if (predicate(value, key, object)) { - result = key; - return false; - } - }); - return result; + return baseFind(object, predicate, baseForOwn, true); } /** @@ -5563,16 +5559,8 @@ * // => 'pebbles' */ function findLastKey(object, predicate, thisArg) { - var result; - predicate = lodash.createCallback(predicate, thisArg, 3); - baseForOwnRight(object, function(value, key, object) { - if (predicate(value, key, object)) { - result = key; - return false; - } - }); - return result; + return baseFind(object, predicate, baseForOwnRight, true); } /** @@ -5891,9 +5879,9 @@ } /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". + * Checks if a collection is empty. A value is considered empty unless it is + * an array, array-like object, or string with a length greater than `0` or + * an object with own properties. * * @static * @memberOf _ @@ -5925,8 +5913,10 @@ var className = toString.call(value), length = value.length; - if ((className == arrayClass || className == stringClass || className == argsClass ) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { + if (length > -1 && length <= maxSafeInteger && ( + (className == arrayClass || className == stringClass || className == argsClass) || + (className == objectClass && isFunction(value.splice)) + )) { return !length; } baseForOwn(value, function() { diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 3d2d1a4fc..ab6581fe8 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -4,61 +4,61 @@ * Build: `lodash modern -o ./dist/lodash.js` */ ;(function(){function n(n,t){return typeof n=="undefined"?t:n}function t(n,t){if(n!==t){if(n>t||typeof n=="undefined")return 1;if(ne||13e||8202r||13r||8202i(t,f)&&l.push(f);return l}function lt(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number"&&-1a(p,h)&&((u||l)&&p.push(h),c.push(s))}return c}function wt(n,t){for(var r=-1,e=t(n),u=e.length,o=kr(u);++rr&&(r=0),p&&(i=[]),s&&(a=[]),h=[n,t,r,e,u,o,i,a],t==w||t==(w|C)?c(h):Z(h))}function Ot(){var n=(n=o.indexOf)===Nt?r:n;return n}function At(n){return typeof n=="function"&&Br.test(Kr.call(n))}function It(n){var t,r;return n&&zr.call(n)==rt&&(Vr.call(n,"constructor")||(t=n.constructor,!ar(t)||t instanceof t))?(st(n,function(n,t){r=t -},sr),typeof r=="undefined"||Vr.call(n,r)):false}function Et(n){for(var t=-1,r=sr(n),e=r.length,u=[];++ti?0:i)}function Nt(n,t,e){var u=n?n.length:0;if(typeof e=="number")e=0>e?oe(0,u+e):e||0;else if(e)return e=$t(n,t),u&&n[e]===t?e:-1;return r(n,t,e)}function St(n,t,r){var e=n?n.length:0; -if(typeof t!="number"&&null!=t){var u=e,i=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)i++}else i=null==t||r?1:t;return i=e-i,Ft(n,0,0>i?0:i)}function Tt(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,i=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)i++}else if(i=t,null==i||r)return n?n[e-1]:_;return i=e-i,Ft(n,0>i?0:i)}function Wt(n,t,r){if(typeof t!="number"&&null!=t){var e=-1,u=n?n.length:0,i=0;for(t=o.createCallback(t,r,3);++et?0:t; -return Ft(n,i)}function Ft(n,t,r){var e=-1,u=n?n.length:0;for(t=+t||0,0>t?t=oe(u+t,0):t>u&&(t=u),r=typeof r=="undefined"?u:+r||0,0>r?r=oe(u+r,0):r>u&&(r=u),u=t>r?0:r-t,r=kr(u);++e>>1,r(n[e])r?0:r);++tr?oe(0,e+r):r,-1=e||e>Lr){var u;return lt(n,function(n,r,e){return t(n,r,e)?(u=n,false):void 0}),u}for(;++ri&&(i=f)}else t=null==t&&pr(n)?u:o.createCallback(t,r,3),lt(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,i=n)});return i}function Yt(n,t,r,e){var u=3>arguments.length; -t=o.createCallback(t,e,4);var i=-1,a=n?n.length:0;if(typeof a=="number"&&-1arguments.length;return t=o.createCallback(t,e,4),ct(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function Ht(n){var t=-1,r=n&&n.length,e=kr(0>r?0:r>>>0);return lt(n,function(n){var r=bt(0,++t);e[t]=e[r],e[r]=n}),e}function Jt(n,t,r){var e;t=o.createCallback(t,r,3),r=-1;var u=n?n.length:0; -if(typeof u=="number"&&-1arguments.length)return Ct(n,w,null,t);if(n)var r=n[I]?n[I][2]:n.length,e=Ft(arguments,2),r=r-e.length;return Ct(n,w|C,r,t,e)}function nr(n,t,r){var e,u,o,i,a,f,l,c=0,p=false,s=true;if(!ar(n))throw new Sr;if(t=0>t?0:t,true===r)var h=true,s=false;else fr(r)&&(h=r.leading,p="maxWait"in r&&(oe(t,r.maxWait)||0),s="trailing"in r?r.trailing:s);var g=function(){var r=t-(Se()-i); -0>=r||r>t?(u&&Ur(u),r=l,u=f=l=_,r&&(c=Se(),o=n.apply(a,e),f||u||(e=a=null))):f=Yr(g,r)},v=function(){f&&Ur(f),u=f=l=_,(s||p!==t)&&(c=Se(),o=n.apply(a,e),f||u||(e=a=null))};return function(){if(e=arguments,i=Se(),a=this,l=s&&(f||!h),false===p)var r=h&&!f;else{u||h||(c=i);var y=p-(i-c),m=0>=y||y>p;m?(u&&(u=Ur(u)),c=i,o=n.apply(a,e)):u||(u=Yr(v,y))}return m&&f?f=Ur(f):f||t===p||(f=Yr(g,t)),r&&(m=true,o=n.apply(a,e)),!m||f||u||(e=a=null),o}}function tr(n){if(!ar(n))throw new Sr;return function(){return!n.apply(this,arguments) -}}function rr(n,t,r){var e=arguments;if(!n||2>e.length)return n;var u=0,o=e.length,i=typeof r;if("number"!=i&&"string"!=i||!e[3]||e[3][r]!==t||(o=2),3arguments.length)return t;var r=Ft(arguments);return r.push(n),rr.apply(null,r)}function ur(n){var t=[];return st(n,function(n,r){ar(n)&&t.push(r) -},sr),t.sort()}function or(n){return n&&typeof n=="object"&&typeof n.length=="number"&&zr.call(n)==G||false}function ir(n){return n&&typeof n=="object"&&1===n.nodeType&&-1t||null==n)return r;n=Nr(n);do t%2&&(r+=n),t=Pr(t/2),n+=n;while(t); -return r}function mr(n,t,r){var e=typeof n;return"function"==e||null==n?(typeof t=="undefined"||!("prototype"in n))&&n||U(n,t,r):"object"!=e?xr(n):br(n)}function dr(n){return n}function br(n){n||(n={});var t=Ce(n),r=t.length,e=t[0],u=n[e];return 1!=r||u!==u||fr(u)?function(e){for(var u=r,o=false;u--&&(o=t[u],o=Vr.call(e,o)&&mt(e[o],n[o],null,true)););return o}:function(n){return Vr.call(n,e)?(n=n[e],u===n&&(0!==u||1/u==1/n)):false}}function _r(n,t,r){var e=true,u=t&&ur(t);t&&(r||u.length)||(null==r&&(r=t),t=n,n=o,u=ur(t)),false===r?e=false:fr(r)&&"chain"in r&&(e=r.chain),r=-1; -for(var i=ar(n),a=u?u.length:0;++r--n?t.apply(this,arguments):void 0 -}},o.assign=rr,o.at=function(n,t){var r=arguments,e=-1,u=pt(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=kr(o);++earguments.length?Ct(t,w|x,null,n):Ct(t,w|x|C,null,n,Ft(arguments,2))},o.chain=function(n){return n=new i(n),n.__chain__=true,n -},o.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t(h?e(h,c):a(l,c))){for(u=o,(h||l).push(c);--u;)if(h=i[u],0>(h?e(h,c):a(t[u],c)))continue n;s.push(c)}}return s},o.invert=function(n,t){for(var r=-1,e=Ce(n),u=e.length,o={};++ro?0:o>>>0); -return lt(n,function(n){var o=u?t:null!=n&&n[t];i[++e]=o?o.apply(n,r):_}),i},o.keys=Ce,o.keysIn=sr,o.map=Zt,o.mapValues=function(n,t,r){var e={};return t=o.createCallback(t,r,3),vt(n,function(n,r,u){e[r]=t(n,r,u)}),e},o.matches=br,o.max=Xt,o.memoize=function(n,t){if(!ar(n))throw new Sr;var r=function(){var e=r.cache,u=t?t.apply(this,arguments):"_"+arguments[0];return Vr.call(e,u)?e[u]:e[u]=n.apply(this,arguments)};return r.cache={},r},o.merge=function(n,t,r){if(!n)return n;var e=arguments,u=e.length,o=typeof r; -if("number"!=o&&"string"!=o||!e[3]||e[3][r]!==t||(u=2),3u?0:u>>>0);for(i||(t=o.createCallback(t,r,3)),lt(n,function(n,r,u){if(i)for(r=t.length,u=kr(r);r--;)u[r]=n[t[r]];else u=t(n,r,u);l[++e]={a:u,b:e,c:n}}),u=l.length,l.sort(i?f:a);u--;)l[u]=l[u].c;return l},o.tap=function(n,t,r){return t.call(r,n),n},o.throttle=function(n,t,r){var e=true,u=true;if(!ar(n))throw new Sr; -return false===r?e=false:fr(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),it.leading=e,it.maxWait=+t,it.trailing=u,nr(n,t,it)},o.times=function(n,t,r){n=-1<(n=+n)?n:0;var e=-1,u=kr(n);for(t=U(t,r,1);++er?oe(0,e+r):ie(r,e-1))+1);e--;)if(n[e]===t)return e; -return-1},o.mixin=_r,o.noConflict=function(){return t._=Dr,this},o.noop=wr,o.now=Se,o.pad=function(n,t,r){n=null==n?"":Nr(n),t|=0;var e=n.length;return e=n.length)return n;var o=r-e.length;if(1>o)return e;if(r=n.slice(0,o),null==u)return r+e;if(cr(u)){if(n.slice(o).search(u)){var i,a,f=n.slice(0,o);for(u.global||(u=Rr(u.source,(z.exec(u)||"")+"g")),u.lastIndex=0;i=u.exec(f);)a=i.index; -r=r.slice(0,null==a?o:a)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),-1n.indexOf(";")?n:n.replace(T,d))},o.uniqueId=function(n){var t=++E;return Nr(null==n?"":n)+t},o.all=Ut,o.any=Jt,o.detect=Kt,o.findWhere=Kt,o.foldl=Yt,o.foldr=Gt,o.include=qt,o.inject=Yt,_r(function(){var n={};return vt(o,function(t,r){o.prototype[r]||(n[r]=t)}),n}(),false),o.first=Rt,o.last=Tt,o.sample=function(n,t,r){return n&&typeof n.length!="number"&&(n=gr(n)),null==t||r?(t=n?n.length:0,0"']/g,F=/<%-([\s\S]+?)%>/g,$=/<%([\s\S]+?)%>/g,D=/<%=([\s\S]+?)%>/g,L=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,B=/^\s*function[ \n\r\t]+\w/,q=/^0[xX]/,U=/[\xC0-\xFF]/g,P=/($^)/,K=/[.*+?^${}()|[\]\\]/g,M=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/g,Z=/[A-Z]{2,}|[a-zA-Z0-9][a-z0-9]*/g,X=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Y="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),G="[object Arguments]",H="[object Array]",J="[object Boolean]",Q="[object Date]",nt="[object Function]",tt="[object Number]",rt="[object Object]",et="[object RegExp]",ut="[object String]",ot={}; -ot[nt]=false,ot[G]=ot[H]=ot[J]=ot[Q]=ot[tt]=ot[rt]=ot[et]=ot[ut]=true;var it={leading:false,maxWait:0,trailing:false},at={configurable:false,enumerable:false,value:null,writable:false},ft={"&":"&","<":"<",">":">",'"':""","'":"'"},lt={"&":"&","<":"<",">":">",""":'"',"'":"'"},ct={\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"AE",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss","\xd7":" ","\xf7":" "},pt={"function":true,object:true},st={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},ht=pt[typeof window]&&window||this,gt=pt[typeof exports]&&exports&&!exports.nodeType&&exports,pt=pt[typeof module]&&module&&!module.nodeType&&module,vt=gt&&pt&&typeof global=="object"&&global; +}return t}function d(n){return ft[n]}function b(t){function o(n){return n&&typeof n=="object"&&!Oe(n)&&Yr.call(n,"__wrapped__")?n:new i(n)}function i(n,t){this.__chain__=!!t,this.__wrapped__=n}function c(n){function t(){if(u){for(var n=-1,i=arguments.length,a=Or(i);++ni(t,l)&&f.push(l);return f}function ft(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number"&&-1a(p,h)&&((u||f)&&p.push(h),c.push(s))}return c}function kt(n,t){for(var r=-1,e=t(n),u=e.length,o=Or(u);++rr&&(r=0),p&&(i=[]),s&&(a=[]),h=[n,t,r,e,u,o,i,a],t==w||t==(w|C)?c(h):Z(h))}function It(){var n=(n=o.indexOf)===Wt?r:n;return n}function Et(n){return typeof n=="function"&&Pr.test(Zr.call(n))}function Rt(n){var t,r;return n&&Ur.call(n)==rt&&(Yr.call(n,"constructor")||(t=n.constructor,!cr(t)||t instanceof t))?(gt(n,function(n,t){r=t +},vr),typeof r=="undefined"||Yr.call(n,r)):false}function Nt(n){for(var t=-1,r=vr(n),e=r.length,u=[];++ti?0:i)}function Wt(n,t,e){var u=n?n.length:0;if(typeof e=="number")e=0>e?le(0,u+e):e||0; +else if(e)return e=zt(n,t),u&&n[e]===t?e:-1;return r(n,t,e)}function Ft(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,i=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)i++}else i=null==t||r?1:t;return i=e-i,Lt(n,0,0>i?0:i)}function $t(n,t,r){var e=n?n.length:0;if(typeof t!="number"&&null!=t){var u=e,i=0;for(t=o.createCallback(t,r,3);u--&&t(n[u],u,n);)i++}else if(i=t,null==i||r)return n?n[e-1]:_;return i=e-i,Lt(n,0>i?0:i)}function Dt(n,t,r){if(typeof t!="number"&&null!=t){var e=-1,u=n?n.length:0,i=0; +for(t=o.createCallback(t,r,3);++et?0:t;return Lt(n,i)}function Lt(n,t,r){var e=-1,u=n?n.length:0;for(t=+t||0,0>t?t=le(u+t,0):t>u&&(t=u),r=typeof r=="undefined"?u:+r||0,0>r?r=le(u+r,0):r>u&&(r=u),u=t>r?0:r-t,r=Or(u);++e>>1,r(n[e])r?0:r);++tr?le(0,e+r):r,-1i&&(i=l)}else t=null==t&&gr(n)?u:o.createCallback(t,r,3),ft(n,function(n,r,u){r=t(n,r,u),r>e&&(e=r,i=n)});return i}function Jt(n,t,r,e){var u=3>arguments.length;t=o.createCallback(t,e,4);var i=-1,a=n?n.length:0; +if(typeof a=="number"&&-1arguments.length;return t=o.createCallback(t,e,4),ct(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function nr(n){var t=-1,r=n&&n.length,e=Or(0>r?0:r>>>0);return ft(n,function(n){var r=wt(0,++t);e[t]=e[r],e[r]=n}),e}function tr(n,t,r){var e;t=o.createCallback(t,r,3),r=-1;var u=n?n.length:0;if(typeof u=="number"&&-1arguments.length)return At(n,w,null,t);if(n)var r=n[I]?n[I][2]:n.length,e=Lt(arguments,2),r=r-e.length;return At(n,w|C,r,t,e)}function er(n,t,r){var e,u,o,i,a,l,f,c=0,p=false,s=true;if(!cr(n))throw new Fr;if(t=0>t?0:t,true===r)var h=true,s=false;else pr(r)&&(h=r.leading,p="maxWait"in r&&(le(t,r.maxWait)||0),s="trailing"in r?r.trailing:s);var g=function(){var r=t-(Fe()-i);0>=r||r>t?(u&&Mr(u),r=f,u=l=f=_,r&&(c=Fe(),o=n.apply(a,e),l||u||(e=a=null))):l=Jr(g,r) +},v=function(){l&&Mr(l),u=l=f=_,(s||p!==t)&&(c=Fe(),o=n.apply(a,e),l||u||(e=a=null))};return function(){if(e=arguments,i=Fe(),a=this,f=s&&(l||!h),false===p)var r=h&&!l;else{u||h||(c=i);var y=p-(i-c),m=0>=y||y>p;m?(u&&(u=Mr(u)),c=i,o=n.apply(a,e)):u||(u=Jr(v,y))}return m&&l?l=Mr(l):l||t===p||(l=Jr(g,t)),r&&(m=true,o=n.apply(a,e)),!m||l||u||(e=a=null),o}}function ur(n){if(!cr(n))throw new Fr;return function(){return!n.apply(this,arguments)}}function or(n,t,r){var e=arguments;if(!n||2>e.length)return n;var u=0,o=e.length,i=typeof r; +if("number"!=i&&"string"!=i||!e[3]||e[3][r]!==t||(o=2),3arguments.length)return t;var r=Lt(arguments);return r.push(n),or.apply(null,r)}function ar(n){var t=[];return gt(n,function(n,r){cr(n)&&t.push(r)},vr),t.sort()}function lr(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ur.call(n)==G||false +}function fr(n){return n&&typeof n=="object"&&1===n.nodeType&&-1t||null==n)return r;n=Wr(n);do t%2&&(r+=n),t=Vr(t/2),n+=n;while(t);return r}function _r(n,t,r){var e=typeof n;return"function"==e||null==n?(typeof t=="undefined"||!("prototype"in n))&&n||U(n,t,r):"object"!=e?Cr(n):xr(n) +}function wr(n){return n}function xr(n){n||(n={});var t=Ie(n),r=t.length,e=t[0],u=n[e];return 1!=r||u!==u||pr(u)?function(e){for(var u=r,o=false;u--&&(o=t[u],o=Yr.call(e,o)&&bt(e[o],n[o],null,true)););return o}:function(n){return Yr.call(n,e)?(n=n[e],u===n&&(0!==u||1/u==1/n)):false}}function kr(n,t,r){var e=true,u=t&&ar(t);t&&(r||u.length)||(null==r&&(r=t),t=n,n=o,u=ar(t)),false===r?e=false:pr(r)&&"chain"in r&&(e=r.chain),r=-1;for(var i=cr(n),a=u?u.length:0;++r--n?t.apply(this,arguments):void 0 +}},o.assign=or,o.at=function(n,t){var r=arguments,e=-1,u=st(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=Or(o);++earguments.length?At(t,w|x,null,n):At(t,w|x|C,null,n,Lt(arguments,2))},o.chain=function(n){return n=new i(n),n.__chain__=true,n +},o.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t(h?e(h,c):a(f,c))){for(u=o,(h||f).push(c);--u;)if(h=i[u],0>(h?e(h,c):a(t[u],c)))continue n;s.push(c)}}return s},o.invert=function(n,t){for(var r=-1,e=Ie(n),u=e.length,o={};++ro?0:o>>>0); +return ft(n,function(n){var o=u?t:null!=n&&n[t];i[++e]=o?o.apply(n,r):_}),i},o.keys=Ie,o.keysIn=vr,o.map=Gt,o.mapValues=function(n,t,r){var e={};return t=o.createCallback(t,r,3),mt(n,function(n,r,u){e[r]=t(n,r,u)}),e},o.matches=xr,o.max=Ht,o.memoize=function(n,t){if(!cr(n))throw new Fr;var r=function(){var e=r.cache,u=t?t.apply(this,arguments):"_"+arguments[0];return Yr.call(e,u)?e[u]:e[u]=n.apply(this,arguments)};return r.cache={},r},o.merge=function(n,t,r){if(!n)return n;var e=arguments,u=e.length,o=typeof r; +if("number"!=o&&"string"!=o||!e[3]||e[3][r]!==t||(u=2),3u?0:u>>>0);for(i||(t=o.createCallback(t,r,3)),ft(n,function(n,r,u){if(i)for(r=t.length,u=Or(r);r--;)u[r]=n[t[r]];else u=t(n,r,u);f[++e]={a:u,b:e,c:n}}),u=f.length,f.sort(i?l:a);u--;)f[u]=f[u].c;return f},o.tap=function(n,t,r){return t.call(r,n),n},o.throttle=function(n,t,r){var e=true,u=true;if(!cr(n))throw new Fr; +return false===r?e=false:pr(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),it.leading=e,it.maxWait=+t,it.trailing=u,er(n,t,it)},o.times=function(n,t,r){n=-1<(n=+n)?n:0;var e=-1,u=Or(n);for(t=U(t,r,1);++er?le(0,e+r):fe(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},o.mixin=kr,o.noConflict=function(){return t._=Br,this},o.noop=jr,o.now=Fe,o.pad=function(n,t,r){n=null==n?"":Wr(n),t|=0;var e=n.length;return e=n.length)return n;var o=r-e.length;if(1>o)return e;if(r=n.slice(0,o),null==u)return r+e;if(hr(u)){if(n.slice(o).search(u)){var i,a,l=n.slice(0,o);for(u.global||(u=Tr(u.source,(z.exec(u)||"")+"g")),u.lastIndex=0;i=u.exec(l);)a=i.index; +r=r.slice(0,null==a?o:a)}}else n.indexOf(u,o)!=o&&(u=r.lastIndexOf(u),-1n.indexOf(";")?n:n.replace(T,d))},o.uniqueId=function(n){var t=++E;return Wr(null==n?"":n)+t},o.all=Mt,o.any=tr,o.detect=Zt,o.findWhere=Zt,o.foldl=Jt,o.foldr=Qt,o.include=Kt,o.inject=Jt,kr(function(){var n={};return mt(o,function(t,r){o.prototype[r]||(n[r]=t)}),n}(),false),o.first=Tt,o.last=$t,o.sample=function(n,t,r){return n&&typeof n.length!="number"&&(n=mr(n)),null==t||r?(t=n?n.length:0,0"']/g,F=/<%-([\s\S]+?)%>/g,$=/<%([\s\S]+?)%>/g,D=/<%=([\s\S]+?)%>/g,L=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,B=/^\s*function[ \n\r\t]+\w/,q=/^0[xX]/,U=/[\xC0-\xFF]/g,P=/($^)/,K=/[.*+?^${}()|[\]\\]/g,M=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/g,Z=/[A-Z]{2,}|[a-zA-Z0-9][a-z0-9]*/g,X=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Y="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),G="[object Arguments]",H="[object Array]",J="[object Boolean]",Q="[object Date]",nt="[object Function]",tt="[object Number]",rt="[object Object]",et="[object RegExp]",ut="[object String]",ot={}; +ot[nt]=false,ot[G]=ot[H]=ot[J]=ot[Q]=ot[tt]=ot[rt]=ot[et]=ot[ut]=true;var it={leading:false,maxWait:0,trailing:false},at={configurable:false,enumerable:false,value:null,writable:false},lt={"&":"&","<":"<",">":">",'"':""","'":"'"},ft={"&":"&","<":"<",">":">",""":'"',"'":"'"},ct={\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"AE",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss","\xd7":" ","\xf7":" "},pt={"function":true,object:true},st={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},ht=pt[typeof window]&&window||this,gt=pt[typeof exports]&&exports&&!exports.nodeType&&exports,pt=pt[typeof module]&&module&&!module.nodeType&&module,vt=gt&&pt&&typeof global=="object"&&global; !vt||vt.global!==vt&&vt.window!==vt&&vt.self!==vt||(ht=vt);var vt=pt&&pt.exports===gt&>,yt=b();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(ht._=yt, define(function(){return yt})):gt&&pt?vt?(pt.exports=yt)._=yt:gt._=yt:ht._=yt}).call(this); \ No newline at end of file diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index c12b9bf53..c41fa5136 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -561,7 +561,7 @@ /** * The base implementation of `_.forEach` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -587,7 +587,7 @@ /** * The base implementation of `_.forEachRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. @@ -610,9 +610,34 @@ return collection; } + /** + * The base implementation of `find`, 'findLast`, `findKey`, and `findLastKey` + * without support for callback shorthands or `this` binding which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function called per iteration. + * @param {Function} eachFunc The function to iterate over the collection. + * @param {boolean} [retKey=false] A flag to indicate returning the key of + * the found element instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return breakIndicator; + } + }); + return result; + } + /** * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Array} array The array to flatten. @@ -702,7 +727,7 @@ /** * The base implementation of `_.forIn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -715,7 +740,7 @@ /** * The base implementation of `_.forOwn` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -728,7 +753,7 @@ /** * The base implementation of `_.forOwnRight` without support for callback - * shorthands or `thisArg` binding. + * shorthands or `this` binding. * * @private * @param {Object} object The object to iterate over. @@ -875,7 +900,7 @@ /** * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. + * or `this` binding. * * @private * @param {Array} array The array to process. @@ -1187,6 +1212,60 @@ */ var drop = rest; + /** + * This method is like `_.find` except that it returns the index of the first + * element the predicate returns truthy for, instead of the element itself. + * + * If a property name is provided for `predicate` the created "_.pluck" style + * callback will return the property value of the given element. + * + * If an object is provided for `predicate` the created "_.where" style callback + * will return `true` for elements that have the properties of the given object, + * else `false`. + * + * @static + * @memberOf _ + * @category Arrays + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=identity] The function called + * per iteration. If a property name or object is provided it will be used + * to create a "_.pluck" or "_.where" style callback, respectively. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var characters = [ + * { 'name': 'barney', 'age': 36 }, + * { 'name': 'fred', 'age': 40, 'blocked': true }, + * { 'name': 'pebbles', 'age': 1 } + * ]; + * + * _.findIndex(characters, function(chr) { + * return chr.age < 20; + * }); + * // => 2 + * + * // using "_.where" callback shorthand + * _.findIndex(characters, { 'age': 36 }); + * // => 0 + * + * // using "_.pluck" callback shorthand + * _.findIndex(characters, 'blocked'); + * // => 1 + */ + function findIndex(array, predicate, thisArg) { + var index = -1, + length = array ? array.length : 0; + + predicate = createCallback(predicate, thisArg, 3); + while (++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + /** * Gets the first element of `array`. * @@ -2111,27 +2190,14 @@ * // => { 'name': 'fred', 'age': 40, 'blocked': true } */ function find(collection, predicate, thisArg) { - predicate = createCallback(predicate, thisArg, 3); - var index = -1, - length = collection ? collection.length : 0; + var length = collection ? collection.length : 0; if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) { - while (++index < length) { - var value = collection[index]; - if (predicate(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result = value; - return breakIndicator; - } - }); - return result; + var index = findIndex(collection, predicate, thisArg); + return index > -1 ? collection[index] : undefined; } + predicate = createCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEach); } /** @@ -3865,9 +3931,9 @@ } /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". + * Checks if a collection is empty. A value is considered empty unless it is + * an array, array-like object, or string with a length greater than `0` or + * an object with own properties. * * @static * @memberOf _ diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 3f01e0bb1..74f9a4259 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -3,38 +3,38 @@ * Lo-Dash 2.4.1 (Custom Build) lodash.com/license | Underscore.js 1.6.0 underscorejs.org/LICENSE * Build: `lodash underscore -o ./dist/lodash.underscore.js` */ -;(function(){function n(n,r,t){t=(+t||0)-1;for(var e=n?n.length:0;++te||typeof t=="undefined"){t=1;break n}if(tu(r,i)&&o.push(i)}return o}function p(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number"&&-1o(f,c)&&(t&&f.push(c),i.push(a))}return i}function m(n,r){return function(t,e,u){var o=r?[[],[]]:{}; -e=Z(e,u,3),u=-1;var i=t?t.length:0;if(typeof i=="number"&&-1r?0:r)}function x(r,t,e){var u=r?r.length:0;if(typeof e=="number")e=0>e?Lr(0,u+e):e||0;else if(e)return e=E(r,t),u&&r[e]===t?e:-1;return n(r,t,e)}function A(n,r,t){return T(n,null==r||t?1:0>r?0:r)}function T(n,r,t){var e=-1,u=n?n.length:0;for(r=+r||0,0>r?r=Lr(u+r,0):r>u&&(r=u),t=typeof t=="undefined"?u:+t||0,0>t?t=Lr(u+t,0):t>u&&(t=u),u=r>t?0:t-r,t=Array(u);++e>>1,t(n[e])=e||e>Mr){var u;return p(n,function(n,t,e){return r(n,t,e)?(u=n,fr):void 0}),u}for(;++tu&&(u=t); -else r=Z(r,t,3),p(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function R(n,r,t,e){var u=3>arguments.length;r=Z(r,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number"&&-1arguments.length;return r=Z(r,e,4),s(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function I(n){var r=-1,t=n&&n.length,e=Array(0>t?0:t>>>0);return p(n,function(n){var t;t=++r,t=0+Dr(Yr()*(t-0+1)),e[r]=e[t],e[t]=n -}),e}function D(n,r,t){var e;r=Z(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"&&-1arguments.length?_(n,or,null,r):_(n,or|ir,null,r,T(arguments,2))}function z(n,r,t){var e,u,o,i,f,a,c,l=0,p=false,s=true;if(!H(n))throw new TypeError;if(r=0>r?0:r,true===t)var h=true,s=false;else J(t)&&(h=t.leading,p="maxWait"in t&&(Lr(r,t.maxWait)||0),s="trailing"in t?t.trailing:s);var g=function(){var t=r-(ct()-i); -0>=t||t>r?(u&&clearTimeout(u),t=c,u=a=c=ur,t&&(l=ct(),o=n.apply(f,e),a||u||(e=f=null))):a=setTimeout(g,t)},v=function(){a&&clearTimeout(a),u=a=c=ur,(s||p!==r)&&(l=ct(),o=n.apply(f,e),a||u||(e=f=null))};return function(){if(e=arguments,i=ct(),f=this,c=s&&(a||!h),false===p)var t=h&&!a;else{u||h||(l=i);var y=p-(i-l),m=0>=y||y>p;m?(u&&(u=clearTimeout(u)),l=i,o=n.apply(f,e)):u||(u=setTimeout(v,y))}return m&&a?a=clearTimeout(a):a||r===p||(a=setTimeout(g,r)),t&&(m=true,o=n.apply(f,e)),!m||a||u||(e=f=null),o} -}function C(n){if(!H(n))throw new TypeError;return function(){return!n.apply(this,arguments)}}function P(n,r,t){if(!n)return n;var e=arguments,u=0,o=e.length,i=typeof t;for("number"!=i&&"string"!=i||!e[3]||e[3][t]!==r||(o=2);++u"']/g,pr=/($^)/,sr=/[.*+?^${}()|[\]\\]/g,hr=/['\n\r\t\u2028\u2029\\]/g,gr="[object Arguments]",vr="[object Array]",yr="[object Boolean]",mr="[object Date]",_r="[object Number]",br="[object Object]",dr="[object RegExp]",wr="[object String]",jr={"&":"&","<":"<",">":">",'"':""","'":"'"},xr={"&":"&","<":"<",">":">",""":'"',"'":"'"},Ar={"function":true,object:true},Tr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Er=Ar[typeof window]&&window||this,Or=Ar[typeof exports]&&exports&&!exports.nodeType&&exports,Sr=Ar[typeof module]&&module&&!module.nodeType&&module,kr=Or&&Sr&&typeof global=="object"&&global; -!kr||kr.global!==kr&&kr.window!==kr&&kr.self!==kr||(Er=kr);var Nr=Sr&&Sr.exports===Or&&Or,qr=Array.prototype,Fr=Object.prototype,Br=Er._,Mr=Math.pow(2,53)-1,Rr=Fr.toString,$r=RegExp("^"+(null==Rr?"":(Rr+"").replace(sr,"\\$&")).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ir=Math.ceil,Dr=Math.floor,Wr=Function.prototype.toString,zr=Fr.hasOwnProperty,Cr=qr.push,Pr=Fr.propertyIsEnumerable,Ur=qr.splice,Vr=d(Vr=Object.create)&&Vr,Gr=d(Gr=Array.isArray)&&Gr,Hr=Er.isFinite,Jr=Er.isNaN,Kr=d(Kr=Object.keys)&&Kr,Lr=Math.max,Qr=Math.min,Xr=d(Xr=Date.now)&&Xr,Yr=Math.random; -i.prototype=o.prototype;var Zr={};!function(){var n={0:1,length:1};Zr.spliceObjects=(Ur.call(n,0,1),!n[0])}(1),o.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Vr||(f=function(){function n(){}return function(r){if(J(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Er.Object()}}());var nt=A,rt=m(function(n,r,t){zr.call(n,t)?n[t]++:n[t]=1}),tt=m(function(n,r,t){zr.call(n,t)?n[t].push(r):n[t]=[r]}),et=m(function(n,r,t){n[t]=r -}),ut=m(function(n,r,t){n[t?0:1].push(r)},true),ot=B,it=N;G(arguments)||(G=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&zr.call(n,"callee")&&!Pr.call(n,"callee")||false});var ft=Gr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Rr.call(n)==vr||false};H(/x/)&&(H=function(n){return typeof n=="function"&&"[object Function]"==Rr.call(n)});var at=Kr?function(n){return J(n)?Kr(n):[]}:w,ct=Xr||function(){return(new Date).getTime()};o.after=function(n,r){if(!H(r))throw new TypeError; -return function(){return 1>--n?r.apply(this,arguments):void 0}},o.bind=W,o.bindAll=function(n){for(var r=1r?0:r)},o.intersection=function(){for(var n=[],r=-1,t=arguments.length;++ri(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},o.invert=function(n){for(var r=-1,t=at(n),e=t.length,u={};++ro?0:o>>>0); -return p(n,function(n){var o=u?r:null!=n&&n[r];i[++e]=o?o.apply(n,t):ur}),i},o.keys=at,o.map=B,o.matches=rr,o.max=M,o.memoize=function(n,r){var t={};return function(){var e=r?r.apply(this,arguments):"_"+arguments[0];return zr.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},o.min=function(n,r,t){var e=1/0,u=e,o=typeof r;"number"!=o&&"string"!=o||!t||t[r]!==n||(r=null);var o=-1,i=n?n.length:0;if(null==r&&typeof i=="number"&&-1o?0:o>>>0);for(t=Z(t,e,3),p(n,function(n,r,e){i[++u]={a:t(n,r,e),b:u,c:n}}),o=i.length,i.sort(r);o--;)i[o]=i[o].c;return i},o.tap=function(n,r){return r(n),n},o.throttle=function(n,r,t){var e=true,u=true;if(!H(n))throw new TypeError;return false===t?e=false:J(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),z(n,r,{leading:e,maxWait:r,trailing:u}) -},o.times=function(n,r,t){n=-1<(n=+n)?n:0;var e=-1,u=Array(n);for(r=a(r,t,1);++er?0:r);++nt?Lr(0,e+t):Qr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},o.mixin=tr,o.noConflict=function(){return Er._=Br,this},o.now=ct,o.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Dr(Yr()*(r-n+1))},o.reduce=R,o.reduceRight=$,o.result=function(n,r){if(null!=n){var t=n[r];return H(t)?n[r]():t}},o.size=function(n){var r=n?n.length:0;return typeof r=="number"&&-1n.indexOf(";")?n:n.replace(cr,u))},o.uniqueId=function(n){var r=++ar+"";return n?n+r:r},o.all=k,o.any=D,o.detect=q,o.findWhere=q,o.foldl=R,o.foldr=$,o.include=S,o.inject=R,o.first=j,o.last=function(n,r,t){var e=n?n.length:0;return null==r||t?n?n[e-1]:ur:(r=e-r,T(n,0>r?0:r))},o.sample=function(n,r,t){return n&&typeof n.length!="number"&&(n=Y(n)),null==r||t?(r=n?n.length:0,0e||typeof t=="undefined"){t=1;break n}if(tu(r,i)&&o.push(i)}return o}function p(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number"&&-1o(f,c)&&(t&&f.push(c),i.push(a)) +}return i}function _(n,r){return function(t,e,u){var o=r?[[],[]]:{};e=nr(e,u,3),u=-1;var i=t?t.length:0;if(typeof i=="number"&&-1r?0:r)}function A(r,t,e){var u=r?r.length:0;if(typeof e=="number")e=0>e?Qr(0,u+e):e||0;else if(e)return e=O(r,t),u&&r[e]===t?e:-1;return n(r,t,e)}function T(n,r,t){return E(n,null==r||t?1:0>r?0:r)}function E(n,r,t){var e=-1,u=n?n.length:0;for(r=+r||0,0>r?r=Qr(u+r,0):r>u&&(r=u),t=typeof t=="undefined"?u:+t||0,0>t?t=Qr(u+t,0):t>u&&(t=u),u=r>t?0:t-r,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=nr(r,t,3),p(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function $(n,r,t,e){var u=3>arguments.length;r=nr(r,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number"&&-1arguments.length;return r=nr(r,e,4),s(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function D(n){var r=-1,t=n&&n.length,e=Array(0>t?0:t>>>0); +return p(n,function(n){var t;t=++r,t=0+Wr(Zr()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function W(n,r,t){var e;r=nr(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"&&-1arguments.length?b(n,ir,null,r):b(n,ir|fr,null,r,E(arguments,2))}function C(n,r,t){var e,u,o,i,f,a,c,l=0,p=false,s=true;if(!J(n))throw new TypeError;if(r=0>r?0:r,true===t)var h=true,s=false;else K(t)&&(h=t.leading,p="maxWait"in t&&(Qr(r,t.maxWait)||0),s="trailing"in t?t.trailing:s); +var g=function(){var t=r-(lt()-i);0>=t||t>r?(u&&clearTimeout(u),t=c,u=a=c=or,t&&(l=lt(),o=n.apply(f,e),a||u||(e=f=null))):a=setTimeout(g,t)},v=function(){a&&clearTimeout(a),u=a=c=or,(s||p!==r)&&(l=lt(),o=n.apply(f,e),a||u||(e=f=null))};return function(){if(e=arguments,i=lt(),f=this,c=s&&(a||!h),false===p)var t=h&&!a;else{u||h||(l=i);var y=p-(i-l),m=0>=y||y>p;m?(u&&(u=clearTimeout(u)),l=i,o=n.apply(f,e)):u||(u=setTimeout(v,y))}return m&&a?a=clearTimeout(a):a||r===p||(a=setTimeout(g,r)),t&&(m=true,o=n.apply(f,e)),!m||a||u||(e=f=null),o +}}function P(n){if(!J(n))throw new TypeError;return function(){return!n.apply(this,arguments)}}function U(n,r,t){if(!n)return n;var e=arguments,u=0,o=e.length,i=typeof t;for("number"!=i&&"string"!=i||!e[3]||e[3][t]!==r||(o=2);++u"']/g,sr=/($^)/,hr=/[.*+?^${}()|[\]\\]/g,gr=/['\n\r\t\u2028\u2029\\]/g,vr="[object Arguments]",yr="[object Array]",mr="[object Boolean]",_r="[object Date]",br="[object Number]",dr="[object Object]",wr="[object RegExp]",jr="[object String]",xr={"&":"&","<":"<",">":">",'"':""","'":"'"},Ar={"&":"&","<":"<",">":">",""":'"',"'":"'"},Tr={"function":true,object:true},Er={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Or=Tr[typeof window]&&window||this,Sr=Tr[typeof exports]&&exports&&!exports.nodeType&&exports,kr=Tr[typeof module]&&module&&!module.nodeType&&module,Nr=Sr&&kr&&typeof global=="object"&&global; +!Nr||Nr.global!==Nr&&Nr.window!==Nr&&Nr.self!==Nr||(Or=Nr);var qr=kr&&kr.exports===Sr&&Sr,Fr=Array.prototype,Br=Object.prototype,Mr=Or._,Rr=Math.pow(2,53)-1,$r=Br.toString,Ir=RegExp("^"+(null==$r?"":($r+"").replace(hr,"\\$&")).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dr=Math.ceil,Wr=Math.floor,zr=Function.prototype.toString,Cr=Br.hasOwnProperty,Pr=Fr.push,Ur=Br.propertyIsEnumerable,Vr=Fr.splice,Gr=w(Gr=Object.create)&&Gr,Hr=w(Hr=Array.isArray)&&Hr,Jr=Or.isFinite,Kr=Or.isNaN,Lr=w(Lr=Object.keys)&&Lr,Qr=Math.max,Xr=Math.min,Yr=w(Yr=Date.now)&&Yr,Zr=Math.random; +i.prototype=o.prototype;var nt={};!function(){var n={0:1,length:1};nt.spliceObjects=(Vr.call(n,0,1),!n[0])}(1),o.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Gr||(f=function(){function n(){}return function(r){if(K(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Or.Object()}}());var rt=T,tt=_(function(n,r,t){Cr.call(n,t)?n[t]++:n[t]=1}),et=_(function(n,r,t){Cr.call(n,t)?n[t].push(r):n[t]=[r]}),ut=_(function(n,r,t){n[t]=r +}),ot=_(function(n,r,t){n[t?0:1].push(r)},true),it=M,ft=q;H(arguments)||(H=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Cr.call(n,"callee")&&!Ur.call(n,"callee")||false});var at=Hr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&$r.call(n)==yr||false};J(/x/)&&(J=function(n){return typeof n=="function"&&"[object Function]"==$r.call(n)});var ct=Lr?function(n){return K(n)?Lr(n):[]}:j,lt=Yr||function(){return(new Date).getTime()};o.after=function(n,r){if(!J(r))throw new TypeError; +return function(){return 1>--n?r.apply(this,arguments):void 0}},o.bind=z,o.bindAll=function(n){for(var r=1r?0:r)},o.intersection=function(){for(var n=[],r=-1,t=arguments.length;++ri(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},o.invert=function(n){for(var r=-1,t=ct(n),e=t.length,u={};++ro?0:o>>>0); +return p(n,function(n){var o=u?r:null!=n&&n[r];i[++e]=o?o.apply(n,t):or}),i},o.keys=ct,o.map=M,o.matches=tr,o.max=R,o.memoize=function(n,r){var t={};return function(){var e=r?r.apply(this,arguments):"_"+arguments[0];return Cr.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},o.min=function(n,r,t){var e=1/0,u=e,o=typeof r;"number"!=o&&"string"!=o||!t||t[r]!==n||(r=null);var o=-1,i=n?n.length:0;if(null==r&&typeof i=="number"&&-1o?0:o>>>0);for(t=nr(t,e,3),p(n,function(n,r,e){i[++u]={a:t(n,r,e),b:u,c:n}}),o=i.length,i.sort(r);o--;)i[o]=i[o].c;return i},o.tap=function(n,r){return r(n),n},o.throttle=function(n,r,t){var e=true,u=true;if(!J(n))throw new TypeError;return false===t?e=false:K(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),C(n,r,{leading:e,maxWait:r,trailing:u}) +},o.times=function(n,r,t){n=-1<(n=+n)?n:0;var e=-1,u=Array(n);for(r=a(r,t,1);++er?0:r);++nt?Qr(0,e+t):Xr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},o.mixin=er,o.noConflict=function(){return Or._=Mr,this},o.now=lt,o.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Wr(Zr()*(r-n+1))},o.reduce=$,o.reduceRight=I,o.result=function(n,r){if(null!=n){var t=n[r];return J(t)?n[r]():t}},o.size=function(n){var r=n?n.length:0;return typeof r=="number"&&-1n.indexOf(";")?n:n.replace(lr,u))},o.uniqueId=function(n){var r=++cr+"";return n?n+r:r},o.all=N,o.any=W,o.detect=F,o.findWhere=F,o.foldl=$,o.foldr=I,o.include=k,o.inject=$,o.first=x,o.last=function(n,r,t){var e=n?n.length:0;return null==r||t?n?n[e-1]:or:(r=e-r,E(n,0>r?0:r))},o.sample=function(n,r,t){return n&&typeof n.length!="number"&&(n=Z(n)),null==r||t?(r=n?n.length:0,0