mapbox-gl-rails 2.3.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -119,7 +119,8 @@ polyline.encode = function(coordinates, precision) {
119
119
  function flipped(coords) {
120
120
  var flipped = [];
121
121
  for (var i = 0; i < coords.length; i++) {
122
- flipped.push(coords[i].slice().reverse());
122
+ var coord = coords[i].slice();
123
+ flipped.push([coord[1], coord[0]]);
123
124
  }
124
125
  return flipped;
125
126
  }
@@ -2938,9 +2939,9 @@ module.exports = isEqual;
2938
2939
  },{}],9:[function(require,module,exports){
2939
2940
  (function (global){
2940
2941
  /**
2941
- * lodash (Custom Build) <https://lodash.com/>
2942
+ * Lodash (Custom Build) <https://lodash.com/>
2942
2943
  * Build: `lodash modularize exports="npm" -o ./`
2943
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
2944
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
2944
2945
  * Released under MIT license <https://lodash.com/license>
2945
2946
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
2946
2947
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -2948,28 +2949,68 @@ module.exports = isEqual;
2948
2949
  var reInterpolate = require('lodash._reinterpolate'),
2949
2950
  templateSettings = require('lodash.templatesettings');
2950
2951
 
2952
+ /** Used to detect hot functions by number of calls within a span of milliseconds. */
2953
+ var HOT_COUNT = 800,
2954
+ HOT_SPAN = 16;
2955
+
2951
2956
  /** Used as references for various `Number` constants. */
2952
2957
  var INFINITY = 1 / 0,
2953
2958
  MAX_SAFE_INTEGER = 9007199254740991;
2954
2959
 
2955
2960
  /** `Object#toString` result references. */
2956
2961
  var argsTag = '[object Arguments]',
2962
+ arrayTag = '[object Array]',
2963
+ asyncTag = '[object AsyncFunction]',
2964
+ boolTag = '[object Boolean]',
2965
+ dateTag = '[object Date]',
2966
+ domExcTag = '[object DOMException]',
2957
2967
  errorTag = '[object Error]',
2958
2968
  funcTag = '[object Function]',
2959
2969
  genTag = '[object GeneratorFunction]',
2960
- symbolTag = '[object Symbol]';
2970
+ mapTag = '[object Map]',
2971
+ numberTag = '[object Number]',
2972
+ nullTag = '[object Null]',
2973
+ objectTag = '[object Object]',
2974
+ proxyTag = '[object Proxy]',
2975
+ regexpTag = '[object RegExp]',
2976
+ setTag = '[object Set]',
2977
+ stringTag = '[object String]',
2978
+ symbolTag = '[object Symbol]',
2979
+ undefinedTag = '[object Undefined]',
2980
+ weakMapTag = '[object WeakMap]';
2981
+
2982
+ var arrayBufferTag = '[object ArrayBuffer]',
2983
+ dataViewTag = '[object DataView]',
2984
+ float32Tag = '[object Float32Array]',
2985
+ float64Tag = '[object Float64Array]',
2986
+ int8Tag = '[object Int8Array]',
2987
+ int16Tag = '[object Int16Array]',
2988
+ int32Tag = '[object Int32Array]',
2989
+ uint8Tag = '[object Uint8Array]',
2990
+ uint8ClampedTag = '[object Uint8ClampedArray]',
2991
+ uint16Tag = '[object Uint16Array]',
2992
+ uint32Tag = '[object Uint32Array]';
2961
2993
 
2962
2994
  /** Used to match empty string literals in compiled template source. */
2963
2995
  var reEmptyStringLeading = /\b__p \+= '';/g,
2964
2996
  reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
2965
2997
  reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
2966
2998
 
2999
+ /**
3000
+ * Used to match `RegExp`
3001
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
3002
+ */
3003
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
3004
+
2967
3005
  /**
2968
3006
  * Used to match
2969
3007
  * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
2970
3008
  */
2971
3009
  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
2972
3010
 
3011
+ /** Used to detect host constructors (Safari). */
3012
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
3013
+
2973
3014
  /** Used to detect unsigned integer values. */
2974
3015
  var reIsUint = /^(?:0|[1-9]\d*)$/;
2975
3016
 
@@ -2979,6 +3020,22 @@ var reNoMatch = /($^)/;
2979
3020
  /** Used to match unescaped characters in compiled string literals. */
2980
3021
  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
2981
3022
 
3023
+ /** Used to identify `toStringTag` values of typed arrays. */
3024
+ var typedArrayTags = {};
3025
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
3026
+ typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
3027
+ typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
3028
+ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
3029
+ typedArrayTags[uint32Tag] = true;
3030
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
3031
+ typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
3032
+ typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
3033
+ typedArrayTags[errorTag] = typedArrayTags[funcTag] =
3034
+ typedArrayTags[mapTag] = typedArrayTags[numberTag] =
3035
+ typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
3036
+ typedArrayTags[setTag] = typedArrayTags[stringTag] =
3037
+ typedArrayTags[weakMapTag] = false;
3038
+
2982
3039
  /** Used to escape characters for inclusion in compiled string literals. */
2983
3040
  var stringEscapes = {
2984
3041
  '\\': '\\',
@@ -2998,6 +3055,36 @@ var freeSelf = typeof self == 'object' && self && self.Object === Object && self
2998
3055
  /** Used as a reference to the global object. */
2999
3056
  var root = freeGlobal || freeSelf || Function('return this')();
3000
3057
 
3058
+ /** Detect free variable `exports`. */
3059
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
3060
+
3061
+ /** Detect free variable `module`. */
3062
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
3063
+
3064
+ /** Detect the popular CommonJS extension `module.exports`. */
3065
+ var moduleExports = freeModule && freeModule.exports === freeExports;
3066
+
3067
+ /** Detect free variable `process` from Node.js. */
3068
+ var freeProcess = moduleExports && freeGlobal.process;
3069
+
3070
+ /** Used to access faster Node.js helpers. */
3071
+ var nodeUtil = (function() {
3072
+ try {
3073
+ // Use `util.types` for Node.js 10+.
3074
+ var types = freeModule && freeModule.require && freeModule.require('util').types;
3075
+
3076
+ if (types) {
3077
+ return types;
3078
+ }
3079
+
3080
+ // Legacy `process.binding('util')` for Node.js < 10.
3081
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
3082
+ } catch (e) {}
3083
+ }());
3084
+
3085
+ /* Node.js helper references. */
3086
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
3087
+
3001
3088
  /**
3002
3089
  * A faster alternative to `Function#apply`, this function invokes `func`
3003
3090
  * with the `this` binding of `thisArg` and the arguments of `args`.
@@ -3029,7 +3116,7 @@ function apply(func, thisArg, args) {
3029
3116
  */
3030
3117
  function arrayMap(array, iteratee) {
3031
3118
  var index = -1,
3032
- length = array ? array.length : 0,
3119
+ length = array == null ? 0 : array.length,
3033
3120
  result = Array(length);
3034
3121
 
3035
3122
  while (++index < length) {
@@ -3057,6 +3144,19 @@ function baseTimes(n, iteratee) {
3057
3144
  return result;
3058
3145
  }
3059
3146
 
3147
+ /**
3148
+ * The base implementation of `_.unary` without support for storing metadata.
3149
+ *
3150
+ * @private
3151
+ * @param {Function} func The function to cap arguments for.
3152
+ * @returns {Function} Returns the new capped function.
3153
+ */
3154
+ function baseUnary(func) {
3155
+ return function(value) {
3156
+ return func(value);
3157
+ };
3158
+ }
3159
+
3060
3160
  /**
3061
3161
  * The base implementation of `_.values` and `_.valuesIn` which creates an
3062
3162
  * array of `object` property values corresponding to the property names
@@ -3084,6 +3184,18 @@ function escapeStringChar(chr) {
3084
3184
  return '\\' + stringEscapes[chr];
3085
3185
  }
3086
3186
 
3187
+ /**
3188
+ * Gets the value at `key` of `object`.
3189
+ *
3190
+ * @private
3191
+ * @param {Object} [object] The object to query.
3192
+ * @param {string} key The key of the property to get.
3193
+ * @returns {*} Returns the property value.
3194
+ */
3195
+ function getValue(object, key) {
3196
+ return object == null ? undefined : object[key];
3197
+ }
3198
+
3087
3199
  /**
3088
3200
  * Creates a unary function that invokes `func` with its argument transformed.
3089
3201
  *
@@ -3099,25 +3211,60 @@ function overArg(func, transform) {
3099
3211
  }
3100
3212
 
3101
3213
  /** Used for built-in method references. */
3102
- var objectProto = Object.prototype;
3214
+ var funcProto = Function.prototype,
3215
+ objectProto = Object.prototype;
3216
+
3217
+ /** Used to detect overreaching core-js shims. */
3218
+ var coreJsData = root['__core-js_shared__'];
3219
+
3220
+ /** Used to resolve the decompiled source of functions. */
3221
+ var funcToString = funcProto.toString;
3103
3222
 
3104
3223
  /** Used to check objects for own properties. */
3105
3224
  var hasOwnProperty = objectProto.hasOwnProperty;
3106
3225
 
3226
+ /** Used to detect methods masquerading as native. */
3227
+ var maskSrcKey = (function() {
3228
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
3229
+ return uid ? ('Symbol(src)_1.' + uid) : '';
3230
+ }());
3231
+
3107
3232
  /**
3108
3233
  * Used to resolve the
3109
3234
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
3110
3235
  * of values.
3111
3236
  */
3112
- var objectToString = objectProto.toString;
3237
+ var nativeObjectToString = objectProto.toString;
3238
+
3239
+ /** Used to infer the `Object` constructor. */
3240
+ var objectCtorString = funcToString.call(Object);
3241
+
3242
+ /** Used to detect if a method is native. */
3243
+ var reIsNative = RegExp('^' +
3244
+ funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
3245
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
3246
+ );
3113
3247
 
3114
3248
  /** Built-in value references. */
3115
- var Symbol = root.Symbol,
3116
- propertyIsEnumerable = objectProto.propertyIsEnumerable;
3249
+ var Buffer = moduleExports ? root.Buffer : undefined,
3250
+ Symbol = root.Symbol,
3251
+ getPrototype = overArg(Object.getPrototypeOf, Object),
3252
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
3253
+ symToStringTag = Symbol ? Symbol.toStringTag : undefined;
3254
+
3255
+ var defineProperty = (function() {
3256
+ try {
3257
+ var func = getNative(Object, 'defineProperty');
3258
+ func({}, '', {});
3259
+ return func;
3260
+ } catch (e) {}
3261
+ }());
3117
3262
 
3118
3263
  /* Built-in method references for those with the same name as other `lodash` methods. */
3119
- var nativeKeys = overArg(Object.keys, Object),
3120
- nativeMax = Math.max;
3264
+ var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
3265
+ nativeKeys = overArg(Object.keys, Object),
3266
+ nativeMax = Math.max,
3267
+ nativeNow = Date.now;
3121
3268
 
3122
3269
  /** Used to convert symbols to primitives and strings. */
3123
3270
  var symbolProto = Symbol ? Symbol.prototype : undefined,
@@ -3132,18 +3279,26 @@ var symbolProto = Symbol ? Symbol.prototype : undefined,
3132
3279
  * @returns {Array} Returns the array of property names.
3133
3280
  */
3134
3281
  function arrayLikeKeys(value, inherited) {
3135
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
3136
- // Safari 9 makes `arguments.length` enumerable in strict mode.
3137
- var result = (isArray(value) || isArguments(value))
3138
- ? baseTimes(value.length, String)
3139
- : [];
3140
-
3141
- var length = result.length,
3142
- skipIndexes = !!length;
3282
+ var isArr = isArray(value),
3283
+ isArg = !isArr && isArguments(value),
3284
+ isBuff = !isArr && !isArg && isBuffer(value),
3285
+ isType = !isArr && !isArg && !isBuff && isTypedArray(value),
3286
+ skipIndexes = isArr || isArg || isBuff || isType,
3287
+ result = skipIndexes ? baseTimes(value.length, String) : [],
3288
+ length = result.length;
3143
3289
 
3144
3290
  for (var key in value) {
3145
3291
  if ((inherited || hasOwnProperty.call(value, key)) &&
3146
- !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
3292
+ !(skipIndexes && (
3293
+ // Safari 9 has enumerable `arguments.length` in strict mode.
3294
+ key == 'length' ||
3295
+ // Node.js 0.10 has enumerable non-index properties on buffers.
3296
+ (isBuff && (key == 'offset' || key == 'parent')) ||
3297
+ // PhantomJS 2 has enumerable non-index properties on typed arrays.
3298
+ (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
3299
+ // Skip index properties.
3300
+ isIndex(key, length)
3301
+ ))) {
3147
3302
  result.push(key);
3148
3303
  }
3149
3304
  }
@@ -3151,41 +3306,100 @@ function arrayLikeKeys(value, inherited) {
3151
3306
  }
3152
3307
 
3153
3308
  /**
3154
- * Used by `_.defaults` to customize its `_.assignIn` use.
3309
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
3310
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
3311
+ * for equality comparisons.
3155
3312
  *
3156
3313
  * @private
3157
- * @param {*} objValue The destination value.
3158
- * @param {*} srcValue The source value.
3314
+ * @param {Object} object The object to modify.
3159
3315
  * @param {string} key The key of the property to assign.
3160
- * @param {Object} object The parent object of `objValue`.
3161
- * @returns {*} Returns the value to assign.
3316
+ * @param {*} value The value to assign.
3162
3317
  */
3163
- function assignInDefaults(objValue, srcValue, key, object) {
3164
- if (objValue === undefined ||
3165
- (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
3166
- return srcValue;
3318
+ function assignValue(object, key, value) {
3319
+ var objValue = object[key];
3320
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
3321
+ (value === undefined && !(key in object))) {
3322
+ baseAssignValue(object, key, value);
3167
3323
  }
3168
- return objValue;
3169
3324
  }
3170
3325
 
3171
3326
  /**
3172
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
3173
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
3174
- * for equality comparisons.
3327
+ * The base implementation of `assignValue` and `assignMergeValue` without
3328
+ * value checks.
3175
3329
  *
3176
3330
  * @private
3177
3331
  * @param {Object} object The object to modify.
3178
3332
  * @param {string} key The key of the property to assign.
3179
3333
  * @param {*} value The value to assign.
3180
3334
  */
3181
- function assignValue(object, key, value) {
3182
- var objValue = object[key];
3183
- if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
3184
- (value === undefined && !(key in object))) {
3335
+ function baseAssignValue(object, key, value) {
3336
+ if (key == '__proto__' && defineProperty) {
3337
+ defineProperty(object, key, {
3338
+ 'configurable': true,
3339
+ 'enumerable': true,
3340
+ 'value': value,
3341
+ 'writable': true
3342
+ });
3343
+ } else {
3185
3344
  object[key] = value;
3186
3345
  }
3187
3346
  }
3188
3347
 
3348
+ /**
3349
+ * The base implementation of `getTag` without fallbacks for buggy environments.
3350
+ *
3351
+ * @private
3352
+ * @param {*} value The value to query.
3353
+ * @returns {string} Returns the `toStringTag`.
3354
+ */
3355
+ function baseGetTag(value) {
3356
+ if (value == null) {
3357
+ return value === undefined ? undefinedTag : nullTag;
3358
+ }
3359
+ return (symToStringTag && symToStringTag in Object(value))
3360
+ ? getRawTag(value)
3361
+ : objectToString(value);
3362
+ }
3363
+
3364
+ /**
3365
+ * The base implementation of `_.isArguments`.
3366
+ *
3367
+ * @private
3368
+ * @param {*} value The value to check.
3369
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
3370
+ */
3371
+ function baseIsArguments(value) {
3372
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
3373
+ }
3374
+
3375
+ /**
3376
+ * The base implementation of `_.isNative` without bad shim checks.
3377
+ *
3378
+ * @private
3379
+ * @param {*} value The value to check.
3380
+ * @returns {boolean} Returns `true` if `value` is a native function,
3381
+ * else `false`.
3382
+ */
3383
+ function baseIsNative(value) {
3384
+ if (!isObject(value) || isMasked(value)) {
3385
+ return false;
3386
+ }
3387
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
3388
+ return pattern.test(toSource(value));
3389
+ }
3390
+
3391
+ /**
3392
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
3393
+ *
3394
+ * @private
3395
+ * @param {*} value The value to check.
3396
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
3397
+ */
3398
+ function baseIsTypedArray(value) {
3399
+ return isObjectLike(value) &&
3400
+ isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
3401
+ }
3402
+
3189
3403
  /**
3190
3404
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
3191
3405
  *
@@ -3237,26 +3451,26 @@ function baseKeysIn(object) {
3237
3451
  * @returns {Function} Returns the new function.
3238
3452
  */
3239
3453
  function baseRest(func, start) {
3240
- start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
3241
- return function() {
3242
- var args = arguments,
3243
- index = -1,
3244
- length = nativeMax(args.length - start, 0),
3245
- array = Array(length);
3246
-
3247
- while (++index < length) {
3248
- array[index] = args[start + index];
3249
- }
3250
- index = -1;
3251
- var otherArgs = Array(start + 1);
3252
- while (++index < start) {
3253
- otherArgs[index] = args[index];
3254
- }
3255
- otherArgs[start] = array;
3256
- return apply(func, this, otherArgs);
3257
- };
3454
+ return setToString(overRest(func, start, identity), func + '');
3258
3455
  }
3259
3456
 
3457
+ /**
3458
+ * The base implementation of `setToString` without support for hot loop shorting.
3459
+ *
3460
+ * @private
3461
+ * @param {Function} func The function to modify.
3462
+ * @param {Function} string The `toString` result.
3463
+ * @returns {Function} Returns `func`.
3464
+ */
3465
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
3466
+ return defineProperty(func, 'toString', {
3467
+ 'configurable': true,
3468
+ 'enumerable': false,
3469
+ 'value': constant(string),
3470
+ 'writable': true
3471
+ });
3472
+ };
3473
+
3260
3474
  /**
3261
3475
  * The base implementation of `_.toString` which doesn't convert nullish
3262
3476
  * values to empty strings.
@@ -3270,6 +3484,10 @@ function baseToString(value) {
3270
3484
  if (typeof value == 'string') {
3271
3485
  return value;
3272
3486
  }
3487
+ if (isArray(value)) {
3488
+ // Recursively convert values (susceptible to call stack limits).
3489
+ return arrayMap(value, baseToString) + '';
3490
+ }
3273
3491
  if (isSymbol(value)) {
3274
3492
  return symbolToString ? symbolToString.call(value) : '';
3275
3493
  }
@@ -3288,6 +3506,7 @@ function baseToString(value) {
3288
3506
  * @returns {Object} Returns `object`.
3289
3507
  */
3290
3508
  function copyObject(source, props, object, customizer) {
3509
+ var isNew = !object;
3291
3510
  object || (object = {});
3292
3511
 
3293
3512
  var index = -1,
@@ -3300,7 +3519,14 @@ function copyObject(source, props, object, customizer) {
3300
3519
  ? customizer(object[key], source[key], key, object, source)
3301
3520
  : undefined;
3302
3521
 
3303
- assignValue(object, key, newValue === undefined ? source[key] : newValue);
3522
+ if (newValue === undefined) {
3523
+ newValue = source[key];
3524
+ }
3525
+ if (isNew) {
3526
+ baseAssignValue(object, key, newValue);
3527
+ } else {
3528
+ assignValue(object, key, newValue);
3529
+ }
3304
3530
  }
3305
3531
  return object;
3306
3532
  }
@@ -3338,6 +3564,66 @@ function createAssigner(assigner) {
3338
3564
  });
3339
3565
  }
3340
3566
 
3567
+ /**
3568
+ * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
3569
+ * of source objects to the destination object for all destination properties
3570
+ * that resolve to `undefined`.
3571
+ *
3572
+ * @private
3573
+ * @param {*} objValue The destination value.
3574
+ * @param {*} srcValue The source value.
3575
+ * @param {string} key The key of the property to assign.
3576
+ * @param {Object} object The parent object of `objValue`.
3577
+ * @returns {*} Returns the value to assign.
3578
+ */
3579
+ function customDefaultsAssignIn(objValue, srcValue, key, object) {
3580
+ if (objValue === undefined ||
3581
+ (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
3582
+ return srcValue;
3583
+ }
3584
+ return objValue;
3585
+ }
3586
+
3587
+ /**
3588
+ * Gets the native function at `key` of `object`.
3589
+ *
3590
+ * @private
3591
+ * @param {Object} object The object to query.
3592
+ * @param {string} key The key of the method to get.
3593
+ * @returns {*} Returns the function if it's native, else `undefined`.
3594
+ */
3595
+ function getNative(object, key) {
3596
+ var value = getValue(object, key);
3597
+ return baseIsNative(value) ? value : undefined;
3598
+ }
3599
+
3600
+ /**
3601
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
3602
+ *
3603
+ * @private
3604
+ * @param {*} value The value to query.
3605
+ * @returns {string} Returns the raw `toStringTag`.
3606
+ */
3607
+ function getRawTag(value) {
3608
+ var isOwn = hasOwnProperty.call(value, symToStringTag),
3609
+ tag = value[symToStringTag];
3610
+
3611
+ try {
3612
+ value[symToStringTag] = undefined;
3613
+ var unmasked = true;
3614
+ } catch (e) {}
3615
+
3616
+ var result = nativeObjectToString.call(value);
3617
+ if (unmasked) {
3618
+ if (isOwn) {
3619
+ value[symToStringTag] = tag;
3620
+ } else {
3621
+ delete value[symToStringTag];
3622
+ }
3623
+ }
3624
+ return result;
3625
+ }
3626
+
3341
3627
  /**
3342
3628
  * Checks if `value` is a valid array-like index.
3343
3629
  *
@@ -3347,10 +3633,13 @@ function createAssigner(assigner) {
3347
3633
  * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3348
3634
  */
3349
3635
  function isIndex(value, length) {
3636
+ var type = typeof value;
3350
3637
  length = length == null ? MAX_SAFE_INTEGER : length;
3638
+
3351
3639
  return !!length &&
3352
- (typeof value == 'number' || reIsUint.test(value)) &&
3353
- (value > -1 && value % 1 == 0 && value < length);
3640
+ (type == 'number' ||
3641
+ (type != 'symbol' && reIsUint.test(value))) &&
3642
+ (value > -1 && value % 1 == 0 && value < length);
3354
3643
  }
3355
3644
 
3356
3645
  /**
@@ -3377,6 +3666,17 @@ function isIterateeCall(value, index, object) {
3377
3666
  return false;
3378
3667
  }
3379
3668
 
3669
+ /**
3670
+ * Checks if `func` has its source masked.
3671
+ *
3672
+ * @private
3673
+ * @param {Function} func The function to check.
3674
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
3675
+ */
3676
+ function isMasked(func) {
3677
+ return !!maskSrcKey && (maskSrcKey in func);
3678
+ }
3679
+
3380
3680
  /**
3381
3681
  * Checks if `value` is likely a prototype object.
3382
3682
  *
@@ -3410,6 +3710,105 @@ function nativeKeysIn(object) {
3410
3710
  return result;
3411
3711
  }
3412
3712
 
3713
+ /**
3714
+ * Converts `value` to a string using `Object.prototype.toString`.
3715
+ *
3716
+ * @private
3717
+ * @param {*} value The value to convert.
3718
+ * @returns {string} Returns the converted string.
3719
+ */
3720
+ function objectToString(value) {
3721
+ return nativeObjectToString.call(value);
3722
+ }
3723
+
3724
+ /**
3725
+ * A specialized version of `baseRest` which transforms the rest array.
3726
+ *
3727
+ * @private
3728
+ * @param {Function} func The function to apply a rest parameter to.
3729
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
3730
+ * @param {Function} transform The rest array transform.
3731
+ * @returns {Function} Returns the new function.
3732
+ */
3733
+ function overRest(func, start, transform) {
3734
+ start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
3735
+ return function() {
3736
+ var args = arguments,
3737
+ index = -1,
3738
+ length = nativeMax(args.length - start, 0),
3739
+ array = Array(length);
3740
+
3741
+ while (++index < length) {
3742
+ array[index] = args[start + index];
3743
+ }
3744
+ index = -1;
3745
+ var otherArgs = Array(start + 1);
3746
+ while (++index < start) {
3747
+ otherArgs[index] = args[index];
3748
+ }
3749
+ otherArgs[start] = transform(array);
3750
+ return apply(func, this, otherArgs);
3751
+ };
3752
+ }
3753
+
3754
+ /**
3755
+ * Sets the `toString` method of `func` to return `string`.
3756
+ *
3757
+ * @private
3758
+ * @param {Function} func The function to modify.
3759
+ * @param {Function} string The `toString` result.
3760
+ * @returns {Function} Returns `func`.
3761
+ */
3762
+ var setToString = shortOut(baseSetToString);
3763
+
3764
+ /**
3765
+ * Creates a function that'll short out and invoke `identity` instead
3766
+ * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
3767
+ * milliseconds.
3768
+ *
3769
+ * @private
3770
+ * @param {Function} func The function to restrict.
3771
+ * @returns {Function} Returns the new shortable function.
3772
+ */
3773
+ function shortOut(func) {
3774
+ var count = 0,
3775
+ lastCalled = 0;
3776
+
3777
+ return function() {
3778
+ var stamp = nativeNow(),
3779
+ remaining = HOT_SPAN - (stamp - lastCalled);
3780
+
3781
+ lastCalled = stamp;
3782
+ if (remaining > 0) {
3783
+ if (++count >= HOT_COUNT) {
3784
+ return arguments[0];
3785
+ }
3786
+ } else {
3787
+ count = 0;
3788
+ }
3789
+ return func.apply(undefined, arguments);
3790
+ };
3791
+ }
3792
+
3793
+ /**
3794
+ * Converts `func` to its source code.
3795
+ *
3796
+ * @private
3797
+ * @param {Function} func The function to convert.
3798
+ * @returns {string} Returns the source code.
3799
+ */
3800
+ function toSource(func) {
3801
+ if (func != null) {
3802
+ try {
3803
+ return funcToString.call(func);
3804
+ } catch (e) {}
3805
+ try {
3806
+ return (func + '');
3807
+ } catch (e) {}
3808
+ }
3809
+ return '';
3810
+ }
3811
+
3413
3812
  /**
3414
3813
  * Performs a
3415
3814
  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
@@ -3464,11 +3863,10 @@ function eq(value, other) {
3464
3863
  * _.isArguments([1, 2, 3]);
3465
3864
  * // => false
3466
3865
  */
3467
- function isArguments(value) {
3468
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
3469
- return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
3470
- (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
3471
- }
3866
+ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
3867
+ return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
3868
+ !propertyIsEnumerable.call(value, 'callee');
3869
+ };
3472
3870
 
3473
3871
  /**
3474
3872
  * Checks if `value` is classified as an `Array` object.
@@ -3525,33 +3923,23 @@ function isArrayLike(value) {
3525
3923
  }
3526
3924
 
3527
3925
  /**
3528
- * This method is like `_.isArrayLike` except that it also checks if `value`
3529
- * is an object.
3926
+ * Checks if `value` is a buffer.
3530
3927
  *
3531
3928
  * @static
3532
3929
  * @memberOf _
3533
- * @since 4.0.0
3930
+ * @since 4.3.0
3534
3931
  * @category Lang
3535
3932
  * @param {*} value The value to check.
3536
- * @returns {boolean} Returns `true` if `value` is an array-like object,
3537
- * else `false`.
3933
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
3538
3934
  * @example
3539
3935
  *
3540
- * _.isArrayLikeObject([1, 2, 3]);
3541
- * // => true
3542
- *
3543
- * _.isArrayLikeObject(document.body.children);
3936
+ * _.isBuffer(new Buffer(2));
3544
3937
  * // => true
3545
3938
  *
3546
- * _.isArrayLikeObject('abc');
3547
- * // => false
3548
- *
3549
- * _.isArrayLikeObject(_.noop);
3939
+ * _.isBuffer(new Uint8Array(2));
3550
3940
  * // => false
3551
3941
  */
3552
- function isArrayLikeObject(value) {
3553
- return isObjectLike(value) && isArrayLike(value);
3554
- }
3942
+ var isBuffer = nativeIsBuffer || stubFalse;
3555
3943
 
3556
3944
  /**
3557
3945
  * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
@@ -3575,8 +3963,9 @@ function isError(value) {
3575
3963
  if (!isObjectLike(value)) {
3576
3964
  return false;
3577
3965
  }
3578
- return (objectToString.call(value) == errorTag) ||
3579
- (typeof value.message == 'string' && typeof value.name == 'string');
3966
+ var tag = baseGetTag(value);
3967
+ return tag == errorTag || tag == domExcTag ||
3968
+ (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
3580
3969
  }
3581
3970
 
3582
3971
  /**
@@ -3597,10 +3986,13 @@ function isError(value) {
3597
3986
  * // => false
3598
3987
  */
3599
3988
  function isFunction(value) {
3989
+ if (!isObject(value)) {
3990
+ return false;
3991
+ }
3600
3992
  // The use of `Object#toString` avoids issues with the `typeof` operator
3601
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
3602
- var tag = isObject(value) ? objectToString.call(value) : '';
3603
- return tag == funcTag || tag == genTag;
3993
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
3994
+ var tag = baseGetTag(value);
3995
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
3604
3996
  }
3605
3997
 
3606
3998
  /**
@@ -3661,7 +4053,7 @@ function isLength(value) {
3661
4053
  */
3662
4054
  function isObject(value) {
3663
4055
  var type = typeof value;
3664
- return !!value && (type == 'object' || type == 'function');
4056
+ return value != null && (type == 'object' || type == 'function');
3665
4057
  }
3666
4058
 
3667
4059
  /**
@@ -3689,7 +4081,48 @@ function isObject(value) {
3689
4081
  * // => false
3690
4082
  */
3691
4083
  function isObjectLike(value) {
3692
- return !!value && typeof value == 'object';
4084
+ return value != null && typeof value == 'object';
4085
+ }
4086
+
4087
+ /**
4088
+ * Checks if `value` is a plain object, that is, an object created by the
4089
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
4090
+ *
4091
+ * @static
4092
+ * @memberOf _
4093
+ * @since 0.8.0
4094
+ * @category Lang
4095
+ * @param {*} value The value to check.
4096
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4097
+ * @example
4098
+ *
4099
+ * function Foo() {
4100
+ * this.a = 1;
4101
+ * }
4102
+ *
4103
+ * _.isPlainObject(new Foo);
4104
+ * // => false
4105
+ *
4106
+ * _.isPlainObject([1, 2, 3]);
4107
+ * // => false
4108
+ *
4109
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
4110
+ * // => true
4111
+ *
4112
+ * _.isPlainObject(Object.create(null));
4113
+ * // => true
4114
+ */
4115
+ function isPlainObject(value) {
4116
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
4117
+ return false;
4118
+ }
4119
+ var proto = getPrototype(value);
4120
+ if (proto === null) {
4121
+ return true;
4122
+ }
4123
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4124
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4125
+ funcToString.call(Ctor) == objectCtorString;
3693
4126
  }
3694
4127
 
3695
4128
  /**
@@ -3711,9 +4144,28 @@ function isObjectLike(value) {
3711
4144
  */
3712
4145
  function isSymbol(value) {
3713
4146
  return typeof value == 'symbol' ||
3714
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
4147
+ (isObjectLike(value) && baseGetTag(value) == symbolTag);
3715
4148
  }
3716
4149
 
4150
+ /**
4151
+ * Checks if `value` is classified as a typed array.
4152
+ *
4153
+ * @static
4154
+ * @memberOf _
4155
+ * @since 3.0.0
4156
+ * @category Lang
4157
+ * @param {*} value The value to check.
4158
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
4159
+ * @example
4160
+ *
4161
+ * _.isTypedArray(new Uint8Array);
4162
+ * // => true
4163
+ *
4164
+ * _.isTypedArray([]);
4165
+ * // => false
4166
+ */
4167
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
4168
+
3717
4169
  /**
3718
4170
  * Converts `value` to a string. An empty string is returned for `null`
3719
4171
  * and `undefined` values. The sign of `-0` is preserved.
@@ -3722,8 +4174,8 @@ function isSymbol(value) {
3722
4174
  * @memberOf _
3723
4175
  * @since 4.0.0
3724
4176
  * @category Lang
3725
- * @param {*} value The value to process.
3726
- * @returns {string} Returns the string.
4177
+ * @param {*} value The value to convert.
4178
+ * @returns {string} Returns the converted string.
3727
4179
  * @example
3728
4180
  *
3729
4181
  * _.toString(null);
@@ -3890,7 +4342,8 @@ function keysIn(object) {
3890
4342
  * compiled({ 'user': 'barney' });
3891
4343
  * // => 'hello barney!'
3892
4344
  *
3893
- * // Use the ES delimiter as an alternative to the default "interpolate" delimiter.
4345
+ * // Use the ES template literal delimiter as an "interpolate" delimiter.
4346
+ * // Disable support by replacing the "interpolate" delimiter.
3894
4347
  * var compiled = _.template('hello ${ user }!');
3895
4348
  * compiled({ 'user': 'pebbles' });
3896
4349
  * // => 'hello pebbles!'
@@ -3944,9 +4397,9 @@ function template(string, options, guard) {
3944
4397
  options = undefined;
3945
4398
  }
3946
4399
  string = toString(string);
3947
- options = assignInWith({}, options, settings, assignInDefaults);
4400
+ options = assignInWith({}, options, settings, customDefaultsAssignIn);
3948
4401
 
3949
- var imports = assignInWith({}, options.imports, settings.imports, assignInDefaults),
4402
+ var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
3950
4403
  importsKeys = keys(imports),
3951
4404
  importsValues = baseValues(imports, importsKeys);
3952
4405
 
@@ -3965,7 +4418,14 @@ function template(string, options, guard) {
3965
4418
  , 'g');
3966
4419
 
3967
4420
  // Use a sourceURL for easier debugging.
3968
- var sourceURL = 'sourceURL' in options ? '//# sourceURL=' + options.sourceURL + '\n' : '';
4421
+ // The sourceURL gets injected into the source that's eval-ed, so be careful
4422
+ // with lookup (in case of e.g. prototype pollution), and strip newlines if any.
4423
+ // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.
4424
+ var sourceURL = hasOwnProperty.call(options, 'sourceURL')
4425
+ ? ('//# sourceURL=' +
4426
+ (options.sourceURL + '').replace(/[\r\n]/g, ' ') +
4427
+ '\n')
4428
+ : '';
3969
4429
 
3970
4430
  string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
3971
4431
  interpolateValue || (interpolateValue = esTemplateValue);
@@ -3996,7 +4456,9 @@ function template(string, options, guard) {
3996
4456
 
3997
4457
  // If `variable` is not specified wrap a with-statement around the generated
3998
4458
  // code to add the data object to the top of the scope chain.
3999
- var variable = options.variable;
4459
+ // Like with sourceURL, we take care to not check the option's prototype,
4460
+ // as this configuration is a code injection vector.
4461
+ var variable = hasOwnProperty.call(options, 'variable') && options.variable;
4000
4462
  if (!variable) {
4001
4463
  source = 'with (obj) {\n' + source + '\n}\n';
4002
4464
  }
@@ -4068,15 +4530,77 @@ var attempt = baseRest(function(func, args) {
4068
4530
  }
4069
4531
  });
4070
4532
 
4533
+ /**
4534
+ * Creates a function that returns `value`.
4535
+ *
4536
+ * @static
4537
+ * @memberOf _
4538
+ * @since 2.4.0
4539
+ * @category Util
4540
+ * @param {*} value The value to return from the new function.
4541
+ * @returns {Function} Returns the new constant function.
4542
+ * @example
4543
+ *
4544
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
4545
+ *
4546
+ * console.log(objects);
4547
+ * // => [{ 'a': 1 }, { 'a': 1 }]
4548
+ *
4549
+ * console.log(objects[0] === objects[1]);
4550
+ * // => true
4551
+ */
4552
+ function constant(value) {
4553
+ return function() {
4554
+ return value;
4555
+ };
4556
+ }
4557
+
4558
+ /**
4559
+ * This method returns the first argument it receives.
4560
+ *
4561
+ * @static
4562
+ * @since 0.1.0
4563
+ * @memberOf _
4564
+ * @category Util
4565
+ * @param {*} value Any value.
4566
+ * @returns {*} Returns `value`.
4567
+ * @example
4568
+ *
4569
+ * var object = { 'a': 1 };
4570
+ *
4571
+ * console.log(_.identity(object) === object);
4572
+ * // => true
4573
+ */
4574
+ function identity(value) {
4575
+ return value;
4576
+ }
4577
+
4578
+ /**
4579
+ * This method returns `false`.
4580
+ *
4581
+ * @static
4582
+ * @memberOf _
4583
+ * @since 4.13.0
4584
+ * @category Util
4585
+ * @returns {boolean} Returns `false`.
4586
+ * @example
4587
+ *
4588
+ * _.times(2, _.stubFalse);
4589
+ * // => [false, false]
4590
+ */
4591
+ function stubFalse() {
4592
+ return false;
4593
+ }
4594
+
4071
4595
  module.exports = template;
4072
4596
 
4073
4597
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
4074
4598
  },{"lodash._reinterpolate":6,"lodash.templatesettings":10}],10:[function(require,module,exports){
4075
4599
  (function (global){
4076
4600
  /**
4077
- * lodash (Custom Build) <https://lodash.com/>
4601
+ * Lodash (Custom Build) <https://lodash.com/>
4078
4602
  * Build: `lodash modularize exports="npm" -o ./`
4079
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
4603
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
4080
4604
  * Released under MIT license <https://lodash.com/license>
4081
4605
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
4082
4606
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -4087,10 +4611,12 @@ var reInterpolate = require('lodash._reinterpolate');
4087
4611
  var INFINITY = 1 / 0;
4088
4612
 
4089
4613
  /** `Object#toString` result references. */
4090
- var symbolTag = '[object Symbol]';
4614
+ var nullTag = '[object Null]',
4615
+ symbolTag = '[object Symbol]',
4616
+ undefinedTag = '[object Undefined]';
4091
4617
 
4092
4618
  /** Used to match HTML entities and HTML characters. */
4093
- var reUnescapedHtml = /[&<>"'`]/g,
4619
+ var reUnescapedHtml = /[&<>"']/g,
4094
4620
  reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
4095
4621
 
4096
4622
  /** Used to match template delimiters. */
@@ -4103,8 +4629,7 @@ var htmlEscapes = {
4103
4629
  '<': '&lt;',
4104
4630
  '>': '&gt;',
4105
4631
  '"': '&quot;',
4106
- "'": '&#39;',
4107
- '`': '&#96;'
4632
+ "'": '&#39;'
4108
4633
  };
4109
4634
 
4110
4635
  /** Detect free variable `global` from Node.js. */
@@ -4116,6 +4641,26 @@ var freeSelf = typeof self == 'object' && self && self.Object === Object && self
4116
4641
  /** Used as a reference to the global object. */
4117
4642
  var root = freeGlobal || freeSelf || Function('return this')();
4118
4643
 
4644
+ /**
4645
+ * A specialized version of `_.map` for arrays without support for iteratee
4646
+ * shorthands.
4647
+ *
4648
+ * @private
4649
+ * @param {Array} [array] The array to iterate over.
4650
+ * @param {Function} iteratee The function invoked per iteration.
4651
+ * @returns {Array} Returns the new mapped array.
4652
+ */
4653
+ function arrayMap(array, iteratee) {
4654
+ var index = -1,
4655
+ length = array == null ? 0 : array.length,
4656
+ result = Array(length);
4657
+
4658
+ while (++index < length) {
4659
+ result[index] = iteratee(array[index], index, array);
4660
+ }
4661
+ return result;
4662
+ }
4663
+
4119
4664
  /**
4120
4665
  * The base implementation of `_.propertyOf` without support for deep paths.
4121
4666
  *
@@ -4141,15 +4686,19 @@ var escapeHtmlChar = basePropertyOf(htmlEscapes);
4141
4686
  /** Used for built-in method references. */
4142
4687
  var objectProto = Object.prototype;
4143
4688
 
4689
+ /** Used to check objects for own properties. */
4690
+ var hasOwnProperty = objectProto.hasOwnProperty;
4691
+
4144
4692
  /**
4145
4693
  * Used to resolve the
4146
- * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
4694
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
4147
4695
  * of values.
4148
4696
  */
4149
- var objectToString = objectProto.toString;
4697
+ var nativeObjectToString = objectProto.toString;
4150
4698
 
4151
4699
  /** Built-in value references. */
4152
- var Symbol = root.Symbol;
4700
+ var Symbol = root.Symbol,
4701
+ symToStringTag = Symbol ? Symbol.toStringTag : undefined;
4153
4702
 
4154
4703
  /** Used to convert symbols to primitives and strings. */
4155
4704
  var symbolProto = Symbol ? Symbol.prototype : undefined,
@@ -4157,8 +4706,8 @@ var symbolProto = Symbol ? Symbol.prototype : undefined,
4157
4706
 
4158
4707
  /**
4159
4708
  * By default, the template delimiters used by lodash are like those in
4160
- * embedded Ruby (ERB). Change the following template settings to use
4161
- * alternative delimiters.
4709
+ * embedded Ruby (ERB) as well as ES2015 template strings. Change the
4710
+ * following template settings to use alternative delimiters.
4162
4711
  *
4163
4712
  * @static
4164
4713
  * @memberOf _
@@ -4216,6 +4765,22 @@ var templateSettings = {
4216
4765
  }
4217
4766
  };
4218
4767
 
4768
+ /**
4769
+ * The base implementation of `getTag` without fallbacks for buggy environments.
4770
+ *
4771
+ * @private
4772
+ * @param {*} value The value to query.
4773
+ * @returns {string} Returns the `toStringTag`.
4774
+ */
4775
+ function baseGetTag(value) {
4776
+ if (value == null) {
4777
+ return value === undefined ? undefinedTag : nullTag;
4778
+ }
4779
+ return (symToStringTag && symToStringTag in Object(value))
4780
+ ? getRawTag(value)
4781
+ : objectToString(value);
4782
+ }
4783
+
4219
4784
  /**
4220
4785
  * The base implementation of `_.toString` which doesn't convert nullish
4221
4786
  * values to empty strings.
@@ -4229,6 +4794,10 @@ function baseToString(value) {
4229
4794
  if (typeof value == 'string') {
4230
4795
  return value;
4231
4796
  }
4797
+ if (isArray(value)) {
4798
+ // Recursively convert values (susceptible to call stack limits).
4799
+ return arrayMap(value, baseToString) + '';
4800
+ }
4232
4801
  if (isSymbol(value)) {
4233
4802
  return symbolToString ? symbolToString.call(value) : '';
4234
4803
  }
@@ -4236,6 +4805,69 @@ function baseToString(value) {
4236
4805
  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
4237
4806
  }
4238
4807
 
4808
+ /**
4809
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
4810
+ *
4811
+ * @private
4812
+ * @param {*} value The value to query.
4813
+ * @returns {string} Returns the raw `toStringTag`.
4814
+ */
4815
+ function getRawTag(value) {
4816
+ var isOwn = hasOwnProperty.call(value, symToStringTag),
4817
+ tag = value[symToStringTag];
4818
+
4819
+ try {
4820
+ value[symToStringTag] = undefined;
4821
+ var unmasked = true;
4822
+ } catch (e) {}
4823
+
4824
+ var result = nativeObjectToString.call(value);
4825
+ if (unmasked) {
4826
+ if (isOwn) {
4827
+ value[symToStringTag] = tag;
4828
+ } else {
4829
+ delete value[symToStringTag];
4830
+ }
4831
+ }
4832
+ return result;
4833
+ }
4834
+
4835
+ /**
4836
+ * Converts `value` to a string using `Object.prototype.toString`.
4837
+ *
4838
+ * @private
4839
+ * @param {*} value The value to convert.
4840
+ * @returns {string} Returns the converted string.
4841
+ */
4842
+ function objectToString(value) {
4843
+ return nativeObjectToString.call(value);
4844
+ }
4845
+
4846
+ /**
4847
+ * Checks if `value` is classified as an `Array` object.
4848
+ *
4849
+ * @static
4850
+ * @memberOf _
4851
+ * @since 0.1.0
4852
+ * @category Lang
4853
+ * @param {*} value The value to check.
4854
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
4855
+ * @example
4856
+ *
4857
+ * _.isArray([1, 2, 3]);
4858
+ * // => true
4859
+ *
4860
+ * _.isArray(document.body.children);
4861
+ * // => false
4862
+ *
4863
+ * _.isArray('abc');
4864
+ * // => false
4865
+ *
4866
+ * _.isArray(_.noop);
4867
+ * // => false
4868
+ */
4869
+ var isArray = Array.isArray;
4870
+
4239
4871
  /**
4240
4872
  * Checks if `value` is object-like. A value is object-like if it's not `null`
4241
4873
  * and has a `typeof` result of "object".
@@ -4261,7 +4893,7 @@ function baseToString(value) {
4261
4893
  * // => false
4262
4894
  */
4263
4895
  function isObjectLike(value) {
4264
- return !!value && typeof value == 'object';
4896
+ return value != null && typeof value == 'object';
4265
4897
  }
4266
4898
 
4267
4899
  /**
@@ -4283,7 +4915,7 @@ function isObjectLike(value) {
4283
4915
  */
4284
4916
  function isSymbol(value) {
4285
4917
  return typeof value == 'symbol' ||
4286
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
4918
+ (isObjectLike(value) && baseGetTag(value) == symbolTag);
4287
4919
  }
4288
4920
 
4289
4921
  /**
@@ -4294,8 +4926,8 @@ function isSymbol(value) {
4294
4926
  * @memberOf _
4295
4927
  * @since 4.0.0
4296
4928
  * @category Lang
4297
- * @param {*} value The value to process.
4298
- * @returns {string} Returns the string.
4929
+ * @param {*} value The value to convert.
4930
+ * @returns {string} Returns the converted string.
4299
4931
  * @example
4300
4932
  *
4301
4933
  * _.toString(null);
@@ -4312,8 +4944,8 @@ function toString(value) {
4312
4944
  }
4313
4945
 
4314
4946
  /**
4315
- * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to
4316
- * their corresponding HTML entities.
4947
+ * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
4948
+ * corresponding HTML entities.
4317
4949
  *
4318
4950
  * **Note:** No other characters are escaped. To escape additional
4319
4951
  * characters use a third-party library like [_he_](https://mths.be/he).
@@ -4324,12 +4956,6 @@ function toString(value) {
4324
4956
  * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
4325
4957
  * (under "semi-related fun fact") for more details.
4326
4958
  *
4327
- * Backticks are escaped because in IE < 9, they can break out of
4328
- * attribute values or HTML comments. See [#59](https://html5sec.org/#59),
4329
- * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and
4330
- * [#133](https://html5sec.org/#133) of the
4331
- * [HTML5 Security Cheatsheet](https://html5sec.org/) for more details.
4332
- *
4333
4959
  * When working with HTML you should always
4334
4960
  * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
4335
4961
  * XSS vectors.
@@ -6206,7 +6832,8 @@ function fetchDirections() {
6206
6832
  alternatives = _getState.alternatives,
6207
6833
  congestion = _getState.congestion,
6208
6834
  destination = _getState.destination,
6209
- language = _getState.language;
6835
+ language = _getState.language,
6836
+ exclude = _getState.exclude;
6210
6837
  // if there is no destination set, do not make request because it will fail
6211
6838
 
6212
6839
 
@@ -6222,6 +6849,7 @@ function fetchDirections() {
6222
6849
  options.push('steps=true');
6223
6850
  options.push('overview=full');
6224
6851
  if (language) options.push('language=' + language);
6852
+ if (exclude) options.push('exclude=' + exclude);
6225
6853
  if (accessToken) options.push('access_token=' + accessToken);
6226
6854
  request.abort();
6227
6855
  request.open('GET', '' + api + profile + '/' + query + '.json?' + options.join('&'), true);
@@ -6407,6 +7035,10 @@ function reverse() {
6407
7035
  if (state.destination.geometry) dispatch(originPoint(state.destination.geometry.coordinates));
6408
7036
  if (state.origin.geometry) dispatch(destinationPoint(state.origin.geometry.coordinates));
6409
7037
  if (state.origin.geometry && state.destination.geometry) dispatch(fetchDirections());
7038
+ var suggestions = document.getElementsByClassName('suggestions');
7039
+ for (var i = 0; i < suggestions.length; i++) {
7040
+ suggestions[i].style.visibility = 'hidden';
7041
+ };
6410
7042
  };
6411
7043
  }
6412
7044
 
@@ -6798,7 +7430,7 @@ var Geocoder = function () {
6798
7430
  * - __loading__ `Emitted when the geocoder is looking up a query`
6799
7431
  * - __results__ `{ results } Fired when the geocoder returns a response`
6800
7432
  * - __result__ `{ result } Fired when input is set`
6801
- * - __error__ `{ error } Error as string
7433
+ * - __error__ `{ error } Error as string`
6802
7434
  * @param {Function} fn function that's called when the event is emitted.
6803
7435
  * @returns {Geocoder} this;
6804
7436
  */
@@ -6807,9 +7439,11 @@ var Geocoder = function () {
6807
7439
  key: 'on',
6808
7440
  value: function on(type, fn) {
6809
7441
  this._ev.on(type, fn);
7442
+ this._ev.on('error', function (err) {
7443
+ console.log(err);
7444
+ });
6810
7445
  return this;
6811
7446
  }
6812
-
6813
7447
  /**
6814
7448
  * Fire an event
6815
7449
  * @param {String} type event name.
@@ -6918,17 +7552,17 @@ var Inputs = function () {
6918
7552
  value: function animateToCoordinates(mode, coords) {
6919
7553
  var _store$getState2 = this.store.getState(),
6920
7554
  origin = _store$getState2.origin,
6921
- destination = _store$getState2.destination;
7555
+ destination = _store$getState2.destination,
7556
+ routePadding = _store$getState2.routePadding;
6922
7557
 
6923
7558
  if (origin.geometry && destination.geometry && !(0, _lodash4.default)(origin.geometry, destination.geometry)) {
6924
-
6925
7559
  // Animate map to fit bounds.
6926
7560
  var bb = (0, _turfExtent2.default)({
6927
7561
  type: 'FeatureCollection',
6928
7562
  features: [origin, destination]
6929
7563
  });
6930
7564
 
6931
- this._map.fitBounds([[bb[0], bb[1]], [bb[2], bb[3]]], { padding: 80 });
7565
+ this._map.fitBounds([[bb[0], bb[1]], [bb[2], bb[3]]], { padding: routePadding });
6932
7566
  } else {
6933
7567
  this._map.flyTo({ center: coords });
6934
7568
  }
@@ -7260,6 +7894,8 @@ var store = storeWithMiddleware(_reducers2.default);
7260
7894
  * @param {String} [options.placeholderOrigin="Choose a starting place"] If set, this text will appear as the placeholder attribute for the origin input element.
7261
7895
  * @param {String} [options.placeholderDestination="Choose destination"] If set, this text will appear as the placeholder attribute for the destination input element.
7262
7896
  * @param {Boolean} [options.flyTo=true] If false, animating the map to a selected result is disabled.
7897
+ * @param {String} [options.exclude=null] Exclude certain road types from routing. The default is to not exclude anything. Search for `exclude` in `optional parameters`: https://docs.mapbox.com/api/navigation/#retrieve-directions
7898
+ * @param {number | PaddingOptions} [options.routePadding=80] Specify padding surrounding route. A single number of pixels or a [PaddingOptions](https://docs.mapbox.com/mapbox-gl-js/api/#paddingoptions) object.
7263
7899
  * @example
7264
7900
  * var MapboxDirections = require('../src/index');
7265
7901
  * var directions = new MapboxDirections({
@@ -7826,7 +8462,7 @@ var MapboxDirections = function () {
7826
8462
  * - __origin__ `{ feature } Fired when origin is set`
7827
8463
  * - __destination__ `{ feature } Fired when destination is set`
7828
8464
  * - __route__ `{ route } Fired when a route is updated`
7829
- * - __error__ `{ error } Error as string
8465
+ * - __error__ `{ error } Error as string`
7830
8466
  * @param {Function} fn function that's called when the event is emitted.
7831
8467
  * @returns {MapboxDirections} this;
7832
8468
  */
@@ -8053,7 +8689,8 @@ var initialState = {
8053
8689
 
8054
8690
  // Directions data
8055
8691
  directions: [],
8056
- routeIndex: 0
8692
+ routeIndex: 0,
8693
+ routePadding: 80
8057
8694
  };
8058
8695
 
8059
8696
  function data() {