|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
/** |
|
|
|
|
* @license |
|
|
|
|
* Lodash (Custom Build) <https://lodash.com/>
|
|
|
|
|
* Build: `lodash core plus="debounce,throttle,get,findIndex,findLastIndex,findKey,findLastKey,isArrayLike,invert,invertBy,uniq,uniqBy,omit,omitBy,zip,unzip,rest,range,random,reject,intersection,drop,countBy,union,zipObject,initial,cloneDeep,clamp,isPlainObject,take,takeRight,without,difference,defaultsDeep,trim,merge,groupBy,uniqBy"` |
|
|
|
|
* Build: `lodash core plus="debounce,throttle,get,set,findIndex,findLastIndex,findKey,findLastKey,isArrayLike,invert,invertBy,uniq,uniqBy,omit,omitBy,zip,unzip,rest,range,random,reject,intersection,drop,countBy,union,zipObject,initial,cloneDeep,clamp,isPlainObject,take,takeRight,without,difference,defaultsDeep,trim,merge,groupBy,uniqBy"` |
|
|
|
|
* Copyright JS Foundation and other contributors <https://js.foundation/>
|
|
|
|
|
* Released under MIT license <https://lodash.com/license>
|
|
|
|
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
|
|
@ -194,34 +194,34 @@
|
|
|
|
|
/** Used to identify `toStringTag` values of typed arrays. */ |
|
|
|
|
var typedArrayTags = {}; |
|
|
|
|
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = |
|
|
|
|
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = |
|
|
|
|
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = |
|
|
|
|
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = |
|
|
|
|
typedArrayTags[uint32Tag] = true; |
|
|
|
|
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = |
|
|
|
|
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = |
|
|
|
|
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = |
|
|
|
|
typedArrayTags[uint32Tag] = true; |
|
|
|
|
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = |
|
|
|
|
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = |
|
|
|
|
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = |
|
|
|
|
typedArrayTags[errorTag] = typedArrayTags[funcTag] = |
|
|
|
|
typedArrayTags[mapTag] = typedArrayTags[numberTag] = |
|
|
|
|
typedArrayTags[objectTag] = typedArrayTags[regexpTag] = |
|
|
|
|
typedArrayTags[setTag] = typedArrayTags[stringTag] = |
|
|
|
|
typedArrayTags[weakMapTag] = false; |
|
|
|
|
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = |
|
|
|
|
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = |
|
|
|
|
typedArrayTags[errorTag] = typedArrayTags[funcTag] = |
|
|
|
|
typedArrayTags[mapTag] = typedArrayTags[numberTag] = |
|
|
|
|
typedArrayTags[objectTag] = typedArrayTags[regexpTag] = |
|
|
|
|
typedArrayTags[setTag] = typedArrayTags[stringTag] = |
|
|
|
|
typedArrayTags[weakMapTag] = false; |
|
|
|
|
|
|
|
|
|
/** Used to identify `toStringTag` values supported by `_.clone`. */ |
|
|
|
|
var cloneableTags = {}; |
|
|
|
|
cloneableTags[argsTag] = cloneableTags[arrayTag] = |
|
|
|
|
cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = |
|
|
|
|
cloneableTags[boolTag] = cloneableTags[dateTag] = |
|
|
|
|
cloneableTags[float32Tag] = cloneableTags[float64Tag] = |
|
|
|
|
cloneableTags[int8Tag] = cloneableTags[int16Tag] = |
|
|
|
|
cloneableTags[int32Tag] = cloneableTags[mapTag] = |
|
|
|
|
cloneableTags[numberTag] = cloneableTags[objectTag] = |
|
|
|
|
cloneableTags[regexpTag] = cloneableTags[setTag] = |
|
|
|
|
cloneableTags[stringTag] = cloneableTags[symbolTag] = |
|
|
|
|
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = |
|
|
|
|
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; |
|
|
|
|
cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = |
|
|
|
|
cloneableTags[boolTag] = cloneableTags[dateTag] = |
|
|
|
|
cloneableTags[float32Tag] = cloneableTags[float64Tag] = |
|
|
|
|
cloneableTags[int8Tag] = cloneableTags[int16Tag] = |
|
|
|
|
cloneableTags[int32Tag] = cloneableTags[mapTag] = |
|
|
|
|
cloneableTags[numberTag] = cloneableTags[objectTag] = |
|
|
|
|
cloneableTags[regexpTag] = cloneableTags[setTag] = |
|
|
|
|
cloneableTags[stringTag] = cloneableTags[symbolTag] = |
|
|
|
|
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = |
|
|
|
|
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; |
|
|
|
|
cloneableTags[errorTag] = cloneableTags[funcTag] = |
|
|
|
|
cloneableTags[weakMapTag] = false; |
|
|
|
|
cloneableTags[weakMapTag] = false; |
|
|
|
|
|
|
|
|
|
/** Used to map characters to HTML entities. */ |
|
|
|
|
var htmlEscapes = { |
|
|
|
@ -578,8 +578,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function baseIndexOf(array, value, fromIndex) { |
|
|
|
|
return value === value |
|
|
|
|
? strictIndexOf(array, value, fromIndex) |
|
|
|
|
: baseFindIndex(array, baseIsNaN, fromIndex); |
|
|
|
|
? strictIndexOf(array, value, fromIndex) |
|
|
|
|
: baseFindIndex(array, baseIsNaN, fromIndex); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -635,8 +635,8 @@
|
|
|
|
|
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { |
|
|
|
|
eachFunc(collection, function(value, index, collection) { |
|
|
|
|
accumulator = initAccum |
|
|
|
|
? (initAccum = false, value) |
|
|
|
|
: iteratee(accumulator, value, index, collection); |
|
|
|
|
? (initAccum = false, value) |
|
|
|
|
: iteratee(accumulator, value, index, collection); |
|
|
|
|
}); |
|
|
|
|
return accumulator; |
|
|
|
|
} |
|
|
|
@ -889,8 +889,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function safeGet(object, key) { |
|
|
|
|
return key == '__proto__' |
|
|
|
|
? undefined |
|
|
|
|
: object[key]; |
|
|
|
|
? undefined |
|
|
|
|
: object[key]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -941,8 +941,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function stringSize(string) { |
|
|
|
|
return hasUnicode(string) |
|
|
|
|
? unicodeSize(string) |
|
|
|
|
: asciiSize(string); |
|
|
|
|
? unicodeSize(string) |
|
|
|
|
: asciiSize(string); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -954,8 +954,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function stringToArray(string) { |
|
|
|
|
return hasUnicode(string) |
|
|
|
|
? unicodeToArray(string) |
|
|
|
|
: asciiToArray(string); |
|
|
|
|
? unicodeToArray(string) |
|
|
|
|
: asciiToArray(string); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -1024,8 +1024,8 @@
|
|
|
|
|
|
|
|
|
|
/** Used to detect if a method is native. */ |
|
|
|
|
var reIsNative = RegExp('^' + |
|
|
|
|
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') |
|
|
|
|
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' |
|
|
|
|
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') |
|
|
|
|
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/** Built-in value references. */ |
|
|
|
@ -1362,30 +1362,30 @@
|
|
|
|
|
var result = []; |
|
|
|
|
|
|
|
|
|
outer: |
|
|
|
|
while (length-- && resIndex < takeCount) { |
|
|
|
|
index += dir; |
|
|
|
|
|
|
|
|
|
var iterIndex = -1, |
|
|
|
|
value = array[index]; |
|
|
|
|
|
|
|
|
|
while (++iterIndex < iterLength) { |
|
|
|
|
var data = iteratees[iterIndex], |
|
|
|
|
iteratee = data.iteratee, |
|
|
|
|
type = data.type, |
|
|
|
|
computed = iteratee(value); |
|
|
|
|
|
|
|
|
|
if (type == LAZY_MAP_FLAG) { |
|
|
|
|
value = computed; |
|
|
|
|
} else if (!computed) { |
|
|
|
|
if (type == LAZY_FILTER_FLAG) { |
|
|
|
|
continue outer; |
|
|
|
|
} else { |
|
|
|
|
break outer; |
|
|
|
|
while (length-- && resIndex < takeCount) { |
|
|
|
|
index += dir; |
|
|
|
|
|
|
|
|
|
var iterIndex = -1, |
|
|
|
|
value = array[index]; |
|
|
|
|
|
|
|
|
|
while (++iterIndex < iterLength) { |
|
|
|
|
var data = iteratees[iterIndex], |
|
|
|
|
iteratee = data.iteratee, |
|
|
|
|
type = data.type, |
|
|
|
|
computed = iteratee(value); |
|
|
|
|
|
|
|
|
|
if (type == LAZY_MAP_FLAG) { |
|
|
|
|
value = computed; |
|
|
|
|
} else if (!computed) { |
|
|
|
|
if (type == LAZY_FILTER_FLAG) { |
|
|
|
|
continue outer; |
|
|
|
|
} else { |
|
|
|
|
break outer; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
result[resIndex++] = value; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
result[resIndex++] = value; |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1893,14 +1893,14 @@
|
|
|
|
|
for (var key in value) { |
|
|
|
|
if ((inherited || hasOwnProperty.call(value, key)) && |
|
|
|
|
!(skipIndexes && ( |
|
|
|
|
// Safari 9 has enumerable `arguments.length` in strict mode.
|
|
|
|
|
key == 'length' || |
|
|
|
|
// Node.js 0.10 has enumerable non-index properties on buffers.
|
|
|
|
|
(isBuff && (key == 'offset' || key == 'parent')) || |
|
|
|
|
// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|
|
|
|
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || |
|
|
|
|
// Skip index properties.
|
|
|
|
|
isIndex(key, length) |
|
|
|
|
// Safari 9 has enumerable `arguments.length` in strict mode.
|
|
|
|
|
key == 'length' || |
|
|
|
|
// Node.js 0.10 has enumerable non-index properties on buffers.
|
|
|
|
|
(isBuff && (key == 'offset' || key == 'parent')) || |
|
|
|
|
// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|
|
|
|
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || |
|
|
|
|
// Skip index properties.
|
|
|
|
|
isIndex(key, length) |
|
|
|
|
))) { |
|
|
|
|
result.push(key); |
|
|
|
|
} |
|
|
|
@ -2115,8 +2115,8 @@
|
|
|
|
|
result = (isFlat || isFunc) ? {} : initCloneObject(value); |
|
|
|
|
if (!isDeep) { |
|
|
|
|
return isFlat |
|
|
|
|
? copySymbolsIn(value, baseAssignIn(result, value)) |
|
|
|
|
: copySymbols(value, baseAssign(result, value)); |
|
|
|
|
? copySymbolsIn(value, baseAssignIn(result, value)) |
|
|
|
|
: copySymbols(value, baseAssign(result, value)); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if (!cloneableTags[tag]) { |
|
|
|
@ -2150,8 +2150,8 @@
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var keysFunc = isFull |
|
|
|
|
? (isFlat ? getAllKeysIn : getAllKeys) |
|
|
|
|
: (isFlat ? keysIn : keys); |
|
|
|
|
? (isFlat ? getAllKeysIn : getAllKeys) |
|
|
|
|
: (isFlat ? keysIn : keys); |
|
|
|
|
|
|
|
|
|
var props = isArr ? undefined : keysFunc(value); |
|
|
|
|
arrayEach(props || value, function(subValue, key) { |
|
|
|
@ -2217,24 +2217,24 @@
|
|
|
|
|
values = new SetCache(values); |
|
|
|
|
} |
|
|
|
|
outer: |
|
|
|
|
while (++index < length) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee == null ? value : iteratee(value); |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (isCommon && computed === computed) { |
|
|
|
|
var valuesIndex = valuesLength; |
|
|
|
|
while (valuesIndex--) { |
|
|
|
|
if (values[valuesIndex] === computed) { |
|
|
|
|
continue outer; |
|
|
|
|
while (++index < length) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee == null ? value : iteratee(value); |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (isCommon && computed === computed) { |
|
|
|
|
var valuesIndex = valuesLength; |
|
|
|
|
while (valuesIndex--) { |
|
|
|
|
if (values[valuesIndex] === computed) { |
|
|
|
|
continue outer; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
else if (!includes(values, computed, comparator)) { |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
else if (!includes(values, computed, comparator)) { |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2285,9 +2285,9 @@
|
|
|
|
|
current = iteratee(value); |
|
|
|
|
|
|
|
|
|
if (current != null && (computed === undefined |
|
|
|
|
? (current === current && !isSymbol(current)) |
|
|
|
|
: comparator(current, computed) |
|
|
|
|
)) { |
|
|
|
|
? (current === current && !isSymbol(current)) |
|
|
|
|
: comparator(current, computed) |
|
|
|
|
)) { |
|
|
|
|
var computed = current, |
|
|
|
|
result = value; |
|
|
|
|
} |
|
|
|
@ -2459,8 +2459,8 @@
|
|
|
|
|
return value === undefined ? undefinedTag : nullTag; |
|
|
|
|
} |
|
|
|
|
return (symToStringTag && symToStringTag in Object(value)) |
|
|
|
|
? getRawTag(value) |
|
|
|
|
: objectToString(value); |
|
|
|
|
? getRawTag(value) |
|
|
|
|
: objectToString(value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -2526,8 +2526,8 @@
|
|
|
|
|
} |
|
|
|
|
maxLength = nativeMin(array.length, maxLength); |
|
|
|
|
caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) |
|
|
|
|
? new SetCache(othIndex && array) |
|
|
|
|
: undefined; |
|
|
|
|
? new SetCache(othIndex && array) |
|
|
|
|
: undefined; |
|
|
|
|
} |
|
|
|
|
array = arrays[0]; |
|
|
|
|
|
|
|
|
@ -2535,31 +2535,31 @@
|
|
|
|
|
seen = caches[0]; |
|
|
|
|
|
|
|
|
|
outer: |
|
|
|
|
while (++index < length && result.length < maxLength) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee ? iteratee(value) : value; |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (!(seen |
|
|
|
|
? cacheHas(seen, computed) |
|
|
|
|
: includes(result, computed, comparator) |
|
|
|
|
while (++index < length && result.length < maxLength) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee ? iteratee(value) : value; |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (!(seen |
|
|
|
|
? cacheHas(seen, computed) |
|
|
|
|
: includes(result, computed, comparator) |
|
|
|
|
)) { |
|
|
|
|
othIndex = othLength; |
|
|
|
|
while (--othIndex) { |
|
|
|
|
var cache = caches[othIndex]; |
|
|
|
|
if (!(cache |
|
|
|
|
? cacheHas(cache, computed) |
|
|
|
|
: includes(arrays[othIndex], computed, comparator)) |
|
|
|
|
othIndex = othLength; |
|
|
|
|
while (--othIndex) { |
|
|
|
|
var cache = caches[othIndex]; |
|
|
|
|
if (!(cache |
|
|
|
|
? cacheHas(cache, computed) |
|
|
|
|
: includes(arrays[othIndex], computed, comparator)) |
|
|
|
|
) { |
|
|
|
|
continue outer; |
|
|
|
|
continue outer; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (seen) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (seen) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2681,8 +2681,8 @@
|
|
|
|
|
if (isSameTag && !objIsObj) { |
|
|
|
|
stack || (stack = new Stack); |
|
|
|
|
return (objIsArr || isTypedArray(object)) |
|
|
|
|
? equalArrays(object, other, bitmask, customizer, equalFunc, stack) |
|
|
|
|
: equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); |
|
|
|
|
? equalArrays(object, other, bitmask, customizer, equalFunc, stack) |
|
|
|
|
: equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); |
|
|
|
|
} |
|
|
|
|
if (!(bitmask & COMPARE_PARTIAL_FLAG)) { |
|
|
|
|
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), |
|
|
|
@ -2736,9 +2736,9 @@
|
|
|
|
|
while (index--) { |
|
|
|
|
var data = matchData[index]; |
|
|
|
|
if ((noCustomizer && data[2]) |
|
|
|
|
? data[1] !== object[data[0]] |
|
|
|
|
: !(data[0] in object) |
|
|
|
|
) { |
|
|
|
|
? data[1] !== object[data[0]] |
|
|
|
|
: !(data[0] in object) |
|
|
|
|
) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -2758,9 +2758,9 @@
|
|
|
|
|
var result = customizer(objValue, srcValue, key, object, source, stack); |
|
|
|
|
} |
|
|
|
|
if (!(result === undefined |
|
|
|
|
? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) |
|
|
|
|
: result |
|
|
|
|
)) { |
|
|
|
|
? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) |
|
|
|
|
: result |
|
|
|
|
)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -2815,7 +2815,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function baseIsTypedArray(value) { |
|
|
|
|
return isObjectLike(value) && |
|
|
|
|
isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; |
|
|
|
|
isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -2836,8 +2836,8 @@
|
|
|
|
|
} |
|
|
|
|
if (typeof value == 'object') { |
|
|
|
|
return isArray(value) |
|
|
|
|
? baseMatchesProperty(value[0], value[1]) |
|
|
|
|
: baseMatches(value); |
|
|
|
|
? baseMatchesProperty(value[0], value[1]) |
|
|
|
|
: baseMatches(value); |
|
|
|
|
} |
|
|
|
|
return property(value); |
|
|
|
|
} |
|
|
|
@ -2947,8 +2947,8 @@
|
|
|
|
|
return function(object) { |
|
|
|
|
var objValue = get(object, path); |
|
|
|
|
return (objValue === undefined && objValue === srcValue) |
|
|
|
|
? hasIn(object, path) |
|
|
|
|
: baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); |
|
|
|
|
? hasIn(object, path) |
|
|
|
|
: baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2974,8 +2974,8 @@
|
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
var newValue = customizer |
|
|
|
|
? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) |
|
|
|
|
: undefined; |
|
|
|
|
? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) |
|
|
|
|
: undefined; |
|
|
|
|
|
|
|
|
|
if (newValue === undefined) { |
|
|
|
|
newValue = srcValue; |
|
|
|
@ -3010,8 +3010,8 @@
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
var newValue = customizer |
|
|
|
|
? customizer(objValue, srcValue, (key + ''), object, source, stack) |
|
|
|
|
: undefined; |
|
|
|
|
? customizer(objValue, srcValue, (key + ''), object, source, stack) |
|
|
|
|
: undefined; |
|
|
|
|
|
|
|
|
|
var isCommon = newValue === undefined; |
|
|
|
|
|
|
|
|
@ -3218,8 +3218,8 @@
|
|
|
|
|
newValue = customizer ? customizer(objValue, key, nested) : undefined; |
|
|
|
|
if (newValue === undefined) { |
|
|
|
|
newValue = isObject(objValue) |
|
|
|
|
? objValue |
|
|
|
|
: (isIndex(path[index + 1]) ? [] : {}); |
|
|
|
|
? objValue |
|
|
|
|
: (isIndex(path[index + 1]) ? [] : {}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
assignValue(nested, key, newValue); |
|
|
|
@ -3365,30 +3365,30 @@
|
|
|
|
|
seen = iteratee ? [] : result; |
|
|
|
|
} |
|
|
|
|
outer: |
|
|
|
|
while (++index < length) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee ? iteratee(value) : value; |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (isCommon && computed === computed) { |
|
|
|
|
var seenIndex = seen.length; |
|
|
|
|
while (seenIndex--) { |
|
|
|
|
if (seen[seenIndex] === computed) { |
|
|
|
|
continue outer; |
|
|
|
|
while (++index < length) { |
|
|
|
|
var value = array[index], |
|
|
|
|
computed = iteratee ? iteratee(value) : value; |
|
|
|
|
|
|
|
|
|
value = (comparator || value !== 0) ? value : 0; |
|
|
|
|
if (isCommon && computed === computed) { |
|
|
|
|
var seenIndex = seen.length; |
|
|
|
|
while (seenIndex--) { |
|
|
|
|
if (seen[seenIndex] === computed) { |
|
|
|
|
continue outer; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (iteratee) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
else if (!includes(seen, computed, comparator)) { |
|
|
|
|
if (seen !== result) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (iteratee) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
else if (!includes(seen, computed, comparator)) { |
|
|
|
|
if (seen !== result) { |
|
|
|
|
seen.push(computed); |
|
|
|
|
} |
|
|
|
|
result.push(value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -3762,8 +3762,8 @@
|
|
|
|
|
var key = props[index]; |
|
|
|
|
|
|
|
|
|
var newValue = customizer |
|
|
|
|
? customizer(object[key], source[key], key, object, source) |
|
|
|
|
: undefined; |
|
|
|
|
? customizer(object[key], source[key], key, object, source) |
|
|
|
|
: undefined; |
|
|
|
|
|
|
|
|
|
if (newValue === undefined) { |
|
|
|
|
newValue = source[key]; |
|
|
|
@ -3833,8 +3833,8 @@
|
|
|
|
|
guard = length > 2 ? sources[2] : undefined; |
|
|
|
|
|
|
|
|
|
customizer = (assigner.length > 3 && typeof customizer == 'function') |
|
|
|
|
? (length--, customizer) |
|
|
|
|
: undefined; |
|
|
|
|
? (length--, customizer) |
|
|
|
|
: undefined; |
|
|
|
|
|
|
|
|
|
if (guard && isIterateeCall(sources[0], sources[1], guard)) { |
|
|
|
|
customizer = length < 3 ? undefined : customizer; |
|
|
|
@ -3980,14 +3980,14 @@
|
|
|
|
|
args[index] = arguments[index]; |
|
|
|
|
} |
|
|
|
|
var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) |
|
|
|
|
? [] |
|
|
|
|
: replaceHolders(args, placeholder); |
|
|
|
|
? [] |
|
|
|
|
: replaceHolders(args, placeholder); |
|
|
|
|
|
|
|
|
|
length -= holders.length; |
|
|
|
|
if (length < arity) { |
|
|
|
|
return createRecurry( |
|
|
|
|
func, bitmask, createHybrid, wrapper.placeholder, undefined, |
|
|
|
|
args, holders, undefined, undefined, arity - length); |
|
|
|
|
func, bitmask, createHybrid, wrapper.placeholder, undefined, |
|
|
|
|
args, holders, undefined, undefined, arity - length); |
|
|
|
|
} |
|
|
|
|
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; |
|
|
|
|
return apply(fn, this, args); |
|
|
|
@ -4064,8 +4064,8 @@
|
|
|
|
|
if (isCurried && length < arity) { |
|
|
|
|
var newHolders = replaceHolders(args, placeholder); |
|
|
|
|
return createRecurry( |
|
|
|
|
func, bitmask, createHybrid, wrapper.placeholder, thisArg, |
|
|
|
|
args, newHolders, argPos, ary, arity - length |
|
|
|
|
func, bitmask, createHybrid, wrapper.placeholder, thisArg, |
|
|
|
|
args, newHolders, argPos, ary, arity - length |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
var thisBinding = isBind ? thisArg : this, |
|
|
|
@ -4277,8 +4277,8 @@
|
|
|
|
|
partials = newData[3]; |
|
|
|
|
holders = newData[4]; |
|
|
|
|
arity = newData[9] = newData[9] === undefined |
|
|
|
|
? (isBindKey ? 0 : func.length) |
|
|
|
|
: nativeMax(newData[9] - length, 0); |
|
|
|
|
? (isBindKey ? 0 : func.length) |
|
|
|
|
: nativeMax(newData[9] - length, 0); |
|
|
|
|
|
|
|
|
|
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { |
|
|
|
|
bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); |
|
|
|
@ -4373,8 +4373,8 @@
|
|
|
|
|
|
|
|
|
|
if (customizer) { |
|
|
|
|
var compared = isPartial |
|
|
|
|
? customizer(othValue, arrValue, index, other, array, stack) |
|
|
|
|
: customizer(arrValue, othValue, index, array, other, stack); |
|
|
|
|
? customizer(othValue, arrValue, index, other, array, stack) |
|
|
|
|
: customizer(arrValue, othValue, index, array, other, stack); |
|
|
|
|
} |
|
|
|
|
if (compared !== undefined) { |
|
|
|
|
if (compared) { |
|
|
|
@ -4386,18 +4386,18 @@
|
|
|
|
|
// Recursively compare arrays (susceptible to call stack limits).
|
|
|
|
|
if (seen) { |
|
|
|
|
if (!arraySome(other, function(othValue, othIndex) { |
|
|
|
|
if (!cacheHas(seen, othIndex) && |
|
|
|
|
(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { |
|
|
|
|
return seen.push(othIndex); |
|
|
|
|
} |
|
|
|
|
})) { |
|
|
|
|
if (!cacheHas(seen, othIndex) && |
|
|
|
|
(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { |
|
|
|
|
return seen.push(othIndex); |
|
|
|
|
} |
|
|
|
|
})) { |
|
|
|
|
result = false; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} else if (!( |
|
|
|
|
arrValue === othValue || |
|
|
|
|
equalFunc(arrValue, othValue, bitmask, customizer, stack) |
|
|
|
|
)) { |
|
|
|
|
arrValue === othValue || |
|
|
|
|
equalFunc(arrValue, othValue, bitmask, customizer, stack) |
|
|
|
|
)) { |
|
|
|
|
result = false; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -4536,14 +4536,14 @@
|
|
|
|
|
|
|
|
|
|
if (customizer) { |
|
|
|
|
var compared = isPartial |
|
|
|
|
? customizer(othValue, objValue, key, other, object, stack) |
|
|
|
|
: customizer(objValue, othValue, key, object, other, stack); |
|
|
|
|
? customizer(othValue, objValue, key, other, object, stack) |
|
|
|
|
: customizer(objValue, othValue, key, object, other, stack); |
|
|
|
|
} |
|
|
|
|
// Recursively compare objects (susceptible to call stack limits).
|
|
|
|
|
if (!(compared === undefined |
|
|
|
|
? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) |
|
|
|
|
: compared |
|
|
|
|
)) { |
|
|
|
|
? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) |
|
|
|
|
: compared |
|
|
|
|
)) { |
|
|
|
|
result = false; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -4557,7 +4557,7 @@
|
|
|
|
|
if (objCtor != othCtor && |
|
|
|
|
('constructor' in object && 'constructor' in other) && |
|
|
|
|
!(typeof objCtor == 'function' && objCtor instanceof objCtor && |
|
|
|
|
typeof othCtor == 'function' && othCtor instanceof othCtor)) { |
|
|
|
|
typeof othCtor == 'function' && othCtor instanceof othCtor)) { |
|
|
|
|
result = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -4656,8 +4656,8 @@
|
|
|
|
|
function getMapData(map, key) { |
|
|
|
|
var data = map.__data__; |
|
|
|
|
return isKeyable(key) |
|
|
|
|
? data[typeof key == 'string' ? 'string' : 'hash'] |
|
|
|
|
: data.map; |
|
|
|
|
? data[typeof key == 'string' ? 'string' : 'hash'] |
|
|
|
|
: data.map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -4854,7 +4854,7 @@
|
|
|
|
|
} |
|
|
|
|
length = object == null ? 0 : object.length; |
|
|
|
|
return !!length && isLength(length) && isIndex(key, length) && |
|
|
|
|
(isArray(object) || isArguments(object)); |
|
|
|
|
(isArray(object) || isArguments(object)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -4885,8 +4885,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function initCloneObject(object) { |
|
|
|
|
return (typeof object.constructor == 'function' && !isPrototype(object)) |
|
|
|
|
? baseCreate(getPrototype(object)) |
|
|
|
|
: {}; |
|
|
|
|
? baseCreate(getPrototype(object)) |
|
|
|
|
: {}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -4965,7 +4965,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isFlattenable(value) { |
|
|
|
|
return isArray(value) || isArguments(value) || |
|
|
|
|
!!(spreadableSymbol && value && value[spreadableSymbol]); |
|
|
|
|
!!(spreadableSymbol && value && value[spreadableSymbol]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -4981,9 +4981,9 @@
|
|
|
|
|
length = length == null ? MAX_SAFE_INTEGER : length; |
|
|
|
|
|
|
|
|
|
return !!length && |
|
|
|
|
(type == 'number' || |
|
|
|
|
(type != 'symbol' && reIsUint.test(value))) && |
|
|
|
|
(value > -1 && value % 1 == 0 && value < length); |
|
|
|
|
(type == 'number' || |
|
|
|
|
(type != 'symbol' && reIsUint.test(value))) && |
|
|
|
|
(value > -1 && value % 1 == 0 && value < length); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -5002,9 +5002,9 @@
|
|
|
|
|
} |
|
|
|
|
var type = typeof index; |
|
|
|
|
if (type == 'number' |
|
|
|
|
? (isArrayLike(object) && isIndex(index, object.length)) |
|
|
|
|
: (type == 'string' && index in object) |
|
|
|
|
) { |
|
|
|
|
? (isArrayLike(object) && isIndex(index, object.length)) |
|
|
|
|
: (type == 'string' && index in object) |
|
|
|
|
) { |
|
|
|
|
return eq(object[index], value); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
@ -5028,7 +5028,7 @@
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || |
|
|
|
|
(object != null && value in Object(object)); |
|
|
|
|
(object != null && value in Object(object)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -5041,8 +5041,8 @@
|
|
|
|
|
function isKeyable(value) { |
|
|
|
|
var type = typeof value; |
|
|
|
|
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') |
|
|
|
|
? (value !== '__proto__') |
|
|
|
|
: (value === null); |
|
|
|
|
? (value !== '__proto__') |
|
|
|
|
: (value === null); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -5119,7 +5119,7 @@
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
return object[key] === srcValue && |
|
|
|
|
(srcValue !== undefined || (key in Object(object))); |
|
|
|
|
(srcValue !== undefined || (key in Object(object))); |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -5166,9 +5166,9 @@
|
|
|
|
|
isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); |
|
|
|
|
|
|
|
|
|
var isCombo = |
|
|
|
|
((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || |
|
|
|
|
((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || |
|
|
|
|
((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); |
|
|
|
|
((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || |
|
|
|
|
((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || |
|
|
|
|
((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); |
|
|
|
|
|
|
|
|
|
// Exit early if metadata can't be merged.
|
|
|
|
|
if (!(isCommon || isCombo)) { |
|
|
|
@ -5558,8 +5558,8 @@
|
|
|
|
|
*/ |
|
|
|
|
var difference = baseRest(function(array, values) { |
|
|
|
|
return isArrayLikeObject(array) |
|
|
|
|
? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) |
|
|
|
|
: []; |
|
|
|
|
? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) |
|
|
|
|
: []; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -5687,8 +5687,8 @@
|
|
|
|
|
if (fromIndex !== undefined) { |
|
|
|
|
index = toInteger(fromIndex); |
|
|
|
|
index = fromIndex < 0 |
|
|
|
|
? nativeMax(length + index, 0) |
|
|
|
|
: nativeMin(index, length - 1); |
|
|
|
|
? nativeMax(length + index, 0) |
|
|
|
|
: nativeMin(index, length - 1); |
|
|
|
|
} |
|
|
|
|
return baseFindIndex(array, baseIteratee(predicate, 3), index, true); |
|
|
|
|
} |
|
|
|
@ -5827,8 +5827,8 @@
|
|
|
|
|
var intersection = baseRest(function(arrays) { |
|
|
|
|
var mapped = arrayMap(arrays, castArrayLikeObject); |
|
|
|
|
return (mapped.length && mapped[0] === arrays[0]) |
|
|
|
|
? baseIntersection(mapped) |
|
|
|
|
: []; |
|
|
|
|
? baseIntersection(mapped) |
|
|
|
|
: []; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -6103,8 +6103,8 @@
|
|
|
|
|
*/ |
|
|
|
|
var without = baseRest(function(array, values) { |
|
|
|
|
return isArrayLikeObject(array) |
|
|
|
|
? baseDifference(array, values) |
|
|
|
|
: []; |
|
|
|
|
? baseDifference(array, values) |
|
|
|
|
: []; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -7174,8 +7174,8 @@
|
|
|
|
|
timeWaiting = wait - timeSinceLastCall; |
|
|
|
|
|
|
|
|
|
return maxing |
|
|
|
|
? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) |
|
|
|
|
: timeWaiting; |
|
|
|
|
? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) |
|
|
|
|
: timeWaiting; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function shouldInvoke(time) { |
|
|
|
@ -7186,7 +7186,7 @@
|
|
|
|
|
// trailing edge, the system time has gone backwards and we're treating
|
|
|
|
|
// it as the trailing edge, or we've hit the `maxWait` limit.
|
|
|
|
|
return (lastCallTime === undefined || (timeSinceLastCall >= wait) || |
|
|
|
|
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); |
|
|
|
|
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function timerExpired() { |
|
|
|
@ -7625,7 +7625,7 @@
|
|
|
|
|
*/ |
|
|
|
|
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { |
|
|
|
|
return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && |
|
|
|
|
!propertyIsEnumerable.call(value, 'callee'); |
|
|
|
|
!propertyIsEnumerable.call(value, 'callee'); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -7730,7 +7730,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isBoolean(value) { |
|
|
|
|
return value === true || value === false || |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == boolTag); |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == boolTag); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -7810,7 +7810,7 @@
|
|
|
|
|
} |
|
|
|
|
if (isArrayLike(value) && |
|
|
|
|
(isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || |
|
|
|
|
isBuffer(value) || isTypedArray(value) || isArguments(value))) { |
|
|
|
|
isBuffer(value) || isTypedArray(value) || isArguments(value))) { |
|
|
|
|
return !value.length; |
|
|
|
|
} |
|
|
|
|
var tag = getTag(value); |
|
|
|
@ -7945,7 +7945,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isLength(value) { |
|
|
|
|
return typeof value == 'number' && |
|
|
|
|
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; |
|
|
|
|
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -8109,7 +8109,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isNumber(value) { |
|
|
|
|
return typeof value == 'number' || |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == numberTag); |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == numberTag); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -8150,7 +8150,7 @@
|
|
|
|
|
} |
|
|
|
|
var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; |
|
|
|
|
return typeof Ctor == 'function' && Ctor instanceof Ctor && |
|
|
|
|
funcToString.call(Ctor) == objectCtorString; |
|
|
|
|
funcToString.call(Ctor) == objectCtorString; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -8210,7 +8210,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isString(value) { |
|
|
|
|
return typeof value == 'string' || |
|
|
|
|
(!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); |
|
|
|
|
(!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -8232,7 +8232,7 @@
|
|
|
|
|
*/ |
|
|
|
|
function isSymbol(value) { |
|
|
|
|
return typeof value == 'symbol' || |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == symbolTag); |
|
|
|
|
(isObjectLike(value) && baseGetTag(value) == symbolTag); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -8422,8 +8422,8 @@
|
|
|
|
|
value = value.replace(reTrim, ''); |
|
|
|
|
var isBinary = reIsBinary.test(value); |
|
|
|
|
return (isBinary || reIsOctal.test(value)) |
|
|
|
|
? freeParseInt(value.slice(2), isBinary ? 2 : 8) |
|
|
|
|
: (reIsBadHex.test(value) ? NAN : +value); |
|
|
|
|
? freeParseInt(value.slice(2), isBinary ? 2 : 8) |
|
|
|
|
: (reIsBadHex.test(value) ? NAN : +value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -9164,6 +9164,38 @@
|
|
|
|
|
return object; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist, |
|
|
|
|
* it's created. Arrays are created for missing index properties while objects |
|
|
|
|
* are created for all other missing properties. Use `_.setWith` to customize |
|
|
|
|
* `path` creation. |
|
|
|
|
* |
|
|
|
|
* **Note:** This method mutates `object`. |
|
|
|
|
* |
|
|
|
|
* @static |
|
|
|
|
* @memberOf _ |
|
|
|
|
* @since 3.7.0 |
|
|
|
|
* @category Object |
|
|
|
|
* @param {Object} object The object to modify. |
|
|
|
|
* @param {Array|string} path The path of the property to set. |
|
|
|
|
* @param {*} value The value to set. |
|
|
|
|
* @returns {Object} Returns `object`. |
|
|
|
|
* @example |
|
|
|
|
* |
|
|
|
|
* var object = { 'a': [{ 'b': { 'c': 3 } }] }; |
|
|
|
|
* |
|
|
|
|
* _.set(object, 'a[0].b.c', 4); |
|
|
|
|
* console.log(object.a[0].b.c); |
|
|
|
|
* // => 4
|
|
|
|
|
* |
|
|
|
|
* _.set(object, ['x', '0', 'y', 'z'], 5); |
|
|
|
|
* console.log(object.x[0].y.z); |
|
|
|
|
* // => 5
|
|
|
|
|
*/ |
|
|
|
|
function set(object, path, value) { |
|
|
|
|
return object == null ? object : baseSet(object, path, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Creates an array of the own enumerable string keyed property values of `object`. |
|
|
|
|
* |
|
|
|
@ -9334,8 +9366,8 @@
|
|
|
|
|
function escape(string) { |
|
|
|
|
string = toString(string); |
|
|
|
|
return (string && reHasUnescapedHtml.test(string)) |
|
|
|
|
? string.replace(reUnescapedHtml, escapeHtmlChar) |
|
|
|
|
: string; |
|
|
|
|
? string.replace(reUnescapedHtml, escapeHtmlChar) |
|
|
|
|
: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -9761,8 +9793,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function max(array) { |
|
|
|
|
return (array && array.length) |
|
|
|
|
? baseExtremum(array, identity, baseGt) |
|
|
|
|
: undefined; |
|
|
|
|
? baseExtremum(array, identity, baseGt) |
|
|
|
|
: undefined; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -9785,8 +9817,8 @@
|
|
|
|
|
*/ |
|
|
|
|
function min(array) { |
|
|
|
|
return (array && array.length) |
|
|
|
|
? baseExtremum(array, identity, baseLt) |
|
|
|
|
: undefined; |
|
|
|
|
? baseExtremum(array, identity, baseLt) |
|
|
|
|
: undefined; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*------------------------------------------------------------------------*/ |
|
|
|
@ -9829,6 +9861,7 @@
|
|
|
|
|
lodash.range = range; |
|
|
|
|
lodash.reject = reject; |
|
|
|
|
lodash.rest = rest; |
|
|
|
|
lodash.set = set; |
|
|
|
|
lodash.slice = slice; |
|
|
|
|
lodash.sortBy = sortBy; |
|
|
|
|
lodash.take = take; |
|
|
|
@ -9932,8 +9965,8 @@
|
|
|
|
|
n = n === undefined ? 1 : nativeMax(toInteger(n), 0); |
|
|
|
|
|
|
|
|
|
var result = (this.__filtered__ && !index) |
|
|
|
|
? new LazyWrapper(this) |
|
|
|
|
: this.clone(); |
|
|
|
|
? new LazyWrapper(this) |
|
|
|
|
: this.clone(); |
|
|
|
|
|
|
|
|
|
if (result.__filtered__) { |
|
|
|
|
result.__takeCount__ = nativeMin(n, result.__takeCount__); |
|
|
|
|