diff --git a/dist/lodash.compat.js b/dist/lodash.compat.js index 925e2469b..371d8c99f 100644 --- a/dist/lodash.compat.js +++ b/dist/lodash.compat.js @@ -1056,7 +1056,8 @@ function baseBind(data) { var func = data[0], thisArg = data[3], - partialArgs = data[4]; + partialArgs = data[4], + partialHolders = data[6]; function bound() { // `Function#bind` spec @@ -1065,8 +1066,7 @@ // avoid `arguments` object deoptimizations by using `slice` instead // of `Array.prototype.slice.call` and not assigning `arguments` to a // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } // mimic the constructor's `return` behavior // http://es5.github.io/#x13.2.2 @@ -1271,7 +1271,9 @@ arity = data[2], thisArg = data[3], partialArgs = data[4], - partialRightArgs = data[5]; + partialRightArgs = data[5], + partialHolders = data[6], + partialRightHolders = data[7]; var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, @@ -1282,23 +1284,22 @@ function bound() { var thisBinding = isBind ? thisArg : this; if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } + if (partialRightArgs) { + args = composeArgsRight(partialRightArgs, partialRightHolders, args || arguments); + } + if (isCurry) { var argsLength = arguments.length; - if (isCurry && argsLength < arity) { + if (argsLength < arity) { + args || (args = slice(arguments)); bitmask |= PARTIAL_FLAG; bitmask &= ~PARTIAL_RIGHT_FLAG if (!isCurryBound) { bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); } var newArity = nativeMax(0, arity - argsLength); - return baseCreateWrapper([func, bitmask, newArity, thisArg, args]); + return baseCreateWrapper([func, bitmask, newArity, thisArg, args, null, []]); } } args || (args = arguments); @@ -1374,7 +1375,7 @@ } /** - * The base implementation of `_.forEachEach` without support for callback + * The base implementation of `_.forEachRight` without support for callback * shorthands or `thisArg` binding. * * @private @@ -1783,6 +1784,68 @@ return result; } + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} partialArg An array of arguments to prepend to those provided. + * @param {Array} partialHolders An array of `partialArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgs(partialArgs, partialHolders, args) { + var index = -1, + length = partialHolders.length, + leftIndex = -1, + leftLength = partialArgs.length, + argsLength = nativeMax(args.length - length, 0), + result = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partialArgs[leftIndex]; + } + while (++index < length) { + result[partialHolders[index]] = args[index]; + } + while (length < argsLength) { + result[leftIndex++] = args[length++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} partialRightArg An array of arguments to append to those provided. + * @param {Array} partialHolders An array of `partialRightArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgsRight(partialRightArgs, partialRightHolders, args) { + var index = -1, + length = partialRightHolders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - length, 0), + rightIndex = -1, + rightLength = partialRightArgs.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var pad = argsIndex; + while (++rightIndex < rightLength) { + result[pad + rightIndex] = partialRightArgs[rightIndex]; + } + while (++index < length) { + result[pad + partialHolders[index]] = args[argsIndex++]; + } + return result; + } + /** * Creates a function that aggregates a collection, creating an object or * array composed from the results of running each element of the collection @@ -1855,9 +1918,11 @@ * provided to the new function. * @param {Array} [partialRightArgs] An array of arguments to append to those * provided to the new function. + * @param {Array} [partialHolders] An array of `partialArgs` placeholder indexes. + * @param {Array} [partialRightArgs] An array of `partialRightArgs` placeholder indexes. * @returns {Function} Returns the new function. */ - function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs) { + function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders) { var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isPartial = bitmask & PARTIAL_FLAG, @@ -1925,8 +1990,14 @@ } else if (arity < 0) { arity = 0; } + if (isPartial) { + partialHolders = getHolders(partialArgs); + } + if (isPartialRight) { + partialRightHolders = getHolders(partialRightArgs); + } // fast path for `_.bind` - data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs]; + data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders]; return (bitmask == BIND_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) ? baseBind(data) : baseCreateWrapper(data); @@ -1960,6 +2031,26 @@ ); } + /** + * Finds the indexes of all placeholder elements in a given array. + * + * @private + * @param {Array} array The array to inspect. + * @returns {Array} Returns a new array of placeholder indexes. + */ + function getHolders(array) { + var index = -1, + length = array.length, + result = []; + + while (++index < length) { + if (array[index] === lodash) { + result.push(index); + } + } + return result; + } + /** * Gets the appropriate "indexOf" function. If the `_.indexOf` method is * customized this method returns the custom method, otherwise it returns @@ -4873,7 +4964,7 @@ } var delayed = function() { var remaining = wait - (now() - stamp); - if (remaining <= 0) { + if (remaining <= 0 || remaining > wait) { if (maxTimeoutId) { clearTimeout(maxTimeoutId); } @@ -4918,7 +5009,7 @@ lastCalled = stamp; } var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; + isCalled = remaining <= 0 || remaining > maxWait; if (isCalled) { if (maxTimeoutId) { @@ -5117,8 +5208,8 @@ } /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. * * Note: This method does not set the `length` property of partially applied * functions. diff --git a/dist/lodash.compat.min.js b/dist/lodash.compat.min.js index 0c1fe743a..42e37e899 100644 --- a/dist/lodash.compat.min.js +++ b/dist/lodash.compat.min.js @@ -4,61 +4,62 @@ * Build: `lodash -o ./dist/lodash.compat.js` */ ;(function(){function n(n,t){if(n!==t){if(n>t||typeof n=="undefined")return 1;if(ne||13e||8202r||13r||8202=S&&(o=r,e=ce(e));++uo(e,l)&&i.push(l)}return i}function ht(n,t){var r=-1,e=n,u=n?n.length:0; -if(typeof u=="number")for(fe.unindexedChars&&lr(e)&&(e=e.split(""));++r=S,f=[];if(l)var p=ce(),a=r;else p=u?c():f;for(;++oa(p,h))&&((u||l)&&p.push(h),f.push(g)) -}return!l&&u&&s(p),f}function kt(n,t){return function(r,e,o){var a=t?[[],[]]:{};if(e=u.createCallback(e,o,3),be(r)){o=-1;for(var i=r.length;++or&&(r=0),c=[n,t,r,e,u,o],t==j||t==(j|O)?m(c):st(c)) -}function Et(n){n.d=Y;var t=br,r="return function("+n.a+"){",e="var r="+n.b+";if(!j(p)){return r}";fe.nonEnumArgs&&(e+="var m=p.length;if(m&&i(p)){l=-1;while(++lu;u++)e+="l='"+n.d[u]+"';if((!(k&&n[l])&&g.call(p,l))",n.e||(e+="||(!n[l]&&p[l]!==q[l])"),e+="){"+n.c+"}"; -e+="}"}return t("e,f,g,i,j,q,o,u,v,w",r+(e+"return r;")+"}")(et,Er,Br,Nt,ar,Sr,le,lt,Ar,Rr)}function St(){var n=(n=u.indexOf)===Tt?t:n;return n}function At(n){return typeof n=="function"&&Tr.test($r.call(n))}function It(n){var t,r;return!n||Rr.call(n)!=at||!Br.call(n,"constructor")&&(t=n.constructor,or(t)&&!(t instanceof t))||!fe.argsClass&&Nt(n)||!fe.nodeClass&&p(n)?false:fe.ownLast?(se(n,function(n,t,e){return r=Br.call(e,t),false}),false!==r):(se(n,function(n,t){r=t}),typeof r=="undefined"||Br.call(n,r)) -}function Nt(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Rr.call(n)==Z||false}function Rt(n,t,r){var e=0,o=n?n.length:0;if(typeof t!="number"&&null!=t){var a=-1;for(t=u.createCallback(t,r,3);++ae?Zr(0,u+e):e||0;else if(e)return e=Ft(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function Pt(n,t,r){if(typeof t!="number"&&null!=t){var e=0,o=-1,a=n?n.length:0; -for(t=u.createCallback(t,r,3);++ot?t=Zr(u+t,0):t>u&&(t=u),typeof r=="undefined"?r=u:0>r?r=Zr(u+r,0):r>u&&(r=u),u=r-t||0,r=yr(u);++e>>1,r(n[e])r?0:r);++t=e)return false;if(typeof n=="string"||!be(n)&&lr(n))return Xr?Xr.call(n,t,r):-1r?Zr(0,e+r):r)||0,-1a&&(a=l)}else t=null==t&&lr(n)?e:u.createCallback(t,r,3),ht(n,function(n,r,e){r=t(n,r,e),r>o&&(o=r,a=n)});return a}function Ht(n,t,r,e){var o=3>arguments.length;if(t=u.createCallback(t,e,4),be(n)){var a=-1,i=n.length;for(o&&i&&(r=n[++a]);++aarguments.length;return t=u.createCallback(t,e,4),vt(n,function(n,e,u){r=o?(o=false,n):t(r,n,e,u)}),r}function Qt(n){var t=-1,r=n?n.length:0,e=yr(typeof r=="number"?r:0);return ht(n,function(n){var r=xt(0,++t);e[t]=e[r],e[r]=n}),e}function Yt(n,t,r){var e;if(t=u.createCallback(t,r,3),be(n)){r=-1;for(var o=n.length;++rarguments.length)return Ot(n,j,null,t); -if(n)var r=n[N]?n[N][2]:n.length,e=qt(arguments,2),r=r-e.length;return Ot(n,j|O,r,t,e)}function nr(n,t,r){var e,u,o,a,i,l,f,c=0,p=false,s=true;if(!or(n))throw new kr;if(t=Zr(0,t)||0,true===r)var g=true,s=false;else ar(r)&&(g=r.leading,p="maxWait"in r&&(Zr(t,r.maxWait)||0),s="trailing"in r?r.trailing:s);var h=function(){var r=t-(ke()-a);0=y;m?(u&&(u=qr(u)),c=a,o=n.apply(i,e)):u||(u=Kr(v,y))}return m&&l?l=qr(l):l||t===p||(l=Kr(h,t)),r&&(m=true,o=n.apply(i,e)),!m||l||u||(e=i=null),o}}function tr(n,t,r){var e=arguments,u=0,o=e.length,a=typeof r;if("number"!=a&&"string"!=a||!e[3]||e[3][r]!==t||(o=2),3--n?t.apply(this,arguments):void 0}},u.assign=tr,u.at=function(n,t){var r=arguments,e=-1,u=mt(r,true,false,1),o=u.length,a=typeof t;for("number"!=a&&"string"!=a||!r[2]||r[2][t]!==n||(o=1),fe.unindexedChars&&lr(n)&&(n=n.split("")),r=yr(o);++earguments.length?Ot(t,j|x,null,n):Ot(t,j|x|O,null,n,qt(arguments,2))},u.chain=function(n){return n=new o(n),n.__chain__=true,n},u.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t=S&&ce(e?n[e]:l)))}var i=n[0],p=-1,g=i?i.length:0,h=[]; -n:for(;++p(v?r(v,f):a(l,f))){for(e=u,(v||l).push(f);--e;)if(v=o[e],0>(v?r(v,f):a(n[e],f)))continue n;h.push(f)}}return s(o),s(l),h},u.invert=function(n,t){for(var r=-1,e=we(n),u=e.length,o={};++rarguments.length&&be(n))for(;++rr?Zr(0,e+r):ne(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},u.mixin=gr,u.noConflict=function(){return n._=Nr,this},u.noop=hr,u.now=ke,u.parseInt=Oe,u.random=function(n,t,r){var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=ee(),ne(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):xt(n,t) -},u.reduce=Ht,u.reduceRight=Jt,u.result=function(n,t,r){var e=null==n?w:n[t];return typeof e=="undefined"?r:or(e)?n[t]():e},u.runInContext=_,u.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:we(n).length},u.some=Yt,u.sortedIndex=Ft,u.template=function(n,t,r){var e=u.templateSettings;n=Cr(n||""),r=rr({},r,e);var o,a=rr({},r.imports,e.imports),e=we(a),a=fr(a),i=0,l=r.interpolate||U,c="__p+='",l=xr((r.escape||U).source+"|"+l.source+"|"+(l===D?W:U).source+"|"+(r.evaluate||U).source+"|$","g"); -n.replace(l,function(t,r,e,u,a,l){return e||(e=u),c+=n.slice(i,l).replace(X,f),r&&(c+="'+__e("+r+")+'"),a&&(o=true,c+="';"+a+";\n__p+='"),e&&(c+="'+((__t=("+e+"))==null?'':__t)+'"),i=l+t.length,t}),c+="';",l=r=r.variable,l||(r="obj",c="with("+r+"){"+c+"}"),c=(o?c.replace(T,""):c).replace(P,"$1").replace(q,"$1;"),c="function("+r+"){"+(l?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var p=br(e,"return "+c).apply(w,a) -}catch(s){throw s.source=c,s}return t?p(t):(p.source=c,p)},u.trim=je,u.trimLeft=xe,u.trimRight=Ce,u.unescape=function(n){return null==n?"":(n=Cr(n),0>n.indexOf(";")?n:n.replace(F,b))},u.uniqueId=function(n){var t=++R;return Cr(null==n?"":n)+t},u.all=zt,u.any=Yt,u.detect=Mt,u.findWhere=Mt,u.foldl=Ht,u.foldr=Jt,u.include=Wt,u.inject=Ht,gr(function(){var n={};return dt(u,function(t,r){u.prototype[r]||(n[r]=t)}),n}(),false),u.first=Rt,u.last=function(n,t,r){var e=0,o=n?n.length:0;if(typeof t!="number"&&null!=t){var a=o; -for(t=u.createCallback(t,r,3);a--&&t(n[a],a,n);)e++}else if(e=t,null==e||r)return n?n[o-1]:w;return e=o-e,qt(n,0"']/g,L=/<%-([\s\S]+?)%>/g,B=/<%([\s\S]+?)%>/g,D=/<%=([\s\S]+?)%>/g,W=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,K=/^\s*function[ \n\r\t]+\w/,M=/^0[xX]/,U=/($^)/,V=/\bthis\b/,X=/['\n\r\t\u2028\u2029\\]/g,G=" \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",H=[],J=[],Q="Array Boolean Date Error Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Y="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Z="[object Arguments]",nt="[object Array]",tt="[object Boolean]",rt="[object Date]",et="[object Error]",ut="[object Function]",ot="[object Number]",at="[object Object]",it="[object RegExp]",lt="[object String]",ft={}; +if(i)return i}return t.g-r.g}function l(n){return st[n]}function f(n){return"\\"+vt[n]}function c(){return G.pop()||[]}function p(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}function s(n){n.length=0,G.lengthe||13e||8202r||13r||8202=S&&(o=r,e=se(e));++uo(e,l)&&i.push(l)}return i}function ht(n,t){var r=-1,e=n,u=n?n.length:0;if(typeof u=="number")for(pe.unindexedChars&&cr(e)&&(e=e.split(""));++r=S,f=[];if(l)var p=se(),a=r;else p=u?c():f;for(;++oa(p,h))&&((u||l)&&p.push(h),f.push(g)) +}return!l&&u&&s(p),f}function kt(n,t,r){for(var e=-1,u=t.length,o=-1,a=n.length,i=te(r.length-u,0),l=dr(i+a);++or&&(r=0),c&&(a=At(u)),p&&(i=At(o)),s=[n,t,r,e,u,o,a,i],t==j||t==(j|O)?m(s):st(s))}function St(n){n.d=Y;var t=wr,r="return function("+n.a+"){",e="var r="+n.b+";if(!j(p)){return r}";pe.nonEnumArgs&&(e+="var m=p.length;if(m&&i(p)){l=-1;while(++lu;u++)e+="l='"+n.d[u]+"';if((!(k&&n[l])&&g.call(p,l))",n.e||(e+="||(!n[l]&&p[l]!==q[l])"),e+="){"+n.c+"}";e+="}"}return t("e,f,g,i,j,q,o,u,v,w",r+(e+"return r;")+"}")(et,Ar,Wr,Tt,lr,Ir,ce,lt,Nr,Pr) +}function At(n){for(var t=-1,r=n.length,e=[];++te?te(0,u+e):e||0;else if(e)return e=Lt(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function Ft(n,t,r){if(typeof t!="number"&&null!=t){var e=0,o=-1,a=n?n.length:0;for(t=u.createCallback(t,r,3);++ot?t=te(u+t,0):t>u&&(t=u),typeof r=="undefined"?r=u:0>r?r=te(u+r,0):r>u&&(r=u),u=r-t||0,r=dr(u);++e>>1,r(n[e])r?0:r);++t=e)return false;if(typeof n=="string"||!we(n)&&cr(n))return Gr?Gr.call(n,t,r):-1r?te(0,e+r):r)||0,-1a&&(a=l)}else t=null==t&&cr(n)?e:u.createCallback(t,r,3),ht(n,function(n,r,e){r=t(n,r,e),r>o&&(o=r,a=n)});return a}function Qt(n,t,r,e){var o=3>arguments.length;if(t=u.createCallback(t,e,4),we(n)){var a=-1,i=n.length;for(o&&i&&(r=n[++a]);++aarguments.length;return t=u.createCallback(t,e,4),vt(n,function(n,e,u){r=o?(o=false,n):t(r,n,e,u)}),r}function Zt(n){var t=-1,r=n?n.length:0,e=dr(typeof r=="number"?r:0);return ht(n,function(n){var r=xt(0,++t);e[t]=e[r],e[r]=n}),e}function nr(n,t,r){var e;if(t=u.createCallback(t,r,3),we(n)){r=-1;for(var o=n.length;++rarguments.length)return Et(n,j,null,t); +if(n)var r=n[N]?n[N][2]:n.length,e=$t(arguments,2),r=r-e.length;return Et(n,j|O,r,t,e)}function rr(n,t,r){var e,u,o,a,i,l,f,c=0,p=false,s=true;if(!ir(n))throw new Er;if(t=te(0,t)||0,true===r)var g=true,s=false;else lr(r)&&(g=r.leading,p="maxWait"in r&&(te(t,r.maxWait)||0),s="trailing"in r?r.trailing:s);var h=function(){var r=t-(Ee()-a);0>=r||r>t?(u&&$r(u),r=f,u=l=f=w,r&&(c=Ee(),o=n.apply(i,e),l||u||(e=i=null))):l=Ur(h,r)},v=function(){l&&$r(l),u=l=f=w,(s||p!==t)&&(c=Ee(),o=n.apply(i,e),l||u||(e=i=null))};return function(){if(e=arguments,a=Ee(),i=this,f=s&&(l||!g),false===p)var r=g&&!l; +else{u||g||(c=a);var y=p-(a-c),m=0>=y||y>p;m?(u&&(u=$r(u)),c=a,o=n.apply(i,e)):u||(u=Ur(v,y))}return m&&l?l=$r(l):l||t===p||(l=Ur(h,t)),r&&(m=true,o=n.apply(i,e)),!m||l||u||(e=i=null),o}}function er(n,t,r){var e=arguments,u=0,o=e.length,a=typeof r;if("number"!=a&&"string"!=a||!e[3]||e[3][r]!==t||(o=2),3--n?t.apply(this,arguments):void 0}},u.assign=er,u.at=function(n,t){var r=arguments,e=-1,u=mt(r,true,false,1),o=u.length,a=typeof t;for("number"!=a&&"string"!=a||!r[2]||r[2][t]!==n||(o=1),pe.unindexedChars&&cr(n)&&(n=n.split("")),r=dr(o);++earguments.length?Et(t,j|x,null,n):Et(t,j|x|O,null,n,$t(arguments,2))},u.chain=function(n){return n=new o(n),n.__chain__=true,n},u.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t=S&&se(e?n[e]:l)))}var i=n[0],p=-1,g=i?i.length:0,h=[]; +n:for(;++p(v?r(v,f):a(l,f))){for(e=u,(v||l).push(f);--e;)if(v=o[e],0>(v?r(v,f):a(n[e],f)))continue n;h.push(f)}}return s(o),s(l),h},u.invert=function(n,t){for(var r=-1,e=xe(n),u=e.length,o={};++rarguments.length&&we(n))for(;++rr?te(0,e+r):re(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},u.mixin=vr,u.noConflict=function(){return n._=Tr,this},u.noop=yr,u.now=Ee,u.parseInt=Se,u.random=function(n,t,r){var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=oe(),re(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):xt(n,t) +},u.reduce=Qt,u.reduceRight=Yt,u.result=function(n,t,r){var e=null==n?w:n[t];return typeof e=="undefined"?r:ir(e)?n[t]():e},u.runInContext=_,u.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:xe(n).length},u.some=nr,u.sortedIndex=Lt,u.template=function(n,t,r){var e=u.templateSettings;n=Or(n||""),r=ur({},r,e);var o,a=ur({},r.imports,e.imports),e=xe(a),a=pr(a),i=0,l=r.interpolate||U,c="__p+='",l=kr((r.escape||U).source+"|"+l.source+"|"+(l===D?W:U).source+"|"+(r.evaluate||U).source+"|$","g"); +n.replace(l,function(t,r,e,u,a,l){return e||(e=u),c+=n.slice(i,l).replace(H,f),r&&(c+="'+__e("+r+")+'"),a&&(o=true,c+="';"+a+";\n__p+='"),e&&(c+="'+((__t=("+e+"))==null?'':__t)+'"),i=l+t.length,t}),c+="';",l=r=r.variable,l||(r="obj",c="with("+r+"){"+c+"}"),c=(o?c.replace(T,""):c).replace(P,"$1").replace(q,"$1;"),c="function("+r+"){"+(l?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+c+"return __p}";try{var p=wr(e,"return "+c).apply(w,a) +}catch(s){throw s.source=c,s}return t?p(t):(p.source=c,p)},u.trim=Ce,u.trimLeft=ke,u.trimRight=Oe,u.unescape=function(n){return null==n?"":(n=Or(n),0>n.indexOf(";")?n:n.replace(F,b))},u.uniqueId=function(n){var t=++R;return Or(null==n?"":n)+t},u.all=Mt,u.any=nr,u.detect=Vt,u.findWhere=Vt,u.foldl=Qt,u.foldr=Yt,u.include=Kt,u.inject=Qt,vr(function(){var n={};return dt(u,function(t,r){u.prototype[r]||(n[r]=t)}),n}(),false),u.first=Pt,u.last=function(n,t,r){var e=0,o=n?n.length:0;if(typeof t!="number"&&null!=t){var a=o; +for(t=u.createCallback(t,r,3);a--&&t(n[a],a,n);)e++}else if(e=t,null==e||r)return n?n[o-1]:w;return e=o-e,$t(n,0"']/g,L=/<%-([\s\S]+?)%>/g,B=/<%([\s\S]+?)%>/g,D=/<%=([\s\S]+?)%>/g,W=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,z=/\w*$/,K=/^\s*function[ \n\r\t]+\w/,M=/^0[xX]/,U=/($^)/,V=/\bthis\b/,H=/['\n\r\t\u2028\u2029\\]/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",G=[],J=[],Q="Array Boolean Date Error Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Y="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Z="[object Arguments]",nt="[object Array]",tt="[object Boolean]",rt="[object Date]",et="[object Error]",ut="[object Function]",ot="[object Number]",at="[object Object]",it="[object RegExp]",lt="[object String]",ft={}; ft[ut]=false,ft[Z]=ft[nt]=ft[tt]=ft[rt]=ft[ot]=ft[at]=ft[it]=ft[lt]=true;var ct={leading:false,maxWait:0,trailing:false},pt={configurable:false,enumerable:false,value:null,writable:false},st={"&":"&","<":"<",">":">",'"':""","'":"'"},gt={"&":"&","<":"<",">":">",""":'"',"'":"'"},ht={"function":true,object:true},vt={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},yt=ht[typeof window]&&window||this,mt=ht[typeof exports]&&exports&&!exports.nodeType&&exports,ht=ht[typeof module]&&module&&!module.nodeType&&module,dt=mt&&ht&&typeof global=="object"&&global; !dt||dt.global!==dt&&dt.window!==dt&&dt.self!==dt||(yt=dt);var dt=ht&&ht.exports===mt&&mt,bt=_();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(yt._=bt, define(function(){return bt})):mt&&ht?dt?(ht.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 6e31ac3a9..5086ab5d8 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -834,7 +834,8 @@ function baseBind(data) { var func = data[0], thisArg = data[3], - partialArgs = data[4]; + partialArgs = data[4], + partialHolders = data[6]; function bound() { // `Function#bind` spec @@ -843,8 +844,7 @@ // avoid `arguments` object deoptimizations by using `slice` instead // of `Array.prototype.slice.call` and not assigning `arguments` to a // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } // mimic the constructor's `return` behavior // http://es5.github.io/#x13.2.2 @@ -1049,7 +1049,9 @@ arity = data[2], thisArg = data[3], partialArgs = data[4], - partialRightArgs = data[5]; + partialRightArgs = data[5], + partialHolders = data[6], + partialRightHolders = data[7]; var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, @@ -1060,23 +1062,22 @@ function bound() { var thisBinding = isBind ? thisArg : this; if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } + if (partialRightArgs) { + args = composeArgsRight(partialRightArgs, partialRightHolders, args || arguments); + } + if (isCurry) { var argsLength = arguments.length; - if (isCurry && argsLength < arity) { + if (argsLength < arity) { + args || (args = slice(arguments)); bitmask |= PARTIAL_FLAG; bitmask &= ~PARTIAL_RIGHT_FLAG if (!isCurryBound) { bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); } var newArity = nativeMax(0, arity - argsLength); - return baseCreateWrapper([func, bitmask, newArity, thisArg, args]); + return baseCreateWrapper([func, bitmask, newArity, thisArg, args, null, []]); } } args || (args = arguments); @@ -1149,7 +1150,7 @@ } /** - * The base implementation of `_.forEachEach` without support for callback + * The base implementation of `_.forEachRight` without support for callback * shorthands or `thisArg` binding. * * @private @@ -1555,6 +1556,68 @@ return result; } + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} partialArg An array of arguments to prepend to those provided. + * @param {Array} partialHolders An array of `partialArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgs(partialArgs, partialHolders, args) { + var index = -1, + length = partialHolders.length, + leftIndex = -1, + leftLength = partialArgs.length, + argsLength = nativeMax(args.length - length, 0), + result = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partialArgs[leftIndex]; + } + while (++index < length) { + result[partialHolders[index]] = args[index]; + } + while (length < argsLength) { + result[leftIndex++] = args[length++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} partialRightArg An array of arguments to append to those provided. + * @param {Array} partialHolders An array of `partialRightArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgsRight(partialRightArgs, partialRightHolders, args) { + var index = -1, + length = partialRightHolders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - length, 0), + rightIndex = -1, + rightLength = partialRightArgs.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var pad = argsIndex; + while (++rightIndex < rightLength) { + result[pad + rightIndex] = partialRightArgs[rightIndex]; + } + while (++index < length) { + result[pad + partialHolders[index]] = args[argsIndex++]; + } + return result; + } + /** * Creates a function that aggregates a collection, creating an object or * array composed from the results of running each element of the collection @@ -1627,9 +1690,11 @@ * provided to the new function. * @param {Array} [partialRightArgs] An array of arguments to append to those * provided to the new function. + * @param {Array} [partialHolders] An array of `partialArgs` placeholder indexes. + * @param {Array} [partialRightArgs] An array of `partialRightArgs` placeholder indexes. * @returns {Function} Returns the new function. */ - function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs) { + function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders) { var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isPartial = bitmask & PARTIAL_FLAG, @@ -1697,13 +1762,39 @@ } else if (arity < 0) { arity = 0; } + if (isPartial) { + partialHolders = getHolders(partialArgs); + } + if (isPartialRight) { + partialRightHolders = getHolders(partialRightArgs); + } // fast path for `_.bind` - data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs]; + data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders]; return (bitmask == BIND_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) ? baseBind(data) : baseCreateWrapper(data); } + /** + * Finds the indexes of all placeholder elements in a given array. + * + * @private + * @param {Array} array The array to inspect. + * @returns {Array} Returns a new array of placeholder indexes. + */ + function getHolders(array) { + var index = -1, + length = array.length, + result = []; + + while (++index < length) { + if (array[index] === lodash) { + result.push(index); + } + } + return result; + } + /** * Gets the appropriate "indexOf" function. If the `_.indexOf` method is * customized this method returns the custom method, otherwise it returns @@ -4607,7 +4698,7 @@ } var delayed = function() { var remaining = wait - (now() - stamp); - if (remaining <= 0) { + if (remaining <= 0 || remaining > wait) { if (maxTimeoutId) { clearTimeout(maxTimeoutId); } @@ -4652,7 +4743,7 @@ lastCalled = stamp; } var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; + isCalled = remaining <= 0 || remaining > maxWait; if (isCalled) { if (maxTimeoutId) { @@ -4851,8 +4942,8 @@ } /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. * * Note: This method does not set the `length` property of partially applied * functions. diff --git a/dist/lodash.min.js b/dist/lodash.min.js index f5b5ff456..f8e2d1a07 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -4,58 +4,59 @@ * Build: `lodash modern -o ./dist/lodash.js` */ ;(function(){function n(n,t){if(n!==t){if(n>t||typeof n=="undefined")return 1;if(ne||13e||8202r||13r||8202=A&&(o=r,e=ie(e));++uo(e,f)&&a.push(f)}return a}function ht(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number")for(;++r=A,l=[];if(f)var s=ie(),i=r;else s=u?c():l;for(;++oi(s,h))&&((u||f)&&s.push(h),l.push(g)) -}return!f&&u&&p(s),l}function xt(n,t){return function(r,e,u){var o=t?[[],[]]:{};e=y.createCallback(e,u,3),u=-1;var i=r?r.length:0;if(typeof i=="number")for(;++ur&&(r=0),c=[n,t,r,e,u,o],t==w||t==(w|C)?S(c):pt(c)) -}function Ot(){var n=(n=y.indexOf)===Rt?t:n;return n}function At(n){return typeof n=="function"&&Nr.test(Fr.call(n))}function St(n){var t,r;return n&&Er.call(n)==et&&(Br.call(n,"constructor")||(t=n.constructor,!er(t)||t instanceof t))?(o(n,function(n,t){r=t}),typeof r=="undefined"||Br.call(n,r)):false}function Et(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Er.call(n)==Q||false}function Nt(n,t,r){var e=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=y.createCallback(t,r,3);++oe?Hr(0,u+e):e||0;else if(e)return e=Ft(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function It(n,t,r){if(typeof t!="number"&&null!=t){var e=0,u=-1,o=n?n.length:0;for(t=y.createCallback(t,r,3);++ut?t=Hr(u+t,0):t>u&&(t=u),typeof r=="undefined"?r=u:0>r?r=Hr(u+r,0):r>u&&(r=u),u=r-t||0,r=hr(u);++e>>1,r(n[e])r?0:r);++t=e)return false;if(typeof n=="string"||!ge(n)&&ir(n))return Kr?Kr.call(n,t,r):-1r?Hr(0,e+r):r)||0,-1o&&(o=a)}else t=null==t&&ir(n)?e:y.createCallback(t,r,3),ht(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)});return o}function Xt(n,t,r,e){var u=3>arguments.length;t=y.createCallback(t,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number")for(u&&i&&(r=n[++o]);++oarguments.length;return t=y.createCallback(t,e,4),vt(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:0,e=hr(typeof r=="number"?r:0); -return ht(n,function(n){var r=kt(0,++t);e[t]=e[r],e[r]=n}),e}function Jt(n,t,r){var e;t=y.createCallback(t,r,3),r=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++rarguments.length)return Ct(n,w,null,t);if(n)var r=n[N]?n[N][2]:n.length,e=Tt(arguments,2),r=r-e.length;return Ct(n,w|C,r,t,e)}function Yt(n,t,r){function e(){c&&Ir(c),i=c=p=_,(h||g!==t)&&(s=be(),a=n.apply(l,o),c||i||(o=l=null)) -}function u(){var r=t-(be()-f);0=y;m?(i&&(i=Ir(i)),s=f,a=n.apply(l,o)):i||(i=Wr(e,y))}return m&&c?c=Ir(c):c||t===g||(c=Wr(u,t)),r&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a -}}function Zt(n,t,r){var e=arguments,u=0,o=e.length,i=typeof r;if("number"!=i&&"string"!=i||!e[3]||e[3][r]!==t||(o=2),3--n?t.apply(this,arguments):void 0}},y.assign=Zt,y.at=function(n,t){var r=arguments,e=-1,u=mt(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=hr(o);++earguments.length?Ct(t,w|k,null,n):Ct(t,w|k|C,null,n,Tt(arguments,2))},y.chain=function(n){return n=new m(n),n.__chain__=true,n},y.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t=A&&ie(e?n[e]:f)))}var a=n[0],s=-1,g=a?a.length:0,h=[]; -n:for(;++s(v?r(v,l):i(f,l))){for(e=u,(v||f).push(l);--e;)if(v=o[e],0>(v?r(v,l):i(n[e],l)))continue n;h.push(l)}}return p(o),p(f),h},y.invert=function(n,t){for(var r=-1,e=ve(n),u=e.length,o={};++rarguments.length&&typeof u=="number")for(;++rr?Hr(0,e+r):Jr(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},y.mixin=pr,y.noConflict=function(){return n._=Sr,this},y.noop=sr,y.now=be,y.parseInt=_e,y.random=function(n,t,r){var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=Zr(),Jr(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):kt(n,t) -},y.reduce=Xt,y.reduceRight=Gt,y.result=function(n,t,r){var e=null==n?_:n[t];return typeof e=="undefined"?r:er(e)?n[t]():e},y.runInContext=b,y.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:ve(n).length},y.some=Jt,y.sortedIndex=Ft,y.template=function(n,t,r){var e=y.templateSettings;n=kr(n||""),r=nr({},r,e);var u,o=nr({},r.imports,e.imports),e=ve(o),o=ar(o),i=0,a=r.interpolate||M,f="__p+='",a=wr((r.escape||M).source+"|"+a.source+"|"+(a===W?z:M).source+"|"+(r.evaluate||M).source+"|$","g"); -n.replace(a,function(t,r,e,o,a,c){return e||(e=o),f+=n.slice(i,c).replace(V,l),r&&(f+="'+__e("+r+")+'"),a&&(u=true,f+="';"+a+";\n__p+='"),e&&(f+="'+((__t=("+e+"))==null?'':__t)+'"),i=c+t.length,t}),f+="';",a=r=r.variable,a||(r="obj",f="with("+r+"){"+f+"}"),f=(u?f.replace(I,""):f).replace(T,"$1").replace(F,"$1;"),f="function("+r+"){"+(a?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+f+"return __p}";try{var c=mr(e,"return "+f).apply(_,o) -}catch(p){throw p.source=f,p}return t?c(t):(c.source=f,c)},y.trim=ye,y.trimLeft=me,y.trimRight=de,y.unescape=function(n){return null==n?"":(n=kr(n),0>n.indexOf(";")?n:n.replace($,d))},y.uniqueId=function(n){var t=++R;return kr(null==n?"":n)+t},y.all=zt,y.any=Jt,y.detect=Pt,y.findWhere=Pt,y.foldl=Xt,y.foldr=Gt,y.include=Wt,y.inject=Xt,pr(function(){var n={};return dt(y,function(t,r){y.prototype[r]||(n[r]=t)}),n}(),false),y.first=Nt,y.last=function(n,t,r){var e=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u; -for(t=y.createCallback(t,r,3);o--&&t(n[o],o,n);)e++}else if(e=t,null==e||r)return n?n[u-1]:_;return e=u-e,Tt(n,0"']/g,D=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,z=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,L=/\w*$/,P=/^\s*function[ \n\r\t]+\w/,K=/^0[xX]/,M=/($^)/,U=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/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",G=[],H=[],J="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Q="[object Arguments]",Y="[object Array]",Z="[object Boolean]",nt="[object Date]",tt="[object Function]",rt="[object Number]",et="[object Object]",ut="[object RegExp]",ot="[object String]",it={}; +if(a)return a}return t.g-r.g}function f(n){return lt[n]}function l(n){return"\\"+st[n]}function c(){return X.pop()||[]}function p(n){n.length=0,X.lengthe||13e||8202r||13r||8202=A&&(o=r,e=fe(e));++uo(e,f)&&a.push(f)}return a}function ht(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number")for(;++r=A,l=[];if(f)var s=fe(),i=r;else s=u?c():l;for(;++oi(s,h))&&((u||f)&&s.push(h),l.push(g)) +}return!f&&u&&p(s),l}function xt(n,t,r){for(var e=-1,u=t.length,o=-1,i=n.length,a=Qr(r.length-u,0),f=yr(a+i);++or&&(r=0),c&&(i=At(u)),p&&(a=At(o)),s=[n,t,r,e,u,o,i,a],t==w||t==(w|C)?S(s):pt(s))}function At(n){for(var t=-1,r=n.length,e=[];++te?Qr(0,u+e):e||0;else if(e)return e=Bt(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function Ft(n,t,r){if(typeof t!="number"&&null!=t){var e=0,u=-1,o=n?n.length:0;for(t=y.createCallback(t,r,3);++ut?t=Qr(u+t,0):t>u&&(t=u),typeof r=="undefined"?r=u:0>r?r=Qr(u+r,0):r>u&&(r=u),u=r-t||0,r=yr(u);++e>>1,r(n[e])r?0:r);++t=e)return false;if(typeof n=="string"||!ve(n)&&fr(n))return Ur?Ur.call(n,t,r):-1r?Qr(0,e+r):r)||0,-1o&&(o=a) +}else t=null==t&&fr(n)?e:y.createCallback(t,r,3),ht(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)});return o}function Gt(n,t,r,e){var u=3>arguments.length;t=y.createCallback(t,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number")for(u&&i&&(r=n[++o]);++oarguments.length;return t=y.createCallback(t,e,4),vt(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function Qt(n){var t=-1,r=n?n.length:0,e=yr(typeof r=="number"?r:0); +return ht(n,function(n){var r=kt(0,++t);e[t]=e[r],e[r]=n}),e}function Yt(n,t,r){var e;t=y.createCallback(t,r,3),r=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++rarguments.length)return Ot(n,w,null,t);if(n)var r=n[N]?n[N][2]:n.length,e=$t(arguments,2),r=r-e.length;return Ot(n,w|C,r,t,e)}function nr(n,t,r){function e(){c&&Fr(c),i=c=p=_,(h||g!==t)&&(s=we(),a=n.apply(l,o),c||i||(o=l=null)) +}function u(){var r=t-(we()-f);0>=r||r>t?(i&&Fr(i),r=p,i=c=p=_,r&&(s=we(),a=n.apply(l,o),c||i||(o=l=null))):c=Lr(u,r)}var o,i,a,f,l,c,p,s=0,g=false,h=true;if(!or(n))throw new Cr;if(t=Qr(0,t)||0,true===r)var v=true,h=false;else ir(r)&&(v=r.leading,g="maxWait"in r&&(Qr(t,r.maxWait)||0),h="trailing"in r?r.trailing:h);return function(){if(o=arguments,f=we(),l=this,p=h&&(c||!v),false===g)var r=v&&!c;else{i||v||(s=f);var y=g-(f-s),m=0>=y||y>g;m?(i&&(i=Fr(i)),s=f,a=n.apply(l,o)):i||(i=Lr(e,y))}return m&&c?c=Fr(c):c||t===g||(c=Lr(u,t)),r&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a +}}function tr(n,t,r){var e=arguments,u=0,o=e.length,i=typeof r;if("number"!=i&&"string"!=i||!e[3]||e[3][r]!==t||(o=2),3--n?t.apply(this,arguments):void 0}},y.assign=tr,y.at=function(n,t){var r=arguments,e=-1,u=mt(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=yr(o);++earguments.length?Ot(t,w|k,null,n):Ot(t,w|k|C,null,n,$t(arguments,2))},y.chain=function(n){return n=new m(n),n.__chain__=true,n},y.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t=A&&fe(e?n[e]:f)))}var a=n[0],s=-1,g=a?a.length:0,h=[]; +n:for(;++s(v?r(v,l):i(f,l))){for(e=u,(v||f).push(l);--e;)if(v=o[e],0>(v?r(v,l):i(n[e],l)))continue n;h.push(l)}}return p(o),p(f),h},y.invert=function(n,t){for(var r=-1,e=me(n),u=e.length,o={};++rarguments.length&&typeof u=="number")for(;++rr?Qr(0,e+r):Yr(r,e-1))+1);e--;)if(n[e]===t)return e;return-1},y.mixin=gr,y.noConflict=function(){return n._=Nr,this},y.noop=hr,y.now=we,y.parseInt=ke,y.random=function(n,t,r){var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=te(),Yr(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):kt(n,t) +},y.reduce=Gt,y.reduceRight=Jt,y.result=function(n,t,r){var e=null==n?_:n[t];return typeof e=="undefined"?r:or(e)?n[t]():e},y.runInContext=b,y.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:me(n).length},y.some=Yt,y.sortedIndex=Bt,y.template=function(n,t,r){var e=y.templateSettings;n=xr(n||""),r=rr({},r,e);var u,o=rr({},r.imports,e.imports),e=me(o),o=lr(o),i=0,a=r.interpolate||M,f="__p+='",a=jr((r.escape||M).source+"|"+a.source+"|"+(a===W?z:M).source+"|"+(r.evaluate||M).source+"|$","g"); +n.replace(a,function(t,r,e,o,a,c){return e||(e=o),f+=n.slice(i,c).replace(V,l),r&&(f+="'+__e("+r+")+'"),a&&(u=true,f+="';"+a+";\n__p+='"),e&&(f+="'+((__t=("+e+"))==null?'':__t)+'"),i=c+t.length,t}),f+="';",a=r=r.variable,a||(r="obj",f="with("+r+"){"+f+"}"),f=(u?f.replace(I,""):f).replace(T,"$1").replace(F,"$1;"),f="function("+r+"){"+(a?"":r+"||("+r+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+f+"return __p}";try{var c=br(e,"return "+f).apply(_,o) +}catch(p){throw p.source=f,p}return t?c(t):(c.source=f,c)},y.trim=de,y.trimLeft=be,y.trimRight=_e,y.unescape=function(n){return null==n?"":(n=xr(n),0>n.indexOf(";")?n:n.replace($,d))},y.uniqueId=function(n){var t=++R;return xr(null==n?"":n)+t},y.all=Pt,y.any=Yt,y.detect=Mt,y.findWhere=Mt,y.foldl=Gt,y.foldr=Jt,y.include=Lt,y.inject=Gt,gr(function(){var n={};return dt(y,function(t,r){y.prototype[r]||(n[r]=t)}),n}(),false),y.first=It,y.last=function(n,t,r){var e=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u; +for(t=y.createCallback(t,r,3);o--&&t(n[o],o,n);)e++}else if(e=t,null==e||r)return n?n[u-1]:_;return e=u-e,$t(n,0"']/g,D=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,z=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,L=/\w*$/,P=/^\s*function[ \n\r\t]+\w/,K=/^0[xX]/,M=/($^)/,U=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/g,H=" \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",X=[],G=[],J="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Q="[object Arguments]",Y="[object Array]",Z="[object Boolean]",nt="[object Date]",tt="[object Function]",rt="[object Number]",et="[object Object]",ut="[object RegExp]",ot="[object String]",it={}; it[tt]=false,it[Q]=it[Y]=it[Z]=it[nt]=it[rt]=it[et]=it[ut]=it[ot]=true;var at={leading:false,maxWait:0,trailing:false},ft={configurable:false,enumerable:false,value:null,writable:false},lt={"&":"&","<":"<",">":">",'"':""","'":"'"},ct={"&":"&","<":"<",">":">",""":'"',"'":"'"},pt={"function":true,object:true},st={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},gt=pt[typeof window]&&window||this,ht=pt[typeof exports]&&exports&&!exports.nodeType&&exports,pt=pt[typeof module]&&module&&!module.nodeType&&module,vt=ht&&pt&&typeof global=="object"&&global; !vt||vt.global!==vt&&vt.window!==vt&&vt.self!==vt||(gt=vt);var vt=pt&&pt.exports===ht&&ht,yt=b();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(gt._=yt, define(function(){return yt})):ht&&pt?vt?(pt.exports=yt)._=yt:ht._=yt:gt._=yt}).call(this); \ No newline at end of file diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index 1435bf58a..f6ecada12 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -1,7 +1,7 @@ /** * @license * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash underscore -o ./dist/lodash.underscore.js` + * Build: `lodash underscore moduleId="none" -o ./dist/lodash.underscore.js` * Copyright 2012-2014 The Dojo Foundation * Based on Underscore.js 1.6.0 * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors @@ -423,7 +423,8 @@ function baseBind(data) { var func = data[0], thisArg = data[3], - partialArgs = data[4]; + partialArgs = data[4], + partialHolders = data[6]; function bound() { // `Function#bind` spec @@ -432,8 +433,7 @@ // avoid `arguments` object deoptimizations by using `slice` instead // of `Array.prototype.slice.call` and not assigning `arguments` to a // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } // mimic the constructor's `return` behavior // http://es5.github.io/#x13.2.2 @@ -523,7 +523,9 @@ arity = data[2], thisArg = data[3], partialArgs = data[4], - partialRightArgs = data[5]; + partialRightArgs = data[5], + partialHolders = data[6], + partialRightHolders = data[7]; var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, @@ -534,23 +536,22 @@ function bound() { var thisBinding = isBind ? thisArg : this; if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); + var args = composeArgs(partialArgs, partialHolders, arguments); } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } + if (partialRightArgs) { + args = composeArgsRight(partialRightArgs, partialRightHolders, args || arguments); + } + if (isCurry) { var argsLength = arguments.length; - if (isCurry && argsLength < arity) { + if (argsLength < arity) { + args || (args = slice(arguments)); bitmask |= PARTIAL_FLAG; bitmask &= ~PARTIAL_RIGHT_FLAG if (!isCurryBound) { bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); } var newArity = nativeMax(0, arity - argsLength); - return baseCreateWrapper([func, bitmask, newArity, thisArg, args]); + return baseCreateWrapper([func, bitmask, newArity, thisArg, args, null, []]); } } args || (args = arguments); @@ -899,6 +900,68 @@ return result; } + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} partialArg An array of arguments to prepend to those provided. + * @param {Array} partialHolders An array of `partialArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgs(partialArgs, partialHolders, args) { + var index = -1, + length = partialHolders.length, + leftIndex = -1, + leftLength = partialArgs.length, + argsLength = nativeMax(args.length - length, 0), + result = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partialArgs[leftIndex]; + } + while (++index < length) { + result[partialHolders[index]] = args[index]; + } + while (length < argsLength) { + result[leftIndex++] = args[length++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} partialRightArg An array of arguments to append to those provided. + * @param {Array} partialHolders An array of `partialRightArgs` placeholder indexes. + * @param {Array|Object} args The provided arguments. + * @returns {Array} Returns a new array of composed arguments. + */ + function composeArgsRight(partialRightArgs, partialRightHolders, args) { + var index = -1, + length = partialRightHolders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - length, 0), + rightIndex = -1, + rightLength = partialRightArgs.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var pad = argsIndex; + while (++rightIndex < rightLength) { + result[pad + rightIndex] = partialRightArgs[rightIndex]; + } + while (++index < length) { + result[pad + partialHolders[index]] = args[argsIndex++]; + } + return result; + } + /** * Creates a function that aggregates a collection, creating an object or * array composed from the results of running each element of the collection @@ -953,9 +1016,11 @@ * provided to the new function. * @param {Array} [partialRightArgs] An array of arguments to append to those * provided to the new function. + * @param {Array} [partialHolders] An array of `partialArgs` placeholder indexes. + * @param {Array} [partialRightArgs] An array of `partialRightArgs` placeholder indexes. * @returns {Function} Returns the new function. */ - function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs) { + function createWrapper(func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders) { var isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isPartial = bitmask & PARTIAL_FLAG, @@ -977,13 +1042,39 @@ } else if (arity < 0) { arity = 0; } + if (isPartial) { + partialHolders = getHolders(partialArgs); + } + if (isPartialRight) { + partialRightHolders = getHolders(partialRightArgs); + } // fast path for `_.bind` - var data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs]; + var data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders]; return (bitmask == BIND_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) ? baseBind(data) : baseCreateWrapper(data); } + /** + * Finds the indexes of all placeholder elements in a given array. + * + * @private + * @param {Array} array The array to inspect. + * @returns {Array} Returns a new array of placeholder indexes. + */ + function getHolders(array) { + var index = -1, + length = array.length, + result = []; + + while (++index < length) { + if (array[index] === lodash) { + result.push(index); + } + } + return result; + } + /** * Gets the appropriate "indexOf" function. If the `_.indexOf` method is * customized this method returns the custom method, otherwise it returns @@ -3375,7 +3466,7 @@ } var delayed = function() { var remaining = wait - (now() - stamp); - if (remaining <= 0) { + if (remaining <= 0 || remaining > wait) { if (maxTimeoutId) { clearTimeout(maxTimeoutId); } @@ -3420,7 +3511,7 @@ lastCalled = stamp; } var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; + isCalled = remaining <= 0 || remaining > maxWait; if (isCalled) { if (maxTimeoutId) { @@ -5231,7 +5322,7 @@ // define as an anonymous module so, through path mapping, it can be // referenced as the "underscore" module - define('underscore', function() { + define(function() { return lodash; }); } diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 2dc087748..d465569ca 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -1,41 +1,42 @@ /** * @license * Lo-Dash 2.4.1 (Custom Build) lodash.com/license | Underscore.js 1.6.0 underscorejs.org/LICENSE - * Build: `lodash underscore exports="amd,commonjs,global,node" -o ./dist/lodash.underscore.js` + * Build: `lodash underscore moduleId="none" -o ./dist/lodash.underscore.js` */ -;(function(){function n(n){var r=[];if(!J(n))return r;for(var t in n)Cr.call(n,t)&&r.push(t);return r}function r(n,r){if(J(n))for(var t in n)if(r(n[t],t,n)===cr)break}function t(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++te||typeof t=="undefined"){t=1;break n}if(te(r,i)&&o.push(i)}return o}function h(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(;++tu(f,l))&&(t&&f.push(l),i.push(a))}return i}function _(n,r){return function(t,e,u){var o=r?[[],[]]:{};e=X(e,u,3),u=-1;var i=t?t.length:0;if(typeof i=="number")for(;++ut&&(t=0),n=[n,r,t,e,u,o],r==er||r==(er|fr)?l(n):s(n)}function w(){var n=(n=f.indexOf)===A?t:n;return n}function j(n){return typeof n=="function"&&Mr.test(zr.call(n))}function x(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ir.call(n)==yr||false}function T(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=-1;for(r=X(r,t,3);++oe?Qr(0,u+e):e||0;else if(e)return e=k(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function E(n,r,t){if(typeof r!="number"&&null!=r){var e=0,u=-1,o=n?n.length:0;for(r=X(r,t,3);++ur?r=Qr(u+r,0):r>u&&(r=u),typeof t=="undefined"?t=u:0>t?t=Qr(u+t,0):t>u&&(t=u),u=t-r||0,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=X(r,t,3),h(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function M(n,r,t,e){var u=3>arguments.length;r=X(r,e,4);var o=-1,i=n?n.length:0; -if(typeof i=="number")for(u&&i&&(t=n[++o]);++oarguments.length;return r=X(r,e,4),v(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function W(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return h(n,function(n){var t;t=++r,t=0+Wr(Zr()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function z(n,r,t){var e;r=X(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++targuments.length)return d(n,er,null,r);if(n)var t=n[lr]?n[lr][2]:n.length,e=O(arguments,2),t=t-e.length;return d(n,er|fr,t,r,e)}function P(n,r,t){function e(){c&&clearTimeout(c),i=c=p=tr,(h||g!==r)&&(s=lt(),f=n.apply(l,o),c||i||(o=l=null))}function u(){var t=r-(lt()-a);0=y;m?(i&&(i=clearTimeout(i)),s=a,f=n.apply(l,o)):i||(i=setTimeout(e,y))}return m&&c?c=clearTimeout(c):c||r===g||(c=setTimeout(u,r)),t&&(m=true,f=n.apply(l,o)),!m||c||i||(o=l=null),f}}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,hr=/($^)/,vr=/['\n\r\t\u2028\u2029\\]/g,yr="[object Arguments]",mr="[object Array]",br="[object Boolean]",_r="[object Date]",dr="[object Number]",wr="[object Object]",jr="[object RegExp]",xr="[object String]",Tr={"&":"&","<":"<",">":">",'"':""","'":"'"},Ar={"&":"&","<":"<",">":">",""":'"',"'":"'"},Er={"function":true,object:true},Or={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},kr=Er[typeof window]&&window||this,Sr=Er[typeof exports]&&exports&&!exports.nodeType&&exports,Nr=Er[typeof module]&&module&&!module.nodeType&&module,qr=Sr&&Nr&&typeof global=="object"&&global; -!qr||qr.global!==qr&&qr.window!==qr&&qr.self!==qr||(kr=qr);var Fr=Nr&&Nr.exports===Sr&&Sr,Br=Array.prototype,Rr=Object.prototype,$r=kr._,Ir=Rr.toString,Mr=RegExp("^"+(Ir+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dr=Math.ceil,Wr=Math.floor,zr=Function.prototype.toString,Cr=Rr.hasOwnProperty,Pr=Br.push,Ur=Rr.propertyIsEnumerable,Vr=Br.splice,Gr=j(Gr=Object.create)&&Gr,Hr=j(Hr=Array.isArray)&&Hr,Jr=kr.isFinite,Kr=kr.isNaN,Lr=j(Lr=Object.keys)&&Lr,Qr=Math.max,Xr=Math.min,Yr=j(Yr=Date.now)&&Yr,Zr=Math.random; -a.prototype=f.prototype;var nt={};!function(){var n={0:1,length:1};nt.spliceObjects=(Vr.call(n,0,1),!n[0])}(1),f.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Gr||(c=function(){function n(){}return function(r){if(J(r)){n.prototype=r;var t=new n;n.prototype=null}return t||kr.Object()}}()),x(arguments)||(x=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Cr.call(n,"callee")&&!Ur.call(n,"callee")||false});var rt=_(function(n,r,t){Cr.call(n,t)?n[t]++:n[t]=1 -}),tt=_(function(n,r,t){Cr.call(n,t)?n[t].push(r):n[t]=[r]}),et=_(function(n,r,t){n[t]=r}),ut=_(function(n,r,t){n[t?0:1].push(r)},true),ot=$,it=F,ft=Hr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ir.call(n)==mr||false};H(/x/)&&(H=function(n){return typeof n=="function"&&"[object Function]"==Ir.call(n)});var at=Lr?function(n){return J(n)?Lr(n):[]}:n,lt=Yr||function(){return(new Date).getTime()};f.after=function(n,r){if(!H(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0 -}},f.bind=C,f.bindAll=function(n){for(var r=1i(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},f.invert=function(n){for(var r=-1,t=at(n),e=t.length,u={};++rarguments.length&&typeof u=="number")for(;++tr?0:r);++nt?Qr(0,e+t):Xr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},f.mixin=nr,f.noConflict=function(){return kr._=$r,this},f.now=lt,f.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))},f.reduce=M,f.reduceRight=D,f.result=function(n,r){if(null!=n){var t=n[r];return H(t)?n[r]():t}},f.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:at(n).length},f.some=z,f.sortedIndex=k,f.template=function(n,r,t){var e=f,u=e.templateSettings; -n=(n||"")+"",t=V({},t,u);var i=0,a="__p+='",u=t.variable;n.replace(RegExp((t.escape||hr).source+"|"+(t.interpolate||hr).source+"|"+(t.evaluate||hr).source+"|$","g"),function(r,t,e,u,f){return a+=n.slice(i,f).replace(vr,o),t&&(a+="'+_.escape("+t+")+'"),u&&(a+="';"+u+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),i=f+r.length,r}),a+="';",u||(u="obj",a="with("+u+"||{}){"+a+"}"),a="function("+u+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}"; -try{var l=Function("_","return "+a)(e)}catch(c){throw c.source=a,c}return r?l(r):(l.source=a,l)},f.unescape=function(n){return null==n?"":(n+="",0>n.indexOf(";")?n:n.replace(sr,i))},f.uniqueId=function(n){var r=++pr+"";return n?n+r:r},f.all=q,f.any=z,f.detect=B,f.findWhere=B,f.foldl=M,f.foldr=D,f.include=N,f.inject=M,f.first=T,f.last=function(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=u;for(r=X(r,t,3);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n?n[u-1]:tr;return e=u-e,O(n,0e||typeof t=="undefined"){t=1;break n}if(te(r,i)&&o.push(i)}return o}function h(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(;++tu(f,l))&&(t&&f.push(l),i.push(a))}return i}function _(n,r,t){for(var e=-1,u=r.length,o=-1,i=n.length,f=Yr(t.length-u,0),a=Array(f+i);++ot&&(t=0),c&&(i=j(u)),p&&(f=j(o)),n=[n,r,t,e,u,o,i,f],r==or||r==(or|lr)?l(n):s(n) +}function j(n){for(var r=-1,t=n.length,e=[];++re?Yr(0,u+e):e||0;else if(e)return e=N(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function k(n,r,t){if(typeof r!="number"&&null!=r){var e=0,u=-1,o=n?n.length:0;for(r=Z(r,t,3);++ur?r=Yr(u+r,0):r>u&&(r=u),typeof t=="undefined"?t=u:0>t?t=Yr(u+t,0):t>u&&(t=u),u=t-r||0,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=Z(r,t,3),h(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function W(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")for(u&&i&&(t=n[++o]);++oarguments.length;return r=Z(r,e,4),v(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function C(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return h(n,function(n){var t;t=++r,t=0+Cr(rt()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function H(n,r,t){var e;r=Z(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++targuments.length)return w(n,or,null,r);if(n)var t=n[pr]?n[pr][2]:n.length,e=S(arguments,2),t=t-e.length;return w(n,or|lr,t,r,e)}function U(n,r,t){function e(){c&&clearTimeout(c),i=c=p=ur,(h||g!==r)&&(s=pt(),f=n.apply(l,o),c||i||(o=l=null))}function u(){var t=r-(pt()-a);0>=t||t>r?(i&&clearTimeout(i),t=p,i=c=p=ur,t&&(s=pt(),f=n.apply(l,o),c||i||(o=l=null))):c=setTimeout(u,t)}var o,i,f,a,l,c,p,s=0,g=false,h=true;if(!K(n))throw new TypeError; +if(r=Yr(0,r)||0,true===t)var v=true,h=false;else L(t)&&(v=t.leading,g="maxWait"in t&&(Yr(r,t.maxWait)||0),h="trailing"in t?t.trailing:h);return function(){if(o=arguments,a=pt(),l=this,p=h&&(c||!v),false===g)var t=v&&!c;else{i||v||(s=a);var y=g-(a-s),m=0>=y||y>g;m?(i&&(i=clearTimeout(i)),s=a,f=n.apply(l,o)):i||(i=setTimeout(e,y))}return m&&c?c=clearTimeout(c):c||r===g||(c=setTimeout(u,r)),t&&(m=true,f=n.apply(l,o)),!m||c||i||(o=l=null),f}}function V(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,yr=/($^)/,mr=/['\n\r\t\u2028\u2029\\]/g,br="[object Arguments]",_r="[object Array]",dr="[object Boolean]",wr="[object Date]",jr="[object Number]",xr="[object Object]",Ar="[object RegExp]",Tr="[object String]",Er={"&":"&","<":"<",">":">",'"':""","'":"'"},Or={"&":"&","<":"<",">":">",""":'"',"'":"'"},kr={"function":true,object:true},Sr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Nr=kr[typeof window]&&window||this,qr=kr[typeof exports]&&exports&&!exports.nodeType&&exports,Fr=kr[typeof module]&&module&&!module.nodeType&&module,Br=qr&&Fr&&typeof global=="object"&&global; +!Br||Br.global!==Br&&Br.window!==Br&&Br.self!==Br||(Nr=Br);var Rr=Fr&&Fr.exports===qr&&qr,$r=Array.prototype,Ir=Object.prototype,Mr=Nr._,Dr=Ir.toString,Wr=RegExp("^"+(Dr+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),zr=Math.ceil,Cr=Math.floor,Hr=Function.prototype.toString,Pr=Ir.hasOwnProperty,Ur=$r.push,Vr=Ir.propertyIsEnumerable,Gr=$r.splice,Jr=A(Jr=Object.create)&&Jr,Kr=A(Kr=Array.isArray)&&Kr,Lr=Nr.isFinite,Qr=Nr.isNaN,Xr=A(Xr=Object.keys)&&Xr,Yr=Math.max,Zr=Math.min,nt=A(nt=Date.now)&&nt,rt=Math.random; +a.prototype=f.prototype;var tt={};!function(){var n={0:1,length:1};tt.spliceObjects=(Gr.call(n,0,1),!n[0])}(1),f.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Jr||(c=function(){function n(){}return function(r){if(L(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Nr.Object()}}()),T(arguments)||(T=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Pr.call(n,"callee")&&!Vr.call(n,"callee")||false});var et=d(function(n,r,t){Pr.call(n,t)?n[t]++:n[t]=1 +}),ut=d(function(n,r,t){Pr.call(n,t)?n[t].push(r):n[t]=[r]}),ot=d(function(n,r,t){n[t]=r}),it=d(function(n,r,t){n[t?0:1].push(r)},true),ft=M,at=R,lt=Kr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Dr.call(n)==_r||false};K(/x/)&&(K=function(n){return typeof n=="function"&&"[object Function]"==Dr.call(n)});var ct=Xr?function(n){return L(n)?Xr(n):[]}:n,pt=nt||function(){return(new Date).getTime()};f.after=function(n,r){if(!K(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0 +}},f.bind=P,f.bindAll=function(n){for(var r=1i(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},f.invert=function(n){for(var r=-1,t=ct(n),e=t.length,u={};++rarguments.length&&typeof u=="number")for(;++tr?0:r);++nt?Yr(0,e+t):Zr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},f.mixin=tr,f.noConflict=function(){return Nr._=Mr,this},f.now=pt,f.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Cr(rt()*(r-n+1))},f.reduce=W,f.reduceRight=z,f.result=function(n,r){if(null!=n){var t=n[r];return K(t)?n[r]():t}},f.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:ct(n).length},f.some=H,f.sortedIndex=N,f.template=function(n,r,t){var e=f,u=e.templateSettings; +n=(n||"")+"",t=G({},t,u);var i=0,a="__p+='",u=t.variable;n.replace(RegExp((t.escape||yr).source+"|"+(t.interpolate||yr).source+"|"+(t.evaluate||yr).source+"|$","g"),function(r,t,e,u,f){return a+=n.slice(i,f).replace(mr,o),t&&(a+="'+_.escape("+t+")+'"),u&&(a+="';"+u+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),i=f+r.length,r}),a+="';",u||(u="obj",a="with("+u+"||{}){"+a+"}"),a="function("+u+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}"; +try{var l=Function("_","return "+a)(e)}catch(c){throw c.source=a,c}return r?l(r):(l.source=a,l)},f.unescape=function(n){return null==n?"":(n+="",0>n.indexOf(";")?n:n.replace(hr,i))},f.uniqueId=function(n){var r=++gr+"";return n?n+r:r},f.all=B,f.any=H,f.detect=$,f.findWhere=$,f.foldl=W,f.foldr=z,f.include=F,f.inject=W,f.first=E,f.last=function(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=u;for(r=Z(r,t,3);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n?n[u-1]:ur;return e=u-e,S(n,0