UNPKG

1.23 MBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
41/******/ }
42/******/ };
43/******/
44/******/ // define __esModule on exports
45/******/ __webpack_require__.r = function(exports) {
46/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48/******/ }
49/******/ Object.defineProperty(exports, '__esModule', { value: true });
50/******/ };
51/******/
52/******/ // create a fake namespace object
53/******/ // mode & 1: value is a module id, require it
54/******/ // mode & 2: merge all properties of value into the ns
55/******/ // mode & 4: return value when already ns object
56/******/ // mode & 8|1: behave like require
57/******/ __webpack_require__.t = function(value, mode) {
58/******/ if(mode & 1) value = __webpack_require__(value);
59/******/ if(mode & 8) return value;
60/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61/******/ var ns = Object.create(null);
62/******/ __webpack_require__.r(ns);
63/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65/******/ return ns;
66/******/ };
67/******/
68/******/ // getDefaultExport function for compatibility with non-harmony modules
69/******/ __webpack_require__.n = function(module) {
70/******/ var getter = module && module.__esModule ?
71/******/ function getDefault() { return module['default']; } :
72/******/ function getModuleExports() { return module; };
73/******/ __webpack_require__.d(getter, 'a', getter);
74/******/ return getter;
75/******/ };
76/******/
77/******/ // Object.prototype.hasOwnProperty.call
78/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79/******/
80/******/ // __webpack_public_path__
81/******/ __webpack_require__.p = "";
82/******/
83/******/
84/******/ // Load entry module and return exports
85/******/ return __webpack_require__(__webpack_require__.s = "fb15");
86/******/ })
87/************************************************************************/
88/******/ ({
89
90/***/ "014b":
91/***/ (function(module, exports, __webpack_require__) {
92
93"use strict";
94
95// ECMAScript 6 symbols shim
96var global = __webpack_require__("e53d");
97var has = __webpack_require__("07e3");
98var DESCRIPTORS = __webpack_require__("8e60");
99var $export = __webpack_require__("63b6");
100var redefine = __webpack_require__("9138");
101var META = __webpack_require__("ebfd").KEY;
102var $fails = __webpack_require__("294c");
103var shared = __webpack_require__("dbdb");
104var setToStringTag = __webpack_require__("45f2");
105var uid = __webpack_require__("62a0");
106var wks = __webpack_require__("5168");
107var wksExt = __webpack_require__("ccb9");
108var wksDefine = __webpack_require__("6718");
109var enumKeys = __webpack_require__("47ee");
110var isArray = __webpack_require__("9003");
111var anObject = __webpack_require__("e4ae");
112var isObject = __webpack_require__("f772");
113var toIObject = __webpack_require__("36c3");
114var toPrimitive = __webpack_require__("1bc3");
115var createDesc = __webpack_require__("aebd");
116var _create = __webpack_require__("a159");
117var gOPNExt = __webpack_require__("0395");
118var $GOPD = __webpack_require__("bf0b");
119var $DP = __webpack_require__("d9f6");
120var $keys = __webpack_require__("c3a1");
121var gOPD = $GOPD.f;
122var dP = $DP.f;
123var gOPN = gOPNExt.f;
124var $Symbol = global.Symbol;
125var $JSON = global.JSON;
126var _stringify = $JSON && $JSON.stringify;
127var PROTOTYPE = 'prototype';
128var HIDDEN = wks('_hidden');
129var TO_PRIMITIVE = wks('toPrimitive');
130var isEnum = {}.propertyIsEnumerable;
131var SymbolRegistry = shared('symbol-registry');
132var AllSymbols = shared('symbols');
133var OPSymbols = shared('op-symbols');
134var ObjectProto = Object[PROTOTYPE];
135var USE_NATIVE = typeof $Symbol == 'function';
136var QObject = global.QObject;
137// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
138var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
139
140// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
141var setSymbolDesc = DESCRIPTORS && $fails(function () {
142 return _create(dP({}, 'a', {
143 get: function () { return dP(this, 'a', { value: 7 }).a; }
144 })).a != 7;
145}) ? function (it, key, D) {
146 var protoDesc = gOPD(ObjectProto, key);
147 if (protoDesc) delete ObjectProto[key];
148 dP(it, key, D);
149 if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
150} : dP;
151
152var wrap = function (tag) {
153 var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
154 sym._k = tag;
155 return sym;
156};
157
158var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
159 return typeof it == 'symbol';
160} : function (it) {
161 return it instanceof $Symbol;
162};
163
164var $defineProperty = function defineProperty(it, key, D) {
165 if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
166 anObject(it);
167 key = toPrimitive(key, true);
168 anObject(D);
169 if (has(AllSymbols, key)) {
170 if (!D.enumerable) {
171 if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
172 it[HIDDEN][key] = true;
173 } else {
174 if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
175 D = _create(D, { enumerable: createDesc(0, false) });
176 } return setSymbolDesc(it, key, D);
177 } return dP(it, key, D);
178};
179var $defineProperties = function defineProperties(it, P) {
180 anObject(it);
181 var keys = enumKeys(P = toIObject(P));
182 var i = 0;
183 var l = keys.length;
184 var key;
185 while (l > i) $defineProperty(it, key = keys[i++], P[key]);
186 return it;
187};
188var $create = function create(it, P) {
189 return P === undefined ? _create(it) : $defineProperties(_create(it), P);
190};
191var $propertyIsEnumerable = function propertyIsEnumerable(key) {
192 var E = isEnum.call(this, key = toPrimitive(key, true));
193 if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
194 return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
195};
196var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
197 it = toIObject(it);
198 key = toPrimitive(key, true);
199 if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
200 var D = gOPD(it, key);
201 if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
202 return D;
203};
204var $getOwnPropertyNames = function getOwnPropertyNames(it) {
205 var names = gOPN(toIObject(it));
206 var result = [];
207 var i = 0;
208 var key;
209 while (names.length > i) {
210 if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
211 } return result;
212};
213var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
214 var IS_OP = it === ObjectProto;
215 var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
216 var result = [];
217 var i = 0;
218 var key;
219 while (names.length > i) {
220 if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
221 } return result;
222};
223
224// 19.4.1.1 Symbol([description])
225if (!USE_NATIVE) {
226 $Symbol = function Symbol() {
227 if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
228 var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
229 var $set = function (value) {
230 if (this === ObjectProto) $set.call(OPSymbols, value);
231 if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
232 setSymbolDesc(this, tag, createDesc(1, value));
233 };
234 if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
235 return wrap(tag);
236 };
237 redefine($Symbol[PROTOTYPE], 'toString', function toString() {
238 return this._k;
239 });
240
241 $GOPD.f = $getOwnPropertyDescriptor;
242 $DP.f = $defineProperty;
243 __webpack_require__("6abf").f = gOPNExt.f = $getOwnPropertyNames;
244 __webpack_require__("355d").f = $propertyIsEnumerable;
245 __webpack_require__("9aa9").f = $getOwnPropertySymbols;
246
247 if (DESCRIPTORS && !__webpack_require__("b8e3")) {
248 redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
249 }
250
251 wksExt.f = function (name) {
252 return wrap(wks(name));
253 };
254}
255
256$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
257
258for (var es6Symbols = (
259 // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
260 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
261).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
262
263for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
264
265$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
266 // 19.4.2.1 Symbol.for(key)
267 'for': function (key) {
268 return has(SymbolRegistry, key += '')
269 ? SymbolRegistry[key]
270 : SymbolRegistry[key] = $Symbol(key);
271 },
272 // 19.4.2.5 Symbol.keyFor(sym)
273 keyFor: function keyFor(sym) {
274 if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
275 for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
276 },
277 useSetter: function () { setter = true; },
278 useSimple: function () { setter = false; }
279});
280
281$export($export.S + $export.F * !USE_NATIVE, 'Object', {
282 // 19.1.2.2 Object.create(O [, Properties])
283 create: $create,
284 // 19.1.2.4 Object.defineProperty(O, P, Attributes)
285 defineProperty: $defineProperty,
286 // 19.1.2.3 Object.defineProperties(O, Properties)
287 defineProperties: $defineProperties,
288 // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
289 getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
290 // 19.1.2.7 Object.getOwnPropertyNames(O)
291 getOwnPropertyNames: $getOwnPropertyNames,
292 // 19.1.2.8 Object.getOwnPropertySymbols(O)
293 getOwnPropertySymbols: $getOwnPropertySymbols
294});
295
296// 24.3.2 JSON.stringify(value [, replacer [, space]])
297$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
298 var S = $Symbol();
299 // MS Edge converts symbol values to JSON as {}
300 // WebKit converts symbol values to JSON as null
301 // V8 throws on boxed symbols
302 return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
303})), 'JSON', {
304 stringify: function stringify(it) {
305 var args = [it];
306 var i = 1;
307 var replacer, $replacer;
308 while (arguments.length > i) args.push(arguments[i++]);
309 $replacer = replacer = args[1];
310 if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
311 if (!isArray(replacer)) replacer = function (key, value) {
312 if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
313 if (!isSymbol(value)) return value;
314 };
315 args[1] = replacer;
316 return _stringify.apply($JSON, args);
317 }
318});
319
320// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
321$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__("35e8")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
322// 19.4.3.5 Symbol.prototype[@@toStringTag]
323setToStringTag($Symbol, 'Symbol');
324// 20.2.1.9 Math[@@toStringTag]
325setToStringTag(Math, 'Math', true);
326// 24.3.3 JSON[@@toStringTag]
327setToStringTag(global.JSON, 'JSON', true);
328
329
330/***/ }),
331
332/***/ "01f9":
333/***/ (function(module, exports, __webpack_require__) {
334
335"use strict";
336
337var LIBRARY = __webpack_require__("2d00");
338var $export = __webpack_require__("5ca1");
339var redefine = __webpack_require__("2aba");
340var hide = __webpack_require__("32e9");
341var Iterators = __webpack_require__("84f2");
342var $iterCreate = __webpack_require__("41a0");
343var setToStringTag = __webpack_require__("7f20");
344var getPrototypeOf = __webpack_require__("38fd");
345var ITERATOR = __webpack_require__("2b4c")('iterator');
346var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
347var FF_ITERATOR = '@@iterator';
348var KEYS = 'keys';
349var VALUES = 'values';
350
351var returnThis = function () { return this; };
352
353module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
354 $iterCreate(Constructor, NAME, next);
355 var getMethod = function (kind) {
356 if (!BUGGY && kind in proto) return proto[kind];
357 switch (kind) {
358 case KEYS: return function keys() { return new Constructor(this, kind); };
359 case VALUES: return function values() { return new Constructor(this, kind); };
360 } return function entries() { return new Constructor(this, kind); };
361 };
362 var TAG = NAME + ' Iterator';
363 var DEF_VALUES = DEFAULT == VALUES;
364 var VALUES_BUG = false;
365 var proto = Base.prototype;
366 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
367 var $default = $native || getMethod(DEFAULT);
368 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
369 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
370 var methods, key, IteratorPrototype;
371 // Fix native
372 if ($anyNative) {
373 IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
374 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
375 // Set @@toStringTag to native iterators
376 setToStringTag(IteratorPrototype, TAG, true);
377 // fix for some old engines
378 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
379 }
380 }
381 // fix Array#{values, @@iterator}.name in V8 / FF
382 if (DEF_VALUES && $native && $native.name !== VALUES) {
383 VALUES_BUG = true;
384 $default = function values() { return $native.call(this); };
385 }
386 // Define iterator
387 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
388 hide(proto, ITERATOR, $default);
389 }
390 // Plug for library
391 Iterators[NAME] = $default;
392 Iterators[TAG] = returnThis;
393 if (DEFAULT) {
394 methods = {
395 values: DEF_VALUES ? $default : getMethod(VALUES),
396 keys: IS_SET ? $default : getMethod(KEYS),
397 entries: $entries
398 };
399 if (FORCED) for (key in methods) {
400 if (!(key in proto)) redefine(proto, key, methods[key]);
401 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
402 }
403 return methods;
404};
405
406
407/***/ }),
408
409/***/ "0293":
410/***/ (function(module, exports, __webpack_require__) {
411
412// 19.1.2.9 Object.getPrototypeOf(O)
413var toObject = __webpack_require__("241e");
414var $getPrototypeOf = __webpack_require__("53e2");
415
416__webpack_require__("ce7e")('getPrototypeOf', function () {
417 return function getPrototypeOf(it) {
418 return $getPrototypeOf(toObject(it));
419 };
420});
421
422
423/***/ }),
424
425/***/ "0395":
426/***/ (function(module, exports, __webpack_require__) {
427
428// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
429var toIObject = __webpack_require__("36c3");
430var gOPN = __webpack_require__("6abf").f;
431var toString = {}.toString;
432
433var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
434 ? Object.getOwnPropertyNames(window) : [];
435
436var getWindowNames = function (it) {
437 try {
438 return gOPN(it);
439 } catch (e) {
440 return windowNames.slice();
441 }
442};
443
444module.exports.f = function getOwnPropertyNames(it) {
445 return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
446};
447
448
449/***/ }),
450
451/***/ "061b":
452/***/ (function(module, exports, __webpack_require__) {
453
454module.exports = __webpack_require__("fa99");
455
456/***/ }),
457
458/***/ "062f":
459/***/ (function(module, exports, __webpack_require__) {
460
461// extracted by mini-css-extract-plugin
462
463/***/ }),
464
465/***/ "07e3":
466/***/ (function(module, exports) {
467
468var hasOwnProperty = {}.hasOwnProperty;
469module.exports = function (it, key) {
470 return hasOwnProperty.call(it, key);
471};
472
473
474/***/ }),
475
476/***/ "0a2b":
477/***/ (function(module, __webpack_exports__, __webpack_require__) {
478
479"use strict";
480/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0d6c");
481/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
482/* unused harmony reexport * */
483 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
484
485/***/ }),
486
487/***/ "0b6b":
488/***/ (function(module, exports, __webpack_require__) {
489
490// extracted by mini-css-extract-plugin
491
492/***/ }),
493
494/***/ "0bfb":
495/***/ (function(module, exports, __webpack_require__) {
496
497"use strict";
498
499// 21.2.5.3 get RegExp.prototype.flags
500var anObject = __webpack_require__("cb7c");
501module.exports = function () {
502 var that = anObject(this);
503 var result = '';
504 if (that.global) result += 'g';
505 if (that.ignoreCase) result += 'i';
506 if (that.multiline) result += 'm';
507 if (that.unicode) result += 'u';
508 if (that.sticky) result += 'y';
509 return result;
510};
511
512
513/***/ }),
514
515/***/ "0d58":
516/***/ (function(module, exports, __webpack_require__) {
517
518// 19.1.2.14 / 15.2.3.14 Object.keys(O)
519var $keys = __webpack_require__("ce10");
520var enumBugKeys = __webpack_require__("e11e");
521
522module.exports = Object.keys || function keys(O) {
523 return $keys(O, enumBugKeys);
524};
525
526
527/***/ }),
528
529/***/ "0d6c":
530/***/ (function(module, exports, __webpack_require__) {
531
532// extracted by mini-css-extract-plugin
533
534/***/ }),
535
536/***/ "0fc9":
537/***/ (function(module, exports, __webpack_require__) {
538
539var toInteger = __webpack_require__("3a38");
540var max = Math.max;
541var min = Math.min;
542module.exports = function (index, length) {
543 index = toInteger(index);
544 return index < 0 ? max(index + length, 0) : min(index, length);
545};
546
547
548/***/ }),
549
550/***/ "11e9":
551/***/ (function(module, exports, __webpack_require__) {
552
553var pIE = __webpack_require__("52a7");
554var createDesc = __webpack_require__("4630");
555var toIObject = __webpack_require__("6821");
556var toPrimitive = __webpack_require__("6a99");
557var has = __webpack_require__("69a8");
558var IE8_DOM_DEFINE = __webpack_require__("c69a");
559var gOPD = Object.getOwnPropertyDescriptor;
560
561exports.f = __webpack_require__("9e1e") ? gOPD : function getOwnPropertyDescriptor(O, P) {
562 O = toIObject(O);
563 P = toPrimitive(P, true);
564 if (IE8_DOM_DEFINE) try {
565 return gOPD(O, P);
566 } catch (e) { /* empty */ }
567 if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
568};
569
570
571/***/ }),
572
573/***/ "1495":
574/***/ (function(module, exports, __webpack_require__) {
575
576var dP = __webpack_require__("86cc");
577var anObject = __webpack_require__("cb7c");
578var getKeys = __webpack_require__("0d58");
579
580module.exports = __webpack_require__("9e1e") ? Object.defineProperties : function defineProperties(O, Properties) {
581 anObject(O);
582 var keys = getKeys(Properties);
583 var length = keys.length;
584 var i = 0;
585 var P;
586 while (length > i) dP.f(O, P = keys[i++], Properties[P]);
587 return O;
588};
589
590
591/***/ }),
592
593/***/ "1516":
594/***/ (function(module, exports, __webpack_require__) {
595
596"use strict";
597
598
599var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
600
601var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
602
603function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
604
605(function () {
606 "use strict";
607
608 if (!Array.from) {
609 Array.from = function (object) {
610 return [].slice.call(object);
611 };
612 }
613
614 function buildAttribute(object, propName, value) {
615 if (value == undefined) {
616 return object;
617 }
618 object = object == null ? {} : object;
619 object[propName] = value;
620 return object;
621 }
622
623 function buildDraggable(Sortable) {
624 function removeNode(node) {
625 node.parentElement.removeChild(node);
626 }
627
628 function insertNodeAt(fatherNode, node, position) {
629 var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;
630 fatherNode.insertBefore(node, refNode);
631 }
632
633 function computeVmIndex(vnodes, element) {
634 return vnodes.map(function (elt) {
635 return elt.elm;
636 }).indexOf(element);
637 }
638
639 function _computeIndexes(slots, children, isTransition) {
640 if (!slots) {
641 return [];
642 }
643
644 var elmFromNodes = slots.map(function (elt) {
645 return elt.elm;
646 });
647 var rawIndexes = [].concat(_toConsumableArray(children)).map(function (elt) {
648 return elmFromNodes.indexOf(elt);
649 });
650 return isTransition ? rawIndexes.filter(function (ind) {
651 return ind !== -1;
652 }) : rawIndexes;
653 }
654
655 function emit(evtName, evtData) {
656 var _this = this;
657
658 this.$nextTick(function () {
659 return _this.$emit(evtName.toLowerCase(), evtData);
660 });
661 }
662
663 function delegateAndEmit(evtName) {
664 var _this2 = this;
665
666 return function (evtData) {
667 if (_this2.realList !== null) {
668 _this2['onDrag' + evtName](evtData);
669 }
670 emit.call(_this2, evtName, evtData);
671 };
672 }
673
674 var eventsListened = ['Start', 'Add', 'Remove', 'Update', 'End'];
675 var eventsToEmit = ['Choose', 'Sort', 'Filter', 'Clone'];
676 var readonlyProperties = ['Move'].concat(eventsListened, eventsToEmit).map(function (evt) {
677 return 'on' + evt;
678 });
679 var draggingElement = null;
680
681 var props = {
682 options: Object,
683 list: {
684 type: Array,
685 required: false,
686 default: null
687 },
688 value: {
689 type: Array,
690 required: false,
691 default: null
692 },
693 noTransitionOnDrag: {
694 type: Boolean,
695 default: false
696 },
697 clone: {
698 type: Function,
699 default: function _default(original) {
700 return original;
701 }
702 },
703 element: {
704 type: String,
705 default: 'div'
706 },
707 move: {
708 type: Function,
709 default: null
710 },
711 componentData: {
712 type: Object,
713 required: false,
714 default: null
715 }
716 };
717
718 var draggableComponent = {
719 name: 'draggable',
720
721 props: props,
722
723 data: function data() {
724 return {
725 transitionMode: false,
726 noneFunctionalComponentMode: false,
727 init: false
728 };
729 },
730 render: function render(h) {
731 var slots = this.$slots.default;
732 if (slots && slots.length === 1) {
733 var child = slots[0];
734 if (child.componentOptions && child.componentOptions.tag === "transition-group") {
735 this.transitionMode = true;
736 }
737 }
738 var headerOffset = 0;
739 var children = slots;
740 var _$slots = this.$slots,
741 header = _$slots.header,
742 footer = _$slots.footer;
743
744 if (header) {
745 headerOffset = header.length;
746 children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : [].concat(_toConsumableArray(header));
747 }
748 if (footer) {
749 children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : [].concat(_toConsumableArray(footer));
750 }
751 this.headerOffset = headerOffset;
752 var attributes = null;
753 var update = function update(name, value) {
754 attributes = buildAttribute(attributes, name, value);
755 };
756 update('attrs', this.$attrs);
757 if (this.componentData) {
758 var _componentData = this.componentData,
759 on = _componentData.on,
760 _props = _componentData.props;
761
762 update('on', on);
763 update('props', _props);
764 }
765 return h(this.element, attributes, children);
766 },
767 mounted: function mounted() {
768 var _this3 = this;
769
770 this.noneFunctionalComponentMode = this.element.toLowerCase() !== this.$el.nodeName.toLowerCase();
771 if (this.noneFunctionalComponentMode && this.transitionMode) {
772 throw new Error('Transition-group inside component is not supported. Please alter element value or remove transition-group. Current element value: ' + this.element);
773 }
774 var optionsAdded = {};
775 eventsListened.forEach(function (elt) {
776 optionsAdded['on' + elt] = delegateAndEmit.call(_this3, elt);
777 });
778
779 eventsToEmit.forEach(function (elt) {
780 optionsAdded['on' + elt] = emit.bind(_this3, elt);
781 });
782
783 var options = _extends({}, this.options, optionsAdded, { onMove: function onMove(evt, originalEvent) {
784 return _this3.onDragMove(evt, originalEvent);
785 } });
786 !('draggable' in options) && (options.draggable = '>*');
787 this._sortable = new Sortable(this.rootContainer, options);
788 this.computeIndexes();
789 },
790 beforeDestroy: function beforeDestroy() {
791 if (this._sortable !== undefined) this._sortable.destroy();
792 },
793
794
795 computed: {
796 rootContainer: function rootContainer() {
797 return this.transitionMode ? this.$el.children[0] : this.$el;
798 },
799 isCloning: function isCloning() {
800 return !!this.options && !!this.options.group && this.options.group.pull === 'clone';
801 },
802 realList: function realList() {
803 return !!this.list ? this.list : this.value;
804 }
805 },
806
807 watch: {
808 options: {
809 handler: function handler(newOptionValue) {
810 for (var property in newOptionValue) {
811 if (readonlyProperties.indexOf(property) == -1) {
812 this._sortable.option(property, newOptionValue[property]);
813 }
814 }
815 },
816
817 deep: true
818 },
819
820 realList: function realList() {
821 this.computeIndexes();
822 }
823 },
824
825 methods: {
826 getChildrenNodes: function getChildrenNodes() {
827 if (!this.init) {
828 this.noneFunctionalComponentMode = this.noneFunctionalComponentMode && this.$children.length == 1;
829 this.init = true;
830 }
831
832 if (this.noneFunctionalComponentMode) {
833 return this.$children[0].$slots.default;
834 }
835 var rawNodes = this.$slots.default;
836 return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;
837 },
838 computeIndexes: function computeIndexes() {
839 var _this4 = this;
840
841 this.$nextTick(function () {
842 _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode);
843 });
844 },
845 getUnderlyingVm: function getUnderlyingVm(htmlElt) {
846 var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);
847 if (index === -1) {
848 //Edge case during move callback: related element might be
849 //an element different from collection
850 return null;
851 }
852 var element = this.realList[index];
853 return { index: index, element: element };
854 },
855 getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {
856 var __vue__ = _ref.__vue__;
857
858 if (!__vue__ || !__vue__.$options || __vue__.$options._componentTag !== "transition-group") {
859 return __vue__;
860 }
861 return __vue__.$parent;
862 },
863 emitChanges: function emitChanges(evt) {
864 var _this5 = this;
865
866 this.$nextTick(function () {
867 _this5.$emit('change', evt);
868 });
869 },
870 alterList: function alterList(onList) {
871 if (!!this.list) {
872 onList(this.list);
873 } else {
874 var newList = [].concat(_toConsumableArray(this.value));
875 onList(newList);
876 this.$emit('input', newList);
877 }
878 },
879 spliceList: function spliceList() {
880 var _arguments = arguments;
881
882 var spliceList = function spliceList(list) {
883 return list.splice.apply(list, _arguments);
884 };
885 this.alterList(spliceList);
886 },
887 updatePosition: function updatePosition(oldIndex, newIndex) {
888 var updatePosition = function updatePosition(list) {
889 return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);
890 };
891 this.alterList(updatePosition);
892 },
893 getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {
894 var to = _ref2.to,
895 related = _ref2.related;
896
897 var component = this.getUnderlyingPotencialDraggableComponent(to);
898 if (!component) {
899 return { component: component };
900 }
901 var list = component.realList;
902 var context = { list: list, component: component };
903 if (to !== related && list && component.getUnderlyingVm) {
904 var destination = component.getUnderlyingVm(related);
905 if (destination) {
906 return _extends(destination, context);
907 }
908 }
909
910 return context;
911 },
912 getVmIndex: function getVmIndex(domIndex) {
913 var indexes = this.visibleIndexes;
914 var numberIndexes = indexes.length;
915 return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];
916 },
917 getComponent: function getComponent() {
918 return this.$slots.default[0].componentInstance;
919 },
920 resetTransitionData: function resetTransitionData(index) {
921 if (!this.noTransitionOnDrag || !this.transitionMode) {
922 return;
923 }
924 var nodes = this.getChildrenNodes();
925 nodes[index].data = null;
926 var transitionContainer = this.getComponent();
927 transitionContainer.children = [];
928 transitionContainer.kept = undefined;
929 },
930 onDragStart: function onDragStart(evt) {
931 this.context = this.getUnderlyingVm(evt.item);
932 evt.item._underlying_vm_ = this.clone(this.context.element);
933 draggingElement = evt.item;
934 },
935 onDragAdd: function onDragAdd(evt) {
936 this.updateEvenemt(evt);
937 var element = evt.item._underlying_vm_;
938 if (element === undefined) {
939 return;
940 }
941 removeNode(evt.item);
942 var newIndex = this.getVmIndex(evt.newIndex);
943 this.spliceList(newIndex, 0, element);
944 this.computeIndexes();
945 var added = { element: element, newIndex: newIndex };
946 this.emitChanges({ added: added });
947 },
948 onDragRemove: function onDragRemove(evt) {
949 this.updateEvenemt(evt);
950 insertNodeAt(this.rootContainer, evt.item, evt.oldIndex);
951 if (this.isCloning) {
952 removeNode(evt.clone);
953 return;
954 }
955 var oldIndex = this.context.index;
956 this.spliceList(oldIndex, 1);
957 var removed = { element: this.context.element, oldIndex: oldIndex };
958 this.resetTransitionData(oldIndex);
959 this.emitChanges({ removed: removed });
960 },
961 onDragUpdate: function onDragUpdate(evt) {
962 this.updateEvenemt(evt);
963 removeNode(evt.item);
964 insertNodeAt(evt.from, evt.item, evt.oldIndex);
965 var oldIndex = this.context.index;
966 var newIndex = this.getVmIndex(evt.newIndex);
967 this.updatePosition(oldIndex, newIndex);
968 var moved = { element: this.context.element, oldIndex: oldIndex, newIndex: newIndex };
969 this.emitChanges({ moved: moved });
970 },
971 updateEvenemt: function updateEvenemt(evt) {
972 this.updateProperty(evt, 'newIndex');
973 this.updateProperty(evt, 'oldIndex');
974 },
975 updateProperty: function updateProperty(evt, propertyName) {
976 evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);
977 },
978 computeFutureIndex: function computeFutureIndex(relatedContext, evt) {
979 if (!relatedContext.element) {
980 return 0;
981 }
982 var domChildren = [].concat(_toConsumableArray(evt.to.children)).filter(function (el) {
983 return el.style['display'] !== 'none';
984 });
985 var currentDOMIndex = domChildren.indexOf(evt.related);
986 var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);
987 var draggedInList = domChildren.indexOf(draggingElement) != -1;
988 return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;
989 },
990 onDragMove: function onDragMove(evt, originalEvent) {
991 var onMove = this.move;
992 if (!onMove || !this.realList) {
993 return true;
994 }
995
996 var relatedContext = this.getRelatedContextFromMoveEvent(evt);
997 var draggedContext = this.context;
998 var futureIndex = this.computeFutureIndex(relatedContext, evt);
999 _extends(draggedContext, { futureIndex: futureIndex });
1000 _extends(evt, { relatedContext: relatedContext, draggedContext: draggedContext });
1001 return onMove(evt, originalEvent);
1002 },
1003 onDragEnd: function onDragEnd(evt) {
1004 this.computeIndexes();
1005 draggingElement = null;
1006 }
1007 }
1008 };
1009 return draggableComponent;
1010 }
1011
1012 if (true) {
1013 var Sortable = __webpack_require__("53fe");
1014 module.exports = buildDraggable(Sortable);
1015 } else { var draggable; }
1016})();
1017
1018/***/ }),
1019
1020/***/ "1654":
1021/***/ (function(module, exports, __webpack_require__) {
1022
1023"use strict";
1024
1025var $at = __webpack_require__("71c1")(true);
1026
1027// 21.1.3.27 String.prototype[@@iterator]()
1028__webpack_require__("30f1")(String, 'String', function (iterated) {
1029 this._t = String(iterated); // target
1030 this._i = 0; // next index
1031// 21.1.5.2.1 %StringIteratorPrototype%.next()
1032}, function () {
1033 var O = this._t;
1034 var index = this._i;
1035 var point;
1036 if (index >= O.length) return { value: undefined, done: true };
1037 point = $at(O, index);
1038 this._i += point.length;
1039 return { value: point, done: false };
1040});
1041
1042
1043/***/ }),
1044
1045/***/ "1691":
1046/***/ (function(module, exports) {
1047
1048// IE 8- don't enum bug keys
1049module.exports = (
1050 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
1051).split(',');
1052
1053
1054/***/ }),
1055
1056/***/ "177a":
1057/***/ (function(module, __webpack_exports__, __webpack_require__) {
1058
1059"use strict";
1060/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotificationBanner_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f88e");
1061/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotificationBanner_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotificationBanner_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1062/* unused harmony reexport * */
1063 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotificationBanner_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
1064
1065/***/ }),
1066
1067/***/ "1946":
1068/***/ (function(module, exports, __webpack_require__) {
1069
1070"use strict";
1071
1072
1073/***/ }),
1074
1075/***/ "1af6":
1076/***/ (function(module, exports, __webpack_require__) {
1077
1078// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
1079var $export = __webpack_require__("63b6");
1080
1081$export($export.S, 'Array', { isArray: __webpack_require__("9003") });
1082
1083
1084/***/ }),
1085
1086/***/ "1bc3":
1087/***/ (function(module, exports, __webpack_require__) {
1088
1089// 7.1.1 ToPrimitive(input [, PreferredType])
1090var isObject = __webpack_require__("f772");
1091// instead of the ES6 spec version, we didn't implement @@toPrimitive case
1092// and the second argument - flag - preferred type is a string
1093module.exports = function (it, S) {
1094 if (!isObject(it)) return it;
1095 var fn, val;
1096 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1097 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1098 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1099 throw TypeError("Can't convert object to primitive value");
1100};
1101
1102
1103/***/ }),
1104
1105/***/ "1d3b":
1106/***/ (function(module, __webpack_exports__, __webpack_require__) {
1107
1108"use strict";
1109/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckbox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3008");
1110/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckbox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckbox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1111/* unused harmony reexport * */
1112 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckbox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
1113
1114/***/ }),
1115
1116/***/ "1df8":
1117/***/ (function(module, exports, __webpack_require__) {
1118
1119// 19.1.3.19 Object.setPrototypeOf(O, proto)
1120var $export = __webpack_require__("63b6");
1121$export($export.S, 'Object', { setPrototypeOf: __webpack_require__("ead6").set });
1122
1123
1124/***/ }),
1125
1126/***/ "1ec9":
1127/***/ (function(module, exports, __webpack_require__) {
1128
1129var isObject = __webpack_require__("f772");
1130var document = __webpack_require__("e53d").document;
1131// typeof document.createElement is 'object' in old IE
1132var is = isObject(document) && isObject(document.createElement);
1133module.exports = function (it) {
1134 return is ? document.createElement(it) : {};
1135};
1136
1137
1138/***/ }),
1139
1140/***/ "20fd":
1141/***/ (function(module, exports, __webpack_require__) {
1142
1143"use strict";
1144
1145var $defineProperty = __webpack_require__("d9f6");
1146var createDesc = __webpack_require__("aebd");
1147
1148module.exports = function (object, index, value) {
1149 if (index in object) $defineProperty.f(object, index, createDesc(0, value));
1150 else object[index] = value;
1151};
1152
1153
1154/***/ }),
1155
1156/***/ "214f":
1157/***/ (function(module, exports, __webpack_require__) {
1158
1159"use strict";
1160
1161var hide = __webpack_require__("32e9");
1162var redefine = __webpack_require__("2aba");
1163var fails = __webpack_require__("79e5");
1164var defined = __webpack_require__("be13");
1165var wks = __webpack_require__("2b4c");
1166
1167module.exports = function (KEY, length, exec) {
1168 var SYMBOL = wks(KEY);
1169 var fns = exec(defined, SYMBOL, ''[KEY]);
1170 var strfn = fns[0];
1171 var rxfn = fns[1];
1172 if (fails(function () {
1173 var O = {};
1174 O[SYMBOL] = function () { return 7; };
1175 return ''[KEY](O) != 7;
1176 })) {
1177 redefine(String.prototype, KEY, strfn);
1178 hide(RegExp.prototype, SYMBOL, length == 2
1179 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
1180 // 21.2.5.11 RegExp.prototype[@@split](string, limit)
1181 ? function (string, arg) { return rxfn.call(string, this, arg); }
1182 // 21.2.5.6 RegExp.prototype[@@match](string)
1183 // 21.2.5.9 RegExp.prototype[@@search](string)
1184 : function (string) { return rxfn.call(string, this); }
1185 );
1186 }
1187};
1188
1189
1190/***/ }),
1191
1192/***/ "230e":
1193/***/ (function(module, exports, __webpack_require__) {
1194
1195var isObject = __webpack_require__("d3f4");
1196var document = __webpack_require__("7726").document;
1197// typeof document.createElement is 'object' in old IE
1198var is = isObject(document) && isObject(document.createElement);
1199module.exports = function (it) {
1200 return is ? document.createElement(it) : {};
1201};
1202
1203
1204/***/ }),
1205
1206/***/ "241e":
1207/***/ (function(module, exports, __webpack_require__) {
1208
1209// 7.1.13 ToObject(argument)
1210var defined = __webpack_require__("25eb");
1211module.exports = function (it) {
1212 return Object(defined(it));
1213};
1214
1215
1216/***/ }),
1217
1218/***/ "243e":
1219/***/ (function(module, exports, __webpack_require__) {
1220
1221// extracted by mini-css-extract-plugin
1222
1223/***/ }),
1224
1225/***/ "25b0":
1226/***/ (function(module, exports, __webpack_require__) {
1227
1228__webpack_require__("1df8");
1229module.exports = __webpack_require__("584a").Object.setPrototypeOf;
1230
1231
1232/***/ }),
1233
1234/***/ "25eb":
1235/***/ (function(module, exports) {
1236
1237// 7.2.1 RequireObjectCoercible(argument)
1238module.exports = function (it) {
1239 if (it == undefined) throw TypeError("Can't call method on " + it);
1240 return it;
1241};
1242
1243
1244/***/ }),
1245
1246/***/ "2625":
1247/***/ (function(module, __webpack_exports__, __webpack_require__) {
1248
1249"use strict";
1250/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShBlankslate_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3cde");
1251/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShBlankslate_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShBlankslate_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1252/* unused harmony reexport * */
1253 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShBlankslate_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
1254
1255/***/ }),
1256
1257/***/ "28a5":
1258/***/ (function(module, exports, __webpack_require__) {
1259
1260// @@split logic
1261__webpack_require__("214f")('split', 2, function (defined, SPLIT, $split) {
1262 'use strict';
1263 var isRegExp = __webpack_require__("aae3");
1264 var _split = $split;
1265 var $push = [].push;
1266 var $SPLIT = 'split';
1267 var LENGTH = 'length';
1268 var LAST_INDEX = 'lastIndex';
1269 if (
1270 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
1271 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
1272 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
1273 '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
1274 '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
1275 ''[$SPLIT](/.?/)[LENGTH]
1276 ) {
1277 var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
1278 // based on es5-shim implementation, need to rework it
1279 $split = function (separator, limit) {
1280 var string = String(this);
1281 if (separator === undefined && limit === 0) return [];
1282 // If `separator` is not a regex, use native split
1283 if (!isRegExp(separator)) return _split.call(string, separator, limit);
1284 var output = [];
1285 var flags = (separator.ignoreCase ? 'i' : '') +
1286 (separator.multiline ? 'm' : '') +
1287 (separator.unicode ? 'u' : '') +
1288 (separator.sticky ? 'y' : '');
1289 var lastLastIndex = 0;
1290 var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
1291 // Make `global` and avoid `lastIndex` issues by working with a copy
1292 var separatorCopy = new RegExp(separator.source, flags + 'g');
1293 var separator2, match, lastIndex, lastLength, i;
1294 // Doesn't need flags gy, but they don't hurt
1295 if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
1296 while (match = separatorCopy.exec(string)) {
1297 // `separatorCopy.lastIndex` is not reliable cross-browser
1298 lastIndex = match.index + match[0][LENGTH];
1299 if (lastIndex > lastLastIndex) {
1300 output.push(string.slice(lastLastIndex, match.index));
1301 // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
1302 // eslint-disable-next-line no-loop-func
1303 if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {
1304 for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
1305 });
1306 if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
1307 lastLength = match[0][LENGTH];
1308 lastLastIndex = lastIndex;
1309 if (output[LENGTH] >= splitLimit) break;
1310 }
1311 if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
1312 }
1313 if (lastLastIndex === string[LENGTH]) {
1314 if (lastLength || !separatorCopy.test('')) output.push('');
1315 } else output.push(string.slice(lastLastIndex));
1316 return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
1317 };
1318 // Chakra, V8
1319 } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
1320 $split = function (separator, limit) {
1321 return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
1322 };
1323 }
1324 // 21.1.3.17 String.prototype.split(separator, limit)
1325 return [function split(separator, limit) {
1326 var O = defined(this);
1327 var fn = separator == undefined ? undefined : separator[SPLIT];
1328 return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
1329 }, $split];
1330});
1331
1332
1333/***/ }),
1334
1335/***/ "294c":
1336/***/ (function(module, exports) {
1337
1338module.exports = function (exec) {
1339 try {
1340 return !!exec();
1341 } catch (e) {
1342 return true;
1343 }
1344};
1345
1346
1347/***/ }),
1348
1349/***/ "2aba":
1350/***/ (function(module, exports, __webpack_require__) {
1351
1352var global = __webpack_require__("7726");
1353var hide = __webpack_require__("32e9");
1354var has = __webpack_require__("69a8");
1355var SRC = __webpack_require__("ca5a")('src');
1356var TO_STRING = 'toString';
1357var $toString = Function[TO_STRING];
1358var TPL = ('' + $toString).split(TO_STRING);
1359
1360__webpack_require__("8378").inspectSource = function (it) {
1361 return $toString.call(it);
1362};
1363
1364(module.exports = function (O, key, val, safe) {
1365 var isFunction = typeof val == 'function';
1366 if (isFunction) has(val, 'name') || hide(val, 'name', key);
1367 if (O[key] === val) return;
1368 if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1369 if (O === global) {
1370 O[key] = val;
1371 } else if (!safe) {
1372 delete O[key];
1373 hide(O, key, val);
1374 } else if (O[key]) {
1375 O[key] = val;
1376 } else {
1377 hide(O, key, val);
1378 }
1379// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
1380})(Function.prototype, TO_STRING, function toString() {
1381 return typeof this == 'function' && this[SRC] || $toString.call(this);
1382});
1383
1384
1385/***/ }),
1386
1387/***/ "2aeb":
1388/***/ (function(module, exports, __webpack_require__) {
1389
1390// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
1391var anObject = __webpack_require__("cb7c");
1392var dPs = __webpack_require__("1495");
1393var enumBugKeys = __webpack_require__("e11e");
1394var IE_PROTO = __webpack_require__("613b")('IE_PROTO');
1395var Empty = function () { /* empty */ };
1396var PROTOTYPE = 'prototype';
1397
1398// Create object with fake `null` prototype: use iframe Object with cleared prototype
1399var createDict = function () {
1400 // Thrash, waste and sodomy: IE GC bug
1401 var iframe = __webpack_require__("230e")('iframe');
1402 var i = enumBugKeys.length;
1403 var lt = '<';
1404 var gt = '>';
1405 var iframeDocument;
1406 iframe.style.display = 'none';
1407 __webpack_require__("fab2").appendChild(iframe);
1408 iframe.src = 'javascript:'; // eslint-disable-line no-script-url
1409 // createDict = iframe.contentWindow.Object;
1410 // html.removeChild(iframe);
1411 iframeDocument = iframe.contentWindow.document;
1412 iframeDocument.open();
1413 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
1414 iframeDocument.close();
1415 createDict = iframeDocument.F;
1416 while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
1417 return createDict();
1418};
1419
1420module.exports = Object.create || function create(O, Properties) {
1421 var result;
1422 if (O !== null) {
1423 Empty[PROTOTYPE] = anObject(O);
1424 result = new Empty();
1425 Empty[PROTOTYPE] = null;
1426 // add "__proto__" for Object.getPrototypeOf polyfill
1427 result[IE_PROTO] = O;
1428 } else result = createDict();
1429 return Properties === undefined ? result : dPs(result, Properties);
1430};
1431
1432
1433/***/ }),
1434
1435/***/ "2afc":
1436/***/ (function(module, exports, __webpack_require__) {
1437
1438// extracted by mini-css-extract-plugin
1439
1440/***/ }),
1441
1442/***/ "2b4c":
1443/***/ (function(module, exports, __webpack_require__) {
1444
1445var store = __webpack_require__("5537")('wks');
1446var uid = __webpack_require__("ca5a");
1447var Symbol = __webpack_require__("7726").Symbol;
1448var USE_SYMBOL = typeof Symbol == 'function';
1449
1450var $exports = module.exports = function (name) {
1451 return store[name] || (store[name] =
1452 USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
1453};
1454
1455$exports.store = store;
1456
1457
1458/***/ }),
1459
1460/***/ "2d00":
1461/***/ (function(module, exports) {
1462
1463module.exports = false;
1464
1465
1466/***/ }),
1467
1468/***/ "2d95":
1469/***/ (function(module, exports) {
1470
1471var toString = {}.toString;
1472
1473module.exports = function (it) {
1474 return toString.call(it).slice(8, -1);
1475};
1476
1477
1478/***/ }),
1479
1480/***/ "2ddc":
1481/***/ (function(module, exports, __webpack_require__) {
1482
1483// extracted by mini-css-extract-plugin
1484
1485/***/ }),
1486
1487/***/ "2e7f":
1488/***/ (function(module, __webpack_exports__, __webpack_require__) {
1489
1490"use strict";
1491/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShFieldGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7c10");
1492/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShFieldGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShFieldGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1493/* unused harmony reexport * */
1494 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShFieldGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
1495
1496/***/ }),
1497
1498/***/ "2ef0":
1499/***/ (function(module, exports, __webpack_require__) {
1500
1501/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**
1502 * @license
1503 * Lodash <https://lodash.com/>
1504 * Copyright JS Foundation and other contributors <https://js.foundation/>
1505 * Released under MIT license <https://lodash.com/license>
1506 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
1507 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1508 */
1509;(function() {
1510
1511 /** Used as a safe reference for `undefined` in pre-ES5 environments. */
1512 var undefined;
1513
1514 /** Used as the semantic version number. */
1515 var VERSION = '4.17.10';
1516
1517 /** Used as the size to enable large array optimizations. */
1518 var LARGE_ARRAY_SIZE = 200;
1519
1520 /** Error message constants. */
1521 var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
1522 FUNC_ERROR_TEXT = 'Expected a function';
1523
1524 /** Used to stand-in for `undefined` hash values. */
1525 var HASH_UNDEFINED = '__lodash_hash_undefined__';
1526
1527 /** Used as the maximum memoize cache size. */
1528 var MAX_MEMOIZE_SIZE = 500;
1529
1530 /** Used as the internal argument placeholder. */
1531 var PLACEHOLDER = '__lodash_placeholder__';
1532
1533 /** Used to compose bitmasks for cloning. */
1534 var CLONE_DEEP_FLAG = 1,
1535 CLONE_FLAT_FLAG = 2,
1536 CLONE_SYMBOLS_FLAG = 4;
1537
1538 /** Used to compose bitmasks for value comparisons. */
1539 var COMPARE_PARTIAL_FLAG = 1,
1540 COMPARE_UNORDERED_FLAG = 2;
1541
1542 /** Used to compose bitmasks for function metadata. */
1543 var WRAP_BIND_FLAG = 1,
1544 WRAP_BIND_KEY_FLAG = 2,
1545 WRAP_CURRY_BOUND_FLAG = 4,
1546 WRAP_CURRY_FLAG = 8,
1547 WRAP_CURRY_RIGHT_FLAG = 16,
1548 WRAP_PARTIAL_FLAG = 32,
1549 WRAP_PARTIAL_RIGHT_FLAG = 64,
1550 WRAP_ARY_FLAG = 128,
1551 WRAP_REARG_FLAG = 256,
1552 WRAP_FLIP_FLAG = 512;
1553
1554 /** Used as default options for `_.truncate`. */
1555 var DEFAULT_TRUNC_LENGTH = 30,
1556 DEFAULT_TRUNC_OMISSION = '...';
1557
1558 /** Used to detect hot functions by number of calls within a span of milliseconds. */
1559 var HOT_COUNT = 800,
1560 HOT_SPAN = 16;
1561
1562 /** Used to indicate the type of lazy iteratees. */
1563 var LAZY_FILTER_FLAG = 1,
1564 LAZY_MAP_FLAG = 2,
1565 LAZY_WHILE_FLAG = 3;
1566
1567 /** Used as references for various `Number` constants. */
1568 var INFINITY = 1 / 0,
1569 MAX_SAFE_INTEGER = 9007199254740991,
1570 MAX_INTEGER = 1.7976931348623157e+308,
1571 NAN = 0 / 0;
1572
1573 /** Used as references for the maximum length and index of an array. */
1574 var MAX_ARRAY_LENGTH = 4294967295,
1575 MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
1576 HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
1577
1578 /** Used to associate wrap methods with their bit flags. */
1579 var wrapFlags = [
1580 ['ary', WRAP_ARY_FLAG],
1581 ['bind', WRAP_BIND_FLAG],
1582 ['bindKey', WRAP_BIND_KEY_FLAG],
1583 ['curry', WRAP_CURRY_FLAG],
1584 ['curryRight', WRAP_CURRY_RIGHT_FLAG],
1585 ['flip', WRAP_FLIP_FLAG],
1586 ['partial', WRAP_PARTIAL_FLAG],
1587 ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
1588 ['rearg', WRAP_REARG_FLAG]
1589 ];
1590
1591 /** `Object#toString` result references. */
1592 var argsTag = '[object Arguments]',
1593 arrayTag = '[object Array]',
1594 asyncTag = '[object AsyncFunction]',
1595 boolTag = '[object Boolean]',
1596 dateTag = '[object Date]',
1597 domExcTag = '[object DOMException]',
1598 errorTag = '[object Error]',
1599 funcTag = '[object Function]',
1600 genTag = '[object GeneratorFunction]',
1601 mapTag = '[object Map]',
1602 numberTag = '[object Number]',
1603 nullTag = '[object Null]',
1604 objectTag = '[object Object]',
1605 promiseTag = '[object Promise]',
1606 proxyTag = '[object Proxy]',
1607 regexpTag = '[object RegExp]',
1608 setTag = '[object Set]',
1609 stringTag = '[object String]',
1610 symbolTag = '[object Symbol]',
1611 undefinedTag = '[object Undefined]',
1612 weakMapTag = '[object WeakMap]',
1613 weakSetTag = '[object WeakSet]';
1614
1615 var arrayBufferTag = '[object ArrayBuffer]',
1616 dataViewTag = '[object DataView]',
1617 float32Tag = '[object Float32Array]',
1618 float64Tag = '[object Float64Array]',
1619 int8Tag = '[object Int8Array]',
1620 int16Tag = '[object Int16Array]',
1621 int32Tag = '[object Int32Array]',
1622 uint8Tag = '[object Uint8Array]',
1623 uint8ClampedTag = '[object Uint8ClampedArray]',
1624 uint16Tag = '[object Uint16Array]',
1625 uint32Tag = '[object Uint32Array]';
1626
1627 /** Used to match empty string literals in compiled template source. */
1628 var reEmptyStringLeading = /\b__p \+= '';/g,
1629 reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
1630 reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
1631
1632 /** Used to match HTML entities and HTML characters. */
1633 var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
1634 reUnescapedHtml = /[&<>"']/g,
1635 reHasEscapedHtml = RegExp(reEscapedHtml.source),
1636 reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
1637
1638 /** Used to match template delimiters. */
1639 var reEscape = /<%-([\s\S]+?)%>/g,
1640 reEvaluate = /<%([\s\S]+?)%>/g,
1641 reInterpolate = /<%=([\s\S]+?)%>/g;
1642
1643 /** Used to match property names within property paths. */
1644 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
1645 reIsPlainProp = /^\w*$/,
1646 rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
1647
1648 /**
1649 * Used to match `RegExp`
1650 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
1651 */
1652 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
1653 reHasRegExpChar = RegExp(reRegExpChar.source);
1654
1655 /** Used to match leading and trailing whitespace. */
1656 var reTrim = /^\s+|\s+$/g,
1657 reTrimStart = /^\s+/,
1658 reTrimEnd = /\s+$/;
1659
1660 /** Used to match wrap detail comments. */
1661 var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
1662 reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
1663 reSplitDetails = /,? & /;
1664
1665 /** Used to match words composed of alphanumeric characters. */
1666 var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
1667
1668 /** Used to match backslashes in property paths. */
1669 var reEscapeChar = /\\(\\)?/g;
1670
1671 /**
1672 * Used to match
1673 * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
1674 */
1675 var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
1676
1677 /** Used to match `RegExp` flags from their coerced string values. */
1678 var reFlags = /\w*$/;
1679
1680 /** Used to detect bad signed hexadecimal string values. */
1681 var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
1682
1683 /** Used to detect binary string values. */
1684 var reIsBinary = /^0b[01]+$/i;
1685
1686 /** Used to detect host constructors (Safari). */
1687 var reIsHostCtor = /^\[object .+?Constructor\]$/;
1688
1689 /** Used to detect octal string values. */
1690 var reIsOctal = /^0o[0-7]+$/i;
1691
1692 /** Used to detect unsigned integer values. */
1693 var reIsUint = /^(?:0|[1-9]\d*)$/;
1694
1695 /** Used to match Latin Unicode letters (excluding mathematical operators). */
1696 var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
1697
1698 /** Used to ensure capturing order of template delimiters. */
1699 var reNoMatch = /($^)/;
1700
1701 /** Used to match unescaped characters in compiled string literals. */
1702 var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
1703
1704 /** Used to compose unicode character classes. */
1705 var rsAstralRange = '\\ud800-\\udfff',
1706 rsComboMarksRange = '\\u0300-\\u036f',
1707 reComboHalfMarksRange = '\\ufe20-\\ufe2f',
1708 rsComboSymbolsRange = '\\u20d0-\\u20ff',
1709 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
1710 rsDingbatRange = '\\u2700-\\u27bf',
1711 rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
1712 rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
1713 rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
1714 rsPunctuationRange = '\\u2000-\\u206f',
1715 rsSpaceRange = ' \\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',
1716 rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
1717 rsVarRange = '\\ufe0e\\ufe0f',
1718 rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
1719
1720 /** Used to compose unicode capture groups. */
1721 var rsApos = "['\u2019]",
1722 rsAstral = '[' + rsAstralRange + ']',
1723 rsBreak = '[' + rsBreakRange + ']',
1724 rsCombo = '[' + rsComboRange + ']',
1725 rsDigits = '\\d+',
1726 rsDingbat = '[' + rsDingbatRange + ']',
1727 rsLower = '[' + rsLowerRange + ']',
1728 rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
1729 rsFitz = '\\ud83c[\\udffb-\\udfff]',
1730 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
1731 rsNonAstral = '[^' + rsAstralRange + ']',
1732 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
1733 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
1734 rsUpper = '[' + rsUpperRange + ']',
1735 rsZWJ = '\\u200d';
1736
1737 /** Used to compose unicode regexes. */
1738 var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
1739 rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
1740 rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
1741 rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
1742 reOptMod = rsModifier + '?',
1743 rsOptVar = '[' + rsVarRange + ']?',
1744 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
1745 rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
1746 rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
1747 rsSeq = rsOptVar + reOptMod + rsOptJoin,
1748 rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
1749 rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
1750
1751 /** Used to match apostrophes. */
1752 var reApos = RegExp(rsApos, 'g');
1753
1754 /**
1755 * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
1756 * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
1757 */
1758 var reComboMark = RegExp(rsCombo, 'g');
1759
1760 /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
1761 var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
1762
1763 /** Used to match complex or compound words. */
1764 var reUnicodeWord = RegExp([
1765 rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
1766 rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
1767 rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
1768 rsUpper + '+' + rsOptContrUpper,
1769 rsOrdUpper,
1770 rsOrdLower,
1771 rsDigits,
1772 rsEmoji
1773 ].join('|'), 'g');
1774
1775 /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
1776 var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
1777
1778 /** Used to detect strings that need a more robust regexp to match words. */
1779 var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
1780
1781 /** Used to assign default `context` object properties. */
1782 var contextProps = [
1783 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
1784 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
1785 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
1786 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
1787 '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
1788 ];
1789
1790 /** Used to make template sourceURLs easier to identify. */
1791 var templateCounter = -1;
1792
1793 /** Used to identify `toStringTag` values of typed arrays. */
1794 var typedArrayTags = {};
1795 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
1796 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
1797 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
1798 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
1799 typedArrayTags[uint32Tag] = true;
1800 typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
1801 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
1802 typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
1803 typedArrayTags[errorTag] = typedArrayTags[funcTag] =
1804 typedArrayTags[mapTag] = typedArrayTags[numberTag] =
1805 typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
1806 typedArrayTags[setTag] = typedArrayTags[stringTag] =
1807 typedArrayTags[weakMapTag] = false;
1808
1809 /** Used to identify `toStringTag` values supported by `_.clone`. */
1810 var cloneableTags = {};
1811 cloneableTags[argsTag] = cloneableTags[arrayTag] =
1812 cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
1813 cloneableTags[boolTag] = cloneableTags[dateTag] =
1814 cloneableTags[float32Tag] = cloneableTags[float64Tag] =
1815 cloneableTags[int8Tag] = cloneableTags[int16Tag] =
1816 cloneableTags[int32Tag] = cloneableTags[mapTag] =
1817 cloneableTags[numberTag] = cloneableTags[objectTag] =
1818 cloneableTags[regexpTag] = cloneableTags[setTag] =
1819 cloneableTags[stringTag] = cloneableTags[symbolTag] =
1820 cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
1821 cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
1822 cloneableTags[errorTag] = cloneableTags[funcTag] =
1823 cloneableTags[weakMapTag] = false;
1824
1825 /** Used to map Latin Unicode letters to basic Latin letters. */
1826 var deburredLetters = {
1827 // Latin-1 Supplement block.
1828 '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
1829 '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
1830 '\xc7': 'C', '\xe7': 'c',
1831 '\xd0': 'D', '\xf0': 'd',
1832 '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
1833 '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
1834 '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
1835 '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
1836 '\xd1': 'N', '\xf1': 'n',
1837 '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
1838 '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
1839 '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
1840 '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
1841 '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
1842 '\xc6': 'Ae', '\xe6': 'ae',
1843 '\xde': 'Th', '\xfe': 'th',
1844 '\xdf': 'ss',
1845 // Latin Extended-A block.
1846 '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
1847 '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
1848 '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
1849 '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
1850 '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
1851 '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
1852 '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
1853 '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
1854 '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
1855 '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
1856 '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
1857 '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
1858 '\u0134': 'J', '\u0135': 'j',
1859 '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
1860 '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
1861 '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
1862 '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
1863 '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
1864 '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
1865 '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
1866 '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
1867 '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
1868 '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
1869 '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
1870 '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
1871 '\u0163': 't', '\u0165': 't', '\u0167': 't',
1872 '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
1873 '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
1874 '\u0174': 'W', '\u0175': 'w',
1875 '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
1876 '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
1877 '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
1878 '\u0132': 'IJ', '\u0133': 'ij',
1879 '\u0152': 'Oe', '\u0153': 'oe',
1880 '\u0149': "'n", '\u017f': 's'
1881 };
1882
1883 /** Used to map characters to HTML entities. */
1884 var htmlEscapes = {
1885 '&': '&amp;',
1886 '<': '&lt;',
1887 '>': '&gt;',
1888 '"': '&quot;',
1889 "'": '&#39;'
1890 };
1891
1892 /** Used to map HTML entities to characters. */
1893 var htmlUnescapes = {
1894 '&amp;': '&',
1895 '&lt;': '<',
1896 '&gt;': '>',
1897 '&quot;': '"',
1898 '&#39;': "'"
1899 };
1900
1901 /** Used to escape characters for inclusion in compiled string literals. */
1902 var stringEscapes = {
1903 '\\': '\\',
1904 "'": "'",
1905 '\n': 'n',
1906 '\r': 'r',
1907 '\u2028': 'u2028',
1908 '\u2029': 'u2029'
1909 };
1910
1911 /** Built-in method references without a dependency on `root`. */
1912 var freeParseFloat = parseFloat,
1913 freeParseInt = parseInt;
1914
1915 /** Detect free variable `global` from Node.js. */
1916 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
1917
1918 /** Detect free variable `self`. */
1919 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
1920
1921 /** Used as a reference to the global object. */
1922 var root = freeGlobal || freeSelf || Function('return this')();
1923
1924 /** Detect free variable `exports`. */
1925 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
1926
1927 /** Detect free variable `module`. */
1928 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
1929
1930 /** Detect the popular CommonJS extension `module.exports`. */
1931 var moduleExports = freeModule && freeModule.exports === freeExports;
1932
1933 /** Detect free variable `process` from Node.js. */
1934 var freeProcess = moduleExports && freeGlobal.process;
1935
1936 /** Used to access faster Node.js helpers. */
1937 var nodeUtil = (function() {
1938 try {
1939 // Use `util.types` for Node.js 10+.
1940 var types = freeModule && freeModule.require && freeModule.require('util').types;
1941
1942 if (types) {
1943 return types;
1944 }
1945
1946 // Legacy `process.binding('util')` for Node.js < 10.
1947 return freeProcess && freeProcess.binding && freeProcess.binding('util');
1948 } catch (e) {}
1949 }());
1950
1951 /* Node.js helper references. */
1952 var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
1953 nodeIsDate = nodeUtil && nodeUtil.isDate,
1954 nodeIsMap = nodeUtil && nodeUtil.isMap,
1955 nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
1956 nodeIsSet = nodeUtil && nodeUtil.isSet,
1957 nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
1958
1959 /*--------------------------------------------------------------------------*/
1960
1961 /**
1962 * A faster alternative to `Function#apply`, this function invokes `func`
1963 * with the `this` binding of `thisArg` and the arguments of `args`.
1964 *
1965 * @private
1966 * @param {Function} func The function to invoke.
1967 * @param {*} thisArg The `this` binding of `func`.
1968 * @param {Array} args The arguments to invoke `func` with.
1969 * @returns {*} Returns the result of `func`.
1970 */
1971 function apply(func, thisArg, args) {
1972 switch (args.length) {
1973 case 0: return func.call(thisArg);
1974 case 1: return func.call(thisArg, args[0]);
1975 case 2: return func.call(thisArg, args[0], args[1]);
1976 case 3: return func.call(thisArg, args[0], args[1], args[2]);
1977 }
1978 return func.apply(thisArg, args);
1979 }
1980
1981 /**
1982 * A specialized version of `baseAggregator` for arrays.
1983 *
1984 * @private
1985 * @param {Array} [array] The array to iterate over.
1986 * @param {Function} setter The function to set `accumulator` values.
1987 * @param {Function} iteratee The iteratee to transform keys.
1988 * @param {Object} accumulator The initial aggregated object.
1989 * @returns {Function} Returns `accumulator`.
1990 */
1991 function arrayAggregator(array, setter, iteratee, accumulator) {
1992 var index = -1,
1993 length = array == null ? 0 : array.length;
1994
1995 while (++index < length) {
1996 var value = array[index];
1997 setter(accumulator, value, iteratee(value), array);
1998 }
1999 return accumulator;
2000 }
2001
2002 /**
2003 * A specialized version of `_.forEach` for arrays without support for
2004 * iteratee shorthands.
2005 *
2006 * @private
2007 * @param {Array} [array] The array to iterate over.
2008 * @param {Function} iteratee The function invoked per iteration.
2009 * @returns {Array} Returns `array`.
2010 */
2011 function arrayEach(array, iteratee) {
2012 var index = -1,
2013 length = array == null ? 0 : array.length;
2014
2015 while (++index < length) {
2016 if (iteratee(array[index], index, array) === false) {
2017 break;
2018 }
2019 }
2020 return array;
2021 }
2022
2023 /**
2024 * A specialized version of `_.forEachRight` for arrays without support for
2025 * iteratee shorthands.
2026 *
2027 * @private
2028 * @param {Array} [array] The array to iterate over.
2029 * @param {Function} iteratee The function invoked per iteration.
2030 * @returns {Array} Returns `array`.
2031 */
2032 function arrayEachRight(array, iteratee) {
2033 var length = array == null ? 0 : array.length;
2034
2035 while (length--) {
2036 if (iteratee(array[length], length, array) === false) {
2037 break;
2038 }
2039 }
2040 return array;
2041 }
2042
2043 /**
2044 * A specialized version of `_.every` for arrays without support for
2045 * iteratee shorthands.
2046 *
2047 * @private
2048 * @param {Array} [array] The array to iterate over.
2049 * @param {Function} predicate The function invoked per iteration.
2050 * @returns {boolean} Returns `true` if all elements pass the predicate check,
2051 * else `false`.
2052 */
2053 function arrayEvery(array, predicate) {
2054 var index = -1,
2055 length = array == null ? 0 : array.length;
2056
2057 while (++index < length) {
2058 if (!predicate(array[index], index, array)) {
2059 return false;
2060 }
2061 }
2062 return true;
2063 }
2064
2065 /**
2066 * A specialized version of `_.filter` for arrays without support for
2067 * iteratee shorthands.
2068 *
2069 * @private
2070 * @param {Array} [array] The array to iterate over.
2071 * @param {Function} predicate The function invoked per iteration.
2072 * @returns {Array} Returns the new filtered array.
2073 */
2074 function arrayFilter(array, predicate) {
2075 var index = -1,
2076 length = array == null ? 0 : array.length,
2077 resIndex = 0,
2078 result = [];
2079
2080 while (++index < length) {
2081 var value = array[index];
2082 if (predicate(value, index, array)) {
2083 result[resIndex++] = value;
2084 }
2085 }
2086 return result;
2087 }
2088
2089 /**
2090 * A specialized version of `_.includes` for arrays without support for
2091 * specifying an index to search from.
2092 *
2093 * @private
2094 * @param {Array} [array] The array to inspect.
2095 * @param {*} target The value to search for.
2096 * @returns {boolean} Returns `true` if `target` is found, else `false`.
2097 */
2098 function arrayIncludes(array, value) {
2099 var length = array == null ? 0 : array.length;
2100 return !!length && baseIndexOf(array, value, 0) > -1;
2101 }
2102
2103 /**
2104 * This function is like `arrayIncludes` except that it accepts a comparator.
2105 *
2106 * @private
2107 * @param {Array} [array] The array to inspect.
2108 * @param {*} target The value to search for.
2109 * @param {Function} comparator The comparator invoked per element.
2110 * @returns {boolean} Returns `true` if `target` is found, else `false`.
2111 */
2112 function arrayIncludesWith(array, value, comparator) {
2113 var index = -1,
2114 length = array == null ? 0 : array.length;
2115
2116 while (++index < length) {
2117 if (comparator(value, array[index])) {
2118 return true;
2119 }
2120 }
2121 return false;
2122 }
2123
2124 /**
2125 * A specialized version of `_.map` for arrays without support for iteratee
2126 * shorthands.
2127 *
2128 * @private
2129 * @param {Array} [array] The array to iterate over.
2130 * @param {Function} iteratee The function invoked per iteration.
2131 * @returns {Array} Returns the new mapped array.
2132 */
2133 function arrayMap(array, iteratee) {
2134 var index = -1,
2135 length = array == null ? 0 : array.length,
2136 result = Array(length);
2137
2138 while (++index < length) {
2139 result[index] = iteratee(array[index], index, array);
2140 }
2141 return result;
2142 }
2143
2144 /**
2145 * Appends the elements of `values` to `array`.
2146 *
2147 * @private
2148 * @param {Array} array The array to modify.
2149 * @param {Array} values The values to append.
2150 * @returns {Array} Returns `array`.
2151 */
2152 function arrayPush(array, values) {
2153 var index = -1,
2154 length = values.length,
2155 offset = array.length;
2156
2157 while (++index < length) {
2158 array[offset + index] = values[index];
2159 }
2160 return array;
2161 }
2162
2163 /**
2164 * A specialized version of `_.reduce` for arrays without support for
2165 * iteratee shorthands.
2166 *
2167 * @private
2168 * @param {Array} [array] The array to iterate over.
2169 * @param {Function} iteratee The function invoked per iteration.
2170 * @param {*} [accumulator] The initial value.
2171 * @param {boolean} [initAccum] Specify using the first element of `array` as
2172 * the initial value.
2173 * @returns {*} Returns the accumulated value.
2174 */
2175 function arrayReduce(array, iteratee, accumulator, initAccum) {
2176 var index = -1,
2177 length = array == null ? 0 : array.length;
2178
2179 if (initAccum && length) {
2180 accumulator = array[++index];
2181 }
2182 while (++index < length) {
2183 accumulator = iteratee(accumulator, array[index], index, array);
2184 }
2185 return accumulator;
2186 }
2187
2188 /**
2189 * A specialized version of `_.reduceRight` for arrays without support for
2190 * iteratee shorthands.
2191 *
2192 * @private
2193 * @param {Array} [array] The array to iterate over.
2194 * @param {Function} iteratee The function invoked per iteration.
2195 * @param {*} [accumulator] The initial value.
2196 * @param {boolean} [initAccum] Specify using the last element of `array` as
2197 * the initial value.
2198 * @returns {*} Returns the accumulated value.
2199 */
2200 function arrayReduceRight(array, iteratee, accumulator, initAccum) {
2201 var length = array == null ? 0 : array.length;
2202 if (initAccum && length) {
2203 accumulator = array[--length];
2204 }
2205 while (length--) {
2206 accumulator = iteratee(accumulator, array[length], length, array);
2207 }
2208 return accumulator;
2209 }
2210
2211 /**
2212 * A specialized version of `_.some` for arrays without support for iteratee
2213 * shorthands.
2214 *
2215 * @private
2216 * @param {Array} [array] The array to iterate over.
2217 * @param {Function} predicate The function invoked per iteration.
2218 * @returns {boolean} Returns `true` if any element passes the predicate check,
2219 * else `false`.
2220 */
2221 function arraySome(array, predicate) {
2222 var index = -1,
2223 length = array == null ? 0 : array.length;
2224
2225 while (++index < length) {
2226 if (predicate(array[index], index, array)) {
2227 return true;
2228 }
2229 }
2230 return false;
2231 }
2232
2233 /**
2234 * Gets the size of an ASCII `string`.
2235 *
2236 * @private
2237 * @param {string} string The string inspect.
2238 * @returns {number} Returns the string size.
2239 */
2240 var asciiSize = baseProperty('length');
2241
2242 /**
2243 * Converts an ASCII `string` to an array.
2244 *
2245 * @private
2246 * @param {string} string The string to convert.
2247 * @returns {Array} Returns the converted array.
2248 */
2249 function asciiToArray(string) {
2250 return string.split('');
2251 }
2252
2253 /**
2254 * Splits an ASCII `string` into an array of its words.
2255 *
2256 * @private
2257 * @param {string} The string to inspect.
2258 * @returns {Array} Returns the words of `string`.
2259 */
2260 function asciiWords(string) {
2261 return string.match(reAsciiWord) || [];
2262 }
2263
2264 /**
2265 * The base implementation of methods like `_.findKey` and `_.findLastKey`,
2266 * without support for iteratee shorthands, which iterates over `collection`
2267 * using `eachFunc`.
2268 *
2269 * @private
2270 * @param {Array|Object} collection The collection to inspect.
2271 * @param {Function} predicate The function invoked per iteration.
2272 * @param {Function} eachFunc The function to iterate over `collection`.
2273 * @returns {*} Returns the found element or its key, else `undefined`.
2274 */
2275 function baseFindKey(collection, predicate, eachFunc) {
2276 var result;
2277 eachFunc(collection, function(value, key, collection) {
2278 if (predicate(value, key, collection)) {
2279 result = key;
2280 return false;
2281 }
2282 });
2283 return result;
2284 }
2285
2286 /**
2287 * The base implementation of `_.findIndex` and `_.findLastIndex` without
2288 * support for iteratee shorthands.
2289 *
2290 * @private
2291 * @param {Array} array The array to inspect.
2292 * @param {Function} predicate The function invoked per iteration.
2293 * @param {number} fromIndex The index to search from.
2294 * @param {boolean} [fromRight] Specify iterating from right to left.
2295 * @returns {number} Returns the index of the matched value, else `-1`.
2296 */
2297 function baseFindIndex(array, predicate, fromIndex, fromRight) {
2298 var length = array.length,
2299 index = fromIndex + (fromRight ? 1 : -1);
2300
2301 while ((fromRight ? index-- : ++index < length)) {
2302 if (predicate(array[index], index, array)) {
2303 return index;
2304 }
2305 }
2306 return -1;
2307 }
2308
2309 /**
2310 * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
2311 *
2312 * @private
2313 * @param {Array} array The array to inspect.
2314 * @param {*} value The value to search for.
2315 * @param {number} fromIndex The index to search from.
2316 * @returns {number} Returns the index of the matched value, else `-1`.
2317 */
2318 function baseIndexOf(array, value, fromIndex) {
2319 return value === value
2320 ? strictIndexOf(array, value, fromIndex)
2321 : baseFindIndex(array, baseIsNaN, fromIndex);
2322 }
2323
2324 /**
2325 * This function is like `baseIndexOf` except that it accepts a comparator.
2326 *
2327 * @private
2328 * @param {Array} array The array to inspect.
2329 * @param {*} value The value to search for.
2330 * @param {number} fromIndex The index to search from.
2331 * @param {Function} comparator The comparator invoked per element.
2332 * @returns {number} Returns the index of the matched value, else `-1`.
2333 */
2334 function baseIndexOfWith(array, value, fromIndex, comparator) {
2335 var index = fromIndex - 1,
2336 length = array.length;
2337
2338 while (++index < length) {
2339 if (comparator(array[index], value)) {
2340 return index;
2341 }
2342 }
2343 return -1;
2344 }
2345
2346 /**
2347 * The base implementation of `_.isNaN` without support for number objects.
2348 *
2349 * @private
2350 * @param {*} value The value to check.
2351 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
2352 */
2353 function baseIsNaN(value) {
2354 return value !== value;
2355 }
2356
2357 /**
2358 * The base implementation of `_.mean` and `_.meanBy` without support for
2359 * iteratee shorthands.
2360 *
2361 * @private
2362 * @param {Array} array The array to iterate over.
2363 * @param {Function} iteratee The function invoked per iteration.
2364 * @returns {number} Returns the mean.
2365 */
2366 function baseMean(array, iteratee) {
2367 var length = array == null ? 0 : array.length;
2368 return length ? (baseSum(array, iteratee) / length) : NAN;
2369 }
2370
2371 /**
2372 * The base implementation of `_.property` without support for deep paths.
2373 *
2374 * @private
2375 * @param {string} key The key of the property to get.
2376 * @returns {Function} Returns the new accessor function.
2377 */
2378 function baseProperty(key) {
2379 return function(object) {
2380 return object == null ? undefined : object[key];
2381 };
2382 }
2383
2384 /**
2385 * The base implementation of `_.propertyOf` without support for deep paths.
2386 *
2387 * @private
2388 * @param {Object} object The object to query.
2389 * @returns {Function} Returns the new accessor function.
2390 */
2391 function basePropertyOf(object) {
2392 return function(key) {
2393 return object == null ? undefined : object[key];
2394 };
2395 }
2396
2397 /**
2398 * The base implementation of `_.reduce` and `_.reduceRight`, without support
2399 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
2400 *
2401 * @private
2402 * @param {Array|Object} collection The collection to iterate over.
2403 * @param {Function} iteratee The function invoked per iteration.
2404 * @param {*} accumulator The initial value.
2405 * @param {boolean} initAccum Specify using the first or last element of
2406 * `collection` as the initial value.
2407 * @param {Function} eachFunc The function to iterate over `collection`.
2408 * @returns {*} Returns the accumulated value.
2409 */
2410 function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
2411 eachFunc(collection, function(value, index, collection) {
2412 accumulator = initAccum
2413 ? (initAccum = false, value)
2414 : iteratee(accumulator, value, index, collection);
2415 });
2416 return accumulator;
2417 }
2418
2419 /**
2420 * The base implementation of `_.sortBy` which uses `comparer` to define the
2421 * sort order of `array` and replaces criteria objects with their corresponding
2422 * values.
2423 *
2424 * @private
2425 * @param {Array} array The array to sort.
2426 * @param {Function} comparer The function to define sort order.
2427 * @returns {Array} Returns `array`.
2428 */
2429 function baseSortBy(array, comparer) {
2430 var length = array.length;
2431
2432 array.sort(comparer);
2433 while (length--) {
2434 array[length] = array[length].value;
2435 }
2436 return array;
2437 }
2438
2439 /**
2440 * The base implementation of `_.sum` and `_.sumBy` without support for
2441 * iteratee shorthands.
2442 *
2443 * @private
2444 * @param {Array} array The array to iterate over.
2445 * @param {Function} iteratee The function invoked per iteration.
2446 * @returns {number} Returns the sum.
2447 */
2448 function baseSum(array, iteratee) {
2449 var result,
2450 index = -1,
2451 length = array.length;
2452
2453 while (++index < length) {
2454 var current = iteratee(array[index]);
2455 if (current !== undefined) {
2456 result = result === undefined ? current : (result + current);
2457 }
2458 }
2459 return result;
2460 }
2461
2462 /**
2463 * The base implementation of `_.times` without support for iteratee shorthands
2464 * or max array length checks.
2465 *
2466 * @private
2467 * @param {number} n The number of times to invoke `iteratee`.
2468 * @param {Function} iteratee The function invoked per iteration.
2469 * @returns {Array} Returns the array of results.
2470 */
2471 function baseTimes(n, iteratee) {
2472 var index = -1,
2473 result = Array(n);
2474
2475 while (++index < n) {
2476 result[index] = iteratee(index);
2477 }
2478 return result;
2479 }
2480
2481 /**
2482 * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
2483 * of key-value pairs for `object` corresponding to the property names of `props`.
2484 *
2485 * @private
2486 * @param {Object} object The object to query.
2487 * @param {Array} props The property names to get values for.
2488 * @returns {Object} Returns the key-value pairs.
2489 */
2490 function baseToPairs(object, props) {
2491 return arrayMap(props, function(key) {
2492 return [key, object[key]];
2493 });
2494 }
2495
2496 /**
2497 * The base implementation of `_.unary` without support for storing metadata.
2498 *
2499 * @private
2500 * @param {Function} func The function to cap arguments for.
2501 * @returns {Function} Returns the new capped function.
2502 */
2503 function baseUnary(func) {
2504 return function(value) {
2505 return func(value);
2506 };
2507 }
2508
2509 /**
2510 * The base implementation of `_.values` and `_.valuesIn` which creates an
2511 * array of `object` property values corresponding to the property names
2512 * of `props`.
2513 *
2514 * @private
2515 * @param {Object} object The object to query.
2516 * @param {Array} props The property names to get values for.
2517 * @returns {Object} Returns the array of property values.
2518 */
2519 function baseValues(object, props) {
2520 return arrayMap(props, function(key) {
2521 return object[key];
2522 });
2523 }
2524
2525 /**
2526 * Checks if a `cache` value for `key` exists.
2527 *
2528 * @private
2529 * @param {Object} cache The cache to query.
2530 * @param {string} key The key of the entry to check.
2531 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
2532 */
2533 function cacheHas(cache, key) {
2534 return cache.has(key);
2535 }
2536
2537 /**
2538 * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
2539 * that is not found in the character symbols.
2540 *
2541 * @private
2542 * @param {Array} strSymbols The string symbols to inspect.
2543 * @param {Array} chrSymbols The character symbols to find.
2544 * @returns {number} Returns the index of the first unmatched string symbol.
2545 */
2546 function charsStartIndex(strSymbols, chrSymbols) {
2547 var index = -1,
2548 length = strSymbols.length;
2549
2550 while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
2551 return index;
2552 }
2553
2554 /**
2555 * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
2556 * that is not found in the character symbols.
2557 *
2558 * @private
2559 * @param {Array} strSymbols The string symbols to inspect.
2560 * @param {Array} chrSymbols The character symbols to find.
2561 * @returns {number} Returns the index of the last unmatched string symbol.
2562 */
2563 function charsEndIndex(strSymbols, chrSymbols) {
2564 var index = strSymbols.length;
2565
2566 while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
2567 return index;
2568 }
2569
2570 /**
2571 * Gets the number of `placeholder` occurrences in `array`.
2572 *
2573 * @private
2574 * @param {Array} array The array to inspect.
2575 * @param {*} placeholder The placeholder to search for.
2576 * @returns {number} Returns the placeholder count.
2577 */
2578 function countHolders(array, placeholder) {
2579 var length = array.length,
2580 result = 0;
2581
2582 while (length--) {
2583 if (array[length] === placeholder) {
2584 ++result;
2585 }
2586 }
2587 return result;
2588 }
2589
2590 /**
2591 * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
2592 * letters to basic Latin letters.
2593 *
2594 * @private
2595 * @param {string} letter The matched letter to deburr.
2596 * @returns {string} Returns the deburred letter.
2597 */
2598 var deburrLetter = basePropertyOf(deburredLetters);
2599
2600 /**
2601 * Used by `_.escape` to convert characters to HTML entities.
2602 *
2603 * @private
2604 * @param {string} chr The matched character to escape.
2605 * @returns {string} Returns the escaped character.
2606 */
2607 var escapeHtmlChar = basePropertyOf(htmlEscapes);
2608
2609 /**
2610 * Used by `_.template` to escape characters for inclusion in compiled string literals.
2611 *
2612 * @private
2613 * @param {string} chr The matched character to escape.
2614 * @returns {string} Returns the escaped character.
2615 */
2616 function escapeStringChar(chr) {
2617 return '\\' + stringEscapes[chr];
2618 }
2619
2620 /**
2621 * Gets the value at `key` of `object`.
2622 *
2623 * @private
2624 * @param {Object} [object] The object to query.
2625 * @param {string} key The key of the property to get.
2626 * @returns {*} Returns the property value.
2627 */
2628 function getValue(object, key) {
2629 return object == null ? undefined : object[key];
2630 }
2631
2632 /**
2633 * Checks if `string` contains Unicode symbols.
2634 *
2635 * @private
2636 * @param {string} string The string to inspect.
2637 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
2638 */
2639 function hasUnicode(string) {
2640 return reHasUnicode.test(string);
2641 }
2642
2643 /**
2644 * Checks if `string` contains a word composed of Unicode symbols.
2645 *
2646 * @private
2647 * @param {string} string The string to inspect.
2648 * @returns {boolean} Returns `true` if a word is found, else `false`.
2649 */
2650 function hasUnicodeWord(string) {
2651 return reHasUnicodeWord.test(string);
2652 }
2653
2654 /**
2655 * Converts `iterator` to an array.
2656 *
2657 * @private
2658 * @param {Object} iterator The iterator to convert.
2659 * @returns {Array} Returns the converted array.
2660 */
2661 function iteratorToArray(iterator) {
2662 var data,
2663 result = [];
2664
2665 while (!(data = iterator.next()).done) {
2666 result.push(data.value);
2667 }
2668 return result;
2669 }
2670
2671 /**
2672 * Converts `map` to its key-value pairs.
2673 *
2674 * @private
2675 * @param {Object} map The map to convert.
2676 * @returns {Array} Returns the key-value pairs.
2677 */
2678 function mapToArray(map) {
2679 var index = -1,
2680 result = Array(map.size);
2681
2682 map.forEach(function(value, key) {
2683 result[++index] = [key, value];
2684 });
2685 return result;
2686 }
2687
2688 /**
2689 * Creates a unary function that invokes `func` with its argument transformed.
2690 *
2691 * @private
2692 * @param {Function} func The function to wrap.
2693 * @param {Function} transform The argument transform.
2694 * @returns {Function} Returns the new function.
2695 */
2696 function overArg(func, transform) {
2697 return function(arg) {
2698 return func(transform(arg));
2699 };
2700 }
2701
2702 /**
2703 * Replaces all `placeholder` elements in `array` with an internal placeholder
2704 * and returns an array of their indexes.
2705 *
2706 * @private
2707 * @param {Array} array The array to modify.
2708 * @param {*} placeholder The placeholder to replace.
2709 * @returns {Array} Returns the new array of placeholder indexes.
2710 */
2711 function replaceHolders(array, placeholder) {
2712 var index = -1,
2713 length = array.length,
2714 resIndex = 0,
2715 result = [];
2716
2717 while (++index < length) {
2718 var value = array[index];
2719 if (value === placeholder || value === PLACEHOLDER) {
2720 array[index] = PLACEHOLDER;
2721 result[resIndex++] = index;
2722 }
2723 }
2724 return result;
2725 }
2726
2727 /**
2728 * Gets the value at `key`, unless `key` is "__proto__".
2729 *
2730 * @private
2731 * @param {Object} object The object to query.
2732 * @param {string} key The key of the property to get.
2733 * @returns {*} Returns the property value.
2734 */
2735 function safeGet(object, key) {
2736 return key == '__proto__'
2737 ? undefined
2738 : object[key];
2739 }
2740
2741 /**
2742 * Converts `set` to an array of its values.
2743 *
2744 * @private
2745 * @param {Object} set The set to convert.
2746 * @returns {Array} Returns the values.
2747 */
2748 function setToArray(set) {
2749 var index = -1,
2750 result = Array(set.size);
2751
2752 set.forEach(function(value) {
2753 result[++index] = value;
2754 });
2755 return result;
2756 }
2757
2758 /**
2759 * Converts `set` to its value-value pairs.
2760 *
2761 * @private
2762 * @param {Object} set The set to convert.
2763 * @returns {Array} Returns the value-value pairs.
2764 */
2765 function setToPairs(set) {
2766 var index = -1,
2767 result = Array(set.size);
2768
2769 set.forEach(function(value) {
2770 result[++index] = [value, value];
2771 });
2772 return result;
2773 }
2774
2775 /**
2776 * A specialized version of `_.indexOf` which performs strict equality
2777 * comparisons of values, i.e. `===`.
2778 *
2779 * @private
2780 * @param {Array} array The array to inspect.
2781 * @param {*} value The value to search for.
2782 * @param {number} fromIndex The index to search from.
2783 * @returns {number} Returns the index of the matched value, else `-1`.
2784 */
2785 function strictIndexOf(array, value, fromIndex) {
2786 var index = fromIndex - 1,
2787 length = array.length;
2788
2789 while (++index < length) {
2790 if (array[index] === value) {
2791 return index;
2792 }
2793 }
2794 return -1;
2795 }
2796
2797 /**
2798 * A specialized version of `_.lastIndexOf` which performs strict equality
2799 * comparisons of values, i.e. `===`.
2800 *
2801 * @private
2802 * @param {Array} array The array to inspect.
2803 * @param {*} value The value to search for.
2804 * @param {number} fromIndex The index to search from.
2805 * @returns {number} Returns the index of the matched value, else `-1`.
2806 */
2807 function strictLastIndexOf(array, value, fromIndex) {
2808 var index = fromIndex + 1;
2809 while (index--) {
2810 if (array[index] === value) {
2811 return index;
2812 }
2813 }
2814 return index;
2815 }
2816
2817 /**
2818 * Gets the number of symbols in `string`.
2819 *
2820 * @private
2821 * @param {string} string The string to inspect.
2822 * @returns {number} Returns the string size.
2823 */
2824 function stringSize(string) {
2825 return hasUnicode(string)
2826 ? unicodeSize(string)
2827 : asciiSize(string);
2828 }
2829
2830 /**
2831 * Converts `string` to an array.
2832 *
2833 * @private
2834 * @param {string} string The string to convert.
2835 * @returns {Array} Returns the converted array.
2836 */
2837 function stringToArray(string) {
2838 return hasUnicode(string)
2839 ? unicodeToArray(string)
2840 : asciiToArray(string);
2841 }
2842
2843 /**
2844 * Used by `_.unescape` to convert HTML entities to characters.
2845 *
2846 * @private
2847 * @param {string} chr The matched character to unescape.
2848 * @returns {string} Returns the unescaped character.
2849 */
2850 var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
2851
2852 /**
2853 * Gets the size of a Unicode `string`.
2854 *
2855 * @private
2856 * @param {string} string The string inspect.
2857 * @returns {number} Returns the string size.
2858 */
2859 function unicodeSize(string) {
2860 var result = reUnicode.lastIndex = 0;
2861 while (reUnicode.test(string)) {
2862 ++result;
2863 }
2864 return result;
2865 }
2866
2867 /**
2868 * Converts a Unicode `string` to an array.
2869 *
2870 * @private
2871 * @param {string} string The string to convert.
2872 * @returns {Array} Returns the converted array.
2873 */
2874 function unicodeToArray(string) {
2875 return string.match(reUnicode) || [];
2876 }
2877
2878 /**
2879 * Splits a Unicode `string` into an array of its words.
2880 *
2881 * @private
2882 * @param {string} The string to inspect.
2883 * @returns {Array} Returns the words of `string`.
2884 */
2885 function unicodeWords(string) {
2886 return string.match(reUnicodeWord) || [];
2887 }
2888
2889 /*--------------------------------------------------------------------------*/
2890
2891 /**
2892 * Create a new pristine `lodash` function using the `context` object.
2893 *
2894 * @static
2895 * @memberOf _
2896 * @since 1.1.0
2897 * @category Util
2898 * @param {Object} [context=root] The context object.
2899 * @returns {Function} Returns a new `lodash` function.
2900 * @example
2901 *
2902 * _.mixin({ 'foo': _.constant('foo') });
2903 *
2904 * var lodash = _.runInContext();
2905 * lodash.mixin({ 'bar': lodash.constant('bar') });
2906 *
2907 * _.isFunction(_.foo);
2908 * // => true
2909 * _.isFunction(_.bar);
2910 * // => false
2911 *
2912 * lodash.isFunction(lodash.foo);
2913 * // => false
2914 * lodash.isFunction(lodash.bar);
2915 * // => true
2916 *
2917 * // Create a suped-up `defer` in Node.js.
2918 * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
2919 */
2920 var runInContext = (function runInContext(context) {
2921 context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
2922
2923 /** Built-in constructor references. */
2924 var Array = context.Array,
2925 Date = context.Date,
2926 Error = context.Error,
2927 Function = context.Function,
2928 Math = context.Math,
2929 Object = context.Object,
2930 RegExp = context.RegExp,
2931 String = context.String,
2932 TypeError = context.TypeError;
2933
2934 /** Used for built-in method references. */
2935 var arrayProto = Array.prototype,
2936 funcProto = Function.prototype,
2937 objectProto = Object.prototype;
2938
2939 /** Used to detect overreaching core-js shims. */
2940 var coreJsData = context['__core-js_shared__'];
2941
2942 /** Used to resolve the decompiled source of functions. */
2943 var funcToString = funcProto.toString;
2944
2945 /** Used to check objects for own properties. */
2946 var hasOwnProperty = objectProto.hasOwnProperty;
2947
2948 /** Used to generate unique IDs. */
2949 var idCounter = 0;
2950
2951 /** Used to detect methods masquerading as native. */
2952 var maskSrcKey = (function() {
2953 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
2954 return uid ? ('Symbol(src)_1.' + uid) : '';
2955 }());
2956
2957 /**
2958 * Used to resolve the
2959 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
2960 * of values.
2961 */
2962 var nativeObjectToString = objectProto.toString;
2963
2964 /** Used to infer the `Object` constructor. */
2965 var objectCtorString = funcToString.call(Object);
2966
2967 /** Used to restore the original `_` reference in `_.noConflict`. */
2968 var oldDash = root._;
2969
2970 /** Used to detect if a method is native. */
2971 var reIsNative = RegExp('^' +
2972 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
2973 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2974 );
2975
2976 /** Built-in value references. */
2977 var Buffer = moduleExports ? context.Buffer : undefined,
2978 Symbol = context.Symbol,
2979 Uint8Array = context.Uint8Array,
2980 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
2981 getPrototype = overArg(Object.getPrototypeOf, Object),
2982 objectCreate = Object.create,
2983 propertyIsEnumerable = objectProto.propertyIsEnumerable,
2984 splice = arrayProto.splice,
2985 spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
2986 symIterator = Symbol ? Symbol.iterator : undefined,
2987 symToStringTag = Symbol ? Symbol.toStringTag : undefined;
2988
2989 var defineProperty = (function() {
2990 try {
2991 var func = getNative(Object, 'defineProperty');
2992 func({}, '', {});
2993 return func;
2994 } catch (e) {}
2995 }());
2996
2997 /** Mocked built-ins. */
2998 var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
2999 ctxNow = Date && Date.now !== root.Date.now && Date.now,
3000 ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
3001
3002 /* Built-in method references for those with the same name as other `lodash` methods. */
3003 var nativeCeil = Math.ceil,
3004 nativeFloor = Math.floor,
3005 nativeGetSymbols = Object.getOwnPropertySymbols,
3006 nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
3007 nativeIsFinite = context.isFinite,
3008 nativeJoin = arrayProto.join,
3009 nativeKeys = overArg(Object.keys, Object),
3010 nativeMax = Math.max,
3011 nativeMin = Math.min,
3012 nativeNow = Date.now,
3013 nativeParseInt = context.parseInt,
3014 nativeRandom = Math.random,
3015 nativeReverse = arrayProto.reverse;
3016
3017 /* Built-in method references that are verified to be native. */
3018 var DataView = getNative(context, 'DataView'),
3019 Map = getNative(context, 'Map'),
3020 Promise = getNative(context, 'Promise'),
3021 Set = getNative(context, 'Set'),
3022 WeakMap = getNative(context, 'WeakMap'),
3023 nativeCreate = getNative(Object, 'create');
3024
3025 /** Used to store function metadata. */
3026 var metaMap = WeakMap && new WeakMap;
3027
3028 /** Used to lookup unminified function names. */
3029 var realNames = {};
3030
3031 /** Used to detect maps, sets, and weakmaps. */
3032 var dataViewCtorString = toSource(DataView),
3033 mapCtorString = toSource(Map),
3034 promiseCtorString = toSource(Promise),
3035 setCtorString = toSource(Set),
3036 weakMapCtorString = toSource(WeakMap);
3037
3038 /** Used to convert symbols to primitives and strings. */
3039 var symbolProto = Symbol ? Symbol.prototype : undefined,
3040 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
3041 symbolToString = symbolProto ? symbolProto.toString : undefined;
3042
3043 /*------------------------------------------------------------------------*/
3044
3045 /**
3046 * Creates a `lodash` object which wraps `value` to enable implicit method
3047 * chain sequences. Methods that operate on and return arrays, collections,
3048 * and functions can be chained together. Methods that retrieve a single value
3049 * or may return a primitive value will automatically end the chain sequence
3050 * and return the unwrapped value. Otherwise, the value must be unwrapped
3051 * with `_#value`.
3052 *
3053 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
3054 * enabled using `_.chain`.
3055 *
3056 * The execution of chained methods is lazy, that is, it's deferred until
3057 * `_#value` is implicitly or explicitly called.
3058 *
3059 * Lazy evaluation allows several methods to support shortcut fusion.
3060 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
3061 * the creation of intermediate arrays and can greatly reduce the number of
3062 * iteratee executions. Sections of a chain sequence qualify for shortcut
3063 * fusion if the section is applied to an array and iteratees accept only
3064 * one argument. The heuristic for whether a section qualifies for shortcut
3065 * fusion is subject to change.
3066 *
3067 * Chaining is supported in custom builds as long as the `_#value` method is
3068 * directly or indirectly included in the build.
3069 *
3070 * In addition to lodash methods, wrappers have `Array` and `String` methods.
3071 *
3072 * The wrapper `Array` methods are:
3073 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
3074 *
3075 * The wrapper `String` methods are:
3076 * `replace` and `split`
3077 *
3078 * The wrapper methods that support shortcut fusion are:
3079 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
3080 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
3081 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
3082 *
3083 * The chainable wrapper methods are:
3084 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
3085 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
3086 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
3087 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
3088 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
3089 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
3090 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
3091 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
3092 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
3093 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
3094 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
3095 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
3096 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
3097 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
3098 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
3099 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
3100 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
3101 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
3102 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
3103 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
3104 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
3105 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
3106 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
3107 * `zipObject`, `zipObjectDeep`, and `zipWith`
3108 *
3109 * The wrapper methods that are **not** chainable by default are:
3110 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
3111 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
3112 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
3113 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
3114 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
3115 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
3116 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
3117 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
3118 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
3119 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
3120 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
3121 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
3122 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
3123 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
3124 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
3125 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
3126 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
3127 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
3128 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
3129 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
3130 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
3131 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
3132 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
3133 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
3134 * `upperFirst`, `value`, and `words`
3135 *
3136 * @name _
3137 * @constructor
3138 * @category Seq
3139 * @param {*} value The value to wrap in a `lodash` instance.
3140 * @returns {Object} Returns the new `lodash` wrapper instance.
3141 * @example
3142 *
3143 * function square(n) {
3144 * return n * n;
3145 * }
3146 *
3147 * var wrapped = _([1, 2, 3]);
3148 *
3149 * // Returns an unwrapped value.
3150 * wrapped.reduce(_.add);
3151 * // => 6
3152 *
3153 * // Returns a wrapped value.
3154 * var squares = wrapped.map(square);
3155 *
3156 * _.isArray(squares);
3157 * // => false
3158 *
3159 * _.isArray(squares.value());
3160 * // => true
3161 */
3162 function lodash(value) {
3163 if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
3164 if (value instanceof LodashWrapper) {
3165 return value;
3166 }
3167 if (hasOwnProperty.call(value, '__wrapped__')) {
3168 return wrapperClone(value);
3169 }
3170 }
3171 return new LodashWrapper(value);
3172 }
3173
3174 /**
3175 * The base implementation of `_.create` without support for assigning
3176 * properties to the created object.
3177 *
3178 * @private
3179 * @param {Object} proto The object to inherit from.
3180 * @returns {Object} Returns the new object.
3181 */
3182 var baseCreate = (function() {
3183 function object() {}
3184 return function(proto) {
3185 if (!isObject(proto)) {
3186 return {};
3187 }
3188 if (objectCreate) {
3189 return objectCreate(proto);
3190 }
3191 object.prototype = proto;
3192 var result = new object;
3193 object.prototype = undefined;
3194 return result;
3195 };
3196 }());
3197
3198 /**
3199 * The function whose prototype chain sequence wrappers inherit from.
3200 *
3201 * @private
3202 */
3203 function baseLodash() {
3204 // No operation performed.
3205 }
3206
3207 /**
3208 * The base constructor for creating `lodash` wrapper objects.
3209 *
3210 * @private
3211 * @param {*} value The value to wrap.
3212 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3213 */
3214 function LodashWrapper(value, chainAll) {
3215 this.__wrapped__ = value;
3216 this.__actions__ = [];
3217 this.__chain__ = !!chainAll;
3218 this.__index__ = 0;
3219 this.__values__ = undefined;
3220 }
3221
3222 /**
3223 * By default, the template delimiters used by lodash are like those in
3224 * embedded Ruby (ERB) as well as ES2015 template strings. Change the
3225 * following template settings to use alternative delimiters.
3226 *
3227 * @static
3228 * @memberOf _
3229 * @type {Object}
3230 */
3231 lodash.templateSettings = {
3232
3233 /**
3234 * Used to detect `data` property values to be HTML-escaped.
3235 *
3236 * @memberOf _.templateSettings
3237 * @type {RegExp}
3238 */
3239 'escape': reEscape,
3240
3241 /**
3242 * Used to detect code to be evaluated.
3243 *
3244 * @memberOf _.templateSettings
3245 * @type {RegExp}
3246 */
3247 'evaluate': reEvaluate,
3248
3249 /**
3250 * Used to detect `data` property values to inject.
3251 *
3252 * @memberOf _.templateSettings
3253 * @type {RegExp}
3254 */
3255 'interpolate': reInterpolate,
3256
3257 /**
3258 * Used to reference the data object in the template text.
3259 *
3260 * @memberOf _.templateSettings
3261 * @type {string}
3262 */
3263 'variable': '',
3264
3265 /**
3266 * Used to import variables into the compiled template.
3267 *
3268 * @memberOf _.templateSettings
3269 * @type {Object}
3270 */
3271 'imports': {
3272
3273 /**
3274 * A reference to the `lodash` function.
3275 *
3276 * @memberOf _.templateSettings.imports
3277 * @type {Function}
3278 */
3279 '_': lodash
3280 }
3281 };
3282
3283 // Ensure wrappers are instances of `baseLodash`.
3284 lodash.prototype = baseLodash.prototype;
3285 lodash.prototype.constructor = lodash;
3286
3287 LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3288 LodashWrapper.prototype.constructor = LodashWrapper;
3289
3290 /*------------------------------------------------------------------------*/
3291
3292 /**
3293 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3294 *
3295 * @private
3296 * @constructor
3297 * @param {*} value The value to wrap.
3298 */
3299 function LazyWrapper(value) {
3300 this.__wrapped__ = value;
3301 this.__actions__ = [];
3302 this.__dir__ = 1;
3303 this.__filtered__ = false;
3304 this.__iteratees__ = [];
3305 this.__takeCount__ = MAX_ARRAY_LENGTH;
3306 this.__views__ = [];
3307 }
3308
3309 /**
3310 * Creates a clone of the lazy wrapper object.
3311 *
3312 * @private
3313 * @name clone
3314 * @memberOf LazyWrapper
3315 * @returns {Object} Returns the cloned `LazyWrapper` object.
3316 */
3317 function lazyClone() {
3318 var result = new LazyWrapper(this.__wrapped__);
3319 result.__actions__ = copyArray(this.__actions__);
3320 result.__dir__ = this.__dir__;
3321 result.__filtered__ = this.__filtered__;
3322 result.__iteratees__ = copyArray(this.__iteratees__);
3323 result.__takeCount__ = this.__takeCount__;
3324 result.__views__ = copyArray(this.__views__);
3325 return result;
3326 }
3327
3328 /**
3329 * Reverses the direction of lazy iteration.
3330 *
3331 * @private
3332 * @name reverse
3333 * @memberOf LazyWrapper
3334 * @returns {Object} Returns the new reversed `LazyWrapper` object.
3335 */
3336 function lazyReverse() {
3337 if (this.__filtered__) {
3338 var result = new LazyWrapper(this);
3339 result.__dir__ = -1;
3340 result.__filtered__ = true;
3341 } else {
3342 result = this.clone();
3343 result.__dir__ *= -1;
3344 }
3345 return result;
3346 }
3347
3348 /**
3349 * Extracts the unwrapped value from its lazy wrapper.
3350 *
3351 * @private
3352 * @name value
3353 * @memberOf LazyWrapper
3354 * @returns {*} Returns the unwrapped value.
3355 */
3356 function lazyValue() {
3357 var array = this.__wrapped__.value(),
3358 dir = this.__dir__,
3359 isArr = isArray(array),
3360 isRight = dir < 0,
3361 arrLength = isArr ? array.length : 0,
3362 view = getView(0, arrLength, this.__views__),
3363 start = view.start,
3364 end = view.end,
3365 length = end - start,
3366 index = isRight ? end : (start - 1),
3367 iteratees = this.__iteratees__,
3368 iterLength = iteratees.length,
3369 resIndex = 0,
3370 takeCount = nativeMin(length, this.__takeCount__);
3371
3372 if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
3373 return baseWrapperValue(array, this.__actions__);
3374 }
3375 var result = [];
3376
3377 outer:
3378 while (length-- && resIndex < takeCount) {
3379 index += dir;
3380
3381 var iterIndex = -1,
3382 value = array[index];
3383
3384 while (++iterIndex < iterLength) {
3385 var data = iteratees[iterIndex],
3386 iteratee = data.iteratee,
3387 type = data.type,
3388 computed = iteratee(value);
3389
3390 if (type == LAZY_MAP_FLAG) {
3391 value = computed;
3392 } else if (!computed) {
3393 if (type == LAZY_FILTER_FLAG) {
3394 continue outer;
3395 } else {
3396 break outer;
3397 }
3398 }
3399 }
3400 result[resIndex++] = value;
3401 }
3402 return result;
3403 }
3404
3405 // Ensure `LazyWrapper` is an instance of `baseLodash`.
3406 LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3407 LazyWrapper.prototype.constructor = LazyWrapper;
3408
3409 /*------------------------------------------------------------------------*/
3410
3411 /**
3412 * Creates a hash object.
3413 *
3414 * @private
3415 * @constructor
3416 * @param {Array} [entries] The key-value pairs to cache.
3417 */
3418 function Hash(entries) {
3419 var index = -1,
3420 length = entries == null ? 0 : entries.length;
3421
3422 this.clear();
3423 while (++index < length) {
3424 var entry = entries[index];
3425 this.set(entry[0], entry[1]);
3426 }
3427 }
3428
3429 /**
3430 * Removes all key-value entries from the hash.
3431 *
3432 * @private
3433 * @name clear
3434 * @memberOf Hash
3435 */
3436 function hashClear() {
3437 this.__data__ = nativeCreate ? nativeCreate(null) : {};
3438 this.size = 0;
3439 }
3440
3441 /**
3442 * Removes `key` and its value from the hash.
3443 *
3444 * @private
3445 * @name delete
3446 * @memberOf Hash
3447 * @param {Object} hash The hash to modify.
3448 * @param {string} key The key of the value to remove.
3449 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
3450 */
3451 function hashDelete(key) {
3452 var result = this.has(key) && delete this.__data__[key];
3453 this.size -= result ? 1 : 0;
3454 return result;
3455 }
3456
3457 /**
3458 * Gets the hash value for `key`.
3459 *
3460 * @private
3461 * @name get
3462 * @memberOf Hash
3463 * @param {string} key The key of the value to get.
3464 * @returns {*} Returns the entry value.
3465 */
3466 function hashGet(key) {
3467 var data = this.__data__;
3468 if (nativeCreate) {
3469 var result = data[key];
3470 return result === HASH_UNDEFINED ? undefined : result;
3471 }
3472 return hasOwnProperty.call(data, key) ? data[key] : undefined;
3473 }
3474
3475 /**
3476 * Checks if a hash value for `key` exists.
3477 *
3478 * @private
3479 * @name has
3480 * @memberOf Hash
3481 * @param {string} key The key of the entry to check.
3482 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
3483 */
3484 function hashHas(key) {
3485 var data = this.__data__;
3486 return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
3487 }
3488
3489 /**
3490 * Sets the hash `key` to `value`.
3491 *
3492 * @private
3493 * @name set
3494 * @memberOf Hash
3495 * @param {string} key The key of the value to set.
3496 * @param {*} value The value to set.
3497 * @returns {Object} Returns the hash instance.
3498 */
3499 function hashSet(key, value) {
3500 var data = this.__data__;
3501 this.size += this.has(key) ? 0 : 1;
3502 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
3503 return this;
3504 }
3505
3506 // Add methods to `Hash`.
3507 Hash.prototype.clear = hashClear;
3508 Hash.prototype['delete'] = hashDelete;
3509 Hash.prototype.get = hashGet;
3510 Hash.prototype.has = hashHas;
3511 Hash.prototype.set = hashSet;
3512
3513 /*------------------------------------------------------------------------*/
3514
3515 /**
3516 * Creates an list cache object.
3517 *
3518 * @private
3519 * @constructor
3520 * @param {Array} [entries] The key-value pairs to cache.
3521 */
3522 function ListCache(entries) {
3523 var index = -1,
3524 length = entries == null ? 0 : entries.length;
3525
3526 this.clear();
3527 while (++index < length) {
3528 var entry = entries[index];
3529 this.set(entry[0], entry[1]);
3530 }
3531 }
3532
3533 /**
3534 * Removes all key-value entries from the list cache.
3535 *
3536 * @private
3537 * @name clear
3538 * @memberOf ListCache
3539 */
3540 function listCacheClear() {
3541 this.__data__ = [];
3542 this.size = 0;
3543 }
3544
3545 /**
3546 * Removes `key` and its value from the list cache.
3547 *
3548 * @private
3549 * @name delete
3550 * @memberOf ListCache
3551 * @param {string} key The key of the value to remove.
3552 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
3553 */
3554 function listCacheDelete(key) {
3555 var data = this.__data__,
3556 index = assocIndexOf(data, key);
3557
3558 if (index < 0) {
3559 return false;
3560 }
3561 var lastIndex = data.length - 1;
3562 if (index == lastIndex) {
3563 data.pop();
3564 } else {
3565 splice.call(data, index, 1);
3566 }
3567 --this.size;
3568 return true;
3569 }
3570
3571 /**
3572 * Gets the list cache value for `key`.
3573 *
3574 * @private
3575 * @name get
3576 * @memberOf ListCache
3577 * @param {string} key The key of the value to get.
3578 * @returns {*} Returns the entry value.
3579 */
3580 function listCacheGet(key) {
3581 var data = this.__data__,
3582 index = assocIndexOf(data, key);
3583
3584 return index < 0 ? undefined : data[index][1];
3585 }
3586
3587 /**
3588 * Checks if a list cache value for `key` exists.
3589 *
3590 * @private
3591 * @name has
3592 * @memberOf ListCache
3593 * @param {string} key The key of the entry to check.
3594 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
3595 */
3596 function listCacheHas(key) {
3597 return assocIndexOf(this.__data__, key) > -1;
3598 }
3599
3600 /**
3601 * Sets the list cache `key` to `value`.
3602 *
3603 * @private
3604 * @name set
3605 * @memberOf ListCache
3606 * @param {string} key The key of the value to set.
3607 * @param {*} value The value to set.
3608 * @returns {Object} Returns the list cache instance.
3609 */
3610 function listCacheSet(key, value) {
3611 var data = this.__data__,
3612 index = assocIndexOf(data, key);
3613
3614 if (index < 0) {
3615 ++this.size;
3616 data.push([key, value]);
3617 } else {
3618 data[index][1] = value;
3619 }
3620 return this;
3621 }
3622
3623 // Add methods to `ListCache`.
3624 ListCache.prototype.clear = listCacheClear;
3625 ListCache.prototype['delete'] = listCacheDelete;
3626 ListCache.prototype.get = listCacheGet;
3627 ListCache.prototype.has = listCacheHas;
3628 ListCache.prototype.set = listCacheSet;
3629
3630 /*------------------------------------------------------------------------*/
3631
3632 /**
3633 * Creates a map cache object to store key-value pairs.
3634 *
3635 * @private
3636 * @constructor
3637 * @param {Array} [entries] The key-value pairs to cache.
3638 */
3639 function MapCache(entries) {
3640 var index = -1,
3641 length = entries == null ? 0 : entries.length;
3642
3643 this.clear();
3644 while (++index < length) {
3645 var entry = entries[index];
3646 this.set(entry[0], entry[1]);
3647 }
3648 }
3649
3650 /**
3651 * Removes all key-value entries from the map.
3652 *
3653 * @private
3654 * @name clear
3655 * @memberOf MapCache
3656 */
3657 function mapCacheClear() {
3658 this.size = 0;
3659 this.__data__ = {
3660 'hash': new Hash,
3661 'map': new (Map || ListCache),
3662 'string': new Hash
3663 };
3664 }
3665
3666 /**
3667 * Removes `key` and its value from the map.
3668 *
3669 * @private
3670 * @name delete
3671 * @memberOf MapCache
3672 * @param {string} key The key of the value to remove.
3673 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
3674 */
3675 function mapCacheDelete(key) {
3676 var result = getMapData(this, key)['delete'](key);
3677 this.size -= result ? 1 : 0;
3678 return result;
3679 }
3680
3681 /**
3682 * Gets the map value for `key`.
3683 *
3684 * @private
3685 * @name get
3686 * @memberOf MapCache
3687 * @param {string} key The key of the value to get.
3688 * @returns {*} Returns the entry value.
3689 */
3690 function mapCacheGet(key) {
3691 return getMapData(this, key).get(key);
3692 }
3693
3694 /**
3695 * Checks if a map value for `key` exists.
3696 *
3697 * @private
3698 * @name has
3699 * @memberOf MapCache
3700 * @param {string} key The key of the entry to check.
3701 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
3702 */
3703 function mapCacheHas(key) {
3704 return getMapData(this, key).has(key);
3705 }
3706
3707 /**
3708 * Sets the map `key` to `value`.
3709 *
3710 * @private
3711 * @name set
3712 * @memberOf MapCache
3713 * @param {string} key The key of the value to set.
3714 * @param {*} value The value to set.
3715 * @returns {Object} Returns the map cache instance.
3716 */
3717 function mapCacheSet(key, value) {
3718 var data = getMapData(this, key),
3719 size = data.size;
3720
3721 data.set(key, value);
3722 this.size += data.size == size ? 0 : 1;
3723 return this;
3724 }
3725
3726 // Add methods to `MapCache`.
3727 MapCache.prototype.clear = mapCacheClear;
3728 MapCache.prototype['delete'] = mapCacheDelete;
3729 MapCache.prototype.get = mapCacheGet;
3730 MapCache.prototype.has = mapCacheHas;
3731 MapCache.prototype.set = mapCacheSet;
3732
3733 /*------------------------------------------------------------------------*/
3734
3735 /**
3736 *
3737 * Creates an array cache object to store unique values.
3738 *
3739 * @private
3740 * @constructor
3741 * @param {Array} [values] The values to cache.
3742 */
3743 function SetCache(values) {
3744 var index = -1,
3745 length = values == null ? 0 : values.length;
3746
3747 this.__data__ = new MapCache;
3748 while (++index < length) {
3749 this.add(values[index]);
3750 }
3751 }
3752
3753 /**
3754 * Adds `value` to the array cache.
3755 *
3756 * @private
3757 * @name add
3758 * @memberOf SetCache
3759 * @alias push
3760 * @param {*} value The value to cache.
3761 * @returns {Object} Returns the cache instance.
3762 */
3763 function setCacheAdd(value) {
3764 this.__data__.set(value, HASH_UNDEFINED);
3765 return this;
3766 }
3767
3768 /**
3769 * Checks if `value` is in the array cache.
3770 *
3771 * @private
3772 * @name has
3773 * @memberOf SetCache
3774 * @param {*} value The value to search for.
3775 * @returns {number} Returns `true` if `value` is found, else `false`.
3776 */
3777 function setCacheHas(value) {
3778 return this.__data__.has(value);
3779 }
3780
3781 // Add methods to `SetCache`.
3782 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
3783 SetCache.prototype.has = setCacheHas;
3784
3785 /*------------------------------------------------------------------------*/
3786
3787 /**
3788 * Creates a stack cache object to store key-value pairs.
3789 *
3790 * @private
3791 * @constructor
3792 * @param {Array} [entries] The key-value pairs to cache.
3793 */
3794 function Stack(entries) {
3795 var data = this.__data__ = new ListCache(entries);
3796 this.size = data.size;
3797 }
3798
3799 /**
3800 * Removes all key-value entries from the stack.
3801 *
3802 * @private
3803 * @name clear
3804 * @memberOf Stack
3805 */
3806 function stackClear() {
3807 this.__data__ = new ListCache;
3808 this.size = 0;
3809 }
3810
3811 /**
3812 * Removes `key` and its value from the stack.
3813 *
3814 * @private
3815 * @name delete
3816 * @memberOf Stack
3817 * @param {string} key The key of the value to remove.
3818 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
3819 */
3820 function stackDelete(key) {
3821 var data = this.__data__,
3822 result = data['delete'](key);
3823
3824 this.size = data.size;
3825 return result;
3826 }
3827
3828 /**
3829 * Gets the stack value for `key`.
3830 *
3831 * @private
3832 * @name get
3833 * @memberOf Stack
3834 * @param {string} key The key of the value to get.
3835 * @returns {*} Returns the entry value.
3836 */
3837 function stackGet(key) {
3838 return this.__data__.get(key);
3839 }
3840
3841 /**
3842 * Checks if a stack value for `key` exists.
3843 *
3844 * @private
3845 * @name has
3846 * @memberOf Stack
3847 * @param {string} key The key of the entry to check.
3848 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
3849 */
3850 function stackHas(key) {
3851 return this.__data__.has(key);
3852 }
3853
3854 /**
3855 * Sets the stack `key` to `value`.
3856 *
3857 * @private
3858 * @name set
3859 * @memberOf Stack
3860 * @param {string} key The key of the value to set.
3861 * @param {*} value The value to set.
3862 * @returns {Object} Returns the stack cache instance.
3863 */
3864 function stackSet(key, value) {
3865 var data = this.__data__;
3866 if (data instanceof ListCache) {
3867 var pairs = data.__data__;
3868 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
3869 pairs.push([key, value]);
3870 this.size = ++data.size;
3871 return this;
3872 }
3873 data = this.__data__ = new MapCache(pairs);
3874 }
3875 data.set(key, value);
3876 this.size = data.size;
3877 return this;
3878 }
3879
3880 // Add methods to `Stack`.
3881 Stack.prototype.clear = stackClear;
3882 Stack.prototype['delete'] = stackDelete;
3883 Stack.prototype.get = stackGet;
3884 Stack.prototype.has = stackHas;
3885 Stack.prototype.set = stackSet;
3886
3887 /*------------------------------------------------------------------------*/
3888
3889 /**
3890 * Creates an array of the enumerable property names of the array-like `value`.
3891 *
3892 * @private
3893 * @param {*} value The value to query.
3894 * @param {boolean} inherited Specify returning inherited property names.
3895 * @returns {Array} Returns the array of property names.
3896 */
3897 function arrayLikeKeys(value, inherited) {
3898 var isArr = isArray(value),
3899 isArg = !isArr && isArguments(value),
3900 isBuff = !isArr && !isArg && isBuffer(value),
3901 isType = !isArr && !isArg && !isBuff && isTypedArray(value),
3902 skipIndexes = isArr || isArg || isBuff || isType,
3903 result = skipIndexes ? baseTimes(value.length, String) : [],
3904 length = result.length;
3905
3906 for (var key in value) {
3907 if ((inherited || hasOwnProperty.call(value, key)) &&
3908 !(skipIndexes && (
3909 // Safari 9 has enumerable `arguments.length` in strict mode.
3910 key == 'length' ||
3911 // Node.js 0.10 has enumerable non-index properties on buffers.
3912 (isBuff && (key == 'offset' || key == 'parent')) ||
3913 // PhantomJS 2 has enumerable non-index properties on typed arrays.
3914 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
3915 // Skip index properties.
3916 isIndex(key, length)
3917 ))) {
3918 result.push(key);
3919 }
3920 }
3921 return result;
3922 }
3923
3924 /**
3925 * A specialized version of `_.sample` for arrays.
3926 *
3927 * @private
3928 * @param {Array} array The array to sample.
3929 * @returns {*} Returns the random element.
3930 */
3931 function arraySample(array) {
3932 var length = array.length;
3933 return length ? array[baseRandom(0, length - 1)] : undefined;
3934 }
3935
3936 /**
3937 * A specialized version of `_.sampleSize` for arrays.
3938 *
3939 * @private
3940 * @param {Array} array The array to sample.
3941 * @param {number} n The number of elements to sample.
3942 * @returns {Array} Returns the random elements.
3943 */
3944 function arraySampleSize(array, n) {
3945 return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
3946 }
3947
3948 /**
3949 * A specialized version of `_.shuffle` for arrays.
3950 *
3951 * @private
3952 * @param {Array} array The array to shuffle.
3953 * @returns {Array} Returns the new shuffled array.
3954 */
3955 function arrayShuffle(array) {
3956 return shuffleSelf(copyArray(array));
3957 }
3958
3959 /**
3960 * This function is like `assignValue` except that it doesn't assign
3961 * `undefined` values.
3962 *
3963 * @private
3964 * @param {Object} object The object to modify.
3965 * @param {string} key The key of the property to assign.
3966 * @param {*} value The value to assign.
3967 */
3968 function assignMergeValue(object, key, value) {
3969 if ((value !== undefined && !eq(object[key], value)) ||
3970 (value === undefined && !(key in object))) {
3971 baseAssignValue(object, key, value);
3972 }
3973 }
3974
3975 /**
3976 * Assigns `value` to `key` of `object` if the existing value is not equivalent
3977 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
3978 * for equality comparisons.
3979 *
3980 * @private
3981 * @param {Object} object The object to modify.
3982 * @param {string} key The key of the property to assign.
3983 * @param {*} value The value to assign.
3984 */
3985 function assignValue(object, key, value) {
3986 var objValue = object[key];
3987 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
3988 (value === undefined && !(key in object))) {
3989 baseAssignValue(object, key, value);
3990 }
3991 }
3992
3993 /**
3994 * Gets the index at which the `key` is found in `array` of key-value pairs.
3995 *
3996 * @private
3997 * @param {Array} array The array to inspect.
3998 * @param {*} key The key to search for.
3999 * @returns {number} Returns the index of the matched value, else `-1`.
4000 */
4001 function assocIndexOf(array, key) {
4002 var length = array.length;
4003 while (length--) {
4004 if (eq(array[length][0], key)) {
4005 return length;
4006 }
4007 }
4008 return -1;
4009 }
4010
4011 /**
4012 * Aggregates elements of `collection` on `accumulator` with keys transformed
4013 * by `iteratee` and values set by `setter`.
4014 *
4015 * @private
4016 * @param {Array|Object} collection The collection to iterate over.
4017 * @param {Function} setter The function to set `accumulator` values.
4018 * @param {Function} iteratee The iteratee to transform keys.
4019 * @param {Object} accumulator The initial aggregated object.
4020 * @returns {Function} Returns `accumulator`.
4021 */
4022 function baseAggregator(collection, setter, iteratee, accumulator) {
4023 baseEach(collection, function(value, key, collection) {
4024 setter(accumulator, value, iteratee(value), collection);
4025 });
4026 return accumulator;
4027 }
4028
4029 /**
4030 * The base implementation of `_.assign` without support for multiple sources
4031 * or `customizer` functions.
4032 *
4033 * @private
4034 * @param {Object} object The destination object.
4035 * @param {Object} source The source object.
4036 * @returns {Object} Returns `object`.
4037 */
4038 function baseAssign(object, source) {
4039 return object && copyObject(source, keys(source), object);
4040 }
4041
4042 /**
4043 * The base implementation of `_.assignIn` without support for multiple sources
4044 * or `customizer` functions.
4045 *
4046 * @private
4047 * @param {Object} object The destination object.
4048 * @param {Object} source The source object.
4049 * @returns {Object} Returns `object`.
4050 */
4051 function baseAssignIn(object, source) {
4052 return object && copyObject(source, keysIn(source), object);
4053 }
4054
4055 /**
4056 * The base implementation of `assignValue` and `assignMergeValue` without
4057 * value checks.
4058 *
4059 * @private
4060 * @param {Object} object The object to modify.
4061 * @param {string} key The key of the property to assign.
4062 * @param {*} value The value to assign.
4063 */
4064 function baseAssignValue(object, key, value) {
4065 if (key == '__proto__' && defineProperty) {
4066 defineProperty(object, key, {
4067 'configurable': true,
4068 'enumerable': true,
4069 'value': value,
4070 'writable': true
4071 });
4072 } else {
4073 object[key] = value;
4074 }
4075 }
4076
4077 /**
4078 * The base implementation of `_.at` without support for individual paths.
4079 *
4080 * @private
4081 * @param {Object} object The object to iterate over.
4082 * @param {string[]} paths The property paths to pick.
4083 * @returns {Array} Returns the picked elements.
4084 */
4085 function baseAt(object, paths) {
4086 var index = -1,
4087 length = paths.length,
4088 result = Array(length),
4089 skip = object == null;
4090
4091 while (++index < length) {
4092 result[index] = skip ? undefined : get(object, paths[index]);
4093 }
4094 return result;
4095 }
4096
4097 /**
4098 * The base implementation of `_.clamp` which doesn't coerce arguments.
4099 *
4100 * @private
4101 * @param {number} number The number to clamp.
4102 * @param {number} [lower] The lower bound.
4103 * @param {number} upper The upper bound.
4104 * @returns {number} Returns the clamped number.
4105 */
4106 function baseClamp(number, lower, upper) {
4107 if (number === number) {
4108 if (upper !== undefined) {
4109 number = number <= upper ? number : upper;
4110 }
4111 if (lower !== undefined) {
4112 number = number >= lower ? number : lower;
4113 }
4114 }
4115 return number;
4116 }
4117
4118 /**
4119 * The base implementation of `_.clone` and `_.cloneDeep` which tracks
4120 * traversed objects.
4121 *
4122 * @private
4123 * @param {*} value The value to clone.
4124 * @param {boolean} bitmask The bitmask flags.
4125 * 1 - Deep clone
4126 * 2 - Flatten inherited properties
4127 * 4 - Clone symbols
4128 * @param {Function} [customizer] The function to customize cloning.
4129 * @param {string} [key] The key of `value`.
4130 * @param {Object} [object] The parent object of `value`.
4131 * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
4132 * @returns {*} Returns the cloned value.
4133 */
4134 function baseClone(value, bitmask, customizer, key, object, stack) {
4135 var result,
4136 isDeep = bitmask & CLONE_DEEP_FLAG,
4137 isFlat = bitmask & CLONE_FLAT_FLAG,
4138 isFull = bitmask & CLONE_SYMBOLS_FLAG;
4139
4140 if (customizer) {
4141 result = object ? customizer(value, key, object, stack) : customizer(value);
4142 }
4143 if (result !== undefined) {
4144 return result;
4145 }
4146 if (!isObject(value)) {
4147 return value;
4148 }
4149 var isArr = isArray(value);
4150 if (isArr) {
4151 result = initCloneArray(value);
4152 if (!isDeep) {
4153 return copyArray(value, result);
4154 }
4155 } else {
4156 var tag = getTag(value),
4157 isFunc = tag == funcTag || tag == genTag;
4158
4159 if (isBuffer(value)) {
4160 return cloneBuffer(value, isDeep);
4161 }
4162 if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
4163 result = (isFlat || isFunc) ? {} : initCloneObject(value);
4164 if (!isDeep) {
4165 return isFlat
4166 ? copySymbolsIn(value, baseAssignIn(result, value))
4167 : copySymbols(value, baseAssign(result, value));
4168 }
4169 } else {
4170 if (!cloneableTags[tag]) {
4171 return object ? value : {};
4172 }
4173 result = initCloneByTag(value, tag, isDeep);
4174 }
4175 }
4176 // Check for circular references and return its corresponding clone.
4177 stack || (stack = new Stack);
4178 var stacked = stack.get(value);
4179 if (stacked) {
4180 return stacked;
4181 }
4182 stack.set(value, result);
4183
4184 if (isSet(value)) {
4185 value.forEach(function(subValue) {
4186 result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
4187 });
4188
4189 return result;
4190 }
4191
4192 if (isMap(value)) {
4193 value.forEach(function(subValue, key) {
4194 result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
4195 });
4196
4197 return result;
4198 }
4199
4200 var keysFunc = isFull
4201 ? (isFlat ? getAllKeysIn : getAllKeys)
4202 : (isFlat ? keysIn : keys);
4203
4204 var props = isArr ? undefined : keysFunc(value);
4205 arrayEach(props || value, function(subValue, key) {
4206 if (props) {
4207 key = subValue;
4208 subValue = value[key];
4209 }
4210 // Recursively populate clone (susceptible to call stack limits).
4211 assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
4212 });
4213 return result;
4214 }
4215
4216 /**
4217 * The base implementation of `_.conforms` which doesn't clone `source`.
4218 *
4219 * @private
4220 * @param {Object} source The object of property predicates to conform to.
4221 * @returns {Function} Returns the new spec function.
4222 */
4223 function baseConforms(source) {
4224 var props = keys(source);
4225 return function(object) {
4226 return baseConformsTo(object, source, props);
4227 };
4228 }
4229
4230 /**
4231 * The base implementation of `_.conformsTo` which accepts `props` to check.
4232 *
4233 * @private
4234 * @param {Object} object The object to inspect.
4235 * @param {Object} source The object of property predicates to conform to.
4236 * @returns {boolean} Returns `true` if `object` conforms, else `false`.
4237 */
4238 function baseConformsTo(object, source, props) {
4239 var length = props.length;
4240 if (object == null) {
4241 return !length;
4242 }
4243 object = Object(object);
4244 while (length--) {
4245 var key = props[length],
4246 predicate = source[key],
4247 value = object[key];
4248
4249 if ((value === undefined && !(key in object)) || !predicate(value)) {
4250 return false;
4251 }
4252 }
4253 return true;
4254 }
4255
4256 /**
4257 * The base implementation of `_.delay` and `_.defer` which accepts `args`
4258 * to provide to `func`.
4259 *
4260 * @private
4261 * @param {Function} func The function to delay.
4262 * @param {number} wait The number of milliseconds to delay invocation.
4263 * @param {Array} args The arguments to provide to `func`.
4264 * @returns {number|Object} Returns the timer id or timeout object.
4265 */
4266 function baseDelay(func, wait, args) {
4267 if (typeof func != 'function') {
4268 throw new TypeError(FUNC_ERROR_TEXT);
4269 }
4270 return setTimeout(function() { func.apply(undefined, args); }, wait);
4271 }
4272
4273 /**
4274 * The base implementation of methods like `_.difference` without support
4275 * for excluding multiple arrays or iteratee shorthands.
4276 *
4277 * @private
4278 * @param {Array} array The array to inspect.
4279 * @param {Array} values The values to exclude.
4280 * @param {Function} [iteratee] The iteratee invoked per element.
4281 * @param {Function} [comparator] The comparator invoked per element.
4282 * @returns {Array} Returns the new array of filtered values.
4283 */
4284 function baseDifference(array, values, iteratee, comparator) {
4285 var index = -1,
4286 includes = arrayIncludes,
4287 isCommon = true,
4288 length = array.length,
4289 result = [],
4290 valuesLength = values.length;
4291
4292 if (!length) {
4293 return result;
4294 }
4295 if (iteratee) {
4296 values = arrayMap(values, baseUnary(iteratee));
4297 }
4298 if (comparator) {
4299 includes = arrayIncludesWith;
4300 isCommon = false;
4301 }
4302 else if (values.length >= LARGE_ARRAY_SIZE) {
4303 includes = cacheHas;
4304 isCommon = false;
4305 values = new SetCache(values);
4306 }
4307 outer:
4308 while (++index < length) {
4309 var value = array[index],
4310 computed = iteratee == null ? value : iteratee(value);
4311
4312 value = (comparator || value !== 0) ? value : 0;
4313 if (isCommon && computed === computed) {
4314 var valuesIndex = valuesLength;
4315 while (valuesIndex--) {
4316 if (values[valuesIndex] === computed) {
4317 continue outer;
4318 }
4319 }
4320 result.push(value);
4321 }
4322 else if (!includes(values, computed, comparator)) {
4323 result.push(value);
4324 }
4325 }
4326 return result;
4327 }
4328
4329 /**
4330 * The base implementation of `_.forEach` without support for iteratee shorthands.
4331 *
4332 * @private
4333 * @param {Array|Object} collection The collection to iterate over.
4334 * @param {Function} iteratee The function invoked per iteration.
4335 * @returns {Array|Object} Returns `collection`.
4336 */
4337 var baseEach = createBaseEach(baseForOwn);
4338
4339 /**
4340 * The base implementation of `_.forEachRight` without support for iteratee shorthands.
4341 *
4342 * @private
4343 * @param {Array|Object} collection The collection to iterate over.
4344 * @param {Function} iteratee The function invoked per iteration.
4345 * @returns {Array|Object} Returns `collection`.
4346 */
4347 var baseEachRight = createBaseEach(baseForOwnRight, true);
4348
4349 /**
4350 * The base implementation of `_.every` without support for iteratee shorthands.
4351 *
4352 * @private
4353 * @param {Array|Object} collection The collection to iterate over.
4354 * @param {Function} predicate The function invoked per iteration.
4355 * @returns {boolean} Returns `true` if all elements pass the predicate check,
4356 * else `false`
4357 */
4358 function baseEvery(collection, predicate) {
4359 var result = true;
4360 baseEach(collection, function(value, index, collection) {
4361 result = !!predicate(value, index, collection);
4362 return result;
4363 });
4364 return result;
4365 }
4366
4367 /**
4368 * The base implementation of methods like `_.max` and `_.min` which accepts a
4369 * `comparator` to determine the extremum value.
4370 *
4371 * @private
4372 * @param {Array} array The array to iterate over.
4373 * @param {Function} iteratee The iteratee invoked per iteration.
4374 * @param {Function} comparator The comparator used to compare values.
4375 * @returns {*} Returns the extremum value.
4376 */
4377 function baseExtremum(array, iteratee, comparator) {
4378 var index = -1,
4379 length = array.length;
4380
4381 while (++index < length) {
4382 var value = array[index],
4383 current = iteratee(value);
4384
4385 if (current != null && (computed === undefined
4386 ? (current === current && !isSymbol(current))
4387 : comparator(current, computed)
4388 )) {
4389 var computed = current,
4390 result = value;
4391 }
4392 }
4393 return result;
4394 }
4395
4396 /**
4397 * The base implementation of `_.fill` without an iteratee call guard.
4398 *
4399 * @private
4400 * @param {Array} array The array to fill.
4401 * @param {*} value The value to fill `array` with.
4402 * @param {number} [start=0] The start position.
4403 * @param {number} [end=array.length] The end position.
4404 * @returns {Array} Returns `array`.
4405 */
4406 function baseFill(array, value, start, end) {
4407 var length = array.length;
4408
4409 start = toInteger(start);
4410 if (start < 0) {
4411 start = -start > length ? 0 : (length + start);
4412 }
4413 end = (end === undefined || end > length) ? length : toInteger(end);
4414 if (end < 0) {
4415 end += length;
4416 }
4417 end = start > end ? 0 : toLength(end);
4418 while (start < end) {
4419 array[start++] = value;
4420 }
4421 return array;
4422 }
4423
4424 /**
4425 * The base implementation of `_.filter` without support for iteratee shorthands.
4426 *
4427 * @private
4428 * @param {Array|Object} collection The collection to iterate over.
4429 * @param {Function} predicate The function invoked per iteration.
4430 * @returns {Array} Returns the new filtered array.
4431 */
4432 function baseFilter(collection, predicate) {
4433 var result = [];
4434 baseEach(collection, function(value, index, collection) {
4435 if (predicate(value, index, collection)) {
4436 result.push(value);
4437 }
4438 });
4439 return result;
4440 }
4441
4442 /**
4443 * The base implementation of `_.flatten` with support for restricting flattening.
4444 *
4445 * @private
4446 * @param {Array} array The array to flatten.
4447 * @param {number} depth The maximum recursion depth.
4448 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
4449 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
4450 * @param {Array} [result=[]] The initial result value.
4451 * @returns {Array} Returns the new flattened array.
4452 */
4453 function baseFlatten(array, depth, predicate, isStrict, result) {
4454 var index = -1,
4455 length = array.length;
4456
4457 predicate || (predicate = isFlattenable);
4458 result || (result = []);
4459
4460 while (++index < length) {
4461 var value = array[index];
4462 if (depth > 0 && predicate(value)) {
4463 if (depth > 1) {
4464 // Recursively flatten arrays (susceptible to call stack limits).
4465 baseFlatten(value, depth - 1, predicate, isStrict, result);
4466 } else {
4467 arrayPush(result, value);
4468 }
4469 } else if (!isStrict) {
4470 result[result.length] = value;
4471 }
4472 }
4473 return result;
4474 }
4475
4476 /**
4477 * The base implementation of `baseForOwn` which iterates over `object`
4478 * properties returned by `keysFunc` and invokes `iteratee` for each property.
4479 * Iteratee functions may exit iteration early by explicitly returning `false`.
4480 *
4481 * @private
4482 * @param {Object} object The object to iterate over.
4483 * @param {Function} iteratee The function invoked per iteration.
4484 * @param {Function} keysFunc The function to get the keys of `object`.
4485 * @returns {Object} Returns `object`.
4486 */
4487 var baseFor = createBaseFor();
4488
4489 /**
4490 * This function is like `baseFor` except that it iterates over properties
4491 * in the opposite order.
4492 *
4493 * @private
4494 * @param {Object} object The object to iterate over.
4495 * @param {Function} iteratee The function invoked per iteration.
4496 * @param {Function} keysFunc The function to get the keys of `object`.
4497 * @returns {Object} Returns `object`.
4498 */
4499 var baseForRight = createBaseFor(true);
4500
4501 /**
4502 * The base implementation of `_.forOwn` without support for iteratee shorthands.
4503 *
4504 * @private
4505 * @param {Object} object The object to iterate over.
4506 * @param {Function} iteratee The function invoked per iteration.
4507 * @returns {Object} Returns `object`.
4508 */
4509 function baseForOwn(object, iteratee) {
4510 return object && baseFor(object, iteratee, keys);
4511 }
4512
4513 /**
4514 * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
4515 *
4516 * @private
4517 * @param {Object} object The object to iterate over.
4518 * @param {Function} iteratee The function invoked per iteration.
4519 * @returns {Object} Returns `object`.
4520 */
4521 function baseForOwnRight(object, iteratee) {
4522 return object && baseForRight(object, iteratee, keys);
4523 }
4524
4525 /**
4526 * The base implementation of `_.functions` which creates an array of
4527 * `object` function property names filtered from `props`.
4528 *
4529 * @private
4530 * @param {Object} object The object to inspect.
4531 * @param {Array} props The property names to filter.
4532 * @returns {Array} Returns the function names.
4533 */
4534 function baseFunctions(object, props) {
4535 return arrayFilter(props, function(key) {
4536 return isFunction(object[key]);
4537 });
4538 }
4539
4540 /**
4541 * The base implementation of `_.get` without support for default values.
4542 *
4543 * @private
4544 * @param {Object} object The object to query.
4545 * @param {Array|string} path The path of the property to get.
4546 * @returns {*} Returns the resolved value.
4547 */
4548 function baseGet(object, path) {
4549 path = castPath(path, object);
4550
4551 var index = 0,
4552 length = path.length;
4553
4554 while (object != null && index < length) {
4555 object = object[toKey(path[index++])];
4556 }
4557 return (index && index == length) ? object : undefined;
4558 }
4559
4560 /**
4561 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
4562 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
4563 * symbols of `object`.
4564 *
4565 * @private
4566 * @param {Object} object The object to query.
4567 * @param {Function} keysFunc The function to get the keys of `object`.
4568 * @param {Function} symbolsFunc The function to get the symbols of `object`.
4569 * @returns {Array} Returns the array of property names and symbols.
4570 */
4571 function baseGetAllKeys(object, keysFunc, symbolsFunc) {
4572 var result = keysFunc(object);
4573 return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
4574 }
4575
4576 /**
4577 * The base implementation of `getTag` without fallbacks for buggy environments.
4578 *
4579 * @private
4580 * @param {*} value The value to query.
4581 * @returns {string} Returns the `toStringTag`.
4582 */
4583 function baseGetTag(value) {
4584 if (value == null) {
4585 return value === undefined ? undefinedTag : nullTag;
4586 }
4587 return (symToStringTag && symToStringTag in Object(value))
4588 ? getRawTag(value)
4589 : objectToString(value);
4590 }
4591
4592 /**
4593 * The base implementation of `_.gt` which doesn't coerce arguments.
4594 *
4595 * @private
4596 * @param {*} value The value to compare.
4597 * @param {*} other The other value to compare.
4598 * @returns {boolean} Returns `true` if `value` is greater than `other`,
4599 * else `false`.
4600 */
4601 function baseGt(value, other) {
4602 return value > other;
4603 }
4604
4605 /**
4606 * The base implementation of `_.has` without support for deep paths.
4607 *
4608 * @private
4609 * @param {Object} [object] The object to query.
4610 * @param {Array|string} key The key to check.
4611 * @returns {boolean} Returns `true` if `key` exists, else `false`.
4612 */
4613 function baseHas(object, key) {
4614 return object != null && hasOwnProperty.call(object, key);
4615 }
4616
4617 /**
4618 * The base implementation of `_.hasIn` without support for deep paths.
4619 *
4620 * @private
4621 * @param {Object} [object] The object to query.
4622 * @param {Array|string} key The key to check.
4623 * @returns {boolean} Returns `true` if `key` exists, else `false`.
4624 */
4625 function baseHasIn(object, key) {
4626 return object != null && key in Object(object);
4627 }
4628
4629 /**
4630 * The base implementation of `_.inRange` which doesn't coerce arguments.
4631 *
4632 * @private
4633 * @param {number} number The number to check.
4634 * @param {number} start The start of the range.
4635 * @param {number} end The end of the range.
4636 * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
4637 */
4638 function baseInRange(number, start, end) {
4639 return number >= nativeMin(start, end) && number < nativeMax(start, end);
4640 }
4641
4642 /**
4643 * The base implementation of methods like `_.intersection`, without support
4644 * for iteratee shorthands, that accepts an array of arrays to inspect.
4645 *
4646 * @private
4647 * @param {Array} arrays The arrays to inspect.
4648 * @param {Function} [iteratee] The iteratee invoked per element.
4649 * @param {Function} [comparator] The comparator invoked per element.
4650 * @returns {Array} Returns the new array of shared values.
4651 */
4652 function baseIntersection(arrays, iteratee, comparator) {
4653 var includes = comparator ? arrayIncludesWith : arrayIncludes,
4654 length = arrays[0].length,
4655 othLength = arrays.length,
4656 othIndex = othLength,
4657 caches = Array(othLength),
4658 maxLength = Infinity,
4659 result = [];
4660
4661 while (othIndex--) {
4662 var array = arrays[othIndex];
4663 if (othIndex && iteratee) {
4664 array = arrayMap(array, baseUnary(iteratee));
4665 }
4666 maxLength = nativeMin(array.length, maxLength);
4667 caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
4668 ? new SetCache(othIndex && array)
4669 : undefined;
4670 }
4671 array = arrays[0];
4672
4673 var index = -1,
4674 seen = caches[0];
4675
4676 outer:
4677 while (++index < length && result.length < maxLength) {
4678 var value = array[index],
4679 computed = iteratee ? iteratee(value) : value;
4680
4681 value = (comparator || value !== 0) ? value : 0;
4682 if (!(seen
4683 ? cacheHas(seen, computed)
4684 : includes(result, computed, comparator)
4685 )) {
4686 othIndex = othLength;
4687 while (--othIndex) {
4688 var cache = caches[othIndex];
4689 if (!(cache
4690 ? cacheHas(cache, computed)
4691 : includes(arrays[othIndex], computed, comparator))
4692 ) {
4693 continue outer;
4694 }
4695 }
4696 if (seen) {
4697 seen.push(computed);
4698 }
4699 result.push(value);
4700 }
4701 }
4702 return result;
4703 }
4704
4705 /**
4706 * The base implementation of `_.invert` and `_.invertBy` which inverts
4707 * `object` with values transformed by `iteratee` and set by `setter`.
4708 *
4709 * @private
4710 * @param {Object} object The object to iterate over.
4711 * @param {Function} setter The function to set `accumulator` values.
4712 * @param {Function} iteratee The iteratee to transform values.
4713 * @param {Object} accumulator The initial inverted object.
4714 * @returns {Function} Returns `accumulator`.
4715 */
4716 function baseInverter(object, setter, iteratee, accumulator) {
4717 baseForOwn(object, function(value, key, object) {
4718 setter(accumulator, iteratee(value), key, object);
4719 });
4720 return accumulator;
4721 }
4722
4723 /**
4724 * The base implementation of `_.invoke` without support for individual
4725 * method arguments.
4726 *
4727 * @private
4728 * @param {Object} object The object to query.
4729 * @param {Array|string} path The path of the method to invoke.
4730 * @param {Array} args The arguments to invoke the method with.
4731 * @returns {*} Returns the result of the invoked method.
4732 */
4733 function baseInvoke(object, path, args) {
4734 path = castPath(path, object);
4735 object = parent(object, path);
4736 var func = object == null ? object : object[toKey(last(path))];
4737 return func == null ? undefined : apply(func, object, args);
4738 }
4739
4740 /**
4741 * The base implementation of `_.isArguments`.
4742 *
4743 * @private
4744 * @param {*} value The value to check.
4745 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
4746 */
4747 function baseIsArguments(value) {
4748 return isObjectLike(value) && baseGetTag(value) == argsTag;
4749 }
4750
4751 /**
4752 * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
4753 *
4754 * @private
4755 * @param {*} value The value to check.
4756 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
4757 */
4758 function baseIsArrayBuffer(value) {
4759 return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
4760 }
4761
4762 /**
4763 * The base implementation of `_.isDate` without Node.js optimizations.
4764 *
4765 * @private
4766 * @param {*} value The value to check.
4767 * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
4768 */
4769 function baseIsDate(value) {
4770 return isObjectLike(value) && baseGetTag(value) == dateTag;
4771 }
4772
4773 /**
4774 * The base implementation of `_.isEqual` which supports partial comparisons
4775 * and tracks traversed objects.
4776 *
4777 * @private
4778 * @param {*} value The value to compare.
4779 * @param {*} other The other value to compare.
4780 * @param {boolean} bitmask The bitmask flags.
4781 * 1 - Unordered comparison
4782 * 2 - Partial comparison
4783 * @param {Function} [customizer] The function to customize comparisons.
4784 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
4785 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
4786 */
4787 function baseIsEqual(value, other, bitmask, customizer, stack) {
4788 if (value === other) {
4789 return true;
4790 }
4791 if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
4792 return value !== value && other !== other;
4793 }
4794 return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
4795 }
4796
4797 /**
4798 * A specialized version of `baseIsEqual` for arrays and objects which performs
4799 * deep comparisons and tracks traversed objects enabling objects with circular
4800 * references to be compared.
4801 *
4802 * @private
4803 * @param {Object} object The object to compare.
4804 * @param {Object} other The other object to compare.
4805 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
4806 * @param {Function} customizer The function to customize comparisons.
4807 * @param {Function} equalFunc The function to determine equivalents of values.
4808 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
4809 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
4810 */
4811 function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
4812 var objIsArr = isArray(object),
4813 othIsArr = isArray(other),
4814 objTag = objIsArr ? arrayTag : getTag(object),
4815 othTag = othIsArr ? arrayTag : getTag(other);
4816
4817 objTag = objTag == argsTag ? objectTag : objTag;
4818 othTag = othTag == argsTag ? objectTag : othTag;
4819
4820 var objIsObj = objTag == objectTag,
4821 othIsObj = othTag == objectTag,
4822 isSameTag = objTag == othTag;
4823
4824 if (isSameTag && isBuffer(object)) {
4825 if (!isBuffer(other)) {
4826 return false;
4827 }
4828 objIsArr = true;
4829 objIsObj = false;
4830 }
4831 if (isSameTag && !objIsObj) {
4832 stack || (stack = new Stack);
4833 return (objIsArr || isTypedArray(object))
4834 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
4835 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
4836 }
4837 if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
4838 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
4839 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
4840
4841 if (objIsWrapped || othIsWrapped) {
4842 var objUnwrapped = objIsWrapped ? object.value() : object,
4843 othUnwrapped = othIsWrapped ? other.value() : other;
4844
4845 stack || (stack = new Stack);
4846 return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
4847 }
4848 }
4849 if (!isSameTag) {
4850 return false;
4851 }
4852 stack || (stack = new Stack);
4853 return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
4854 }
4855
4856 /**
4857 * The base implementation of `_.isMap` without Node.js optimizations.
4858 *
4859 * @private
4860 * @param {*} value The value to check.
4861 * @returns {boolean} Returns `true` if `value` is a map, else `false`.
4862 */
4863 function baseIsMap(value) {
4864 return isObjectLike(value) && getTag(value) == mapTag;
4865 }
4866
4867 /**
4868 * The base implementation of `_.isMatch` without support for iteratee shorthands.
4869 *
4870 * @private
4871 * @param {Object} object The object to inspect.
4872 * @param {Object} source The object of property values to match.
4873 * @param {Array} matchData The property names, values, and compare flags to match.
4874 * @param {Function} [customizer] The function to customize comparisons.
4875 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
4876 */
4877 function baseIsMatch(object, source, matchData, customizer) {
4878 var index = matchData.length,
4879 length = index,
4880 noCustomizer = !customizer;
4881
4882 if (object == null) {
4883 return !length;
4884 }
4885 object = Object(object);
4886 while (index--) {
4887 var data = matchData[index];
4888 if ((noCustomizer && data[2])
4889 ? data[1] !== object[data[0]]
4890 : !(data[0] in object)
4891 ) {
4892 return false;
4893 }
4894 }
4895 while (++index < length) {
4896 data = matchData[index];
4897 var key = data[0],
4898 objValue = object[key],
4899 srcValue = data[1];
4900
4901 if (noCustomizer && data[2]) {
4902 if (objValue === undefined && !(key in object)) {
4903 return false;
4904 }
4905 } else {
4906 var stack = new Stack;
4907 if (customizer) {
4908 var result = customizer(objValue, srcValue, key, object, source, stack);
4909 }
4910 if (!(result === undefined
4911 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
4912 : result
4913 )) {
4914 return false;
4915 }
4916 }
4917 }
4918 return true;
4919 }
4920
4921 /**
4922 * The base implementation of `_.isNative` without bad shim checks.
4923 *
4924 * @private
4925 * @param {*} value The value to check.
4926 * @returns {boolean} Returns `true` if `value` is a native function,
4927 * else `false`.
4928 */
4929 function baseIsNative(value) {
4930 if (!isObject(value) || isMasked(value)) {
4931 return false;
4932 }
4933 var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
4934 return pattern.test(toSource(value));
4935 }
4936
4937 /**
4938 * The base implementation of `_.isRegExp` without Node.js optimizations.
4939 *
4940 * @private
4941 * @param {*} value The value to check.
4942 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
4943 */
4944 function baseIsRegExp(value) {
4945 return isObjectLike(value) && baseGetTag(value) == regexpTag;
4946 }
4947
4948 /**
4949 * The base implementation of `_.isSet` without Node.js optimizations.
4950 *
4951 * @private
4952 * @param {*} value The value to check.
4953 * @returns {boolean} Returns `true` if `value` is a set, else `false`.
4954 */
4955 function baseIsSet(value) {
4956 return isObjectLike(value) && getTag(value) == setTag;
4957 }
4958
4959 /**
4960 * The base implementation of `_.isTypedArray` without Node.js optimizations.
4961 *
4962 * @private
4963 * @param {*} value The value to check.
4964 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
4965 */
4966 function baseIsTypedArray(value) {
4967 return isObjectLike(value) &&
4968 isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
4969 }
4970
4971 /**
4972 * The base implementation of `_.iteratee`.
4973 *
4974 * @private
4975 * @param {*} [value=_.identity] The value to convert to an iteratee.
4976 * @returns {Function} Returns the iteratee.
4977 */
4978 function baseIteratee(value) {
4979 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
4980 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
4981 if (typeof value == 'function') {
4982 return value;
4983 }
4984 if (value == null) {
4985 return identity;
4986 }
4987 if (typeof value == 'object') {
4988 return isArray(value)
4989 ? baseMatchesProperty(value[0], value[1])
4990 : baseMatches(value);
4991 }
4992 return property(value);
4993 }
4994
4995 /**
4996 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
4997 *
4998 * @private
4999 * @param {Object} object The object to query.
5000 * @returns {Array} Returns the array of property names.
5001 */
5002 function baseKeys(object) {
5003 if (!isPrototype(object)) {
5004 return nativeKeys(object);
5005 }
5006 var result = [];
5007 for (var key in Object(object)) {
5008 if (hasOwnProperty.call(object, key) && key != 'constructor') {
5009 result.push(key);
5010 }
5011 }
5012 return result;
5013 }
5014
5015 /**
5016 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
5017 *
5018 * @private
5019 * @param {Object} object The object to query.
5020 * @returns {Array} Returns the array of property names.
5021 */
5022 function baseKeysIn(object) {
5023 if (!isObject(object)) {
5024 return nativeKeysIn(object);
5025 }
5026 var isProto = isPrototype(object),
5027 result = [];
5028
5029 for (var key in object) {
5030 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
5031 result.push(key);
5032 }
5033 }
5034 return result;
5035 }
5036
5037 /**
5038 * The base implementation of `_.lt` which doesn't coerce arguments.
5039 *
5040 * @private
5041 * @param {*} value The value to compare.
5042 * @param {*} other The other value to compare.
5043 * @returns {boolean} Returns `true` if `value` is less than `other`,
5044 * else `false`.
5045 */
5046 function baseLt(value, other) {
5047 return value < other;
5048 }
5049
5050 /**
5051 * The base implementation of `_.map` without support for iteratee shorthands.
5052 *
5053 * @private
5054 * @param {Array|Object} collection The collection to iterate over.
5055 * @param {Function} iteratee The function invoked per iteration.
5056 * @returns {Array} Returns the new mapped array.
5057 */
5058 function baseMap(collection, iteratee) {
5059 var index = -1,
5060 result = isArrayLike(collection) ? Array(collection.length) : [];
5061
5062 baseEach(collection, function(value, key, collection) {
5063 result[++index] = iteratee(value, key, collection);
5064 });
5065 return result;
5066 }
5067
5068 /**
5069 * The base implementation of `_.matches` which doesn't clone `source`.
5070 *
5071 * @private
5072 * @param {Object} source The object of property values to match.
5073 * @returns {Function} Returns the new spec function.
5074 */
5075 function baseMatches(source) {
5076 var matchData = getMatchData(source);
5077 if (matchData.length == 1 && matchData[0][2]) {
5078 return matchesStrictComparable(matchData[0][0], matchData[0][1]);
5079 }
5080 return function(object) {
5081 return object === source || baseIsMatch(object, source, matchData);
5082 };
5083 }
5084
5085 /**
5086 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
5087 *
5088 * @private
5089 * @param {string} path The path of the property to get.
5090 * @param {*} srcValue The value to match.
5091 * @returns {Function} Returns the new spec function.
5092 */
5093 function baseMatchesProperty(path, srcValue) {
5094 if (isKey(path) && isStrictComparable(srcValue)) {
5095 return matchesStrictComparable(toKey(path), srcValue);
5096 }
5097 return function(object) {
5098 var objValue = get(object, path);
5099 return (objValue === undefined && objValue === srcValue)
5100 ? hasIn(object, path)
5101 : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
5102 };
5103 }
5104
5105 /**
5106 * The base implementation of `_.merge` without support for multiple sources.
5107 *
5108 * @private
5109 * @param {Object} object The destination object.
5110 * @param {Object} source The source object.
5111 * @param {number} srcIndex The index of `source`.
5112 * @param {Function} [customizer] The function to customize merged values.
5113 * @param {Object} [stack] Tracks traversed source values and their merged
5114 * counterparts.
5115 */
5116 function baseMerge(object, source, srcIndex, customizer, stack) {
5117 if (object === source) {
5118 return;
5119 }
5120 baseFor(source, function(srcValue, key) {
5121 if (isObject(srcValue)) {
5122 stack || (stack = new Stack);
5123 baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
5124 }
5125 else {
5126 var newValue = customizer
5127 ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
5128 : undefined;
5129
5130 if (newValue === undefined) {
5131 newValue = srcValue;
5132 }
5133 assignMergeValue(object, key, newValue);
5134 }
5135 }, keysIn);
5136 }
5137
5138 /**
5139 * A specialized version of `baseMerge` for arrays and objects which performs
5140 * deep merges and tracks traversed objects enabling objects with circular
5141 * references to be merged.
5142 *
5143 * @private
5144 * @param {Object} object The destination object.
5145 * @param {Object} source The source object.
5146 * @param {string} key The key of the value to merge.
5147 * @param {number} srcIndex The index of `source`.
5148 * @param {Function} mergeFunc The function to merge values.
5149 * @param {Function} [customizer] The function to customize assigned values.
5150 * @param {Object} [stack] Tracks traversed source values and their merged
5151 * counterparts.
5152 */
5153 function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
5154 var objValue = safeGet(object, key),
5155 srcValue = safeGet(source, key),
5156 stacked = stack.get(srcValue);
5157
5158 if (stacked) {
5159 assignMergeValue(object, key, stacked);
5160 return;
5161 }
5162 var newValue = customizer
5163 ? customizer(objValue, srcValue, (key + ''), object, source, stack)
5164 : undefined;
5165
5166 var isCommon = newValue === undefined;
5167
5168 if (isCommon) {
5169 var isArr = isArray(srcValue),
5170 isBuff = !isArr && isBuffer(srcValue),
5171 isTyped = !isArr && !isBuff && isTypedArray(srcValue);
5172
5173 newValue = srcValue;
5174 if (isArr || isBuff || isTyped) {
5175 if (isArray(objValue)) {
5176 newValue = objValue;
5177 }
5178 else if (isArrayLikeObject(objValue)) {
5179 newValue = copyArray(objValue);
5180 }
5181 else if (isBuff) {
5182 isCommon = false;
5183 newValue = cloneBuffer(srcValue, true);
5184 }
5185 else if (isTyped) {
5186 isCommon = false;
5187 newValue = cloneTypedArray(srcValue, true);
5188 }
5189 else {
5190 newValue = [];
5191 }
5192 }
5193 else if (isPlainObject(srcValue) || isArguments(srcValue)) {
5194 newValue = objValue;
5195 if (isArguments(objValue)) {
5196 newValue = toPlainObject(objValue);
5197 }
5198 else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
5199 newValue = initCloneObject(srcValue);
5200 }
5201 }
5202 else {
5203 isCommon = false;
5204 }
5205 }
5206 if (isCommon) {
5207 // Recursively merge objects and arrays (susceptible to call stack limits).
5208 stack.set(srcValue, newValue);
5209 mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
5210 stack['delete'](srcValue);
5211 }
5212 assignMergeValue(object, key, newValue);
5213 }
5214
5215 /**
5216 * The base implementation of `_.nth` which doesn't coerce arguments.
5217 *
5218 * @private
5219 * @param {Array} array The array to query.
5220 * @param {number} n The index of the element to return.
5221 * @returns {*} Returns the nth element of `array`.
5222 */
5223 function baseNth(array, n) {
5224 var length = array.length;
5225 if (!length) {
5226 return;
5227 }
5228 n += n < 0 ? length : 0;
5229 return isIndex(n, length) ? array[n] : undefined;
5230 }
5231
5232 /**
5233 * The base implementation of `_.orderBy` without param guards.
5234 *
5235 * @private
5236 * @param {Array|Object} collection The collection to iterate over.
5237 * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
5238 * @param {string[]} orders The sort orders of `iteratees`.
5239 * @returns {Array} Returns the new sorted array.
5240 */
5241 function baseOrderBy(collection, iteratees, orders) {
5242 var index = -1;
5243 iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));
5244
5245 var result = baseMap(collection, function(value, key, collection) {
5246 var criteria = arrayMap(iteratees, function(iteratee) {
5247 return iteratee(value);
5248 });
5249 return { 'criteria': criteria, 'index': ++index, 'value': value };
5250 });
5251
5252 return baseSortBy(result, function(object, other) {
5253 return compareMultiple(object, other, orders);
5254 });
5255 }
5256
5257 /**
5258 * The base implementation of `_.pick` without support for individual
5259 * property identifiers.
5260 *
5261 * @private
5262 * @param {Object} object The source object.
5263 * @param {string[]} paths The property paths to pick.
5264 * @returns {Object} Returns the new object.
5265 */
5266 function basePick(object, paths) {
5267 return basePickBy(object, paths, function(value, path) {
5268 return hasIn(object, path);
5269 });
5270 }
5271
5272 /**
5273 * The base implementation of `_.pickBy` without support for iteratee shorthands.
5274 *
5275 * @private
5276 * @param {Object} object The source object.
5277 * @param {string[]} paths The property paths to pick.
5278 * @param {Function} predicate The function invoked per property.
5279 * @returns {Object} Returns the new object.
5280 */
5281 function basePickBy(object, paths, predicate) {
5282 var index = -1,
5283 length = paths.length,
5284 result = {};
5285
5286 while (++index < length) {
5287 var path = paths[index],
5288 value = baseGet(object, path);
5289
5290 if (predicate(value, path)) {
5291 baseSet(result, castPath(path, object), value);
5292 }
5293 }
5294 return result;
5295 }
5296
5297 /**
5298 * A specialized version of `baseProperty` which supports deep paths.
5299 *
5300 * @private
5301 * @param {Array|string} path The path of the property to get.
5302 * @returns {Function} Returns the new accessor function.
5303 */
5304 function basePropertyDeep(path) {
5305 return function(object) {
5306 return baseGet(object, path);
5307 };
5308 }
5309
5310 /**
5311 * The base implementation of `_.pullAllBy` without support for iteratee
5312 * shorthands.
5313 *
5314 * @private
5315 * @param {Array} array The array to modify.
5316 * @param {Array} values The values to remove.
5317 * @param {Function} [iteratee] The iteratee invoked per element.
5318 * @param {Function} [comparator] The comparator invoked per element.
5319 * @returns {Array} Returns `array`.
5320 */
5321 function basePullAll(array, values, iteratee, comparator) {
5322 var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
5323 index = -1,
5324 length = values.length,
5325 seen = array;
5326
5327 if (array === values) {
5328 values = copyArray(values);
5329 }
5330 if (iteratee) {
5331 seen = arrayMap(array, baseUnary(iteratee));
5332 }
5333 while (++index < length) {
5334 var fromIndex = 0,
5335 value = values[index],
5336 computed = iteratee ? iteratee(value) : value;
5337
5338 while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
5339 if (seen !== array) {
5340 splice.call(seen, fromIndex, 1);
5341 }
5342 splice.call(array, fromIndex, 1);
5343 }
5344 }
5345 return array;
5346 }
5347
5348 /**
5349 * The base implementation of `_.pullAt` without support for individual
5350 * indexes or capturing the removed elements.
5351 *
5352 * @private
5353 * @param {Array} array The array to modify.
5354 * @param {number[]} indexes The indexes of elements to remove.
5355 * @returns {Array} Returns `array`.
5356 */
5357 function basePullAt(array, indexes) {
5358 var length = array ? indexes.length : 0,
5359 lastIndex = length - 1;
5360
5361 while (length--) {
5362 var index = indexes[length];
5363 if (length == lastIndex || index !== previous) {
5364 var previous = index;
5365 if (isIndex(index)) {
5366 splice.call(array, index, 1);
5367 } else {
5368 baseUnset(array, index);
5369 }
5370 }
5371 }
5372 return array;
5373 }
5374
5375 /**
5376 * The base implementation of `_.random` without support for returning
5377 * floating-point numbers.
5378 *
5379 * @private
5380 * @param {number} lower The lower bound.
5381 * @param {number} upper The upper bound.
5382 * @returns {number} Returns the random number.
5383 */
5384 function baseRandom(lower, upper) {
5385 return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
5386 }
5387
5388 /**
5389 * The base implementation of `_.range` and `_.rangeRight` which doesn't
5390 * coerce arguments.
5391 *
5392 * @private
5393 * @param {number} start The start of the range.
5394 * @param {number} end The end of the range.
5395 * @param {number} step The value to increment or decrement by.
5396 * @param {boolean} [fromRight] Specify iterating from right to left.
5397 * @returns {Array} Returns the range of numbers.
5398 */
5399 function baseRange(start, end, step, fromRight) {
5400 var index = -1,
5401 length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
5402 result = Array(length);
5403
5404 while (length--) {
5405 result[fromRight ? length : ++index] = start;
5406 start += step;
5407 }
5408 return result;
5409 }
5410
5411 /**
5412 * The base implementation of `_.repeat` which doesn't coerce arguments.
5413 *
5414 * @private
5415 * @param {string} string The string to repeat.
5416 * @param {number} n The number of times to repeat the string.
5417 * @returns {string} Returns the repeated string.
5418 */
5419 function baseRepeat(string, n) {
5420 var result = '';
5421 if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
5422 return result;
5423 }
5424 // Leverage the exponentiation by squaring algorithm for a faster repeat.
5425 // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
5426 do {
5427 if (n % 2) {
5428 result += string;
5429 }
5430 n = nativeFloor(n / 2);
5431 if (n) {
5432 string += string;
5433 }
5434 } while (n);
5435
5436 return result;
5437 }
5438
5439 /**
5440 * The base implementation of `_.rest` which doesn't validate or coerce arguments.
5441 *
5442 * @private
5443 * @param {Function} func The function to apply a rest parameter to.
5444 * @param {number} [start=func.length-1] The start position of the rest parameter.
5445 * @returns {Function} Returns the new function.
5446 */
5447 function baseRest(func, start) {
5448 return setToString(overRest(func, start, identity), func + '');
5449 }
5450
5451 /**
5452 * The base implementation of `_.sample`.
5453 *
5454 * @private
5455 * @param {Array|Object} collection The collection to sample.
5456 * @returns {*} Returns the random element.
5457 */
5458 function baseSample(collection) {
5459 return arraySample(values(collection));
5460 }
5461
5462 /**
5463 * The base implementation of `_.sampleSize` without param guards.
5464 *
5465 * @private
5466 * @param {Array|Object} collection The collection to sample.
5467 * @param {number} n The number of elements to sample.
5468 * @returns {Array} Returns the random elements.
5469 */
5470 function baseSampleSize(collection, n) {
5471 var array = values(collection);
5472 return shuffleSelf(array, baseClamp(n, 0, array.length));
5473 }
5474
5475 /**
5476 * The base implementation of `_.set`.
5477 *
5478 * @private
5479 * @param {Object} object The object to modify.
5480 * @param {Array|string} path The path of the property to set.
5481 * @param {*} value The value to set.
5482 * @param {Function} [customizer] The function to customize path creation.
5483 * @returns {Object} Returns `object`.
5484 */
5485 function baseSet(object, path, value, customizer) {
5486 if (!isObject(object)) {
5487 return object;
5488 }
5489 path = castPath(path, object);
5490
5491 var index = -1,
5492 length = path.length,
5493 lastIndex = length - 1,
5494 nested = object;
5495
5496 while (nested != null && ++index < length) {
5497 var key = toKey(path[index]),
5498 newValue = value;
5499
5500 if (index != lastIndex) {
5501 var objValue = nested[key];
5502 newValue = customizer ? customizer(objValue, key, nested) : undefined;
5503 if (newValue === undefined) {
5504 newValue = isObject(objValue)
5505 ? objValue
5506 : (isIndex(path[index + 1]) ? [] : {});
5507 }
5508 }
5509 assignValue(nested, key, newValue);
5510 nested = nested[key];
5511 }
5512 return object;
5513 }
5514
5515 /**
5516 * The base implementation of `setData` without support for hot loop shorting.
5517 *
5518 * @private
5519 * @param {Function} func The function to associate metadata with.
5520 * @param {*} data The metadata.
5521 * @returns {Function} Returns `func`.
5522 */
5523 var baseSetData = !metaMap ? identity : function(func, data) {
5524 metaMap.set(func, data);
5525 return func;
5526 };
5527
5528 /**
5529 * The base implementation of `setToString` without support for hot loop shorting.
5530 *
5531 * @private
5532 * @param {Function} func The function to modify.
5533 * @param {Function} string The `toString` result.
5534 * @returns {Function} Returns `func`.
5535 */
5536 var baseSetToString = !defineProperty ? identity : function(func, string) {
5537 return defineProperty(func, 'toString', {
5538 'configurable': true,
5539 'enumerable': false,
5540 'value': constant(string),
5541 'writable': true
5542 });
5543 };
5544
5545 /**
5546 * The base implementation of `_.shuffle`.
5547 *
5548 * @private
5549 * @param {Array|Object} collection The collection to shuffle.
5550 * @returns {Array} Returns the new shuffled array.
5551 */
5552 function baseShuffle(collection) {
5553 return shuffleSelf(values(collection));
5554 }
5555
5556 /**
5557 * The base implementation of `_.slice` without an iteratee call guard.
5558 *
5559 * @private
5560 * @param {Array} array The array to slice.
5561 * @param {number} [start=0] The start position.
5562 * @param {number} [end=array.length] The end position.
5563 * @returns {Array} Returns the slice of `array`.
5564 */
5565 function baseSlice(array, start, end) {
5566 var index = -1,
5567 length = array.length;
5568
5569 if (start < 0) {
5570 start = -start > length ? 0 : (length + start);
5571 }
5572 end = end > length ? length : end;
5573 if (end < 0) {
5574 end += length;
5575 }
5576 length = start > end ? 0 : ((end - start) >>> 0);
5577 start >>>= 0;
5578
5579 var result = Array(length);
5580 while (++index < length) {
5581 result[index] = array[index + start];
5582 }
5583 return result;
5584 }
5585
5586 /**
5587 * The base implementation of `_.some` without support for iteratee shorthands.
5588 *
5589 * @private
5590 * @param {Array|Object} collection The collection to iterate over.
5591 * @param {Function} predicate The function invoked per iteration.
5592 * @returns {boolean} Returns `true` if any element passes the predicate check,
5593 * else `false`.
5594 */
5595 function baseSome(collection, predicate) {
5596 var result;
5597
5598 baseEach(collection, function(value, index, collection) {
5599 result = predicate(value, index, collection);
5600 return !result;
5601 });
5602 return !!result;
5603 }
5604
5605 /**
5606 * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
5607 * performs a binary search of `array` to determine the index at which `value`
5608 * should be inserted into `array` in order to maintain its sort order.
5609 *
5610 * @private
5611 * @param {Array} array The sorted array to inspect.
5612 * @param {*} value The value to evaluate.
5613 * @param {boolean} [retHighest] Specify returning the highest qualified index.
5614 * @returns {number} Returns the index at which `value` should be inserted
5615 * into `array`.
5616 */
5617 function baseSortedIndex(array, value, retHighest) {
5618 var low = 0,
5619 high = array == null ? low : array.length;
5620
5621 if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
5622 while (low < high) {
5623 var mid = (low + high) >>> 1,
5624 computed = array[mid];
5625
5626 if (computed !== null && !isSymbol(computed) &&
5627 (retHighest ? (computed <= value) : (computed < value))) {
5628 low = mid + 1;
5629 } else {
5630 high = mid;
5631 }
5632 }
5633 return high;
5634 }
5635 return baseSortedIndexBy(array, value, identity, retHighest);
5636 }
5637
5638 /**
5639 * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
5640 * which invokes `iteratee` for `value` and each element of `array` to compute
5641 * their sort ranking. The iteratee is invoked with one argument; (value).
5642 *
5643 * @private
5644 * @param {Array} array The sorted array to inspect.
5645 * @param {*} value The value to evaluate.
5646 * @param {Function} iteratee The iteratee invoked per element.
5647 * @param {boolean} [retHighest] Specify returning the highest qualified index.
5648 * @returns {number} Returns the index at which `value` should be inserted
5649 * into `array`.
5650 */
5651 function baseSortedIndexBy(array, value, iteratee, retHighest) {
5652 value = iteratee(value);
5653
5654 var low = 0,
5655 high = array == null ? 0 : array.length,
5656 valIsNaN = value !== value,
5657 valIsNull = value === null,
5658 valIsSymbol = isSymbol(value),
5659 valIsUndefined = value === undefined;
5660
5661 while (low < high) {
5662 var mid = nativeFloor((low + high) / 2),
5663 computed = iteratee(array[mid]),
5664 othIsDefined = computed !== undefined,
5665 othIsNull = computed === null,
5666 othIsReflexive = computed === computed,
5667 othIsSymbol = isSymbol(computed);
5668
5669 if (valIsNaN) {
5670 var setLow = retHighest || othIsReflexive;
5671 } else if (valIsUndefined) {
5672 setLow = othIsReflexive && (retHighest || othIsDefined);
5673 } else if (valIsNull) {
5674 setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
5675 } else if (valIsSymbol) {
5676 setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
5677 } else if (othIsNull || othIsSymbol) {
5678 setLow = false;
5679 } else {
5680 setLow = retHighest ? (computed <= value) : (computed < value);
5681 }
5682 if (setLow) {
5683 low = mid + 1;
5684 } else {
5685 high = mid;
5686 }
5687 }
5688 return nativeMin(high, MAX_ARRAY_INDEX);
5689 }
5690
5691 /**
5692 * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
5693 * support for iteratee shorthands.
5694 *
5695 * @private
5696 * @param {Array} array The array to inspect.
5697 * @param {Function} [iteratee] The iteratee invoked per element.
5698 * @returns {Array} Returns the new duplicate free array.
5699 */
5700 function baseSortedUniq(array, iteratee) {
5701 var index = -1,
5702 length = array.length,
5703 resIndex = 0,
5704 result = [];
5705
5706 while (++index < length) {
5707 var value = array[index],
5708 computed = iteratee ? iteratee(value) : value;
5709
5710 if (!index || !eq(computed, seen)) {
5711 var seen = computed;
5712 result[resIndex++] = value === 0 ? 0 : value;
5713 }
5714 }
5715 return result;
5716 }
5717
5718 /**
5719 * The base implementation of `_.toNumber` which doesn't ensure correct
5720 * conversions of binary, hexadecimal, or octal string values.
5721 *
5722 * @private
5723 * @param {*} value The value to process.
5724 * @returns {number} Returns the number.
5725 */
5726 function baseToNumber(value) {
5727 if (typeof value == 'number') {
5728 return value;
5729 }
5730 if (isSymbol(value)) {
5731 return NAN;
5732 }
5733 return +value;
5734 }
5735
5736 /**
5737 * The base implementation of `_.toString` which doesn't convert nullish
5738 * values to empty strings.
5739 *
5740 * @private
5741 * @param {*} value The value to process.
5742 * @returns {string} Returns the string.
5743 */
5744 function baseToString(value) {
5745 // Exit early for strings to avoid a performance hit in some environments.
5746 if (typeof value == 'string') {
5747 return value;
5748 }
5749 if (isArray(value)) {
5750 // Recursively convert values (susceptible to call stack limits).
5751 return arrayMap(value, baseToString) + '';
5752 }
5753 if (isSymbol(value)) {
5754 return symbolToString ? symbolToString.call(value) : '';
5755 }
5756 var result = (value + '');
5757 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
5758 }
5759
5760 /**
5761 * The base implementation of `_.uniqBy` without support for iteratee shorthands.
5762 *
5763 * @private
5764 * @param {Array} array The array to inspect.
5765 * @param {Function} [iteratee] The iteratee invoked per element.
5766 * @param {Function} [comparator] The comparator invoked per element.
5767 * @returns {Array} Returns the new duplicate free array.
5768 */
5769 function baseUniq(array, iteratee, comparator) {
5770 var index = -1,
5771 includes = arrayIncludes,
5772 length = array.length,
5773 isCommon = true,
5774 result = [],
5775 seen = result;
5776
5777 if (comparator) {
5778 isCommon = false;
5779 includes = arrayIncludesWith;
5780 }
5781 else if (length >= LARGE_ARRAY_SIZE) {
5782 var set = iteratee ? null : createSet(array);
5783 if (set) {
5784 return setToArray(set);
5785 }
5786 isCommon = false;
5787 includes = cacheHas;
5788 seen = new SetCache;
5789 }
5790 else {
5791 seen = iteratee ? [] : result;
5792 }
5793 outer:
5794 while (++index < length) {
5795 var value = array[index],
5796 computed = iteratee ? iteratee(value) : value;
5797
5798 value = (comparator || value !== 0) ? value : 0;
5799 if (isCommon && computed === computed) {
5800 var seenIndex = seen.length;
5801 while (seenIndex--) {
5802 if (seen[seenIndex] === computed) {
5803 continue outer;
5804 }
5805 }
5806 if (iteratee) {
5807 seen.push(computed);
5808 }
5809 result.push(value);
5810 }
5811 else if (!includes(seen, computed, comparator)) {
5812 if (seen !== result) {
5813 seen.push(computed);
5814 }
5815 result.push(value);
5816 }
5817 }
5818 return result;
5819 }
5820
5821 /**
5822 * The base implementation of `_.unset`.
5823 *
5824 * @private
5825 * @param {Object} object The object to modify.
5826 * @param {Array|string} path The property path to unset.
5827 * @returns {boolean} Returns `true` if the property is deleted, else `false`.
5828 */
5829 function baseUnset(object, path) {
5830 path = castPath(path, object);
5831 object = parent(object, path);
5832 return object == null || delete object[toKey(last(path))];
5833 }
5834
5835 /**
5836 * The base implementation of `_.update`.
5837 *
5838 * @private
5839 * @param {Object} object The object to modify.
5840 * @param {Array|string} path The path of the property to update.
5841 * @param {Function} updater The function to produce the updated value.
5842 * @param {Function} [customizer] The function to customize path creation.
5843 * @returns {Object} Returns `object`.
5844 */
5845 function baseUpdate(object, path, updater, customizer) {
5846 return baseSet(object, path, updater(baseGet(object, path)), customizer);
5847 }
5848
5849 /**
5850 * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
5851 * without support for iteratee shorthands.
5852 *
5853 * @private
5854 * @param {Array} array The array to query.
5855 * @param {Function} predicate The function invoked per iteration.
5856 * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
5857 * @param {boolean} [fromRight] Specify iterating from right to left.
5858 * @returns {Array} Returns the slice of `array`.
5859 */
5860 function baseWhile(array, predicate, isDrop, fromRight) {
5861 var length = array.length,
5862 index = fromRight ? length : -1;
5863
5864 while ((fromRight ? index-- : ++index < length) &&
5865 predicate(array[index], index, array)) {}
5866
5867 return isDrop
5868 ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
5869 : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
5870 }
5871
5872 /**
5873 * The base implementation of `wrapperValue` which returns the result of
5874 * performing a sequence of actions on the unwrapped `value`, where each
5875 * successive action is supplied the return value of the previous.
5876 *
5877 * @private
5878 * @param {*} value The unwrapped value.
5879 * @param {Array} actions Actions to perform to resolve the unwrapped value.
5880 * @returns {*} Returns the resolved value.
5881 */
5882 function baseWrapperValue(value, actions) {
5883 var result = value;
5884 if (result instanceof LazyWrapper) {
5885 result = result.value();
5886 }
5887 return arrayReduce(actions, function(result, action) {
5888 return action.func.apply(action.thisArg, arrayPush([result], action.args));
5889 }, result);
5890 }
5891
5892 /**
5893 * The base implementation of methods like `_.xor`, without support for
5894 * iteratee shorthands, that accepts an array of arrays to inspect.
5895 *
5896 * @private
5897 * @param {Array} arrays The arrays to inspect.
5898 * @param {Function} [iteratee] The iteratee invoked per element.
5899 * @param {Function} [comparator] The comparator invoked per element.
5900 * @returns {Array} Returns the new array of values.
5901 */
5902 function baseXor(arrays, iteratee, comparator) {
5903 var length = arrays.length;
5904 if (length < 2) {
5905 return length ? baseUniq(arrays[0]) : [];
5906 }
5907 var index = -1,
5908 result = Array(length);
5909
5910 while (++index < length) {
5911 var array = arrays[index],
5912 othIndex = -1;
5913
5914 while (++othIndex < length) {
5915 if (othIndex != index) {
5916 result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
5917 }
5918 }
5919 }
5920 return baseUniq(baseFlatten(result, 1), iteratee, comparator);
5921 }
5922
5923 /**
5924 * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
5925 *
5926 * @private
5927 * @param {Array} props The property identifiers.
5928 * @param {Array} values The property values.
5929 * @param {Function} assignFunc The function to assign values.
5930 * @returns {Object} Returns the new object.
5931 */
5932 function baseZipObject(props, values, assignFunc) {
5933 var index = -1,
5934 length = props.length,
5935 valsLength = values.length,
5936 result = {};
5937
5938 while (++index < length) {
5939 var value = index < valsLength ? values[index] : undefined;
5940 assignFunc(result, props[index], value);
5941 }
5942 return result;
5943 }
5944
5945 /**
5946 * Casts `value` to an empty array if it's not an array like object.
5947 *
5948 * @private
5949 * @param {*} value The value to inspect.
5950 * @returns {Array|Object} Returns the cast array-like object.
5951 */
5952 function castArrayLikeObject(value) {
5953 return isArrayLikeObject(value) ? value : [];
5954 }
5955
5956 /**
5957 * Casts `value` to `identity` if it's not a function.
5958 *
5959 * @private
5960 * @param {*} value The value to inspect.
5961 * @returns {Function} Returns cast function.
5962 */
5963 function castFunction(value) {
5964 return typeof value == 'function' ? value : identity;
5965 }
5966
5967 /**
5968 * Casts `value` to a path array if it's not one.
5969 *
5970 * @private
5971 * @param {*} value The value to inspect.
5972 * @param {Object} [object] The object to query keys on.
5973 * @returns {Array} Returns the cast property path array.
5974 */
5975 function castPath(value, object) {
5976 if (isArray(value)) {
5977 return value;
5978 }
5979 return isKey(value, object) ? [value] : stringToPath(toString(value));
5980 }
5981
5982 /**
5983 * A `baseRest` alias which can be replaced with `identity` by module
5984 * replacement plugins.
5985 *
5986 * @private
5987 * @type {Function}
5988 * @param {Function} func The function to apply a rest parameter to.
5989 * @returns {Function} Returns the new function.
5990 */
5991 var castRest = baseRest;
5992
5993 /**
5994 * Casts `array` to a slice if it's needed.
5995 *
5996 * @private
5997 * @param {Array} array The array to inspect.
5998 * @param {number} start The start position.
5999 * @param {number} [end=array.length] The end position.
6000 * @returns {Array} Returns the cast slice.
6001 */
6002 function castSlice(array, start, end) {
6003 var length = array.length;
6004 end = end === undefined ? length : end;
6005 return (!start && end >= length) ? array : baseSlice(array, start, end);
6006 }
6007
6008 /**
6009 * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
6010 *
6011 * @private
6012 * @param {number|Object} id The timer id or timeout object of the timer to clear.
6013 */
6014 var clearTimeout = ctxClearTimeout || function(id) {
6015 return root.clearTimeout(id);
6016 };
6017
6018 /**
6019 * Creates a clone of `buffer`.
6020 *
6021 * @private
6022 * @param {Buffer} buffer The buffer to clone.
6023 * @param {boolean} [isDeep] Specify a deep clone.
6024 * @returns {Buffer} Returns the cloned buffer.
6025 */
6026 function cloneBuffer(buffer, isDeep) {
6027 if (isDeep) {
6028 return buffer.slice();
6029 }
6030 var length = buffer.length,
6031 result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
6032
6033 buffer.copy(result);
6034 return result;
6035 }
6036
6037 /**
6038 * Creates a clone of `arrayBuffer`.
6039 *
6040 * @private
6041 * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
6042 * @returns {ArrayBuffer} Returns the cloned array buffer.
6043 */
6044 function cloneArrayBuffer(arrayBuffer) {
6045 var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
6046 new Uint8Array(result).set(new Uint8Array(arrayBuffer));
6047 return result;
6048 }
6049
6050 /**
6051 * Creates a clone of `dataView`.
6052 *
6053 * @private
6054 * @param {Object} dataView The data view to clone.
6055 * @param {boolean} [isDeep] Specify a deep clone.
6056 * @returns {Object} Returns the cloned data view.
6057 */
6058 function cloneDataView(dataView, isDeep) {
6059 var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
6060 return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
6061 }
6062
6063 /**
6064 * Creates a clone of `regexp`.
6065 *
6066 * @private
6067 * @param {Object} regexp The regexp to clone.
6068 * @returns {Object} Returns the cloned regexp.
6069 */
6070 function cloneRegExp(regexp) {
6071 var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
6072 result.lastIndex = regexp.lastIndex;
6073 return result;
6074 }
6075
6076 /**
6077 * Creates a clone of the `symbol` object.
6078 *
6079 * @private
6080 * @param {Object} symbol The symbol object to clone.
6081 * @returns {Object} Returns the cloned symbol object.
6082 */
6083 function cloneSymbol(symbol) {
6084 return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
6085 }
6086
6087 /**
6088 * Creates a clone of `typedArray`.
6089 *
6090 * @private
6091 * @param {Object} typedArray The typed array to clone.
6092 * @param {boolean} [isDeep] Specify a deep clone.
6093 * @returns {Object} Returns the cloned typed array.
6094 */
6095 function cloneTypedArray(typedArray, isDeep) {
6096 var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
6097 return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
6098 }
6099
6100 /**
6101 * Compares values to sort them in ascending order.
6102 *
6103 * @private
6104 * @param {*} value The value to compare.
6105 * @param {*} other The other value to compare.
6106 * @returns {number} Returns the sort order indicator for `value`.
6107 */
6108 function compareAscending(value, other) {
6109 if (value !== other) {
6110 var valIsDefined = value !== undefined,
6111 valIsNull = value === null,
6112 valIsReflexive = value === value,
6113 valIsSymbol = isSymbol(value);
6114
6115 var othIsDefined = other !== undefined,
6116 othIsNull = other === null,
6117 othIsReflexive = other === other,
6118 othIsSymbol = isSymbol(other);
6119
6120 if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
6121 (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
6122 (valIsNull && othIsDefined && othIsReflexive) ||
6123 (!valIsDefined && othIsReflexive) ||
6124 !valIsReflexive) {
6125 return 1;
6126 }
6127 if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
6128 (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
6129 (othIsNull && valIsDefined && valIsReflexive) ||
6130 (!othIsDefined && valIsReflexive) ||
6131 !othIsReflexive) {
6132 return -1;
6133 }
6134 }
6135 return 0;
6136 }
6137
6138 /**
6139 * Used by `_.orderBy` to compare multiple properties of a value to another
6140 * and stable sort them.
6141 *
6142 * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
6143 * specify an order of "desc" for descending or "asc" for ascending sort order
6144 * of corresponding values.
6145 *
6146 * @private
6147 * @param {Object} object The object to compare.
6148 * @param {Object} other The other object to compare.
6149 * @param {boolean[]|string[]} orders The order to sort by for each property.
6150 * @returns {number} Returns the sort order indicator for `object`.
6151 */
6152 function compareMultiple(object, other, orders) {
6153 var index = -1,
6154 objCriteria = object.criteria,
6155 othCriteria = other.criteria,
6156 length = objCriteria.length,
6157 ordersLength = orders.length;
6158
6159 while (++index < length) {
6160 var result = compareAscending(objCriteria[index], othCriteria[index]);
6161 if (result) {
6162 if (index >= ordersLength) {
6163 return result;
6164 }
6165 var order = orders[index];
6166 return result * (order == 'desc' ? -1 : 1);
6167 }
6168 }
6169 // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
6170 // that causes it, under certain circumstances, to provide the same value for
6171 // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
6172 // for more details.
6173 //
6174 // This also ensures a stable sort in V8 and other engines.
6175 // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
6176 return object.index - other.index;
6177 }
6178
6179 /**
6180 * Creates an array that is the composition of partially applied arguments,
6181 * placeholders, and provided arguments into a single array of arguments.
6182 *
6183 * @private
6184 * @param {Array} args The provided arguments.
6185 * @param {Array} partials The arguments to prepend to those provided.
6186 * @param {Array} holders The `partials` placeholder indexes.
6187 * @params {boolean} [isCurried] Specify composing for a curried function.
6188 * @returns {Array} Returns the new array of composed arguments.
6189 */
6190 function composeArgs(args, partials, holders, isCurried) {
6191 var argsIndex = -1,
6192 argsLength = args.length,
6193 holdersLength = holders.length,
6194 leftIndex = -1,
6195 leftLength = partials.length,
6196 rangeLength = nativeMax(argsLength - holdersLength, 0),
6197 result = Array(leftLength + rangeLength),
6198 isUncurried = !isCurried;
6199
6200 while (++leftIndex < leftLength) {
6201 result[leftIndex] = partials[leftIndex];
6202 }
6203 while (++argsIndex < holdersLength) {
6204 if (isUncurried || argsIndex < argsLength) {
6205 result[holders[argsIndex]] = args[argsIndex];
6206 }
6207 }
6208 while (rangeLength--) {
6209 result[leftIndex++] = args[argsIndex++];
6210 }
6211 return result;
6212 }
6213
6214 /**
6215 * This function is like `composeArgs` except that the arguments composition
6216 * is tailored for `_.partialRight`.
6217 *
6218 * @private
6219 * @param {Array} args The provided arguments.
6220 * @param {Array} partials The arguments to append to those provided.
6221 * @param {Array} holders The `partials` placeholder indexes.
6222 * @params {boolean} [isCurried] Specify composing for a curried function.
6223 * @returns {Array} Returns the new array of composed arguments.
6224 */
6225 function composeArgsRight(args, partials, holders, isCurried) {
6226 var argsIndex = -1,
6227 argsLength = args.length,
6228 holdersIndex = -1,
6229 holdersLength = holders.length,
6230 rightIndex = -1,
6231 rightLength = partials.length,
6232 rangeLength = nativeMax(argsLength - holdersLength, 0),
6233 result = Array(rangeLength + rightLength),
6234 isUncurried = !isCurried;
6235
6236 while (++argsIndex < rangeLength) {
6237 result[argsIndex] = args[argsIndex];
6238 }
6239 var offset = argsIndex;
6240 while (++rightIndex < rightLength) {
6241 result[offset + rightIndex] = partials[rightIndex];
6242 }
6243 while (++holdersIndex < holdersLength) {
6244 if (isUncurried || argsIndex < argsLength) {
6245 result[offset + holders[holdersIndex]] = args[argsIndex++];
6246 }
6247 }
6248 return result;
6249 }
6250
6251 /**
6252 * Copies the values of `source` to `array`.
6253 *
6254 * @private
6255 * @param {Array} source The array to copy values from.
6256 * @param {Array} [array=[]] The array to copy values to.
6257 * @returns {Array} Returns `array`.
6258 */
6259 function copyArray(source, array) {
6260 var index = -1,
6261 length = source.length;
6262
6263 array || (array = Array(length));
6264 while (++index < length) {
6265 array[index] = source[index];
6266 }
6267 return array;
6268 }
6269
6270 /**
6271 * Copies properties of `source` to `object`.
6272 *
6273 * @private
6274 * @param {Object} source The object to copy properties from.
6275 * @param {Array} props The property identifiers to copy.
6276 * @param {Object} [object={}] The object to copy properties to.
6277 * @param {Function} [customizer] The function to customize copied values.
6278 * @returns {Object} Returns `object`.
6279 */
6280 function copyObject(source, props, object, customizer) {
6281 var isNew = !object;
6282 object || (object = {});
6283
6284 var index = -1,
6285 length = props.length;
6286
6287 while (++index < length) {
6288 var key = props[index];
6289
6290 var newValue = customizer
6291 ? customizer(object[key], source[key], key, object, source)
6292 : undefined;
6293
6294 if (newValue === undefined) {
6295 newValue = source[key];
6296 }
6297 if (isNew) {
6298 baseAssignValue(object, key, newValue);
6299 } else {
6300 assignValue(object, key, newValue);
6301 }
6302 }
6303 return object;
6304 }
6305
6306 /**
6307 * Copies own symbols of `source` to `object`.
6308 *
6309 * @private
6310 * @param {Object} source The object to copy symbols from.
6311 * @param {Object} [object={}] The object to copy symbols to.
6312 * @returns {Object} Returns `object`.
6313 */
6314 function copySymbols(source, object) {
6315 return copyObject(source, getSymbols(source), object);
6316 }
6317
6318 /**
6319 * Copies own and inherited symbols of `source` to `object`.
6320 *
6321 * @private
6322 * @param {Object} source The object to copy symbols from.
6323 * @param {Object} [object={}] The object to copy symbols to.
6324 * @returns {Object} Returns `object`.
6325 */
6326 function copySymbolsIn(source, object) {
6327 return copyObject(source, getSymbolsIn(source), object);
6328 }
6329
6330 /**
6331 * Creates a function like `_.groupBy`.
6332 *
6333 * @private
6334 * @param {Function} setter The function to set accumulator values.
6335 * @param {Function} [initializer] The accumulator object initializer.
6336 * @returns {Function} Returns the new aggregator function.
6337 */
6338 function createAggregator(setter, initializer) {
6339 return function(collection, iteratee) {
6340 var func = isArray(collection) ? arrayAggregator : baseAggregator,
6341 accumulator = initializer ? initializer() : {};
6342
6343 return func(collection, setter, getIteratee(iteratee, 2), accumulator);
6344 };
6345 }
6346
6347 /**
6348 * Creates a function like `_.assign`.
6349 *
6350 * @private
6351 * @param {Function} assigner The function to assign values.
6352 * @returns {Function} Returns the new assigner function.
6353 */
6354 function createAssigner(assigner) {
6355 return baseRest(function(object, sources) {
6356 var index = -1,
6357 length = sources.length,
6358 customizer = length > 1 ? sources[length - 1] : undefined,
6359 guard = length > 2 ? sources[2] : undefined;
6360
6361 customizer = (assigner.length > 3 && typeof customizer == 'function')
6362 ? (length--, customizer)
6363 : undefined;
6364
6365 if (guard && isIterateeCall(sources[0], sources[1], guard)) {
6366 customizer = length < 3 ? undefined : customizer;
6367 length = 1;
6368 }
6369 object = Object(object);
6370 while (++index < length) {
6371 var source = sources[index];
6372 if (source) {
6373 assigner(object, source, index, customizer);
6374 }
6375 }
6376 return object;
6377 });
6378 }
6379
6380 /**
6381 * Creates a `baseEach` or `baseEachRight` function.
6382 *
6383 * @private
6384 * @param {Function} eachFunc The function to iterate over a collection.
6385 * @param {boolean} [fromRight] Specify iterating from right to left.
6386 * @returns {Function} Returns the new base function.
6387 */
6388 function createBaseEach(eachFunc, fromRight) {
6389 return function(collection, iteratee) {
6390 if (collection == null) {
6391 return collection;
6392 }
6393 if (!isArrayLike(collection)) {
6394 return eachFunc(collection, iteratee);
6395 }
6396 var length = collection.length,
6397 index = fromRight ? length : -1,
6398 iterable = Object(collection);
6399
6400 while ((fromRight ? index-- : ++index < length)) {
6401 if (iteratee(iterable[index], index, iterable) === false) {
6402 break;
6403 }
6404 }
6405 return collection;
6406 };
6407 }
6408
6409 /**
6410 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
6411 *
6412 * @private
6413 * @param {boolean} [fromRight] Specify iterating from right to left.
6414 * @returns {Function} Returns the new base function.
6415 */
6416 function createBaseFor(fromRight) {
6417 return function(object, iteratee, keysFunc) {
6418 var index = -1,
6419 iterable = Object(object),
6420 props = keysFunc(object),
6421 length = props.length;
6422
6423 while (length--) {
6424 var key = props[fromRight ? length : ++index];
6425 if (iteratee(iterable[key], key, iterable) === false) {
6426 break;
6427 }
6428 }
6429 return object;
6430 };
6431 }
6432
6433 /**
6434 * Creates a function that wraps `func` to invoke it with the optional `this`
6435 * binding of `thisArg`.
6436 *
6437 * @private
6438 * @param {Function} func The function to wrap.
6439 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
6440 * @param {*} [thisArg] The `this` binding of `func`.
6441 * @returns {Function} Returns the new wrapped function.
6442 */
6443 function createBind(func, bitmask, thisArg) {
6444 var isBind = bitmask & WRAP_BIND_FLAG,
6445 Ctor = createCtor(func);
6446
6447 function wrapper() {
6448 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
6449 return fn.apply(isBind ? thisArg : this, arguments);
6450 }
6451 return wrapper;
6452 }
6453
6454 /**
6455 * Creates a function like `_.lowerFirst`.
6456 *
6457 * @private
6458 * @param {string} methodName The name of the `String` case method to use.
6459 * @returns {Function} Returns the new case function.
6460 */
6461 function createCaseFirst(methodName) {
6462 return function(string) {
6463 string = toString(string);
6464
6465 var strSymbols = hasUnicode(string)
6466 ? stringToArray(string)
6467 : undefined;
6468
6469 var chr = strSymbols
6470 ? strSymbols[0]
6471 : string.charAt(0);
6472
6473 var trailing = strSymbols
6474 ? castSlice(strSymbols, 1).join('')
6475 : string.slice(1);
6476
6477 return chr[methodName]() + trailing;
6478 };
6479 }
6480
6481 /**
6482 * Creates a function like `_.camelCase`.
6483 *
6484 * @private
6485 * @param {Function} callback The function to combine each word.
6486 * @returns {Function} Returns the new compounder function.
6487 */
6488 function createCompounder(callback) {
6489 return function(string) {
6490 return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
6491 };
6492 }
6493
6494 /**
6495 * Creates a function that produces an instance of `Ctor` regardless of
6496 * whether it was invoked as part of a `new` expression or by `call` or `apply`.
6497 *
6498 * @private
6499 * @param {Function} Ctor The constructor to wrap.
6500 * @returns {Function} Returns the new wrapped function.
6501 */
6502 function createCtor(Ctor) {
6503 return function() {
6504 // Use a `switch` statement to work with class constructors. See
6505 // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
6506 // for more details.
6507 var args = arguments;
6508 switch (args.length) {
6509 case 0: return new Ctor;
6510 case 1: return new Ctor(args[0]);
6511 case 2: return new Ctor(args[0], args[1]);
6512 case 3: return new Ctor(args[0], args[1], args[2]);
6513 case 4: return new Ctor(args[0], args[1], args[2], args[3]);
6514 case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
6515 case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
6516 case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
6517 }
6518 var thisBinding = baseCreate(Ctor.prototype),
6519 result = Ctor.apply(thisBinding, args);
6520
6521 // Mimic the constructor's `return` behavior.
6522 // See https://es5.github.io/#x13.2.2 for more details.
6523 return isObject(result) ? result : thisBinding;
6524 };
6525 }
6526
6527 /**
6528 * Creates a function that wraps `func` to enable currying.
6529 *
6530 * @private
6531 * @param {Function} func The function to wrap.
6532 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
6533 * @param {number} arity The arity of `func`.
6534 * @returns {Function} Returns the new wrapped function.
6535 */
6536 function createCurry(func, bitmask, arity) {
6537 var Ctor = createCtor(func);
6538
6539 function wrapper() {
6540 var length = arguments.length,
6541 args = Array(length),
6542 index = length,
6543 placeholder = getHolder(wrapper);
6544
6545 while (index--) {
6546 args[index] = arguments[index];
6547 }
6548 var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
6549 ? []
6550 : replaceHolders(args, placeholder);
6551
6552 length -= holders.length;
6553 if (length < arity) {
6554 return createRecurry(
6555 func, bitmask, createHybrid, wrapper.placeholder, undefined,
6556 args, holders, undefined, undefined, arity - length);
6557 }
6558 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
6559 return apply(fn, this, args);
6560 }
6561 return wrapper;
6562 }
6563
6564 /**
6565 * Creates a `_.find` or `_.findLast` function.
6566 *
6567 * @private
6568 * @param {Function} findIndexFunc The function to find the collection index.
6569 * @returns {Function} Returns the new find function.
6570 */
6571 function createFind(findIndexFunc) {
6572 return function(collection, predicate, fromIndex) {
6573 var iterable = Object(collection);
6574 if (!isArrayLike(collection)) {
6575 var iteratee = getIteratee(predicate, 3);
6576 collection = keys(collection);
6577 predicate = function(key) { return iteratee(iterable[key], key, iterable); };
6578 }
6579 var index = findIndexFunc(collection, predicate, fromIndex);
6580 return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
6581 };
6582 }
6583
6584 /**
6585 * Creates a `_.flow` or `_.flowRight` function.
6586 *
6587 * @private
6588 * @param {boolean} [fromRight] Specify iterating from right to left.
6589 * @returns {Function} Returns the new flow function.
6590 */
6591 function createFlow(fromRight) {
6592 return flatRest(function(funcs) {
6593 var length = funcs.length,
6594 index = length,
6595 prereq = LodashWrapper.prototype.thru;
6596
6597 if (fromRight) {
6598 funcs.reverse();
6599 }
6600 while (index--) {
6601 var func = funcs[index];
6602 if (typeof func != 'function') {
6603 throw new TypeError(FUNC_ERROR_TEXT);
6604 }
6605 if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
6606 var wrapper = new LodashWrapper([], true);
6607 }
6608 }
6609 index = wrapper ? index : length;
6610 while (++index < length) {
6611 func = funcs[index];
6612
6613 var funcName = getFuncName(func),
6614 data = funcName == 'wrapper' ? getData(func) : undefined;
6615
6616 if (data && isLaziable(data[0]) &&
6617 data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
6618 !data[4].length && data[9] == 1
6619 ) {
6620 wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
6621 } else {
6622 wrapper = (func.length == 1 && isLaziable(func))
6623 ? wrapper[funcName]()
6624 : wrapper.thru(func);
6625 }
6626 }
6627 return function() {
6628 var args = arguments,
6629 value = args[0];
6630
6631 if (wrapper && args.length == 1 && isArray(value)) {
6632 return wrapper.plant(value).value();
6633 }
6634 var index = 0,
6635 result = length ? funcs[index].apply(this, args) : value;
6636
6637 while (++index < length) {
6638 result = funcs[index].call(this, result);
6639 }
6640 return result;
6641 };
6642 });
6643 }
6644
6645 /**
6646 * Creates a function that wraps `func` to invoke it with optional `this`
6647 * binding of `thisArg`, partial application, and currying.
6648 *
6649 * @private
6650 * @param {Function|string} func The function or method name to wrap.
6651 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
6652 * @param {*} [thisArg] The `this` binding of `func`.
6653 * @param {Array} [partials] The arguments to prepend to those provided to
6654 * the new function.
6655 * @param {Array} [holders] The `partials` placeholder indexes.
6656 * @param {Array} [partialsRight] The arguments to append to those provided
6657 * to the new function.
6658 * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
6659 * @param {Array} [argPos] The argument positions of the new function.
6660 * @param {number} [ary] The arity cap of `func`.
6661 * @param {number} [arity] The arity of `func`.
6662 * @returns {Function} Returns the new wrapped function.
6663 */
6664 function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
6665 var isAry = bitmask & WRAP_ARY_FLAG,
6666 isBind = bitmask & WRAP_BIND_FLAG,
6667 isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
6668 isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
6669 isFlip = bitmask & WRAP_FLIP_FLAG,
6670 Ctor = isBindKey ? undefined : createCtor(func);
6671
6672 function wrapper() {
6673 var length = arguments.length,
6674 args = Array(length),
6675 index = length;
6676
6677 while (index--) {
6678 args[index] = arguments[index];
6679 }
6680 if (isCurried) {
6681 var placeholder = getHolder(wrapper),
6682 holdersCount = countHolders(args, placeholder);
6683 }
6684 if (partials) {
6685 args = composeArgs(args, partials, holders, isCurried);
6686 }
6687 if (partialsRight) {
6688 args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
6689 }
6690 length -= holdersCount;
6691 if (isCurried && length < arity) {
6692 var newHolders = replaceHolders(args, placeholder);
6693 return createRecurry(
6694 func, bitmask, createHybrid, wrapper.placeholder, thisArg,
6695 args, newHolders, argPos, ary, arity - length
6696 );
6697 }
6698 var thisBinding = isBind ? thisArg : this,
6699 fn = isBindKey ? thisBinding[func] : func;
6700
6701 length = args.length;
6702 if (argPos) {
6703 args = reorder(args, argPos);
6704 } else if (isFlip && length > 1) {
6705 args.reverse();
6706 }
6707 if (isAry && ary < length) {
6708 args.length = ary;
6709 }
6710 if (this && this !== root && this instanceof wrapper) {
6711 fn = Ctor || createCtor(fn);
6712 }
6713 return fn.apply(thisBinding, args);
6714 }
6715 return wrapper;
6716 }
6717
6718 /**
6719 * Creates a function like `_.invertBy`.
6720 *
6721 * @private
6722 * @param {Function} setter The function to set accumulator values.
6723 * @param {Function} toIteratee The function to resolve iteratees.
6724 * @returns {Function} Returns the new inverter function.
6725 */
6726 function createInverter(setter, toIteratee) {
6727 return function(object, iteratee) {
6728 return baseInverter(object, setter, toIteratee(iteratee), {});
6729 };
6730 }
6731
6732 /**
6733 * Creates a function that performs a mathematical operation on two values.
6734 *
6735 * @private
6736 * @param {Function} operator The function to perform the operation.
6737 * @param {number} [defaultValue] The value used for `undefined` arguments.
6738 * @returns {Function} Returns the new mathematical operation function.
6739 */
6740 function createMathOperation(operator, defaultValue) {
6741 return function(value, other) {
6742 var result;
6743 if (value === undefined && other === undefined) {
6744 return defaultValue;
6745 }
6746 if (value !== undefined) {
6747 result = value;
6748 }
6749 if (other !== undefined) {
6750 if (result === undefined) {
6751 return other;
6752 }
6753 if (typeof value == 'string' || typeof other == 'string') {
6754 value = baseToString(value);
6755 other = baseToString(other);
6756 } else {
6757 value = baseToNumber(value);
6758 other = baseToNumber(other);
6759 }
6760 result = operator(value, other);
6761 }
6762 return result;
6763 };
6764 }
6765
6766 /**
6767 * Creates a function like `_.over`.
6768 *
6769 * @private
6770 * @param {Function} arrayFunc The function to iterate over iteratees.
6771 * @returns {Function} Returns the new over function.
6772 */
6773 function createOver(arrayFunc) {
6774 return flatRest(function(iteratees) {
6775 iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
6776 return baseRest(function(args) {
6777 var thisArg = this;
6778 return arrayFunc(iteratees, function(iteratee) {
6779 return apply(iteratee, thisArg, args);
6780 });
6781 });
6782 });
6783 }
6784
6785 /**
6786 * Creates the padding for `string` based on `length`. The `chars` string
6787 * is truncated if the number of characters exceeds `length`.
6788 *
6789 * @private
6790 * @param {number} length The padding length.
6791 * @param {string} [chars=' '] The string used as padding.
6792 * @returns {string} Returns the padding for `string`.
6793 */
6794 function createPadding(length, chars) {
6795 chars = chars === undefined ? ' ' : baseToString(chars);
6796
6797 var charsLength = chars.length;
6798 if (charsLength < 2) {
6799 return charsLength ? baseRepeat(chars, length) : chars;
6800 }
6801 var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
6802 return hasUnicode(chars)
6803 ? castSlice(stringToArray(result), 0, length).join('')
6804 : result.slice(0, length);
6805 }
6806
6807 /**
6808 * Creates a function that wraps `func` to invoke it with the `this` binding
6809 * of `thisArg` and `partials` prepended to the arguments it receives.
6810 *
6811 * @private
6812 * @param {Function} func The function to wrap.
6813 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
6814 * @param {*} thisArg The `this` binding of `func`.
6815 * @param {Array} partials The arguments to prepend to those provided to
6816 * the new function.
6817 * @returns {Function} Returns the new wrapped function.
6818 */
6819 function createPartial(func, bitmask, thisArg, partials) {
6820 var isBind = bitmask & WRAP_BIND_FLAG,
6821 Ctor = createCtor(func);
6822
6823 function wrapper() {
6824 var argsIndex = -1,
6825 argsLength = arguments.length,
6826 leftIndex = -1,
6827 leftLength = partials.length,
6828 args = Array(leftLength + argsLength),
6829 fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
6830
6831 while (++leftIndex < leftLength) {
6832 args[leftIndex] = partials[leftIndex];
6833 }
6834 while (argsLength--) {
6835 args[leftIndex++] = arguments[++argsIndex];
6836 }
6837 return apply(fn, isBind ? thisArg : this, args);
6838 }
6839 return wrapper;
6840 }
6841
6842 /**
6843 * Creates a `_.range` or `_.rangeRight` function.
6844 *
6845 * @private
6846 * @param {boolean} [fromRight] Specify iterating from right to left.
6847 * @returns {Function} Returns the new range function.
6848 */
6849 function createRange(fromRight) {
6850 return function(start, end, step) {
6851 if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
6852 end = step = undefined;
6853 }
6854 // Ensure the sign of `-0` is preserved.
6855 start = toFinite(start);
6856 if (end === undefined) {
6857 end = start;
6858 start = 0;
6859 } else {
6860 end = toFinite(end);
6861 }
6862 step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
6863 return baseRange(start, end, step, fromRight);
6864 };
6865 }
6866
6867 /**
6868 * Creates a function that performs a relational operation on two values.
6869 *
6870 * @private
6871 * @param {Function} operator The function to perform the operation.
6872 * @returns {Function} Returns the new relational operation function.
6873 */
6874 function createRelationalOperation(operator) {
6875 return function(value, other) {
6876 if (!(typeof value == 'string' && typeof other == 'string')) {
6877 value = toNumber(value);
6878 other = toNumber(other);
6879 }
6880 return operator(value, other);
6881 };
6882 }
6883
6884 /**
6885 * Creates a function that wraps `func` to continue currying.
6886 *
6887 * @private
6888 * @param {Function} func The function to wrap.
6889 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
6890 * @param {Function} wrapFunc The function to create the `func` wrapper.
6891 * @param {*} placeholder The placeholder value.
6892 * @param {*} [thisArg] The `this` binding of `func`.
6893 * @param {Array} [partials] The arguments to prepend to those provided to
6894 * the new function.
6895 * @param {Array} [holders] The `partials` placeholder indexes.
6896 * @param {Array} [argPos] The argument positions of the new function.
6897 * @param {number} [ary] The arity cap of `func`.
6898 * @param {number} [arity] The arity of `func`.
6899 * @returns {Function} Returns the new wrapped function.
6900 */
6901 function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
6902 var isCurry = bitmask & WRAP_CURRY_FLAG,
6903 newHolders = isCurry ? holders : undefined,
6904 newHoldersRight = isCurry ? undefined : holders,
6905 newPartials = isCurry ? partials : undefined,
6906 newPartialsRight = isCurry ? undefined : partials;
6907
6908 bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
6909 bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
6910
6911 if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
6912 bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
6913 }
6914 var newData = [
6915 func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
6916 newHoldersRight, argPos, ary, arity
6917 ];
6918
6919 var result = wrapFunc.apply(undefined, newData);
6920 if (isLaziable(func)) {
6921 setData(result, newData);
6922 }
6923 result.placeholder = placeholder;
6924 return setWrapToString(result, func, bitmask);
6925 }
6926
6927 /**
6928 * Creates a function like `_.round`.
6929 *
6930 * @private
6931 * @param {string} methodName The name of the `Math` method to use when rounding.
6932 * @returns {Function} Returns the new round function.
6933 */
6934 function createRound(methodName) {
6935 var func = Math[methodName];
6936 return function(number, precision) {
6937 number = toNumber(number);
6938 precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
6939 if (precision) {
6940 // Shift with exponential notation to avoid floating-point issues.
6941 // See [MDN](https://mdn.io/round#Examples) for more details.
6942 var pair = (toString(number) + 'e').split('e'),
6943 value = func(pair[0] + 'e' + (+pair[1] + precision));
6944
6945 pair = (toString(value) + 'e').split('e');
6946 return +(pair[0] + 'e' + (+pair[1] - precision));
6947 }
6948 return func(number);
6949 };
6950 }
6951
6952 /**
6953 * Creates a set object of `values`.
6954 *
6955 * @private
6956 * @param {Array} values The values to add to the set.
6957 * @returns {Object} Returns the new set.
6958 */
6959 var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
6960 return new Set(values);
6961 };
6962
6963 /**
6964 * Creates a `_.toPairs` or `_.toPairsIn` function.
6965 *
6966 * @private
6967 * @param {Function} keysFunc The function to get the keys of a given object.
6968 * @returns {Function} Returns the new pairs function.
6969 */
6970 function createToPairs(keysFunc) {
6971 return function(object) {
6972 var tag = getTag(object);
6973 if (tag == mapTag) {
6974 return mapToArray(object);
6975 }
6976 if (tag == setTag) {
6977 return setToPairs(object);
6978 }
6979 return baseToPairs(object, keysFunc(object));
6980 };
6981 }
6982
6983 /**
6984 * Creates a function that either curries or invokes `func` with optional
6985 * `this` binding and partially applied arguments.
6986 *
6987 * @private
6988 * @param {Function|string} func The function or method name to wrap.
6989 * @param {number} bitmask The bitmask flags.
6990 * 1 - `_.bind`
6991 * 2 - `_.bindKey`
6992 * 4 - `_.curry` or `_.curryRight` of a bound function
6993 * 8 - `_.curry`
6994 * 16 - `_.curryRight`
6995 * 32 - `_.partial`
6996 * 64 - `_.partialRight`
6997 * 128 - `_.rearg`
6998 * 256 - `_.ary`
6999 * 512 - `_.flip`
7000 * @param {*} [thisArg] The `this` binding of `func`.
7001 * @param {Array} [partials] The arguments to be partially applied.
7002 * @param {Array} [holders] The `partials` placeholder indexes.
7003 * @param {Array} [argPos] The argument positions of the new function.
7004 * @param {number} [ary] The arity cap of `func`.
7005 * @param {number} [arity] The arity of `func`.
7006 * @returns {Function} Returns the new wrapped function.
7007 */
7008 function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
7009 var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
7010 if (!isBindKey && typeof func != 'function') {
7011 throw new TypeError(FUNC_ERROR_TEXT);
7012 }
7013 var length = partials ? partials.length : 0;
7014 if (!length) {
7015 bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
7016 partials = holders = undefined;
7017 }
7018 ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
7019 arity = arity === undefined ? arity : toInteger(arity);
7020 length -= holders ? holders.length : 0;
7021
7022 if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
7023 var partialsRight = partials,
7024 holdersRight = holders;
7025
7026 partials = holders = undefined;
7027 }
7028 var data = isBindKey ? undefined : getData(func);
7029
7030 var newData = [
7031 func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
7032 argPos, ary, arity
7033 ];
7034
7035 if (data) {
7036 mergeData(newData, data);
7037 }
7038 func = newData[0];
7039 bitmask = newData[1];
7040 thisArg = newData[2];
7041 partials = newData[3];
7042 holders = newData[4];
7043 arity = newData[9] = newData[9] === undefined
7044 ? (isBindKey ? 0 : func.length)
7045 : nativeMax(newData[9] - length, 0);
7046
7047 if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
7048 bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
7049 }
7050 if (!bitmask || bitmask == WRAP_BIND_FLAG) {
7051 var result = createBind(func, bitmask, thisArg);
7052 } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
7053 result = createCurry(func, bitmask, arity);
7054 } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
7055 result = createPartial(func, bitmask, thisArg, partials);
7056 } else {
7057 result = createHybrid.apply(undefined, newData);
7058 }
7059 var setter = data ? baseSetData : setData;
7060 return setWrapToString(setter(result, newData), func, bitmask);
7061 }
7062
7063 /**
7064 * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
7065 * of source objects to the destination object for all destination properties
7066 * that resolve to `undefined`.
7067 *
7068 * @private
7069 * @param {*} objValue The destination value.
7070 * @param {*} srcValue The source value.
7071 * @param {string} key The key of the property to assign.
7072 * @param {Object} object The parent object of `objValue`.
7073 * @returns {*} Returns the value to assign.
7074 */
7075 function customDefaultsAssignIn(objValue, srcValue, key, object) {
7076 if (objValue === undefined ||
7077 (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
7078 return srcValue;
7079 }
7080 return objValue;
7081 }
7082
7083 /**
7084 * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
7085 * objects into destination objects that are passed thru.
7086 *
7087 * @private
7088 * @param {*} objValue The destination value.
7089 * @param {*} srcValue The source value.
7090 * @param {string} key The key of the property to merge.
7091 * @param {Object} object The parent object of `objValue`.
7092 * @param {Object} source The parent object of `srcValue`.
7093 * @param {Object} [stack] Tracks traversed source values and their merged
7094 * counterparts.
7095 * @returns {*} Returns the value to assign.
7096 */
7097 function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
7098 if (isObject(objValue) && isObject(srcValue)) {
7099 // Recursively merge objects and arrays (susceptible to call stack limits).
7100 stack.set(srcValue, objValue);
7101 baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
7102 stack['delete'](srcValue);
7103 }
7104 return objValue;
7105 }
7106
7107 /**
7108 * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
7109 * objects.
7110 *
7111 * @private
7112 * @param {*} value The value to inspect.
7113 * @param {string} key The key of the property to inspect.
7114 * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
7115 */
7116 function customOmitClone(value) {
7117 return isPlainObject(value) ? undefined : value;
7118 }
7119
7120 /**
7121 * A specialized version of `baseIsEqualDeep` for arrays with support for
7122 * partial deep comparisons.
7123 *
7124 * @private
7125 * @param {Array} array The array to compare.
7126 * @param {Array} other The other array to compare.
7127 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
7128 * @param {Function} customizer The function to customize comparisons.
7129 * @param {Function} equalFunc The function to determine equivalents of values.
7130 * @param {Object} stack Tracks traversed `array` and `other` objects.
7131 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
7132 */
7133 function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
7134 var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
7135 arrLength = array.length,
7136 othLength = other.length;
7137
7138 if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
7139 return false;
7140 }
7141 // Assume cyclic values are equal.
7142 var stacked = stack.get(array);
7143 if (stacked && stack.get(other)) {
7144 return stacked == other;
7145 }
7146 var index = -1,
7147 result = true,
7148 seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
7149
7150 stack.set(array, other);
7151 stack.set(other, array);
7152
7153 // Ignore non-index properties.
7154 while (++index < arrLength) {
7155 var arrValue = array[index],
7156 othValue = other[index];
7157
7158 if (customizer) {
7159 var compared = isPartial
7160 ? customizer(othValue, arrValue, index, other, array, stack)
7161 : customizer(arrValue, othValue, index, array, other, stack);
7162 }
7163 if (compared !== undefined) {
7164 if (compared) {
7165 continue;
7166 }
7167 result = false;
7168 break;
7169 }
7170 // Recursively compare arrays (susceptible to call stack limits).
7171 if (seen) {
7172 if (!arraySome(other, function(othValue, othIndex) {
7173 if (!cacheHas(seen, othIndex) &&
7174 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
7175 return seen.push(othIndex);
7176 }
7177 })) {
7178 result = false;
7179 break;
7180 }
7181 } else if (!(
7182 arrValue === othValue ||
7183 equalFunc(arrValue, othValue, bitmask, customizer, stack)
7184 )) {
7185 result = false;
7186 break;
7187 }
7188 }
7189 stack['delete'](array);
7190 stack['delete'](other);
7191 return result;
7192 }
7193
7194 /**
7195 * A specialized version of `baseIsEqualDeep` for comparing objects of
7196 * the same `toStringTag`.
7197 *
7198 * **Note:** This function only supports comparing values with tags of
7199 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
7200 *
7201 * @private
7202 * @param {Object} object The object to compare.
7203 * @param {Object} other The other object to compare.
7204 * @param {string} tag The `toStringTag` of the objects to compare.
7205 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
7206 * @param {Function} customizer The function to customize comparisons.
7207 * @param {Function} equalFunc The function to determine equivalents of values.
7208 * @param {Object} stack Tracks traversed `object` and `other` objects.
7209 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
7210 */
7211 function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
7212 switch (tag) {
7213 case dataViewTag:
7214 if ((object.byteLength != other.byteLength) ||
7215 (object.byteOffset != other.byteOffset)) {
7216 return false;
7217 }
7218 object = object.buffer;
7219 other = other.buffer;
7220
7221 case arrayBufferTag:
7222 if ((object.byteLength != other.byteLength) ||
7223 !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
7224 return false;
7225 }
7226 return true;
7227
7228 case boolTag:
7229 case dateTag:
7230 case numberTag:
7231 // Coerce booleans to `1` or `0` and dates to milliseconds.
7232 // Invalid dates are coerced to `NaN`.
7233 return eq(+object, +other);
7234
7235 case errorTag:
7236 return object.name == other.name && object.message == other.message;
7237
7238 case regexpTag:
7239 case stringTag:
7240 // Coerce regexes to strings and treat strings, primitives and objects,
7241 // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
7242 // for more details.
7243 return object == (other + '');
7244
7245 case mapTag:
7246 var convert = mapToArray;
7247
7248 case setTag:
7249 var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
7250 convert || (convert = setToArray);
7251
7252 if (object.size != other.size && !isPartial) {
7253 return false;
7254 }
7255 // Assume cyclic values are equal.
7256 var stacked = stack.get(object);
7257 if (stacked) {
7258 return stacked == other;
7259 }
7260 bitmask |= COMPARE_UNORDERED_FLAG;
7261
7262 // Recursively compare objects (susceptible to call stack limits).
7263 stack.set(object, other);
7264 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
7265 stack['delete'](object);
7266 return result;
7267
7268 case symbolTag:
7269 if (symbolValueOf) {
7270 return symbolValueOf.call(object) == symbolValueOf.call(other);
7271 }
7272 }
7273 return false;
7274 }
7275
7276 /**
7277 * A specialized version of `baseIsEqualDeep` for objects with support for
7278 * partial deep comparisons.
7279 *
7280 * @private
7281 * @param {Object} object The object to compare.
7282 * @param {Object} other The other object to compare.
7283 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
7284 * @param {Function} customizer The function to customize comparisons.
7285 * @param {Function} equalFunc The function to determine equivalents of values.
7286 * @param {Object} stack Tracks traversed `object` and `other` objects.
7287 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
7288 */
7289 function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
7290 var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
7291 objProps = getAllKeys(object),
7292 objLength = objProps.length,
7293 othProps = getAllKeys(other),
7294 othLength = othProps.length;
7295
7296 if (objLength != othLength && !isPartial) {
7297 return false;
7298 }
7299 var index = objLength;
7300 while (index--) {
7301 var key = objProps[index];
7302 if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
7303 return false;
7304 }
7305 }
7306 // Assume cyclic values are equal.
7307 var stacked = stack.get(object);
7308 if (stacked && stack.get(other)) {
7309 return stacked == other;
7310 }
7311 var result = true;
7312 stack.set(object, other);
7313 stack.set(other, object);
7314
7315 var skipCtor = isPartial;
7316 while (++index < objLength) {
7317 key = objProps[index];
7318 var objValue = object[key],
7319 othValue = other[key];
7320
7321 if (customizer) {
7322 var compared = isPartial
7323 ? customizer(othValue, objValue, key, other, object, stack)
7324 : customizer(objValue, othValue, key, object, other, stack);
7325 }
7326 // Recursively compare objects (susceptible to call stack limits).
7327 if (!(compared === undefined
7328 ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
7329 : compared
7330 )) {
7331 result = false;
7332 break;
7333 }
7334 skipCtor || (skipCtor = key == 'constructor');
7335 }
7336 if (result && !skipCtor) {
7337 var objCtor = object.constructor,
7338 othCtor = other.constructor;
7339
7340 // Non `Object` object instances with different constructors are not equal.
7341 if (objCtor != othCtor &&
7342 ('constructor' in object && 'constructor' in other) &&
7343 !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
7344 typeof othCtor == 'function' && othCtor instanceof othCtor)) {
7345 result = false;
7346 }
7347 }
7348 stack['delete'](object);
7349 stack['delete'](other);
7350 return result;
7351 }
7352
7353 /**
7354 * A specialized version of `baseRest` which flattens the rest array.
7355 *
7356 * @private
7357 * @param {Function} func The function to apply a rest parameter to.
7358 * @returns {Function} Returns the new function.
7359 */
7360 function flatRest(func) {
7361 return setToString(overRest(func, undefined, flatten), func + '');
7362 }
7363
7364 /**
7365 * Creates an array of own enumerable property names and symbols of `object`.
7366 *
7367 * @private
7368 * @param {Object} object The object to query.
7369 * @returns {Array} Returns the array of property names and symbols.
7370 */
7371 function getAllKeys(object) {
7372 return baseGetAllKeys(object, keys, getSymbols);
7373 }
7374
7375 /**
7376 * Creates an array of own and inherited enumerable property names and
7377 * symbols of `object`.
7378 *
7379 * @private
7380 * @param {Object} object The object to query.
7381 * @returns {Array} Returns the array of property names and symbols.
7382 */
7383 function getAllKeysIn(object) {
7384 return baseGetAllKeys(object, keysIn, getSymbolsIn);
7385 }
7386
7387 /**
7388 * Gets metadata for `func`.
7389 *
7390 * @private
7391 * @param {Function} func The function to query.
7392 * @returns {*} Returns the metadata for `func`.
7393 */
7394 var getData = !metaMap ? noop : function(func) {
7395 return metaMap.get(func);
7396 };
7397
7398 /**
7399 * Gets the name of `func`.
7400 *
7401 * @private
7402 * @param {Function} func The function to query.
7403 * @returns {string} Returns the function name.
7404 */
7405 function getFuncName(func) {
7406 var result = (func.name + ''),
7407 array = realNames[result],
7408 length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7409
7410 while (length--) {
7411 var data = array[length],
7412 otherFunc = data.func;
7413 if (otherFunc == null || otherFunc == func) {
7414 return data.name;
7415 }
7416 }
7417 return result;
7418 }
7419
7420 /**
7421 * Gets the argument placeholder value for `func`.
7422 *
7423 * @private
7424 * @param {Function} func The function to inspect.
7425 * @returns {*} Returns the placeholder value.
7426 */
7427 function getHolder(func) {
7428 var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
7429 return object.placeholder;
7430 }
7431
7432 /**
7433 * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
7434 * this function returns the custom method, otherwise it returns `baseIteratee`.
7435 * If arguments are provided, the chosen function is invoked with them and
7436 * its result is returned.
7437 *
7438 * @private
7439 * @param {*} [value] The value to convert to an iteratee.
7440 * @param {number} [arity] The arity of the created iteratee.
7441 * @returns {Function} Returns the chosen function or its result.
7442 */
7443 function getIteratee() {
7444 var result = lodash.iteratee || iteratee;
7445 result = result === iteratee ? baseIteratee : result;
7446 return arguments.length ? result(arguments[0], arguments[1]) : result;
7447 }
7448
7449 /**
7450 * Gets the data for `map`.
7451 *
7452 * @private
7453 * @param {Object} map The map to query.
7454 * @param {string} key The reference key.
7455 * @returns {*} Returns the map data.
7456 */
7457 function getMapData(map, key) {
7458 var data = map.__data__;
7459 return isKeyable(key)
7460 ? data[typeof key == 'string' ? 'string' : 'hash']
7461 : data.map;
7462 }
7463
7464 /**
7465 * Gets the property names, values, and compare flags of `object`.
7466 *
7467 * @private
7468 * @param {Object} object The object to query.
7469 * @returns {Array} Returns the match data of `object`.
7470 */
7471 function getMatchData(object) {
7472 var result = keys(object),
7473 length = result.length;
7474
7475 while (length--) {
7476 var key = result[length],
7477 value = object[key];
7478
7479 result[length] = [key, value, isStrictComparable(value)];
7480 }
7481 return result;
7482 }
7483
7484 /**
7485 * Gets the native function at `key` of `object`.
7486 *
7487 * @private
7488 * @param {Object} object The object to query.
7489 * @param {string} key The key of the method to get.
7490 * @returns {*} Returns the function if it's native, else `undefined`.
7491 */
7492 function getNative(object, key) {
7493 var value = getValue(object, key);
7494 return baseIsNative(value) ? value : undefined;
7495 }
7496
7497 /**
7498 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
7499 *
7500 * @private
7501 * @param {*} value The value to query.
7502 * @returns {string} Returns the raw `toStringTag`.
7503 */
7504 function getRawTag(value) {
7505 var isOwn = hasOwnProperty.call(value, symToStringTag),
7506 tag = value[symToStringTag];
7507
7508 try {
7509 value[symToStringTag] = undefined;
7510 var unmasked = true;
7511 } catch (e) {}
7512
7513 var result = nativeObjectToString.call(value);
7514 if (unmasked) {
7515 if (isOwn) {
7516 value[symToStringTag] = tag;
7517 } else {
7518 delete value[symToStringTag];
7519 }
7520 }
7521 return result;
7522 }
7523
7524 /**
7525 * Creates an array of the own enumerable symbols of `object`.
7526 *
7527 * @private
7528 * @param {Object} object The object to query.
7529 * @returns {Array} Returns the array of symbols.
7530 */
7531 var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
7532 if (object == null) {
7533 return [];
7534 }
7535 object = Object(object);
7536 return arrayFilter(nativeGetSymbols(object), function(symbol) {
7537 return propertyIsEnumerable.call(object, symbol);
7538 });
7539 };
7540
7541 /**
7542 * Creates an array of the own and inherited enumerable symbols of `object`.
7543 *
7544 * @private
7545 * @param {Object} object The object to query.
7546 * @returns {Array} Returns the array of symbols.
7547 */
7548 var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
7549 var result = [];
7550 while (object) {
7551 arrayPush(result, getSymbols(object));
7552 object = getPrototype(object);
7553 }
7554 return result;
7555 };
7556
7557 /**
7558 * Gets the `toStringTag` of `value`.
7559 *
7560 * @private
7561 * @param {*} value The value to query.
7562 * @returns {string} Returns the `toStringTag`.
7563 */
7564 var getTag = baseGetTag;
7565
7566 // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
7567 if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
7568 (Map && getTag(new Map) != mapTag) ||
7569 (Promise && getTag(Promise.resolve()) != promiseTag) ||
7570 (Set && getTag(new Set) != setTag) ||
7571 (WeakMap && getTag(new WeakMap) != weakMapTag)) {
7572 getTag = function(value) {
7573 var result = baseGetTag(value),
7574 Ctor = result == objectTag ? value.constructor : undefined,
7575 ctorString = Ctor ? toSource(Ctor) : '';
7576
7577 if (ctorString) {
7578 switch (ctorString) {
7579 case dataViewCtorString: return dataViewTag;
7580 case mapCtorString: return mapTag;
7581 case promiseCtorString: return promiseTag;
7582 case setCtorString: return setTag;
7583 case weakMapCtorString: return weakMapTag;
7584 }
7585 }
7586 return result;
7587 };
7588 }
7589
7590 /**
7591 * Gets the view, applying any `transforms` to the `start` and `end` positions.
7592 *
7593 * @private
7594 * @param {number} start The start of the view.
7595 * @param {number} end The end of the view.
7596 * @param {Array} transforms The transformations to apply to the view.
7597 * @returns {Object} Returns an object containing the `start` and `end`
7598 * positions of the view.
7599 */
7600 function getView(start, end, transforms) {
7601 var index = -1,
7602 length = transforms.length;
7603
7604 while (++index < length) {
7605 var data = transforms[index],
7606 size = data.size;
7607
7608 switch (data.type) {
7609 case 'drop': start += size; break;
7610 case 'dropRight': end -= size; break;
7611 case 'take': end = nativeMin(end, start + size); break;
7612 case 'takeRight': start = nativeMax(start, end - size); break;
7613 }
7614 }
7615 return { 'start': start, 'end': end };
7616 }
7617
7618 /**
7619 * Extracts wrapper details from the `source` body comment.
7620 *
7621 * @private
7622 * @param {string} source The source to inspect.
7623 * @returns {Array} Returns the wrapper details.
7624 */
7625 function getWrapDetails(source) {
7626 var match = source.match(reWrapDetails);
7627 return match ? match[1].split(reSplitDetails) : [];
7628 }
7629
7630 /**
7631 * Checks if `path` exists on `object`.
7632 *
7633 * @private
7634 * @param {Object} object The object to query.
7635 * @param {Array|string} path The path to check.
7636 * @param {Function} hasFunc The function to check properties.
7637 * @returns {boolean} Returns `true` if `path` exists, else `false`.
7638 */
7639 function hasPath(object, path, hasFunc) {
7640 path = castPath(path, object);
7641
7642 var index = -1,
7643 length = path.length,
7644 result = false;
7645
7646 while (++index < length) {
7647 var key = toKey(path[index]);
7648 if (!(result = object != null && hasFunc(object, key))) {
7649 break;
7650 }
7651 object = object[key];
7652 }
7653 if (result || ++index != length) {
7654 return result;
7655 }
7656 length = object == null ? 0 : object.length;
7657 return !!length && isLength(length) && isIndex(key, length) &&
7658 (isArray(object) || isArguments(object));
7659 }
7660
7661 /**
7662 * Initializes an array clone.
7663 *
7664 * @private
7665 * @param {Array} array The array to clone.
7666 * @returns {Array} Returns the initialized clone.
7667 */
7668 function initCloneArray(array) {
7669 var length = array.length,
7670 result = new array.constructor(length);
7671
7672 // Add properties assigned by `RegExp#exec`.
7673 if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
7674 result.index = array.index;
7675 result.input = array.input;
7676 }
7677 return result;
7678 }
7679
7680 /**
7681 * Initializes an object clone.
7682 *
7683 * @private
7684 * @param {Object} object The object to clone.
7685 * @returns {Object} Returns the initialized clone.
7686 */
7687 function initCloneObject(object) {
7688 return (typeof object.constructor == 'function' && !isPrototype(object))
7689 ? baseCreate(getPrototype(object))
7690 : {};
7691 }
7692
7693 /**
7694 * Initializes an object clone based on its `toStringTag`.
7695 *
7696 * **Note:** This function only supports cloning values with tags of
7697 * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
7698 *
7699 * @private
7700 * @param {Object} object The object to clone.
7701 * @param {string} tag The `toStringTag` of the object to clone.
7702 * @param {boolean} [isDeep] Specify a deep clone.
7703 * @returns {Object} Returns the initialized clone.
7704 */
7705 function initCloneByTag(object, tag, isDeep) {
7706 var Ctor = object.constructor;
7707 switch (tag) {
7708 case arrayBufferTag:
7709 return cloneArrayBuffer(object);
7710
7711 case boolTag:
7712 case dateTag:
7713 return new Ctor(+object);
7714
7715 case dataViewTag:
7716 return cloneDataView(object, isDeep);
7717
7718 case float32Tag: case float64Tag:
7719 case int8Tag: case int16Tag: case int32Tag:
7720 case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
7721 return cloneTypedArray(object, isDeep);
7722
7723 case mapTag:
7724 return new Ctor;
7725
7726 case numberTag:
7727 case stringTag:
7728 return new Ctor(object);
7729
7730 case regexpTag:
7731 return cloneRegExp(object);
7732
7733 case setTag:
7734 return new Ctor;
7735
7736 case symbolTag:
7737 return cloneSymbol(object);
7738 }
7739 }
7740
7741 /**
7742 * Inserts wrapper `details` in a comment at the top of the `source` body.
7743 *
7744 * @private
7745 * @param {string} source The source to modify.
7746 * @returns {Array} details The details to insert.
7747 * @returns {string} Returns the modified source.
7748 */
7749 function insertWrapDetails(source, details) {
7750 var length = details.length;
7751 if (!length) {
7752 return source;
7753 }
7754 var lastIndex = length - 1;
7755 details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
7756 details = details.join(length > 2 ? ', ' : ' ');
7757 return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
7758 }
7759
7760 /**
7761 * Checks if `value` is a flattenable `arguments` object or array.
7762 *
7763 * @private
7764 * @param {*} value The value to check.
7765 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
7766 */
7767 function isFlattenable(value) {
7768 return isArray(value) || isArguments(value) ||
7769 !!(spreadableSymbol && value && value[spreadableSymbol]);
7770 }
7771
7772 /**
7773 * Checks if `value` is a valid array-like index.
7774 *
7775 * @private
7776 * @param {*} value The value to check.
7777 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
7778 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
7779 */
7780 function isIndex(value, length) {
7781 var type = typeof value;
7782 length = length == null ? MAX_SAFE_INTEGER : length;
7783
7784 return !!length &&
7785 (type == 'number' ||
7786 (type != 'symbol' && reIsUint.test(value))) &&
7787 (value > -1 && value % 1 == 0 && value < length);
7788 }
7789
7790 /**
7791 * Checks if the given arguments are from an iteratee call.
7792 *
7793 * @private
7794 * @param {*} value The potential iteratee value argument.
7795 * @param {*} index The potential iteratee index or key argument.
7796 * @param {*} object The potential iteratee object argument.
7797 * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
7798 * else `false`.
7799 */
7800 function isIterateeCall(value, index, object) {
7801 if (!isObject(object)) {
7802 return false;
7803 }
7804 var type = typeof index;
7805 if (type == 'number'
7806 ? (isArrayLike(object) && isIndex(index, object.length))
7807 : (type == 'string' && index in object)
7808 ) {
7809 return eq(object[index], value);
7810 }
7811 return false;
7812 }
7813
7814 /**
7815 * Checks if `value` is a property name and not a property path.
7816 *
7817 * @private
7818 * @param {*} value The value to check.
7819 * @param {Object} [object] The object to query keys on.
7820 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
7821 */
7822 function isKey(value, object) {
7823 if (isArray(value)) {
7824 return false;
7825 }
7826 var type = typeof value;
7827 if (type == 'number' || type == 'symbol' || type == 'boolean' ||
7828 value == null || isSymbol(value)) {
7829 return true;
7830 }
7831 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
7832 (object != null && value in Object(object));
7833 }
7834
7835 /**
7836 * Checks if `value` is suitable for use as unique object key.
7837 *
7838 * @private
7839 * @param {*} value The value to check.
7840 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
7841 */
7842 function isKeyable(value) {
7843 var type = typeof value;
7844 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
7845 ? (value !== '__proto__')
7846 : (value === null);
7847 }
7848
7849 /**
7850 * Checks if `func` has a lazy counterpart.
7851 *
7852 * @private
7853 * @param {Function} func The function to check.
7854 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
7855 * else `false`.
7856 */
7857 function isLaziable(func) {
7858 var funcName = getFuncName(func),
7859 other = lodash[funcName];
7860
7861 if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
7862 return false;
7863 }
7864 if (func === other) {
7865 return true;
7866 }
7867 var data = getData(other);
7868 return !!data && func === data[0];
7869 }
7870
7871 /**
7872 * Checks if `func` has its source masked.
7873 *
7874 * @private
7875 * @param {Function} func The function to check.
7876 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
7877 */
7878 function isMasked(func) {
7879 return !!maskSrcKey && (maskSrcKey in func);
7880 }
7881
7882 /**
7883 * Checks if `func` is capable of being masked.
7884 *
7885 * @private
7886 * @param {*} value The value to check.
7887 * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
7888 */
7889 var isMaskable = coreJsData ? isFunction : stubFalse;
7890
7891 /**
7892 * Checks if `value` is likely a prototype object.
7893 *
7894 * @private
7895 * @param {*} value The value to check.
7896 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
7897 */
7898 function isPrototype(value) {
7899 var Ctor = value && value.constructor,
7900 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
7901
7902 return value === proto;
7903 }
7904
7905 /**
7906 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
7907 *
7908 * @private
7909 * @param {*} value The value to check.
7910 * @returns {boolean} Returns `true` if `value` if suitable for strict
7911 * equality comparisons, else `false`.
7912 */
7913 function isStrictComparable(value) {
7914 return value === value && !isObject(value);
7915 }
7916
7917 /**
7918 * A specialized version of `matchesProperty` for source values suitable
7919 * for strict equality comparisons, i.e. `===`.
7920 *
7921 * @private
7922 * @param {string} key The key of the property to get.
7923 * @param {*} srcValue The value to match.
7924 * @returns {Function} Returns the new spec function.
7925 */
7926 function matchesStrictComparable(key, srcValue) {
7927 return function(object) {
7928 if (object == null) {
7929 return false;
7930 }
7931 return object[key] === srcValue &&
7932 (srcValue !== undefined || (key in Object(object)));
7933 };
7934 }
7935
7936 /**
7937 * A specialized version of `_.memoize` which clears the memoized function's
7938 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
7939 *
7940 * @private
7941 * @param {Function} func The function to have its output memoized.
7942 * @returns {Function} Returns the new memoized function.
7943 */
7944 function memoizeCapped(func) {
7945 var result = memoize(func, function(key) {
7946 if (cache.size === MAX_MEMOIZE_SIZE) {
7947 cache.clear();
7948 }
7949 return key;
7950 });
7951
7952 var cache = result.cache;
7953 return result;
7954 }
7955
7956 /**
7957 * Merges the function metadata of `source` into `data`.
7958 *
7959 * Merging metadata reduces the number of wrappers used to invoke a function.
7960 * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
7961 * may be applied regardless of execution order. Methods like `_.ary` and
7962 * `_.rearg` modify function arguments, making the order in which they are
7963 * executed important, preventing the merging of metadata. However, we make
7964 * an exception for a safe combined case where curried functions have `_.ary`
7965 * and or `_.rearg` applied.
7966 *
7967 * @private
7968 * @param {Array} data The destination metadata.
7969 * @param {Array} source The source metadata.
7970 * @returns {Array} Returns `data`.
7971 */
7972 function mergeData(data, source) {
7973 var bitmask = data[1],
7974 srcBitmask = source[1],
7975 newBitmask = bitmask | srcBitmask,
7976 isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
7977
7978 var isCombo =
7979 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
7980 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
7981 ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
7982
7983 // Exit early if metadata can't be merged.
7984 if (!(isCommon || isCombo)) {
7985 return data;
7986 }
7987 // Use source `thisArg` if available.
7988 if (srcBitmask & WRAP_BIND_FLAG) {
7989 data[2] = source[2];
7990 // Set when currying a bound function.
7991 newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
7992 }
7993 // Compose partial arguments.
7994 var value = source[3];
7995 if (value) {
7996 var partials = data[3];
7997 data[3] = partials ? composeArgs(partials, value, source[4]) : value;
7998 data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
7999 }
8000 // Compose partial right arguments.
8001 value = source[5];
8002 if (value) {
8003 partials = data[5];
8004 data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
8005 data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
8006 }
8007 // Use source `argPos` if available.
8008 value = source[7];
8009 if (value) {
8010 data[7] = value;
8011 }
8012 // Use source `ary` if it's smaller.
8013 if (srcBitmask & WRAP_ARY_FLAG) {
8014 data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
8015 }
8016 // Use source `arity` if one is not provided.
8017 if (data[9] == null) {
8018 data[9] = source[9];
8019 }
8020 // Use source `func` and merge bitmasks.
8021 data[0] = source[0];
8022 data[1] = newBitmask;
8023
8024 return data;
8025 }
8026
8027 /**
8028 * This function is like
8029 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
8030 * except that it includes inherited enumerable properties.
8031 *
8032 * @private
8033 * @param {Object} object The object to query.
8034 * @returns {Array} Returns the array of property names.
8035 */
8036 function nativeKeysIn(object) {
8037 var result = [];
8038 if (object != null) {
8039 for (var key in Object(object)) {
8040 result.push(key);
8041 }
8042 }
8043 return result;
8044 }
8045
8046 /**
8047 * Converts `value` to a string using `Object.prototype.toString`.
8048 *
8049 * @private
8050 * @param {*} value The value to convert.
8051 * @returns {string} Returns the converted string.
8052 */
8053 function objectToString(value) {
8054 return nativeObjectToString.call(value);
8055 }
8056
8057 /**
8058 * A specialized version of `baseRest` which transforms the rest array.
8059 *
8060 * @private
8061 * @param {Function} func The function to apply a rest parameter to.
8062 * @param {number} [start=func.length-1] The start position of the rest parameter.
8063 * @param {Function} transform The rest array transform.
8064 * @returns {Function} Returns the new function.
8065 */
8066 function overRest(func, start, transform) {
8067 start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
8068 return function() {
8069 var args = arguments,
8070 index = -1,
8071 length = nativeMax(args.length - start, 0),
8072 array = Array(length);
8073
8074 while (++index < length) {
8075 array[index] = args[start + index];
8076 }
8077 index = -1;
8078 var otherArgs = Array(start + 1);
8079 while (++index < start) {
8080 otherArgs[index] = args[index];
8081 }
8082 otherArgs[start] = transform(array);
8083 return apply(func, this, otherArgs);
8084 };
8085 }
8086
8087 /**
8088 * Gets the parent value at `path` of `object`.
8089 *
8090 * @private
8091 * @param {Object} object The object to query.
8092 * @param {Array} path The path to get the parent value of.
8093 * @returns {*} Returns the parent value.
8094 */
8095 function parent(object, path) {
8096 return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
8097 }
8098
8099 /**
8100 * Reorder `array` according to the specified indexes where the element at
8101 * the first index is assigned as the first element, the element at
8102 * the second index is assigned as the second element, and so on.
8103 *
8104 * @private
8105 * @param {Array} array The array to reorder.
8106 * @param {Array} indexes The arranged array indexes.
8107 * @returns {Array} Returns `array`.
8108 */
8109 function reorder(array, indexes) {
8110 var arrLength = array.length,
8111 length = nativeMin(indexes.length, arrLength),
8112 oldArray = copyArray(array);
8113
8114 while (length--) {
8115 var index = indexes[length];
8116 array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
8117 }
8118 return array;
8119 }
8120
8121 /**
8122 * Sets metadata for `func`.
8123 *
8124 * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
8125 * period of time, it will trip its breaker and transition to an identity
8126 * function to avoid garbage collection pauses in V8. See
8127 * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
8128 * for more details.
8129 *
8130 * @private
8131 * @param {Function} func The function to associate metadata with.
8132 * @param {*} data The metadata.
8133 * @returns {Function} Returns `func`.
8134 */
8135 var setData = shortOut(baseSetData);
8136
8137 /**
8138 * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
8139 *
8140 * @private
8141 * @param {Function} func The function to delay.
8142 * @param {number} wait The number of milliseconds to delay invocation.
8143 * @returns {number|Object} Returns the timer id or timeout object.
8144 */
8145 var setTimeout = ctxSetTimeout || function(func, wait) {
8146 return root.setTimeout(func, wait);
8147 };
8148
8149 /**
8150 * Sets the `toString` method of `func` to return `string`.
8151 *
8152 * @private
8153 * @param {Function} func The function to modify.
8154 * @param {Function} string The `toString` result.
8155 * @returns {Function} Returns `func`.
8156 */
8157 var setToString = shortOut(baseSetToString);
8158
8159 /**
8160 * Sets the `toString` method of `wrapper` to mimic the source of `reference`
8161 * with wrapper details in a comment at the top of the source body.
8162 *
8163 * @private
8164 * @param {Function} wrapper The function to modify.
8165 * @param {Function} reference The reference function.
8166 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
8167 * @returns {Function} Returns `wrapper`.
8168 */
8169 function setWrapToString(wrapper, reference, bitmask) {
8170 var source = (reference + '');
8171 return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
8172 }
8173
8174 /**
8175 * Creates a function that'll short out and invoke `identity` instead
8176 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
8177 * milliseconds.
8178 *
8179 * @private
8180 * @param {Function} func The function to restrict.
8181 * @returns {Function} Returns the new shortable function.
8182 */
8183 function shortOut(func) {
8184 var count = 0,
8185 lastCalled = 0;
8186
8187 return function() {
8188 var stamp = nativeNow(),
8189 remaining = HOT_SPAN - (stamp - lastCalled);
8190
8191 lastCalled = stamp;
8192 if (remaining > 0) {
8193 if (++count >= HOT_COUNT) {
8194 return arguments[0];
8195 }
8196 } else {
8197 count = 0;
8198 }
8199 return func.apply(undefined, arguments);
8200 };
8201 }
8202
8203 /**
8204 * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
8205 *
8206 * @private
8207 * @param {Array} array The array to shuffle.
8208 * @param {number} [size=array.length] The size of `array`.
8209 * @returns {Array} Returns `array`.
8210 */
8211 function shuffleSelf(array, size) {
8212 var index = -1,
8213 length = array.length,
8214 lastIndex = length - 1;
8215
8216 size = size === undefined ? length : size;
8217 while (++index < size) {
8218 var rand = baseRandom(index, lastIndex),
8219 value = array[rand];
8220
8221 array[rand] = array[index];
8222 array[index] = value;
8223 }
8224 array.length = size;
8225 return array;
8226 }
8227
8228 /**
8229 * Converts `string` to a property path array.
8230 *
8231 * @private
8232 * @param {string} string The string to convert.
8233 * @returns {Array} Returns the property path array.
8234 */
8235 var stringToPath = memoizeCapped(function(string) {
8236 var result = [];
8237 if (string.charCodeAt(0) === 46 /* . */) {
8238 result.push('');
8239 }
8240 string.replace(rePropName, function(match, number, quote, subString) {
8241 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
8242 });
8243 return result;
8244 });
8245
8246 /**
8247 * Converts `value` to a string key if it's not a string or symbol.
8248 *
8249 * @private
8250 * @param {*} value The value to inspect.
8251 * @returns {string|symbol} Returns the key.
8252 */
8253 function toKey(value) {
8254 if (typeof value == 'string' || isSymbol(value)) {
8255 return value;
8256 }
8257 var result = (value + '');
8258 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
8259 }
8260
8261 /**
8262 * Converts `func` to its source code.
8263 *
8264 * @private
8265 * @param {Function} func The function to convert.
8266 * @returns {string} Returns the source code.
8267 */
8268 function toSource(func) {
8269 if (func != null) {
8270 try {
8271 return funcToString.call(func);
8272 } catch (e) {}
8273 try {
8274 return (func + '');
8275 } catch (e) {}
8276 }
8277 return '';
8278 }
8279
8280 /**
8281 * Updates wrapper `details` based on `bitmask` flags.
8282 *
8283 * @private
8284 * @returns {Array} details The details to modify.
8285 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
8286 * @returns {Array} Returns `details`.
8287 */
8288 function updateWrapDetails(details, bitmask) {
8289 arrayEach(wrapFlags, function(pair) {
8290 var value = '_.' + pair[0];
8291 if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
8292 details.push(value);
8293 }
8294 });
8295 return details.sort();
8296 }
8297
8298 /**
8299 * Creates a clone of `wrapper`.
8300 *
8301 * @private
8302 * @param {Object} wrapper The wrapper to clone.
8303 * @returns {Object} Returns the cloned wrapper.
8304 */
8305 function wrapperClone(wrapper) {
8306 if (wrapper instanceof LazyWrapper) {
8307 return wrapper.clone();
8308 }
8309 var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
8310 result.__actions__ = copyArray(wrapper.__actions__);
8311 result.__index__ = wrapper.__index__;
8312 result.__values__ = wrapper.__values__;
8313 return result;
8314 }
8315
8316 /*------------------------------------------------------------------------*/
8317
8318 /**
8319 * Creates an array of elements split into groups the length of `size`.
8320 * If `array` can't be split evenly, the final chunk will be the remaining
8321 * elements.
8322 *
8323 * @static
8324 * @memberOf _
8325 * @since 3.0.0
8326 * @category Array
8327 * @param {Array} array The array to process.
8328 * @param {number} [size=1] The length of each chunk
8329 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
8330 * @returns {Array} Returns the new array of chunks.
8331 * @example
8332 *
8333 * _.chunk(['a', 'b', 'c', 'd'], 2);
8334 * // => [['a', 'b'], ['c', 'd']]
8335 *
8336 * _.chunk(['a', 'b', 'c', 'd'], 3);
8337 * // => [['a', 'b', 'c'], ['d']]
8338 */
8339 function chunk(array, size, guard) {
8340 if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
8341 size = 1;
8342 } else {
8343 size = nativeMax(toInteger(size), 0);
8344 }
8345 var length = array == null ? 0 : array.length;
8346 if (!length || size < 1) {
8347 return [];
8348 }
8349 var index = 0,
8350 resIndex = 0,
8351 result = Array(nativeCeil(length / size));
8352
8353 while (index < length) {
8354 result[resIndex++] = baseSlice(array, index, (index += size));
8355 }
8356 return result;
8357 }
8358
8359 /**
8360 * Creates an array with all falsey values removed. The values `false`, `null`,
8361 * `0`, `""`, `undefined`, and `NaN` are falsey.
8362 *
8363 * @static
8364 * @memberOf _
8365 * @since 0.1.0
8366 * @category Array
8367 * @param {Array} array The array to compact.
8368 * @returns {Array} Returns the new array of filtered values.
8369 * @example
8370 *
8371 * _.compact([0, 1, false, 2, '', 3]);
8372 * // => [1, 2, 3]
8373 */
8374 function compact(array) {
8375 var index = -1,
8376 length = array == null ? 0 : array.length,
8377 resIndex = 0,
8378 result = [];
8379
8380 while (++index < length) {
8381 var value = array[index];
8382 if (value) {
8383 result[resIndex++] = value;
8384 }
8385 }
8386 return result;
8387 }
8388
8389 /**
8390 * Creates a new array concatenating `array` with any additional arrays
8391 * and/or values.
8392 *
8393 * @static
8394 * @memberOf _
8395 * @since 4.0.0
8396 * @category Array
8397 * @param {Array} array The array to concatenate.
8398 * @param {...*} [values] The values to concatenate.
8399 * @returns {Array} Returns the new concatenated array.
8400 * @example
8401 *
8402 * var array = [1];
8403 * var other = _.concat(array, 2, [3], [[4]]);
8404 *
8405 * console.log(other);
8406 * // => [1, 2, 3, [4]]
8407 *
8408 * console.log(array);
8409 * // => [1]
8410 */
8411 function concat() {
8412 var length = arguments.length;
8413 if (!length) {
8414 return [];
8415 }
8416 var args = Array(length - 1),
8417 array = arguments[0],
8418 index = length;
8419
8420 while (index--) {
8421 args[index - 1] = arguments[index];
8422 }
8423 return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
8424 }
8425
8426 /**
8427 * Creates an array of `array` values not included in the other given arrays
8428 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
8429 * for equality comparisons. The order and references of result values are
8430 * determined by the first array.
8431 *
8432 * **Note:** Unlike `_.pullAll`, this method returns a new array.
8433 *
8434 * @static
8435 * @memberOf _
8436 * @since 0.1.0
8437 * @category Array
8438 * @param {Array} array The array to inspect.
8439 * @param {...Array} [values] The values to exclude.
8440 * @returns {Array} Returns the new array of filtered values.
8441 * @see _.without, _.xor
8442 * @example
8443 *
8444 * _.difference([2, 1], [2, 3]);
8445 * // => [1]
8446 */
8447 var difference = baseRest(function(array, values) {
8448 return isArrayLikeObject(array)
8449 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
8450 : [];
8451 });
8452
8453 /**
8454 * This method is like `_.difference` except that it accepts `iteratee` which
8455 * is invoked for each element of `array` and `values` to generate the criterion
8456 * by which they're compared. The order and references of result values are
8457 * determined by the first array. The iteratee is invoked with one argument:
8458 * (value).
8459 *
8460 * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
8461 *
8462 * @static
8463 * @memberOf _
8464 * @since 4.0.0
8465 * @category Array
8466 * @param {Array} array The array to inspect.
8467 * @param {...Array} [values] The values to exclude.
8468 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
8469 * @returns {Array} Returns the new array of filtered values.
8470 * @example
8471 *
8472 * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
8473 * // => [1.2]
8474 *
8475 * // The `_.property` iteratee shorthand.
8476 * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
8477 * // => [{ 'x': 2 }]
8478 */
8479 var differenceBy = baseRest(function(array, values) {
8480 var iteratee = last(values);
8481 if (isArrayLikeObject(iteratee)) {
8482 iteratee = undefined;
8483 }
8484 return isArrayLikeObject(array)
8485 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
8486 : [];
8487 });
8488
8489 /**
8490 * This method is like `_.difference` except that it accepts `comparator`
8491 * which is invoked to compare elements of `array` to `values`. The order and
8492 * references of result values are determined by the first array. The comparator
8493 * is invoked with two arguments: (arrVal, othVal).
8494 *
8495 * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
8496 *
8497 * @static
8498 * @memberOf _
8499 * @since 4.0.0
8500 * @category Array
8501 * @param {Array} array The array to inspect.
8502 * @param {...Array} [values] The values to exclude.
8503 * @param {Function} [comparator] The comparator invoked per element.
8504 * @returns {Array} Returns the new array of filtered values.
8505 * @example
8506 *
8507 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
8508 *
8509 * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
8510 * // => [{ 'x': 2, 'y': 1 }]
8511 */
8512 var differenceWith = baseRest(function(array, values) {
8513 var comparator = last(values);
8514 if (isArrayLikeObject(comparator)) {
8515 comparator = undefined;
8516 }
8517 return isArrayLikeObject(array)
8518 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
8519 : [];
8520 });
8521
8522 /**
8523 * Creates a slice of `array` with `n` elements dropped from the beginning.
8524 *
8525 * @static
8526 * @memberOf _
8527 * @since 0.5.0
8528 * @category Array
8529 * @param {Array} array The array to query.
8530 * @param {number} [n=1] The number of elements to drop.
8531 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
8532 * @returns {Array} Returns the slice of `array`.
8533 * @example
8534 *
8535 * _.drop([1, 2, 3]);
8536 * // => [2, 3]
8537 *
8538 * _.drop([1, 2, 3], 2);
8539 * // => [3]
8540 *
8541 * _.drop([1, 2, 3], 5);
8542 * // => []
8543 *
8544 * _.drop([1, 2, 3], 0);
8545 * // => [1, 2, 3]
8546 */
8547 function drop(array, n, guard) {
8548 var length = array == null ? 0 : array.length;
8549 if (!length) {
8550 return [];
8551 }
8552 n = (guard || n === undefined) ? 1 : toInteger(n);
8553 return baseSlice(array, n < 0 ? 0 : n, length);
8554 }
8555
8556 /**
8557 * Creates a slice of `array` with `n` elements dropped from the end.
8558 *
8559 * @static
8560 * @memberOf _
8561 * @since 3.0.0
8562 * @category Array
8563 * @param {Array} array The array to query.
8564 * @param {number} [n=1] The number of elements to drop.
8565 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
8566 * @returns {Array} Returns the slice of `array`.
8567 * @example
8568 *
8569 * _.dropRight([1, 2, 3]);
8570 * // => [1, 2]
8571 *
8572 * _.dropRight([1, 2, 3], 2);
8573 * // => [1]
8574 *
8575 * _.dropRight([1, 2, 3], 5);
8576 * // => []
8577 *
8578 * _.dropRight([1, 2, 3], 0);
8579 * // => [1, 2, 3]
8580 */
8581 function dropRight(array, n, guard) {
8582 var length = array == null ? 0 : array.length;
8583 if (!length) {
8584 return [];
8585 }
8586 n = (guard || n === undefined) ? 1 : toInteger(n);
8587 n = length - n;
8588 return baseSlice(array, 0, n < 0 ? 0 : n);
8589 }
8590
8591 /**
8592 * Creates a slice of `array` excluding elements dropped from the end.
8593 * Elements are dropped until `predicate` returns falsey. The predicate is
8594 * invoked with three arguments: (value, index, array).
8595 *
8596 * @static
8597 * @memberOf _
8598 * @since 3.0.0
8599 * @category Array
8600 * @param {Array} array The array to query.
8601 * @param {Function} [predicate=_.identity] The function invoked per iteration.
8602 * @returns {Array} Returns the slice of `array`.
8603 * @example
8604 *
8605 * var users = [
8606 * { 'user': 'barney', 'active': true },
8607 * { 'user': 'fred', 'active': false },
8608 * { 'user': 'pebbles', 'active': false }
8609 * ];
8610 *
8611 * _.dropRightWhile(users, function(o) { return !o.active; });
8612 * // => objects for ['barney']
8613 *
8614 * // The `_.matches` iteratee shorthand.
8615 * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
8616 * // => objects for ['barney', 'fred']
8617 *
8618 * // The `_.matchesProperty` iteratee shorthand.
8619 * _.dropRightWhile(users, ['active', false]);
8620 * // => objects for ['barney']
8621 *
8622 * // The `_.property` iteratee shorthand.
8623 * _.dropRightWhile(users, 'active');
8624 * // => objects for ['barney', 'fred', 'pebbles']
8625 */
8626 function dropRightWhile(array, predicate) {
8627 return (array && array.length)
8628 ? baseWhile(array, getIteratee(predicate, 3), true, true)
8629 : [];
8630 }
8631
8632 /**
8633 * Creates a slice of `array` excluding elements dropped from the beginning.
8634 * Elements are dropped until `predicate` returns falsey. The predicate is
8635 * invoked with three arguments: (value, index, array).
8636 *
8637 * @static
8638 * @memberOf _
8639 * @since 3.0.0
8640 * @category Array
8641 * @param {Array} array The array to query.
8642 * @param {Function} [predicate=_.identity] The function invoked per iteration.
8643 * @returns {Array} Returns the slice of `array`.
8644 * @example
8645 *
8646 * var users = [
8647 * { 'user': 'barney', 'active': false },
8648 * { 'user': 'fred', 'active': false },
8649 * { 'user': 'pebbles', 'active': true }
8650 * ];
8651 *
8652 * _.dropWhile(users, function(o) { return !o.active; });
8653 * // => objects for ['pebbles']
8654 *
8655 * // The `_.matches` iteratee shorthand.
8656 * _.dropWhile(users, { 'user': 'barney', 'active': false });
8657 * // => objects for ['fred', 'pebbles']
8658 *
8659 * // The `_.matchesProperty` iteratee shorthand.
8660 * _.dropWhile(users, ['active', false]);
8661 * // => objects for ['pebbles']
8662 *
8663 * // The `_.property` iteratee shorthand.
8664 * _.dropWhile(users, 'active');
8665 * // => objects for ['barney', 'fred', 'pebbles']
8666 */
8667 function dropWhile(array, predicate) {
8668 return (array && array.length)
8669 ? baseWhile(array, getIteratee(predicate, 3), true)
8670 : [];
8671 }
8672
8673 /**
8674 * Fills elements of `array` with `value` from `start` up to, but not
8675 * including, `end`.
8676 *
8677 * **Note:** This method mutates `array`.
8678 *
8679 * @static
8680 * @memberOf _
8681 * @since 3.2.0
8682 * @category Array
8683 * @param {Array} array The array to fill.
8684 * @param {*} value The value to fill `array` with.
8685 * @param {number} [start=0] The start position.
8686 * @param {number} [end=array.length] The end position.
8687 * @returns {Array} Returns `array`.
8688 * @example
8689 *
8690 * var array = [1, 2, 3];
8691 *
8692 * _.fill(array, 'a');
8693 * console.log(array);
8694 * // => ['a', 'a', 'a']
8695 *
8696 * _.fill(Array(3), 2);
8697 * // => [2, 2, 2]
8698 *
8699 * _.fill([4, 6, 8, 10], '*', 1, 3);
8700 * // => [4, '*', '*', 10]
8701 */
8702 function fill(array, value, start, end) {
8703 var length = array == null ? 0 : array.length;
8704 if (!length) {
8705 return [];
8706 }
8707 if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
8708 start = 0;
8709 end = length;
8710 }
8711 return baseFill(array, value, start, end);
8712 }
8713
8714 /**
8715 * This method is like `_.find` except that it returns the index of the first
8716 * element `predicate` returns truthy for instead of the element itself.
8717 *
8718 * @static
8719 * @memberOf _
8720 * @since 1.1.0
8721 * @category Array
8722 * @param {Array} array The array to inspect.
8723 * @param {Function} [predicate=_.identity] The function invoked per iteration.
8724 * @param {number} [fromIndex=0] The index to search from.
8725 * @returns {number} Returns the index of the found element, else `-1`.
8726 * @example
8727 *
8728 * var users = [
8729 * { 'user': 'barney', 'active': false },
8730 * { 'user': 'fred', 'active': false },
8731 * { 'user': 'pebbles', 'active': true }
8732 * ];
8733 *
8734 * _.findIndex(users, function(o) { return o.user == 'barney'; });
8735 * // => 0
8736 *
8737 * // The `_.matches` iteratee shorthand.
8738 * _.findIndex(users, { 'user': 'fred', 'active': false });
8739 * // => 1
8740 *
8741 * // The `_.matchesProperty` iteratee shorthand.
8742 * _.findIndex(users, ['active', false]);
8743 * // => 0
8744 *
8745 * // The `_.property` iteratee shorthand.
8746 * _.findIndex(users, 'active');
8747 * // => 2
8748 */
8749 function findIndex(array, predicate, fromIndex) {
8750 var length = array == null ? 0 : array.length;
8751 if (!length) {
8752 return -1;
8753 }
8754 var index = fromIndex == null ? 0 : toInteger(fromIndex);
8755 if (index < 0) {
8756 index = nativeMax(length + index, 0);
8757 }
8758 return baseFindIndex(array, getIteratee(predicate, 3), index);
8759 }
8760
8761 /**
8762 * This method is like `_.findIndex` except that it iterates over elements
8763 * of `collection` from right to left.
8764 *
8765 * @static
8766 * @memberOf _
8767 * @since 2.0.0
8768 * @category Array
8769 * @param {Array} array The array to inspect.
8770 * @param {Function} [predicate=_.identity] The function invoked per iteration.
8771 * @param {number} [fromIndex=array.length-1] The index to search from.
8772 * @returns {number} Returns the index of the found element, else `-1`.
8773 * @example
8774 *
8775 * var users = [
8776 * { 'user': 'barney', 'active': true },
8777 * { 'user': 'fred', 'active': false },
8778 * { 'user': 'pebbles', 'active': false }
8779 * ];
8780 *
8781 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
8782 * // => 2
8783 *
8784 * // The `_.matches` iteratee shorthand.
8785 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
8786 * // => 0
8787 *
8788 * // The `_.matchesProperty` iteratee shorthand.
8789 * _.findLastIndex(users, ['active', false]);
8790 * // => 2
8791 *
8792 * // The `_.property` iteratee shorthand.
8793 * _.findLastIndex(users, 'active');
8794 * // => 0
8795 */
8796 function findLastIndex(array, predicate, fromIndex) {
8797 var length = array == null ? 0 : array.length;
8798 if (!length) {
8799 return -1;
8800 }
8801 var index = length - 1;
8802 if (fromIndex !== undefined) {
8803 index = toInteger(fromIndex);
8804 index = fromIndex < 0
8805 ? nativeMax(length + index, 0)
8806 : nativeMin(index, length - 1);
8807 }
8808 return baseFindIndex(array, getIteratee(predicate, 3), index, true);
8809 }
8810
8811 /**
8812 * Flattens `array` a single level deep.
8813 *
8814 * @static
8815 * @memberOf _
8816 * @since 0.1.0
8817 * @category Array
8818 * @param {Array} array The array to flatten.
8819 * @returns {Array} Returns the new flattened array.
8820 * @example
8821 *
8822 * _.flatten([1, [2, [3, [4]], 5]]);
8823 * // => [1, 2, [3, [4]], 5]
8824 */
8825 function flatten(array) {
8826 var length = array == null ? 0 : array.length;
8827 return length ? baseFlatten(array, 1) : [];
8828 }
8829
8830 /**
8831 * Recursively flattens `array`.
8832 *
8833 * @static
8834 * @memberOf _
8835 * @since 3.0.0
8836 * @category Array
8837 * @param {Array} array The array to flatten.
8838 * @returns {Array} Returns the new flattened array.
8839 * @example
8840 *
8841 * _.flattenDeep([1, [2, [3, [4]], 5]]);
8842 * // => [1, 2, 3, 4, 5]
8843 */
8844 function flattenDeep(array) {
8845 var length = array == null ? 0 : array.length;
8846 return length ? baseFlatten(array, INFINITY) : [];
8847 }
8848
8849 /**
8850 * Recursively flatten `array` up to `depth` times.
8851 *
8852 * @static
8853 * @memberOf _
8854 * @since 4.4.0
8855 * @category Array
8856 * @param {Array} array The array to flatten.
8857 * @param {number} [depth=1] The maximum recursion depth.
8858 * @returns {Array} Returns the new flattened array.
8859 * @example
8860 *
8861 * var array = [1, [2, [3, [4]], 5]];
8862 *
8863 * _.flattenDepth(array, 1);
8864 * // => [1, 2, [3, [4]], 5]
8865 *
8866 * _.flattenDepth(array, 2);
8867 * // => [1, 2, 3, [4], 5]
8868 */
8869 function flattenDepth(array, depth) {
8870 var length = array == null ? 0 : array.length;
8871 if (!length) {
8872 return [];
8873 }
8874 depth = depth === undefined ? 1 : toInteger(depth);
8875 return baseFlatten(array, depth);
8876 }
8877
8878 /**
8879 * The inverse of `_.toPairs`; this method returns an object composed
8880 * from key-value `pairs`.
8881 *
8882 * @static
8883 * @memberOf _
8884 * @since 4.0.0
8885 * @category Array
8886 * @param {Array} pairs The key-value pairs.
8887 * @returns {Object} Returns the new object.
8888 * @example
8889 *
8890 * _.fromPairs([['a', 1], ['b', 2]]);
8891 * // => { 'a': 1, 'b': 2 }
8892 */
8893 function fromPairs(pairs) {
8894 var index = -1,
8895 length = pairs == null ? 0 : pairs.length,
8896 result = {};
8897
8898 while (++index < length) {
8899 var pair = pairs[index];
8900 result[pair[0]] = pair[1];
8901 }
8902 return result;
8903 }
8904
8905 /**
8906 * Gets the first element of `array`.
8907 *
8908 * @static
8909 * @memberOf _
8910 * @since 0.1.0
8911 * @alias first
8912 * @category Array
8913 * @param {Array} array The array to query.
8914 * @returns {*} Returns the first element of `array`.
8915 * @example
8916 *
8917 * _.head([1, 2, 3]);
8918 * // => 1
8919 *
8920 * _.head([]);
8921 * // => undefined
8922 */
8923 function head(array) {
8924 return (array && array.length) ? array[0] : undefined;
8925 }
8926
8927 /**
8928 * Gets the index at which the first occurrence of `value` is found in `array`
8929 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
8930 * for equality comparisons. If `fromIndex` is negative, it's used as the
8931 * offset from the end of `array`.
8932 *
8933 * @static
8934 * @memberOf _
8935 * @since 0.1.0
8936 * @category Array
8937 * @param {Array} array The array to inspect.
8938 * @param {*} value The value to search for.
8939 * @param {number} [fromIndex=0] The index to search from.
8940 * @returns {number} Returns the index of the matched value, else `-1`.
8941 * @example
8942 *
8943 * _.indexOf([1, 2, 1, 2], 2);
8944 * // => 1
8945 *
8946 * // Search from the `fromIndex`.
8947 * _.indexOf([1, 2, 1, 2], 2, 2);
8948 * // => 3
8949 */
8950 function indexOf(array, value, fromIndex) {
8951 var length = array == null ? 0 : array.length;
8952 if (!length) {
8953 return -1;
8954 }
8955 var index = fromIndex == null ? 0 : toInteger(fromIndex);
8956 if (index < 0) {
8957 index = nativeMax(length + index, 0);
8958 }
8959 return baseIndexOf(array, value, index);
8960 }
8961
8962 /**
8963 * Gets all but the last element of `array`.
8964 *
8965 * @static
8966 * @memberOf _
8967 * @since 0.1.0
8968 * @category Array
8969 * @param {Array} array The array to query.
8970 * @returns {Array} Returns the slice of `array`.
8971 * @example
8972 *
8973 * _.initial([1, 2, 3]);
8974 * // => [1, 2]
8975 */
8976 function initial(array) {
8977 var length = array == null ? 0 : array.length;
8978 return length ? baseSlice(array, 0, -1) : [];
8979 }
8980
8981 /**
8982 * Creates an array of unique values that are included in all given arrays
8983 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
8984 * for equality comparisons. The order and references of result values are
8985 * determined by the first array.
8986 *
8987 * @static
8988 * @memberOf _
8989 * @since 0.1.0
8990 * @category Array
8991 * @param {...Array} [arrays] The arrays to inspect.
8992 * @returns {Array} Returns the new array of intersecting values.
8993 * @example
8994 *
8995 * _.intersection([2, 1], [2, 3]);
8996 * // => [2]
8997 */
8998 var intersection = baseRest(function(arrays) {
8999 var mapped = arrayMap(arrays, castArrayLikeObject);
9000 return (mapped.length && mapped[0] === arrays[0])
9001 ? baseIntersection(mapped)
9002 : [];
9003 });
9004
9005 /**
9006 * This method is like `_.intersection` except that it accepts `iteratee`
9007 * which is invoked for each element of each `arrays` to generate the criterion
9008 * by which they're compared. The order and references of result values are
9009 * determined by the first array. The iteratee is invoked with one argument:
9010 * (value).
9011 *
9012 * @static
9013 * @memberOf _
9014 * @since 4.0.0
9015 * @category Array
9016 * @param {...Array} [arrays] The arrays to inspect.
9017 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9018 * @returns {Array} Returns the new array of intersecting values.
9019 * @example
9020 *
9021 * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
9022 * // => [2.1]
9023 *
9024 * // The `_.property` iteratee shorthand.
9025 * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
9026 * // => [{ 'x': 1 }]
9027 */
9028 var intersectionBy = baseRest(function(arrays) {
9029 var iteratee = last(arrays),
9030 mapped = arrayMap(arrays, castArrayLikeObject);
9031
9032 if (iteratee === last(mapped)) {
9033 iteratee = undefined;
9034 } else {
9035 mapped.pop();
9036 }
9037 return (mapped.length && mapped[0] === arrays[0])
9038 ? baseIntersection(mapped, getIteratee(iteratee, 2))
9039 : [];
9040 });
9041
9042 /**
9043 * This method is like `_.intersection` except that it accepts `comparator`
9044 * which is invoked to compare elements of `arrays`. The order and references
9045 * of result values are determined by the first array. The comparator is
9046 * invoked with two arguments: (arrVal, othVal).
9047 *
9048 * @static
9049 * @memberOf _
9050 * @since 4.0.0
9051 * @category Array
9052 * @param {...Array} [arrays] The arrays to inspect.
9053 * @param {Function} [comparator] The comparator invoked per element.
9054 * @returns {Array} Returns the new array of intersecting values.
9055 * @example
9056 *
9057 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
9058 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
9059 *
9060 * _.intersectionWith(objects, others, _.isEqual);
9061 * // => [{ 'x': 1, 'y': 2 }]
9062 */
9063 var intersectionWith = baseRest(function(arrays) {
9064 var comparator = last(arrays),
9065 mapped = arrayMap(arrays, castArrayLikeObject);
9066
9067 comparator = typeof comparator == 'function' ? comparator : undefined;
9068 if (comparator) {
9069 mapped.pop();
9070 }
9071 return (mapped.length && mapped[0] === arrays[0])
9072 ? baseIntersection(mapped, undefined, comparator)
9073 : [];
9074 });
9075
9076 /**
9077 * Converts all elements in `array` into a string separated by `separator`.
9078 *
9079 * @static
9080 * @memberOf _
9081 * @since 4.0.0
9082 * @category Array
9083 * @param {Array} array The array to convert.
9084 * @param {string} [separator=','] The element separator.
9085 * @returns {string} Returns the joined string.
9086 * @example
9087 *
9088 * _.join(['a', 'b', 'c'], '~');
9089 * // => 'a~b~c'
9090 */
9091 function join(array, separator) {
9092 return array == null ? '' : nativeJoin.call(array, separator);
9093 }
9094
9095 /**
9096 * Gets the last element of `array`.
9097 *
9098 * @static
9099 * @memberOf _
9100 * @since 0.1.0
9101 * @category Array
9102 * @param {Array} array The array to query.
9103 * @returns {*} Returns the last element of `array`.
9104 * @example
9105 *
9106 * _.last([1, 2, 3]);
9107 * // => 3
9108 */
9109 function last(array) {
9110 var length = array == null ? 0 : array.length;
9111 return length ? array[length - 1] : undefined;
9112 }
9113
9114 /**
9115 * This method is like `_.indexOf` except that it iterates over elements of
9116 * `array` from right to left.
9117 *
9118 * @static
9119 * @memberOf _
9120 * @since 0.1.0
9121 * @category Array
9122 * @param {Array} array The array to inspect.
9123 * @param {*} value The value to search for.
9124 * @param {number} [fromIndex=array.length-1] The index to search from.
9125 * @returns {number} Returns the index of the matched value, else `-1`.
9126 * @example
9127 *
9128 * _.lastIndexOf([1, 2, 1, 2], 2);
9129 * // => 3
9130 *
9131 * // Search from the `fromIndex`.
9132 * _.lastIndexOf([1, 2, 1, 2], 2, 2);
9133 * // => 1
9134 */
9135 function lastIndexOf(array, value, fromIndex) {
9136 var length = array == null ? 0 : array.length;
9137 if (!length) {
9138 return -1;
9139 }
9140 var index = length;
9141 if (fromIndex !== undefined) {
9142 index = toInteger(fromIndex);
9143 index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
9144 }
9145 return value === value
9146 ? strictLastIndexOf(array, value, index)
9147 : baseFindIndex(array, baseIsNaN, index, true);
9148 }
9149
9150 /**
9151 * Gets the element at index `n` of `array`. If `n` is negative, the nth
9152 * element from the end is returned.
9153 *
9154 * @static
9155 * @memberOf _
9156 * @since 4.11.0
9157 * @category Array
9158 * @param {Array} array The array to query.
9159 * @param {number} [n=0] The index of the element to return.
9160 * @returns {*} Returns the nth element of `array`.
9161 * @example
9162 *
9163 * var array = ['a', 'b', 'c', 'd'];
9164 *
9165 * _.nth(array, 1);
9166 * // => 'b'
9167 *
9168 * _.nth(array, -2);
9169 * // => 'c';
9170 */
9171 function nth(array, n) {
9172 return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
9173 }
9174
9175 /**
9176 * Removes all given values from `array` using
9177 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
9178 * for equality comparisons.
9179 *
9180 * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
9181 * to remove elements from an array by predicate.
9182 *
9183 * @static
9184 * @memberOf _
9185 * @since 2.0.0
9186 * @category Array
9187 * @param {Array} array The array to modify.
9188 * @param {...*} [values] The values to remove.
9189 * @returns {Array} Returns `array`.
9190 * @example
9191 *
9192 * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
9193 *
9194 * _.pull(array, 'a', 'c');
9195 * console.log(array);
9196 * // => ['b', 'b']
9197 */
9198 var pull = baseRest(pullAll);
9199
9200 /**
9201 * This method is like `_.pull` except that it accepts an array of values to remove.
9202 *
9203 * **Note:** Unlike `_.difference`, this method mutates `array`.
9204 *
9205 * @static
9206 * @memberOf _
9207 * @since 4.0.0
9208 * @category Array
9209 * @param {Array} array The array to modify.
9210 * @param {Array} values The values to remove.
9211 * @returns {Array} Returns `array`.
9212 * @example
9213 *
9214 * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
9215 *
9216 * _.pullAll(array, ['a', 'c']);
9217 * console.log(array);
9218 * // => ['b', 'b']
9219 */
9220 function pullAll(array, values) {
9221 return (array && array.length && values && values.length)
9222 ? basePullAll(array, values)
9223 : array;
9224 }
9225
9226 /**
9227 * This method is like `_.pullAll` except that it accepts `iteratee` which is
9228 * invoked for each element of `array` and `values` to generate the criterion
9229 * by which they're compared. The iteratee is invoked with one argument: (value).
9230 *
9231 * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
9232 *
9233 * @static
9234 * @memberOf _
9235 * @since 4.0.0
9236 * @category Array
9237 * @param {Array} array The array to modify.
9238 * @param {Array} values The values to remove.
9239 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9240 * @returns {Array} Returns `array`.
9241 * @example
9242 *
9243 * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
9244 *
9245 * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
9246 * console.log(array);
9247 * // => [{ 'x': 2 }]
9248 */
9249 function pullAllBy(array, values, iteratee) {
9250 return (array && array.length && values && values.length)
9251 ? basePullAll(array, values, getIteratee(iteratee, 2))
9252 : array;
9253 }
9254
9255 /**
9256 * This method is like `_.pullAll` except that it accepts `comparator` which
9257 * is invoked to compare elements of `array` to `values`. The comparator is
9258 * invoked with two arguments: (arrVal, othVal).
9259 *
9260 * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
9261 *
9262 * @static
9263 * @memberOf _
9264 * @since 4.6.0
9265 * @category Array
9266 * @param {Array} array The array to modify.
9267 * @param {Array} values The values to remove.
9268 * @param {Function} [comparator] The comparator invoked per element.
9269 * @returns {Array} Returns `array`.
9270 * @example
9271 *
9272 * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
9273 *
9274 * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
9275 * console.log(array);
9276 * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
9277 */
9278 function pullAllWith(array, values, comparator) {
9279 return (array && array.length && values && values.length)
9280 ? basePullAll(array, values, undefined, comparator)
9281 : array;
9282 }
9283
9284 /**
9285 * Removes elements from `array` corresponding to `indexes` and returns an
9286 * array of removed elements.
9287 *
9288 * **Note:** Unlike `_.at`, this method mutates `array`.
9289 *
9290 * @static
9291 * @memberOf _
9292 * @since 3.0.0
9293 * @category Array
9294 * @param {Array} array The array to modify.
9295 * @param {...(number|number[])} [indexes] The indexes of elements to remove.
9296 * @returns {Array} Returns the new array of removed elements.
9297 * @example
9298 *
9299 * var array = ['a', 'b', 'c', 'd'];
9300 * var pulled = _.pullAt(array, [1, 3]);
9301 *
9302 * console.log(array);
9303 * // => ['a', 'c']
9304 *
9305 * console.log(pulled);
9306 * // => ['b', 'd']
9307 */
9308 var pullAt = flatRest(function(array, indexes) {
9309 var length = array == null ? 0 : array.length,
9310 result = baseAt(array, indexes);
9311
9312 basePullAt(array, arrayMap(indexes, function(index) {
9313 return isIndex(index, length) ? +index : index;
9314 }).sort(compareAscending));
9315
9316 return result;
9317 });
9318
9319 /**
9320 * Removes all elements from `array` that `predicate` returns truthy for
9321 * and returns an array of the removed elements. The predicate is invoked
9322 * with three arguments: (value, index, array).
9323 *
9324 * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
9325 * to pull elements from an array by value.
9326 *
9327 * @static
9328 * @memberOf _
9329 * @since 2.0.0
9330 * @category Array
9331 * @param {Array} array The array to modify.
9332 * @param {Function} [predicate=_.identity] The function invoked per iteration.
9333 * @returns {Array} Returns the new array of removed elements.
9334 * @example
9335 *
9336 * var array = [1, 2, 3, 4];
9337 * var evens = _.remove(array, function(n) {
9338 * return n % 2 == 0;
9339 * });
9340 *
9341 * console.log(array);
9342 * // => [1, 3]
9343 *
9344 * console.log(evens);
9345 * // => [2, 4]
9346 */
9347 function remove(array, predicate) {
9348 var result = [];
9349 if (!(array && array.length)) {
9350 return result;
9351 }
9352 var index = -1,
9353 indexes = [],
9354 length = array.length;
9355
9356 predicate = getIteratee(predicate, 3);
9357 while (++index < length) {
9358 var value = array[index];
9359 if (predicate(value, index, array)) {
9360 result.push(value);
9361 indexes.push(index);
9362 }
9363 }
9364 basePullAt(array, indexes);
9365 return result;
9366 }
9367
9368 /**
9369 * Reverses `array` so that the first element becomes the last, the second
9370 * element becomes the second to last, and so on.
9371 *
9372 * **Note:** This method mutates `array` and is based on
9373 * [`Array#reverse`](https://mdn.io/Array/reverse).
9374 *
9375 * @static
9376 * @memberOf _
9377 * @since 4.0.0
9378 * @category Array
9379 * @param {Array} array The array to modify.
9380 * @returns {Array} Returns `array`.
9381 * @example
9382 *
9383 * var array = [1, 2, 3];
9384 *
9385 * _.reverse(array);
9386 * // => [3, 2, 1]
9387 *
9388 * console.log(array);
9389 * // => [3, 2, 1]
9390 */
9391 function reverse(array) {
9392 return array == null ? array : nativeReverse.call(array);
9393 }
9394
9395 /**
9396 * Creates a slice of `array` from `start` up to, but not including, `end`.
9397 *
9398 * **Note:** This method is used instead of
9399 * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
9400 * returned.
9401 *
9402 * @static
9403 * @memberOf _
9404 * @since 3.0.0
9405 * @category Array
9406 * @param {Array} array The array to slice.
9407 * @param {number} [start=0] The start position.
9408 * @param {number} [end=array.length] The end position.
9409 * @returns {Array} Returns the slice of `array`.
9410 */
9411 function slice(array, start, end) {
9412 var length = array == null ? 0 : array.length;
9413 if (!length) {
9414 return [];
9415 }
9416 if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
9417 start = 0;
9418 end = length;
9419 }
9420 else {
9421 start = start == null ? 0 : toInteger(start);
9422 end = end === undefined ? length : toInteger(end);
9423 }
9424 return baseSlice(array, start, end);
9425 }
9426
9427 /**
9428 * Uses a binary search to determine the lowest index at which `value`
9429 * should be inserted into `array` in order to maintain its sort order.
9430 *
9431 * @static
9432 * @memberOf _
9433 * @since 0.1.0
9434 * @category Array
9435 * @param {Array} array The sorted array to inspect.
9436 * @param {*} value The value to evaluate.
9437 * @returns {number} Returns the index at which `value` should be inserted
9438 * into `array`.
9439 * @example
9440 *
9441 * _.sortedIndex([30, 50], 40);
9442 * // => 1
9443 */
9444 function sortedIndex(array, value) {
9445 return baseSortedIndex(array, value);
9446 }
9447
9448 /**
9449 * This method is like `_.sortedIndex` except that it accepts `iteratee`
9450 * which is invoked for `value` and each element of `array` to compute their
9451 * sort ranking. The iteratee is invoked with one argument: (value).
9452 *
9453 * @static
9454 * @memberOf _
9455 * @since 4.0.0
9456 * @category Array
9457 * @param {Array} array The sorted array to inspect.
9458 * @param {*} value The value to evaluate.
9459 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9460 * @returns {number} Returns the index at which `value` should be inserted
9461 * into `array`.
9462 * @example
9463 *
9464 * var objects = [{ 'x': 4 }, { 'x': 5 }];
9465 *
9466 * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
9467 * // => 0
9468 *
9469 * // The `_.property` iteratee shorthand.
9470 * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
9471 * // => 0
9472 */
9473 function sortedIndexBy(array, value, iteratee) {
9474 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
9475 }
9476
9477 /**
9478 * This method is like `_.indexOf` except that it performs a binary
9479 * search on a sorted `array`.
9480 *
9481 * @static
9482 * @memberOf _
9483 * @since 4.0.0
9484 * @category Array
9485 * @param {Array} array The array to inspect.
9486 * @param {*} value The value to search for.
9487 * @returns {number} Returns the index of the matched value, else `-1`.
9488 * @example
9489 *
9490 * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
9491 * // => 1
9492 */
9493 function sortedIndexOf(array, value) {
9494 var length = array == null ? 0 : array.length;
9495 if (length) {
9496 var index = baseSortedIndex(array, value);
9497 if (index < length && eq(array[index], value)) {
9498 return index;
9499 }
9500 }
9501 return -1;
9502 }
9503
9504 /**
9505 * This method is like `_.sortedIndex` except that it returns the highest
9506 * index at which `value` should be inserted into `array` in order to
9507 * maintain its sort order.
9508 *
9509 * @static
9510 * @memberOf _
9511 * @since 3.0.0
9512 * @category Array
9513 * @param {Array} array The sorted array to inspect.
9514 * @param {*} value The value to evaluate.
9515 * @returns {number} Returns the index at which `value` should be inserted
9516 * into `array`.
9517 * @example
9518 *
9519 * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
9520 * // => 4
9521 */
9522 function sortedLastIndex(array, value) {
9523 return baseSortedIndex(array, value, true);
9524 }
9525
9526 /**
9527 * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
9528 * which is invoked for `value` and each element of `array` to compute their
9529 * sort ranking. The iteratee is invoked with one argument: (value).
9530 *
9531 * @static
9532 * @memberOf _
9533 * @since 4.0.0
9534 * @category Array
9535 * @param {Array} array The sorted array to inspect.
9536 * @param {*} value The value to evaluate.
9537 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9538 * @returns {number} Returns the index at which `value` should be inserted
9539 * into `array`.
9540 * @example
9541 *
9542 * var objects = [{ 'x': 4 }, { 'x': 5 }];
9543 *
9544 * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
9545 * // => 1
9546 *
9547 * // The `_.property` iteratee shorthand.
9548 * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
9549 * // => 1
9550 */
9551 function sortedLastIndexBy(array, value, iteratee) {
9552 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
9553 }
9554
9555 /**
9556 * This method is like `_.lastIndexOf` except that it performs a binary
9557 * search on a sorted `array`.
9558 *
9559 * @static
9560 * @memberOf _
9561 * @since 4.0.0
9562 * @category Array
9563 * @param {Array} array The array to inspect.
9564 * @param {*} value The value to search for.
9565 * @returns {number} Returns the index of the matched value, else `-1`.
9566 * @example
9567 *
9568 * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
9569 * // => 3
9570 */
9571 function sortedLastIndexOf(array, value) {
9572 var length = array == null ? 0 : array.length;
9573 if (length) {
9574 var index = baseSortedIndex(array, value, true) - 1;
9575 if (eq(array[index], value)) {
9576 return index;
9577 }
9578 }
9579 return -1;
9580 }
9581
9582 /**
9583 * This method is like `_.uniq` except that it's designed and optimized
9584 * for sorted arrays.
9585 *
9586 * @static
9587 * @memberOf _
9588 * @since 4.0.0
9589 * @category Array
9590 * @param {Array} array The array to inspect.
9591 * @returns {Array} Returns the new duplicate free array.
9592 * @example
9593 *
9594 * _.sortedUniq([1, 1, 2]);
9595 * // => [1, 2]
9596 */
9597 function sortedUniq(array) {
9598 return (array && array.length)
9599 ? baseSortedUniq(array)
9600 : [];
9601 }
9602
9603 /**
9604 * This method is like `_.uniqBy` except that it's designed and optimized
9605 * for sorted arrays.
9606 *
9607 * @static
9608 * @memberOf _
9609 * @since 4.0.0
9610 * @category Array
9611 * @param {Array} array The array to inspect.
9612 * @param {Function} [iteratee] The iteratee invoked per element.
9613 * @returns {Array} Returns the new duplicate free array.
9614 * @example
9615 *
9616 * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
9617 * // => [1.1, 2.3]
9618 */
9619 function sortedUniqBy(array, iteratee) {
9620 return (array && array.length)
9621 ? baseSortedUniq(array, getIteratee(iteratee, 2))
9622 : [];
9623 }
9624
9625 /**
9626 * Gets all but the first element of `array`.
9627 *
9628 * @static
9629 * @memberOf _
9630 * @since 4.0.0
9631 * @category Array
9632 * @param {Array} array The array to query.
9633 * @returns {Array} Returns the slice of `array`.
9634 * @example
9635 *
9636 * _.tail([1, 2, 3]);
9637 * // => [2, 3]
9638 */
9639 function tail(array) {
9640 var length = array == null ? 0 : array.length;
9641 return length ? baseSlice(array, 1, length) : [];
9642 }
9643
9644 /**
9645 * Creates a slice of `array` with `n` elements taken from the beginning.
9646 *
9647 * @static
9648 * @memberOf _
9649 * @since 0.1.0
9650 * @category Array
9651 * @param {Array} array The array to query.
9652 * @param {number} [n=1] The number of elements to take.
9653 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
9654 * @returns {Array} Returns the slice of `array`.
9655 * @example
9656 *
9657 * _.take([1, 2, 3]);
9658 * // => [1]
9659 *
9660 * _.take([1, 2, 3], 2);
9661 * // => [1, 2]
9662 *
9663 * _.take([1, 2, 3], 5);
9664 * // => [1, 2, 3]
9665 *
9666 * _.take([1, 2, 3], 0);
9667 * // => []
9668 */
9669 function take(array, n, guard) {
9670 if (!(array && array.length)) {
9671 return [];
9672 }
9673 n = (guard || n === undefined) ? 1 : toInteger(n);
9674 return baseSlice(array, 0, n < 0 ? 0 : n);
9675 }
9676
9677 /**
9678 * Creates a slice of `array` with `n` elements taken from the end.
9679 *
9680 * @static
9681 * @memberOf _
9682 * @since 3.0.0
9683 * @category Array
9684 * @param {Array} array The array to query.
9685 * @param {number} [n=1] The number of elements to take.
9686 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
9687 * @returns {Array} Returns the slice of `array`.
9688 * @example
9689 *
9690 * _.takeRight([1, 2, 3]);
9691 * // => [3]
9692 *
9693 * _.takeRight([1, 2, 3], 2);
9694 * // => [2, 3]
9695 *
9696 * _.takeRight([1, 2, 3], 5);
9697 * // => [1, 2, 3]
9698 *
9699 * _.takeRight([1, 2, 3], 0);
9700 * // => []
9701 */
9702 function takeRight(array, n, guard) {
9703 var length = array == null ? 0 : array.length;
9704 if (!length) {
9705 return [];
9706 }
9707 n = (guard || n === undefined) ? 1 : toInteger(n);
9708 n = length - n;
9709 return baseSlice(array, n < 0 ? 0 : n, length);
9710 }
9711
9712 /**
9713 * Creates a slice of `array` with elements taken from the end. Elements are
9714 * taken until `predicate` returns falsey. The predicate is invoked with
9715 * three arguments: (value, index, array).
9716 *
9717 * @static
9718 * @memberOf _
9719 * @since 3.0.0
9720 * @category Array
9721 * @param {Array} array The array to query.
9722 * @param {Function} [predicate=_.identity] The function invoked per iteration.
9723 * @returns {Array} Returns the slice of `array`.
9724 * @example
9725 *
9726 * var users = [
9727 * { 'user': 'barney', 'active': true },
9728 * { 'user': 'fred', 'active': false },
9729 * { 'user': 'pebbles', 'active': false }
9730 * ];
9731 *
9732 * _.takeRightWhile(users, function(o) { return !o.active; });
9733 * // => objects for ['fred', 'pebbles']
9734 *
9735 * // The `_.matches` iteratee shorthand.
9736 * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
9737 * // => objects for ['pebbles']
9738 *
9739 * // The `_.matchesProperty` iteratee shorthand.
9740 * _.takeRightWhile(users, ['active', false]);
9741 * // => objects for ['fred', 'pebbles']
9742 *
9743 * // The `_.property` iteratee shorthand.
9744 * _.takeRightWhile(users, 'active');
9745 * // => []
9746 */
9747 function takeRightWhile(array, predicate) {
9748 return (array && array.length)
9749 ? baseWhile(array, getIteratee(predicate, 3), false, true)
9750 : [];
9751 }
9752
9753 /**
9754 * Creates a slice of `array` with elements taken from the beginning. Elements
9755 * are taken until `predicate` returns falsey. The predicate is invoked with
9756 * three arguments: (value, index, array).
9757 *
9758 * @static
9759 * @memberOf _
9760 * @since 3.0.0
9761 * @category Array
9762 * @param {Array} array The array to query.
9763 * @param {Function} [predicate=_.identity] The function invoked per iteration.
9764 * @returns {Array} Returns the slice of `array`.
9765 * @example
9766 *
9767 * var users = [
9768 * { 'user': 'barney', 'active': false },
9769 * { 'user': 'fred', 'active': false },
9770 * { 'user': 'pebbles', 'active': true }
9771 * ];
9772 *
9773 * _.takeWhile(users, function(o) { return !o.active; });
9774 * // => objects for ['barney', 'fred']
9775 *
9776 * // The `_.matches` iteratee shorthand.
9777 * _.takeWhile(users, { 'user': 'barney', 'active': false });
9778 * // => objects for ['barney']
9779 *
9780 * // The `_.matchesProperty` iteratee shorthand.
9781 * _.takeWhile(users, ['active', false]);
9782 * // => objects for ['barney', 'fred']
9783 *
9784 * // The `_.property` iteratee shorthand.
9785 * _.takeWhile(users, 'active');
9786 * // => []
9787 */
9788 function takeWhile(array, predicate) {
9789 return (array && array.length)
9790 ? baseWhile(array, getIteratee(predicate, 3))
9791 : [];
9792 }
9793
9794 /**
9795 * Creates an array of unique values, in order, from all given arrays using
9796 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
9797 * for equality comparisons.
9798 *
9799 * @static
9800 * @memberOf _
9801 * @since 0.1.0
9802 * @category Array
9803 * @param {...Array} [arrays] The arrays to inspect.
9804 * @returns {Array} Returns the new array of combined values.
9805 * @example
9806 *
9807 * _.union([2], [1, 2]);
9808 * // => [2, 1]
9809 */
9810 var union = baseRest(function(arrays) {
9811 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
9812 });
9813
9814 /**
9815 * This method is like `_.union` except that it accepts `iteratee` which is
9816 * invoked for each element of each `arrays` to generate the criterion by
9817 * which uniqueness is computed. Result values are chosen from the first
9818 * array in which the value occurs. The iteratee is invoked with one argument:
9819 * (value).
9820 *
9821 * @static
9822 * @memberOf _
9823 * @since 4.0.0
9824 * @category Array
9825 * @param {...Array} [arrays] The arrays to inspect.
9826 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9827 * @returns {Array} Returns the new array of combined values.
9828 * @example
9829 *
9830 * _.unionBy([2.1], [1.2, 2.3], Math.floor);
9831 * // => [2.1, 1.2]
9832 *
9833 * // The `_.property` iteratee shorthand.
9834 * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
9835 * // => [{ 'x': 1 }, { 'x': 2 }]
9836 */
9837 var unionBy = baseRest(function(arrays) {
9838 var iteratee = last(arrays);
9839 if (isArrayLikeObject(iteratee)) {
9840 iteratee = undefined;
9841 }
9842 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
9843 });
9844
9845 /**
9846 * This method is like `_.union` except that it accepts `comparator` which
9847 * is invoked to compare elements of `arrays`. Result values are chosen from
9848 * the first array in which the value occurs. The comparator is invoked
9849 * with two arguments: (arrVal, othVal).
9850 *
9851 * @static
9852 * @memberOf _
9853 * @since 4.0.0
9854 * @category Array
9855 * @param {...Array} [arrays] The arrays to inspect.
9856 * @param {Function} [comparator] The comparator invoked per element.
9857 * @returns {Array} Returns the new array of combined values.
9858 * @example
9859 *
9860 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
9861 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
9862 *
9863 * _.unionWith(objects, others, _.isEqual);
9864 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
9865 */
9866 var unionWith = baseRest(function(arrays) {
9867 var comparator = last(arrays);
9868 comparator = typeof comparator == 'function' ? comparator : undefined;
9869 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
9870 });
9871
9872 /**
9873 * Creates a duplicate-free version of an array, using
9874 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
9875 * for equality comparisons, in which only the first occurrence of each element
9876 * is kept. The order of result values is determined by the order they occur
9877 * in the array.
9878 *
9879 * @static
9880 * @memberOf _
9881 * @since 0.1.0
9882 * @category Array
9883 * @param {Array} array The array to inspect.
9884 * @returns {Array} Returns the new duplicate free array.
9885 * @example
9886 *
9887 * _.uniq([2, 1, 2]);
9888 * // => [2, 1]
9889 */
9890 function uniq(array) {
9891 return (array && array.length) ? baseUniq(array) : [];
9892 }
9893
9894 /**
9895 * This method is like `_.uniq` except that it accepts `iteratee` which is
9896 * invoked for each element in `array` to generate the criterion by which
9897 * uniqueness is computed. The order of result values is determined by the
9898 * order they occur in the array. The iteratee is invoked with one argument:
9899 * (value).
9900 *
9901 * @static
9902 * @memberOf _
9903 * @since 4.0.0
9904 * @category Array
9905 * @param {Array} array The array to inspect.
9906 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
9907 * @returns {Array} Returns the new duplicate free array.
9908 * @example
9909 *
9910 * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
9911 * // => [2.1, 1.2]
9912 *
9913 * // The `_.property` iteratee shorthand.
9914 * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
9915 * // => [{ 'x': 1 }, { 'x': 2 }]
9916 */
9917 function uniqBy(array, iteratee) {
9918 return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
9919 }
9920
9921 /**
9922 * This method is like `_.uniq` except that it accepts `comparator` which
9923 * is invoked to compare elements of `array`. The order of result values is
9924 * determined by the order they occur in the array.The comparator is invoked
9925 * with two arguments: (arrVal, othVal).
9926 *
9927 * @static
9928 * @memberOf _
9929 * @since 4.0.0
9930 * @category Array
9931 * @param {Array} array The array to inspect.
9932 * @param {Function} [comparator] The comparator invoked per element.
9933 * @returns {Array} Returns the new duplicate free array.
9934 * @example
9935 *
9936 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
9937 *
9938 * _.uniqWith(objects, _.isEqual);
9939 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
9940 */
9941 function uniqWith(array, comparator) {
9942 comparator = typeof comparator == 'function' ? comparator : undefined;
9943 return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
9944 }
9945
9946 /**
9947 * This method is like `_.zip` except that it accepts an array of grouped
9948 * elements and creates an array regrouping the elements to their pre-zip
9949 * configuration.
9950 *
9951 * @static
9952 * @memberOf _
9953 * @since 1.2.0
9954 * @category Array
9955 * @param {Array} array The array of grouped elements to process.
9956 * @returns {Array} Returns the new array of regrouped elements.
9957 * @example
9958 *
9959 * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
9960 * // => [['a', 1, true], ['b', 2, false]]
9961 *
9962 * _.unzip(zipped);
9963 * // => [['a', 'b'], [1, 2], [true, false]]
9964 */
9965 function unzip(array) {
9966 if (!(array && array.length)) {
9967 return [];
9968 }
9969 var length = 0;
9970 array = arrayFilter(array, function(group) {
9971 if (isArrayLikeObject(group)) {
9972 length = nativeMax(group.length, length);
9973 return true;
9974 }
9975 });
9976 return baseTimes(length, function(index) {
9977 return arrayMap(array, baseProperty(index));
9978 });
9979 }
9980
9981 /**
9982 * This method is like `_.unzip` except that it accepts `iteratee` to specify
9983 * how regrouped values should be combined. The iteratee is invoked with the
9984 * elements of each group: (...group).
9985 *
9986 * @static
9987 * @memberOf _
9988 * @since 3.8.0
9989 * @category Array
9990 * @param {Array} array The array of grouped elements to process.
9991 * @param {Function} [iteratee=_.identity] The function to combine
9992 * regrouped values.
9993 * @returns {Array} Returns the new array of regrouped elements.
9994 * @example
9995 *
9996 * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
9997 * // => [[1, 10, 100], [2, 20, 200]]
9998 *
9999 * _.unzipWith(zipped, _.add);
10000 * // => [3, 30, 300]
10001 */
10002 function unzipWith(array, iteratee) {
10003 if (!(array && array.length)) {
10004 return [];
10005 }
10006 var result = unzip(array);
10007 if (iteratee == null) {
10008 return result;
10009 }
10010 return arrayMap(result, function(group) {
10011 return apply(iteratee, undefined, group);
10012 });
10013 }
10014
10015 /**
10016 * Creates an array excluding all given values using
10017 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
10018 * for equality comparisons.
10019 *
10020 * **Note:** Unlike `_.pull`, this method returns a new array.
10021 *
10022 * @static
10023 * @memberOf _
10024 * @since 0.1.0
10025 * @category Array
10026 * @param {Array} array The array to inspect.
10027 * @param {...*} [values] The values to exclude.
10028 * @returns {Array} Returns the new array of filtered values.
10029 * @see _.difference, _.xor
10030 * @example
10031 *
10032 * _.without([2, 1, 2, 3], 1, 2);
10033 * // => [3]
10034 */
10035 var without = baseRest(function(array, values) {
10036 return isArrayLikeObject(array)
10037 ? baseDifference(array, values)
10038 : [];
10039 });
10040
10041 /**
10042 * Creates an array of unique values that is the
10043 * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
10044 * of the given arrays. The order of result values is determined by the order
10045 * they occur in the arrays.
10046 *
10047 * @static
10048 * @memberOf _
10049 * @since 2.4.0
10050 * @category Array
10051 * @param {...Array} [arrays] The arrays to inspect.
10052 * @returns {Array} Returns the new array of filtered values.
10053 * @see _.difference, _.without
10054 * @example
10055 *
10056 * _.xor([2, 1], [2, 3]);
10057 * // => [1, 3]
10058 */
10059 var xor = baseRest(function(arrays) {
10060 return baseXor(arrayFilter(arrays, isArrayLikeObject));
10061 });
10062
10063 /**
10064 * This method is like `_.xor` except that it accepts `iteratee` which is
10065 * invoked for each element of each `arrays` to generate the criterion by
10066 * which by which they're compared. The order of result values is determined
10067 * by the order they occur in the arrays. The iteratee is invoked with one
10068 * argument: (value).
10069 *
10070 * @static
10071 * @memberOf _
10072 * @since 4.0.0
10073 * @category Array
10074 * @param {...Array} [arrays] The arrays to inspect.
10075 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
10076 * @returns {Array} Returns the new array of filtered values.
10077 * @example
10078 *
10079 * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
10080 * // => [1.2, 3.4]
10081 *
10082 * // The `_.property` iteratee shorthand.
10083 * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
10084 * // => [{ 'x': 2 }]
10085 */
10086 var xorBy = baseRest(function(arrays) {
10087 var iteratee = last(arrays);
10088 if (isArrayLikeObject(iteratee)) {
10089 iteratee = undefined;
10090 }
10091 return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
10092 });
10093
10094 /**
10095 * This method is like `_.xor` except that it accepts `comparator` which is
10096 * invoked to compare elements of `arrays`. The order of result values is
10097 * determined by the order they occur in the arrays. The comparator is invoked
10098 * with two arguments: (arrVal, othVal).
10099 *
10100 * @static
10101 * @memberOf _
10102 * @since 4.0.0
10103 * @category Array
10104 * @param {...Array} [arrays] The arrays to inspect.
10105 * @param {Function} [comparator] The comparator invoked per element.
10106 * @returns {Array} Returns the new array of filtered values.
10107 * @example
10108 *
10109 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
10110 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
10111 *
10112 * _.xorWith(objects, others, _.isEqual);
10113 * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
10114 */
10115 var xorWith = baseRest(function(arrays) {
10116 var comparator = last(arrays);
10117 comparator = typeof comparator == 'function' ? comparator : undefined;
10118 return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
10119 });
10120
10121 /**
10122 * Creates an array of grouped elements, the first of which contains the
10123 * first elements of the given arrays, the second of which contains the
10124 * second elements of the given arrays, and so on.
10125 *
10126 * @static
10127 * @memberOf _
10128 * @since 0.1.0
10129 * @category Array
10130 * @param {...Array} [arrays] The arrays to process.
10131 * @returns {Array} Returns the new array of grouped elements.
10132 * @example
10133 *
10134 * _.zip(['a', 'b'], [1, 2], [true, false]);
10135 * // => [['a', 1, true], ['b', 2, false]]
10136 */
10137 var zip = baseRest(unzip);
10138
10139 /**
10140 * This method is like `_.fromPairs` except that it accepts two arrays,
10141 * one of property identifiers and one of corresponding values.
10142 *
10143 * @static
10144 * @memberOf _
10145 * @since 0.4.0
10146 * @category Array
10147 * @param {Array} [props=[]] The property identifiers.
10148 * @param {Array} [values=[]] The property values.
10149 * @returns {Object} Returns the new object.
10150 * @example
10151 *
10152 * _.zipObject(['a', 'b'], [1, 2]);
10153 * // => { 'a': 1, 'b': 2 }
10154 */
10155 function zipObject(props, values) {
10156 return baseZipObject(props || [], values || [], assignValue);
10157 }
10158
10159 /**
10160 * This method is like `_.zipObject` except that it supports property paths.
10161 *
10162 * @static
10163 * @memberOf _
10164 * @since 4.1.0
10165 * @category Array
10166 * @param {Array} [props=[]] The property identifiers.
10167 * @param {Array} [values=[]] The property values.
10168 * @returns {Object} Returns the new object.
10169 * @example
10170 *
10171 * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
10172 * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
10173 */
10174 function zipObjectDeep(props, values) {
10175 return baseZipObject(props || [], values || [], baseSet);
10176 }
10177
10178 /**
10179 * This method is like `_.zip` except that it accepts `iteratee` to specify
10180 * how grouped values should be combined. The iteratee is invoked with the
10181 * elements of each group: (...group).
10182 *
10183 * @static
10184 * @memberOf _
10185 * @since 3.8.0
10186 * @category Array
10187 * @param {...Array} [arrays] The arrays to process.
10188 * @param {Function} [iteratee=_.identity] The function to combine
10189 * grouped values.
10190 * @returns {Array} Returns the new array of grouped elements.
10191 * @example
10192 *
10193 * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
10194 * return a + b + c;
10195 * });
10196 * // => [111, 222]
10197 */
10198 var zipWith = baseRest(function(arrays) {
10199 var length = arrays.length,
10200 iteratee = length > 1 ? arrays[length - 1] : undefined;
10201
10202 iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
10203 return unzipWith(arrays, iteratee);
10204 });
10205
10206 /*------------------------------------------------------------------------*/
10207
10208 /**
10209 * Creates a `lodash` wrapper instance that wraps `value` with explicit method
10210 * chain sequences enabled. The result of such sequences must be unwrapped
10211 * with `_#value`.
10212 *
10213 * @static
10214 * @memberOf _
10215 * @since 1.3.0
10216 * @category Seq
10217 * @param {*} value The value to wrap.
10218 * @returns {Object} Returns the new `lodash` wrapper instance.
10219 * @example
10220 *
10221 * var users = [
10222 * { 'user': 'barney', 'age': 36 },
10223 * { 'user': 'fred', 'age': 40 },
10224 * { 'user': 'pebbles', 'age': 1 }
10225 * ];
10226 *
10227 * var youngest = _
10228 * .chain(users)
10229 * .sortBy('age')
10230 * .map(function(o) {
10231 * return o.user + ' is ' + o.age;
10232 * })
10233 * .head()
10234 * .value();
10235 * // => 'pebbles is 1'
10236 */
10237 function chain(value) {
10238 var result = lodash(value);
10239 result.__chain__ = true;
10240 return result;
10241 }
10242
10243 /**
10244 * This method invokes `interceptor` and returns `value`. The interceptor
10245 * is invoked with one argument; (value). The purpose of this method is to
10246 * "tap into" a method chain sequence in order to modify intermediate results.
10247 *
10248 * @static
10249 * @memberOf _
10250 * @since 0.1.0
10251 * @category Seq
10252 * @param {*} value The value to provide to `interceptor`.
10253 * @param {Function} interceptor The function to invoke.
10254 * @returns {*} Returns `value`.
10255 * @example
10256 *
10257 * _([1, 2, 3])
10258 * .tap(function(array) {
10259 * // Mutate input array.
10260 * array.pop();
10261 * })
10262 * .reverse()
10263 * .value();
10264 * // => [2, 1]
10265 */
10266 function tap(value, interceptor) {
10267 interceptor(value);
10268 return value;
10269 }
10270
10271 /**
10272 * This method is like `_.tap` except that it returns the result of `interceptor`.
10273 * The purpose of this method is to "pass thru" values replacing intermediate
10274 * results in a method chain sequence.
10275 *
10276 * @static
10277 * @memberOf _
10278 * @since 3.0.0
10279 * @category Seq
10280 * @param {*} value The value to provide to `interceptor`.
10281 * @param {Function} interceptor The function to invoke.
10282 * @returns {*} Returns the result of `interceptor`.
10283 * @example
10284 *
10285 * _(' abc ')
10286 * .chain()
10287 * .trim()
10288 * .thru(function(value) {
10289 * return [value];
10290 * })
10291 * .value();
10292 * // => ['abc']
10293 */
10294 function thru(value, interceptor) {
10295 return interceptor(value);
10296 }
10297
10298 /**
10299 * This method is the wrapper version of `_.at`.
10300 *
10301 * @name at
10302 * @memberOf _
10303 * @since 1.0.0
10304 * @category Seq
10305 * @param {...(string|string[])} [paths] The property paths to pick.
10306 * @returns {Object} Returns the new `lodash` wrapper instance.
10307 * @example
10308 *
10309 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
10310 *
10311 * _(object).at(['a[0].b.c', 'a[1]']).value();
10312 * // => [3, 4]
10313 */
10314 var wrapperAt = flatRest(function(paths) {
10315 var length = paths.length,
10316 start = length ? paths[0] : 0,
10317 value = this.__wrapped__,
10318 interceptor = function(object) { return baseAt(object, paths); };
10319
10320 if (length > 1 || this.__actions__.length ||
10321 !(value instanceof LazyWrapper) || !isIndex(start)) {
10322 return this.thru(interceptor);
10323 }
10324 value = value.slice(start, +start + (length ? 1 : 0));
10325 value.__actions__.push({
10326 'func': thru,
10327 'args': [interceptor],
10328 'thisArg': undefined
10329 });
10330 return new LodashWrapper(value, this.__chain__).thru(function(array) {
10331 if (length && !array.length) {
10332 array.push(undefined);
10333 }
10334 return array;
10335 });
10336 });
10337
10338 /**
10339 * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
10340 *
10341 * @name chain
10342 * @memberOf _
10343 * @since 0.1.0
10344 * @category Seq
10345 * @returns {Object} Returns the new `lodash` wrapper instance.
10346 * @example
10347 *
10348 * var users = [
10349 * { 'user': 'barney', 'age': 36 },
10350 * { 'user': 'fred', 'age': 40 }
10351 * ];
10352 *
10353 * // A sequence without explicit chaining.
10354 * _(users).head();
10355 * // => { 'user': 'barney', 'age': 36 }
10356 *
10357 * // A sequence with explicit chaining.
10358 * _(users)
10359 * .chain()
10360 * .head()
10361 * .pick('user')
10362 * .value();
10363 * // => { 'user': 'barney' }
10364 */
10365 function wrapperChain() {
10366 return chain(this);
10367 }
10368
10369 /**
10370 * Executes the chain sequence and returns the wrapped result.
10371 *
10372 * @name commit
10373 * @memberOf _
10374 * @since 3.2.0
10375 * @category Seq
10376 * @returns {Object} Returns the new `lodash` wrapper instance.
10377 * @example
10378 *
10379 * var array = [1, 2];
10380 * var wrapped = _(array).push(3);
10381 *
10382 * console.log(array);
10383 * // => [1, 2]
10384 *
10385 * wrapped = wrapped.commit();
10386 * console.log(array);
10387 * // => [1, 2, 3]
10388 *
10389 * wrapped.last();
10390 * // => 3
10391 *
10392 * console.log(array);
10393 * // => [1, 2, 3]
10394 */
10395 function wrapperCommit() {
10396 return new LodashWrapper(this.value(), this.__chain__);
10397 }
10398
10399 /**
10400 * Gets the next value on a wrapped object following the
10401 * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
10402 *
10403 * @name next
10404 * @memberOf _
10405 * @since 4.0.0
10406 * @category Seq
10407 * @returns {Object} Returns the next iterator value.
10408 * @example
10409 *
10410 * var wrapped = _([1, 2]);
10411 *
10412 * wrapped.next();
10413 * // => { 'done': false, 'value': 1 }
10414 *
10415 * wrapped.next();
10416 * // => { 'done': false, 'value': 2 }
10417 *
10418 * wrapped.next();
10419 * // => { 'done': true, 'value': undefined }
10420 */
10421 function wrapperNext() {
10422 if (this.__values__ === undefined) {
10423 this.__values__ = toArray(this.value());
10424 }
10425 var done = this.__index__ >= this.__values__.length,
10426 value = done ? undefined : this.__values__[this.__index__++];
10427
10428 return { 'done': done, 'value': value };
10429 }
10430
10431 /**
10432 * Enables the wrapper to be iterable.
10433 *
10434 * @name Symbol.iterator
10435 * @memberOf _
10436 * @since 4.0.0
10437 * @category Seq
10438 * @returns {Object} Returns the wrapper object.
10439 * @example
10440 *
10441 * var wrapped = _([1, 2]);
10442 *
10443 * wrapped[Symbol.iterator]() === wrapped;
10444 * // => true
10445 *
10446 * Array.from(wrapped);
10447 * // => [1, 2]
10448 */
10449 function wrapperToIterator() {
10450 return this;
10451 }
10452
10453 /**
10454 * Creates a clone of the chain sequence planting `value` as the wrapped value.
10455 *
10456 * @name plant
10457 * @memberOf _
10458 * @since 3.2.0
10459 * @category Seq
10460 * @param {*} value The value to plant.
10461 * @returns {Object} Returns the new `lodash` wrapper instance.
10462 * @example
10463 *
10464 * function square(n) {
10465 * return n * n;
10466 * }
10467 *
10468 * var wrapped = _([1, 2]).map(square);
10469 * var other = wrapped.plant([3, 4]);
10470 *
10471 * other.value();
10472 * // => [9, 16]
10473 *
10474 * wrapped.value();
10475 * // => [1, 4]
10476 */
10477 function wrapperPlant(value) {
10478 var result,
10479 parent = this;
10480
10481 while (parent instanceof baseLodash) {
10482 var clone = wrapperClone(parent);
10483 clone.__index__ = 0;
10484 clone.__values__ = undefined;
10485 if (result) {
10486 previous.__wrapped__ = clone;
10487 } else {
10488 result = clone;
10489 }
10490 var previous = clone;
10491 parent = parent.__wrapped__;
10492 }
10493 previous.__wrapped__ = value;
10494 return result;
10495 }
10496
10497 /**
10498 * This method is the wrapper version of `_.reverse`.
10499 *
10500 * **Note:** This method mutates the wrapped array.
10501 *
10502 * @name reverse
10503 * @memberOf _
10504 * @since 0.1.0
10505 * @category Seq
10506 * @returns {Object} Returns the new `lodash` wrapper instance.
10507 * @example
10508 *
10509 * var array = [1, 2, 3];
10510 *
10511 * _(array).reverse().value()
10512 * // => [3, 2, 1]
10513 *
10514 * console.log(array);
10515 * // => [3, 2, 1]
10516 */
10517 function wrapperReverse() {
10518 var value = this.__wrapped__;
10519 if (value instanceof LazyWrapper) {
10520 var wrapped = value;
10521 if (this.__actions__.length) {
10522 wrapped = new LazyWrapper(this);
10523 }
10524 wrapped = wrapped.reverse();
10525 wrapped.__actions__.push({
10526 'func': thru,
10527 'args': [reverse],
10528 'thisArg': undefined
10529 });
10530 return new LodashWrapper(wrapped, this.__chain__);
10531 }
10532 return this.thru(reverse);
10533 }
10534
10535 /**
10536 * Executes the chain sequence to resolve the unwrapped value.
10537 *
10538 * @name value
10539 * @memberOf _
10540 * @since 0.1.0
10541 * @alias toJSON, valueOf
10542 * @category Seq
10543 * @returns {*} Returns the resolved unwrapped value.
10544 * @example
10545 *
10546 * _([1, 2, 3]).value();
10547 * // => [1, 2, 3]
10548 */
10549 function wrapperValue() {
10550 return baseWrapperValue(this.__wrapped__, this.__actions__);
10551 }
10552
10553 /*------------------------------------------------------------------------*/
10554
10555 /**
10556 * Creates an object composed of keys generated from the results of running
10557 * each element of `collection` thru `iteratee`. The corresponding value of
10558 * each key is the number of times the key was returned by `iteratee`. The
10559 * iteratee is invoked with one argument: (value).
10560 *
10561 * @static
10562 * @memberOf _
10563 * @since 0.5.0
10564 * @category Collection
10565 * @param {Array|Object} collection The collection to iterate over.
10566 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
10567 * @returns {Object} Returns the composed aggregate object.
10568 * @example
10569 *
10570 * _.countBy([6.1, 4.2, 6.3], Math.floor);
10571 * // => { '4': 1, '6': 2 }
10572 *
10573 * // The `_.property` iteratee shorthand.
10574 * _.countBy(['one', 'two', 'three'], 'length');
10575 * // => { '3': 2, '5': 1 }
10576 */
10577 var countBy = createAggregator(function(result, value, key) {
10578 if (hasOwnProperty.call(result, key)) {
10579 ++result[key];
10580 } else {
10581 baseAssignValue(result, key, 1);
10582 }
10583 });
10584
10585 /**
10586 * Checks if `predicate` returns truthy for **all** elements of `collection`.
10587 * Iteration is stopped once `predicate` returns falsey. The predicate is
10588 * invoked with three arguments: (value, index|key, collection).
10589 *
10590 * **Note:** This method returns `true` for
10591 * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
10592 * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
10593 * elements of empty collections.
10594 *
10595 * @static
10596 * @memberOf _
10597 * @since 0.1.0
10598 * @category Collection
10599 * @param {Array|Object} collection The collection to iterate over.
10600 * @param {Function} [predicate=_.identity] The function invoked per iteration.
10601 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
10602 * @returns {boolean} Returns `true` if all elements pass the predicate check,
10603 * else `false`.
10604 * @example
10605 *
10606 * _.every([true, 1, null, 'yes'], Boolean);
10607 * // => false
10608 *
10609 * var users = [
10610 * { 'user': 'barney', 'age': 36, 'active': false },
10611 * { 'user': 'fred', 'age': 40, 'active': false }
10612 * ];
10613 *
10614 * // The `_.matches` iteratee shorthand.
10615 * _.every(users, { 'user': 'barney', 'active': false });
10616 * // => false
10617 *
10618 * // The `_.matchesProperty` iteratee shorthand.
10619 * _.every(users, ['active', false]);
10620 * // => true
10621 *
10622 * // The `_.property` iteratee shorthand.
10623 * _.every(users, 'active');
10624 * // => false
10625 */
10626 function every(collection, predicate, guard) {
10627 var func = isArray(collection) ? arrayEvery : baseEvery;
10628 if (guard && isIterateeCall(collection, predicate, guard)) {
10629 predicate = undefined;
10630 }
10631 return func(collection, getIteratee(predicate, 3));
10632 }
10633
10634 /**
10635 * Iterates over elements of `collection`, returning an array of all elements
10636 * `predicate` returns truthy for. The predicate is invoked with three
10637 * arguments: (value, index|key, collection).
10638 *
10639 * **Note:** Unlike `_.remove`, this method returns a new array.
10640 *
10641 * @static
10642 * @memberOf _
10643 * @since 0.1.0
10644 * @category Collection
10645 * @param {Array|Object} collection The collection to iterate over.
10646 * @param {Function} [predicate=_.identity] The function invoked per iteration.
10647 * @returns {Array} Returns the new filtered array.
10648 * @see _.reject
10649 * @example
10650 *
10651 * var users = [
10652 * { 'user': 'barney', 'age': 36, 'active': true },
10653 * { 'user': 'fred', 'age': 40, 'active': false }
10654 * ];
10655 *
10656 * _.filter(users, function(o) { return !o.active; });
10657 * // => objects for ['fred']
10658 *
10659 * // The `_.matches` iteratee shorthand.
10660 * _.filter(users, { 'age': 36, 'active': true });
10661 * // => objects for ['barney']
10662 *
10663 * // The `_.matchesProperty` iteratee shorthand.
10664 * _.filter(users, ['active', false]);
10665 * // => objects for ['fred']
10666 *
10667 * // The `_.property` iteratee shorthand.
10668 * _.filter(users, 'active');
10669 * // => objects for ['barney']
10670 */
10671 function filter(collection, predicate) {
10672 var func = isArray(collection) ? arrayFilter : baseFilter;
10673 return func(collection, getIteratee(predicate, 3));
10674 }
10675
10676 /**
10677 * Iterates over elements of `collection`, returning the first element
10678 * `predicate` returns truthy for. The predicate is invoked with three
10679 * arguments: (value, index|key, collection).
10680 *
10681 * @static
10682 * @memberOf _
10683 * @since 0.1.0
10684 * @category Collection
10685 * @param {Array|Object} collection The collection to inspect.
10686 * @param {Function} [predicate=_.identity] The function invoked per iteration.
10687 * @param {number} [fromIndex=0] The index to search from.
10688 * @returns {*} Returns the matched element, else `undefined`.
10689 * @example
10690 *
10691 * var users = [
10692 * { 'user': 'barney', 'age': 36, 'active': true },
10693 * { 'user': 'fred', 'age': 40, 'active': false },
10694 * { 'user': 'pebbles', 'age': 1, 'active': true }
10695 * ];
10696 *
10697 * _.find(users, function(o) { return o.age < 40; });
10698 * // => object for 'barney'
10699 *
10700 * // The `_.matches` iteratee shorthand.
10701 * _.find(users, { 'age': 1, 'active': true });
10702 * // => object for 'pebbles'
10703 *
10704 * // The `_.matchesProperty` iteratee shorthand.
10705 * _.find(users, ['active', false]);
10706 * // => object for 'fred'
10707 *
10708 * // The `_.property` iteratee shorthand.
10709 * _.find(users, 'active');
10710 * // => object for 'barney'
10711 */
10712 var find = createFind(findIndex);
10713
10714 /**
10715 * This method is like `_.find` except that it iterates over elements of
10716 * `collection` from right to left.
10717 *
10718 * @static
10719 * @memberOf _
10720 * @since 2.0.0
10721 * @category Collection
10722 * @param {Array|Object} collection The collection to inspect.
10723 * @param {Function} [predicate=_.identity] The function invoked per iteration.
10724 * @param {number} [fromIndex=collection.length-1] The index to search from.
10725 * @returns {*} Returns the matched element, else `undefined`.
10726 * @example
10727 *
10728 * _.findLast([1, 2, 3, 4], function(n) {
10729 * return n % 2 == 1;
10730 * });
10731 * // => 3
10732 */
10733 var findLast = createFind(findLastIndex);
10734
10735 /**
10736 * Creates a flattened array of values by running each element in `collection`
10737 * thru `iteratee` and flattening the mapped results. The iteratee is invoked
10738 * with three arguments: (value, index|key, collection).
10739 *
10740 * @static
10741 * @memberOf _
10742 * @since 4.0.0
10743 * @category Collection
10744 * @param {Array|Object} collection The collection to iterate over.
10745 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10746 * @returns {Array} Returns the new flattened array.
10747 * @example
10748 *
10749 * function duplicate(n) {
10750 * return [n, n];
10751 * }
10752 *
10753 * _.flatMap([1, 2], duplicate);
10754 * // => [1, 1, 2, 2]
10755 */
10756 function flatMap(collection, iteratee) {
10757 return baseFlatten(map(collection, iteratee), 1);
10758 }
10759
10760 /**
10761 * This method is like `_.flatMap` except that it recursively flattens the
10762 * mapped results.
10763 *
10764 * @static
10765 * @memberOf _
10766 * @since 4.7.0
10767 * @category Collection
10768 * @param {Array|Object} collection The collection to iterate over.
10769 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10770 * @returns {Array} Returns the new flattened array.
10771 * @example
10772 *
10773 * function duplicate(n) {
10774 * return [[[n, n]]];
10775 * }
10776 *
10777 * _.flatMapDeep([1, 2], duplicate);
10778 * // => [1, 1, 2, 2]
10779 */
10780 function flatMapDeep(collection, iteratee) {
10781 return baseFlatten(map(collection, iteratee), INFINITY);
10782 }
10783
10784 /**
10785 * This method is like `_.flatMap` except that it recursively flattens the
10786 * mapped results up to `depth` times.
10787 *
10788 * @static
10789 * @memberOf _
10790 * @since 4.7.0
10791 * @category Collection
10792 * @param {Array|Object} collection The collection to iterate over.
10793 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10794 * @param {number} [depth=1] The maximum recursion depth.
10795 * @returns {Array} Returns the new flattened array.
10796 * @example
10797 *
10798 * function duplicate(n) {
10799 * return [[[n, n]]];
10800 * }
10801 *
10802 * _.flatMapDepth([1, 2], duplicate, 2);
10803 * // => [[1, 1], [2, 2]]
10804 */
10805 function flatMapDepth(collection, iteratee, depth) {
10806 depth = depth === undefined ? 1 : toInteger(depth);
10807 return baseFlatten(map(collection, iteratee), depth);
10808 }
10809
10810 /**
10811 * Iterates over elements of `collection` and invokes `iteratee` for each element.
10812 * The iteratee is invoked with three arguments: (value, index|key, collection).
10813 * Iteratee functions may exit iteration early by explicitly returning `false`.
10814 *
10815 * **Note:** As with other "Collections" methods, objects with a "length"
10816 * property are iterated like arrays. To avoid this behavior use `_.forIn`
10817 * or `_.forOwn` for object iteration.
10818 *
10819 * @static
10820 * @memberOf _
10821 * @since 0.1.0
10822 * @alias each
10823 * @category Collection
10824 * @param {Array|Object} collection The collection to iterate over.
10825 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10826 * @returns {Array|Object} Returns `collection`.
10827 * @see _.forEachRight
10828 * @example
10829 *
10830 * _.forEach([1, 2], function(value) {
10831 * console.log(value);
10832 * });
10833 * // => Logs `1` then `2`.
10834 *
10835 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
10836 * console.log(key);
10837 * });
10838 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
10839 */
10840 function forEach(collection, iteratee) {
10841 var func = isArray(collection) ? arrayEach : baseEach;
10842 return func(collection, getIteratee(iteratee, 3));
10843 }
10844
10845 /**
10846 * This method is like `_.forEach` except that it iterates over elements of
10847 * `collection` from right to left.
10848 *
10849 * @static
10850 * @memberOf _
10851 * @since 2.0.0
10852 * @alias eachRight
10853 * @category Collection
10854 * @param {Array|Object} collection The collection to iterate over.
10855 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10856 * @returns {Array|Object} Returns `collection`.
10857 * @see _.forEach
10858 * @example
10859 *
10860 * _.forEachRight([1, 2], function(value) {
10861 * console.log(value);
10862 * });
10863 * // => Logs `2` then `1`.
10864 */
10865 function forEachRight(collection, iteratee) {
10866 var func = isArray(collection) ? arrayEachRight : baseEachRight;
10867 return func(collection, getIteratee(iteratee, 3));
10868 }
10869
10870 /**
10871 * Creates an object composed of keys generated from the results of running
10872 * each element of `collection` thru `iteratee`. The order of grouped values
10873 * is determined by the order they occur in `collection`. The corresponding
10874 * value of each key is an array of elements responsible for generating the
10875 * key. The iteratee is invoked with one argument: (value).
10876 *
10877 * @static
10878 * @memberOf _
10879 * @since 0.1.0
10880 * @category Collection
10881 * @param {Array|Object} collection The collection to iterate over.
10882 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
10883 * @returns {Object} Returns the composed aggregate object.
10884 * @example
10885 *
10886 * _.groupBy([6.1, 4.2, 6.3], Math.floor);
10887 * // => { '4': [4.2], '6': [6.1, 6.3] }
10888 *
10889 * // The `_.property` iteratee shorthand.
10890 * _.groupBy(['one', 'two', 'three'], 'length');
10891 * // => { '3': ['one', 'two'], '5': ['three'] }
10892 */
10893 var groupBy = createAggregator(function(result, value, key) {
10894 if (hasOwnProperty.call(result, key)) {
10895 result[key].push(value);
10896 } else {
10897 baseAssignValue(result, key, [value]);
10898 }
10899 });
10900
10901 /**
10902 * Checks if `value` is in `collection`. If `collection` is a string, it's
10903 * checked for a substring of `value`, otherwise
10904 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
10905 * is used for equality comparisons. If `fromIndex` is negative, it's used as
10906 * the offset from the end of `collection`.
10907 *
10908 * @static
10909 * @memberOf _
10910 * @since 0.1.0
10911 * @category Collection
10912 * @param {Array|Object|string} collection The collection to inspect.
10913 * @param {*} value The value to search for.
10914 * @param {number} [fromIndex=0] The index to search from.
10915 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
10916 * @returns {boolean} Returns `true` if `value` is found, else `false`.
10917 * @example
10918 *
10919 * _.includes([1, 2, 3], 1);
10920 * // => true
10921 *
10922 * _.includes([1, 2, 3], 1, 2);
10923 * // => false
10924 *
10925 * _.includes({ 'a': 1, 'b': 2 }, 1);
10926 * // => true
10927 *
10928 * _.includes('abcd', 'bc');
10929 * // => true
10930 */
10931 function includes(collection, value, fromIndex, guard) {
10932 collection = isArrayLike(collection) ? collection : values(collection);
10933 fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
10934
10935 var length = collection.length;
10936 if (fromIndex < 0) {
10937 fromIndex = nativeMax(length + fromIndex, 0);
10938 }
10939 return isString(collection)
10940 ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
10941 : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
10942 }
10943
10944 /**
10945 * Invokes the method at `path` of each element in `collection`, returning
10946 * an array of the results of each invoked method. Any additional arguments
10947 * are provided to each invoked method. If `path` is a function, it's invoked
10948 * for, and `this` bound to, each element in `collection`.
10949 *
10950 * @static
10951 * @memberOf _
10952 * @since 4.0.0
10953 * @category Collection
10954 * @param {Array|Object} collection The collection to iterate over.
10955 * @param {Array|Function|string} path The path of the method to invoke or
10956 * the function invoked per iteration.
10957 * @param {...*} [args] The arguments to invoke each method with.
10958 * @returns {Array} Returns the array of results.
10959 * @example
10960 *
10961 * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
10962 * // => [[1, 5, 7], [1, 2, 3]]
10963 *
10964 * _.invokeMap([123, 456], String.prototype.split, '');
10965 * // => [['1', '2', '3'], ['4', '5', '6']]
10966 */
10967 var invokeMap = baseRest(function(collection, path, args) {
10968 var index = -1,
10969 isFunc = typeof path == 'function',
10970 result = isArrayLike(collection) ? Array(collection.length) : [];
10971
10972 baseEach(collection, function(value) {
10973 result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
10974 });
10975 return result;
10976 });
10977
10978 /**
10979 * Creates an object composed of keys generated from the results of running
10980 * each element of `collection` thru `iteratee`. The corresponding value of
10981 * each key is the last element responsible for generating the key. The
10982 * iteratee is invoked with one argument: (value).
10983 *
10984 * @static
10985 * @memberOf _
10986 * @since 4.0.0
10987 * @category Collection
10988 * @param {Array|Object} collection The collection to iterate over.
10989 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
10990 * @returns {Object} Returns the composed aggregate object.
10991 * @example
10992 *
10993 * var array = [
10994 * { 'dir': 'left', 'code': 97 },
10995 * { 'dir': 'right', 'code': 100 }
10996 * ];
10997 *
10998 * _.keyBy(array, function(o) {
10999 * return String.fromCharCode(o.code);
11000 * });
11001 * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
11002 *
11003 * _.keyBy(array, 'dir');
11004 * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
11005 */
11006 var keyBy = createAggregator(function(result, value, key) {
11007 baseAssignValue(result, key, value);
11008 });
11009
11010 /**
11011 * Creates an array of values by running each element in `collection` thru
11012 * `iteratee`. The iteratee is invoked with three arguments:
11013 * (value, index|key, collection).
11014 *
11015 * Many lodash methods are guarded to work as iteratees for methods like
11016 * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
11017 *
11018 * The guarded methods are:
11019 * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
11020 * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
11021 * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
11022 * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
11023 *
11024 * @static
11025 * @memberOf _
11026 * @since 0.1.0
11027 * @category Collection
11028 * @param {Array|Object} collection The collection to iterate over.
11029 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11030 * @returns {Array} Returns the new mapped array.
11031 * @example
11032 *
11033 * function square(n) {
11034 * return n * n;
11035 * }
11036 *
11037 * _.map([4, 8], square);
11038 * // => [16, 64]
11039 *
11040 * _.map({ 'a': 4, 'b': 8 }, square);
11041 * // => [16, 64] (iteration order is not guaranteed)
11042 *
11043 * var users = [
11044 * { 'user': 'barney' },
11045 * { 'user': 'fred' }
11046 * ];
11047 *
11048 * // The `_.property` iteratee shorthand.
11049 * _.map(users, 'user');
11050 * // => ['barney', 'fred']
11051 */
11052 function map(collection, iteratee) {
11053 var func = isArray(collection) ? arrayMap : baseMap;
11054 return func(collection, getIteratee(iteratee, 3));
11055 }
11056
11057 /**
11058 * This method is like `_.sortBy` except that it allows specifying the sort
11059 * orders of the iteratees to sort by. If `orders` is unspecified, all values
11060 * are sorted in ascending order. Otherwise, specify an order of "desc" for
11061 * descending or "asc" for ascending sort order of corresponding values.
11062 *
11063 * @static
11064 * @memberOf _
11065 * @since 4.0.0
11066 * @category Collection
11067 * @param {Array|Object} collection The collection to iterate over.
11068 * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
11069 * The iteratees to sort by.
11070 * @param {string[]} [orders] The sort orders of `iteratees`.
11071 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
11072 * @returns {Array} Returns the new sorted array.
11073 * @example
11074 *
11075 * var users = [
11076 * { 'user': 'fred', 'age': 48 },
11077 * { 'user': 'barney', 'age': 34 },
11078 * { 'user': 'fred', 'age': 40 },
11079 * { 'user': 'barney', 'age': 36 }
11080 * ];
11081 *
11082 * // Sort by `user` in ascending order and by `age` in descending order.
11083 * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
11084 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
11085 */
11086 function orderBy(collection, iteratees, orders, guard) {
11087 if (collection == null) {
11088 return [];
11089 }
11090 if (!isArray(iteratees)) {
11091 iteratees = iteratees == null ? [] : [iteratees];
11092 }
11093 orders = guard ? undefined : orders;
11094 if (!isArray(orders)) {
11095 orders = orders == null ? [] : [orders];
11096 }
11097 return baseOrderBy(collection, iteratees, orders);
11098 }
11099
11100 /**
11101 * Creates an array of elements split into two groups, the first of which
11102 * contains elements `predicate` returns truthy for, the second of which
11103 * contains elements `predicate` returns falsey for. The predicate is
11104 * invoked with one argument: (value).
11105 *
11106 * @static
11107 * @memberOf _
11108 * @since 3.0.0
11109 * @category Collection
11110 * @param {Array|Object} collection The collection to iterate over.
11111 * @param {Function} [predicate=_.identity] The function invoked per iteration.
11112 * @returns {Array} Returns the array of grouped elements.
11113 * @example
11114 *
11115 * var users = [
11116 * { 'user': 'barney', 'age': 36, 'active': false },
11117 * { 'user': 'fred', 'age': 40, 'active': true },
11118 * { 'user': 'pebbles', 'age': 1, 'active': false }
11119 * ];
11120 *
11121 * _.partition(users, function(o) { return o.active; });
11122 * // => objects for [['fred'], ['barney', 'pebbles']]
11123 *
11124 * // The `_.matches` iteratee shorthand.
11125 * _.partition(users, { 'age': 1, 'active': false });
11126 * // => objects for [['pebbles'], ['barney', 'fred']]
11127 *
11128 * // The `_.matchesProperty` iteratee shorthand.
11129 * _.partition(users, ['active', false]);
11130 * // => objects for [['barney', 'pebbles'], ['fred']]
11131 *
11132 * // The `_.property` iteratee shorthand.
11133 * _.partition(users, 'active');
11134 * // => objects for [['fred'], ['barney', 'pebbles']]
11135 */
11136 var partition = createAggregator(function(result, value, key) {
11137 result[key ? 0 : 1].push(value);
11138 }, function() { return [[], []]; });
11139
11140 /**
11141 * Reduces `collection` to a value which is the accumulated result of running
11142 * each element in `collection` thru `iteratee`, where each successive
11143 * invocation is supplied the return value of the previous. If `accumulator`
11144 * is not given, the first element of `collection` is used as the initial
11145 * value. The iteratee is invoked with four arguments:
11146 * (accumulator, value, index|key, collection).
11147 *
11148 * Many lodash methods are guarded to work as iteratees for methods like
11149 * `_.reduce`, `_.reduceRight`, and `_.transform`.
11150 *
11151 * The guarded methods are:
11152 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
11153 * and `sortBy`
11154 *
11155 * @static
11156 * @memberOf _
11157 * @since 0.1.0
11158 * @category Collection
11159 * @param {Array|Object} collection The collection to iterate over.
11160 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11161 * @param {*} [accumulator] The initial value.
11162 * @returns {*} Returns the accumulated value.
11163 * @see _.reduceRight
11164 * @example
11165 *
11166 * _.reduce([1, 2], function(sum, n) {
11167 * return sum + n;
11168 * }, 0);
11169 * // => 3
11170 *
11171 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
11172 * (result[value] || (result[value] = [])).push(key);
11173 * return result;
11174 * }, {});
11175 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
11176 */
11177 function reduce(collection, iteratee, accumulator) {
11178 var func = isArray(collection) ? arrayReduce : baseReduce,
11179 initAccum = arguments.length < 3;
11180
11181 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
11182 }
11183
11184 /**
11185 * This method is like `_.reduce` except that it iterates over elements of
11186 * `collection` from right to left.
11187 *
11188 * @static
11189 * @memberOf _
11190 * @since 0.1.0
11191 * @category Collection
11192 * @param {Array|Object} collection The collection to iterate over.
11193 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11194 * @param {*} [accumulator] The initial value.
11195 * @returns {*} Returns the accumulated value.
11196 * @see _.reduce
11197 * @example
11198 *
11199 * var array = [[0, 1], [2, 3], [4, 5]];
11200 *
11201 * _.reduceRight(array, function(flattened, other) {
11202 * return flattened.concat(other);
11203 * }, []);
11204 * // => [4, 5, 2, 3, 0, 1]
11205 */
11206 function reduceRight(collection, iteratee, accumulator) {
11207 var func = isArray(collection) ? arrayReduceRight : baseReduce,
11208 initAccum = arguments.length < 3;
11209
11210 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
11211 }
11212
11213 /**
11214 * The opposite of `_.filter`; this method returns the elements of `collection`
11215 * that `predicate` does **not** return truthy for.
11216 *
11217 * @static
11218 * @memberOf _
11219 * @since 0.1.0
11220 * @category Collection
11221 * @param {Array|Object} collection The collection to iterate over.
11222 * @param {Function} [predicate=_.identity] The function invoked per iteration.
11223 * @returns {Array} Returns the new filtered array.
11224 * @see _.filter
11225 * @example
11226 *
11227 * var users = [
11228 * { 'user': 'barney', 'age': 36, 'active': false },
11229 * { 'user': 'fred', 'age': 40, 'active': true }
11230 * ];
11231 *
11232 * _.reject(users, function(o) { return !o.active; });
11233 * // => objects for ['fred']
11234 *
11235 * // The `_.matches` iteratee shorthand.
11236 * _.reject(users, { 'age': 40, 'active': true });
11237 * // => objects for ['barney']
11238 *
11239 * // The `_.matchesProperty` iteratee shorthand.
11240 * _.reject(users, ['active', false]);
11241 * // => objects for ['fred']
11242 *
11243 * // The `_.property` iteratee shorthand.
11244 * _.reject(users, 'active');
11245 * // => objects for ['barney']
11246 */
11247 function reject(collection, predicate) {
11248 var func = isArray(collection) ? arrayFilter : baseFilter;
11249 return func(collection, negate(getIteratee(predicate, 3)));
11250 }
11251
11252 /**
11253 * Gets a random element from `collection`.
11254 *
11255 * @static
11256 * @memberOf _
11257 * @since 2.0.0
11258 * @category Collection
11259 * @param {Array|Object} collection The collection to sample.
11260 * @returns {*} Returns the random element.
11261 * @example
11262 *
11263 * _.sample([1, 2, 3, 4]);
11264 * // => 2
11265 */
11266 function sample(collection) {
11267 var func = isArray(collection) ? arraySample : baseSample;
11268 return func(collection);
11269 }
11270
11271 /**
11272 * Gets `n` random elements at unique keys from `collection` up to the
11273 * size of `collection`.
11274 *
11275 * @static
11276 * @memberOf _
11277 * @since 4.0.0
11278 * @category Collection
11279 * @param {Array|Object} collection The collection to sample.
11280 * @param {number} [n=1] The number of elements to sample.
11281 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
11282 * @returns {Array} Returns the random elements.
11283 * @example
11284 *
11285 * _.sampleSize([1, 2, 3], 2);
11286 * // => [3, 1]
11287 *
11288 * _.sampleSize([1, 2, 3], 4);
11289 * // => [2, 3, 1]
11290 */
11291 function sampleSize(collection, n, guard) {
11292 if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
11293 n = 1;
11294 } else {
11295 n = toInteger(n);
11296 }
11297 var func = isArray(collection) ? arraySampleSize : baseSampleSize;
11298 return func(collection, n);
11299 }
11300
11301 /**
11302 * Creates an array of shuffled values, using a version of the
11303 * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
11304 *
11305 * @static
11306 * @memberOf _
11307 * @since 0.1.0
11308 * @category Collection
11309 * @param {Array|Object} collection The collection to shuffle.
11310 * @returns {Array} Returns the new shuffled array.
11311 * @example
11312 *
11313 * _.shuffle([1, 2, 3, 4]);
11314 * // => [4, 1, 3, 2]
11315 */
11316 function shuffle(collection) {
11317 var func = isArray(collection) ? arrayShuffle : baseShuffle;
11318 return func(collection);
11319 }
11320
11321 /**
11322 * Gets the size of `collection` by returning its length for array-like
11323 * values or the number of own enumerable string keyed properties for objects.
11324 *
11325 * @static
11326 * @memberOf _
11327 * @since 0.1.0
11328 * @category Collection
11329 * @param {Array|Object|string} collection The collection to inspect.
11330 * @returns {number} Returns the collection size.
11331 * @example
11332 *
11333 * _.size([1, 2, 3]);
11334 * // => 3
11335 *
11336 * _.size({ 'a': 1, 'b': 2 });
11337 * // => 2
11338 *
11339 * _.size('pebbles');
11340 * // => 7
11341 */
11342 function size(collection) {
11343 if (collection == null) {
11344 return 0;
11345 }
11346 if (isArrayLike(collection)) {
11347 return isString(collection) ? stringSize(collection) : collection.length;
11348 }
11349 var tag = getTag(collection);
11350 if (tag == mapTag || tag == setTag) {
11351 return collection.size;
11352 }
11353 return baseKeys(collection).length;
11354 }
11355
11356 /**
11357 * Checks if `predicate` returns truthy for **any** element of `collection`.
11358 * Iteration is stopped once `predicate` returns truthy. The predicate is
11359 * invoked with three arguments: (value, index|key, collection).
11360 *
11361 * @static
11362 * @memberOf _
11363 * @since 0.1.0
11364 * @category Collection
11365 * @param {Array|Object} collection The collection to iterate over.
11366 * @param {Function} [predicate=_.identity] The function invoked per iteration.
11367 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
11368 * @returns {boolean} Returns `true` if any element passes the predicate check,
11369 * else `false`.
11370 * @example
11371 *
11372 * _.some([null, 0, 'yes', false], Boolean);
11373 * // => true
11374 *
11375 * var users = [
11376 * { 'user': 'barney', 'active': true },
11377 * { 'user': 'fred', 'active': false }
11378 * ];
11379 *
11380 * // The `_.matches` iteratee shorthand.
11381 * _.some(users, { 'user': 'barney', 'active': false });
11382 * // => false
11383 *
11384 * // The `_.matchesProperty` iteratee shorthand.
11385 * _.some(users, ['active', false]);
11386 * // => true
11387 *
11388 * // The `_.property` iteratee shorthand.
11389 * _.some(users, 'active');
11390 * // => true
11391 */
11392 function some(collection, predicate, guard) {
11393 var func = isArray(collection) ? arraySome : baseSome;
11394 if (guard && isIterateeCall(collection, predicate, guard)) {
11395 predicate = undefined;
11396 }
11397 return func(collection, getIteratee(predicate, 3));
11398 }
11399
11400 /**
11401 * Creates an array of elements, sorted in ascending order by the results of
11402 * running each element in a collection thru each iteratee. This method
11403 * performs a stable sort, that is, it preserves the original sort order of
11404 * equal elements. The iteratees are invoked with one argument: (value).
11405 *
11406 * @static
11407 * @memberOf _
11408 * @since 0.1.0
11409 * @category Collection
11410 * @param {Array|Object} collection The collection to iterate over.
11411 * @param {...(Function|Function[])} [iteratees=[_.identity]]
11412 * The iteratees to sort by.
11413 * @returns {Array} Returns the new sorted array.
11414 * @example
11415 *
11416 * var users = [
11417 * { 'user': 'fred', 'age': 48 },
11418 * { 'user': 'barney', 'age': 36 },
11419 * { 'user': 'fred', 'age': 40 },
11420 * { 'user': 'barney', 'age': 34 }
11421 * ];
11422 *
11423 * _.sortBy(users, [function(o) { return o.user; }]);
11424 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
11425 *
11426 * _.sortBy(users, ['user', 'age']);
11427 * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
11428 */
11429 var sortBy = baseRest(function(collection, iteratees) {
11430 if (collection == null) {
11431 return [];
11432 }
11433 var length = iteratees.length;
11434 if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
11435 iteratees = [];
11436 } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
11437 iteratees = [iteratees[0]];
11438 }
11439 return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
11440 });
11441
11442 /*------------------------------------------------------------------------*/
11443
11444 /**
11445 * Gets the timestamp of the number of milliseconds that have elapsed since
11446 * the Unix epoch (1 January 1970 00:00:00 UTC).
11447 *
11448 * @static
11449 * @memberOf _
11450 * @since 2.4.0
11451 * @category Date
11452 * @returns {number} Returns the timestamp.
11453 * @example
11454 *
11455 * _.defer(function(stamp) {
11456 * console.log(_.now() - stamp);
11457 * }, _.now());
11458 * // => Logs the number of milliseconds it took for the deferred invocation.
11459 */
11460 var now = ctxNow || function() {
11461 return root.Date.now();
11462 };
11463
11464 /*------------------------------------------------------------------------*/
11465
11466 /**
11467 * The opposite of `_.before`; this method creates a function that invokes
11468 * `func` once it's called `n` or more times.
11469 *
11470 * @static
11471 * @memberOf _
11472 * @since 0.1.0
11473 * @category Function
11474 * @param {number} n The number of calls before `func` is invoked.
11475 * @param {Function} func The function to restrict.
11476 * @returns {Function} Returns the new restricted function.
11477 * @example
11478 *
11479 * var saves = ['profile', 'settings'];
11480 *
11481 * var done = _.after(saves.length, function() {
11482 * console.log('done saving!');
11483 * });
11484 *
11485 * _.forEach(saves, function(type) {
11486 * asyncSave({ 'type': type, 'complete': done });
11487 * });
11488 * // => Logs 'done saving!' after the two async saves have completed.
11489 */
11490 function after(n, func) {
11491 if (typeof func != 'function') {
11492 throw new TypeError(FUNC_ERROR_TEXT);
11493 }
11494 n = toInteger(n);
11495 return function() {
11496 if (--n < 1) {
11497 return func.apply(this, arguments);
11498 }
11499 };
11500 }
11501
11502 /**
11503 * Creates a function that invokes `func`, with up to `n` arguments,
11504 * ignoring any additional arguments.
11505 *
11506 * @static
11507 * @memberOf _
11508 * @since 3.0.0
11509 * @category Function
11510 * @param {Function} func The function to cap arguments for.
11511 * @param {number} [n=func.length] The arity cap.
11512 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
11513 * @returns {Function} Returns the new capped function.
11514 * @example
11515 *
11516 * _.map(['6', '8', '10'], _.ary(parseInt, 1));
11517 * // => [6, 8, 10]
11518 */
11519 function ary(func, n, guard) {
11520 n = guard ? undefined : n;
11521 n = (func && n == null) ? func.length : n;
11522 return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
11523 }
11524
11525 /**
11526 * Creates a function that invokes `func`, with the `this` binding and arguments
11527 * of the created function, while it's called less than `n` times. Subsequent
11528 * calls to the created function return the result of the last `func` invocation.
11529 *
11530 * @static
11531 * @memberOf _
11532 * @since 3.0.0
11533 * @category Function
11534 * @param {number} n The number of calls at which `func` is no longer invoked.
11535 * @param {Function} func The function to restrict.
11536 * @returns {Function} Returns the new restricted function.
11537 * @example
11538 *
11539 * jQuery(element).on('click', _.before(5, addContactToList));
11540 * // => Allows adding up to 4 contacts to the list.
11541 */
11542 function before(n, func) {
11543 var result;
11544 if (typeof func != 'function') {
11545 throw new TypeError(FUNC_ERROR_TEXT);
11546 }
11547 n = toInteger(n);
11548 return function() {
11549 if (--n > 0) {
11550 result = func.apply(this, arguments);
11551 }
11552 if (n <= 1) {
11553 func = undefined;
11554 }
11555 return result;
11556 };
11557 }
11558
11559 /**
11560 * Creates a function that invokes `func` with the `this` binding of `thisArg`
11561 * and `partials` prepended to the arguments it receives.
11562 *
11563 * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
11564 * may be used as a placeholder for partially applied arguments.
11565 *
11566 * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
11567 * property of bound functions.
11568 *
11569 * @static
11570 * @memberOf _
11571 * @since 0.1.0
11572 * @category Function
11573 * @param {Function} func The function to bind.
11574 * @param {*} thisArg The `this` binding of `func`.
11575 * @param {...*} [partials] The arguments to be partially applied.
11576 * @returns {Function} Returns the new bound function.
11577 * @example
11578 *
11579 * function greet(greeting, punctuation) {
11580 * return greeting + ' ' + this.user + punctuation;
11581 * }
11582 *
11583 * var object = { 'user': 'fred' };
11584 *
11585 * var bound = _.bind(greet, object, 'hi');
11586 * bound('!');
11587 * // => 'hi fred!'
11588 *
11589 * // Bound with placeholders.
11590 * var bound = _.bind(greet, object, _, '!');
11591 * bound('hi');
11592 * // => 'hi fred!'
11593 */
11594 var bind = baseRest(function(func, thisArg, partials) {
11595 var bitmask = WRAP_BIND_FLAG;
11596 if (partials.length) {
11597 var holders = replaceHolders(partials, getHolder(bind));
11598 bitmask |= WRAP_PARTIAL_FLAG;
11599 }
11600 return createWrap(func, bitmask, thisArg, partials, holders);
11601 });
11602
11603 /**
11604 * Creates a function that invokes the method at `object[key]` with `partials`
11605 * prepended to the arguments it receives.
11606 *
11607 * This method differs from `_.bind` by allowing bound functions to reference
11608 * methods that may be redefined or don't yet exist. See
11609 * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
11610 * for more details.
11611 *
11612 * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
11613 * builds, may be used as a placeholder for partially applied arguments.
11614 *
11615 * @static
11616 * @memberOf _
11617 * @since 0.10.0
11618 * @category Function
11619 * @param {Object} object The object to invoke the method on.
11620 * @param {string} key The key of the method.
11621 * @param {...*} [partials] The arguments to be partially applied.
11622 * @returns {Function} Returns the new bound function.
11623 * @example
11624 *
11625 * var object = {
11626 * 'user': 'fred',
11627 * 'greet': function(greeting, punctuation) {
11628 * return greeting + ' ' + this.user + punctuation;
11629 * }
11630 * };
11631 *
11632 * var bound = _.bindKey(object, 'greet', 'hi');
11633 * bound('!');
11634 * // => 'hi fred!'
11635 *
11636 * object.greet = function(greeting, punctuation) {
11637 * return greeting + 'ya ' + this.user + punctuation;
11638 * };
11639 *
11640 * bound('!');
11641 * // => 'hiya fred!'
11642 *
11643 * // Bound with placeholders.
11644 * var bound = _.bindKey(object, 'greet', _, '!');
11645 * bound('hi');
11646 * // => 'hiya fred!'
11647 */
11648 var bindKey = baseRest(function(object, key, partials) {
11649 var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
11650 if (partials.length) {
11651 var holders = replaceHolders(partials, getHolder(bindKey));
11652 bitmask |= WRAP_PARTIAL_FLAG;
11653 }
11654 return createWrap(key, bitmask, object, partials, holders);
11655 });
11656
11657 /**
11658 * Creates a function that accepts arguments of `func` and either invokes
11659 * `func` returning its result, if at least `arity` number of arguments have
11660 * been provided, or returns a function that accepts the remaining `func`
11661 * arguments, and so on. The arity of `func` may be specified if `func.length`
11662 * is not sufficient.
11663 *
11664 * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
11665 * may be used as a placeholder for provided arguments.
11666 *
11667 * **Note:** This method doesn't set the "length" property of curried functions.
11668 *
11669 * @static
11670 * @memberOf _
11671 * @since 2.0.0
11672 * @category Function
11673 * @param {Function} func The function to curry.
11674 * @param {number} [arity=func.length] The arity of `func`.
11675 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
11676 * @returns {Function} Returns the new curried function.
11677 * @example
11678 *
11679 * var abc = function(a, b, c) {
11680 * return [a, b, c];
11681 * };
11682 *
11683 * var curried = _.curry(abc);
11684 *
11685 * curried(1)(2)(3);
11686 * // => [1, 2, 3]
11687 *
11688 * curried(1, 2)(3);
11689 * // => [1, 2, 3]
11690 *
11691 * curried(1, 2, 3);
11692 * // => [1, 2, 3]
11693 *
11694 * // Curried with placeholders.
11695 * curried(1)(_, 3)(2);
11696 * // => [1, 2, 3]
11697 */
11698 function curry(func, arity, guard) {
11699 arity = guard ? undefined : arity;
11700 var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
11701 result.placeholder = curry.placeholder;
11702 return result;
11703 }
11704
11705 /**
11706 * This method is like `_.curry` except that arguments are applied to `func`
11707 * in the manner of `_.partialRight` instead of `_.partial`.
11708 *
11709 * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
11710 * builds, may be used as a placeholder for provided arguments.
11711 *
11712 * **Note:** This method doesn't set the "length" property of curried functions.
11713 *
11714 * @static
11715 * @memberOf _
11716 * @since 3.0.0
11717 * @category Function
11718 * @param {Function} func The function to curry.
11719 * @param {number} [arity=func.length] The arity of `func`.
11720 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
11721 * @returns {Function} Returns the new curried function.
11722 * @example
11723 *
11724 * var abc = function(a, b, c) {
11725 * return [a, b, c];
11726 * };
11727 *
11728 * var curried = _.curryRight(abc);
11729 *
11730 * curried(3)(2)(1);
11731 * // => [1, 2, 3]
11732 *
11733 * curried(2, 3)(1);
11734 * // => [1, 2, 3]
11735 *
11736 * curried(1, 2, 3);
11737 * // => [1, 2, 3]
11738 *
11739 * // Curried with placeholders.
11740 * curried(3)(1, _)(2);
11741 * // => [1, 2, 3]
11742 */
11743 function curryRight(func, arity, guard) {
11744 arity = guard ? undefined : arity;
11745 var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
11746 result.placeholder = curryRight.placeholder;
11747 return result;
11748 }
11749
11750 /**
11751 * Creates a debounced function that delays invoking `func` until after `wait`
11752 * milliseconds have elapsed since the last time the debounced function was
11753 * invoked. The debounced function comes with a `cancel` method to cancel
11754 * delayed `func` invocations and a `flush` method to immediately invoke them.
11755 * Provide `options` to indicate whether `func` should be invoked on the
11756 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
11757 * with the last arguments provided to the debounced function. Subsequent
11758 * calls to the debounced function return the result of the last `func`
11759 * invocation.
11760 *
11761 * **Note:** If `leading` and `trailing` options are `true`, `func` is
11762 * invoked on the trailing edge of the timeout only if the debounced function
11763 * is invoked more than once during the `wait` timeout.
11764 *
11765 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
11766 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
11767 *
11768 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
11769 * for details over the differences between `_.debounce` and `_.throttle`.
11770 *
11771 * @static
11772 * @memberOf _
11773 * @since 0.1.0
11774 * @category Function
11775 * @param {Function} func The function to debounce.
11776 * @param {number} [wait=0] The number of milliseconds to delay.
11777 * @param {Object} [options={}] The options object.
11778 * @param {boolean} [options.leading=false]
11779 * Specify invoking on the leading edge of the timeout.
11780 * @param {number} [options.maxWait]
11781 * The maximum time `func` is allowed to be delayed before it's invoked.
11782 * @param {boolean} [options.trailing=true]
11783 * Specify invoking on the trailing edge of the timeout.
11784 * @returns {Function} Returns the new debounced function.
11785 * @example
11786 *
11787 * // Avoid costly calculations while the window size is in flux.
11788 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
11789 *
11790 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
11791 * jQuery(element).on('click', _.debounce(sendMail, 300, {
11792 * 'leading': true,
11793 * 'trailing': false
11794 * }));
11795 *
11796 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
11797 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
11798 * var source = new EventSource('/stream');
11799 * jQuery(source).on('message', debounced);
11800 *
11801 * // Cancel the trailing debounced invocation.
11802 * jQuery(window).on('popstate', debounced.cancel);
11803 */
11804 function debounce(func, wait, options) {
11805 var lastArgs,
11806 lastThis,
11807 maxWait,
11808 result,
11809 timerId,
11810 lastCallTime,
11811 lastInvokeTime = 0,
11812 leading = false,
11813 maxing = false,
11814 trailing = true;
11815
11816 if (typeof func != 'function') {
11817 throw new TypeError(FUNC_ERROR_TEXT);
11818 }
11819 wait = toNumber(wait) || 0;
11820 if (isObject(options)) {
11821 leading = !!options.leading;
11822 maxing = 'maxWait' in options;
11823 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
11824 trailing = 'trailing' in options ? !!options.trailing : trailing;
11825 }
11826
11827 function invokeFunc(time) {
11828 var args = lastArgs,
11829 thisArg = lastThis;
11830
11831 lastArgs = lastThis = undefined;
11832 lastInvokeTime = time;
11833 result = func.apply(thisArg, args);
11834 return result;
11835 }
11836
11837 function leadingEdge(time) {
11838 // Reset any `maxWait` timer.
11839 lastInvokeTime = time;
11840 // Start the timer for the trailing edge.
11841 timerId = setTimeout(timerExpired, wait);
11842 // Invoke the leading edge.
11843 return leading ? invokeFunc(time) : result;
11844 }
11845
11846 function remainingWait(time) {
11847 var timeSinceLastCall = time - lastCallTime,
11848 timeSinceLastInvoke = time - lastInvokeTime,
11849 timeWaiting = wait - timeSinceLastCall;
11850
11851 return maxing
11852 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
11853 : timeWaiting;
11854 }
11855
11856 function shouldInvoke(time) {
11857 var timeSinceLastCall = time - lastCallTime,
11858 timeSinceLastInvoke = time - lastInvokeTime;
11859
11860 // Either this is the first call, activity has stopped and we're at the
11861 // trailing edge, the system time has gone backwards and we're treating
11862 // it as the trailing edge, or we've hit the `maxWait` limit.
11863 return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
11864 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
11865 }
11866
11867 function timerExpired() {
11868 var time = now();
11869 if (shouldInvoke(time)) {
11870 return trailingEdge(time);
11871 }
11872 // Restart the timer.
11873 timerId = setTimeout(timerExpired, remainingWait(time));
11874 }
11875
11876 function trailingEdge(time) {
11877 timerId = undefined;
11878
11879 // Only invoke if we have `lastArgs` which means `func` has been
11880 // debounced at least once.
11881 if (trailing && lastArgs) {
11882 return invokeFunc(time);
11883 }
11884 lastArgs = lastThis = undefined;
11885 return result;
11886 }
11887
11888 function cancel() {
11889 if (timerId !== undefined) {
11890 clearTimeout(timerId);
11891 }
11892 lastInvokeTime = 0;
11893 lastArgs = lastCallTime = lastThis = timerId = undefined;
11894 }
11895
11896 function flush() {
11897 return timerId === undefined ? result : trailingEdge(now());
11898 }
11899
11900 function debounced() {
11901 var time = now(),
11902 isInvoking = shouldInvoke(time);
11903
11904 lastArgs = arguments;
11905 lastThis = this;
11906 lastCallTime = time;
11907
11908 if (isInvoking) {
11909 if (timerId === undefined) {
11910 return leadingEdge(lastCallTime);
11911 }
11912 if (maxing) {
11913 // Handle invocations in a tight loop.
11914 timerId = setTimeout(timerExpired, wait);
11915 return invokeFunc(lastCallTime);
11916 }
11917 }
11918 if (timerId === undefined) {
11919 timerId = setTimeout(timerExpired, wait);
11920 }
11921 return result;
11922 }
11923 debounced.cancel = cancel;
11924 debounced.flush = flush;
11925 return debounced;
11926 }
11927
11928 /**
11929 * Defers invoking the `func` until the current call stack has cleared. Any
11930 * additional arguments are provided to `func` when it's invoked.
11931 *
11932 * @static
11933 * @memberOf _
11934 * @since 0.1.0
11935 * @category Function
11936 * @param {Function} func The function to defer.
11937 * @param {...*} [args] The arguments to invoke `func` with.
11938 * @returns {number} Returns the timer id.
11939 * @example
11940 *
11941 * _.defer(function(text) {
11942 * console.log(text);
11943 * }, 'deferred');
11944 * // => Logs 'deferred' after one millisecond.
11945 */
11946 var defer = baseRest(function(func, args) {
11947 return baseDelay(func, 1, args);
11948 });
11949
11950 /**
11951 * Invokes `func` after `wait` milliseconds. Any additional arguments are
11952 * provided to `func` when it's invoked.
11953 *
11954 * @static
11955 * @memberOf _
11956 * @since 0.1.0
11957 * @category Function
11958 * @param {Function} func The function to delay.
11959 * @param {number} wait The number of milliseconds to delay invocation.
11960 * @param {...*} [args] The arguments to invoke `func` with.
11961 * @returns {number} Returns the timer id.
11962 * @example
11963 *
11964 * _.delay(function(text) {
11965 * console.log(text);
11966 * }, 1000, 'later');
11967 * // => Logs 'later' after one second.
11968 */
11969 var delay = baseRest(function(func, wait, args) {
11970 return baseDelay(func, toNumber(wait) || 0, args);
11971 });
11972
11973 /**
11974 * Creates a function that invokes `func` with arguments reversed.
11975 *
11976 * @static
11977 * @memberOf _
11978 * @since 4.0.0
11979 * @category Function
11980 * @param {Function} func The function to flip arguments for.
11981 * @returns {Function} Returns the new flipped function.
11982 * @example
11983 *
11984 * var flipped = _.flip(function() {
11985 * return _.toArray(arguments);
11986 * });
11987 *
11988 * flipped('a', 'b', 'c', 'd');
11989 * // => ['d', 'c', 'b', 'a']
11990 */
11991 function flip(func) {
11992 return createWrap(func, WRAP_FLIP_FLAG);
11993 }
11994
11995 /**
11996 * Creates a function that memoizes the result of `func`. If `resolver` is
11997 * provided, it determines the cache key for storing the result based on the
11998 * arguments provided to the memoized function. By default, the first argument
11999 * provided to the memoized function is used as the map cache key. The `func`
12000 * is invoked with the `this` binding of the memoized function.
12001 *
12002 * **Note:** The cache is exposed as the `cache` property on the memoized
12003 * function. Its creation may be customized by replacing the `_.memoize.Cache`
12004 * constructor with one whose instances implement the
12005 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
12006 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
12007 *
12008 * @static
12009 * @memberOf _
12010 * @since 0.1.0
12011 * @category Function
12012 * @param {Function} func The function to have its output memoized.
12013 * @param {Function} [resolver] The function to resolve the cache key.
12014 * @returns {Function} Returns the new memoized function.
12015 * @example
12016 *
12017 * var object = { 'a': 1, 'b': 2 };
12018 * var other = { 'c': 3, 'd': 4 };
12019 *
12020 * var values = _.memoize(_.values);
12021 * values(object);
12022 * // => [1, 2]
12023 *
12024 * values(other);
12025 * // => [3, 4]
12026 *
12027 * object.a = 2;
12028 * values(object);
12029 * // => [1, 2]
12030 *
12031 * // Modify the result cache.
12032 * values.cache.set(object, ['a', 'b']);
12033 * values(object);
12034 * // => ['a', 'b']
12035 *
12036 * // Replace `_.memoize.Cache`.
12037 * _.memoize.Cache = WeakMap;
12038 */
12039 function memoize(func, resolver) {
12040 if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
12041 throw new TypeError(FUNC_ERROR_TEXT);
12042 }
12043 var memoized = function() {
12044 var args = arguments,
12045 key = resolver ? resolver.apply(this, args) : args[0],
12046 cache = memoized.cache;
12047
12048 if (cache.has(key)) {
12049 return cache.get(key);
12050 }
12051 var result = func.apply(this, args);
12052 memoized.cache = cache.set(key, result) || cache;
12053 return result;
12054 };
12055 memoized.cache = new (memoize.Cache || MapCache);
12056 return memoized;
12057 }
12058
12059 // Expose `MapCache`.
12060 memoize.Cache = MapCache;
12061
12062 /**
12063 * Creates a function that negates the result of the predicate `func`. The
12064 * `func` predicate is invoked with the `this` binding and arguments of the
12065 * created function.
12066 *
12067 * @static
12068 * @memberOf _
12069 * @since 3.0.0
12070 * @category Function
12071 * @param {Function} predicate The predicate to negate.
12072 * @returns {Function} Returns the new negated function.
12073 * @example
12074 *
12075 * function isEven(n) {
12076 * return n % 2 == 0;
12077 * }
12078 *
12079 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
12080 * // => [1, 3, 5]
12081 */
12082 function negate(predicate) {
12083 if (typeof predicate != 'function') {
12084 throw new TypeError(FUNC_ERROR_TEXT);
12085 }
12086 return function() {
12087 var args = arguments;
12088 switch (args.length) {
12089 case 0: return !predicate.call(this);
12090 case 1: return !predicate.call(this, args[0]);
12091 case 2: return !predicate.call(this, args[0], args[1]);
12092 case 3: return !predicate.call(this, args[0], args[1], args[2]);
12093 }
12094 return !predicate.apply(this, args);
12095 };
12096 }
12097
12098 /**
12099 * Creates a function that is restricted to invoking `func` once. Repeat calls
12100 * to the function return the value of the first invocation. The `func` is
12101 * invoked with the `this` binding and arguments of the created function.
12102 *
12103 * @static
12104 * @memberOf _
12105 * @since 0.1.0
12106 * @category Function
12107 * @param {Function} func The function to restrict.
12108 * @returns {Function} Returns the new restricted function.
12109 * @example
12110 *
12111 * var initialize = _.once(createApplication);
12112 * initialize();
12113 * initialize();
12114 * // => `createApplication` is invoked once
12115 */
12116 function once(func) {
12117 return before(2, func);
12118 }
12119
12120 /**
12121 * Creates a function that invokes `func` with its arguments transformed.
12122 *
12123 * @static
12124 * @since 4.0.0
12125 * @memberOf _
12126 * @category Function
12127 * @param {Function} func The function to wrap.
12128 * @param {...(Function|Function[])} [transforms=[_.identity]]
12129 * The argument transforms.
12130 * @returns {Function} Returns the new function.
12131 * @example
12132 *
12133 * function doubled(n) {
12134 * return n * 2;
12135 * }
12136 *
12137 * function square(n) {
12138 * return n * n;
12139 * }
12140 *
12141 * var func = _.overArgs(function(x, y) {
12142 * return [x, y];
12143 * }, [square, doubled]);
12144 *
12145 * func(9, 3);
12146 * // => [81, 6]
12147 *
12148 * func(10, 5);
12149 * // => [100, 10]
12150 */
12151 var overArgs = castRest(function(func, transforms) {
12152 transforms = (transforms.length == 1 && isArray(transforms[0]))
12153 ? arrayMap(transforms[0], baseUnary(getIteratee()))
12154 : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
12155
12156 var funcsLength = transforms.length;
12157 return baseRest(function(args) {
12158 var index = -1,
12159 length = nativeMin(args.length, funcsLength);
12160
12161 while (++index < length) {
12162 args[index] = transforms[index].call(this, args[index]);
12163 }
12164 return apply(func, this, args);
12165 });
12166 });
12167
12168 /**
12169 * Creates a function that invokes `func` with `partials` prepended to the
12170 * arguments it receives. This method is like `_.bind` except it does **not**
12171 * alter the `this` binding.
12172 *
12173 * The `_.partial.placeholder` value, which defaults to `_` in monolithic
12174 * builds, may be used as a placeholder for partially applied arguments.
12175 *
12176 * **Note:** This method doesn't set the "length" property of partially
12177 * applied functions.
12178 *
12179 * @static
12180 * @memberOf _
12181 * @since 0.2.0
12182 * @category Function
12183 * @param {Function} func The function to partially apply arguments to.
12184 * @param {...*} [partials] The arguments to be partially applied.
12185 * @returns {Function} Returns the new partially applied function.
12186 * @example
12187 *
12188 * function greet(greeting, name) {
12189 * return greeting + ' ' + name;
12190 * }
12191 *
12192 * var sayHelloTo = _.partial(greet, 'hello');
12193 * sayHelloTo('fred');
12194 * // => 'hello fred'
12195 *
12196 * // Partially applied with placeholders.
12197 * var greetFred = _.partial(greet, _, 'fred');
12198 * greetFred('hi');
12199 * // => 'hi fred'
12200 */
12201 var partial = baseRest(function(func, partials) {
12202 var holders = replaceHolders(partials, getHolder(partial));
12203 return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
12204 });
12205
12206 /**
12207 * This method is like `_.partial` except that partially applied arguments
12208 * are appended to the arguments it receives.
12209 *
12210 * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
12211 * builds, may be used as a placeholder for partially applied arguments.
12212 *
12213 * **Note:** This method doesn't set the "length" property of partially
12214 * applied functions.
12215 *
12216 * @static
12217 * @memberOf _
12218 * @since 1.0.0
12219 * @category Function
12220 * @param {Function} func The function to partially apply arguments to.
12221 * @param {...*} [partials] The arguments to be partially applied.
12222 * @returns {Function} Returns the new partially applied function.
12223 * @example
12224 *
12225 * function greet(greeting, name) {
12226 * return greeting + ' ' + name;
12227 * }
12228 *
12229 * var greetFred = _.partialRight(greet, 'fred');
12230 * greetFred('hi');
12231 * // => 'hi fred'
12232 *
12233 * // Partially applied with placeholders.
12234 * var sayHelloTo = _.partialRight(greet, 'hello', _);
12235 * sayHelloTo('fred');
12236 * // => 'hello fred'
12237 */
12238 var partialRight = baseRest(function(func, partials) {
12239 var holders = replaceHolders(partials, getHolder(partialRight));
12240 return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
12241 });
12242
12243 /**
12244 * Creates a function that invokes `func` with arguments arranged according
12245 * to the specified `indexes` where the argument value at the first index is
12246 * provided as the first argument, the argument value at the second index is
12247 * provided as the second argument, and so on.
12248 *
12249 * @static
12250 * @memberOf _
12251 * @since 3.0.0
12252 * @category Function
12253 * @param {Function} func The function to rearrange arguments for.
12254 * @param {...(number|number[])} indexes The arranged argument indexes.
12255 * @returns {Function} Returns the new function.
12256 * @example
12257 *
12258 * var rearged = _.rearg(function(a, b, c) {
12259 * return [a, b, c];
12260 * }, [2, 0, 1]);
12261 *
12262 * rearged('b', 'c', 'a')
12263 * // => ['a', 'b', 'c']
12264 */
12265 var rearg = flatRest(function(func, indexes) {
12266 return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
12267 });
12268
12269 /**
12270 * Creates a function that invokes `func` with the `this` binding of the
12271 * created function and arguments from `start` and beyond provided as
12272 * an array.
12273 *
12274 * **Note:** This method is based on the
12275 * [rest parameter](https://mdn.io/rest_parameters).
12276 *
12277 * @static
12278 * @memberOf _
12279 * @since 4.0.0
12280 * @category Function
12281 * @param {Function} func The function to apply a rest parameter to.
12282 * @param {number} [start=func.length-1] The start position of the rest parameter.
12283 * @returns {Function} Returns the new function.
12284 * @example
12285 *
12286 * var say = _.rest(function(what, names) {
12287 * return what + ' ' + _.initial(names).join(', ') +
12288 * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
12289 * });
12290 *
12291 * say('hello', 'fred', 'barney', 'pebbles');
12292 * // => 'hello fred, barney, & pebbles'
12293 */
12294 function rest(func, start) {
12295 if (typeof func != 'function') {
12296 throw new TypeError(FUNC_ERROR_TEXT);
12297 }
12298 start = start === undefined ? start : toInteger(start);
12299 return baseRest(func, start);
12300 }
12301
12302 /**
12303 * Creates a function that invokes `func` with the `this` binding of the
12304 * create function and an array of arguments much like
12305 * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
12306 *
12307 * **Note:** This method is based on the
12308 * [spread operator](https://mdn.io/spread_operator).
12309 *
12310 * @static
12311 * @memberOf _
12312 * @since 3.2.0
12313 * @category Function
12314 * @param {Function} func The function to spread arguments over.
12315 * @param {number} [start=0] The start position of the spread.
12316 * @returns {Function} Returns the new function.
12317 * @example
12318 *
12319 * var say = _.spread(function(who, what) {
12320 * return who + ' says ' + what;
12321 * });
12322 *
12323 * say(['fred', 'hello']);
12324 * // => 'fred says hello'
12325 *
12326 * var numbers = Promise.all([
12327 * Promise.resolve(40),
12328 * Promise.resolve(36)
12329 * ]);
12330 *
12331 * numbers.then(_.spread(function(x, y) {
12332 * return x + y;
12333 * }));
12334 * // => a Promise of 76
12335 */
12336 function spread(func, start) {
12337 if (typeof func != 'function') {
12338 throw new TypeError(FUNC_ERROR_TEXT);
12339 }
12340 start = start == null ? 0 : nativeMax(toInteger(start), 0);
12341 return baseRest(function(args) {
12342 var array = args[start],
12343 otherArgs = castSlice(args, 0, start);
12344
12345 if (array) {
12346 arrayPush(otherArgs, array);
12347 }
12348 return apply(func, this, otherArgs);
12349 });
12350 }
12351
12352 /**
12353 * Creates a throttled function that only invokes `func` at most once per
12354 * every `wait` milliseconds. The throttled function comes with a `cancel`
12355 * method to cancel delayed `func` invocations and a `flush` method to
12356 * immediately invoke them. Provide `options` to indicate whether `func`
12357 * should be invoked on the leading and/or trailing edge of the `wait`
12358 * timeout. The `func` is invoked with the last arguments provided to the
12359 * throttled function. Subsequent calls to the throttled function return the
12360 * result of the last `func` invocation.
12361 *
12362 * **Note:** If `leading` and `trailing` options are `true`, `func` is
12363 * invoked on the trailing edge of the timeout only if the throttled function
12364 * is invoked more than once during the `wait` timeout.
12365 *
12366 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
12367 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
12368 *
12369 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
12370 * for details over the differences between `_.throttle` and `_.debounce`.
12371 *
12372 * @static
12373 * @memberOf _
12374 * @since 0.1.0
12375 * @category Function
12376 * @param {Function} func The function to throttle.
12377 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
12378 * @param {Object} [options={}] The options object.
12379 * @param {boolean} [options.leading=true]
12380 * Specify invoking on the leading edge of the timeout.
12381 * @param {boolean} [options.trailing=true]
12382 * Specify invoking on the trailing edge of the timeout.
12383 * @returns {Function} Returns the new throttled function.
12384 * @example
12385 *
12386 * // Avoid excessively updating the position while scrolling.
12387 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
12388 *
12389 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
12390 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
12391 * jQuery(element).on('click', throttled);
12392 *
12393 * // Cancel the trailing throttled invocation.
12394 * jQuery(window).on('popstate', throttled.cancel);
12395 */
12396 function throttle(func, wait, options) {
12397 var leading = true,
12398 trailing = true;
12399
12400 if (typeof func != 'function') {
12401 throw new TypeError(FUNC_ERROR_TEXT);
12402 }
12403 if (isObject(options)) {
12404 leading = 'leading' in options ? !!options.leading : leading;
12405 trailing = 'trailing' in options ? !!options.trailing : trailing;
12406 }
12407 return debounce(func, wait, {
12408 'leading': leading,
12409 'maxWait': wait,
12410 'trailing': trailing
12411 });
12412 }
12413
12414 /**
12415 * Creates a function that accepts up to one argument, ignoring any
12416 * additional arguments.
12417 *
12418 * @static
12419 * @memberOf _
12420 * @since 4.0.0
12421 * @category Function
12422 * @param {Function} func The function to cap arguments for.
12423 * @returns {Function} Returns the new capped function.
12424 * @example
12425 *
12426 * _.map(['6', '8', '10'], _.unary(parseInt));
12427 * // => [6, 8, 10]
12428 */
12429 function unary(func) {
12430 return ary(func, 1);
12431 }
12432
12433 /**
12434 * Creates a function that provides `value` to `wrapper` as its first
12435 * argument. Any additional arguments provided to the function are appended
12436 * to those provided to the `wrapper`. The wrapper is invoked with the `this`
12437 * binding of the created function.
12438 *
12439 * @static
12440 * @memberOf _
12441 * @since 0.1.0
12442 * @category Function
12443 * @param {*} value The value to wrap.
12444 * @param {Function} [wrapper=identity] The wrapper function.
12445 * @returns {Function} Returns the new function.
12446 * @example
12447 *
12448 * var p = _.wrap(_.escape, function(func, text) {
12449 * return '<p>' + func(text) + '</p>';
12450 * });
12451 *
12452 * p('fred, barney, & pebbles');
12453 * // => '<p>fred, barney, &amp; pebbles</p>'
12454 */
12455 function wrap(value, wrapper) {
12456 return partial(castFunction(wrapper), value);
12457 }
12458
12459 /*------------------------------------------------------------------------*/
12460
12461 /**
12462 * Casts `value` as an array if it's not one.
12463 *
12464 * @static
12465 * @memberOf _
12466 * @since 4.4.0
12467 * @category Lang
12468 * @param {*} value The value to inspect.
12469 * @returns {Array} Returns the cast array.
12470 * @example
12471 *
12472 * _.castArray(1);
12473 * // => [1]
12474 *
12475 * _.castArray({ 'a': 1 });
12476 * // => [{ 'a': 1 }]
12477 *
12478 * _.castArray('abc');
12479 * // => ['abc']
12480 *
12481 * _.castArray(null);
12482 * // => [null]
12483 *
12484 * _.castArray(undefined);
12485 * // => [undefined]
12486 *
12487 * _.castArray();
12488 * // => []
12489 *
12490 * var array = [1, 2, 3];
12491 * console.log(_.castArray(array) === array);
12492 * // => true
12493 */
12494 function castArray() {
12495 if (!arguments.length) {
12496 return [];
12497 }
12498 var value = arguments[0];
12499 return isArray(value) ? value : [value];
12500 }
12501
12502 /**
12503 * Creates a shallow clone of `value`.
12504 *
12505 * **Note:** This method is loosely based on the
12506 * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
12507 * and supports cloning arrays, array buffers, booleans, date objects, maps,
12508 * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
12509 * arrays. The own enumerable properties of `arguments` objects are cloned
12510 * as plain objects. An empty object is returned for uncloneable values such
12511 * as error objects, functions, DOM nodes, and WeakMaps.
12512 *
12513 * @static
12514 * @memberOf _
12515 * @since 0.1.0
12516 * @category Lang
12517 * @param {*} value The value to clone.
12518 * @returns {*} Returns the cloned value.
12519 * @see _.cloneDeep
12520 * @example
12521 *
12522 * var objects = [{ 'a': 1 }, { 'b': 2 }];
12523 *
12524 * var shallow = _.clone(objects);
12525 * console.log(shallow[0] === objects[0]);
12526 * // => true
12527 */
12528 function clone(value) {
12529 return baseClone(value, CLONE_SYMBOLS_FLAG);
12530 }
12531
12532 /**
12533 * This method is like `_.clone` except that it accepts `customizer` which
12534 * is invoked to produce the cloned value. If `customizer` returns `undefined`,
12535 * cloning is handled by the method instead. The `customizer` is invoked with
12536 * up to four arguments; (value [, index|key, object, stack]).
12537 *
12538 * @static
12539 * @memberOf _
12540 * @since 4.0.0
12541 * @category Lang
12542 * @param {*} value The value to clone.
12543 * @param {Function} [customizer] The function to customize cloning.
12544 * @returns {*} Returns the cloned value.
12545 * @see _.cloneDeepWith
12546 * @example
12547 *
12548 * function customizer(value) {
12549 * if (_.isElement(value)) {
12550 * return value.cloneNode(false);
12551 * }
12552 * }
12553 *
12554 * var el = _.cloneWith(document.body, customizer);
12555 *
12556 * console.log(el === document.body);
12557 * // => false
12558 * console.log(el.nodeName);
12559 * // => 'BODY'
12560 * console.log(el.childNodes.length);
12561 * // => 0
12562 */
12563 function cloneWith(value, customizer) {
12564 customizer = typeof customizer == 'function' ? customizer : undefined;
12565 return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
12566 }
12567
12568 /**
12569 * This method is like `_.clone` except that it recursively clones `value`.
12570 *
12571 * @static
12572 * @memberOf _
12573 * @since 1.0.0
12574 * @category Lang
12575 * @param {*} value The value to recursively clone.
12576 * @returns {*} Returns the deep cloned value.
12577 * @see _.clone
12578 * @example
12579 *
12580 * var objects = [{ 'a': 1 }, { 'b': 2 }];
12581 *
12582 * var deep = _.cloneDeep(objects);
12583 * console.log(deep[0] === objects[0]);
12584 * // => false
12585 */
12586 function cloneDeep(value) {
12587 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
12588 }
12589
12590 /**
12591 * This method is like `_.cloneWith` except that it recursively clones `value`.
12592 *
12593 * @static
12594 * @memberOf _
12595 * @since 4.0.0
12596 * @category Lang
12597 * @param {*} value The value to recursively clone.
12598 * @param {Function} [customizer] The function to customize cloning.
12599 * @returns {*} Returns the deep cloned value.
12600 * @see _.cloneWith
12601 * @example
12602 *
12603 * function customizer(value) {
12604 * if (_.isElement(value)) {
12605 * return value.cloneNode(true);
12606 * }
12607 * }
12608 *
12609 * var el = _.cloneDeepWith(document.body, customizer);
12610 *
12611 * console.log(el === document.body);
12612 * // => false
12613 * console.log(el.nodeName);
12614 * // => 'BODY'
12615 * console.log(el.childNodes.length);
12616 * // => 20
12617 */
12618 function cloneDeepWith(value, customizer) {
12619 customizer = typeof customizer == 'function' ? customizer : undefined;
12620 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
12621 }
12622
12623 /**
12624 * Checks if `object` conforms to `source` by invoking the predicate
12625 * properties of `source` with the corresponding property values of `object`.
12626 *
12627 * **Note:** This method is equivalent to `_.conforms` when `source` is
12628 * partially applied.
12629 *
12630 * @static
12631 * @memberOf _
12632 * @since 4.14.0
12633 * @category Lang
12634 * @param {Object} object The object to inspect.
12635 * @param {Object} source The object of property predicates to conform to.
12636 * @returns {boolean} Returns `true` if `object` conforms, else `false`.
12637 * @example
12638 *
12639 * var object = { 'a': 1, 'b': 2 };
12640 *
12641 * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
12642 * // => true
12643 *
12644 * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
12645 * // => false
12646 */
12647 function conformsTo(object, source) {
12648 return source == null || baseConformsTo(object, source, keys(source));
12649 }
12650
12651 /**
12652 * Performs a
12653 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
12654 * comparison between two values to determine if they are equivalent.
12655 *
12656 * @static
12657 * @memberOf _
12658 * @since 4.0.0
12659 * @category Lang
12660 * @param {*} value The value to compare.
12661 * @param {*} other The other value to compare.
12662 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12663 * @example
12664 *
12665 * var object = { 'a': 1 };
12666 * var other = { 'a': 1 };
12667 *
12668 * _.eq(object, object);
12669 * // => true
12670 *
12671 * _.eq(object, other);
12672 * // => false
12673 *
12674 * _.eq('a', 'a');
12675 * // => true
12676 *
12677 * _.eq('a', Object('a'));
12678 * // => false
12679 *
12680 * _.eq(NaN, NaN);
12681 * // => true
12682 */
12683 function eq(value, other) {
12684 return value === other || (value !== value && other !== other);
12685 }
12686
12687 /**
12688 * Checks if `value` is greater than `other`.
12689 *
12690 * @static
12691 * @memberOf _
12692 * @since 3.9.0
12693 * @category Lang
12694 * @param {*} value The value to compare.
12695 * @param {*} other The other value to compare.
12696 * @returns {boolean} Returns `true` if `value` is greater than `other`,
12697 * else `false`.
12698 * @see _.lt
12699 * @example
12700 *
12701 * _.gt(3, 1);
12702 * // => true
12703 *
12704 * _.gt(3, 3);
12705 * // => false
12706 *
12707 * _.gt(1, 3);
12708 * // => false
12709 */
12710 var gt = createRelationalOperation(baseGt);
12711
12712 /**
12713 * Checks if `value` is greater than or equal to `other`.
12714 *
12715 * @static
12716 * @memberOf _
12717 * @since 3.9.0
12718 * @category Lang
12719 * @param {*} value The value to compare.
12720 * @param {*} other The other value to compare.
12721 * @returns {boolean} Returns `true` if `value` is greater than or equal to
12722 * `other`, else `false`.
12723 * @see _.lte
12724 * @example
12725 *
12726 * _.gte(3, 1);
12727 * // => true
12728 *
12729 * _.gte(3, 3);
12730 * // => true
12731 *
12732 * _.gte(1, 3);
12733 * // => false
12734 */
12735 var gte = createRelationalOperation(function(value, other) {
12736 return value >= other;
12737 });
12738
12739 /**
12740 * Checks if `value` is likely an `arguments` object.
12741 *
12742 * @static
12743 * @memberOf _
12744 * @since 0.1.0
12745 * @category Lang
12746 * @param {*} value The value to check.
12747 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
12748 * else `false`.
12749 * @example
12750 *
12751 * _.isArguments(function() { return arguments; }());
12752 * // => true
12753 *
12754 * _.isArguments([1, 2, 3]);
12755 * // => false
12756 */
12757 var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
12758 return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
12759 !propertyIsEnumerable.call(value, 'callee');
12760 };
12761
12762 /**
12763 * Checks if `value` is classified as an `Array` object.
12764 *
12765 * @static
12766 * @memberOf _
12767 * @since 0.1.0
12768 * @category Lang
12769 * @param {*} value The value to check.
12770 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
12771 * @example
12772 *
12773 * _.isArray([1, 2, 3]);
12774 * // => true
12775 *
12776 * _.isArray(document.body.children);
12777 * // => false
12778 *
12779 * _.isArray('abc');
12780 * // => false
12781 *
12782 * _.isArray(_.noop);
12783 * // => false
12784 */
12785 var isArray = Array.isArray;
12786
12787 /**
12788 * Checks if `value` is classified as an `ArrayBuffer` object.
12789 *
12790 * @static
12791 * @memberOf _
12792 * @since 4.3.0
12793 * @category Lang
12794 * @param {*} value The value to check.
12795 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
12796 * @example
12797 *
12798 * _.isArrayBuffer(new ArrayBuffer(2));
12799 * // => true
12800 *
12801 * _.isArrayBuffer(new Array(2));
12802 * // => false
12803 */
12804 var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
12805
12806 /**
12807 * Checks if `value` is array-like. A value is considered array-like if it's
12808 * not a function and has a `value.length` that's an integer greater than or
12809 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
12810 *
12811 * @static
12812 * @memberOf _
12813 * @since 4.0.0
12814 * @category Lang
12815 * @param {*} value The value to check.
12816 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
12817 * @example
12818 *
12819 * _.isArrayLike([1, 2, 3]);
12820 * // => true
12821 *
12822 * _.isArrayLike(document.body.children);
12823 * // => true
12824 *
12825 * _.isArrayLike('abc');
12826 * // => true
12827 *
12828 * _.isArrayLike(_.noop);
12829 * // => false
12830 */
12831 function isArrayLike(value) {
12832 return value != null && isLength(value.length) && !isFunction(value);
12833 }
12834
12835 /**
12836 * This method is like `_.isArrayLike` except that it also checks if `value`
12837 * is an object.
12838 *
12839 * @static
12840 * @memberOf _
12841 * @since 4.0.0
12842 * @category Lang
12843 * @param {*} value The value to check.
12844 * @returns {boolean} Returns `true` if `value` is an array-like object,
12845 * else `false`.
12846 * @example
12847 *
12848 * _.isArrayLikeObject([1, 2, 3]);
12849 * // => true
12850 *
12851 * _.isArrayLikeObject(document.body.children);
12852 * // => true
12853 *
12854 * _.isArrayLikeObject('abc');
12855 * // => false
12856 *
12857 * _.isArrayLikeObject(_.noop);
12858 * // => false
12859 */
12860 function isArrayLikeObject(value) {
12861 return isObjectLike(value) && isArrayLike(value);
12862 }
12863
12864 /**
12865 * Checks if `value` is classified as a boolean primitive or object.
12866 *
12867 * @static
12868 * @memberOf _
12869 * @since 0.1.0
12870 * @category Lang
12871 * @param {*} value The value to check.
12872 * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
12873 * @example
12874 *
12875 * _.isBoolean(false);
12876 * // => true
12877 *
12878 * _.isBoolean(null);
12879 * // => false
12880 */
12881 function isBoolean(value) {
12882 return value === true || value === false ||
12883 (isObjectLike(value) && baseGetTag(value) == boolTag);
12884 }
12885
12886 /**
12887 * Checks if `value` is a buffer.
12888 *
12889 * @static
12890 * @memberOf _
12891 * @since 4.3.0
12892 * @category Lang
12893 * @param {*} value The value to check.
12894 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
12895 * @example
12896 *
12897 * _.isBuffer(new Buffer(2));
12898 * // => true
12899 *
12900 * _.isBuffer(new Uint8Array(2));
12901 * // => false
12902 */
12903 var isBuffer = nativeIsBuffer || stubFalse;
12904
12905 /**
12906 * Checks if `value` is classified as a `Date` object.
12907 *
12908 * @static
12909 * @memberOf _
12910 * @since 0.1.0
12911 * @category Lang
12912 * @param {*} value The value to check.
12913 * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
12914 * @example
12915 *
12916 * _.isDate(new Date);
12917 * // => true
12918 *
12919 * _.isDate('Mon April 23 2012');
12920 * // => false
12921 */
12922 var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
12923
12924 /**
12925 * Checks if `value` is likely a DOM element.
12926 *
12927 * @static
12928 * @memberOf _
12929 * @since 0.1.0
12930 * @category Lang
12931 * @param {*} value The value to check.
12932 * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
12933 * @example
12934 *
12935 * _.isElement(document.body);
12936 * // => true
12937 *
12938 * _.isElement('<body>');
12939 * // => false
12940 */
12941 function isElement(value) {
12942 return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
12943 }
12944
12945 /**
12946 * Checks if `value` is an empty object, collection, map, or set.
12947 *
12948 * Objects are considered empty if they have no own enumerable string keyed
12949 * properties.
12950 *
12951 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
12952 * jQuery-like collections are considered empty if they have a `length` of `0`.
12953 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
12954 *
12955 * @static
12956 * @memberOf _
12957 * @since 0.1.0
12958 * @category Lang
12959 * @param {*} value The value to check.
12960 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
12961 * @example
12962 *
12963 * _.isEmpty(null);
12964 * // => true
12965 *
12966 * _.isEmpty(true);
12967 * // => true
12968 *
12969 * _.isEmpty(1);
12970 * // => true
12971 *
12972 * _.isEmpty([1, 2, 3]);
12973 * // => false
12974 *
12975 * _.isEmpty({ 'a': 1 });
12976 * // => false
12977 */
12978 function isEmpty(value) {
12979 if (value == null) {
12980 return true;
12981 }
12982 if (isArrayLike(value) &&
12983 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
12984 isBuffer(value) || isTypedArray(value) || isArguments(value))) {
12985 return !value.length;
12986 }
12987 var tag = getTag(value);
12988 if (tag == mapTag || tag == setTag) {
12989 return !value.size;
12990 }
12991 if (isPrototype(value)) {
12992 return !baseKeys(value).length;
12993 }
12994 for (var key in value) {
12995 if (hasOwnProperty.call(value, key)) {
12996 return false;
12997 }
12998 }
12999 return true;
13000 }
13001
13002 /**
13003 * Performs a deep comparison between two values to determine if they are
13004 * equivalent.
13005 *
13006 * **Note:** This method supports comparing arrays, array buffers, booleans,
13007 * date objects, error objects, maps, numbers, `Object` objects, regexes,
13008 * sets, strings, symbols, and typed arrays. `Object` objects are compared
13009 * by their own, not inherited, enumerable properties. Functions and DOM
13010 * nodes are compared by strict equality, i.e. `===`.
13011 *
13012 * @static
13013 * @memberOf _
13014 * @since 0.1.0
13015 * @category Lang
13016 * @param {*} value The value to compare.
13017 * @param {*} other The other value to compare.
13018 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
13019 * @example
13020 *
13021 * var object = { 'a': 1 };
13022 * var other = { 'a': 1 };
13023 *
13024 * _.isEqual(object, other);
13025 * // => true
13026 *
13027 * object === other;
13028 * // => false
13029 */
13030 function isEqual(value, other) {
13031 return baseIsEqual(value, other);
13032 }
13033
13034 /**
13035 * This method is like `_.isEqual` except that it accepts `customizer` which
13036 * is invoked to compare values. If `customizer` returns `undefined`, comparisons
13037 * are handled by the method instead. The `customizer` is invoked with up to
13038 * six arguments: (objValue, othValue [, index|key, object, other, stack]).
13039 *
13040 * @static
13041 * @memberOf _
13042 * @since 4.0.0
13043 * @category Lang
13044 * @param {*} value The value to compare.
13045 * @param {*} other The other value to compare.
13046 * @param {Function} [customizer] The function to customize comparisons.
13047 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
13048 * @example
13049 *
13050 * function isGreeting(value) {
13051 * return /^h(?:i|ello)$/.test(value);
13052 * }
13053 *
13054 * function customizer(objValue, othValue) {
13055 * if (isGreeting(objValue) && isGreeting(othValue)) {
13056 * return true;
13057 * }
13058 * }
13059 *
13060 * var array = ['hello', 'goodbye'];
13061 * var other = ['hi', 'goodbye'];
13062 *
13063 * _.isEqualWith(array, other, customizer);
13064 * // => true
13065 */
13066 function isEqualWith(value, other, customizer) {
13067 customizer = typeof customizer == 'function' ? customizer : undefined;
13068 var result = customizer ? customizer(value, other) : undefined;
13069 return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
13070 }
13071
13072 /**
13073 * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
13074 * `SyntaxError`, `TypeError`, or `URIError` object.
13075 *
13076 * @static
13077 * @memberOf _
13078 * @since 3.0.0
13079 * @category Lang
13080 * @param {*} value The value to check.
13081 * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
13082 * @example
13083 *
13084 * _.isError(new Error);
13085 * // => true
13086 *
13087 * _.isError(Error);
13088 * // => false
13089 */
13090 function isError(value) {
13091 if (!isObjectLike(value)) {
13092 return false;
13093 }
13094 var tag = baseGetTag(value);
13095 return tag == errorTag || tag == domExcTag ||
13096 (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
13097 }
13098
13099 /**
13100 * Checks if `value` is a finite primitive number.
13101 *
13102 * **Note:** This method is based on
13103 * [`Number.isFinite`](https://mdn.io/Number/isFinite).
13104 *
13105 * @static
13106 * @memberOf _
13107 * @since 0.1.0
13108 * @category Lang
13109 * @param {*} value The value to check.
13110 * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
13111 * @example
13112 *
13113 * _.isFinite(3);
13114 * // => true
13115 *
13116 * _.isFinite(Number.MIN_VALUE);
13117 * // => true
13118 *
13119 * _.isFinite(Infinity);
13120 * // => false
13121 *
13122 * _.isFinite('3');
13123 * // => false
13124 */
13125 function isFinite(value) {
13126 return typeof value == 'number' && nativeIsFinite(value);
13127 }
13128
13129 /**
13130 * Checks if `value` is classified as a `Function` object.
13131 *
13132 * @static
13133 * @memberOf _
13134 * @since 0.1.0
13135 * @category Lang
13136 * @param {*} value The value to check.
13137 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
13138 * @example
13139 *
13140 * _.isFunction(_);
13141 * // => true
13142 *
13143 * _.isFunction(/abc/);
13144 * // => false
13145 */
13146 function isFunction(value) {
13147 if (!isObject(value)) {
13148 return false;
13149 }
13150 // The use of `Object#toString` avoids issues with the `typeof` operator
13151 // in Safari 9 which returns 'object' for typed arrays and other constructors.
13152 var tag = baseGetTag(value);
13153 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
13154 }
13155
13156 /**
13157 * Checks if `value` is an integer.
13158 *
13159 * **Note:** This method is based on
13160 * [`Number.isInteger`](https://mdn.io/Number/isInteger).
13161 *
13162 * @static
13163 * @memberOf _
13164 * @since 4.0.0
13165 * @category Lang
13166 * @param {*} value The value to check.
13167 * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
13168 * @example
13169 *
13170 * _.isInteger(3);
13171 * // => true
13172 *
13173 * _.isInteger(Number.MIN_VALUE);
13174 * // => false
13175 *
13176 * _.isInteger(Infinity);
13177 * // => false
13178 *
13179 * _.isInteger('3');
13180 * // => false
13181 */
13182 function isInteger(value) {
13183 return typeof value == 'number' && value == toInteger(value);
13184 }
13185
13186 /**
13187 * Checks if `value` is a valid array-like length.
13188 *
13189 * **Note:** This method is loosely based on
13190 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
13191 *
13192 * @static
13193 * @memberOf _
13194 * @since 4.0.0
13195 * @category Lang
13196 * @param {*} value The value to check.
13197 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
13198 * @example
13199 *
13200 * _.isLength(3);
13201 * // => true
13202 *
13203 * _.isLength(Number.MIN_VALUE);
13204 * // => false
13205 *
13206 * _.isLength(Infinity);
13207 * // => false
13208 *
13209 * _.isLength('3');
13210 * // => false
13211 */
13212 function isLength(value) {
13213 return typeof value == 'number' &&
13214 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
13215 }
13216
13217 /**
13218 * Checks if `value` is the
13219 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
13220 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
13221 *
13222 * @static
13223 * @memberOf _
13224 * @since 0.1.0
13225 * @category Lang
13226 * @param {*} value The value to check.
13227 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
13228 * @example
13229 *
13230 * _.isObject({});
13231 * // => true
13232 *
13233 * _.isObject([1, 2, 3]);
13234 * // => true
13235 *
13236 * _.isObject(_.noop);
13237 * // => true
13238 *
13239 * _.isObject(null);
13240 * // => false
13241 */
13242 function isObject(value) {
13243 var type = typeof value;
13244 return value != null && (type == 'object' || type == 'function');
13245 }
13246
13247 /**
13248 * Checks if `value` is object-like. A value is object-like if it's not `null`
13249 * and has a `typeof` result of "object".
13250 *
13251 * @static
13252 * @memberOf _
13253 * @since 4.0.0
13254 * @category Lang
13255 * @param {*} value The value to check.
13256 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
13257 * @example
13258 *
13259 * _.isObjectLike({});
13260 * // => true
13261 *
13262 * _.isObjectLike([1, 2, 3]);
13263 * // => true
13264 *
13265 * _.isObjectLike(_.noop);
13266 * // => false
13267 *
13268 * _.isObjectLike(null);
13269 * // => false
13270 */
13271 function isObjectLike(value) {
13272 return value != null && typeof value == 'object';
13273 }
13274
13275 /**
13276 * Checks if `value` is classified as a `Map` object.
13277 *
13278 * @static
13279 * @memberOf _
13280 * @since 4.3.0
13281 * @category Lang
13282 * @param {*} value The value to check.
13283 * @returns {boolean} Returns `true` if `value` is a map, else `false`.
13284 * @example
13285 *
13286 * _.isMap(new Map);
13287 * // => true
13288 *
13289 * _.isMap(new WeakMap);
13290 * // => false
13291 */
13292 var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
13293
13294 /**
13295 * Performs a partial deep comparison between `object` and `source` to
13296 * determine if `object` contains equivalent property values.
13297 *
13298 * **Note:** This method is equivalent to `_.matches` when `source` is
13299 * partially applied.
13300 *
13301 * Partial comparisons will match empty array and empty object `source`
13302 * values against any array or object value, respectively. See `_.isEqual`
13303 * for a list of supported value comparisons.
13304 *
13305 * @static
13306 * @memberOf _
13307 * @since 3.0.0
13308 * @category Lang
13309 * @param {Object} object The object to inspect.
13310 * @param {Object} source The object of property values to match.
13311 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
13312 * @example
13313 *
13314 * var object = { 'a': 1, 'b': 2 };
13315 *
13316 * _.isMatch(object, { 'b': 2 });
13317 * // => true
13318 *
13319 * _.isMatch(object, { 'b': 1 });
13320 * // => false
13321 */
13322 function isMatch(object, source) {
13323 return object === source || baseIsMatch(object, source, getMatchData(source));
13324 }
13325
13326 /**
13327 * This method is like `_.isMatch` except that it accepts `customizer` which
13328 * is invoked to compare values. If `customizer` returns `undefined`, comparisons
13329 * are handled by the method instead. The `customizer` is invoked with five
13330 * arguments: (objValue, srcValue, index|key, object, source).
13331 *
13332 * @static
13333 * @memberOf _
13334 * @since 4.0.0
13335 * @category Lang
13336 * @param {Object} object The object to inspect.
13337 * @param {Object} source The object of property values to match.
13338 * @param {Function} [customizer] The function to customize comparisons.
13339 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
13340 * @example
13341 *
13342 * function isGreeting(value) {
13343 * return /^h(?:i|ello)$/.test(value);
13344 * }
13345 *
13346 * function customizer(objValue, srcValue) {
13347 * if (isGreeting(objValue) && isGreeting(srcValue)) {
13348 * return true;
13349 * }
13350 * }
13351 *
13352 * var object = { 'greeting': 'hello' };
13353 * var source = { 'greeting': 'hi' };
13354 *
13355 * _.isMatchWith(object, source, customizer);
13356 * // => true
13357 */
13358 function isMatchWith(object, source, customizer) {
13359 customizer = typeof customizer == 'function' ? customizer : undefined;
13360 return baseIsMatch(object, source, getMatchData(source), customizer);
13361 }
13362
13363 /**
13364 * Checks if `value` is `NaN`.
13365 *
13366 * **Note:** This method is based on
13367 * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
13368 * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
13369 * `undefined` and other non-number values.
13370 *
13371 * @static
13372 * @memberOf _
13373 * @since 0.1.0
13374 * @category Lang
13375 * @param {*} value The value to check.
13376 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
13377 * @example
13378 *
13379 * _.isNaN(NaN);
13380 * // => true
13381 *
13382 * _.isNaN(new Number(NaN));
13383 * // => true
13384 *
13385 * isNaN(undefined);
13386 * // => true
13387 *
13388 * _.isNaN(undefined);
13389 * // => false
13390 */
13391 function isNaN(value) {
13392 // An `NaN` primitive is the only value that is not equal to itself.
13393 // Perform the `toStringTag` check first to avoid errors with some
13394 // ActiveX objects in IE.
13395 return isNumber(value) && value != +value;
13396 }
13397
13398 /**
13399 * Checks if `value` is a pristine native function.
13400 *
13401 * **Note:** This method can't reliably detect native functions in the presence
13402 * of the core-js package because core-js circumvents this kind of detection.
13403 * Despite multiple requests, the core-js maintainer has made it clear: any
13404 * attempt to fix the detection will be obstructed. As a result, we're left
13405 * with little choice but to throw an error. Unfortunately, this also affects
13406 * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
13407 * which rely on core-js.
13408 *
13409 * @static
13410 * @memberOf _
13411 * @since 3.0.0
13412 * @category Lang
13413 * @param {*} value The value to check.
13414 * @returns {boolean} Returns `true` if `value` is a native function,
13415 * else `false`.
13416 * @example
13417 *
13418 * _.isNative(Array.prototype.push);
13419 * // => true
13420 *
13421 * _.isNative(_);
13422 * // => false
13423 */
13424 function isNative(value) {
13425 if (isMaskable(value)) {
13426 throw new Error(CORE_ERROR_TEXT);
13427 }
13428 return baseIsNative(value);
13429 }
13430
13431 /**
13432 * Checks if `value` is `null`.
13433 *
13434 * @static
13435 * @memberOf _
13436 * @since 0.1.0
13437 * @category Lang
13438 * @param {*} value The value to check.
13439 * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
13440 * @example
13441 *
13442 * _.isNull(null);
13443 * // => true
13444 *
13445 * _.isNull(void 0);
13446 * // => false
13447 */
13448 function isNull(value) {
13449 return value === null;
13450 }
13451
13452 /**
13453 * Checks if `value` is `null` or `undefined`.
13454 *
13455 * @static
13456 * @memberOf _
13457 * @since 4.0.0
13458 * @category Lang
13459 * @param {*} value The value to check.
13460 * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
13461 * @example
13462 *
13463 * _.isNil(null);
13464 * // => true
13465 *
13466 * _.isNil(void 0);
13467 * // => true
13468 *
13469 * _.isNil(NaN);
13470 * // => false
13471 */
13472 function isNil(value) {
13473 return value == null;
13474 }
13475
13476 /**
13477 * Checks if `value` is classified as a `Number` primitive or object.
13478 *
13479 * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
13480 * classified as numbers, use the `_.isFinite` method.
13481 *
13482 * @static
13483 * @memberOf _
13484 * @since 0.1.0
13485 * @category Lang
13486 * @param {*} value The value to check.
13487 * @returns {boolean} Returns `true` if `value` is a number, else `false`.
13488 * @example
13489 *
13490 * _.isNumber(3);
13491 * // => true
13492 *
13493 * _.isNumber(Number.MIN_VALUE);
13494 * // => true
13495 *
13496 * _.isNumber(Infinity);
13497 * // => true
13498 *
13499 * _.isNumber('3');
13500 * // => false
13501 */
13502 function isNumber(value) {
13503 return typeof value == 'number' ||
13504 (isObjectLike(value) && baseGetTag(value) == numberTag);
13505 }
13506
13507 /**
13508 * Checks if `value` is a plain object, that is, an object created by the
13509 * `Object` constructor or one with a `[[Prototype]]` of `null`.
13510 *
13511 * @static
13512 * @memberOf _
13513 * @since 0.8.0
13514 * @category Lang
13515 * @param {*} value The value to check.
13516 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
13517 * @example
13518 *
13519 * function Foo() {
13520 * this.a = 1;
13521 * }
13522 *
13523 * _.isPlainObject(new Foo);
13524 * // => false
13525 *
13526 * _.isPlainObject([1, 2, 3]);
13527 * // => false
13528 *
13529 * _.isPlainObject({ 'x': 0, 'y': 0 });
13530 * // => true
13531 *
13532 * _.isPlainObject(Object.create(null));
13533 * // => true
13534 */
13535 function isPlainObject(value) {
13536 if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
13537 return false;
13538 }
13539 var proto = getPrototype(value);
13540 if (proto === null) {
13541 return true;
13542 }
13543 var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
13544 return typeof Ctor == 'function' && Ctor instanceof Ctor &&
13545 funcToString.call(Ctor) == objectCtorString;
13546 }
13547
13548 /**
13549 * Checks if `value` is classified as a `RegExp` object.
13550 *
13551 * @static
13552 * @memberOf _
13553 * @since 0.1.0
13554 * @category Lang
13555 * @param {*} value The value to check.
13556 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
13557 * @example
13558 *
13559 * _.isRegExp(/abc/);
13560 * // => true
13561 *
13562 * _.isRegExp('/abc/');
13563 * // => false
13564 */
13565 var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
13566
13567 /**
13568 * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
13569 * double precision number which isn't the result of a rounded unsafe integer.
13570 *
13571 * **Note:** This method is based on
13572 * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
13573 *
13574 * @static
13575 * @memberOf _
13576 * @since 4.0.0
13577 * @category Lang
13578 * @param {*} value The value to check.
13579 * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
13580 * @example
13581 *
13582 * _.isSafeInteger(3);
13583 * // => true
13584 *
13585 * _.isSafeInteger(Number.MIN_VALUE);
13586 * // => false
13587 *
13588 * _.isSafeInteger(Infinity);
13589 * // => false
13590 *
13591 * _.isSafeInteger('3');
13592 * // => false
13593 */
13594 function isSafeInteger(value) {
13595 return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
13596 }
13597
13598 /**
13599 * Checks if `value` is classified as a `Set` object.
13600 *
13601 * @static
13602 * @memberOf _
13603 * @since 4.3.0
13604 * @category Lang
13605 * @param {*} value The value to check.
13606 * @returns {boolean} Returns `true` if `value` is a set, else `false`.
13607 * @example
13608 *
13609 * _.isSet(new Set);
13610 * // => true
13611 *
13612 * _.isSet(new WeakSet);
13613 * // => false
13614 */
13615 var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
13616
13617 /**
13618 * Checks if `value` is classified as a `String` primitive or object.
13619 *
13620 * @static
13621 * @since 0.1.0
13622 * @memberOf _
13623 * @category Lang
13624 * @param {*} value The value to check.
13625 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
13626 * @example
13627 *
13628 * _.isString('abc');
13629 * // => true
13630 *
13631 * _.isString(1);
13632 * // => false
13633 */
13634 function isString(value) {
13635 return typeof value == 'string' ||
13636 (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
13637 }
13638
13639 /**
13640 * Checks if `value` is classified as a `Symbol` primitive or object.
13641 *
13642 * @static
13643 * @memberOf _
13644 * @since 4.0.0
13645 * @category Lang
13646 * @param {*} value The value to check.
13647 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
13648 * @example
13649 *
13650 * _.isSymbol(Symbol.iterator);
13651 * // => true
13652 *
13653 * _.isSymbol('abc');
13654 * // => false
13655 */
13656 function isSymbol(value) {
13657 return typeof value == 'symbol' ||
13658 (isObjectLike(value) && baseGetTag(value) == symbolTag);
13659 }
13660
13661 /**
13662 * Checks if `value` is classified as a typed array.
13663 *
13664 * @static
13665 * @memberOf _
13666 * @since 3.0.0
13667 * @category Lang
13668 * @param {*} value The value to check.
13669 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
13670 * @example
13671 *
13672 * _.isTypedArray(new Uint8Array);
13673 * // => true
13674 *
13675 * _.isTypedArray([]);
13676 * // => false
13677 */
13678 var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
13679
13680 /**
13681 * Checks if `value` is `undefined`.
13682 *
13683 * @static
13684 * @since 0.1.0
13685 * @memberOf _
13686 * @category Lang
13687 * @param {*} value The value to check.
13688 * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
13689 * @example
13690 *
13691 * _.isUndefined(void 0);
13692 * // => true
13693 *
13694 * _.isUndefined(null);
13695 * // => false
13696 */
13697 function isUndefined(value) {
13698 return value === undefined;
13699 }
13700
13701 /**
13702 * Checks if `value` is classified as a `WeakMap` object.
13703 *
13704 * @static
13705 * @memberOf _
13706 * @since 4.3.0
13707 * @category Lang
13708 * @param {*} value The value to check.
13709 * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
13710 * @example
13711 *
13712 * _.isWeakMap(new WeakMap);
13713 * // => true
13714 *
13715 * _.isWeakMap(new Map);
13716 * // => false
13717 */
13718 function isWeakMap(value) {
13719 return isObjectLike(value) && getTag(value) == weakMapTag;
13720 }
13721
13722 /**
13723 * Checks if `value` is classified as a `WeakSet` object.
13724 *
13725 * @static
13726 * @memberOf _
13727 * @since 4.3.0
13728 * @category Lang
13729 * @param {*} value The value to check.
13730 * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
13731 * @example
13732 *
13733 * _.isWeakSet(new WeakSet);
13734 * // => true
13735 *
13736 * _.isWeakSet(new Set);
13737 * // => false
13738 */
13739 function isWeakSet(value) {
13740 return isObjectLike(value) && baseGetTag(value) == weakSetTag;
13741 }
13742
13743 /**
13744 * Checks if `value` is less than `other`.
13745 *
13746 * @static
13747 * @memberOf _
13748 * @since 3.9.0
13749 * @category Lang
13750 * @param {*} value The value to compare.
13751 * @param {*} other The other value to compare.
13752 * @returns {boolean} Returns `true` if `value` is less than `other`,
13753 * else `false`.
13754 * @see _.gt
13755 * @example
13756 *
13757 * _.lt(1, 3);
13758 * // => true
13759 *
13760 * _.lt(3, 3);
13761 * // => false
13762 *
13763 * _.lt(3, 1);
13764 * // => false
13765 */
13766 var lt = createRelationalOperation(baseLt);
13767
13768 /**
13769 * Checks if `value` is less than or equal to `other`.
13770 *
13771 * @static
13772 * @memberOf _
13773 * @since 3.9.0
13774 * @category Lang
13775 * @param {*} value The value to compare.
13776 * @param {*} other The other value to compare.
13777 * @returns {boolean} Returns `true` if `value` is less than or equal to
13778 * `other`, else `false`.
13779 * @see _.gte
13780 * @example
13781 *
13782 * _.lte(1, 3);
13783 * // => true
13784 *
13785 * _.lte(3, 3);
13786 * // => true
13787 *
13788 * _.lte(3, 1);
13789 * // => false
13790 */
13791 var lte = createRelationalOperation(function(value, other) {
13792 return value <= other;
13793 });
13794
13795 /**
13796 * Converts `value` to an array.
13797 *
13798 * @static
13799 * @since 0.1.0
13800 * @memberOf _
13801 * @category Lang
13802 * @param {*} value The value to convert.
13803 * @returns {Array} Returns the converted array.
13804 * @example
13805 *
13806 * _.toArray({ 'a': 1, 'b': 2 });
13807 * // => [1, 2]
13808 *
13809 * _.toArray('abc');
13810 * // => ['a', 'b', 'c']
13811 *
13812 * _.toArray(1);
13813 * // => []
13814 *
13815 * _.toArray(null);
13816 * // => []
13817 */
13818 function toArray(value) {
13819 if (!value) {
13820 return [];
13821 }
13822 if (isArrayLike(value)) {
13823 return isString(value) ? stringToArray(value) : copyArray(value);
13824 }
13825 if (symIterator && value[symIterator]) {
13826 return iteratorToArray(value[symIterator]());
13827 }
13828 var tag = getTag(value),
13829 func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
13830
13831 return func(value);
13832 }
13833
13834 /**
13835 * Converts `value` to a finite number.
13836 *
13837 * @static
13838 * @memberOf _
13839 * @since 4.12.0
13840 * @category Lang
13841 * @param {*} value The value to convert.
13842 * @returns {number} Returns the converted number.
13843 * @example
13844 *
13845 * _.toFinite(3.2);
13846 * // => 3.2
13847 *
13848 * _.toFinite(Number.MIN_VALUE);
13849 * // => 5e-324
13850 *
13851 * _.toFinite(Infinity);
13852 * // => 1.7976931348623157e+308
13853 *
13854 * _.toFinite('3.2');
13855 * // => 3.2
13856 */
13857 function toFinite(value) {
13858 if (!value) {
13859 return value === 0 ? value : 0;
13860 }
13861 value = toNumber(value);
13862 if (value === INFINITY || value === -INFINITY) {
13863 var sign = (value < 0 ? -1 : 1);
13864 return sign * MAX_INTEGER;
13865 }
13866 return value === value ? value : 0;
13867 }
13868
13869 /**
13870 * Converts `value` to an integer.
13871 *
13872 * **Note:** This method is loosely based on
13873 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
13874 *
13875 * @static
13876 * @memberOf _
13877 * @since 4.0.0
13878 * @category Lang
13879 * @param {*} value The value to convert.
13880 * @returns {number} Returns the converted integer.
13881 * @example
13882 *
13883 * _.toInteger(3.2);
13884 * // => 3
13885 *
13886 * _.toInteger(Number.MIN_VALUE);
13887 * // => 0
13888 *
13889 * _.toInteger(Infinity);
13890 * // => 1.7976931348623157e+308
13891 *
13892 * _.toInteger('3.2');
13893 * // => 3
13894 */
13895 function toInteger(value) {
13896 var result = toFinite(value),
13897 remainder = result % 1;
13898
13899 return result === result ? (remainder ? result - remainder : result) : 0;
13900 }
13901
13902 /**
13903 * Converts `value` to an integer suitable for use as the length of an
13904 * array-like object.
13905 *
13906 * **Note:** This method is based on
13907 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
13908 *
13909 * @static
13910 * @memberOf _
13911 * @since 4.0.0
13912 * @category Lang
13913 * @param {*} value The value to convert.
13914 * @returns {number} Returns the converted integer.
13915 * @example
13916 *
13917 * _.toLength(3.2);
13918 * // => 3
13919 *
13920 * _.toLength(Number.MIN_VALUE);
13921 * // => 0
13922 *
13923 * _.toLength(Infinity);
13924 * // => 4294967295
13925 *
13926 * _.toLength('3.2');
13927 * // => 3
13928 */
13929 function toLength(value) {
13930 return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
13931 }
13932
13933 /**
13934 * Converts `value` to a number.
13935 *
13936 * @static
13937 * @memberOf _
13938 * @since 4.0.0
13939 * @category Lang
13940 * @param {*} value The value to process.
13941 * @returns {number} Returns the number.
13942 * @example
13943 *
13944 * _.toNumber(3.2);
13945 * // => 3.2
13946 *
13947 * _.toNumber(Number.MIN_VALUE);
13948 * // => 5e-324
13949 *
13950 * _.toNumber(Infinity);
13951 * // => Infinity
13952 *
13953 * _.toNumber('3.2');
13954 * // => 3.2
13955 */
13956 function toNumber(value) {
13957 if (typeof value == 'number') {
13958 return value;
13959 }
13960 if (isSymbol(value)) {
13961 return NAN;
13962 }
13963 if (isObject(value)) {
13964 var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
13965 value = isObject(other) ? (other + '') : other;
13966 }
13967 if (typeof value != 'string') {
13968 return value === 0 ? value : +value;
13969 }
13970 value = value.replace(reTrim, '');
13971 var isBinary = reIsBinary.test(value);
13972 return (isBinary || reIsOctal.test(value))
13973 ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
13974 : (reIsBadHex.test(value) ? NAN : +value);
13975 }
13976
13977 /**
13978 * Converts `value` to a plain object flattening inherited enumerable string
13979 * keyed properties of `value` to own properties of the plain object.
13980 *
13981 * @static
13982 * @memberOf _
13983 * @since 3.0.0
13984 * @category Lang
13985 * @param {*} value The value to convert.
13986 * @returns {Object} Returns the converted plain object.
13987 * @example
13988 *
13989 * function Foo() {
13990 * this.b = 2;
13991 * }
13992 *
13993 * Foo.prototype.c = 3;
13994 *
13995 * _.assign({ 'a': 1 }, new Foo);
13996 * // => { 'a': 1, 'b': 2 }
13997 *
13998 * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
13999 * // => { 'a': 1, 'b': 2, 'c': 3 }
14000 */
14001 function toPlainObject(value) {
14002 return copyObject(value, keysIn(value));
14003 }
14004
14005 /**
14006 * Converts `value` to a safe integer. A safe integer can be compared and
14007 * represented correctly.
14008 *
14009 * @static
14010 * @memberOf _
14011 * @since 4.0.0
14012 * @category Lang
14013 * @param {*} value The value to convert.
14014 * @returns {number} Returns the converted integer.
14015 * @example
14016 *
14017 * _.toSafeInteger(3.2);
14018 * // => 3
14019 *
14020 * _.toSafeInteger(Number.MIN_VALUE);
14021 * // => 0
14022 *
14023 * _.toSafeInteger(Infinity);
14024 * // => 9007199254740991
14025 *
14026 * _.toSafeInteger('3.2');
14027 * // => 3
14028 */
14029 function toSafeInteger(value) {
14030 return value
14031 ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
14032 : (value === 0 ? value : 0);
14033 }
14034
14035 /**
14036 * Converts `value` to a string. An empty string is returned for `null`
14037 * and `undefined` values. The sign of `-0` is preserved.
14038 *
14039 * @static
14040 * @memberOf _
14041 * @since 4.0.0
14042 * @category Lang
14043 * @param {*} value The value to convert.
14044 * @returns {string} Returns the converted string.
14045 * @example
14046 *
14047 * _.toString(null);
14048 * // => ''
14049 *
14050 * _.toString(-0);
14051 * // => '-0'
14052 *
14053 * _.toString([1, 2, 3]);
14054 * // => '1,2,3'
14055 */
14056 function toString(value) {
14057 return value == null ? '' : baseToString(value);
14058 }
14059
14060 /*------------------------------------------------------------------------*/
14061
14062 /**
14063 * Assigns own enumerable string keyed properties of source objects to the
14064 * destination object. Source objects are applied from left to right.
14065 * Subsequent sources overwrite property assignments of previous sources.
14066 *
14067 * **Note:** This method mutates `object` and is loosely based on
14068 * [`Object.assign`](https://mdn.io/Object/assign).
14069 *
14070 * @static
14071 * @memberOf _
14072 * @since 0.10.0
14073 * @category Object
14074 * @param {Object} object The destination object.
14075 * @param {...Object} [sources] The source objects.
14076 * @returns {Object} Returns `object`.
14077 * @see _.assignIn
14078 * @example
14079 *
14080 * function Foo() {
14081 * this.a = 1;
14082 * }
14083 *
14084 * function Bar() {
14085 * this.c = 3;
14086 * }
14087 *
14088 * Foo.prototype.b = 2;
14089 * Bar.prototype.d = 4;
14090 *
14091 * _.assign({ 'a': 0 }, new Foo, new Bar);
14092 * // => { 'a': 1, 'c': 3 }
14093 */
14094 var assign = createAssigner(function(object, source) {
14095 if (isPrototype(source) || isArrayLike(source)) {
14096 copyObject(source, keys(source), object);
14097 return;
14098 }
14099 for (var key in source) {
14100 if (hasOwnProperty.call(source, key)) {
14101 assignValue(object, key, source[key]);
14102 }
14103 }
14104 });
14105
14106 /**
14107 * This method is like `_.assign` except that it iterates over own and
14108 * inherited source properties.
14109 *
14110 * **Note:** This method mutates `object`.
14111 *
14112 * @static
14113 * @memberOf _
14114 * @since 4.0.0
14115 * @alias extend
14116 * @category Object
14117 * @param {Object} object The destination object.
14118 * @param {...Object} [sources] The source objects.
14119 * @returns {Object} Returns `object`.
14120 * @see _.assign
14121 * @example
14122 *
14123 * function Foo() {
14124 * this.a = 1;
14125 * }
14126 *
14127 * function Bar() {
14128 * this.c = 3;
14129 * }
14130 *
14131 * Foo.prototype.b = 2;
14132 * Bar.prototype.d = 4;
14133 *
14134 * _.assignIn({ 'a': 0 }, new Foo, new Bar);
14135 * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
14136 */
14137 var assignIn = createAssigner(function(object, source) {
14138 copyObject(source, keysIn(source), object);
14139 });
14140
14141 /**
14142 * This method is like `_.assignIn` except that it accepts `customizer`
14143 * which is invoked to produce the assigned values. If `customizer` returns
14144 * `undefined`, assignment is handled by the method instead. The `customizer`
14145 * is invoked with five arguments: (objValue, srcValue, key, object, source).
14146 *
14147 * **Note:** This method mutates `object`.
14148 *
14149 * @static
14150 * @memberOf _
14151 * @since 4.0.0
14152 * @alias extendWith
14153 * @category Object
14154 * @param {Object} object The destination object.
14155 * @param {...Object} sources The source objects.
14156 * @param {Function} [customizer] The function to customize assigned values.
14157 * @returns {Object} Returns `object`.
14158 * @see _.assignWith
14159 * @example
14160 *
14161 * function customizer(objValue, srcValue) {
14162 * return _.isUndefined(objValue) ? srcValue : objValue;
14163 * }
14164 *
14165 * var defaults = _.partialRight(_.assignInWith, customizer);
14166 *
14167 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
14168 * // => { 'a': 1, 'b': 2 }
14169 */
14170 var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
14171 copyObject(source, keysIn(source), object, customizer);
14172 });
14173
14174 /**
14175 * This method is like `_.assign` except that it accepts `customizer`
14176 * which is invoked to produce the assigned values. If `customizer` returns
14177 * `undefined`, assignment is handled by the method instead. The `customizer`
14178 * is invoked with five arguments: (objValue, srcValue, key, object, source).
14179 *
14180 * **Note:** This method mutates `object`.
14181 *
14182 * @static
14183 * @memberOf _
14184 * @since 4.0.0
14185 * @category Object
14186 * @param {Object} object The destination object.
14187 * @param {...Object} sources The source objects.
14188 * @param {Function} [customizer] The function to customize assigned values.
14189 * @returns {Object} Returns `object`.
14190 * @see _.assignInWith
14191 * @example
14192 *
14193 * function customizer(objValue, srcValue) {
14194 * return _.isUndefined(objValue) ? srcValue : objValue;
14195 * }
14196 *
14197 * var defaults = _.partialRight(_.assignWith, customizer);
14198 *
14199 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
14200 * // => { 'a': 1, 'b': 2 }
14201 */
14202 var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
14203 copyObject(source, keys(source), object, customizer);
14204 });
14205
14206 /**
14207 * Creates an array of values corresponding to `paths` of `object`.
14208 *
14209 * @static
14210 * @memberOf _
14211 * @since 1.0.0
14212 * @category Object
14213 * @param {Object} object The object to iterate over.
14214 * @param {...(string|string[])} [paths] The property paths to pick.
14215 * @returns {Array} Returns the picked values.
14216 * @example
14217 *
14218 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
14219 *
14220 * _.at(object, ['a[0].b.c', 'a[1]']);
14221 * // => [3, 4]
14222 */
14223 var at = flatRest(baseAt);
14224
14225 /**
14226 * Creates an object that inherits from the `prototype` object. If a
14227 * `properties` object is given, its own enumerable string keyed properties
14228 * are assigned to the created object.
14229 *
14230 * @static
14231 * @memberOf _
14232 * @since 2.3.0
14233 * @category Object
14234 * @param {Object} prototype The object to inherit from.
14235 * @param {Object} [properties] The properties to assign to the object.
14236 * @returns {Object} Returns the new object.
14237 * @example
14238 *
14239 * function Shape() {
14240 * this.x = 0;
14241 * this.y = 0;
14242 * }
14243 *
14244 * function Circle() {
14245 * Shape.call(this);
14246 * }
14247 *
14248 * Circle.prototype = _.create(Shape.prototype, {
14249 * 'constructor': Circle
14250 * });
14251 *
14252 * var circle = new Circle;
14253 * circle instanceof Circle;
14254 * // => true
14255 *
14256 * circle instanceof Shape;
14257 * // => true
14258 */
14259 function create(prototype, properties) {
14260 var result = baseCreate(prototype);
14261 return properties == null ? result : baseAssign(result, properties);
14262 }
14263
14264 /**
14265 * Assigns own and inherited enumerable string keyed properties of source
14266 * objects to the destination object for all destination properties that
14267 * resolve to `undefined`. Source objects are applied from left to right.
14268 * Once a property is set, additional values of the same property are ignored.
14269 *
14270 * **Note:** This method mutates `object`.
14271 *
14272 * @static
14273 * @since 0.1.0
14274 * @memberOf _
14275 * @category Object
14276 * @param {Object} object The destination object.
14277 * @param {...Object} [sources] The source objects.
14278 * @returns {Object} Returns `object`.
14279 * @see _.defaultsDeep
14280 * @example
14281 *
14282 * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
14283 * // => { 'a': 1, 'b': 2 }
14284 */
14285 var defaults = baseRest(function(object, sources) {
14286 object = Object(object);
14287
14288 var index = -1;
14289 var length = sources.length;
14290 var guard = length > 2 ? sources[2] : undefined;
14291
14292 if (guard && isIterateeCall(sources[0], sources[1], guard)) {
14293 length = 1;
14294 }
14295
14296 while (++index < length) {
14297 var source = sources[index];
14298 var props = keysIn(source);
14299 var propsIndex = -1;
14300 var propsLength = props.length;
14301
14302 while (++propsIndex < propsLength) {
14303 var key = props[propsIndex];
14304 var value = object[key];
14305
14306 if (value === undefined ||
14307 (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
14308 object[key] = source[key];
14309 }
14310 }
14311 }
14312
14313 return object;
14314 });
14315
14316 /**
14317 * This method is like `_.defaults` except that it recursively assigns
14318 * default properties.
14319 *
14320 * **Note:** This method mutates `object`.
14321 *
14322 * @static
14323 * @memberOf _
14324 * @since 3.10.0
14325 * @category Object
14326 * @param {Object} object The destination object.
14327 * @param {...Object} [sources] The source objects.
14328 * @returns {Object} Returns `object`.
14329 * @see _.defaults
14330 * @example
14331 *
14332 * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
14333 * // => { 'a': { 'b': 2, 'c': 3 } }
14334 */
14335 var defaultsDeep = baseRest(function(args) {
14336 args.push(undefined, customDefaultsMerge);
14337 return apply(mergeWith, undefined, args);
14338 });
14339
14340 /**
14341 * This method is like `_.find` except that it returns the key of the first
14342 * element `predicate` returns truthy for instead of the element itself.
14343 *
14344 * @static
14345 * @memberOf _
14346 * @since 1.1.0
14347 * @category Object
14348 * @param {Object} object The object to inspect.
14349 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14350 * @returns {string|undefined} Returns the key of the matched element,
14351 * else `undefined`.
14352 * @example
14353 *
14354 * var users = {
14355 * 'barney': { 'age': 36, 'active': true },
14356 * 'fred': { 'age': 40, 'active': false },
14357 * 'pebbles': { 'age': 1, 'active': true }
14358 * };
14359 *
14360 * _.findKey(users, function(o) { return o.age < 40; });
14361 * // => 'barney' (iteration order is not guaranteed)
14362 *
14363 * // The `_.matches` iteratee shorthand.
14364 * _.findKey(users, { 'age': 1, 'active': true });
14365 * // => 'pebbles'
14366 *
14367 * // The `_.matchesProperty` iteratee shorthand.
14368 * _.findKey(users, ['active', false]);
14369 * // => 'fred'
14370 *
14371 * // The `_.property` iteratee shorthand.
14372 * _.findKey(users, 'active');
14373 * // => 'barney'
14374 */
14375 function findKey(object, predicate) {
14376 return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
14377 }
14378
14379 /**
14380 * This method is like `_.findKey` except that it iterates over elements of
14381 * a collection in the opposite order.
14382 *
14383 * @static
14384 * @memberOf _
14385 * @since 2.0.0
14386 * @category Object
14387 * @param {Object} object The object to inspect.
14388 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14389 * @returns {string|undefined} Returns the key of the matched element,
14390 * else `undefined`.
14391 * @example
14392 *
14393 * var users = {
14394 * 'barney': { 'age': 36, 'active': true },
14395 * 'fred': { 'age': 40, 'active': false },
14396 * 'pebbles': { 'age': 1, 'active': true }
14397 * };
14398 *
14399 * _.findLastKey(users, function(o) { return o.age < 40; });
14400 * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
14401 *
14402 * // The `_.matches` iteratee shorthand.
14403 * _.findLastKey(users, { 'age': 36, 'active': true });
14404 * // => 'barney'
14405 *
14406 * // The `_.matchesProperty` iteratee shorthand.
14407 * _.findLastKey(users, ['active', false]);
14408 * // => 'fred'
14409 *
14410 * // The `_.property` iteratee shorthand.
14411 * _.findLastKey(users, 'active');
14412 * // => 'pebbles'
14413 */
14414 function findLastKey(object, predicate) {
14415 return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
14416 }
14417
14418 /**
14419 * Iterates over own and inherited enumerable string keyed properties of an
14420 * object and invokes `iteratee` for each property. The iteratee is invoked
14421 * with three arguments: (value, key, object). Iteratee functions may exit
14422 * iteration early by explicitly returning `false`.
14423 *
14424 * @static
14425 * @memberOf _
14426 * @since 0.3.0
14427 * @category Object
14428 * @param {Object} object The object to iterate over.
14429 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14430 * @returns {Object} Returns `object`.
14431 * @see _.forInRight
14432 * @example
14433 *
14434 * function Foo() {
14435 * this.a = 1;
14436 * this.b = 2;
14437 * }
14438 *
14439 * Foo.prototype.c = 3;
14440 *
14441 * _.forIn(new Foo, function(value, key) {
14442 * console.log(key);
14443 * });
14444 * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
14445 */
14446 function forIn(object, iteratee) {
14447 return object == null
14448 ? object
14449 : baseFor(object, getIteratee(iteratee, 3), keysIn);
14450 }
14451
14452 /**
14453 * This method is like `_.forIn` except that it iterates over properties of
14454 * `object` in the opposite order.
14455 *
14456 * @static
14457 * @memberOf _
14458 * @since 2.0.0
14459 * @category Object
14460 * @param {Object} object The object to iterate over.
14461 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14462 * @returns {Object} Returns `object`.
14463 * @see _.forIn
14464 * @example
14465 *
14466 * function Foo() {
14467 * this.a = 1;
14468 * this.b = 2;
14469 * }
14470 *
14471 * Foo.prototype.c = 3;
14472 *
14473 * _.forInRight(new Foo, function(value, key) {
14474 * console.log(key);
14475 * });
14476 * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
14477 */
14478 function forInRight(object, iteratee) {
14479 return object == null
14480 ? object
14481 : baseForRight(object, getIteratee(iteratee, 3), keysIn);
14482 }
14483
14484 /**
14485 * Iterates over own enumerable string keyed properties of an object and
14486 * invokes `iteratee` for each property. The iteratee is invoked with three
14487 * arguments: (value, key, object). Iteratee functions may exit iteration
14488 * early by explicitly returning `false`.
14489 *
14490 * @static
14491 * @memberOf _
14492 * @since 0.3.0
14493 * @category Object
14494 * @param {Object} object The object to iterate over.
14495 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14496 * @returns {Object} Returns `object`.
14497 * @see _.forOwnRight
14498 * @example
14499 *
14500 * function Foo() {
14501 * this.a = 1;
14502 * this.b = 2;
14503 * }
14504 *
14505 * Foo.prototype.c = 3;
14506 *
14507 * _.forOwn(new Foo, function(value, key) {
14508 * console.log(key);
14509 * });
14510 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
14511 */
14512 function forOwn(object, iteratee) {
14513 return object && baseForOwn(object, getIteratee(iteratee, 3));
14514 }
14515
14516 /**
14517 * This method is like `_.forOwn` except that it iterates over properties of
14518 * `object` in the opposite order.
14519 *
14520 * @static
14521 * @memberOf _
14522 * @since 2.0.0
14523 * @category Object
14524 * @param {Object} object The object to iterate over.
14525 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14526 * @returns {Object} Returns `object`.
14527 * @see _.forOwn
14528 * @example
14529 *
14530 * function Foo() {
14531 * this.a = 1;
14532 * this.b = 2;
14533 * }
14534 *
14535 * Foo.prototype.c = 3;
14536 *
14537 * _.forOwnRight(new Foo, function(value, key) {
14538 * console.log(key);
14539 * });
14540 * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
14541 */
14542 function forOwnRight(object, iteratee) {
14543 return object && baseForOwnRight(object, getIteratee(iteratee, 3));
14544 }
14545
14546 /**
14547 * Creates an array of function property names from own enumerable properties
14548 * of `object`.
14549 *
14550 * @static
14551 * @since 0.1.0
14552 * @memberOf _
14553 * @category Object
14554 * @param {Object} object The object to inspect.
14555 * @returns {Array} Returns the function names.
14556 * @see _.functionsIn
14557 * @example
14558 *
14559 * function Foo() {
14560 * this.a = _.constant('a');
14561 * this.b = _.constant('b');
14562 * }
14563 *
14564 * Foo.prototype.c = _.constant('c');
14565 *
14566 * _.functions(new Foo);
14567 * // => ['a', 'b']
14568 */
14569 function functions(object) {
14570 return object == null ? [] : baseFunctions(object, keys(object));
14571 }
14572
14573 /**
14574 * Creates an array of function property names from own and inherited
14575 * enumerable properties of `object`.
14576 *
14577 * @static
14578 * @memberOf _
14579 * @since 4.0.0
14580 * @category Object
14581 * @param {Object} object The object to inspect.
14582 * @returns {Array} Returns the function names.
14583 * @see _.functions
14584 * @example
14585 *
14586 * function Foo() {
14587 * this.a = _.constant('a');
14588 * this.b = _.constant('b');
14589 * }
14590 *
14591 * Foo.prototype.c = _.constant('c');
14592 *
14593 * _.functionsIn(new Foo);
14594 * // => ['a', 'b', 'c']
14595 */
14596 function functionsIn(object) {
14597 return object == null ? [] : baseFunctions(object, keysIn(object));
14598 }
14599
14600 /**
14601 * Gets the value at `path` of `object`. If the resolved value is
14602 * `undefined`, the `defaultValue` is returned in its place.
14603 *
14604 * @static
14605 * @memberOf _
14606 * @since 3.7.0
14607 * @category Object
14608 * @param {Object} object The object to query.
14609 * @param {Array|string} path The path of the property to get.
14610 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
14611 * @returns {*} Returns the resolved value.
14612 * @example
14613 *
14614 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
14615 *
14616 * _.get(object, 'a[0].b.c');
14617 * // => 3
14618 *
14619 * _.get(object, ['a', '0', 'b', 'c']);
14620 * // => 3
14621 *
14622 * _.get(object, 'a.b.c', 'default');
14623 * // => 'default'
14624 */
14625 function get(object, path, defaultValue) {
14626 var result = object == null ? undefined : baseGet(object, path);
14627 return result === undefined ? defaultValue : result;
14628 }
14629
14630 /**
14631 * Checks if `path` is a direct property of `object`.
14632 *
14633 * @static
14634 * @since 0.1.0
14635 * @memberOf _
14636 * @category Object
14637 * @param {Object} object The object to query.
14638 * @param {Array|string} path The path to check.
14639 * @returns {boolean} Returns `true` if `path` exists, else `false`.
14640 * @example
14641 *
14642 * var object = { 'a': { 'b': 2 } };
14643 * var other = _.create({ 'a': _.create({ 'b': 2 }) });
14644 *
14645 * _.has(object, 'a');
14646 * // => true
14647 *
14648 * _.has(object, 'a.b');
14649 * // => true
14650 *
14651 * _.has(object, ['a', 'b']);
14652 * // => true
14653 *
14654 * _.has(other, 'a');
14655 * // => false
14656 */
14657 function has(object, path) {
14658 return object != null && hasPath(object, path, baseHas);
14659 }
14660
14661 /**
14662 * Checks if `path` is a direct or inherited property of `object`.
14663 *
14664 * @static
14665 * @memberOf _
14666 * @since 4.0.0
14667 * @category Object
14668 * @param {Object} object The object to query.
14669 * @param {Array|string} path The path to check.
14670 * @returns {boolean} Returns `true` if `path` exists, else `false`.
14671 * @example
14672 *
14673 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
14674 *
14675 * _.hasIn(object, 'a');
14676 * // => true
14677 *
14678 * _.hasIn(object, 'a.b');
14679 * // => true
14680 *
14681 * _.hasIn(object, ['a', 'b']);
14682 * // => true
14683 *
14684 * _.hasIn(object, 'b');
14685 * // => false
14686 */
14687 function hasIn(object, path) {
14688 return object != null && hasPath(object, path, baseHasIn);
14689 }
14690
14691 /**
14692 * Creates an object composed of the inverted keys and values of `object`.
14693 * If `object` contains duplicate values, subsequent values overwrite
14694 * property assignments of previous values.
14695 *
14696 * @static
14697 * @memberOf _
14698 * @since 0.7.0
14699 * @category Object
14700 * @param {Object} object The object to invert.
14701 * @returns {Object} Returns the new inverted object.
14702 * @example
14703 *
14704 * var object = { 'a': 1, 'b': 2, 'c': 1 };
14705 *
14706 * _.invert(object);
14707 * // => { '1': 'c', '2': 'b' }
14708 */
14709 var invert = createInverter(function(result, value, key) {
14710 if (value != null &&
14711 typeof value.toString != 'function') {
14712 value = nativeObjectToString.call(value);
14713 }
14714
14715 result[value] = key;
14716 }, constant(identity));
14717
14718 /**
14719 * This method is like `_.invert` except that the inverted object is generated
14720 * from the results of running each element of `object` thru `iteratee`. The
14721 * corresponding inverted value of each inverted key is an array of keys
14722 * responsible for generating the inverted value. The iteratee is invoked
14723 * with one argument: (value).
14724 *
14725 * @static
14726 * @memberOf _
14727 * @since 4.1.0
14728 * @category Object
14729 * @param {Object} object The object to invert.
14730 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14731 * @returns {Object} Returns the new inverted object.
14732 * @example
14733 *
14734 * var object = { 'a': 1, 'b': 2, 'c': 1 };
14735 *
14736 * _.invertBy(object);
14737 * // => { '1': ['a', 'c'], '2': ['b'] }
14738 *
14739 * _.invertBy(object, function(value) {
14740 * return 'group' + value;
14741 * });
14742 * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
14743 */
14744 var invertBy = createInverter(function(result, value, key) {
14745 if (value != null &&
14746 typeof value.toString != 'function') {
14747 value = nativeObjectToString.call(value);
14748 }
14749
14750 if (hasOwnProperty.call(result, value)) {
14751 result[value].push(key);
14752 } else {
14753 result[value] = [key];
14754 }
14755 }, getIteratee);
14756
14757 /**
14758 * Invokes the method at `path` of `object`.
14759 *
14760 * @static
14761 * @memberOf _
14762 * @since 4.0.0
14763 * @category Object
14764 * @param {Object} object The object to query.
14765 * @param {Array|string} path The path of the method to invoke.
14766 * @param {...*} [args] The arguments to invoke the method with.
14767 * @returns {*} Returns the result of the invoked method.
14768 * @example
14769 *
14770 * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
14771 *
14772 * _.invoke(object, 'a[0].b.c.slice', 1, 3);
14773 * // => [2, 3]
14774 */
14775 var invoke = baseRest(baseInvoke);
14776
14777 /**
14778 * Creates an array of the own enumerable property names of `object`.
14779 *
14780 * **Note:** Non-object values are coerced to objects. See the
14781 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
14782 * for more details.
14783 *
14784 * @static
14785 * @since 0.1.0
14786 * @memberOf _
14787 * @category Object
14788 * @param {Object} object The object to query.
14789 * @returns {Array} Returns the array of property names.
14790 * @example
14791 *
14792 * function Foo() {
14793 * this.a = 1;
14794 * this.b = 2;
14795 * }
14796 *
14797 * Foo.prototype.c = 3;
14798 *
14799 * _.keys(new Foo);
14800 * // => ['a', 'b'] (iteration order is not guaranteed)
14801 *
14802 * _.keys('hi');
14803 * // => ['0', '1']
14804 */
14805 function keys(object) {
14806 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
14807 }
14808
14809 /**
14810 * Creates an array of the own and inherited enumerable property names of `object`.
14811 *
14812 * **Note:** Non-object values are coerced to objects.
14813 *
14814 * @static
14815 * @memberOf _
14816 * @since 3.0.0
14817 * @category Object
14818 * @param {Object} object The object to query.
14819 * @returns {Array} Returns the array of property names.
14820 * @example
14821 *
14822 * function Foo() {
14823 * this.a = 1;
14824 * this.b = 2;
14825 * }
14826 *
14827 * Foo.prototype.c = 3;
14828 *
14829 * _.keysIn(new Foo);
14830 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
14831 */
14832 function keysIn(object) {
14833 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
14834 }
14835
14836 /**
14837 * The opposite of `_.mapValues`; this method creates an object with the
14838 * same values as `object` and keys generated by running each own enumerable
14839 * string keyed property of `object` thru `iteratee`. The iteratee is invoked
14840 * with three arguments: (value, key, object).
14841 *
14842 * @static
14843 * @memberOf _
14844 * @since 3.8.0
14845 * @category Object
14846 * @param {Object} object The object to iterate over.
14847 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14848 * @returns {Object} Returns the new mapped object.
14849 * @see _.mapValues
14850 * @example
14851 *
14852 * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
14853 * return key + value;
14854 * });
14855 * // => { 'a1': 1, 'b2': 2 }
14856 */
14857 function mapKeys(object, iteratee) {
14858 var result = {};
14859 iteratee = getIteratee(iteratee, 3);
14860
14861 baseForOwn(object, function(value, key, object) {
14862 baseAssignValue(result, iteratee(value, key, object), value);
14863 });
14864 return result;
14865 }
14866
14867 /**
14868 * Creates an object with the same keys as `object` and values generated
14869 * by running each own enumerable string keyed property of `object` thru
14870 * `iteratee`. The iteratee is invoked with three arguments:
14871 * (value, key, object).
14872 *
14873 * @static
14874 * @memberOf _
14875 * @since 2.4.0
14876 * @category Object
14877 * @param {Object} object The object to iterate over.
14878 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14879 * @returns {Object} Returns the new mapped object.
14880 * @see _.mapKeys
14881 * @example
14882 *
14883 * var users = {
14884 * 'fred': { 'user': 'fred', 'age': 40 },
14885 * 'pebbles': { 'user': 'pebbles', 'age': 1 }
14886 * };
14887 *
14888 * _.mapValues(users, function(o) { return o.age; });
14889 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
14890 *
14891 * // The `_.property` iteratee shorthand.
14892 * _.mapValues(users, 'age');
14893 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
14894 */
14895 function mapValues(object, iteratee) {
14896 var result = {};
14897 iteratee = getIteratee(iteratee, 3);
14898
14899 baseForOwn(object, function(value, key, object) {
14900 baseAssignValue(result, key, iteratee(value, key, object));
14901 });
14902 return result;
14903 }
14904
14905 /**
14906 * This method is like `_.assign` except that it recursively merges own and
14907 * inherited enumerable string keyed properties of source objects into the
14908 * destination object. Source properties that resolve to `undefined` are
14909 * skipped if a destination value exists. Array and plain object properties
14910 * are merged recursively. Other objects and value types are overridden by
14911 * assignment. Source objects are applied from left to right. Subsequent
14912 * sources overwrite property assignments of previous sources.
14913 *
14914 * **Note:** This method mutates `object`.
14915 *
14916 * @static
14917 * @memberOf _
14918 * @since 0.5.0
14919 * @category Object
14920 * @param {Object} object The destination object.
14921 * @param {...Object} [sources] The source objects.
14922 * @returns {Object} Returns `object`.
14923 * @example
14924 *
14925 * var object = {
14926 * 'a': [{ 'b': 2 }, { 'd': 4 }]
14927 * };
14928 *
14929 * var other = {
14930 * 'a': [{ 'c': 3 }, { 'e': 5 }]
14931 * };
14932 *
14933 * _.merge(object, other);
14934 * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
14935 */
14936 var merge = createAssigner(function(object, source, srcIndex) {
14937 baseMerge(object, source, srcIndex);
14938 });
14939
14940 /**
14941 * This method is like `_.merge` except that it accepts `customizer` which
14942 * is invoked to produce the merged values of the destination and source
14943 * properties. If `customizer` returns `undefined`, merging is handled by the
14944 * method instead. The `customizer` is invoked with six arguments:
14945 * (objValue, srcValue, key, object, source, stack).
14946 *
14947 * **Note:** This method mutates `object`.
14948 *
14949 * @static
14950 * @memberOf _
14951 * @since 4.0.0
14952 * @category Object
14953 * @param {Object} object The destination object.
14954 * @param {...Object} sources The source objects.
14955 * @param {Function} customizer The function to customize assigned values.
14956 * @returns {Object} Returns `object`.
14957 * @example
14958 *
14959 * function customizer(objValue, srcValue) {
14960 * if (_.isArray(objValue)) {
14961 * return objValue.concat(srcValue);
14962 * }
14963 * }
14964 *
14965 * var object = { 'a': [1], 'b': [2] };
14966 * var other = { 'a': [3], 'b': [4] };
14967 *
14968 * _.mergeWith(object, other, customizer);
14969 * // => { 'a': [1, 3], 'b': [2, 4] }
14970 */
14971 var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
14972 baseMerge(object, source, srcIndex, customizer);
14973 });
14974
14975 /**
14976 * The opposite of `_.pick`; this method creates an object composed of the
14977 * own and inherited enumerable property paths of `object` that are not omitted.
14978 *
14979 * **Note:** This method is considerably slower than `_.pick`.
14980 *
14981 * @static
14982 * @since 0.1.0
14983 * @memberOf _
14984 * @category Object
14985 * @param {Object} object The source object.
14986 * @param {...(string|string[])} [paths] The property paths to omit.
14987 * @returns {Object} Returns the new object.
14988 * @example
14989 *
14990 * var object = { 'a': 1, 'b': '2', 'c': 3 };
14991 *
14992 * _.omit(object, ['a', 'c']);
14993 * // => { 'b': '2' }
14994 */
14995 var omit = flatRest(function(object, paths) {
14996 var result = {};
14997 if (object == null) {
14998 return result;
14999 }
15000 var isDeep = false;
15001 paths = arrayMap(paths, function(path) {
15002 path = castPath(path, object);
15003 isDeep || (isDeep = path.length > 1);
15004 return path;
15005 });
15006 copyObject(object, getAllKeysIn(object), result);
15007 if (isDeep) {
15008 result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
15009 }
15010 var length = paths.length;
15011 while (length--) {
15012 baseUnset(result, paths[length]);
15013 }
15014 return result;
15015 });
15016
15017 /**
15018 * The opposite of `_.pickBy`; this method creates an object composed of
15019 * the own and inherited enumerable string keyed properties of `object` that
15020 * `predicate` doesn't return truthy for. The predicate is invoked with two
15021 * arguments: (value, key).
15022 *
15023 * @static
15024 * @memberOf _
15025 * @since 4.0.0
15026 * @category Object
15027 * @param {Object} object The source object.
15028 * @param {Function} [predicate=_.identity] The function invoked per property.
15029 * @returns {Object} Returns the new object.
15030 * @example
15031 *
15032 * var object = { 'a': 1, 'b': '2', 'c': 3 };
15033 *
15034 * _.omitBy(object, _.isNumber);
15035 * // => { 'b': '2' }
15036 */
15037 function omitBy(object, predicate) {
15038 return pickBy(object, negate(getIteratee(predicate)));
15039 }
15040
15041 /**
15042 * Creates an object composed of the picked `object` properties.
15043 *
15044 * @static
15045 * @since 0.1.0
15046 * @memberOf _
15047 * @category Object
15048 * @param {Object} object The source object.
15049 * @param {...(string|string[])} [paths] The property paths to pick.
15050 * @returns {Object} Returns the new object.
15051 * @example
15052 *
15053 * var object = { 'a': 1, 'b': '2', 'c': 3 };
15054 *
15055 * _.pick(object, ['a', 'c']);
15056 * // => { 'a': 1, 'c': 3 }
15057 */
15058 var pick = flatRest(function(object, paths) {
15059 return object == null ? {} : basePick(object, paths);
15060 });
15061
15062 /**
15063 * Creates an object composed of the `object` properties `predicate` returns
15064 * truthy for. The predicate is invoked with two arguments: (value, key).
15065 *
15066 * @static
15067 * @memberOf _
15068 * @since 4.0.0
15069 * @category Object
15070 * @param {Object} object The source object.
15071 * @param {Function} [predicate=_.identity] The function invoked per property.
15072 * @returns {Object} Returns the new object.
15073 * @example
15074 *
15075 * var object = { 'a': 1, 'b': '2', 'c': 3 };
15076 *
15077 * _.pickBy(object, _.isNumber);
15078 * // => { 'a': 1, 'c': 3 }
15079 */
15080 function pickBy(object, predicate) {
15081 if (object == null) {
15082 return {};
15083 }
15084 var props = arrayMap(getAllKeysIn(object), function(prop) {
15085 return [prop];
15086 });
15087 predicate = getIteratee(predicate);
15088 return basePickBy(object, props, function(value, path) {
15089 return predicate(value, path[0]);
15090 });
15091 }
15092
15093 /**
15094 * This method is like `_.get` except that if the resolved value is a
15095 * function it's invoked with the `this` binding of its parent object and
15096 * its result is returned.
15097 *
15098 * @static
15099 * @since 0.1.0
15100 * @memberOf _
15101 * @category Object
15102 * @param {Object} object The object to query.
15103 * @param {Array|string} path The path of the property to resolve.
15104 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
15105 * @returns {*} Returns the resolved value.
15106 * @example
15107 *
15108 * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
15109 *
15110 * _.result(object, 'a[0].b.c1');
15111 * // => 3
15112 *
15113 * _.result(object, 'a[0].b.c2');
15114 * // => 4
15115 *
15116 * _.result(object, 'a[0].b.c3', 'default');
15117 * // => 'default'
15118 *
15119 * _.result(object, 'a[0].b.c3', _.constant('default'));
15120 * // => 'default'
15121 */
15122 function result(object, path, defaultValue) {
15123 path = castPath(path, object);
15124
15125 var index = -1,
15126 length = path.length;
15127
15128 // Ensure the loop is entered when path is empty.
15129 if (!length) {
15130 length = 1;
15131 object = undefined;
15132 }
15133 while (++index < length) {
15134 var value = object == null ? undefined : object[toKey(path[index])];
15135 if (value === undefined) {
15136 index = length;
15137 value = defaultValue;
15138 }
15139 object = isFunction(value) ? value.call(object) : value;
15140 }
15141 return object;
15142 }
15143
15144 /**
15145 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
15146 * it's created. Arrays are created for missing index properties while objects
15147 * are created for all other missing properties. Use `_.setWith` to customize
15148 * `path` creation.
15149 *
15150 * **Note:** This method mutates `object`.
15151 *
15152 * @static
15153 * @memberOf _
15154 * @since 3.7.0
15155 * @category Object
15156 * @param {Object} object The object to modify.
15157 * @param {Array|string} path The path of the property to set.
15158 * @param {*} value The value to set.
15159 * @returns {Object} Returns `object`.
15160 * @example
15161 *
15162 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
15163 *
15164 * _.set(object, 'a[0].b.c', 4);
15165 * console.log(object.a[0].b.c);
15166 * // => 4
15167 *
15168 * _.set(object, ['x', '0', 'y', 'z'], 5);
15169 * console.log(object.x[0].y.z);
15170 * // => 5
15171 */
15172 function set(object, path, value) {
15173 return object == null ? object : baseSet(object, path, value);
15174 }
15175
15176 /**
15177 * This method is like `_.set` except that it accepts `customizer` which is
15178 * invoked to produce the objects of `path`. If `customizer` returns `undefined`
15179 * path creation is handled by the method instead. The `customizer` is invoked
15180 * with three arguments: (nsValue, key, nsObject).
15181 *
15182 * **Note:** This method mutates `object`.
15183 *
15184 * @static
15185 * @memberOf _
15186 * @since 4.0.0
15187 * @category Object
15188 * @param {Object} object The object to modify.
15189 * @param {Array|string} path The path of the property to set.
15190 * @param {*} value The value to set.
15191 * @param {Function} [customizer] The function to customize assigned values.
15192 * @returns {Object} Returns `object`.
15193 * @example
15194 *
15195 * var object = {};
15196 *
15197 * _.setWith(object, '[0][1]', 'a', Object);
15198 * // => { '0': { '1': 'a' } }
15199 */
15200 function setWith(object, path, value, customizer) {
15201 customizer = typeof customizer == 'function' ? customizer : undefined;
15202 return object == null ? object : baseSet(object, path, value, customizer);
15203 }
15204
15205 /**
15206 * Creates an array of own enumerable string keyed-value pairs for `object`
15207 * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
15208 * entries are returned.
15209 *
15210 * @static
15211 * @memberOf _
15212 * @since 4.0.0
15213 * @alias entries
15214 * @category Object
15215 * @param {Object} object The object to query.
15216 * @returns {Array} Returns the key-value pairs.
15217 * @example
15218 *
15219 * function Foo() {
15220 * this.a = 1;
15221 * this.b = 2;
15222 * }
15223 *
15224 * Foo.prototype.c = 3;
15225 *
15226 * _.toPairs(new Foo);
15227 * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
15228 */
15229 var toPairs = createToPairs(keys);
15230
15231 /**
15232 * Creates an array of own and inherited enumerable string keyed-value pairs
15233 * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
15234 * or set, its entries are returned.
15235 *
15236 * @static
15237 * @memberOf _
15238 * @since 4.0.0
15239 * @alias entriesIn
15240 * @category Object
15241 * @param {Object} object The object to query.
15242 * @returns {Array} Returns the key-value pairs.
15243 * @example
15244 *
15245 * function Foo() {
15246 * this.a = 1;
15247 * this.b = 2;
15248 * }
15249 *
15250 * Foo.prototype.c = 3;
15251 *
15252 * _.toPairsIn(new Foo);
15253 * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
15254 */
15255 var toPairsIn = createToPairs(keysIn);
15256
15257 /**
15258 * An alternative to `_.reduce`; this method transforms `object` to a new
15259 * `accumulator` object which is the result of running each of its own
15260 * enumerable string keyed properties thru `iteratee`, with each invocation
15261 * potentially mutating the `accumulator` object. If `accumulator` is not
15262 * provided, a new object with the same `[[Prototype]]` will be used. The
15263 * iteratee is invoked with four arguments: (accumulator, value, key, object).
15264 * Iteratee functions may exit iteration early by explicitly returning `false`.
15265 *
15266 * @static
15267 * @memberOf _
15268 * @since 1.3.0
15269 * @category Object
15270 * @param {Object} object The object to iterate over.
15271 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15272 * @param {*} [accumulator] The custom accumulator value.
15273 * @returns {*} Returns the accumulated value.
15274 * @example
15275 *
15276 * _.transform([2, 3, 4], function(result, n) {
15277 * result.push(n *= n);
15278 * return n % 2 == 0;
15279 * }, []);
15280 * // => [4, 9]
15281 *
15282 * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
15283 * (result[value] || (result[value] = [])).push(key);
15284 * }, {});
15285 * // => { '1': ['a', 'c'], '2': ['b'] }
15286 */
15287 function transform(object, iteratee, accumulator) {
15288 var isArr = isArray(object),
15289 isArrLike = isArr || isBuffer(object) || isTypedArray(object);
15290
15291 iteratee = getIteratee(iteratee, 4);
15292 if (accumulator == null) {
15293 var Ctor = object && object.constructor;
15294 if (isArrLike) {
15295 accumulator = isArr ? new Ctor : [];
15296 }
15297 else if (isObject(object)) {
15298 accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
15299 }
15300 else {
15301 accumulator = {};
15302 }
15303 }
15304 (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
15305 return iteratee(accumulator, value, index, object);
15306 });
15307 return accumulator;
15308 }
15309
15310 /**
15311 * Removes the property at `path` of `object`.
15312 *
15313 * **Note:** This method mutates `object`.
15314 *
15315 * @static
15316 * @memberOf _
15317 * @since 4.0.0
15318 * @category Object
15319 * @param {Object} object The object to modify.
15320 * @param {Array|string} path The path of the property to unset.
15321 * @returns {boolean} Returns `true` if the property is deleted, else `false`.
15322 * @example
15323 *
15324 * var object = { 'a': [{ 'b': { 'c': 7 } }] };
15325 * _.unset(object, 'a[0].b.c');
15326 * // => true
15327 *
15328 * console.log(object);
15329 * // => { 'a': [{ 'b': {} }] };
15330 *
15331 * _.unset(object, ['a', '0', 'b', 'c']);
15332 * // => true
15333 *
15334 * console.log(object);
15335 * // => { 'a': [{ 'b': {} }] };
15336 */
15337 function unset(object, path) {
15338 return object == null ? true : baseUnset(object, path);
15339 }
15340
15341 /**
15342 * This method is like `_.set` except that accepts `updater` to produce the
15343 * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
15344 * is invoked with one argument: (value).
15345 *
15346 * **Note:** This method mutates `object`.
15347 *
15348 * @static
15349 * @memberOf _
15350 * @since 4.6.0
15351 * @category Object
15352 * @param {Object} object The object to modify.
15353 * @param {Array|string} path The path of the property to set.
15354 * @param {Function} updater The function to produce the updated value.
15355 * @returns {Object} Returns `object`.
15356 * @example
15357 *
15358 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
15359 *
15360 * _.update(object, 'a[0].b.c', function(n) { return n * n; });
15361 * console.log(object.a[0].b.c);
15362 * // => 9
15363 *
15364 * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
15365 * console.log(object.x[0].y.z);
15366 * // => 0
15367 */
15368 function update(object, path, updater) {
15369 return object == null ? object : baseUpdate(object, path, castFunction(updater));
15370 }
15371
15372 /**
15373 * This method is like `_.update` except that it accepts `customizer` which is
15374 * invoked to produce the objects of `path`. If `customizer` returns `undefined`
15375 * path creation is handled by the method instead. The `customizer` is invoked
15376 * with three arguments: (nsValue, key, nsObject).
15377 *
15378 * **Note:** This method mutates `object`.
15379 *
15380 * @static
15381 * @memberOf _
15382 * @since 4.6.0
15383 * @category Object
15384 * @param {Object} object The object to modify.
15385 * @param {Array|string} path The path of the property to set.
15386 * @param {Function} updater The function to produce the updated value.
15387 * @param {Function} [customizer] The function to customize assigned values.
15388 * @returns {Object} Returns `object`.
15389 * @example
15390 *
15391 * var object = {};
15392 *
15393 * _.updateWith(object, '[0][1]', _.constant('a'), Object);
15394 * // => { '0': { '1': 'a' } }
15395 */
15396 function updateWith(object, path, updater, customizer) {
15397 customizer = typeof customizer == 'function' ? customizer : undefined;
15398 return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
15399 }
15400
15401 /**
15402 * Creates an array of the own enumerable string keyed property values of `object`.
15403 *
15404 * **Note:** Non-object values are coerced to objects.
15405 *
15406 * @static
15407 * @since 0.1.0
15408 * @memberOf _
15409 * @category Object
15410 * @param {Object} object The object to query.
15411 * @returns {Array} Returns the array of property values.
15412 * @example
15413 *
15414 * function Foo() {
15415 * this.a = 1;
15416 * this.b = 2;
15417 * }
15418 *
15419 * Foo.prototype.c = 3;
15420 *
15421 * _.values(new Foo);
15422 * // => [1, 2] (iteration order is not guaranteed)
15423 *
15424 * _.values('hi');
15425 * // => ['h', 'i']
15426 */
15427 function values(object) {
15428 return object == null ? [] : baseValues(object, keys(object));
15429 }
15430
15431 /**
15432 * Creates an array of the own and inherited enumerable string keyed property
15433 * values of `object`.
15434 *
15435 * **Note:** Non-object values are coerced to objects.
15436 *
15437 * @static
15438 * @memberOf _
15439 * @since 3.0.0
15440 * @category Object
15441 * @param {Object} object The object to query.
15442 * @returns {Array} Returns the array of property values.
15443 * @example
15444 *
15445 * function Foo() {
15446 * this.a = 1;
15447 * this.b = 2;
15448 * }
15449 *
15450 * Foo.prototype.c = 3;
15451 *
15452 * _.valuesIn(new Foo);
15453 * // => [1, 2, 3] (iteration order is not guaranteed)
15454 */
15455 function valuesIn(object) {
15456 return object == null ? [] : baseValues(object, keysIn(object));
15457 }
15458
15459 /*------------------------------------------------------------------------*/
15460
15461 /**
15462 * Clamps `number` within the inclusive `lower` and `upper` bounds.
15463 *
15464 * @static
15465 * @memberOf _
15466 * @since 4.0.0
15467 * @category Number
15468 * @param {number} number The number to clamp.
15469 * @param {number} [lower] The lower bound.
15470 * @param {number} upper The upper bound.
15471 * @returns {number} Returns the clamped number.
15472 * @example
15473 *
15474 * _.clamp(-10, -5, 5);
15475 * // => -5
15476 *
15477 * _.clamp(10, -5, 5);
15478 * // => 5
15479 */
15480 function clamp(number, lower, upper) {
15481 if (upper === undefined) {
15482 upper = lower;
15483 lower = undefined;
15484 }
15485 if (upper !== undefined) {
15486 upper = toNumber(upper);
15487 upper = upper === upper ? upper : 0;
15488 }
15489 if (lower !== undefined) {
15490 lower = toNumber(lower);
15491 lower = lower === lower ? lower : 0;
15492 }
15493 return baseClamp(toNumber(number), lower, upper);
15494 }
15495
15496 /**
15497 * Checks if `n` is between `start` and up to, but not including, `end`. If
15498 * `end` is not specified, it's set to `start` with `start` then set to `0`.
15499 * If `start` is greater than `end` the params are swapped to support
15500 * negative ranges.
15501 *
15502 * @static
15503 * @memberOf _
15504 * @since 3.3.0
15505 * @category Number
15506 * @param {number} number The number to check.
15507 * @param {number} [start=0] The start of the range.
15508 * @param {number} end The end of the range.
15509 * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
15510 * @see _.range, _.rangeRight
15511 * @example
15512 *
15513 * _.inRange(3, 2, 4);
15514 * // => true
15515 *
15516 * _.inRange(4, 8);
15517 * // => true
15518 *
15519 * _.inRange(4, 2);
15520 * // => false
15521 *
15522 * _.inRange(2, 2);
15523 * // => false
15524 *
15525 * _.inRange(1.2, 2);
15526 * // => true
15527 *
15528 * _.inRange(5.2, 4);
15529 * // => false
15530 *
15531 * _.inRange(-3, -2, -6);
15532 * // => true
15533 */
15534 function inRange(number, start, end) {
15535 start = toFinite(start);
15536 if (end === undefined) {
15537 end = start;
15538 start = 0;
15539 } else {
15540 end = toFinite(end);
15541 }
15542 number = toNumber(number);
15543 return baseInRange(number, start, end);
15544 }
15545
15546 /**
15547 * Produces a random number between the inclusive `lower` and `upper` bounds.
15548 * If only one argument is provided a number between `0` and the given number
15549 * is returned. If `floating` is `true`, or either `lower` or `upper` are
15550 * floats, a floating-point number is returned instead of an integer.
15551 *
15552 * **Note:** JavaScript follows the IEEE-754 standard for resolving
15553 * floating-point values which can produce unexpected results.
15554 *
15555 * @static
15556 * @memberOf _
15557 * @since 0.7.0
15558 * @category Number
15559 * @param {number} [lower=0] The lower bound.
15560 * @param {number} [upper=1] The upper bound.
15561 * @param {boolean} [floating] Specify returning a floating-point number.
15562 * @returns {number} Returns the random number.
15563 * @example
15564 *
15565 * _.random(0, 5);
15566 * // => an integer between 0 and 5
15567 *
15568 * _.random(5);
15569 * // => also an integer between 0 and 5
15570 *
15571 * _.random(5, true);
15572 * // => a floating-point number between 0 and 5
15573 *
15574 * _.random(1.2, 5.2);
15575 * // => a floating-point number between 1.2 and 5.2
15576 */
15577 function random(lower, upper, floating) {
15578 if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
15579 upper = floating = undefined;
15580 }
15581 if (floating === undefined) {
15582 if (typeof upper == 'boolean') {
15583 floating = upper;
15584 upper = undefined;
15585 }
15586 else if (typeof lower == 'boolean') {
15587 floating = lower;
15588 lower = undefined;
15589 }
15590 }
15591 if (lower === undefined && upper === undefined) {
15592 lower = 0;
15593 upper = 1;
15594 }
15595 else {
15596 lower = toFinite(lower);
15597 if (upper === undefined) {
15598 upper = lower;
15599 lower = 0;
15600 } else {
15601 upper = toFinite(upper);
15602 }
15603 }
15604 if (lower > upper) {
15605 var temp = lower;
15606 lower = upper;
15607 upper = temp;
15608 }
15609 if (floating || lower % 1 || upper % 1) {
15610 var rand = nativeRandom();
15611 return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
15612 }
15613 return baseRandom(lower, upper);
15614 }
15615
15616 /*------------------------------------------------------------------------*/
15617
15618 /**
15619 * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
15620 *
15621 * @static
15622 * @memberOf _
15623 * @since 3.0.0
15624 * @category String
15625 * @param {string} [string=''] The string to convert.
15626 * @returns {string} Returns the camel cased string.
15627 * @example
15628 *
15629 * _.camelCase('Foo Bar');
15630 * // => 'fooBar'
15631 *
15632 * _.camelCase('--foo-bar--');
15633 * // => 'fooBar'
15634 *
15635 * _.camelCase('__FOO_BAR__');
15636 * // => 'fooBar'
15637 */
15638 var camelCase = createCompounder(function(result, word, index) {
15639 word = word.toLowerCase();
15640 return result + (index ? capitalize(word) : word);
15641 });
15642
15643 /**
15644 * Converts the first character of `string` to upper case and the remaining
15645 * to lower case.
15646 *
15647 * @static
15648 * @memberOf _
15649 * @since 3.0.0
15650 * @category String
15651 * @param {string} [string=''] The string to capitalize.
15652 * @returns {string} Returns the capitalized string.
15653 * @example
15654 *
15655 * _.capitalize('FRED');
15656 * // => 'Fred'
15657 */
15658 function capitalize(string) {
15659 return upperFirst(toString(string).toLowerCase());
15660 }
15661
15662 /**
15663 * Deburrs `string` by converting
15664 * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
15665 * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
15666 * letters to basic Latin letters and removing
15667 * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
15668 *
15669 * @static
15670 * @memberOf _
15671 * @since 3.0.0
15672 * @category String
15673 * @param {string} [string=''] The string to deburr.
15674 * @returns {string} Returns the deburred string.
15675 * @example
15676 *
15677 * _.deburr('déjà vu');
15678 * // => 'deja vu'
15679 */
15680 function deburr(string) {
15681 string = toString(string);
15682 return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
15683 }
15684
15685 /**
15686 * Checks if `string` ends with the given target string.
15687 *
15688 * @static
15689 * @memberOf _
15690 * @since 3.0.0
15691 * @category String
15692 * @param {string} [string=''] The string to inspect.
15693 * @param {string} [target] The string to search for.
15694 * @param {number} [position=string.length] The position to search up to.
15695 * @returns {boolean} Returns `true` if `string` ends with `target`,
15696 * else `false`.
15697 * @example
15698 *
15699 * _.endsWith('abc', 'c');
15700 * // => true
15701 *
15702 * _.endsWith('abc', 'b');
15703 * // => false
15704 *
15705 * _.endsWith('abc', 'b', 2);
15706 * // => true
15707 */
15708 function endsWith(string, target, position) {
15709 string = toString(string);
15710 target = baseToString(target);
15711
15712 var length = string.length;
15713 position = position === undefined
15714 ? length
15715 : baseClamp(toInteger(position), 0, length);
15716
15717 var end = position;
15718 position -= target.length;
15719 return position >= 0 && string.slice(position, end) == target;
15720 }
15721
15722 /**
15723 * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
15724 * corresponding HTML entities.
15725 *
15726 * **Note:** No other characters are escaped. To escape additional
15727 * characters use a third-party library like [_he_](https://mths.be/he).
15728 *
15729 * Though the ">" character is escaped for symmetry, characters like
15730 * ">" and "/" don't need escaping in HTML and have no special meaning
15731 * unless they're part of a tag or unquoted attribute value. See
15732 * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
15733 * (under "semi-related fun fact") for more details.
15734 *
15735 * When working with HTML you should always
15736 * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
15737 * XSS vectors.
15738 *
15739 * @static
15740 * @since 0.1.0
15741 * @memberOf _
15742 * @category String
15743 * @param {string} [string=''] The string to escape.
15744 * @returns {string} Returns the escaped string.
15745 * @example
15746 *
15747 * _.escape('fred, barney, & pebbles');
15748 * // => 'fred, barney, &amp; pebbles'
15749 */
15750 function escape(string) {
15751 string = toString(string);
15752 return (string && reHasUnescapedHtml.test(string))
15753 ? string.replace(reUnescapedHtml, escapeHtmlChar)
15754 : string;
15755 }
15756
15757 /**
15758 * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
15759 * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
15760 *
15761 * @static
15762 * @memberOf _
15763 * @since 3.0.0
15764 * @category String
15765 * @param {string} [string=''] The string to escape.
15766 * @returns {string} Returns the escaped string.
15767 * @example
15768 *
15769 * _.escapeRegExp('[lodash](https://lodash.com/)');
15770 * // => '\[lodash\]\(https://lodash\.com/\)'
15771 */
15772 function escapeRegExp(string) {
15773 string = toString(string);
15774 return (string && reHasRegExpChar.test(string))
15775 ? string.replace(reRegExpChar, '\\$&')
15776 : string;
15777 }
15778
15779 /**
15780 * Converts `string` to
15781 * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
15782 *
15783 * @static
15784 * @memberOf _
15785 * @since 3.0.0
15786 * @category String
15787 * @param {string} [string=''] The string to convert.
15788 * @returns {string} Returns the kebab cased string.
15789 * @example
15790 *
15791 * _.kebabCase('Foo Bar');
15792 * // => 'foo-bar'
15793 *
15794 * _.kebabCase('fooBar');
15795 * // => 'foo-bar'
15796 *
15797 * _.kebabCase('__FOO_BAR__');
15798 * // => 'foo-bar'
15799 */
15800 var kebabCase = createCompounder(function(result, word, index) {
15801 return result + (index ? '-' : '') + word.toLowerCase();
15802 });
15803
15804 /**
15805 * Converts `string`, as space separated words, to lower case.
15806 *
15807 * @static
15808 * @memberOf _
15809 * @since 4.0.0
15810 * @category String
15811 * @param {string} [string=''] The string to convert.
15812 * @returns {string} Returns the lower cased string.
15813 * @example
15814 *
15815 * _.lowerCase('--Foo-Bar--');
15816 * // => 'foo bar'
15817 *
15818 * _.lowerCase('fooBar');
15819 * // => 'foo bar'
15820 *
15821 * _.lowerCase('__FOO_BAR__');
15822 * // => 'foo bar'
15823 */
15824 var lowerCase = createCompounder(function(result, word, index) {
15825 return result + (index ? ' ' : '') + word.toLowerCase();
15826 });
15827
15828 /**
15829 * Converts the first character of `string` to lower case.
15830 *
15831 * @static
15832 * @memberOf _
15833 * @since 4.0.0
15834 * @category String
15835 * @param {string} [string=''] The string to convert.
15836 * @returns {string} Returns the converted string.
15837 * @example
15838 *
15839 * _.lowerFirst('Fred');
15840 * // => 'fred'
15841 *
15842 * _.lowerFirst('FRED');
15843 * // => 'fRED'
15844 */
15845 var lowerFirst = createCaseFirst('toLowerCase');
15846
15847 /**
15848 * Pads `string` on the left and right sides if it's shorter than `length`.
15849 * Padding characters are truncated if they can't be evenly divided by `length`.
15850 *
15851 * @static
15852 * @memberOf _
15853 * @since 3.0.0
15854 * @category String
15855 * @param {string} [string=''] The string to pad.
15856 * @param {number} [length=0] The padding length.
15857 * @param {string} [chars=' '] The string used as padding.
15858 * @returns {string} Returns the padded string.
15859 * @example
15860 *
15861 * _.pad('abc', 8);
15862 * // => ' abc '
15863 *
15864 * _.pad('abc', 8, '_-');
15865 * // => '_-abc_-_'
15866 *
15867 * _.pad('abc', 3);
15868 * // => 'abc'
15869 */
15870 function pad(string, length, chars) {
15871 string = toString(string);
15872 length = toInteger(length);
15873
15874 var strLength = length ? stringSize(string) : 0;
15875 if (!length || strLength >= length) {
15876 return string;
15877 }
15878 var mid = (length - strLength) / 2;
15879 return (
15880 createPadding(nativeFloor(mid), chars) +
15881 string +
15882 createPadding(nativeCeil(mid), chars)
15883 );
15884 }
15885
15886 /**
15887 * Pads `string` on the right side if it's shorter than `length`. Padding
15888 * characters are truncated if they exceed `length`.
15889 *
15890 * @static
15891 * @memberOf _
15892 * @since 4.0.0
15893 * @category String
15894 * @param {string} [string=''] The string to pad.
15895 * @param {number} [length=0] The padding length.
15896 * @param {string} [chars=' '] The string used as padding.
15897 * @returns {string} Returns the padded string.
15898 * @example
15899 *
15900 * _.padEnd('abc', 6);
15901 * // => 'abc '
15902 *
15903 * _.padEnd('abc', 6, '_-');
15904 * // => 'abc_-_'
15905 *
15906 * _.padEnd('abc', 3);
15907 * // => 'abc'
15908 */
15909 function padEnd(string, length, chars) {
15910 string = toString(string);
15911 length = toInteger(length);
15912
15913 var strLength = length ? stringSize(string) : 0;
15914 return (length && strLength < length)
15915 ? (string + createPadding(length - strLength, chars))
15916 : string;
15917 }
15918
15919 /**
15920 * Pads `string` on the left side if it's shorter than `length`. Padding
15921 * characters are truncated if they exceed `length`.
15922 *
15923 * @static
15924 * @memberOf _
15925 * @since 4.0.0
15926 * @category String
15927 * @param {string} [string=''] The string to pad.
15928 * @param {number} [length=0] The padding length.
15929 * @param {string} [chars=' '] The string used as padding.
15930 * @returns {string} Returns the padded string.
15931 * @example
15932 *
15933 * _.padStart('abc', 6);
15934 * // => ' abc'
15935 *
15936 * _.padStart('abc', 6, '_-');
15937 * // => '_-_abc'
15938 *
15939 * _.padStart('abc', 3);
15940 * // => 'abc'
15941 */
15942 function padStart(string, length, chars) {
15943 string = toString(string);
15944 length = toInteger(length);
15945
15946 var strLength = length ? stringSize(string) : 0;
15947 return (length && strLength < length)
15948 ? (createPadding(length - strLength, chars) + string)
15949 : string;
15950 }
15951
15952 /**
15953 * Converts `string` to an integer of the specified radix. If `radix` is
15954 * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
15955 * hexadecimal, in which case a `radix` of `16` is used.
15956 *
15957 * **Note:** This method aligns with the
15958 * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
15959 *
15960 * @static
15961 * @memberOf _
15962 * @since 1.1.0
15963 * @category String
15964 * @param {string} string The string to convert.
15965 * @param {number} [radix=10] The radix to interpret `value` by.
15966 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15967 * @returns {number} Returns the converted integer.
15968 * @example
15969 *
15970 * _.parseInt('08');
15971 * // => 8
15972 *
15973 * _.map(['6', '08', '10'], _.parseInt);
15974 * // => [6, 8, 10]
15975 */
15976 function parseInt(string, radix, guard) {
15977 if (guard || radix == null) {
15978 radix = 0;
15979 } else if (radix) {
15980 radix = +radix;
15981 }
15982 return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
15983 }
15984
15985 /**
15986 * Repeats the given string `n` times.
15987 *
15988 * @static
15989 * @memberOf _
15990 * @since 3.0.0
15991 * @category String
15992 * @param {string} [string=''] The string to repeat.
15993 * @param {number} [n=1] The number of times to repeat the string.
15994 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15995 * @returns {string} Returns the repeated string.
15996 * @example
15997 *
15998 * _.repeat('*', 3);
15999 * // => '***'
16000 *
16001 * _.repeat('abc', 2);
16002 * // => 'abcabc'
16003 *
16004 * _.repeat('abc', 0);
16005 * // => ''
16006 */
16007 function repeat(string, n, guard) {
16008 if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
16009 n = 1;
16010 } else {
16011 n = toInteger(n);
16012 }
16013 return baseRepeat(toString(string), n);
16014 }
16015
16016 /**
16017 * Replaces matches for `pattern` in `string` with `replacement`.
16018 *
16019 * **Note:** This method is based on
16020 * [`String#replace`](https://mdn.io/String/replace).
16021 *
16022 * @static
16023 * @memberOf _
16024 * @since 4.0.0
16025 * @category String
16026 * @param {string} [string=''] The string to modify.
16027 * @param {RegExp|string} pattern The pattern to replace.
16028 * @param {Function|string} replacement The match replacement.
16029 * @returns {string} Returns the modified string.
16030 * @example
16031 *
16032 * _.replace('Hi Fred', 'Fred', 'Barney');
16033 * // => 'Hi Barney'
16034 */
16035 function replace() {
16036 var args = arguments,
16037 string = toString(args[0]);
16038
16039 return args.length < 3 ? string : string.replace(args[1], args[2]);
16040 }
16041
16042 /**
16043 * Converts `string` to
16044 * [snake case](https://en.wikipedia.org/wiki/Snake_case).
16045 *
16046 * @static
16047 * @memberOf _
16048 * @since 3.0.0
16049 * @category String
16050 * @param {string} [string=''] The string to convert.
16051 * @returns {string} Returns the snake cased string.
16052 * @example
16053 *
16054 * _.snakeCase('Foo Bar');
16055 * // => 'foo_bar'
16056 *
16057 * _.snakeCase('fooBar');
16058 * // => 'foo_bar'
16059 *
16060 * _.snakeCase('--FOO-BAR--');
16061 * // => 'foo_bar'
16062 */
16063 var snakeCase = createCompounder(function(result, word, index) {
16064 return result + (index ? '_' : '') + word.toLowerCase();
16065 });
16066
16067 /**
16068 * Splits `string` by `separator`.
16069 *
16070 * **Note:** This method is based on
16071 * [`String#split`](https://mdn.io/String/split).
16072 *
16073 * @static
16074 * @memberOf _
16075 * @since 4.0.0
16076 * @category String
16077 * @param {string} [string=''] The string to split.
16078 * @param {RegExp|string} separator The separator pattern to split by.
16079 * @param {number} [limit] The length to truncate results to.
16080 * @returns {Array} Returns the string segments.
16081 * @example
16082 *
16083 * _.split('a-b-c', '-', 2);
16084 * // => ['a', 'b']
16085 */
16086 function split(string, separator, limit) {
16087 if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
16088 separator = limit = undefined;
16089 }
16090 limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
16091 if (!limit) {
16092 return [];
16093 }
16094 string = toString(string);
16095 if (string && (
16096 typeof separator == 'string' ||
16097 (separator != null && !isRegExp(separator))
16098 )) {
16099 separator = baseToString(separator);
16100 if (!separator && hasUnicode(string)) {
16101 return castSlice(stringToArray(string), 0, limit);
16102 }
16103 }
16104 return string.split(separator, limit);
16105 }
16106
16107 /**
16108 * Converts `string` to
16109 * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
16110 *
16111 * @static
16112 * @memberOf _
16113 * @since 3.1.0
16114 * @category String
16115 * @param {string} [string=''] The string to convert.
16116 * @returns {string} Returns the start cased string.
16117 * @example
16118 *
16119 * _.startCase('--foo-bar--');
16120 * // => 'Foo Bar'
16121 *
16122 * _.startCase('fooBar');
16123 * // => 'Foo Bar'
16124 *
16125 * _.startCase('__FOO_BAR__');
16126 * // => 'FOO BAR'
16127 */
16128 var startCase = createCompounder(function(result, word, index) {
16129 return result + (index ? ' ' : '') + upperFirst(word);
16130 });
16131
16132 /**
16133 * Checks if `string` starts with the given target string.
16134 *
16135 * @static
16136 * @memberOf _
16137 * @since 3.0.0
16138 * @category String
16139 * @param {string} [string=''] The string to inspect.
16140 * @param {string} [target] The string to search for.
16141 * @param {number} [position=0] The position to search from.
16142 * @returns {boolean} Returns `true` if `string` starts with `target`,
16143 * else `false`.
16144 * @example
16145 *
16146 * _.startsWith('abc', 'a');
16147 * // => true
16148 *
16149 * _.startsWith('abc', 'b');
16150 * // => false
16151 *
16152 * _.startsWith('abc', 'b', 1);
16153 * // => true
16154 */
16155 function startsWith(string, target, position) {
16156 string = toString(string);
16157 position = position == null
16158 ? 0
16159 : baseClamp(toInteger(position), 0, string.length);
16160
16161 target = baseToString(target);
16162 return string.slice(position, position + target.length) == target;
16163 }
16164
16165 /**
16166 * Creates a compiled template function that can interpolate data properties
16167 * in "interpolate" delimiters, HTML-escape interpolated data properties in
16168 * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
16169 * properties may be accessed as free variables in the template. If a setting
16170 * object is given, it takes precedence over `_.templateSettings` values.
16171 *
16172 * **Note:** In the development build `_.template` utilizes
16173 * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
16174 * for easier debugging.
16175 *
16176 * For more information on precompiling templates see
16177 * [lodash's custom builds documentation](https://lodash.com/custom-builds).
16178 *
16179 * For more information on Chrome extension sandboxes see
16180 * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
16181 *
16182 * @static
16183 * @since 0.1.0
16184 * @memberOf _
16185 * @category String
16186 * @param {string} [string=''] The template string.
16187 * @param {Object} [options={}] The options object.
16188 * @param {RegExp} [options.escape=_.templateSettings.escape]
16189 * The HTML "escape" delimiter.
16190 * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
16191 * The "evaluate" delimiter.
16192 * @param {Object} [options.imports=_.templateSettings.imports]
16193 * An object to import into the template as free variables.
16194 * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
16195 * The "interpolate" delimiter.
16196 * @param {string} [options.sourceURL='lodash.templateSources[n]']
16197 * The sourceURL of the compiled template.
16198 * @param {string} [options.variable='obj']
16199 * The data object variable name.
16200 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16201 * @returns {Function} Returns the compiled template function.
16202 * @example
16203 *
16204 * // Use the "interpolate" delimiter to create a compiled template.
16205 * var compiled = _.template('hello <%= user %>!');
16206 * compiled({ 'user': 'fred' });
16207 * // => 'hello fred!'
16208 *
16209 * // Use the HTML "escape" delimiter to escape data property values.
16210 * var compiled = _.template('<b><%- value %></b>');
16211 * compiled({ 'value': '<script>' });
16212 * // => '<b>&lt;script&gt;</b>'
16213 *
16214 * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
16215 * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
16216 * compiled({ 'users': ['fred', 'barney'] });
16217 * // => '<li>fred</li><li>barney</li>'
16218 *
16219 * // Use the internal `print` function in "evaluate" delimiters.
16220 * var compiled = _.template('<% print("hello " + user); %>!');
16221 * compiled({ 'user': 'barney' });
16222 * // => 'hello barney!'
16223 *
16224 * // Use the ES template literal delimiter as an "interpolate" delimiter.
16225 * // Disable support by replacing the "interpolate" delimiter.
16226 * var compiled = _.template('hello ${ user }!');
16227 * compiled({ 'user': 'pebbles' });
16228 * // => 'hello pebbles!'
16229 *
16230 * // Use backslashes to treat delimiters as plain text.
16231 * var compiled = _.template('<%= "\\<%- value %\\>" %>');
16232 * compiled({ 'value': 'ignored' });
16233 * // => '<%- value %>'
16234 *
16235 * // Use the `imports` option to import `jQuery` as `jq`.
16236 * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
16237 * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
16238 * compiled({ 'users': ['fred', 'barney'] });
16239 * // => '<li>fred</li><li>barney</li>'
16240 *
16241 * // Use the `sourceURL` option to specify a custom sourceURL for the template.
16242 * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
16243 * compiled(data);
16244 * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
16245 *
16246 * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
16247 * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
16248 * compiled.source;
16249 * // => function(data) {
16250 * // var __t, __p = '';
16251 * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
16252 * // return __p;
16253 * // }
16254 *
16255 * // Use custom template delimiters.
16256 * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
16257 * var compiled = _.template('hello {{ user }}!');
16258 * compiled({ 'user': 'mustache' });
16259 * // => 'hello mustache!'
16260 *
16261 * // Use the `source` property to inline compiled templates for meaningful
16262 * // line numbers in error messages and stack traces.
16263 * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
16264 * var JST = {\
16265 * "main": ' + _.template(mainText).source + '\
16266 * };\
16267 * ');
16268 */
16269 function template(string, options, guard) {
16270 // Based on John Resig's `tmpl` implementation
16271 // (http://ejohn.org/blog/javascript-micro-templating/)
16272 // and Laura Doktorova's doT.js (https://github.com/olado/doT).
16273 var settings = lodash.templateSettings;
16274
16275 if (guard && isIterateeCall(string, options, guard)) {
16276 options = undefined;
16277 }
16278 string = toString(string);
16279 options = assignInWith({}, options, settings, customDefaultsAssignIn);
16280
16281 var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
16282 importsKeys = keys(imports),
16283 importsValues = baseValues(imports, importsKeys);
16284
16285 var isEscaping,
16286 isEvaluating,
16287 index = 0,
16288 interpolate = options.interpolate || reNoMatch,
16289 source = "__p += '";
16290
16291 // Compile the regexp to match each delimiter.
16292 var reDelimiters = RegExp(
16293 (options.escape || reNoMatch).source + '|' +
16294 interpolate.source + '|' +
16295 (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
16296 (options.evaluate || reNoMatch).source + '|$'
16297 , 'g');
16298
16299 // Use a sourceURL for easier debugging.
16300 var sourceURL = '//# sourceURL=' +
16301 ('sourceURL' in options
16302 ? options.sourceURL
16303 : ('lodash.templateSources[' + (++templateCounter) + ']')
16304 ) + '\n';
16305
16306 string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
16307 interpolateValue || (interpolateValue = esTemplateValue);
16308
16309 // Escape characters that can't be included in string literals.
16310 source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
16311
16312 // Replace delimiters with snippets.
16313 if (escapeValue) {
16314 isEscaping = true;
16315 source += "' +\n__e(" + escapeValue + ") +\n'";
16316 }
16317 if (evaluateValue) {
16318 isEvaluating = true;
16319 source += "';\n" + evaluateValue + ";\n__p += '";
16320 }
16321 if (interpolateValue) {
16322 source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
16323 }
16324 index = offset + match.length;
16325
16326 // The JS engine embedded in Adobe products needs `match` returned in
16327 // order to produce the correct `offset` value.
16328 return match;
16329 });
16330
16331 source += "';\n";
16332
16333 // If `variable` is not specified wrap a with-statement around the generated
16334 // code to add the data object to the top of the scope chain.
16335 var variable = options.variable;
16336 if (!variable) {
16337 source = 'with (obj) {\n' + source + '\n}\n';
16338 }
16339 // Cleanup code by stripping empty strings.
16340 source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
16341 .replace(reEmptyStringMiddle, '$1')
16342 .replace(reEmptyStringTrailing, '$1;');
16343
16344 // Frame code as the function body.
16345 source = 'function(' + (variable || 'obj') + ') {\n' +
16346 (variable
16347 ? ''
16348 : 'obj || (obj = {});\n'
16349 ) +
16350 "var __t, __p = ''" +
16351 (isEscaping
16352 ? ', __e = _.escape'
16353 : ''
16354 ) +
16355 (isEvaluating
16356 ? ', __j = Array.prototype.join;\n' +
16357 "function print() { __p += __j.call(arguments, '') }\n"
16358 : ';\n'
16359 ) +
16360 source +
16361 'return __p\n}';
16362
16363 var result = attempt(function() {
16364 return Function(importsKeys, sourceURL + 'return ' + source)
16365 .apply(undefined, importsValues);
16366 });
16367
16368 // Provide the compiled function's source by its `toString` method or
16369 // the `source` property as a convenience for inlining compiled templates.
16370 result.source = source;
16371 if (isError(result)) {
16372 throw result;
16373 }
16374 return result;
16375 }
16376
16377 /**
16378 * Converts `string`, as a whole, to lower case just like
16379 * [String#toLowerCase](https://mdn.io/toLowerCase).
16380 *
16381 * @static
16382 * @memberOf _
16383 * @since 4.0.0
16384 * @category String
16385 * @param {string} [string=''] The string to convert.
16386 * @returns {string} Returns the lower cased string.
16387 * @example
16388 *
16389 * _.toLower('--Foo-Bar--');
16390 * // => '--foo-bar--'
16391 *
16392 * _.toLower('fooBar');
16393 * // => 'foobar'
16394 *
16395 * _.toLower('__FOO_BAR__');
16396 * // => '__foo_bar__'
16397 */
16398 function toLower(value) {
16399 return toString(value).toLowerCase();
16400 }
16401
16402 /**
16403 * Converts `string`, as a whole, to upper case just like
16404 * [String#toUpperCase](https://mdn.io/toUpperCase).
16405 *
16406 * @static
16407 * @memberOf _
16408 * @since 4.0.0
16409 * @category String
16410 * @param {string} [string=''] The string to convert.
16411 * @returns {string} Returns the upper cased string.
16412 * @example
16413 *
16414 * _.toUpper('--foo-bar--');
16415 * // => '--FOO-BAR--'
16416 *
16417 * _.toUpper('fooBar');
16418 * // => 'FOOBAR'
16419 *
16420 * _.toUpper('__foo_bar__');
16421 * // => '__FOO_BAR__'
16422 */
16423 function toUpper(value) {
16424 return toString(value).toUpperCase();
16425 }
16426
16427 /**
16428 * Removes leading and trailing whitespace or specified characters from `string`.
16429 *
16430 * @static
16431 * @memberOf _
16432 * @since 3.0.0
16433 * @category String
16434 * @param {string} [string=''] The string to trim.
16435 * @param {string} [chars=whitespace] The characters to trim.
16436 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16437 * @returns {string} Returns the trimmed string.
16438 * @example
16439 *
16440 * _.trim(' abc ');
16441 * // => 'abc'
16442 *
16443 * _.trim('-_-abc-_-', '_-');
16444 * // => 'abc'
16445 *
16446 * _.map([' foo ', ' bar '], _.trim);
16447 * // => ['foo', 'bar']
16448 */
16449 function trim(string, chars, guard) {
16450 string = toString(string);
16451 if (string && (guard || chars === undefined)) {
16452 return string.replace(reTrim, '');
16453 }
16454 if (!string || !(chars = baseToString(chars))) {
16455 return string;
16456 }
16457 var strSymbols = stringToArray(string),
16458 chrSymbols = stringToArray(chars),
16459 start = charsStartIndex(strSymbols, chrSymbols),
16460 end = charsEndIndex(strSymbols, chrSymbols) + 1;
16461
16462 return castSlice(strSymbols, start, end).join('');
16463 }
16464
16465 /**
16466 * Removes trailing whitespace or specified characters from `string`.
16467 *
16468 * @static
16469 * @memberOf _
16470 * @since 4.0.0
16471 * @category String
16472 * @param {string} [string=''] The string to trim.
16473 * @param {string} [chars=whitespace] The characters to trim.
16474 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16475 * @returns {string} Returns the trimmed string.
16476 * @example
16477 *
16478 * _.trimEnd(' abc ');
16479 * // => ' abc'
16480 *
16481 * _.trimEnd('-_-abc-_-', '_-');
16482 * // => '-_-abc'
16483 */
16484 function trimEnd(string, chars, guard) {
16485 string = toString(string);
16486 if (string && (guard || chars === undefined)) {
16487 return string.replace(reTrimEnd, '');
16488 }
16489 if (!string || !(chars = baseToString(chars))) {
16490 return string;
16491 }
16492 var strSymbols = stringToArray(string),
16493 end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
16494
16495 return castSlice(strSymbols, 0, end).join('');
16496 }
16497
16498 /**
16499 * Removes leading whitespace or specified characters from `string`.
16500 *
16501 * @static
16502 * @memberOf _
16503 * @since 4.0.0
16504 * @category String
16505 * @param {string} [string=''] The string to trim.
16506 * @param {string} [chars=whitespace] The characters to trim.
16507 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16508 * @returns {string} Returns the trimmed string.
16509 * @example
16510 *
16511 * _.trimStart(' abc ');
16512 * // => 'abc '
16513 *
16514 * _.trimStart('-_-abc-_-', '_-');
16515 * // => 'abc-_-'
16516 */
16517 function trimStart(string, chars, guard) {
16518 string = toString(string);
16519 if (string && (guard || chars === undefined)) {
16520 return string.replace(reTrimStart, '');
16521 }
16522 if (!string || !(chars = baseToString(chars))) {
16523 return string;
16524 }
16525 var strSymbols = stringToArray(string),
16526 start = charsStartIndex(strSymbols, stringToArray(chars));
16527
16528 return castSlice(strSymbols, start).join('');
16529 }
16530
16531 /**
16532 * Truncates `string` if it's longer than the given maximum string length.
16533 * The last characters of the truncated string are replaced with the omission
16534 * string which defaults to "...".
16535 *
16536 * @static
16537 * @memberOf _
16538 * @since 4.0.0
16539 * @category String
16540 * @param {string} [string=''] The string to truncate.
16541 * @param {Object} [options={}] The options object.
16542 * @param {number} [options.length=30] The maximum string length.
16543 * @param {string} [options.omission='...'] The string to indicate text is omitted.
16544 * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
16545 * @returns {string} Returns the truncated string.
16546 * @example
16547 *
16548 * _.truncate('hi-diddly-ho there, neighborino');
16549 * // => 'hi-diddly-ho there, neighbo...'
16550 *
16551 * _.truncate('hi-diddly-ho there, neighborino', {
16552 * 'length': 24,
16553 * 'separator': ' '
16554 * });
16555 * // => 'hi-diddly-ho there,...'
16556 *
16557 * _.truncate('hi-diddly-ho there, neighborino', {
16558 * 'length': 24,
16559 * 'separator': /,? +/
16560 * });
16561 * // => 'hi-diddly-ho there...'
16562 *
16563 * _.truncate('hi-diddly-ho there, neighborino', {
16564 * 'omission': ' [...]'
16565 * });
16566 * // => 'hi-diddly-ho there, neig [...]'
16567 */
16568 function truncate(string, options) {
16569 var length = DEFAULT_TRUNC_LENGTH,
16570 omission = DEFAULT_TRUNC_OMISSION;
16571
16572 if (isObject(options)) {
16573 var separator = 'separator' in options ? options.separator : separator;
16574 length = 'length' in options ? toInteger(options.length) : length;
16575 omission = 'omission' in options ? baseToString(options.omission) : omission;
16576 }
16577 string = toString(string);
16578
16579 var strLength = string.length;
16580 if (hasUnicode(string)) {
16581 var strSymbols = stringToArray(string);
16582 strLength = strSymbols.length;
16583 }
16584 if (length >= strLength) {
16585 return string;
16586 }
16587 var end = length - stringSize(omission);
16588 if (end < 1) {
16589 return omission;
16590 }
16591 var result = strSymbols
16592 ? castSlice(strSymbols, 0, end).join('')
16593 : string.slice(0, end);
16594
16595 if (separator === undefined) {
16596 return result + omission;
16597 }
16598 if (strSymbols) {
16599 end += (result.length - end);
16600 }
16601 if (isRegExp(separator)) {
16602 if (string.slice(end).search(separator)) {
16603 var match,
16604 substring = result;
16605
16606 if (!separator.global) {
16607 separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
16608 }
16609 separator.lastIndex = 0;
16610 while ((match = separator.exec(substring))) {
16611 var newEnd = match.index;
16612 }
16613 result = result.slice(0, newEnd === undefined ? end : newEnd);
16614 }
16615 } else if (string.indexOf(baseToString(separator), end) != end) {
16616 var index = result.lastIndexOf(separator);
16617 if (index > -1) {
16618 result = result.slice(0, index);
16619 }
16620 }
16621 return result + omission;
16622 }
16623
16624 /**
16625 * The inverse of `_.escape`; this method converts the HTML entities
16626 * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
16627 * their corresponding characters.
16628 *
16629 * **Note:** No other HTML entities are unescaped. To unescape additional
16630 * HTML entities use a third-party library like [_he_](https://mths.be/he).
16631 *
16632 * @static
16633 * @memberOf _
16634 * @since 0.6.0
16635 * @category String
16636 * @param {string} [string=''] The string to unescape.
16637 * @returns {string} Returns the unescaped string.
16638 * @example
16639 *
16640 * _.unescape('fred, barney, &amp; pebbles');
16641 * // => 'fred, barney, & pebbles'
16642 */
16643 function unescape(string) {
16644 string = toString(string);
16645 return (string && reHasEscapedHtml.test(string))
16646 ? string.replace(reEscapedHtml, unescapeHtmlChar)
16647 : string;
16648 }
16649
16650 /**
16651 * Converts `string`, as space separated words, to upper case.
16652 *
16653 * @static
16654 * @memberOf _
16655 * @since 4.0.0
16656 * @category String
16657 * @param {string} [string=''] The string to convert.
16658 * @returns {string} Returns the upper cased string.
16659 * @example
16660 *
16661 * _.upperCase('--foo-bar');
16662 * // => 'FOO BAR'
16663 *
16664 * _.upperCase('fooBar');
16665 * // => 'FOO BAR'
16666 *
16667 * _.upperCase('__foo_bar__');
16668 * // => 'FOO BAR'
16669 */
16670 var upperCase = createCompounder(function(result, word, index) {
16671 return result + (index ? ' ' : '') + word.toUpperCase();
16672 });
16673
16674 /**
16675 * Converts the first character of `string` to upper case.
16676 *
16677 * @static
16678 * @memberOf _
16679 * @since 4.0.0
16680 * @category String
16681 * @param {string} [string=''] The string to convert.
16682 * @returns {string} Returns the converted string.
16683 * @example
16684 *
16685 * _.upperFirst('fred');
16686 * // => 'Fred'
16687 *
16688 * _.upperFirst('FRED');
16689 * // => 'FRED'
16690 */
16691 var upperFirst = createCaseFirst('toUpperCase');
16692
16693 /**
16694 * Splits `string` into an array of its words.
16695 *
16696 * @static
16697 * @memberOf _
16698 * @since 3.0.0
16699 * @category String
16700 * @param {string} [string=''] The string to inspect.
16701 * @param {RegExp|string} [pattern] The pattern to match words.
16702 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16703 * @returns {Array} Returns the words of `string`.
16704 * @example
16705 *
16706 * _.words('fred, barney, & pebbles');
16707 * // => ['fred', 'barney', 'pebbles']
16708 *
16709 * _.words('fred, barney, & pebbles', /[^, ]+/g);
16710 * // => ['fred', 'barney', '&', 'pebbles']
16711 */
16712 function words(string, pattern, guard) {
16713 string = toString(string);
16714 pattern = guard ? undefined : pattern;
16715
16716 if (pattern === undefined) {
16717 return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
16718 }
16719 return string.match(pattern) || [];
16720 }
16721
16722 /*------------------------------------------------------------------------*/
16723
16724 /**
16725 * Attempts to invoke `func`, returning either the result or the caught error
16726 * object. Any additional arguments are provided to `func` when it's invoked.
16727 *
16728 * @static
16729 * @memberOf _
16730 * @since 3.0.0
16731 * @category Util
16732 * @param {Function} func The function to attempt.
16733 * @param {...*} [args] The arguments to invoke `func` with.
16734 * @returns {*} Returns the `func` result or error object.
16735 * @example
16736 *
16737 * // Avoid throwing errors for invalid selectors.
16738 * var elements = _.attempt(function(selector) {
16739 * return document.querySelectorAll(selector);
16740 * }, '>_>');
16741 *
16742 * if (_.isError(elements)) {
16743 * elements = [];
16744 * }
16745 */
16746 var attempt = baseRest(function(func, args) {
16747 try {
16748 return apply(func, undefined, args);
16749 } catch (e) {
16750 return isError(e) ? e : new Error(e);
16751 }
16752 });
16753
16754 /**
16755 * Binds methods of an object to the object itself, overwriting the existing
16756 * method.
16757 *
16758 * **Note:** This method doesn't set the "length" property of bound functions.
16759 *
16760 * @static
16761 * @since 0.1.0
16762 * @memberOf _
16763 * @category Util
16764 * @param {Object} object The object to bind and assign the bound methods to.
16765 * @param {...(string|string[])} methodNames The object method names to bind.
16766 * @returns {Object} Returns `object`.
16767 * @example
16768 *
16769 * var view = {
16770 * 'label': 'docs',
16771 * 'click': function() {
16772 * console.log('clicked ' + this.label);
16773 * }
16774 * };
16775 *
16776 * _.bindAll(view, ['click']);
16777 * jQuery(element).on('click', view.click);
16778 * // => Logs 'clicked docs' when clicked.
16779 */
16780 var bindAll = flatRest(function(object, methodNames) {
16781 arrayEach(methodNames, function(key) {
16782 key = toKey(key);
16783 baseAssignValue(object, key, bind(object[key], object));
16784 });
16785 return object;
16786 });
16787
16788 /**
16789 * Creates a function that iterates over `pairs` and invokes the corresponding
16790 * function of the first predicate to return truthy. The predicate-function
16791 * pairs are invoked with the `this` binding and arguments of the created
16792 * function.
16793 *
16794 * @static
16795 * @memberOf _
16796 * @since 4.0.0
16797 * @category Util
16798 * @param {Array} pairs The predicate-function pairs.
16799 * @returns {Function} Returns the new composite function.
16800 * @example
16801 *
16802 * var func = _.cond([
16803 * [_.matches({ 'a': 1 }), _.constant('matches A')],
16804 * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
16805 * [_.stubTrue, _.constant('no match')]
16806 * ]);
16807 *
16808 * func({ 'a': 1, 'b': 2 });
16809 * // => 'matches A'
16810 *
16811 * func({ 'a': 0, 'b': 1 });
16812 * // => 'matches B'
16813 *
16814 * func({ 'a': '1', 'b': '2' });
16815 * // => 'no match'
16816 */
16817 function cond(pairs) {
16818 var length = pairs == null ? 0 : pairs.length,
16819 toIteratee = getIteratee();
16820
16821 pairs = !length ? [] : arrayMap(pairs, function(pair) {
16822 if (typeof pair[1] != 'function') {
16823 throw new TypeError(FUNC_ERROR_TEXT);
16824 }
16825 return [toIteratee(pair[0]), pair[1]];
16826 });
16827
16828 return baseRest(function(args) {
16829 var index = -1;
16830 while (++index < length) {
16831 var pair = pairs[index];
16832 if (apply(pair[0], this, args)) {
16833 return apply(pair[1], this, args);
16834 }
16835 }
16836 });
16837 }
16838
16839 /**
16840 * Creates a function that invokes the predicate properties of `source` with
16841 * the corresponding property values of a given object, returning `true` if
16842 * all predicates return truthy, else `false`.
16843 *
16844 * **Note:** The created function is equivalent to `_.conformsTo` with
16845 * `source` partially applied.
16846 *
16847 * @static
16848 * @memberOf _
16849 * @since 4.0.0
16850 * @category Util
16851 * @param {Object} source The object of property predicates to conform to.
16852 * @returns {Function} Returns the new spec function.
16853 * @example
16854 *
16855 * var objects = [
16856 * { 'a': 2, 'b': 1 },
16857 * { 'a': 1, 'b': 2 }
16858 * ];
16859 *
16860 * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
16861 * // => [{ 'a': 1, 'b': 2 }]
16862 */
16863 function conforms(source) {
16864 return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
16865 }
16866
16867 /**
16868 * Creates a function that returns `value`.
16869 *
16870 * @static
16871 * @memberOf _
16872 * @since 2.4.0
16873 * @category Util
16874 * @param {*} value The value to return from the new function.
16875 * @returns {Function} Returns the new constant function.
16876 * @example
16877 *
16878 * var objects = _.times(2, _.constant({ 'a': 1 }));
16879 *
16880 * console.log(objects);
16881 * // => [{ 'a': 1 }, { 'a': 1 }]
16882 *
16883 * console.log(objects[0] === objects[1]);
16884 * // => true
16885 */
16886 function constant(value) {
16887 return function() {
16888 return value;
16889 };
16890 }
16891
16892 /**
16893 * Checks `value` to determine whether a default value should be returned in
16894 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
16895 * or `undefined`.
16896 *
16897 * @static
16898 * @memberOf _
16899 * @since 4.14.0
16900 * @category Util
16901 * @param {*} value The value to check.
16902 * @param {*} defaultValue The default value.
16903 * @returns {*} Returns the resolved value.
16904 * @example
16905 *
16906 * _.defaultTo(1, 10);
16907 * // => 1
16908 *
16909 * _.defaultTo(undefined, 10);
16910 * // => 10
16911 */
16912 function defaultTo(value, defaultValue) {
16913 return (value == null || value !== value) ? defaultValue : value;
16914 }
16915
16916 /**
16917 * Creates a function that returns the result of invoking the given functions
16918 * with the `this` binding of the created function, where each successive
16919 * invocation is supplied the return value of the previous.
16920 *
16921 * @static
16922 * @memberOf _
16923 * @since 3.0.0
16924 * @category Util
16925 * @param {...(Function|Function[])} [funcs] The functions to invoke.
16926 * @returns {Function} Returns the new composite function.
16927 * @see _.flowRight
16928 * @example
16929 *
16930 * function square(n) {
16931 * return n * n;
16932 * }
16933 *
16934 * var addSquare = _.flow([_.add, square]);
16935 * addSquare(1, 2);
16936 * // => 9
16937 */
16938 var flow = createFlow();
16939
16940 /**
16941 * This method is like `_.flow` except that it creates a function that
16942 * invokes the given functions from right to left.
16943 *
16944 * @static
16945 * @since 3.0.0
16946 * @memberOf _
16947 * @category Util
16948 * @param {...(Function|Function[])} [funcs] The functions to invoke.
16949 * @returns {Function} Returns the new composite function.
16950 * @see _.flow
16951 * @example
16952 *
16953 * function square(n) {
16954 * return n * n;
16955 * }
16956 *
16957 * var addSquare = _.flowRight([square, _.add]);
16958 * addSquare(1, 2);
16959 * // => 9
16960 */
16961 var flowRight = createFlow(true);
16962
16963 /**
16964 * This method returns the first argument it receives.
16965 *
16966 * @static
16967 * @since 0.1.0
16968 * @memberOf _
16969 * @category Util
16970 * @param {*} value Any value.
16971 * @returns {*} Returns `value`.
16972 * @example
16973 *
16974 * var object = { 'a': 1 };
16975 *
16976 * console.log(_.identity(object) === object);
16977 * // => true
16978 */
16979 function identity(value) {
16980 return value;
16981 }
16982
16983 /**
16984 * Creates a function that invokes `func` with the arguments of the created
16985 * function. If `func` is a property name, the created function returns the
16986 * property value for a given element. If `func` is an array or object, the
16987 * created function returns `true` for elements that contain the equivalent
16988 * source properties, otherwise it returns `false`.
16989 *
16990 * @static
16991 * @since 4.0.0
16992 * @memberOf _
16993 * @category Util
16994 * @param {*} [func=_.identity] The value to convert to a callback.
16995 * @returns {Function} Returns the callback.
16996 * @example
16997 *
16998 * var users = [
16999 * { 'user': 'barney', 'age': 36, 'active': true },
17000 * { 'user': 'fred', 'age': 40, 'active': false }
17001 * ];
17002 *
17003 * // The `_.matches` iteratee shorthand.
17004 * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
17005 * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
17006 *
17007 * // The `_.matchesProperty` iteratee shorthand.
17008 * _.filter(users, _.iteratee(['user', 'fred']));
17009 * // => [{ 'user': 'fred', 'age': 40 }]
17010 *
17011 * // The `_.property` iteratee shorthand.
17012 * _.map(users, _.iteratee('user'));
17013 * // => ['barney', 'fred']
17014 *
17015 * // Create custom iteratee shorthands.
17016 * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
17017 * return !_.isRegExp(func) ? iteratee(func) : function(string) {
17018 * return func.test(string);
17019 * };
17020 * });
17021 *
17022 * _.filter(['abc', 'def'], /ef/);
17023 * // => ['def']
17024 */
17025 function iteratee(func) {
17026 return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
17027 }
17028
17029 /**
17030 * Creates a function that performs a partial deep comparison between a given
17031 * object and `source`, returning `true` if the given object has equivalent
17032 * property values, else `false`.
17033 *
17034 * **Note:** The created function is equivalent to `_.isMatch` with `source`
17035 * partially applied.
17036 *
17037 * Partial comparisons will match empty array and empty object `source`
17038 * values against any array or object value, respectively. See `_.isEqual`
17039 * for a list of supported value comparisons.
17040 *
17041 * @static
17042 * @memberOf _
17043 * @since 3.0.0
17044 * @category Util
17045 * @param {Object} source The object of property values to match.
17046 * @returns {Function} Returns the new spec function.
17047 * @example
17048 *
17049 * var objects = [
17050 * { 'a': 1, 'b': 2, 'c': 3 },
17051 * { 'a': 4, 'b': 5, 'c': 6 }
17052 * ];
17053 *
17054 * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
17055 * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
17056 */
17057 function matches(source) {
17058 return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
17059 }
17060
17061 /**
17062 * Creates a function that performs a partial deep comparison between the
17063 * value at `path` of a given object to `srcValue`, returning `true` if the
17064 * object value is equivalent, else `false`.
17065 *
17066 * **Note:** Partial comparisons will match empty array and empty object
17067 * `srcValue` values against any array or object value, respectively. See
17068 * `_.isEqual` for a list of supported value comparisons.
17069 *
17070 * @static
17071 * @memberOf _
17072 * @since 3.2.0
17073 * @category Util
17074 * @param {Array|string} path The path of the property to get.
17075 * @param {*} srcValue The value to match.
17076 * @returns {Function} Returns the new spec function.
17077 * @example
17078 *
17079 * var objects = [
17080 * { 'a': 1, 'b': 2, 'c': 3 },
17081 * { 'a': 4, 'b': 5, 'c': 6 }
17082 * ];
17083 *
17084 * _.find(objects, _.matchesProperty('a', 4));
17085 * // => { 'a': 4, 'b': 5, 'c': 6 }
17086 */
17087 function matchesProperty(path, srcValue) {
17088 return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
17089 }
17090
17091 /**
17092 * Creates a function that invokes the method at `path` of a given object.
17093 * Any additional arguments are provided to the invoked method.
17094 *
17095 * @static
17096 * @memberOf _
17097 * @since 3.7.0
17098 * @category Util
17099 * @param {Array|string} path The path of the method to invoke.
17100 * @param {...*} [args] The arguments to invoke the method with.
17101 * @returns {Function} Returns the new invoker function.
17102 * @example
17103 *
17104 * var objects = [
17105 * { 'a': { 'b': _.constant(2) } },
17106 * { 'a': { 'b': _.constant(1) } }
17107 * ];
17108 *
17109 * _.map(objects, _.method('a.b'));
17110 * // => [2, 1]
17111 *
17112 * _.map(objects, _.method(['a', 'b']));
17113 * // => [2, 1]
17114 */
17115 var method = baseRest(function(path, args) {
17116 return function(object) {
17117 return baseInvoke(object, path, args);
17118 };
17119 });
17120
17121 /**
17122 * The opposite of `_.method`; this method creates a function that invokes
17123 * the method at a given path of `object`. Any additional arguments are
17124 * provided to the invoked method.
17125 *
17126 * @static
17127 * @memberOf _
17128 * @since 3.7.0
17129 * @category Util
17130 * @param {Object} object The object to query.
17131 * @param {...*} [args] The arguments to invoke the method with.
17132 * @returns {Function} Returns the new invoker function.
17133 * @example
17134 *
17135 * var array = _.times(3, _.constant),
17136 * object = { 'a': array, 'b': array, 'c': array };
17137 *
17138 * _.map(['a[2]', 'c[0]'], _.methodOf(object));
17139 * // => [2, 0]
17140 *
17141 * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
17142 * // => [2, 0]
17143 */
17144 var methodOf = baseRest(function(object, args) {
17145 return function(path) {
17146 return baseInvoke(object, path, args);
17147 };
17148 });
17149
17150 /**
17151 * Adds all own enumerable string keyed function properties of a source
17152 * object to the destination object. If `object` is a function, then methods
17153 * are added to its prototype as well.
17154 *
17155 * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
17156 * avoid conflicts caused by modifying the original.
17157 *
17158 * @static
17159 * @since 0.1.0
17160 * @memberOf _
17161 * @category Util
17162 * @param {Function|Object} [object=lodash] The destination object.
17163 * @param {Object} source The object of functions to add.
17164 * @param {Object} [options={}] The options object.
17165 * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
17166 * @returns {Function|Object} Returns `object`.
17167 * @example
17168 *
17169 * function vowels(string) {
17170 * return _.filter(string, function(v) {
17171 * return /[aeiou]/i.test(v);
17172 * });
17173 * }
17174 *
17175 * _.mixin({ 'vowels': vowels });
17176 * _.vowels('fred');
17177 * // => ['e']
17178 *
17179 * _('fred').vowels().value();
17180 * // => ['e']
17181 *
17182 * _.mixin({ 'vowels': vowels }, { 'chain': false });
17183 * _('fred').vowels();
17184 * // => ['e']
17185 */
17186 function mixin(object, source, options) {
17187 var props = keys(source),
17188 methodNames = baseFunctions(source, props);
17189
17190 if (options == null &&
17191 !(isObject(source) && (methodNames.length || !props.length))) {
17192 options = source;
17193 source = object;
17194 object = this;
17195 methodNames = baseFunctions(source, keys(source));
17196 }
17197 var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
17198 isFunc = isFunction(object);
17199
17200 arrayEach(methodNames, function(methodName) {
17201 var func = source[methodName];
17202 object[methodName] = func;
17203 if (isFunc) {
17204 object.prototype[methodName] = function() {
17205 var chainAll = this.__chain__;
17206 if (chain || chainAll) {
17207 var result = object(this.__wrapped__),
17208 actions = result.__actions__ = copyArray(this.__actions__);
17209
17210 actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
17211 result.__chain__ = chainAll;
17212 return result;
17213 }
17214 return func.apply(object, arrayPush([this.value()], arguments));
17215 };
17216 }
17217 });
17218
17219 return object;
17220 }
17221
17222 /**
17223 * Reverts the `_` variable to its previous value and returns a reference to
17224 * the `lodash` function.
17225 *
17226 * @static
17227 * @since 0.1.0
17228 * @memberOf _
17229 * @category Util
17230 * @returns {Function} Returns the `lodash` function.
17231 * @example
17232 *
17233 * var lodash = _.noConflict();
17234 */
17235 function noConflict() {
17236 if (root._ === this) {
17237 root._ = oldDash;
17238 }
17239 return this;
17240 }
17241
17242 /**
17243 * This method returns `undefined`.
17244 *
17245 * @static
17246 * @memberOf _
17247 * @since 2.3.0
17248 * @category Util
17249 * @example
17250 *
17251 * _.times(2, _.noop);
17252 * // => [undefined, undefined]
17253 */
17254 function noop() {
17255 // No operation performed.
17256 }
17257
17258 /**
17259 * Creates a function that gets the argument at index `n`. If `n` is negative,
17260 * the nth argument from the end is returned.
17261 *
17262 * @static
17263 * @memberOf _
17264 * @since 4.0.0
17265 * @category Util
17266 * @param {number} [n=0] The index of the argument to return.
17267 * @returns {Function} Returns the new pass-thru function.
17268 * @example
17269 *
17270 * var func = _.nthArg(1);
17271 * func('a', 'b', 'c', 'd');
17272 * // => 'b'
17273 *
17274 * var func = _.nthArg(-2);
17275 * func('a', 'b', 'c', 'd');
17276 * // => 'c'
17277 */
17278 function nthArg(n) {
17279 n = toInteger(n);
17280 return baseRest(function(args) {
17281 return baseNth(args, n);
17282 });
17283 }
17284
17285 /**
17286 * Creates a function that invokes `iteratees` with the arguments it receives
17287 * and returns their results.
17288 *
17289 * @static
17290 * @memberOf _
17291 * @since 4.0.0
17292 * @category Util
17293 * @param {...(Function|Function[])} [iteratees=[_.identity]]
17294 * The iteratees to invoke.
17295 * @returns {Function} Returns the new function.
17296 * @example
17297 *
17298 * var func = _.over([Math.max, Math.min]);
17299 *
17300 * func(1, 2, 3, 4);
17301 * // => [4, 1]
17302 */
17303 var over = createOver(arrayMap);
17304
17305 /**
17306 * Creates a function that checks if **all** of the `predicates` return
17307 * truthy when invoked with the arguments it receives.
17308 *
17309 * @static
17310 * @memberOf _
17311 * @since 4.0.0
17312 * @category Util
17313 * @param {...(Function|Function[])} [predicates=[_.identity]]
17314 * The predicates to check.
17315 * @returns {Function} Returns the new function.
17316 * @example
17317 *
17318 * var func = _.overEvery([Boolean, isFinite]);
17319 *
17320 * func('1');
17321 * // => true
17322 *
17323 * func(null);
17324 * // => false
17325 *
17326 * func(NaN);
17327 * // => false
17328 */
17329 var overEvery = createOver(arrayEvery);
17330
17331 /**
17332 * Creates a function that checks if **any** of the `predicates` return
17333 * truthy when invoked with the arguments it receives.
17334 *
17335 * @static
17336 * @memberOf _
17337 * @since 4.0.0
17338 * @category Util
17339 * @param {...(Function|Function[])} [predicates=[_.identity]]
17340 * The predicates to check.
17341 * @returns {Function} Returns the new function.
17342 * @example
17343 *
17344 * var func = _.overSome([Boolean, isFinite]);
17345 *
17346 * func('1');
17347 * // => true
17348 *
17349 * func(null);
17350 * // => true
17351 *
17352 * func(NaN);
17353 * // => false
17354 */
17355 var overSome = createOver(arraySome);
17356
17357 /**
17358 * Creates a function that returns the value at `path` of a given object.
17359 *
17360 * @static
17361 * @memberOf _
17362 * @since 2.4.0
17363 * @category Util
17364 * @param {Array|string} path The path of the property to get.
17365 * @returns {Function} Returns the new accessor function.
17366 * @example
17367 *
17368 * var objects = [
17369 * { 'a': { 'b': 2 } },
17370 * { 'a': { 'b': 1 } }
17371 * ];
17372 *
17373 * _.map(objects, _.property('a.b'));
17374 * // => [2, 1]
17375 *
17376 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
17377 * // => [1, 2]
17378 */
17379 function property(path) {
17380 return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
17381 }
17382
17383 /**
17384 * The opposite of `_.property`; this method creates a function that returns
17385 * the value at a given path of `object`.
17386 *
17387 * @static
17388 * @memberOf _
17389 * @since 3.0.0
17390 * @category Util
17391 * @param {Object} object The object to query.
17392 * @returns {Function} Returns the new accessor function.
17393 * @example
17394 *
17395 * var array = [0, 1, 2],
17396 * object = { 'a': array, 'b': array, 'c': array };
17397 *
17398 * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
17399 * // => [2, 0]
17400 *
17401 * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
17402 * // => [2, 0]
17403 */
17404 function propertyOf(object) {
17405 return function(path) {
17406 return object == null ? undefined : baseGet(object, path);
17407 };
17408 }
17409
17410 /**
17411 * Creates an array of numbers (positive and/or negative) progressing from
17412 * `start` up to, but not including, `end`. A step of `-1` is used if a negative
17413 * `start` is specified without an `end` or `step`. If `end` is not specified,
17414 * it's set to `start` with `start` then set to `0`.
17415 *
17416 * **Note:** JavaScript follows the IEEE-754 standard for resolving
17417 * floating-point values which can produce unexpected results.
17418 *
17419 * @static
17420 * @since 0.1.0
17421 * @memberOf _
17422 * @category Util
17423 * @param {number} [start=0] The start of the range.
17424 * @param {number} end The end of the range.
17425 * @param {number} [step=1] The value to increment or decrement by.
17426 * @returns {Array} Returns the range of numbers.
17427 * @see _.inRange, _.rangeRight
17428 * @example
17429 *
17430 * _.range(4);
17431 * // => [0, 1, 2, 3]
17432 *
17433 * _.range(-4);
17434 * // => [0, -1, -2, -3]
17435 *
17436 * _.range(1, 5);
17437 * // => [1, 2, 3, 4]
17438 *
17439 * _.range(0, 20, 5);
17440 * // => [0, 5, 10, 15]
17441 *
17442 * _.range(0, -4, -1);
17443 * // => [0, -1, -2, -3]
17444 *
17445 * _.range(1, 4, 0);
17446 * // => [1, 1, 1]
17447 *
17448 * _.range(0);
17449 * // => []
17450 */
17451 var range = createRange();
17452
17453 /**
17454 * This method is like `_.range` except that it populates values in
17455 * descending order.
17456 *
17457 * @static
17458 * @memberOf _
17459 * @since 4.0.0
17460 * @category Util
17461 * @param {number} [start=0] The start of the range.
17462 * @param {number} end The end of the range.
17463 * @param {number} [step=1] The value to increment or decrement by.
17464 * @returns {Array} Returns the range of numbers.
17465 * @see _.inRange, _.range
17466 * @example
17467 *
17468 * _.rangeRight(4);
17469 * // => [3, 2, 1, 0]
17470 *
17471 * _.rangeRight(-4);
17472 * // => [-3, -2, -1, 0]
17473 *
17474 * _.rangeRight(1, 5);
17475 * // => [4, 3, 2, 1]
17476 *
17477 * _.rangeRight(0, 20, 5);
17478 * // => [15, 10, 5, 0]
17479 *
17480 * _.rangeRight(0, -4, -1);
17481 * // => [-3, -2, -1, 0]
17482 *
17483 * _.rangeRight(1, 4, 0);
17484 * // => [1, 1, 1]
17485 *
17486 * _.rangeRight(0);
17487 * // => []
17488 */
17489 var rangeRight = createRange(true);
17490
17491 /**
17492 * This method returns a new empty array.
17493 *
17494 * @static
17495 * @memberOf _
17496 * @since 4.13.0
17497 * @category Util
17498 * @returns {Array} Returns the new empty array.
17499 * @example
17500 *
17501 * var arrays = _.times(2, _.stubArray);
17502 *
17503 * console.log(arrays);
17504 * // => [[], []]
17505 *
17506 * console.log(arrays[0] === arrays[1]);
17507 * // => false
17508 */
17509 function stubArray() {
17510 return [];
17511 }
17512
17513 /**
17514 * This method returns `false`.
17515 *
17516 * @static
17517 * @memberOf _
17518 * @since 4.13.0
17519 * @category Util
17520 * @returns {boolean} Returns `false`.
17521 * @example
17522 *
17523 * _.times(2, _.stubFalse);
17524 * // => [false, false]
17525 */
17526 function stubFalse() {
17527 return false;
17528 }
17529
17530 /**
17531 * This method returns a new empty object.
17532 *
17533 * @static
17534 * @memberOf _
17535 * @since 4.13.0
17536 * @category Util
17537 * @returns {Object} Returns the new empty object.
17538 * @example
17539 *
17540 * var objects = _.times(2, _.stubObject);
17541 *
17542 * console.log(objects);
17543 * // => [{}, {}]
17544 *
17545 * console.log(objects[0] === objects[1]);
17546 * // => false
17547 */
17548 function stubObject() {
17549 return {};
17550 }
17551
17552 /**
17553 * This method returns an empty string.
17554 *
17555 * @static
17556 * @memberOf _
17557 * @since 4.13.0
17558 * @category Util
17559 * @returns {string} Returns the empty string.
17560 * @example
17561 *
17562 * _.times(2, _.stubString);
17563 * // => ['', '']
17564 */
17565 function stubString() {
17566 return '';
17567 }
17568
17569 /**
17570 * This method returns `true`.
17571 *
17572 * @static
17573 * @memberOf _
17574 * @since 4.13.0
17575 * @category Util
17576 * @returns {boolean} Returns `true`.
17577 * @example
17578 *
17579 * _.times(2, _.stubTrue);
17580 * // => [true, true]
17581 */
17582 function stubTrue() {
17583 return true;
17584 }
17585
17586 /**
17587 * Invokes the iteratee `n` times, returning an array of the results of
17588 * each invocation. The iteratee is invoked with one argument; (index).
17589 *
17590 * @static
17591 * @since 0.1.0
17592 * @memberOf _
17593 * @category Util
17594 * @param {number} n The number of times to invoke `iteratee`.
17595 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
17596 * @returns {Array} Returns the array of results.
17597 * @example
17598 *
17599 * _.times(3, String);
17600 * // => ['0', '1', '2']
17601 *
17602 * _.times(4, _.constant(0));
17603 * // => [0, 0, 0, 0]
17604 */
17605 function times(n, iteratee) {
17606 n = toInteger(n);
17607 if (n < 1 || n > MAX_SAFE_INTEGER) {
17608 return [];
17609 }
17610 var index = MAX_ARRAY_LENGTH,
17611 length = nativeMin(n, MAX_ARRAY_LENGTH);
17612
17613 iteratee = getIteratee(iteratee);
17614 n -= MAX_ARRAY_LENGTH;
17615
17616 var result = baseTimes(length, iteratee);
17617 while (++index < n) {
17618 iteratee(index);
17619 }
17620 return result;
17621 }
17622
17623 /**
17624 * Converts `value` to a property path array.
17625 *
17626 * @static
17627 * @memberOf _
17628 * @since 4.0.0
17629 * @category Util
17630 * @param {*} value The value to convert.
17631 * @returns {Array} Returns the new property path array.
17632 * @example
17633 *
17634 * _.toPath('a.b.c');
17635 * // => ['a', 'b', 'c']
17636 *
17637 * _.toPath('a[0].b.c');
17638 * // => ['a', '0', 'b', 'c']
17639 */
17640 function toPath(value) {
17641 if (isArray(value)) {
17642 return arrayMap(value, toKey);
17643 }
17644 return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
17645 }
17646
17647 /**
17648 * Generates a unique ID. If `prefix` is given, the ID is appended to it.
17649 *
17650 * @static
17651 * @since 0.1.0
17652 * @memberOf _
17653 * @category Util
17654 * @param {string} [prefix=''] The value to prefix the ID with.
17655 * @returns {string} Returns the unique ID.
17656 * @example
17657 *
17658 * _.uniqueId('contact_');
17659 * // => 'contact_104'
17660 *
17661 * _.uniqueId();
17662 * // => '105'
17663 */
17664 function uniqueId(prefix) {
17665 var id = ++idCounter;
17666 return toString(prefix) + id;
17667 }
17668
17669 /*------------------------------------------------------------------------*/
17670
17671 /**
17672 * Adds two numbers.
17673 *
17674 * @static
17675 * @memberOf _
17676 * @since 3.4.0
17677 * @category Math
17678 * @param {number} augend The first number in an addition.
17679 * @param {number} addend The second number in an addition.
17680 * @returns {number} Returns the total.
17681 * @example
17682 *
17683 * _.add(6, 4);
17684 * // => 10
17685 */
17686 var add = createMathOperation(function(augend, addend) {
17687 return augend + addend;
17688 }, 0);
17689
17690 /**
17691 * Computes `number` rounded up to `precision`.
17692 *
17693 * @static
17694 * @memberOf _
17695 * @since 3.10.0
17696 * @category Math
17697 * @param {number} number The number to round up.
17698 * @param {number} [precision=0] The precision to round up to.
17699 * @returns {number} Returns the rounded up number.
17700 * @example
17701 *
17702 * _.ceil(4.006);
17703 * // => 5
17704 *
17705 * _.ceil(6.004, 2);
17706 * // => 6.01
17707 *
17708 * _.ceil(6040, -2);
17709 * // => 6100
17710 */
17711 var ceil = createRound('ceil');
17712
17713 /**
17714 * Divide two numbers.
17715 *
17716 * @static
17717 * @memberOf _
17718 * @since 4.7.0
17719 * @category Math
17720 * @param {number} dividend The first number in a division.
17721 * @param {number} divisor The second number in a division.
17722 * @returns {number} Returns the quotient.
17723 * @example
17724 *
17725 * _.divide(6, 4);
17726 * // => 1.5
17727 */
17728 var divide = createMathOperation(function(dividend, divisor) {
17729 return dividend / divisor;
17730 }, 1);
17731
17732 /**
17733 * Computes `number` rounded down to `precision`.
17734 *
17735 * @static
17736 * @memberOf _
17737 * @since 3.10.0
17738 * @category Math
17739 * @param {number} number The number to round down.
17740 * @param {number} [precision=0] The precision to round down to.
17741 * @returns {number} Returns the rounded down number.
17742 * @example
17743 *
17744 * _.floor(4.006);
17745 * // => 4
17746 *
17747 * _.floor(0.046, 2);
17748 * // => 0.04
17749 *
17750 * _.floor(4060, -2);
17751 * // => 4000
17752 */
17753 var floor = createRound('floor');
17754
17755 /**
17756 * Computes the maximum value of `array`. If `array` is empty or falsey,
17757 * `undefined` is returned.
17758 *
17759 * @static
17760 * @since 0.1.0
17761 * @memberOf _
17762 * @category Math
17763 * @param {Array} array The array to iterate over.
17764 * @returns {*} Returns the maximum value.
17765 * @example
17766 *
17767 * _.max([4, 2, 8, 6]);
17768 * // => 8
17769 *
17770 * _.max([]);
17771 * // => undefined
17772 */
17773 function max(array) {
17774 return (array && array.length)
17775 ? baseExtremum(array, identity, baseGt)
17776 : undefined;
17777 }
17778
17779 /**
17780 * This method is like `_.max` except that it accepts `iteratee` which is
17781 * invoked for each element in `array` to generate the criterion by which
17782 * the value is ranked. The iteratee is invoked with one argument: (value).
17783 *
17784 * @static
17785 * @memberOf _
17786 * @since 4.0.0
17787 * @category Math
17788 * @param {Array} array The array to iterate over.
17789 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
17790 * @returns {*} Returns the maximum value.
17791 * @example
17792 *
17793 * var objects = [{ 'n': 1 }, { 'n': 2 }];
17794 *
17795 * _.maxBy(objects, function(o) { return o.n; });
17796 * // => { 'n': 2 }
17797 *
17798 * // The `_.property` iteratee shorthand.
17799 * _.maxBy(objects, 'n');
17800 * // => { 'n': 2 }
17801 */
17802 function maxBy(array, iteratee) {
17803 return (array && array.length)
17804 ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
17805 : undefined;
17806 }
17807
17808 /**
17809 * Computes the mean of the values in `array`.
17810 *
17811 * @static
17812 * @memberOf _
17813 * @since 4.0.0
17814 * @category Math
17815 * @param {Array} array The array to iterate over.
17816 * @returns {number} Returns the mean.
17817 * @example
17818 *
17819 * _.mean([4, 2, 8, 6]);
17820 * // => 5
17821 */
17822 function mean(array) {
17823 return baseMean(array, identity);
17824 }
17825
17826 /**
17827 * This method is like `_.mean` except that it accepts `iteratee` which is
17828 * invoked for each element in `array` to generate the value to be averaged.
17829 * The iteratee is invoked with one argument: (value).
17830 *
17831 * @static
17832 * @memberOf _
17833 * @since 4.7.0
17834 * @category Math
17835 * @param {Array} array The array to iterate over.
17836 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
17837 * @returns {number} Returns the mean.
17838 * @example
17839 *
17840 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
17841 *
17842 * _.meanBy(objects, function(o) { return o.n; });
17843 * // => 5
17844 *
17845 * // The `_.property` iteratee shorthand.
17846 * _.meanBy(objects, 'n');
17847 * // => 5
17848 */
17849 function meanBy(array, iteratee) {
17850 return baseMean(array, getIteratee(iteratee, 2));
17851 }
17852
17853 /**
17854 * Computes the minimum value of `array`. If `array` is empty or falsey,
17855 * `undefined` is returned.
17856 *
17857 * @static
17858 * @since 0.1.0
17859 * @memberOf _
17860 * @category Math
17861 * @param {Array} array The array to iterate over.
17862 * @returns {*} Returns the minimum value.
17863 * @example
17864 *
17865 * _.min([4, 2, 8, 6]);
17866 * // => 2
17867 *
17868 * _.min([]);
17869 * // => undefined
17870 */
17871 function min(array) {
17872 return (array && array.length)
17873 ? baseExtremum(array, identity, baseLt)
17874 : undefined;
17875 }
17876
17877 /**
17878 * This method is like `_.min` except that it accepts `iteratee` which is
17879 * invoked for each element in `array` to generate the criterion by which
17880 * the value is ranked. The iteratee is invoked with one argument: (value).
17881 *
17882 * @static
17883 * @memberOf _
17884 * @since 4.0.0
17885 * @category Math
17886 * @param {Array} array The array to iterate over.
17887 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
17888 * @returns {*} Returns the minimum value.
17889 * @example
17890 *
17891 * var objects = [{ 'n': 1 }, { 'n': 2 }];
17892 *
17893 * _.minBy(objects, function(o) { return o.n; });
17894 * // => { 'n': 1 }
17895 *
17896 * // The `_.property` iteratee shorthand.
17897 * _.minBy(objects, 'n');
17898 * // => { 'n': 1 }
17899 */
17900 function minBy(array, iteratee) {
17901 return (array && array.length)
17902 ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
17903 : undefined;
17904 }
17905
17906 /**
17907 * Multiply two numbers.
17908 *
17909 * @static
17910 * @memberOf _
17911 * @since 4.7.0
17912 * @category Math
17913 * @param {number} multiplier The first number in a multiplication.
17914 * @param {number} multiplicand The second number in a multiplication.
17915 * @returns {number} Returns the product.
17916 * @example
17917 *
17918 * _.multiply(6, 4);
17919 * // => 24
17920 */
17921 var multiply = createMathOperation(function(multiplier, multiplicand) {
17922 return multiplier * multiplicand;
17923 }, 1);
17924
17925 /**
17926 * Computes `number` rounded to `precision`.
17927 *
17928 * @static
17929 * @memberOf _
17930 * @since 3.10.0
17931 * @category Math
17932 * @param {number} number The number to round.
17933 * @param {number} [precision=0] The precision to round to.
17934 * @returns {number} Returns the rounded number.
17935 * @example
17936 *
17937 * _.round(4.006);
17938 * // => 4
17939 *
17940 * _.round(4.006, 2);
17941 * // => 4.01
17942 *
17943 * _.round(4060, -2);
17944 * // => 4100
17945 */
17946 var round = createRound('round');
17947
17948 /**
17949 * Subtract two numbers.
17950 *
17951 * @static
17952 * @memberOf _
17953 * @since 4.0.0
17954 * @category Math
17955 * @param {number} minuend The first number in a subtraction.
17956 * @param {number} subtrahend The second number in a subtraction.
17957 * @returns {number} Returns the difference.
17958 * @example
17959 *
17960 * _.subtract(6, 4);
17961 * // => 2
17962 */
17963 var subtract = createMathOperation(function(minuend, subtrahend) {
17964 return minuend - subtrahend;
17965 }, 0);
17966
17967 /**
17968 * Computes the sum of the values in `array`.
17969 *
17970 * @static
17971 * @memberOf _
17972 * @since 3.4.0
17973 * @category Math
17974 * @param {Array} array The array to iterate over.
17975 * @returns {number} Returns the sum.
17976 * @example
17977 *
17978 * _.sum([4, 2, 8, 6]);
17979 * // => 20
17980 */
17981 function sum(array) {
17982 return (array && array.length)
17983 ? baseSum(array, identity)
17984 : 0;
17985 }
17986
17987 /**
17988 * This method is like `_.sum` except that it accepts `iteratee` which is
17989 * invoked for each element in `array` to generate the value to be summed.
17990 * The iteratee is invoked with one argument: (value).
17991 *
17992 * @static
17993 * @memberOf _
17994 * @since 4.0.0
17995 * @category Math
17996 * @param {Array} array The array to iterate over.
17997 * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
17998 * @returns {number} Returns the sum.
17999 * @example
18000 *
18001 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
18002 *
18003 * _.sumBy(objects, function(o) { return o.n; });
18004 * // => 20
18005 *
18006 * // The `_.property` iteratee shorthand.
18007 * _.sumBy(objects, 'n');
18008 * // => 20
18009 */
18010 function sumBy(array, iteratee) {
18011 return (array && array.length)
18012 ? baseSum(array, getIteratee(iteratee, 2))
18013 : 0;
18014 }
18015
18016 /*------------------------------------------------------------------------*/
18017
18018 // Add methods that return wrapped values in chain sequences.
18019 lodash.after = after;
18020 lodash.ary = ary;
18021 lodash.assign = assign;
18022 lodash.assignIn = assignIn;
18023 lodash.assignInWith = assignInWith;
18024 lodash.assignWith = assignWith;
18025 lodash.at = at;
18026 lodash.before = before;
18027 lodash.bind = bind;
18028 lodash.bindAll = bindAll;
18029 lodash.bindKey = bindKey;
18030 lodash.castArray = castArray;
18031 lodash.chain = chain;
18032 lodash.chunk = chunk;
18033 lodash.compact = compact;
18034 lodash.concat = concat;
18035 lodash.cond = cond;
18036 lodash.conforms = conforms;
18037 lodash.constant = constant;
18038 lodash.countBy = countBy;
18039 lodash.create = create;
18040 lodash.curry = curry;
18041 lodash.curryRight = curryRight;
18042 lodash.debounce = debounce;
18043 lodash.defaults = defaults;
18044 lodash.defaultsDeep = defaultsDeep;
18045 lodash.defer = defer;
18046 lodash.delay = delay;
18047 lodash.difference = difference;
18048 lodash.differenceBy = differenceBy;
18049 lodash.differenceWith = differenceWith;
18050 lodash.drop = drop;
18051 lodash.dropRight = dropRight;
18052 lodash.dropRightWhile = dropRightWhile;
18053 lodash.dropWhile = dropWhile;
18054 lodash.fill = fill;
18055 lodash.filter = filter;
18056 lodash.flatMap = flatMap;
18057 lodash.flatMapDeep = flatMapDeep;
18058 lodash.flatMapDepth = flatMapDepth;
18059 lodash.flatten = flatten;
18060 lodash.flattenDeep = flattenDeep;
18061 lodash.flattenDepth = flattenDepth;
18062 lodash.flip = flip;
18063 lodash.flow = flow;
18064 lodash.flowRight = flowRight;
18065 lodash.fromPairs = fromPairs;
18066 lodash.functions = functions;
18067 lodash.functionsIn = functionsIn;
18068 lodash.groupBy = groupBy;
18069 lodash.initial = initial;
18070 lodash.intersection = intersection;
18071 lodash.intersectionBy = intersectionBy;
18072 lodash.intersectionWith = intersectionWith;
18073 lodash.invert = invert;
18074 lodash.invertBy = invertBy;
18075 lodash.invokeMap = invokeMap;
18076 lodash.iteratee = iteratee;
18077 lodash.keyBy = keyBy;
18078 lodash.keys = keys;
18079 lodash.keysIn = keysIn;
18080 lodash.map = map;
18081 lodash.mapKeys = mapKeys;
18082 lodash.mapValues = mapValues;
18083 lodash.matches = matches;
18084 lodash.matchesProperty = matchesProperty;
18085 lodash.memoize = memoize;
18086 lodash.merge = merge;
18087 lodash.mergeWith = mergeWith;
18088 lodash.method = method;
18089 lodash.methodOf = methodOf;
18090 lodash.mixin = mixin;
18091 lodash.negate = negate;
18092 lodash.nthArg = nthArg;
18093 lodash.omit = omit;
18094 lodash.omitBy = omitBy;
18095 lodash.once = once;
18096 lodash.orderBy = orderBy;
18097 lodash.over = over;
18098 lodash.overArgs = overArgs;
18099 lodash.overEvery = overEvery;
18100 lodash.overSome = overSome;
18101 lodash.partial = partial;
18102 lodash.partialRight = partialRight;
18103 lodash.partition = partition;
18104 lodash.pick = pick;
18105 lodash.pickBy = pickBy;
18106 lodash.property = property;
18107 lodash.propertyOf = propertyOf;
18108 lodash.pull = pull;
18109 lodash.pullAll = pullAll;
18110 lodash.pullAllBy = pullAllBy;
18111 lodash.pullAllWith = pullAllWith;
18112 lodash.pullAt = pullAt;
18113 lodash.range = range;
18114 lodash.rangeRight = rangeRight;
18115 lodash.rearg = rearg;
18116 lodash.reject = reject;
18117 lodash.remove = remove;
18118 lodash.rest = rest;
18119 lodash.reverse = reverse;
18120 lodash.sampleSize = sampleSize;
18121 lodash.set = set;
18122 lodash.setWith = setWith;
18123 lodash.shuffle = shuffle;
18124 lodash.slice = slice;
18125 lodash.sortBy = sortBy;
18126 lodash.sortedUniq = sortedUniq;
18127 lodash.sortedUniqBy = sortedUniqBy;
18128 lodash.split = split;
18129 lodash.spread = spread;
18130 lodash.tail = tail;
18131 lodash.take = take;
18132 lodash.takeRight = takeRight;
18133 lodash.takeRightWhile = takeRightWhile;
18134 lodash.takeWhile = takeWhile;
18135 lodash.tap = tap;
18136 lodash.throttle = throttle;
18137 lodash.thru = thru;
18138 lodash.toArray = toArray;
18139 lodash.toPairs = toPairs;
18140 lodash.toPairsIn = toPairsIn;
18141 lodash.toPath = toPath;
18142 lodash.toPlainObject = toPlainObject;
18143 lodash.transform = transform;
18144 lodash.unary = unary;
18145 lodash.union = union;
18146 lodash.unionBy = unionBy;
18147 lodash.unionWith = unionWith;
18148 lodash.uniq = uniq;
18149 lodash.uniqBy = uniqBy;
18150 lodash.uniqWith = uniqWith;
18151 lodash.unset = unset;
18152 lodash.unzip = unzip;
18153 lodash.unzipWith = unzipWith;
18154 lodash.update = update;
18155 lodash.updateWith = updateWith;
18156 lodash.values = values;
18157 lodash.valuesIn = valuesIn;
18158 lodash.without = without;
18159 lodash.words = words;
18160 lodash.wrap = wrap;
18161 lodash.xor = xor;
18162 lodash.xorBy = xorBy;
18163 lodash.xorWith = xorWith;
18164 lodash.zip = zip;
18165 lodash.zipObject = zipObject;
18166 lodash.zipObjectDeep = zipObjectDeep;
18167 lodash.zipWith = zipWith;
18168
18169 // Add aliases.
18170 lodash.entries = toPairs;
18171 lodash.entriesIn = toPairsIn;
18172 lodash.extend = assignIn;
18173 lodash.extendWith = assignInWith;
18174
18175 // Add methods to `lodash.prototype`.
18176 mixin(lodash, lodash);
18177
18178 /*------------------------------------------------------------------------*/
18179
18180 // Add methods that return unwrapped values in chain sequences.
18181 lodash.add = add;
18182 lodash.attempt = attempt;
18183 lodash.camelCase = camelCase;
18184 lodash.capitalize = capitalize;
18185 lodash.ceil = ceil;
18186 lodash.clamp = clamp;
18187 lodash.clone = clone;
18188 lodash.cloneDeep = cloneDeep;
18189 lodash.cloneDeepWith = cloneDeepWith;
18190 lodash.cloneWith = cloneWith;
18191 lodash.conformsTo = conformsTo;
18192 lodash.deburr = deburr;
18193 lodash.defaultTo = defaultTo;
18194 lodash.divide = divide;
18195 lodash.endsWith = endsWith;
18196 lodash.eq = eq;
18197 lodash.escape = escape;
18198 lodash.escapeRegExp = escapeRegExp;
18199 lodash.every = every;
18200 lodash.find = find;
18201 lodash.findIndex = findIndex;
18202 lodash.findKey = findKey;
18203 lodash.findLast = findLast;
18204 lodash.findLastIndex = findLastIndex;
18205 lodash.findLastKey = findLastKey;
18206 lodash.floor = floor;
18207 lodash.forEach = forEach;
18208 lodash.forEachRight = forEachRight;
18209 lodash.forIn = forIn;
18210 lodash.forInRight = forInRight;
18211 lodash.forOwn = forOwn;
18212 lodash.forOwnRight = forOwnRight;
18213 lodash.get = get;
18214 lodash.gt = gt;
18215 lodash.gte = gte;
18216 lodash.has = has;
18217 lodash.hasIn = hasIn;
18218 lodash.head = head;
18219 lodash.identity = identity;
18220 lodash.includes = includes;
18221 lodash.indexOf = indexOf;
18222 lodash.inRange = inRange;
18223 lodash.invoke = invoke;
18224 lodash.isArguments = isArguments;
18225 lodash.isArray = isArray;
18226 lodash.isArrayBuffer = isArrayBuffer;
18227 lodash.isArrayLike = isArrayLike;
18228 lodash.isArrayLikeObject = isArrayLikeObject;
18229 lodash.isBoolean = isBoolean;
18230 lodash.isBuffer = isBuffer;
18231 lodash.isDate = isDate;
18232 lodash.isElement = isElement;
18233 lodash.isEmpty = isEmpty;
18234 lodash.isEqual = isEqual;
18235 lodash.isEqualWith = isEqualWith;
18236 lodash.isError = isError;
18237 lodash.isFinite = isFinite;
18238 lodash.isFunction = isFunction;
18239 lodash.isInteger = isInteger;
18240 lodash.isLength = isLength;
18241 lodash.isMap = isMap;
18242 lodash.isMatch = isMatch;
18243 lodash.isMatchWith = isMatchWith;
18244 lodash.isNaN = isNaN;
18245 lodash.isNative = isNative;
18246 lodash.isNil = isNil;
18247 lodash.isNull = isNull;
18248 lodash.isNumber = isNumber;
18249 lodash.isObject = isObject;
18250 lodash.isObjectLike = isObjectLike;
18251 lodash.isPlainObject = isPlainObject;
18252 lodash.isRegExp = isRegExp;
18253 lodash.isSafeInteger = isSafeInteger;
18254 lodash.isSet = isSet;
18255 lodash.isString = isString;
18256 lodash.isSymbol = isSymbol;
18257 lodash.isTypedArray = isTypedArray;
18258 lodash.isUndefined = isUndefined;
18259 lodash.isWeakMap = isWeakMap;
18260 lodash.isWeakSet = isWeakSet;
18261 lodash.join = join;
18262 lodash.kebabCase = kebabCase;
18263 lodash.last = last;
18264 lodash.lastIndexOf = lastIndexOf;
18265 lodash.lowerCase = lowerCase;
18266 lodash.lowerFirst = lowerFirst;
18267 lodash.lt = lt;
18268 lodash.lte = lte;
18269 lodash.max = max;
18270 lodash.maxBy = maxBy;
18271 lodash.mean = mean;
18272 lodash.meanBy = meanBy;
18273 lodash.min = min;
18274 lodash.minBy = minBy;
18275 lodash.stubArray = stubArray;
18276 lodash.stubFalse = stubFalse;
18277 lodash.stubObject = stubObject;
18278 lodash.stubString = stubString;
18279 lodash.stubTrue = stubTrue;
18280 lodash.multiply = multiply;
18281 lodash.nth = nth;
18282 lodash.noConflict = noConflict;
18283 lodash.noop = noop;
18284 lodash.now = now;
18285 lodash.pad = pad;
18286 lodash.padEnd = padEnd;
18287 lodash.padStart = padStart;
18288 lodash.parseInt = parseInt;
18289 lodash.random = random;
18290 lodash.reduce = reduce;
18291 lodash.reduceRight = reduceRight;
18292 lodash.repeat = repeat;
18293 lodash.replace = replace;
18294 lodash.result = result;
18295 lodash.round = round;
18296 lodash.runInContext = runInContext;
18297 lodash.sample = sample;
18298 lodash.size = size;
18299 lodash.snakeCase = snakeCase;
18300 lodash.some = some;
18301 lodash.sortedIndex = sortedIndex;
18302 lodash.sortedIndexBy = sortedIndexBy;
18303 lodash.sortedIndexOf = sortedIndexOf;
18304 lodash.sortedLastIndex = sortedLastIndex;
18305 lodash.sortedLastIndexBy = sortedLastIndexBy;
18306 lodash.sortedLastIndexOf = sortedLastIndexOf;
18307 lodash.startCase = startCase;
18308 lodash.startsWith = startsWith;
18309 lodash.subtract = subtract;
18310 lodash.sum = sum;
18311 lodash.sumBy = sumBy;
18312 lodash.template = template;
18313 lodash.times = times;
18314 lodash.toFinite = toFinite;
18315 lodash.toInteger = toInteger;
18316 lodash.toLength = toLength;
18317 lodash.toLower = toLower;
18318 lodash.toNumber = toNumber;
18319 lodash.toSafeInteger = toSafeInteger;
18320 lodash.toString = toString;
18321 lodash.toUpper = toUpper;
18322 lodash.trim = trim;
18323 lodash.trimEnd = trimEnd;
18324 lodash.trimStart = trimStart;
18325 lodash.truncate = truncate;
18326 lodash.unescape = unescape;
18327 lodash.uniqueId = uniqueId;
18328 lodash.upperCase = upperCase;
18329 lodash.upperFirst = upperFirst;
18330
18331 // Add aliases.
18332 lodash.each = forEach;
18333 lodash.eachRight = forEachRight;
18334 lodash.first = head;
18335
18336 mixin(lodash, (function() {
18337 var source = {};
18338 baseForOwn(lodash, function(func, methodName) {
18339 if (!hasOwnProperty.call(lodash.prototype, methodName)) {
18340 source[methodName] = func;
18341 }
18342 });
18343 return source;
18344 }()), { 'chain': false });
18345
18346 /*------------------------------------------------------------------------*/
18347
18348 /**
18349 * The semantic version number.
18350 *
18351 * @static
18352 * @memberOf _
18353 * @type {string}
18354 */
18355 lodash.VERSION = VERSION;
18356
18357 // Assign default placeholders.
18358 arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
18359 lodash[methodName].placeholder = lodash;
18360 });
18361
18362 // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
18363 arrayEach(['drop', 'take'], function(methodName, index) {
18364 LazyWrapper.prototype[methodName] = function(n) {
18365 n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
18366
18367 var result = (this.__filtered__ && !index)
18368 ? new LazyWrapper(this)
18369 : this.clone();
18370
18371 if (result.__filtered__) {
18372 result.__takeCount__ = nativeMin(n, result.__takeCount__);
18373 } else {
18374 result.__views__.push({
18375 'size': nativeMin(n, MAX_ARRAY_LENGTH),
18376 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
18377 });
18378 }
18379 return result;
18380 };
18381
18382 LazyWrapper.prototype[methodName + 'Right'] = function(n) {
18383 return this.reverse()[methodName](n).reverse();
18384 };
18385 });
18386
18387 // Add `LazyWrapper` methods that accept an `iteratee` value.
18388 arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
18389 var type = index + 1,
18390 isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
18391
18392 LazyWrapper.prototype[methodName] = function(iteratee) {
18393 var result = this.clone();
18394 result.__iteratees__.push({
18395 'iteratee': getIteratee(iteratee, 3),
18396 'type': type
18397 });
18398 result.__filtered__ = result.__filtered__ || isFilter;
18399 return result;
18400 };
18401 });
18402
18403 // Add `LazyWrapper` methods for `_.head` and `_.last`.
18404 arrayEach(['head', 'last'], function(methodName, index) {
18405 var takeName = 'take' + (index ? 'Right' : '');
18406
18407 LazyWrapper.prototype[methodName] = function() {
18408 return this[takeName](1).value()[0];
18409 };
18410 });
18411
18412 // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
18413 arrayEach(['initial', 'tail'], function(methodName, index) {
18414 var dropName = 'drop' + (index ? '' : 'Right');
18415
18416 LazyWrapper.prototype[methodName] = function() {
18417 return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
18418 };
18419 });
18420
18421 LazyWrapper.prototype.compact = function() {
18422 return this.filter(identity);
18423 };
18424
18425 LazyWrapper.prototype.find = function(predicate) {
18426 return this.filter(predicate).head();
18427 };
18428
18429 LazyWrapper.prototype.findLast = function(predicate) {
18430 return this.reverse().find(predicate);
18431 };
18432
18433 LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
18434 if (typeof path == 'function') {
18435 return new LazyWrapper(this);
18436 }
18437 return this.map(function(value) {
18438 return baseInvoke(value, path, args);
18439 });
18440 });
18441
18442 LazyWrapper.prototype.reject = function(predicate) {
18443 return this.filter(negate(getIteratee(predicate)));
18444 };
18445
18446 LazyWrapper.prototype.slice = function(start, end) {
18447 start = toInteger(start);
18448
18449 var result = this;
18450 if (result.__filtered__ && (start > 0 || end < 0)) {
18451 return new LazyWrapper(result);
18452 }
18453 if (start < 0) {
18454 result = result.takeRight(-start);
18455 } else if (start) {
18456 result = result.drop(start);
18457 }
18458 if (end !== undefined) {
18459 end = toInteger(end);
18460 result = end < 0 ? result.dropRight(-end) : result.take(end - start);
18461 }
18462 return result;
18463 };
18464
18465 LazyWrapper.prototype.takeRightWhile = function(predicate) {
18466 return this.reverse().takeWhile(predicate).reverse();
18467 };
18468
18469 LazyWrapper.prototype.toArray = function() {
18470 return this.take(MAX_ARRAY_LENGTH);
18471 };
18472
18473 // Add `LazyWrapper` methods to `lodash.prototype`.
18474 baseForOwn(LazyWrapper.prototype, function(func, methodName) {
18475 var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
18476 isTaker = /^(?:head|last)$/.test(methodName),
18477 lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
18478 retUnwrapped = isTaker || /^find/.test(methodName);
18479
18480 if (!lodashFunc) {
18481 return;
18482 }
18483 lodash.prototype[methodName] = function() {
18484 var value = this.__wrapped__,
18485 args = isTaker ? [1] : arguments,
18486 isLazy = value instanceof LazyWrapper,
18487 iteratee = args[0],
18488 useLazy = isLazy || isArray(value);
18489
18490 var interceptor = function(value) {
18491 var result = lodashFunc.apply(lodash, arrayPush([value], args));
18492 return (isTaker && chainAll) ? result[0] : result;
18493 };
18494
18495 if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
18496 // Avoid lazy use if the iteratee has a "length" value other than `1`.
18497 isLazy = useLazy = false;
18498 }
18499 var chainAll = this.__chain__,
18500 isHybrid = !!this.__actions__.length,
18501 isUnwrapped = retUnwrapped && !chainAll,
18502 onlyLazy = isLazy && !isHybrid;
18503
18504 if (!retUnwrapped && useLazy) {
18505 value = onlyLazy ? value : new LazyWrapper(this);
18506 var result = func.apply(value, args);
18507 result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
18508 return new LodashWrapper(result, chainAll);
18509 }
18510 if (isUnwrapped && onlyLazy) {
18511 return func.apply(this, args);
18512 }
18513 result = this.thru(interceptor);
18514 return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
18515 };
18516 });
18517
18518 // Add `Array` methods to `lodash.prototype`.
18519 arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
18520 var func = arrayProto[methodName],
18521 chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
18522 retUnwrapped = /^(?:pop|shift)$/.test(methodName);
18523
18524 lodash.prototype[methodName] = function() {
18525 var args = arguments;
18526 if (retUnwrapped && !this.__chain__) {
18527 var value = this.value();
18528 return func.apply(isArray(value) ? value : [], args);
18529 }
18530 return this[chainName](function(value) {
18531 return func.apply(isArray(value) ? value : [], args);
18532 });
18533 };
18534 });
18535
18536 // Map minified method names to their real names.
18537 baseForOwn(LazyWrapper.prototype, function(func, methodName) {
18538 var lodashFunc = lodash[methodName];
18539 if (lodashFunc) {
18540 var key = (lodashFunc.name + ''),
18541 names = realNames[key] || (realNames[key] = []);
18542
18543 names.push({ 'name': methodName, 'func': lodashFunc });
18544 }
18545 });
18546
18547 realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
18548 'name': 'wrapper',
18549 'func': undefined
18550 }];
18551
18552 // Add methods to `LazyWrapper`.
18553 LazyWrapper.prototype.clone = lazyClone;
18554 LazyWrapper.prototype.reverse = lazyReverse;
18555 LazyWrapper.prototype.value = lazyValue;
18556
18557 // Add chain sequence methods to the `lodash` wrapper.
18558 lodash.prototype.at = wrapperAt;
18559 lodash.prototype.chain = wrapperChain;
18560 lodash.prototype.commit = wrapperCommit;
18561 lodash.prototype.next = wrapperNext;
18562 lodash.prototype.plant = wrapperPlant;
18563 lodash.prototype.reverse = wrapperReverse;
18564 lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
18565
18566 // Add lazy aliases.
18567 lodash.prototype.first = lodash.prototype.head;
18568
18569 if (symIterator) {
18570 lodash.prototype[symIterator] = wrapperToIterator;
18571 }
18572 return lodash;
18573 });
18574
18575 /*--------------------------------------------------------------------------*/
18576
18577 // Export lodash.
18578 var _ = runInContext();
18579
18580 // Some AMD build optimizers, like r.js, check for condition patterns like:
18581 if (true) {
18582 // Expose Lodash on the global object to prevent errors when Lodash is
18583 // loaded by a script tag in the presence of an AMD loader.
18584 // See http://requirejs.org/docs/errors.html#mismatch for more details.
18585 // Use `_.noConflict` to remove Lodash from the global object.
18586 root._ = _;
18587
18588 // Define as an anonymous module so, through path mapping, it can be
18589 // referenced as the "underscore" module.
18590 !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
18591 return _;
18592 }).call(exports, __webpack_require__, exports, module),
18593 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
18594 }
18595 // Check for `exports` after `define` in case a build optimizer adds it.
18596 else {}
18597}.call(this));
18598
18599/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("c8ba"), __webpack_require__("62e4")(module)))
18600
18601/***/ }),
18602
18603/***/ "2f21":
18604/***/ (function(module, exports, __webpack_require__) {
18605
18606"use strict";
18607
18608var fails = __webpack_require__("79e5");
18609
18610module.exports = function (method, arg) {
18611 return !!method && fails(function () {
18612 // eslint-disable-next-line no-useless-call
18613 arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
18614 });
18615};
18616
18617
18618/***/ }),
18619
18620/***/ "3008":
18621/***/ (function(module, exports, __webpack_require__) {
18622
18623// extracted by mini-css-extract-plugin
18624
18625/***/ }),
18626
18627/***/ "3078":
18628/***/ (function(module, exports, __webpack_require__) {
18629
18630// extracted by mini-css-extract-plugin
18631
18632/***/ }),
18633
18634/***/ "30f1":
18635/***/ (function(module, exports, __webpack_require__) {
18636
18637"use strict";
18638
18639var LIBRARY = __webpack_require__("b8e3");
18640var $export = __webpack_require__("63b6");
18641var redefine = __webpack_require__("9138");
18642var hide = __webpack_require__("35e8");
18643var Iterators = __webpack_require__("481b");
18644var $iterCreate = __webpack_require__("8f60");
18645var setToStringTag = __webpack_require__("45f2");
18646var getPrototypeOf = __webpack_require__("53e2");
18647var ITERATOR = __webpack_require__("5168")('iterator');
18648var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
18649var FF_ITERATOR = '@@iterator';
18650var KEYS = 'keys';
18651var VALUES = 'values';
18652
18653var returnThis = function () { return this; };
18654
18655module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
18656 $iterCreate(Constructor, NAME, next);
18657 var getMethod = function (kind) {
18658 if (!BUGGY && kind in proto) return proto[kind];
18659 switch (kind) {
18660 case KEYS: return function keys() { return new Constructor(this, kind); };
18661 case VALUES: return function values() { return new Constructor(this, kind); };
18662 } return function entries() { return new Constructor(this, kind); };
18663 };
18664 var TAG = NAME + ' Iterator';
18665 var DEF_VALUES = DEFAULT == VALUES;
18666 var VALUES_BUG = false;
18667 var proto = Base.prototype;
18668 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
18669 var $default = $native || getMethod(DEFAULT);
18670 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
18671 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
18672 var methods, key, IteratorPrototype;
18673 // Fix native
18674 if ($anyNative) {
18675 IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
18676 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
18677 // Set @@toStringTag to native iterators
18678 setToStringTag(IteratorPrototype, TAG, true);
18679 // fix for some old engines
18680 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
18681 }
18682 }
18683 // fix Array#{values, @@iterator}.name in V8 / FF
18684 if (DEF_VALUES && $native && $native.name !== VALUES) {
18685 VALUES_BUG = true;
18686 $default = function values() { return $native.call(this); };
18687 }
18688 // Define iterator
18689 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
18690 hide(proto, ITERATOR, $default);
18691 }
18692 // Plug for library
18693 Iterators[NAME] = $default;
18694 Iterators[TAG] = returnThis;
18695 if (DEFAULT) {
18696 methods = {
18697 values: DEF_VALUES ? $default : getMethod(VALUES),
18698 keys: IS_SET ? $default : getMethod(KEYS),
18699 entries: $entries
18700 };
18701 if (FORCED) for (key in methods) {
18702 if (!(key in proto)) redefine(proto, key, methods[key]);
18703 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
18704 }
18705 return methods;
18706};
18707
18708
18709/***/ }),
18710
18711/***/ "3200":
18712/***/ (function(module, exports, __webpack_require__) {
18713
18714// extracted by mini-css-extract-plugin
18715
18716/***/ }),
18717
18718/***/ "327b":
18719/***/ (function(module, __webpack_exports__, __webpack_require__) {
18720
18721"use strict";
18722/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadio_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7629");
18723/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadio_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadio_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18724/* unused harmony reexport * */
18725 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadio_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
18726
18727/***/ }),
18728
18729/***/ "32a6":
18730/***/ (function(module, exports, __webpack_require__) {
18731
18732// 19.1.2.14 Object.keys(O)
18733var toObject = __webpack_require__("241e");
18734var $keys = __webpack_require__("c3a1");
18735
18736__webpack_require__("ce7e")('keys', function () {
18737 return function keys(it) {
18738 return $keys(toObject(it));
18739 };
18740});
18741
18742
18743/***/ }),
18744
18745/***/ "32e9":
18746/***/ (function(module, exports, __webpack_require__) {
18747
18748var dP = __webpack_require__("86cc");
18749var createDesc = __webpack_require__("4630");
18750module.exports = __webpack_require__("9e1e") ? function (object, key, value) {
18751 return dP.f(object, key, createDesc(1, value));
18752} : function (object, key, value) {
18753 object[key] = value;
18754 return object;
18755};
18756
18757
18758/***/ }),
18759
18760/***/ "32fc":
18761/***/ (function(module, exports, __webpack_require__) {
18762
18763var document = __webpack_require__("e53d").document;
18764module.exports = document && document.documentElement;
18765
18766
18767/***/ }),
18768
18769/***/ "335c":
18770/***/ (function(module, exports, __webpack_require__) {
18771
18772// fallback for non-array-like ES3 and non-enumerable old V8 strings
18773var cof = __webpack_require__("6b4c");
18774// eslint-disable-next-line no-prototype-builtins
18775module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
18776 return cof(it) == 'String' ? it.split('') : Object(it);
18777};
18778
18779
18780/***/ }),
18781
18782/***/ "337e":
18783/***/ (function(module, exports, __webpack_require__) {
18784
18785// extracted by mini-css-extract-plugin
18786
18787/***/ }),
18788
18789/***/ "355d":
18790/***/ (function(module, exports) {
18791
18792exports.f = {}.propertyIsEnumerable;
18793
18794
18795/***/ }),
18796
18797/***/ "35e8":
18798/***/ (function(module, exports, __webpack_require__) {
18799
18800var dP = __webpack_require__("d9f6");
18801var createDesc = __webpack_require__("aebd");
18802module.exports = __webpack_require__("8e60") ? function (object, key, value) {
18803 return dP.f(object, key, createDesc(1, value));
18804} : function (object, key, value) {
18805 object[key] = value;
18806 return object;
18807};
18808
18809
18810/***/ }),
18811
18812/***/ "36c3":
18813/***/ (function(module, exports, __webpack_require__) {
18814
18815// to indexed object, toObject with fallback for non-array-like ES3 strings
18816var IObject = __webpack_require__("335c");
18817var defined = __webpack_require__("25eb");
18818module.exports = function (it) {
18819 return IObject(defined(it));
18820};
18821
18822
18823/***/ }),
18824
18825/***/ "3702":
18826/***/ (function(module, exports, __webpack_require__) {
18827
18828// check on default Array iterator
18829var Iterators = __webpack_require__("481b");
18830var ITERATOR = __webpack_require__("5168")('iterator');
18831var ArrayProto = Array.prototype;
18832
18833module.exports = function (it) {
18834 return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
18835};
18836
18837
18838/***/ }),
18839
18840/***/ "3846":
18841/***/ (function(module, exports, __webpack_require__) {
18842
18843// 21.2.5.3 get RegExp.prototype.flags()
18844if (__webpack_require__("9e1e") && /./g.flags != 'g') __webpack_require__("86cc").f(RegExp.prototype, 'flags', {
18845 configurable: true,
18846 get: __webpack_require__("0bfb")
18847});
18848
18849
18850/***/ }),
18851
18852/***/ "38c1":
18853/***/ (function(module, __webpack_exports__, __webpack_require__) {
18854
18855"use strict";
18856/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardBox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f2f3");
18857/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardBox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardBox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18858/* unused harmony reexport * */
18859 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardBox_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
18860
18861/***/ }),
18862
18863/***/ "38fd":
18864/***/ (function(module, exports, __webpack_require__) {
18865
18866// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
18867var has = __webpack_require__("69a8");
18868var toObject = __webpack_require__("4bf8");
18869var IE_PROTO = __webpack_require__("613b")('IE_PROTO');
18870var ObjectProto = Object.prototype;
18871
18872module.exports = Object.getPrototypeOf || function (O) {
18873 O = toObject(O);
18874 if (has(O, IE_PROTO)) return O[IE_PROTO];
18875 if (typeof O.constructor == 'function' && O instanceof O.constructor) {
18876 return O.constructor.prototype;
18877 } return O instanceof Object ? ObjectProto : null;
18878};
18879
18880
18881/***/ }),
18882
18883/***/ "3a1c":
18884/***/ (function(module, __webpack_exports__, __webpack_require__) {
18885
18886"use strict";
18887/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTag_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("57f1");
18888/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTag_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTag_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18889/* unused harmony reexport * */
18890 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTag_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
18891
18892/***/ }),
18893
18894/***/ "3a38":
18895/***/ (function(module, exports) {
18896
18897// 7.1.4 ToInteger
18898var ceil = Math.ceil;
18899var floor = Math.floor;
18900module.exports = function (it) {
18901 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
18902};
18903
18904
18905/***/ }),
18906
18907/***/ "3b2b":
18908/***/ (function(module, exports, __webpack_require__) {
18909
18910var global = __webpack_require__("7726");
18911var inheritIfRequired = __webpack_require__("5dbc");
18912var dP = __webpack_require__("86cc").f;
18913var gOPN = __webpack_require__("9093").f;
18914var isRegExp = __webpack_require__("aae3");
18915var $flags = __webpack_require__("0bfb");
18916var $RegExp = global.RegExp;
18917var Base = $RegExp;
18918var proto = $RegExp.prototype;
18919var re1 = /a/g;
18920var re2 = /a/g;
18921// "new" creates a new object, old webkit buggy here
18922var CORRECT_NEW = new $RegExp(re1) !== re1;
18923
18924if (__webpack_require__("9e1e") && (!CORRECT_NEW || __webpack_require__("79e5")(function () {
18925 re2[__webpack_require__("2b4c")('match')] = false;
18926 // RegExp constructor can alter flags and IsRegExp works correct with @@match
18927 return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
18928}))) {
18929 $RegExp = function RegExp(p, f) {
18930 var tiRE = this instanceof $RegExp;
18931 var piRE = isRegExp(p);
18932 var fiU = f === undefined;
18933 return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
18934 : inheritIfRequired(CORRECT_NEW
18935 ? new Base(piRE && !fiU ? p.source : p, f)
18936 : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
18937 , tiRE ? this : proto, $RegExp);
18938 };
18939 var proxy = function (key) {
18940 key in $RegExp || dP($RegExp, key, {
18941 configurable: true,
18942 get: function () { return Base[key]; },
18943 set: function (it) { Base[key] = it; }
18944 });
18945 };
18946 for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
18947 proto.constructor = $RegExp;
18948 $RegExp.prototype = proto;
18949 __webpack_require__("2aba")(global, 'RegExp', $RegExp);
18950}
18951
18952__webpack_require__("7a56")('RegExp');
18953
18954
18955/***/ }),
18956
18957/***/ "3c82":
18958/***/ (function(module, exports, __webpack_require__) {
18959
18960// extracted by mini-css-extract-plugin
18961
18962/***/ }),
18963
18964/***/ "3cde":
18965/***/ (function(module, exports, __webpack_require__) {
18966
18967// extracted by mini-css-extract-plugin
18968
18969/***/ }),
18970
18971/***/ "3d16":
18972/***/ (function(module, __webpack_exports__, __webpack_require__) {
18973
18974"use strict";
18975/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPaginationList_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ee07");
18976/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPaginationList_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPaginationList_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18977/* unused harmony reexport * */
18978 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPaginationList_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
18979
18980/***/ }),
18981
18982/***/ "3d32":
18983/***/ (function(module, __webpack_exports__, __webpack_require__) {
18984
18985"use strict";
18986/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShComment_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("80c7");
18987/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShComment_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShComment_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18988/* unused harmony reexport * */
18989 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShComment_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
18990
18991/***/ }),
18992
18993/***/ "3e1f":
18994/***/ (function(module, __webpack_exports__, __webpack_require__) {
18995
18996"use strict";
18997/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionBarLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("faa5");
18998/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionBarLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionBarLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
18999/* unused harmony reexport * */
19000 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionBarLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
19001
19002/***/ }),
19003
19004/***/ "3f71":
19005/***/ (function(module, exports, __webpack_require__) {
19006
19007// extracted by mini-css-extract-plugin
19008
19009/***/ }),
19010
19011/***/ "40c3":
19012/***/ (function(module, exports, __webpack_require__) {
19013
19014// getting tag from 19.1.3.6 Object.prototype.toString()
19015var cof = __webpack_require__("6b4c");
19016var TAG = __webpack_require__("5168")('toStringTag');
19017// ES3 wrong here
19018var ARG = cof(function () { return arguments; }()) == 'Arguments';
19019
19020// fallback for IE11 Script Access Denied error
19021var tryGet = function (it, key) {
19022 try {
19023 return it[key];
19024 } catch (e) { /* empty */ }
19025};
19026
19027module.exports = function (it) {
19028 var O, T, B;
19029 return it === undefined ? 'Undefined' : it === null ? 'Null'
19030 // @@toStringTag case
19031 : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
19032 // builtinTag case
19033 : ARG ? cof(O)
19034 // ES3 arguments fallback
19035 : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
19036};
19037
19038
19039/***/ }),
19040
19041/***/ "41a0":
19042/***/ (function(module, exports, __webpack_require__) {
19043
19044"use strict";
19045
19046var create = __webpack_require__("2aeb");
19047var descriptor = __webpack_require__("4630");
19048var setToStringTag = __webpack_require__("7f20");
19049var IteratorPrototype = {};
19050
19051// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
19052__webpack_require__("32e9")(IteratorPrototype, __webpack_require__("2b4c")('iterator'), function () { return this; });
19053
19054module.exports = function (Constructor, NAME, next) {
19055 Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
19056 setToStringTag(Constructor, NAME + ' Iterator');
19057};
19058
19059
19060/***/ }),
19061
19062/***/ "432e":
19063/***/ (function(module, exports, __webpack_require__) {
19064
19065// extracted by mini-css-extract-plugin
19066
19067/***/ }),
19068
19069/***/ "454f":
19070/***/ (function(module, exports, __webpack_require__) {
19071
19072__webpack_require__("46a7");
19073var $Object = __webpack_require__("584a").Object;
19074module.exports = function defineProperty(it, key, desc) {
19075 return $Object.defineProperty(it, key, desc);
19076};
19077
19078
19079/***/ }),
19080
19081/***/ "4588":
19082/***/ (function(module, exports) {
19083
19084// 7.1.4 ToInteger
19085var ceil = Math.ceil;
19086var floor = Math.floor;
19087module.exports = function (it) {
19088 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
19089};
19090
19091
19092/***/ }),
19093
19094/***/ "45f2":
19095/***/ (function(module, exports, __webpack_require__) {
19096
19097var def = __webpack_require__("d9f6").f;
19098var has = __webpack_require__("07e3");
19099var TAG = __webpack_require__("5168")('toStringTag');
19100
19101module.exports = function (it, tag, stat) {
19102 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
19103};
19104
19105
19106/***/ }),
19107
19108/***/ "4630":
19109/***/ (function(module, exports) {
19110
19111module.exports = function (bitmap, value) {
19112 return {
19113 enumerable: !(bitmap & 1),
19114 configurable: !(bitmap & 2),
19115 writable: !(bitmap & 4),
19116 value: value
19117 };
19118};
19119
19120
19121/***/ }),
19122
19123/***/ "4638":
19124/***/ (function(module, __webpack_exports__, __webpack_require__) {
19125
19126"use strict";
19127/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShHistory_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3200");
19128/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShHistory_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShHistory_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
19129/* unused harmony reexport * */
19130 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShHistory_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
19131
19132/***/ }),
19133
19134/***/ "469f":
19135/***/ (function(module, exports, __webpack_require__) {
19136
19137__webpack_require__("6c1c");
19138__webpack_require__("1654");
19139module.exports = __webpack_require__("7d7b");
19140
19141
19142/***/ }),
19143
19144/***/ "46a7":
19145/***/ (function(module, exports, __webpack_require__) {
19146
19147var $export = __webpack_require__("63b6");
19148// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
19149$export($export.S + $export.F * !__webpack_require__("8e60"), 'Object', { defineProperty: __webpack_require__("d9f6").f });
19150
19151
19152/***/ }),
19153
19154/***/ "47ee":
19155/***/ (function(module, exports, __webpack_require__) {
19156
19157// all enumerable object keys, includes symbols
19158var getKeys = __webpack_require__("c3a1");
19159var gOPS = __webpack_require__("9aa9");
19160var pIE = __webpack_require__("355d");
19161module.exports = function (it) {
19162 var result = getKeys(it);
19163 var getSymbols = gOPS.f;
19164 if (getSymbols) {
19165 var symbols = getSymbols(it);
19166 var isEnum = pIE.f;
19167 var i = 0;
19168 var key;
19169 while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
19170 } return result;
19171};
19172
19173
19174/***/ }),
19175
19176/***/ "481b":
19177/***/ (function(module, exports) {
19178
19179module.exports = {};
19180
19181
19182/***/ }),
19183
19184/***/ "4aa6":
19185/***/ (function(module, exports, __webpack_require__) {
19186
19187module.exports = __webpack_require__("dc62");
19188
19189/***/ }),
19190
19191/***/ "4bf8":
19192/***/ (function(module, exports, __webpack_require__) {
19193
19194// 7.1.13 ToObject(argument)
19195var defined = __webpack_require__("be13");
19196module.exports = function (it) {
19197 return Object(defined(it));
19198};
19199
19200
19201/***/ }),
19202
19203/***/ "4d16":
19204/***/ (function(module, exports, __webpack_require__) {
19205
19206module.exports = __webpack_require__("25b0");
19207
19208/***/ }),
19209
19210/***/ "4ee1":
19211/***/ (function(module, exports, __webpack_require__) {
19212
19213var ITERATOR = __webpack_require__("5168")('iterator');
19214var SAFE_CLOSING = false;
19215
19216try {
19217 var riter = [7][ITERATOR]();
19218 riter['return'] = function () { SAFE_CLOSING = true; };
19219 // eslint-disable-next-line no-throw-literal
19220 Array.from(riter, function () { throw 2; });
19221} catch (e) { /* empty */ }
19222
19223module.exports = function (exec, skipClosing) {
19224 if (!skipClosing && !SAFE_CLOSING) return false;
19225 var safe = false;
19226 try {
19227 var arr = [7];
19228 var iter = arr[ITERATOR]();
19229 iter.next = function () { return { done: safe = true }; };
19230 arr[ITERATOR] = function () { return iter; };
19231 exec(arr);
19232 } catch (e) { /* empty */ }
19233 return safe;
19234};
19235
19236
19237/***/ }),
19238
19239/***/ "506b":
19240/***/ (function(module, __webpack_exports__, __webpack_require__) {
19241
19242"use strict";
19243/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatisticsItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d26d");
19244/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatisticsItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatisticsItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
19245/* unused harmony reexport * */
19246 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatisticsItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
19247
19248/***/ }),
19249
19250/***/ "50ed":
19251/***/ (function(module, exports) {
19252
19253module.exports = function (done, value) {
19254 return { value: value, done: !!done };
19255};
19256
19257
19258/***/ }),
19259
19260/***/ "5168":
19261/***/ (function(module, exports, __webpack_require__) {
19262
19263var store = __webpack_require__("dbdb")('wks');
19264var uid = __webpack_require__("62a0");
19265var Symbol = __webpack_require__("e53d").Symbol;
19266var USE_SYMBOL = typeof Symbol == 'function';
19267
19268var $exports = module.exports = function (name) {
19269 return store[name] || (store[name] =
19270 USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
19271};
19272
19273$exports.store = store;
19274
19275
19276/***/ }),
19277
19278/***/ "5176":
19279/***/ (function(module, exports, __webpack_require__) {
19280
19281module.exports = __webpack_require__("51b6");
19282
19283/***/ }),
19284
19285/***/ "51b6":
19286/***/ (function(module, exports, __webpack_require__) {
19287
19288__webpack_require__("a3c3");
19289module.exports = __webpack_require__("584a").Object.assign;
19290
19291
19292/***/ }),
19293
19294/***/ "52a7":
19295/***/ (function(module, exports) {
19296
19297exports.f = {}.propertyIsEnumerable;
19298
19299
19300/***/ }),
19301
19302/***/ "5317":
19303/***/ (function(module, __webpack_exports__, __webpack_require__) {
19304
19305"use strict";
19306/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdown_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("243e");
19307/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdown_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdown_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
19308/* unused harmony reexport * */
19309 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdown_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
19310
19311/***/ }),
19312
19313/***/ "53e2":
19314/***/ (function(module, exports, __webpack_require__) {
19315
19316// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
19317var has = __webpack_require__("07e3");
19318var toObject = __webpack_require__("241e");
19319var IE_PROTO = __webpack_require__("5559")('IE_PROTO');
19320var ObjectProto = Object.prototype;
19321
19322module.exports = Object.getPrototypeOf || function (O) {
19323 O = toObject(O);
19324 if (has(O, IE_PROTO)) return O[IE_PROTO];
19325 if (typeof O.constructor == 'function' && O instanceof O.constructor) {
19326 return O.constructor.prototype;
19327 } return O instanceof Object ? ObjectProto : null;
19328};
19329
19330
19331/***/ }),
19332
19333/***/ "53fe":
19334/***/ (function(module, exports, __webpack_require__) {
19335
19336var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**!
19337 * Sortable
19338 * @author RubaXa <trash@rubaxa.org>
19339 * @license MIT
19340 */
19341
19342(function sortableModule(factory) {
19343 "use strict";
19344
19345 if (true) {
19346 !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
19347 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
19348 (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
19349 __WEBPACK_AMD_DEFINE_FACTORY__),
19350 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
19351 }
19352 else {}
19353})(function sortableFactory() {
19354 "use strict";
19355
19356 if (typeof window === "undefined" || !window.document) {
19357 return function sortableError() {
19358 throw new Error("Sortable.js requires a window with a document");
19359 };
19360 }
19361
19362 var dragEl,
19363 parentEl,
19364 ghostEl,
19365 cloneEl,
19366 rootEl,
19367 nextEl,
19368 lastDownEl,
19369
19370 scrollEl,
19371 scrollParentEl,
19372 scrollCustomFn,
19373
19374 lastEl,
19375 lastCSS,
19376 lastParentCSS,
19377
19378 oldIndex,
19379 newIndex,
19380
19381 activeGroup,
19382 putSortable,
19383
19384 autoScroll = {},
19385
19386 tapEvt,
19387 touchEvt,
19388
19389 moved,
19390
19391 /** @const */
19392 R_SPACE = /\s+/g,
19393 R_FLOAT = /left|right|inline/,
19394
19395 expando = 'Sortable' + (new Date).getTime(),
19396
19397 win = window,
19398 document = win.document,
19399 parseInt = win.parseInt,
19400 setTimeout = win.setTimeout,
19401
19402 $ = win.jQuery || win.Zepto,
19403 Polymer = win.Polymer,
19404
19405 captureMode = false,
19406 passiveMode = false,
19407
19408 supportDraggable = ('draggable' in document.createElement('div')),
19409 supportCssPointerEvents = (function (el) {
19410 // false when IE11
19411 if (!!navigator.userAgent.match(/(?:Trident.*rv[ :]?11\.|msie)/i)) {
19412 return false;
19413 }
19414 el = document.createElement('x');
19415 el.style.cssText = 'pointer-events:auto';
19416 return el.style.pointerEvents === 'auto';
19417 })(),
19418
19419 _silent = false,
19420
19421 abs = Math.abs,
19422 min = Math.min,
19423
19424 savedInputChecked = [],
19425 touchDragOverListeners = [],
19426
19427 _autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {
19428 // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521
19429 if (rootEl && options.scroll) {
19430 var _this = rootEl[expando],
19431 el,
19432 rect,
19433 sens = options.scrollSensitivity,
19434 speed = options.scrollSpeed,
19435
19436 x = evt.clientX,
19437 y = evt.clientY,
19438
19439 winWidth = window.innerWidth,
19440 winHeight = window.innerHeight,
19441
19442 vx,
19443 vy,
19444
19445 scrollOffsetX,
19446 scrollOffsetY
19447 ;
19448
19449 // Delect scrollEl
19450 if (scrollParentEl !== rootEl) {
19451 scrollEl = options.scroll;
19452 scrollParentEl = rootEl;
19453 scrollCustomFn = options.scrollFn;
19454
19455 if (scrollEl === true) {
19456 scrollEl = rootEl;
19457
19458 do {
19459 if ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||
19460 (scrollEl.offsetHeight < scrollEl.scrollHeight)
19461 ) {
19462 break;
19463 }
19464 /* jshint boss:true */
19465 } while (scrollEl = scrollEl.parentNode);
19466 }
19467 }
19468
19469 if (scrollEl) {
19470 el = scrollEl;
19471 rect = scrollEl.getBoundingClientRect();
19472 vx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);
19473 vy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);
19474 }
19475
19476
19477 if (!(vx || vy)) {
19478 vx = (winWidth - x <= sens) - (x <= sens);
19479 vy = (winHeight - y <= sens) - (y <= sens);
19480
19481 /* jshint expr:true */
19482 (vx || vy) && (el = win);
19483 }
19484
19485
19486 if (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {
19487 autoScroll.el = el;
19488 autoScroll.vx = vx;
19489 autoScroll.vy = vy;
19490
19491 clearInterval(autoScroll.pid);
19492
19493 if (el) {
19494 autoScroll.pid = setInterval(function () {
19495 scrollOffsetY = vy ? vy * speed : 0;
19496 scrollOffsetX = vx ? vx * speed : 0;
19497
19498 if ('function' === typeof(scrollCustomFn)) {
19499 return scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt);
19500 }
19501
19502 if (el === win) {
19503 win.scrollTo(win.pageXOffset + scrollOffsetX, win.pageYOffset + scrollOffsetY);
19504 } else {
19505 el.scrollTop += scrollOffsetY;
19506 el.scrollLeft += scrollOffsetX;
19507 }
19508 }, 24);
19509 }
19510 }
19511 }
19512 }, 30),
19513
19514 _prepareGroup = function (options) {
19515 function toFn(value, pull) {
19516 if (value === void 0 || value === true) {
19517 value = group.name;
19518 }
19519
19520 if (typeof value === 'function') {
19521 return value;
19522 } else {
19523 return function (to, from) {
19524 var fromGroup = from.options.group.name;
19525
19526 return pull
19527 ? value
19528 : value && (value.join
19529 ? value.indexOf(fromGroup) > -1
19530 : (fromGroup == value)
19531 );
19532 };
19533 }
19534 }
19535
19536 var group = {};
19537 var originalGroup = options.group;
19538
19539 if (!originalGroup || typeof originalGroup != 'object') {
19540 originalGroup = {name: originalGroup};
19541 }
19542
19543 group.name = originalGroup.name;
19544 group.checkPull = toFn(originalGroup.pull, true);
19545 group.checkPut = toFn(originalGroup.put);
19546 group.revertClone = originalGroup.revertClone;
19547
19548 options.group = group;
19549 }
19550 ;
19551
19552 // Detect support a passive mode
19553 try {
19554 window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
19555 get: function () {
19556 // `false`, because everything starts to work incorrectly and instead of d'n'd,
19557 // begins the page has scrolled.
19558 passiveMode = false;
19559 captureMode = {
19560 capture: false,
19561 passive: passiveMode
19562 };
19563 }
19564 }));
19565 } catch (err) {}
19566
19567 /**
19568 * @class Sortable
19569 * @param {HTMLElement} el
19570 * @param {Object} [options]
19571 */
19572 function Sortable(el, options) {
19573 if (!(el && el.nodeType && el.nodeType === 1)) {
19574 throw 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);
19575 }
19576
19577 this.el = el; // root element
19578 this.options = options = _extend({}, options);
19579
19580
19581 // Export instance
19582 el[expando] = this;
19583
19584 // Default options
19585 var defaults = {
19586 group: Math.random(),
19587 sort: true,
19588 disabled: false,
19589 store: null,
19590 handle: null,
19591 scroll: true,
19592 scrollSensitivity: 30,
19593 scrollSpeed: 10,
19594 draggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',
19595 ghostClass: 'sortable-ghost',
19596 chosenClass: 'sortable-chosen',
19597 dragClass: 'sortable-drag',
19598 ignore: 'a, img',
19599 filter: null,
19600 preventOnFilter: true,
19601 animation: 0,
19602 setData: function (dataTransfer, dragEl) {
19603 dataTransfer.setData('Text', dragEl.textContent);
19604 },
19605 dropBubble: false,
19606 dragoverBubble: false,
19607 dataIdAttr: 'data-id',
19608 delay: 0,
19609 forceFallback: false,
19610 fallbackClass: 'sortable-fallback',
19611 fallbackOnBody: false,
19612 fallbackTolerance: 0,
19613 fallbackOffset: {x: 0, y: 0},
19614 supportPointer: Sortable.supportPointer !== false
19615 };
19616
19617
19618 // Set default options
19619 for (var name in defaults) {
19620 !(name in options) && (options[name] = defaults[name]);
19621 }
19622
19623 _prepareGroup(options);
19624
19625 // Bind all private methods
19626 for (var fn in this) {
19627 if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {
19628 this[fn] = this[fn].bind(this);
19629 }
19630 }
19631
19632 // Setup drag mode
19633 this.nativeDraggable = options.forceFallback ? false : supportDraggable;
19634
19635 // Bind events
19636 _on(el, 'mousedown', this._onTapStart);
19637 _on(el, 'touchstart', this._onTapStart);
19638 options.supportPointer && _on(el, 'pointerdown', this._onTapStart);
19639
19640 if (this.nativeDraggable) {
19641 _on(el, 'dragover', this);
19642 _on(el, 'dragenter', this);
19643 }
19644
19645 touchDragOverListeners.push(this._onDragOver);
19646
19647 // Restore sorting
19648 options.store && this.sort(options.store.get(this));
19649 }
19650
19651
19652 Sortable.prototype = /** @lends Sortable.prototype */ {
19653 constructor: Sortable,
19654
19655 _onTapStart: function (/** Event|TouchEvent */evt) {
19656 var _this = this,
19657 el = this.el,
19658 options = this.options,
19659 preventOnFilter = options.preventOnFilter,
19660 type = evt.type,
19661 touch = evt.touches && evt.touches[0],
19662 target = (touch || evt).target,
19663 originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0]) || target,
19664 filter = options.filter,
19665 startIndex;
19666
19667 _saveInputCheckedState(el);
19668
19669
19670 // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.
19671 if (dragEl) {
19672 return;
19673 }
19674
19675 if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {
19676 return; // only left button or enabled
19677 }
19678
19679 // cancel dnd if original target is content editable
19680 if (originalTarget.isContentEditable) {
19681 return;
19682 }
19683
19684 target = _closest(target, options.draggable, el);
19685
19686 if (!target) {
19687 return;
19688 }
19689
19690 if (lastDownEl === target) {
19691 // Ignoring duplicate `down`
19692 return;
19693 }
19694
19695 // Get the index of the dragged element within its parent
19696 startIndex = _index(target, options.draggable);
19697
19698 // Check filter
19699 if (typeof filter === 'function') {
19700 if (filter.call(this, evt, target, this)) {
19701 _dispatchEvent(_this, originalTarget, 'filter', target, el, el, startIndex);
19702 preventOnFilter && evt.preventDefault();
19703 return; // cancel dnd
19704 }
19705 }
19706 else if (filter) {
19707 filter = filter.split(',').some(function (criteria) {
19708 criteria = _closest(originalTarget, criteria.trim(), el);
19709
19710 if (criteria) {
19711 _dispatchEvent(_this, criteria, 'filter', target, el, el, startIndex);
19712 return true;
19713 }
19714 });
19715
19716 if (filter) {
19717 preventOnFilter && evt.preventDefault();
19718 return; // cancel dnd
19719 }
19720 }
19721
19722 if (options.handle && !_closest(originalTarget, options.handle, el)) {
19723 return;
19724 }
19725
19726 // Prepare `dragstart`
19727 this._prepareDragStart(evt, touch, target, startIndex);
19728 },
19729
19730 _prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex) {
19731 var _this = this,
19732 el = _this.el,
19733 options = _this.options,
19734 ownerDocument = el.ownerDocument,
19735 dragStartFn;
19736
19737 if (target && !dragEl && (target.parentNode === el)) {
19738 tapEvt = evt;
19739
19740 rootEl = el;
19741 dragEl = target;
19742 parentEl = dragEl.parentNode;
19743 nextEl = dragEl.nextSibling;
19744 lastDownEl = target;
19745 activeGroup = options.group;
19746 oldIndex = startIndex;
19747
19748 this._lastX = (touch || evt).clientX;
19749 this._lastY = (touch || evt).clientY;
19750
19751 dragEl.style['will-change'] = 'all';
19752
19753 dragStartFn = function () {
19754 // Delayed drag has been triggered
19755 // we can re-enable the events: touchmove/mousemove
19756 _this._disableDelayedDrag();
19757
19758 // Make the element draggable
19759 dragEl.draggable = _this.nativeDraggable;
19760
19761 // Chosen item
19762 _toggleClass(dragEl, options.chosenClass, true);
19763
19764 // Bind the events: dragstart/dragend
19765 _this._triggerDragStart(evt, touch);
19766
19767 // Drag start event
19768 _dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, rootEl, oldIndex);
19769 };
19770
19771 // Disable "draggable"
19772 options.ignore.split(',').forEach(function (criteria) {
19773 _find(dragEl, criteria.trim(), _disableDraggable);
19774 });
19775
19776 _on(ownerDocument, 'mouseup', _this._onDrop);
19777 _on(ownerDocument, 'touchend', _this._onDrop);
19778 _on(ownerDocument, 'touchcancel', _this._onDrop);
19779 _on(ownerDocument, 'selectstart', _this);
19780 options.supportPointer && _on(ownerDocument, 'pointercancel', _this._onDrop);
19781
19782 if (options.delay) {
19783 // If the user moves the pointer or let go the click or touch
19784 // before the delay has been reached:
19785 // disable the delayed drag
19786 _on(ownerDocument, 'mouseup', _this._disableDelayedDrag);
19787 _on(ownerDocument, 'touchend', _this._disableDelayedDrag);
19788 _on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);
19789 _on(ownerDocument, 'mousemove', _this._disableDelayedDrag);
19790 _on(ownerDocument, 'touchmove', _this._disableDelayedDrag);
19791 options.supportPointer && _on(ownerDocument, 'pointermove', _this._disableDelayedDrag);
19792
19793 _this._dragStartTimer = setTimeout(dragStartFn, options.delay);
19794 } else {
19795 dragStartFn();
19796 }
19797
19798
19799 }
19800 },
19801
19802 _disableDelayedDrag: function () {
19803 var ownerDocument = this.el.ownerDocument;
19804
19805 clearTimeout(this._dragStartTimer);
19806 _off(ownerDocument, 'mouseup', this._disableDelayedDrag);
19807 _off(ownerDocument, 'touchend', this._disableDelayedDrag);
19808 _off(ownerDocument, 'touchcancel', this._disableDelayedDrag);
19809 _off(ownerDocument, 'mousemove', this._disableDelayedDrag);
19810 _off(ownerDocument, 'touchmove', this._disableDelayedDrag);
19811 _off(ownerDocument, 'pointermove', this._disableDelayedDrag);
19812 },
19813
19814 _triggerDragStart: function (/** Event */evt, /** Touch */touch) {
19815 touch = touch || (evt.pointerType == 'touch' ? evt : null);
19816
19817 if (touch) {
19818 // Touch device support
19819 tapEvt = {
19820 target: dragEl,
19821 clientX: touch.clientX,
19822 clientY: touch.clientY
19823 };
19824
19825 this._onDragStart(tapEvt, 'touch');
19826 }
19827 else if (!this.nativeDraggable) {
19828 this._onDragStart(tapEvt, true);
19829 }
19830 else {
19831 _on(dragEl, 'dragend', this);
19832 _on(rootEl, 'dragstart', this._onDragStart);
19833 }
19834
19835 try {
19836 if (document.selection) {
19837 // Timeout neccessary for IE9
19838 _nextTick(function () {
19839 document.selection.empty();
19840 });
19841 } else {
19842 window.getSelection().removeAllRanges();
19843 }
19844 } catch (err) {
19845 }
19846 },
19847
19848 _dragStarted: function () {
19849 if (rootEl && dragEl) {
19850 var options = this.options;
19851
19852 // Apply effect
19853 _toggleClass(dragEl, options.ghostClass, true);
19854 _toggleClass(dragEl, options.dragClass, false);
19855
19856 Sortable.active = this;
19857
19858 // Drag start event
19859 _dispatchEvent(this, rootEl, 'start', dragEl, rootEl, rootEl, oldIndex);
19860 } else {
19861 this._nulling();
19862 }
19863 },
19864
19865 _emulateDragOver: function () {
19866 if (touchEvt) {
19867 if (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY) {
19868 return;
19869 }
19870
19871 this._lastX = touchEvt.clientX;
19872 this._lastY = touchEvt.clientY;
19873
19874 if (!supportCssPointerEvents) {
19875 _css(ghostEl, 'display', 'none');
19876 }
19877
19878 var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
19879 var parent = target;
19880 var i = touchDragOverListeners.length;
19881
19882 if (target && target.shadowRoot) {
19883 target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
19884 parent = target;
19885 }
19886
19887 if (parent) {
19888 do {
19889 if (parent[expando]) {
19890 while (i--) {
19891 touchDragOverListeners[i]({
19892 clientX: touchEvt.clientX,
19893 clientY: touchEvt.clientY,
19894 target: target,
19895 rootEl: parent
19896 });
19897 }
19898
19899 break;
19900 }
19901
19902 target = parent; // store last element
19903 }
19904 /* jshint boss:true */
19905 while (parent = parent.parentNode);
19906 }
19907
19908 if (!supportCssPointerEvents) {
19909 _css(ghostEl, 'display', '');
19910 }
19911 }
19912 },
19913
19914
19915 _onTouchMove: function (/**TouchEvent*/evt) {
19916 if (tapEvt) {
19917 var options = this.options,
19918 fallbackTolerance = options.fallbackTolerance,
19919 fallbackOffset = options.fallbackOffset,
19920 touch = evt.touches ? evt.touches[0] : evt,
19921 dx = (touch.clientX - tapEvt.clientX) + fallbackOffset.x,
19922 dy = (touch.clientY - tapEvt.clientY) + fallbackOffset.y,
19923 translate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';
19924
19925 // only set the status to dragging, when we are actually dragging
19926 if (!Sortable.active) {
19927 if (fallbackTolerance &&
19928 min(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance
19929 ) {
19930 return;
19931 }
19932
19933 this._dragStarted();
19934 }
19935
19936 // as well as creating the ghost element on the document body
19937 this._appendGhost();
19938
19939 moved = true;
19940 touchEvt = touch;
19941
19942 _css(ghostEl, 'webkitTransform', translate3d);
19943 _css(ghostEl, 'mozTransform', translate3d);
19944 _css(ghostEl, 'msTransform', translate3d);
19945 _css(ghostEl, 'transform', translate3d);
19946
19947 evt.preventDefault();
19948 }
19949 },
19950
19951 _appendGhost: function () {
19952 if (!ghostEl) {
19953 var rect = dragEl.getBoundingClientRect(),
19954 css = _css(dragEl),
19955 options = this.options,
19956 ghostRect;
19957
19958 ghostEl = dragEl.cloneNode(true);
19959
19960 _toggleClass(ghostEl, options.ghostClass, false);
19961 _toggleClass(ghostEl, options.fallbackClass, true);
19962 _toggleClass(ghostEl, options.dragClass, true);
19963
19964 _css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));
19965 _css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));
19966 _css(ghostEl, 'width', rect.width);
19967 _css(ghostEl, 'height', rect.height);
19968 _css(ghostEl, 'opacity', '0.8');
19969 _css(ghostEl, 'position', 'fixed');
19970 _css(ghostEl, 'zIndex', '100000');
19971 _css(ghostEl, 'pointerEvents', 'none');
19972
19973 options.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl);
19974
19975 // Fixing dimensions.
19976 ghostRect = ghostEl.getBoundingClientRect();
19977 _css(ghostEl, 'width', rect.width * 2 - ghostRect.width);
19978 _css(ghostEl, 'height', rect.height * 2 - ghostRect.height);
19979 }
19980 },
19981
19982 _onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {
19983 var _this = this;
19984 var dataTransfer = evt.dataTransfer;
19985 var options = _this.options;
19986
19987 _this._offUpEvents();
19988
19989 if (activeGroup.checkPull(_this, _this, dragEl, evt)) {
19990 cloneEl = _clone(dragEl);
19991
19992 cloneEl.draggable = false;
19993 cloneEl.style['will-change'] = '';
19994
19995 _css(cloneEl, 'display', 'none');
19996 _toggleClass(cloneEl, _this.options.chosenClass, false);
19997
19998 // #1143: IFrame support workaround
19999 _this._cloneId = _nextTick(function () {
20000 rootEl.insertBefore(cloneEl, dragEl);
20001 _dispatchEvent(_this, rootEl, 'clone', dragEl);
20002 });
20003 }
20004
20005 _toggleClass(dragEl, options.dragClass, true);
20006
20007 if (useFallback) {
20008 if (useFallback === 'touch') {
20009 // Bind touch events
20010 _on(document, 'touchmove', _this._onTouchMove);
20011 _on(document, 'touchend', _this._onDrop);
20012 _on(document, 'touchcancel', _this._onDrop);
20013
20014 if (options.supportPointer) {
20015 _on(document, 'pointermove', _this._onTouchMove);
20016 _on(document, 'pointerup', _this._onDrop);
20017 }
20018 } else {
20019 // Old brwoser
20020 _on(document, 'mousemove', _this._onTouchMove);
20021 _on(document, 'mouseup', _this._onDrop);
20022 }
20023
20024 _this._loopId = setInterval(_this._emulateDragOver, 50);
20025 }
20026 else {
20027 if (dataTransfer) {
20028 dataTransfer.effectAllowed = 'move';
20029 options.setData && options.setData.call(_this, dataTransfer, dragEl);
20030 }
20031
20032 _on(document, 'drop', _this);
20033
20034 // #1143: Бывает элемент с IFrame внутри блокирует `drop`,
20035 // поэтому если вызвался `mouseover`, значит надо отменять весь d'n'd.
20036 // Breaking Chrome 62+
20037 // _on(document, 'mouseover', _this);
20038
20039 _this._dragStartId = _nextTick(_this._dragStarted);
20040 }
20041 },
20042
20043 _onDragOver: function (/**Event*/evt) {
20044 var el = this.el,
20045 target,
20046 dragRect,
20047 targetRect,
20048 revert,
20049 options = this.options,
20050 group = options.group,
20051 activeSortable = Sortable.active,
20052 isOwner = (activeGroup === group),
20053 isMovingBetweenSortable = false,
20054 canSort = options.sort;
20055
20056 if (evt.preventDefault !== void 0) {
20057 evt.preventDefault();
20058 !options.dragoverBubble && evt.stopPropagation();
20059 }
20060
20061 if (dragEl.animated) {
20062 return;
20063 }
20064
20065 moved = true;
20066
20067 if (activeSortable && !options.disabled &&
20068 (isOwner
20069 ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list
20070 : (
20071 putSortable === this ||
20072 (
20073 (activeSortable.lastPullMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&
20074 group.checkPut(this, activeSortable, dragEl, evt)
20075 )
20076 )
20077 ) &&
20078 (evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback
20079 ) {
20080 // Smart auto-scrolling
20081 _autoScroll(evt, options, this.el);
20082
20083 if (_silent) {
20084 return;
20085 }
20086
20087 target = _closest(evt.target, options.draggable, el);
20088 dragRect = dragEl.getBoundingClientRect();
20089
20090 if (putSortable !== this) {
20091 putSortable = this;
20092 isMovingBetweenSortable = true;
20093 }
20094
20095 if (revert) {
20096 _cloneHide(activeSortable, true);
20097 parentEl = rootEl; // actualization
20098
20099 if (cloneEl || nextEl) {
20100 rootEl.insertBefore(dragEl, cloneEl || nextEl);
20101 }
20102 else if (!canSort) {
20103 rootEl.appendChild(dragEl);
20104 }
20105
20106 return;
20107 }
20108
20109
20110 if ((el.children.length === 0) || (el.children[0] === ghostEl) ||
20111 (el === evt.target) && (_ghostIsLast(el, evt))
20112 ) {
20113 //assign target only if condition is true
20114 if (el.children.length !== 0 && el.children[0] !== ghostEl && el === evt.target) {
20115 target = el.lastElementChild;
20116 }
20117
20118 if (target) {
20119 if (target.animated) {
20120 return;
20121 }
20122
20123 targetRect = target.getBoundingClientRect();
20124 }
20125
20126 _cloneHide(activeSortable, isOwner);
20127
20128 if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt) !== false) {
20129 if (!dragEl.contains(el)) {
20130 el.appendChild(dragEl);
20131 parentEl = el; // actualization
20132 }
20133
20134 this._animate(dragRect, dragEl);
20135 target && this._animate(targetRect, target);
20136 }
20137 }
20138 else if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {
20139 if (lastEl !== target) {
20140 lastEl = target;
20141 lastCSS = _css(target);
20142 lastParentCSS = _css(target.parentNode);
20143 }
20144
20145 targetRect = target.getBoundingClientRect();
20146
20147 var width = targetRect.right - targetRect.left,
20148 height = targetRect.bottom - targetRect.top,
20149 floating = R_FLOAT.test(lastCSS.cssFloat + lastCSS.display)
20150 || (lastParentCSS.display == 'flex' && lastParentCSS['flex-direction'].indexOf('row') === 0),
20151 isWide = (target.offsetWidth > dragEl.offsetWidth),
20152 isLong = (target.offsetHeight > dragEl.offsetHeight),
20153 halfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,
20154 nextSibling = target.nextElementSibling,
20155 after = false
20156 ;
20157
20158 if (floating) {
20159 var elTop = dragEl.offsetTop,
20160 tgTop = target.offsetTop;
20161
20162 if (elTop === tgTop) {
20163 after = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;
20164 }
20165 else if (target.previousElementSibling === dragEl || dragEl.previousElementSibling === target) {
20166 after = (evt.clientY - targetRect.top) / height > 0.5;
20167 } else {
20168 after = tgTop > elTop;
20169 }
20170 } else if (!isMovingBetweenSortable) {
20171 after = (nextSibling !== dragEl) && !isLong || halfway && isLong;
20172 }
20173
20174 var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);
20175
20176 if (moveVector !== false) {
20177 if (moveVector === 1 || moveVector === -1) {
20178 after = (moveVector === 1);
20179 }
20180
20181 _silent = true;
20182 setTimeout(_unsilent, 30);
20183
20184 _cloneHide(activeSortable, isOwner);
20185
20186 if (!dragEl.contains(el)) {
20187 if (after && !nextSibling) {
20188 el.appendChild(dragEl);
20189 } else {
20190 target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
20191 }
20192 }
20193
20194 parentEl = dragEl.parentNode; // actualization
20195
20196 this._animate(dragRect, dragEl);
20197 this._animate(targetRect, target);
20198 }
20199 }
20200 }
20201 },
20202
20203 _animate: function (prevRect, target) {
20204 var ms = this.options.animation;
20205
20206 if (ms) {
20207 var currentRect = target.getBoundingClientRect();
20208
20209 if (prevRect.nodeType === 1) {
20210 prevRect = prevRect.getBoundingClientRect();
20211 }
20212
20213 _css(target, 'transition', 'none');
20214 _css(target, 'transform', 'translate3d('
20215 + (prevRect.left - currentRect.left) + 'px,'
20216 + (prevRect.top - currentRect.top) + 'px,0)'
20217 );
20218
20219 target.offsetWidth; // repaint
20220
20221 _css(target, 'transition', 'all ' + ms + 'ms');
20222 _css(target, 'transform', 'translate3d(0,0,0)');
20223
20224 clearTimeout(target.animated);
20225 target.animated = setTimeout(function () {
20226 _css(target, 'transition', '');
20227 _css(target, 'transform', '');
20228 target.animated = false;
20229 }, ms);
20230 }
20231 },
20232
20233 _offUpEvents: function () {
20234 var ownerDocument = this.el.ownerDocument;
20235
20236 _off(document, 'touchmove', this._onTouchMove);
20237 _off(document, 'pointermove', this._onTouchMove);
20238 _off(ownerDocument, 'mouseup', this._onDrop);
20239 _off(ownerDocument, 'touchend', this._onDrop);
20240 _off(ownerDocument, 'pointerup', this._onDrop);
20241 _off(ownerDocument, 'touchcancel', this._onDrop);
20242 _off(ownerDocument, 'pointercancel', this._onDrop);
20243 _off(ownerDocument, 'selectstart', this);
20244 },
20245
20246 _onDrop: function (/**Event*/evt) {
20247 var el = this.el,
20248 options = this.options;
20249
20250 clearInterval(this._loopId);
20251 clearInterval(autoScroll.pid);
20252 clearTimeout(this._dragStartTimer);
20253
20254 _cancelNextTick(this._cloneId);
20255 _cancelNextTick(this._dragStartId);
20256
20257 // Unbind events
20258 _off(document, 'mouseover', this);
20259 _off(document, 'mousemove', this._onTouchMove);
20260
20261 if (this.nativeDraggable) {
20262 _off(document, 'drop', this);
20263 _off(el, 'dragstart', this._onDragStart);
20264 }
20265
20266 this._offUpEvents();
20267
20268 if (evt) {
20269 if (moved) {
20270 evt.preventDefault();
20271 !options.dropBubble && evt.stopPropagation();
20272 }
20273
20274 ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);
20275
20276 if (rootEl === parentEl || Sortable.active.lastPullMode !== 'clone') {
20277 // Remove clone
20278 cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);
20279 }
20280
20281 if (dragEl) {
20282 if (this.nativeDraggable) {
20283 _off(dragEl, 'dragend', this);
20284 }
20285
20286 _disableDraggable(dragEl);
20287 dragEl.style['will-change'] = '';
20288
20289 // Remove class's
20290 _toggleClass(dragEl, this.options.ghostClass, false);
20291 _toggleClass(dragEl, this.options.chosenClass, false);
20292
20293 // Drag stop event
20294 _dispatchEvent(this, rootEl, 'unchoose', dragEl, parentEl, rootEl, oldIndex);
20295
20296 if (rootEl !== parentEl) {
20297 newIndex = _index(dragEl, options.draggable);
20298
20299 if (newIndex >= 0) {
20300 // Add event
20301 _dispatchEvent(null, parentEl, 'add', dragEl, parentEl, rootEl, oldIndex, newIndex);
20302
20303 // Remove event
20304 _dispatchEvent(this, rootEl, 'remove', dragEl, parentEl, rootEl, oldIndex, newIndex);
20305
20306 // drag from one list and drop into another
20307 _dispatchEvent(null, parentEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);
20308 _dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);
20309 }
20310 }
20311 else {
20312 if (dragEl.nextSibling !== nextEl) {
20313 // Get the index of the dragged element within its parent
20314 newIndex = _index(dragEl, options.draggable);
20315
20316 if (newIndex >= 0) {
20317 // drag & drop within the same list
20318 _dispatchEvent(this, rootEl, 'update', dragEl, parentEl, rootEl, oldIndex, newIndex);
20319 _dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);
20320 }
20321 }
20322 }
20323
20324 if (Sortable.active) {
20325 /* jshint eqnull:true */
20326 if (newIndex == null || newIndex === -1) {
20327 newIndex = oldIndex;
20328 }
20329
20330 _dispatchEvent(this, rootEl, 'end', dragEl, parentEl, rootEl, oldIndex, newIndex);
20331
20332 // Save sorting
20333 this.save();
20334 }
20335 }
20336
20337 }
20338
20339 this._nulling();
20340 },
20341
20342 _nulling: function() {
20343 rootEl =
20344 dragEl =
20345 parentEl =
20346 ghostEl =
20347 nextEl =
20348 cloneEl =
20349 lastDownEl =
20350
20351 scrollEl =
20352 scrollParentEl =
20353
20354 tapEvt =
20355 touchEvt =
20356
20357 moved =
20358 newIndex =
20359
20360 lastEl =
20361 lastCSS =
20362
20363 putSortable =
20364 activeGroup =
20365 Sortable.active = null;
20366
20367 savedInputChecked.forEach(function (el) {
20368 el.checked = true;
20369 });
20370 savedInputChecked.length = 0;
20371 },
20372
20373 handleEvent: function (/**Event*/evt) {
20374 switch (evt.type) {
20375 case 'drop':
20376 case 'dragend':
20377 this._onDrop(evt);
20378 break;
20379
20380 case 'dragover':
20381 case 'dragenter':
20382 if (dragEl) {
20383 this._onDragOver(evt);
20384 _globalDragOver(evt);
20385 }
20386 break;
20387
20388 case 'mouseover':
20389 this._onDrop(evt);
20390 break;
20391
20392 case 'selectstart':
20393 evt.preventDefault();
20394 break;
20395 }
20396 },
20397
20398
20399 /**
20400 * Serializes the item into an array of string.
20401 * @returns {String[]}
20402 */
20403 toArray: function () {
20404 var order = [],
20405 el,
20406 children = this.el.children,
20407 i = 0,
20408 n = children.length,
20409 options = this.options;
20410
20411 for (; i < n; i++) {
20412 el = children[i];
20413 if (_closest(el, options.draggable, this.el)) {
20414 order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
20415 }
20416 }
20417
20418 return order;
20419 },
20420
20421
20422 /**
20423 * Sorts the elements according to the array.
20424 * @param {String[]} order order of the items
20425 */
20426 sort: function (order) {
20427 var items = {}, rootEl = this.el;
20428
20429 this.toArray().forEach(function (id, i) {
20430 var el = rootEl.children[i];
20431
20432 if (_closest(el, this.options.draggable, rootEl)) {
20433 items[id] = el;
20434 }
20435 }, this);
20436
20437 order.forEach(function (id) {
20438 if (items[id]) {
20439 rootEl.removeChild(items[id]);
20440 rootEl.appendChild(items[id]);
20441 }
20442 });
20443 },
20444
20445
20446 /**
20447 * Save the current sorting
20448 */
20449 save: function () {
20450 var store = this.options.store;
20451 store && store.set(this);
20452 },
20453
20454
20455 /**
20456 * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
20457 * @param {HTMLElement} el
20458 * @param {String} [selector] default: `options.draggable`
20459 * @returns {HTMLElement|null}
20460 */
20461 closest: function (el, selector) {
20462 return _closest(el, selector || this.options.draggable, this.el);
20463 },
20464
20465
20466 /**
20467 * Set/get option
20468 * @param {string} name
20469 * @param {*} [value]
20470 * @returns {*}
20471 */
20472 option: function (name, value) {
20473 var options = this.options;
20474
20475 if (value === void 0) {
20476 return options[name];
20477 } else {
20478 options[name] = value;
20479
20480 if (name === 'group') {
20481 _prepareGroup(options);
20482 }
20483 }
20484 },
20485
20486
20487 /**
20488 * Destroy
20489 */
20490 destroy: function () {
20491 var el = this.el;
20492
20493 el[expando] = null;
20494
20495 _off(el, 'mousedown', this._onTapStart);
20496 _off(el, 'touchstart', this._onTapStart);
20497 _off(el, 'pointerdown', this._onTapStart);
20498
20499 if (this.nativeDraggable) {
20500 _off(el, 'dragover', this);
20501 _off(el, 'dragenter', this);
20502 }
20503
20504 // Remove draggable attributes
20505 Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {
20506 el.removeAttribute('draggable');
20507 });
20508
20509 touchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);
20510
20511 this._onDrop();
20512
20513 this.el = el = null;
20514 }
20515 };
20516
20517
20518 function _cloneHide(sortable, state) {
20519 if (sortable.lastPullMode !== 'clone') {
20520 state = true;
20521 }
20522
20523 if (cloneEl && (cloneEl.state !== state)) {
20524 _css(cloneEl, 'display', state ? 'none' : '');
20525
20526 if (!state) {
20527 if (cloneEl.state) {
20528 if (sortable.options.group.revertClone) {
20529 rootEl.insertBefore(cloneEl, nextEl);
20530 sortable._animate(dragEl, cloneEl);
20531 } else {
20532 rootEl.insertBefore(cloneEl, dragEl);
20533 }
20534 }
20535 }
20536
20537 cloneEl.state = state;
20538 }
20539 }
20540
20541
20542 function _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {
20543 if (el) {
20544 ctx = ctx || document;
20545
20546 do {
20547 if ((selector === '>*' && el.parentNode === ctx) || _matches(el, selector)) {
20548 return el;
20549 }
20550 /* jshint boss:true */
20551 } while (el = _getParentOrHost(el));
20552 }
20553
20554 return null;
20555 }
20556
20557
20558 function _getParentOrHost(el) {
20559 var parent = el.host;
20560
20561 return (parent && parent.nodeType) ? parent : el.parentNode;
20562 }
20563
20564
20565 function _globalDragOver(/**Event*/evt) {
20566 if (evt.dataTransfer) {
20567 evt.dataTransfer.dropEffect = 'move';
20568 }
20569 evt.preventDefault();
20570 }
20571
20572
20573 function _on(el, event, fn) {
20574 el.addEventListener(event, fn, captureMode);
20575 }
20576
20577
20578 function _off(el, event, fn) {
20579 el.removeEventListener(event, fn, captureMode);
20580 }
20581
20582
20583 function _toggleClass(el, name, state) {
20584 if (el) {
20585 if (el.classList) {
20586 el.classList[state ? 'add' : 'remove'](name);
20587 }
20588 else {
20589 var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');
20590 el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');
20591 }
20592 }
20593 }
20594
20595
20596 function _css(el, prop, val) {
20597 var style = el && el.style;
20598
20599 if (style) {
20600 if (val === void 0) {
20601 if (document.defaultView && document.defaultView.getComputedStyle) {
20602 val = document.defaultView.getComputedStyle(el, '');
20603 }
20604 else if (el.currentStyle) {
20605 val = el.currentStyle;
20606 }
20607
20608 return prop === void 0 ? val : val[prop];
20609 }
20610 else {
20611 if (!(prop in style)) {
20612 prop = '-webkit-' + prop;
20613 }
20614
20615 style[prop] = val + (typeof val === 'string' ? '' : 'px');
20616 }
20617 }
20618 }
20619
20620
20621 function _find(ctx, tagName, iterator) {
20622 if (ctx) {
20623 var list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;
20624
20625 if (iterator) {
20626 for (; i < n; i++) {
20627 iterator(list[i], i);
20628 }
20629 }
20630
20631 return list;
20632 }
20633
20634 return [];
20635 }
20636
20637
20638
20639 function _dispatchEvent(sortable, rootEl, name, targetEl, toEl, fromEl, startIndex, newIndex) {
20640 sortable = (sortable || rootEl[expando]);
20641
20642 var evt = document.createEvent('Event'),
20643 options = sortable.options,
20644 onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);
20645
20646 evt.initEvent(name, true, true);
20647
20648 evt.to = toEl || rootEl;
20649 evt.from = fromEl || rootEl;
20650 evt.item = targetEl || rootEl;
20651 evt.clone = cloneEl;
20652
20653 evt.oldIndex = startIndex;
20654 evt.newIndex = newIndex;
20655
20656 rootEl.dispatchEvent(evt);
20657
20658 if (options[onName]) {
20659 options[onName].call(sortable, evt);
20660 }
20661 }
20662
20663
20664 function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {
20665 var evt,
20666 sortable = fromEl[expando],
20667 onMoveFn = sortable.options.onMove,
20668 retVal;
20669
20670 evt = document.createEvent('Event');
20671 evt.initEvent('move', true, true);
20672
20673 evt.to = toEl;
20674 evt.from = fromEl;
20675 evt.dragged = dragEl;
20676 evt.draggedRect = dragRect;
20677 evt.related = targetEl || toEl;
20678 evt.relatedRect = targetRect || toEl.getBoundingClientRect();
20679 evt.willInsertAfter = willInsertAfter;
20680
20681 fromEl.dispatchEvent(evt);
20682
20683 if (onMoveFn) {
20684 retVal = onMoveFn.call(sortable, evt, originalEvt);
20685 }
20686
20687 return retVal;
20688 }
20689
20690
20691 function _disableDraggable(el) {
20692 el.draggable = false;
20693 }
20694
20695
20696 function _unsilent() {
20697 _silent = false;
20698 }
20699
20700
20701 /** @returns {HTMLElement|false} */
20702 function _ghostIsLast(el, evt) {
20703 var lastEl = el.lastElementChild,
20704 rect = lastEl.getBoundingClientRect();
20705
20706 // 5 — min delta
20707 // abs — нельзя добавлять, а то глюки при наведении сверху
20708 return (evt.clientY - (rect.top + rect.height) > 5) ||
20709 (evt.clientX - (rect.left + rect.width) > 5);
20710 }
20711
20712
20713 /**
20714 * Generate id
20715 * @param {HTMLElement} el
20716 * @returns {String}
20717 * @private
20718 */
20719 function _generateId(el) {
20720 var str = el.tagName + el.className + el.src + el.href + el.textContent,
20721 i = str.length,
20722 sum = 0;
20723
20724 while (i--) {
20725 sum += str.charCodeAt(i);
20726 }
20727
20728 return sum.toString(36);
20729 }
20730
20731 /**
20732 * Returns the index of an element within its parent for a selected set of
20733 * elements
20734 * @param {HTMLElement} el
20735 * @param {selector} selector
20736 * @return {number}
20737 */
20738 function _index(el, selector) {
20739 var index = 0;
20740
20741 if (!el || !el.parentNode) {
20742 return -1;
20743 }
20744
20745 while (el && (el = el.previousElementSibling)) {
20746 if ((el.nodeName.toUpperCase() !== 'TEMPLATE') && (selector === '>*' || _matches(el, selector))) {
20747 index++;
20748 }
20749 }
20750
20751 return index;
20752 }
20753
20754 function _matches(/**HTMLElement*/el, /**String*/selector) {
20755 if (el) {
20756 selector = selector.split('.');
20757
20758 var tag = selector.shift().toUpperCase(),
20759 re = new RegExp('\\s(' + selector.join('|') + ')(?=\\s)', 'g');
20760
20761 return (
20762 (tag === '' || el.nodeName.toUpperCase() == tag) &&
20763 (!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)
20764 );
20765 }
20766
20767 return false;
20768 }
20769
20770 function _throttle(callback, ms) {
20771 var args, _this;
20772
20773 return function () {
20774 if (args === void 0) {
20775 args = arguments;
20776 _this = this;
20777
20778 setTimeout(function () {
20779 if (args.length === 1) {
20780 callback.call(_this, args[0]);
20781 } else {
20782 callback.apply(_this, args);
20783 }
20784
20785 args = void 0;
20786 }, ms);
20787 }
20788 };
20789 }
20790
20791 function _extend(dst, src) {
20792 if (dst && src) {
20793 for (var key in src) {
20794 if (src.hasOwnProperty(key)) {
20795 dst[key] = src[key];
20796 }
20797 }
20798 }
20799
20800 return dst;
20801 }
20802
20803 function _clone(el) {
20804 if (Polymer && Polymer.dom) {
20805 return Polymer.dom(el).cloneNode(true);
20806 }
20807 else if ($) {
20808 return $(el).clone(true)[0];
20809 }
20810 else {
20811 return el.cloneNode(true);
20812 }
20813 }
20814
20815 function _saveInputCheckedState(root) {
20816 var inputs = root.getElementsByTagName('input');
20817 var idx = inputs.length;
20818
20819 while (idx--) {
20820 var el = inputs[idx];
20821 el.checked && savedInputChecked.push(el);
20822 }
20823 }
20824
20825 function _nextTick(fn) {
20826 return setTimeout(fn, 0);
20827 }
20828
20829 function _cancelNextTick(id) {
20830 return clearTimeout(id);
20831 }
20832
20833 // Fixed #973:
20834 _on(document, 'touchmove', function (evt) {
20835 if (Sortable.active) {
20836 evt.preventDefault();
20837 }
20838 });
20839
20840 // Export utils
20841 Sortable.utils = {
20842 on: _on,
20843 off: _off,
20844 css: _css,
20845 find: _find,
20846 is: function (el, selector) {
20847 return !!_closest(el, selector, el);
20848 },
20849 extend: _extend,
20850 throttle: _throttle,
20851 closest: _closest,
20852 toggleClass: _toggleClass,
20853 clone: _clone,
20854 index: _index,
20855 nextTick: _nextTick,
20856 cancelNextTick: _cancelNextTick
20857 };
20858
20859
20860 /**
20861 * Create sortable instance
20862 * @param {HTMLElement} el
20863 * @param {Object} [options]
20864 */
20865 Sortable.create = function (el, options) {
20866 return new Sortable(el, options);
20867 };
20868
20869
20870 // Export
20871 Sortable.version = '1.7.0';
20872 return Sortable;
20873});
20874
20875
20876/***/ }),
20877
20878/***/ "549b":
20879/***/ (function(module, exports, __webpack_require__) {
20880
20881"use strict";
20882
20883var ctx = __webpack_require__("d864");
20884var $export = __webpack_require__("63b6");
20885var toObject = __webpack_require__("241e");
20886var call = __webpack_require__("b0dc");
20887var isArrayIter = __webpack_require__("3702");
20888var toLength = __webpack_require__("b447");
20889var createProperty = __webpack_require__("20fd");
20890var getIterFn = __webpack_require__("7cd6");
20891
20892$export($export.S + $export.F * !__webpack_require__("4ee1")(function (iter) { Array.from(iter); }), 'Array', {
20893 // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
20894 from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
20895 var O = toObject(arrayLike);
20896 var C = typeof this == 'function' ? this : Array;
20897 var aLen = arguments.length;
20898 var mapfn = aLen > 1 ? arguments[1] : undefined;
20899 var mapping = mapfn !== undefined;
20900 var index = 0;
20901 var iterFn = getIterFn(O);
20902 var length, result, step, iterator;
20903 if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
20904 // if object isn't iterable or it's array with default iterator - use simple case
20905 if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
20906 for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
20907 createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
20908 }
20909 } else {
20910 length = toLength(O.length);
20911 for (result = new C(length); length > index; index++) {
20912 createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
20913 }
20914 }
20915 result.length = index;
20916 return result;
20917 }
20918});
20919
20920
20921/***/ }),
20922
20923/***/ "54a1":
20924/***/ (function(module, exports, __webpack_require__) {
20925
20926__webpack_require__("6c1c");
20927__webpack_require__("1654");
20928module.exports = __webpack_require__("95d5");
20929
20930
20931/***/ }),
20932
20933/***/ "5537":
20934/***/ (function(module, exports, __webpack_require__) {
20935
20936var core = __webpack_require__("8378");
20937var global = __webpack_require__("7726");
20938var SHARED = '__core-js_shared__';
20939var store = global[SHARED] || (global[SHARED] = {});
20940
20941(module.exports = function (key, value) {
20942 return store[key] || (store[key] = value !== undefined ? value : {});
20943})('versions', []).push({
20944 version: core.version,
20945 mode: __webpack_require__("2d00") ? 'pure' : 'global',
20946 copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
20947});
20948
20949
20950/***/ }),
20951
20952/***/ "5559":
20953/***/ (function(module, exports, __webpack_require__) {
20954
20955var shared = __webpack_require__("dbdb")('keys');
20956var uid = __webpack_require__("62a0");
20957module.exports = function (key) {
20958 return shared[key] || (shared[key] = uid(key));
20959};
20960
20961
20962/***/ }),
20963
20964/***/ "55dd":
20965/***/ (function(module, exports, __webpack_require__) {
20966
20967"use strict";
20968
20969var $export = __webpack_require__("5ca1");
20970var aFunction = __webpack_require__("d8e8");
20971var toObject = __webpack_require__("4bf8");
20972var fails = __webpack_require__("79e5");
20973var $sort = [].sort;
20974var test = [1, 2, 3];
20975
20976$export($export.P + $export.F * (fails(function () {
20977 // IE8-
20978 test.sort(undefined);
20979}) || !fails(function () {
20980 // V8 bug
20981 test.sort(null);
20982 // Old WebKit
20983}) || !__webpack_require__("2f21")($sort)), 'Array', {
20984 // 22.1.3.25 Array.prototype.sort(comparefn)
20985 sort: function sort(comparefn) {
20986 return comparefn === undefined
20987 ? $sort.call(toObject(this))
20988 : $sort.call(toObject(this), aFunction(comparefn));
20989 }
20990});
20991
20992
20993/***/ }),
20994
20995/***/ "57f1":
20996/***/ (function(module, exports, __webpack_require__) {
20997
20998// extracted by mini-css-extract-plugin
20999
21000/***/ }),
21001
21002/***/ "584a":
21003/***/ (function(module, exports) {
21004
21005var core = module.exports = { version: '2.5.7' };
21006if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
21007
21008
21009/***/ }),
21010
21011/***/ "5ac7":
21012/***/ (function(module, __webpack_exports__, __webpack_require__) {
21013
21014"use strict";
21015/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShSingleColumnLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("60e2");
21016/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShSingleColumnLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShSingleColumnLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21017/* unused harmony reexport * */
21018 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShSingleColumnLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21019
21020/***/ }),
21021
21022/***/ "5b4e":
21023/***/ (function(module, exports, __webpack_require__) {
21024
21025// false -> Array#indexOf
21026// true -> Array#includes
21027var toIObject = __webpack_require__("36c3");
21028var toLength = __webpack_require__("b447");
21029var toAbsoluteIndex = __webpack_require__("0fc9");
21030module.exports = function (IS_INCLUDES) {
21031 return function ($this, el, fromIndex) {
21032 var O = toIObject($this);
21033 var length = toLength(O.length);
21034 var index = toAbsoluteIndex(fromIndex, length);
21035 var value;
21036 // Array#includes uses SameValueZero equality algorithm
21037 // eslint-disable-next-line no-self-compare
21038 if (IS_INCLUDES && el != el) while (length > index) {
21039 value = O[index++];
21040 // eslint-disable-next-line no-self-compare
21041 if (value != value) return true;
21042 // Array#indexOf ignores holes, Array#includes - not
21043 } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
21044 if (O[index] === el) return IS_INCLUDES || index || 0;
21045 } return !IS_INCLUDES && -1;
21046 };
21047};
21048
21049
21050/***/ }),
21051
21052/***/ "5ca1":
21053/***/ (function(module, exports, __webpack_require__) {
21054
21055var global = __webpack_require__("7726");
21056var core = __webpack_require__("8378");
21057var hide = __webpack_require__("32e9");
21058var redefine = __webpack_require__("2aba");
21059var ctx = __webpack_require__("9b43");
21060var PROTOTYPE = 'prototype';
21061
21062var $export = function (type, name, source) {
21063 var IS_FORCED = type & $export.F;
21064 var IS_GLOBAL = type & $export.G;
21065 var IS_STATIC = type & $export.S;
21066 var IS_PROTO = type & $export.P;
21067 var IS_BIND = type & $export.B;
21068 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
21069 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
21070 var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
21071 var key, own, out, exp;
21072 if (IS_GLOBAL) source = name;
21073 for (key in source) {
21074 // contains in native
21075 own = !IS_FORCED && target && target[key] !== undefined;
21076 // export native or passed
21077 out = (own ? target : source)[key];
21078 // bind timers to global for call from export context
21079 exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
21080 // extend global
21081 if (target) redefine(target, key, out, type & $export.U);
21082 // export
21083 if (exports[key] != out) hide(exports, key, exp);
21084 if (IS_PROTO && expProto[key] != out) expProto[key] = out;
21085 }
21086};
21087global.core = core;
21088// type bitmap
21089$export.F = 1; // forced
21090$export.G = 2; // global
21091$export.S = 4; // static
21092$export.P = 8; // proto
21093$export.B = 16; // bind
21094$export.W = 32; // wrap
21095$export.U = 64; // safe
21096$export.R = 128; // real proto method for `library`
21097module.exports = $export;
21098
21099
21100/***/ }),
21101
21102/***/ "5d58":
21103/***/ (function(module, exports, __webpack_require__) {
21104
21105module.exports = __webpack_require__("d8d6");
21106
21107/***/ }),
21108
21109/***/ "5d6b":
21110/***/ (function(module, exports, __webpack_require__) {
21111
21112var $parseInt = __webpack_require__("e53d").parseInt;
21113var $trim = __webpack_require__("a1ce").trim;
21114var ws = __webpack_require__("e692");
21115var hex = /^[-+]?0[xX]/;
21116
21117module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
21118 var string = $trim(String(str), 3);
21119 return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
21120} : $parseInt;
21121
21122
21123/***/ }),
21124
21125/***/ "5d73":
21126/***/ (function(module, exports, __webpack_require__) {
21127
21128module.exports = __webpack_require__("469f");
21129
21130/***/ }),
21131
21132/***/ "5dbc":
21133/***/ (function(module, exports, __webpack_require__) {
21134
21135var isObject = __webpack_require__("d3f4");
21136var setPrototypeOf = __webpack_require__("8b97").set;
21137module.exports = function (that, target, C) {
21138 var S = target.constructor;
21139 var P;
21140 if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
21141 setPrototypeOf(that, P);
21142 } return that;
21143};
21144
21145
21146/***/ }),
21147
21148/***/ "6077":
21149/***/ (function(module, __webpack_exports__, __webpack_require__) {
21150
21151"use strict";
21152/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPageHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("432e");
21153/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPageHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPageHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21154/* unused harmony reexport * */
21155 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShPageHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21156
21157/***/ }),
21158
21159/***/ "60e2":
21160/***/ (function(module, exports, __webpack_require__) {
21161
21162// extracted by mini-css-extract-plugin
21163
21164/***/ }),
21165
21166/***/ "613b":
21167/***/ (function(module, exports, __webpack_require__) {
21168
21169var shared = __webpack_require__("5537")('keys');
21170var uid = __webpack_require__("ca5a");
21171module.exports = function (key) {
21172 return shared[key] || (shared[key] = uid(key));
21173};
21174
21175
21176/***/ }),
21177
21178/***/ "6189":
21179/***/ (function(module, exports, __webpack_require__) {
21180
21181// extracted by mini-css-extract-plugin
21182
21183/***/ }),
21184
21185/***/ "626a":
21186/***/ (function(module, exports, __webpack_require__) {
21187
21188// fallback for non-array-like ES3 and non-enumerable old V8 strings
21189var cof = __webpack_require__("2d95");
21190// eslint-disable-next-line no-prototype-builtins
21191module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
21192 return cof(it) == 'String' ? it.split('') : Object(it);
21193};
21194
21195
21196/***/ }),
21197
21198/***/ "62a0":
21199/***/ (function(module, exports) {
21200
21201var id = 0;
21202var px = Math.random();
21203module.exports = function (key) {
21204 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
21205};
21206
21207
21208/***/ }),
21209
21210/***/ "62e4":
21211/***/ (function(module, exports) {
21212
21213module.exports = function(module) {
21214 if (!module.webpackPolyfill) {
21215 module.deprecate = function() {};
21216 module.paths = [];
21217 // module.parent = undefined by default
21218 if (!module.children) module.children = [];
21219 Object.defineProperty(module, "loaded", {
21220 enumerable: true,
21221 get: function() {
21222 return module.l;
21223 }
21224 });
21225 Object.defineProperty(module, "id", {
21226 enumerable: true,
21227 get: function() {
21228 return module.i;
21229 }
21230 });
21231 module.webpackPolyfill = 1;
21232 }
21233 return module;
21234};
21235
21236
21237/***/ }),
21238
21239/***/ "63b6":
21240/***/ (function(module, exports, __webpack_require__) {
21241
21242var global = __webpack_require__("e53d");
21243var core = __webpack_require__("584a");
21244var ctx = __webpack_require__("d864");
21245var hide = __webpack_require__("35e8");
21246var has = __webpack_require__("07e3");
21247var PROTOTYPE = 'prototype';
21248
21249var $export = function (type, name, source) {
21250 var IS_FORCED = type & $export.F;
21251 var IS_GLOBAL = type & $export.G;
21252 var IS_STATIC = type & $export.S;
21253 var IS_PROTO = type & $export.P;
21254 var IS_BIND = type & $export.B;
21255 var IS_WRAP = type & $export.W;
21256 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
21257 var expProto = exports[PROTOTYPE];
21258 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
21259 var key, own, out;
21260 if (IS_GLOBAL) source = name;
21261 for (key in source) {
21262 // contains in native
21263 own = !IS_FORCED && target && target[key] !== undefined;
21264 if (own && has(exports, key)) continue;
21265 // export native or passed
21266 out = own ? target[key] : source[key];
21267 // prevent global pollution for namespaces
21268 exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
21269 // bind timers to global for call from export context
21270 : IS_BIND && own ? ctx(out, global)
21271 // wrap global constructors for prevent change them in library
21272 : IS_WRAP && target[key] == out ? (function (C) {
21273 var F = function (a, b, c) {
21274 if (this instanceof C) {
21275 switch (arguments.length) {
21276 case 0: return new C();
21277 case 1: return new C(a);
21278 case 2: return new C(a, b);
21279 } return new C(a, b, c);
21280 } return C.apply(this, arguments);
21281 };
21282 F[PROTOTYPE] = C[PROTOTYPE];
21283 return F;
21284 // make static versions for prototype methods
21285 })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
21286 // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
21287 if (IS_PROTO) {
21288 (exports.virtual || (exports.virtual = {}))[key] = out;
21289 // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
21290 if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
21291 }
21292 }
21293};
21294// type bitmap
21295$export.F = 1; // forced
21296$export.G = 2; // global
21297$export.S = 4; // static
21298$export.P = 8; // proto
21299$export.B = 16; // bind
21300$export.W = 32; // wrap
21301$export.U = 64; // safe
21302$export.R = 128; // real proto method for `library`
21303module.exports = $export;
21304
21305
21306/***/ }),
21307
21308/***/ "65d9":
21309/***/ (function(module, exports, __webpack_require__) {
21310
21311"use strict";
21312/**
21313 * vue-class-component v6.3.2
21314 * (c) 2015-present Evan You
21315 * @license MIT
21316 */
21317
21318
21319Object.defineProperty(exports, '__esModule', { value: true });
21320
21321function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
21322
21323var Vue = _interopDefault(__webpack_require__("8bbf"));
21324
21325var reflectionIsSupported = typeof Reflect !== 'undefined' && Reflect.defineMetadata;
21326function copyReflectionMetadata(to, from) {
21327 forwardMetadata(to, from);
21328 Object.getOwnPropertyNames(from.prototype).forEach(function (key) {
21329 forwardMetadata(to.prototype, from.prototype, key);
21330 });
21331 Object.getOwnPropertyNames(from).forEach(function (key) {
21332 forwardMetadata(to, from, key);
21333 });
21334}
21335function forwardMetadata(to, from, propertyKey) {
21336 var metaKeys = propertyKey
21337 ? Reflect.getOwnMetadataKeys(from, propertyKey)
21338 : Reflect.getOwnMetadataKeys(from);
21339 metaKeys.forEach(function (metaKey) {
21340 var metadata = propertyKey
21341 ? Reflect.getOwnMetadata(metaKey, from, propertyKey)
21342 : Reflect.getOwnMetadata(metaKey, from);
21343 if (propertyKey) {
21344 Reflect.defineMetadata(metaKey, metadata, to, propertyKey);
21345 }
21346 else {
21347 Reflect.defineMetadata(metaKey, metadata, to);
21348 }
21349 });
21350}
21351
21352var fakeArray = { __proto__: [] };
21353var hasProto = fakeArray instanceof Array;
21354function createDecorator(factory) {
21355 return function (target, key, index) {
21356 var Ctor = typeof target === 'function'
21357 ? target
21358 : target.constructor;
21359 if (!Ctor.__decorators__) {
21360 Ctor.__decorators__ = [];
21361 }
21362 if (typeof index !== 'number') {
21363 index = undefined;
21364 }
21365 Ctor.__decorators__.push(function (options) { return factory(options, key, index); });
21366 };
21367}
21368function mixins() {
21369 var Ctors = [];
21370 for (var _i = 0; _i < arguments.length; _i++) {
21371 Ctors[_i] = arguments[_i];
21372 }
21373 return Vue.extend({ mixins: Ctors });
21374}
21375function isPrimitive(value) {
21376 var type = typeof value;
21377 return value == null || (type !== 'object' && type !== 'function');
21378}
21379function warn(message) {
21380 if (typeof console !== 'undefined') {
21381 console.warn('[vue-class-component] ' + message);
21382 }
21383}
21384
21385function collectDataFromConstructor(vm, Component) {
21386 // override _init to prevent to init as Vue instance
21387 var originalInit = Component.prototype._init;
21388 Component.prototype._init = function () {
21389 var _this = this;
21390 // proxy to actual vm
21391 var keys = Object.getOwnPropertyNames(vm);
21392 // 2.2.0 compat (props are no longer exposed as self properties)
21393 if (vm.$options.props) {
21394 for (var key in vm.$options.props) {
21395 if (!vm.hasOwnProperty(key)) {
21396 keys.push(key);
21397 }
21398 }
21399 }
21400 keys.forEach(function (key) {
21401 if (key.charAt(0) !== '_') {
21402 Object.defineProperty(_this, key, {
21403 get: function () { return vm[key]; },
21404 set: function (value) { vm[key] = value; },
21405 configurable: true
21406 });
21407 }
21408 });
21409 };
21410 // should be acquired class property values
21411 var data = new Component();
21412 // restore original _init to avoid memory leak (#209)
21413 Component.prototype._init = originalInit;
21414 // create plain data object
21415 var plainData = {};
21416 Object.keys(data).forEach(function (key) {
21417 if (data[key] !== undefined) {
21418 plainData[key] = data[key];
21419 }
21420 });
21421 if (false) {}
21422 return plainData;
21423}
21424
21425var $internalHooks = [
21426 'data',
21427 'beforeCreate',
21428 'created',
21429 'beforeMount',
21430 'mounted',
21431 'beforeDestroy',
21432 'destroyed',
21433 'beforeUpdate',
21434 'updated',
21435 'activated',
21436 'deactivated',
21437 'render',
21438 'errorCaptured' // 2.5
21439];
21440function componentFactory(Component, options) {
21441 if (options === void 0) { options = {}; }
21442 options.name = options.name || Component._componentTag || Component.name;
21443 // prototype props.
21444 var proto = Component.prototype;
21445 Object.getOwnPropertyNames(proto).forEach(function (key) {
21446 if (key === 'constructor') {
21447 return;
21448 }
21449 // hooks
21450 if ($internalHooks.indexOf(key) > -1) {
21451 options[key] = proto[key];
21452 return;
21453 }
21454 var descriptor = Object.getOwnPropertyDescriptor(proto, key);
21455 if (descriptor.value !== void 0) {
21456 // methods
21457 if (typeof descriptor.value === 'function') {
21458 (options.methods || (options.methods = {}))[key] = descriptor.value;
21459 }
21460 else {
21461 // typescript decorated data
21462 (options.mixins || (options.mixins = [])).push({
21463 data: function () {
21464 var _a;
21465 return _a = {}, _a[key] = descriptor.value, _a;
21466 }
21467 });
21468 }
21469 }
21470 else if (descriptor.get || descriptor.set) {
21471 // computed properties
21472 (options.computed || (options.computed = {}))[key] = {
21473 get: descriptor.get,
21474 set: descriptor.set
21475 };
21476 }
21477 });
21478 (options.mixins || (options.mixins = [])).push({
21479 data: function () {
21480 return collectDataFromConstructor(this, Component);
21481 }
21482 });
21483 // decorate options
21484 var decorators = Component.__decorators__;
21485 if (decorators) {
21486 decorators.forEach(function (fn) { return fn(options); });
21487 delete Component.__decorators__;
21488 }
21489 // find super
21490 var superProto = Object.getPrototypeOf(Component.prototype);
21491 var Super = superProto instanceof Vue
21492 ? superProto.constructor
21493 : Vue;
21494 var Extended = Super.extend(options);
21495 forwardStaticMembers(Extended, Component, Super);
21496 if (reflectionIsSupported) {
21497 copyReflectionMetadata(Extended, Component);
21498 }
21499 return Extended;
21500}
21501var reservedPropertyNames = [
21502 // Unique id
21503 'cid',
21504 // Super Vue constructor
21505 'super',
21506 // Component options that will be used by the component
21507 'options',
21508 'superOptions',
21509 'extendOptions',
21510 'sealedOptions',
21511 // Private assets
21512 'component',
21513 'directive',
21514 'filter'
21515];
21516function forwardStaticMembers(Extended, Original, Super) {
21517 // We have to use getOwnPropertyNames since Babel registers methods as non-enumerable
21518 Object.getOwnPropertyNames(Original).forEach(function (key) {
21519 // `prototype` should not be overwritten
21520 if (key === 'prototype') {
21521 return;
21522 }
21523 // Some browsers does not allow reconfigure built-in properties
21524 var extendedDescriptor = Object.getOwnPropertyDescriptor(Extended, key);
21525 if (extendedDescriptor && !extendedDescriptor.configurable) {
21526 return;
21527 }
21528 var descriptor = Object.getOwnPropertyDescriptor(Original, key);
21529 // If the user agent does not support `__proto__` or its family (IE <= 10),
21530 // the sub class properties may be inherited properties from the super class in TypeScript.
21531 // We need to exclude such properties to prevent to overwrite
21532 // the component options object which stored on the extended constructor (See #192).
21533 // If the value is a referenced value (object or function),
21534 // we can check equality of them and exclude it if they have the same reference.
21535 // If it is a primitive value, it will be forwarded for safety.
21536 if (!hasProto) {
21537 // Only `cid` is explicitly exluded from property forwarding
21538 // because we cannot detect whether it is a inherited property or not
21539 // on the no `__proto__` environment even though the property is reserved.
21540 if (key === 'cid') {
21541 return;
21542 }
21543 var superDescriptor = Object.getOwnPropertyDescriptor(Super, key);
21544 if (!isPrimitive(descriptor.value) &&
21545 superDescriptor &&
21546 superDescriptor.value === descriptor.value) {
21547 return;
21548 }
21549 }
21550 // Warn if the users manually declare reserved properties
21551 if (false) {}
21552 Object.defineProperty(Extended, key, descriptor);
21553 });
21554}
21555
21556function Component(options) {
21557 if (typeof options === 'function') {
21558 return componentFactory(options);
21559 }
21560 return function (Component) {
21561 return componentFactory(Component, options);
21562 };
21563}
21564Component.registerHooks = function registerHooks(keys) {
21565 $internalHooks.push.apply($internalHooks, keys);
21566};
21567
21568exports.default = Component;
21569exports.createDecorator = createDecorator;
21570exports.mixins = mixins;
21571
21572
21573/***/ }),
21574
21575/***/ "66ac":
21576/***/ (function(module, __webpack_exports__, __webpack_require__) {
21577
21578"use strict";
21579/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckboxGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3c82");
21580/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckboxGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckboxGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21581/* unused harmony reexport * */
21582 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCheckboxGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21583
21584/***/ }),
21585
21586/***/ "6718":
21587/***/ (function(module, exports, __webpack_require__) {
21588
21589var global = __webpack_require__("e53d");
21590var core = __webpack_require__("584a");
21591var LIBRARY = __webpack_require__("b8e3");
21592var wksExt = __webpack_require__("ccb9");
21593var defineProperty = __webpack_require__("d9f6").f;
21594module.exports = function (name) {
21595 var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
21596 if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
21597};
21598
21599
21600/***/ }),
21601
21602/***/ "6739":
21603/***/ (function(module, exports, __webpack_require__) {
21604
21605// extracted by mini-css-extract-plugin
21606
21607/***/ }),
21608
21609/***/ "67bb":
21610/***/ (function(module, exports, __webpack_require__) {
21611
21612module.exports = __webpack_require__("f921");
21613
21614/***/ }),
21615
21616/***/ "6821":
21617/***/ (function(module, exports, __webpack_require__) {
21618
21619// to indexed object, toObject with fallback for non-array-like ES3 strings
21620var IObject = __webpack_require__("626a");
21621var defined = __webpack_require__("be13");
21622module.exports = function (it) {
21623 return IObject(defined(it));
21624};
21625
21626
21627/***/ }),
21628
21629/***/ "693d":
21630/***/ (function(module, __webpack_exports__, __webpack_require__) {
21631
21632"use strict";
21633/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("879e");
21634/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21635/* unused harmony reexport * */
21636 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCard_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21637
21638/***/ }),
21639
21640/***/ "69a8":
21641/***/ (function(module, exports) {
21642
21643var hasOwnProperty = {}.hasOwnProperty;
21644module.exports = function (it, key) {
21645 return hasOwnProperty.call(it, key);
21646};
21647
21648
21649/***/ }),
21650
21651/***/ "69d3":
21652/***/ (function(module, exports, __webpack_require__) {
21653
21654__webpack_require__("6718")('asyncIterator');
21655
21656
21657/***/ }),
21658
21659/***/ "6a99":
21660/***/ (function(module, exports, __webpack_require__) {
21661
21662// 7.1.1 ToPrimitive(input [, PreferredType])
21663var isObject = __webpack_require__("d3f4");
21664// instead of the ES6 spec version, we didn't implement @@toPrimitive case
21665// and the second argument - flag - preferred type is a string
21666module.exports = function (it, S) {
21667 if (!isObject(it)) return it;
21668 var fn, val;
21669 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
21670 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
21671 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
21672 throw TypeError("Can't convert object to primitive value");
21673};
21674
21675
21676/***/ }),
21677
21678/***/ "6abf":
21679/***/ (function(module, exports, __webpack_require__) {
21680
21681// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
21682var $keys = __webpack_require__("e6f3");
21683var hiddenKeys = __webpack_require__("1691").concat('length', 'prototype');
21684
21685exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
21686 return $keys(O, hiddenKeys);
21687};
21688
21689
21690/***/ }),
21691
21692/***/ "6b4c":
21693/***/ (function(module, exports) {
21694
21695var toString = {}.toString;
21696
21697module.exports = function (it) {
21698 return toString.call(it).slice(8, -1);
21699};
21700
21701
21702/***/ }),
21703
21704/***/ "6b54":
21705/***/ (function(module, exports, __webpack_require__) {
21706
21707"use strict";
21708
21709__webpack_require__("3846");
21710var anObject = __webpack_require__("cb7c");
21711var $flags = __webpack_require__("0bfb");
21712var DESCRIPTORS = __webpack_require__("9e1e");
21713var TO_STRING = 'toString';
21714var $toString = /./[TO_STRING];
21715
21716var define = function (fn) {
21717 __webpack_require__("2aba")(RegExp.prototype, TO_STRING, fn, true);
21718};
21719
21720// 21.2.5.14 RegExp.prototype.toString()
21721if (__webpack_require__("79e5")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
21722 define(function toString() {
21723 var R = anObject(this);
21724 return '/'.concat(R.source, '/',
21725 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
21726 });
21727// FF44- RegExp#toString has a wrong name
21728} else if ($toString.name != TO_STRING) {
21729 define(function toString() {
21730 return $toString.call(this);
21731 });
21732}
21733
21734
21735/***/ }),
21736
21737/***/ "6c1c":
21738/***/ (function(module, exports, __webpack_require__) {
21739
21740__webpack_require__("c367");
21741var global = __webpack_require__("e53d");
21742var hide = __webpack_require__("35e8");
21743var Iterators = __webpack_require__("481b");
21744var TO_STRING_TAG = __webpack_require__("5168")('toStringTag');
21745
21746var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
21747 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
21748 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
21749 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
21750 'TextTrackList,TouchList').split(',');
21751
21752for (var i = 0; i < DOMIterables.length; i++) {
21753 var NAME = DOMIterables[i];
21754 var Collection = global[NAME];
21755 var proto = Collection && Collection.prototype;
21756 if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
21757 Iterators[NAME] = Iterators.Array;
21758}
21759
21760
21761/***/ }),
21762
21763/***/ "6fc7":
21764/***/ (function(module, exports, __webpack_require__) {
21765
21766// extracted by mini-css-extract-plugin
21767
21768/***/ }),
21769
21770/***/ "71c1":
21771/***/ (function(module, exports, __webpack_require__) {
21772
21773var toInteger = __webpack_require__("3a38");
21774var defined = __webpack_require__("25eb");
21775// true -> String#at
21776// false -> String#codePointAt
21777module.exports = function (TO_STRING) {
21778 return function (that, pos) {
21779 var s = String(defined(that));
21780 var i = toInteger(pos);
21781 var l = s.length;
21782 var a, b;
21783 if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
21784 a = s.charCodeAt(i);
21785 return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
21786 ? TO_STRING ? s.charAt(i) : a
21787 : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
21788 };
21789};
21790
21791
21792/***/ }),
21793
21794/***/ "7445":
21795/***/ (function(module, exports, __webpack_require__) {
21796
21797var $export = __webpack_require__("63b6");
21798var $parseInt = __webpack_require__("5d6b");
21799// 18.2.5 parseInt(string, radix)
21800$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });
21801
21802
21803/***/ }),
21804
21805/***/ "7629":
21806/***/ (function(module, exports, __webpack_require__) {
21807
21808// extracted by mini-css-extract-plugin
21809
21810/***/ }),
21811
21812/***/ "765d":
21813/***/ (function(module, exports, __webpack_require__) {
21814
21815__webpack_require__("6718")('observable');
21816
21817
21818/***/ }),
21819
21820/***/ "7726":
21821/***/ (function(module, exports) {
21822
21823// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
21824var global = module.exports = typeof window != 'undefined' && window.Math == Math
21825 ? window : typeof self != 'undefined' && self.Math == Math ? self
21826 // eslint-disable-next-line no-new-func
21827 : Function('return this')();
21828if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
21829
21830
21831/***/ }),
21832
21833/***/ "774e":
21834/***/ (function(module, exports, __webpack_require__) {
21835
21836module.exports = __webpack_require__("d2d5");
21837
21838/***/ }),
21839
21840/***/ "77f1":
21841/***/ (function(module, exports, __webpack_require__) {
21842
21843var toInteger = __webpack_require__("4588");
21844var max = Math.max;
21845var min = Math.min;
21846module.exports = function (index, length) {
21847 index = toInteger(index);
21848 return index < 0 ? max(index + length, 0) : min(index, length);
21849};
21850
21851
21852/***/ }),
21853
21854/***/ "794b":
21855/***/ (function(module, exports, __webpack_require__) {
21856
21857module.exports = !__webpack_require__("8e60") && !__webpack_require__("294c")(function () {
21858 return Object.defineProperty(__webpack_require__("1ec9")('div'), 'a', { get: function () { return 7; } }).a != 7;
21859});
21860
21861
21862/***/ }),
21863
21864/***/ "79a4":
21865/***/ (function(module, __webpack_exports__, __webpack_require__) {
21866
21867"use strict";
21868/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardWidget_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("87f2");
21869/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardWidget_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardWidget_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21870/* unused harmony reexport * */
21871 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardWidget_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21872
21873/***/ }),
21874
21875/***/ "79a4e":
21876/***/ (function(module, __webpack_exports__, __webpack_require__) {
21877
21878"use strict";
21879/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("337e");
21880/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21881/* unused harmony reexport * */
21882 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21883
21884/***/ }),
21885
21886/***/ "79aa":
21887/***/ (function(module, exports) {
21888
21889module.exports = function (it) {
21890 if (typeof it != 'function') throw TypeError(it + ' is not a function!');
21891 return it;
21892};
21893
21894
21895/***/ }),
21896
21897/***/ "79e5":
21898/***/ (function(module, exports) {
21899
21900module.exports = function (exec) {
21901 try {
21902 return !!exec();
21903 } catch (e) {
21904 return true;
21905 }
21906};
21907
21908
21909/***/ }),
21910
21911/***/ "7a56":
21912/***/ (function(module, exports, __webpack_require__) {
21913
21914"use strict";
21915
21916var global = __webpack_require__("7726");
21917var dP = __webpack_require__("86cc");
21918var DESCRIPTORS = __webpack_require__("9e1e");
21919var SPECIES = __webpack_require__("2b4c")('species');
21920
21921module.exports = function (KEY) {
21922 var C = global[KEY];
21923 if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
21924 configurable: true,
21925 get: function () { return this; }
21926 });
21927};
21928
21929
21930/***/ }),
21931
21932/***/ "7c10":
21933/***/ (function(module, exports, __webpack_require__) {
21934
21935// extracted by mini-css-extract-plugin
21936
21937/***/ }),
21938
21939/***/ "7cd6":
21940/***/ (function(module, exports, __webpack_require__) {
21941
21942var classof = __webpack_require__("40c3");
21943var ITERATOR = __webpack_require__("5168")('iterator');
21944var Iterators = __webpack_require__("481b");
21945module.exports = __webpack_require__("584a").getIteratorMethod = function (it) {
21946 if (it != undefined) return it[ITERATOR]
21947 || it['@@iterator']
21948 || Iterators[classof(it)];
21949};
21950
21951
21952/***/ }),
21953
21954/***/ "7d7b":
21955/***/ (function(module, exports, __webpack_require__) {
21956
21957var anObject = __webpack_require__("e4ae");
21958var get = __webpack_require__("7cd6");
21959module.exports = __webpack_require__("584a").getIterator = function (it) {
21960 var iterFn = get(it);
21961 if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
21962 return anObject(iterFn.call(it));
21963};
21964
21965
21966/***/ }),
21967
21968/***/ "7d81":
21969/***/ (function(module, __webpack_exports__, __webpack_require__) {
21970
21971"use strict";
21972/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonUpload_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f28a");
21973/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonUpload_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonUpload_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
21974/* unused harmony reexport * */
21975 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonUpload_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
21976
21977/***/ }),
21978
21979/***/ "7e90":
21980/***/ (function(module, exports, __webpack_require__) {
21981
21982var dP = __webpack_require__("d9f6");
21983var anObject = __webpack_require__("e4ae");
21984var getKeys = __webpack_require__("c3a1");
21985
21986module.exports = __webpack_require__("8e60") ? Object.defineProperties : function defineProperties(O, Properties) {
21987 anObject(O);
21988 var keys = getKeys(Properties);
21989 var length = keys.length;
21990 var i = 0;
21991 var P;
21992 while (length > i) dP.f(O, P = keys[i++], Properties[P]);
21993 return O;
21994};
21995
21996
21997/***/ }),
21998
21999/***/ "7f20":
22000/***/ (function(module, exports, __webpack_require__) {
22001
22002var def = __webpack_require__("86cc").f;
22003var has = __webpack_require__("69a8");
22004var TAG = __webpack_require__("2b4c")('toStringTag');
22005
22006module.exports = function (it, tag, stat) {
22007 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
22008};
22009
22010
22011/***/ }),
22012
22013/***/ "7f7f":
22014/***/ (function(module, exports, __webpack_require__) {
22015
22016var dP = __webpack_require__("86cc").f;
22017var FProto = Function.prototype;
22018var nameRE = /^\s*function ([^ (]*)/;
22019var NAME = 'name';
22020
22021// 19.2.4.2 name
22022NAME in FProto || __webpack_require__("9e1e") && dP(FProto, NAME, {
22023 configurable: true,
22024 get: function () {
22025 try {
22026 return ('' + this).match(nameRE)[1];
22027 } catch (e) {
22028 return '';
22029 }
22030 }
22031});
22032
22033
22034/***/ }),
22035
22036/***/ "8019":
22037/***/ (function(module, exports, __webpack_require__) {
22038
22039/*!
22040 * Name: vue-upload-component
22041 * Version: 2.8.19
22042 * Author: LianYue
22043 */
22044(function (global, factory) {
22045 true ? module.exports = factory() :
22046 undefined;
22047}(this, (function () { 'use strict';
22048
22049 /**
22050 * Creates a XHR request
22051 *
22052 * @param {Object} options
22053 */
22054 var createRequest = function createRequest(options) {
22055 var xhr = new XMLHttpRequest();
22056 xhr.open(options.method || 'GET', options.url);
22057 xhr.responseType = 'json';
22058 if (options.headers) {
22059 Object.keys(options.headers).forEach(function (key) {
22060 xhr.setRequestHeader(key, options.headers[key]);
22061 });
22062 }
22063
22064 return xhr;
22065 };
22066
22067 /**
22068 * Sends a XHR request with certain body
22069 *
22070 * @param {XMLHttpRequest} xhr
22071 * @param {Object} body
22072 */
22073 var sendRequest = function sendRequest(xhr, body) {
22074 return new Promise(function (resolve, reject) {
22075 xhr.onload = function () {
22076 if (xhr.status >= 200 && xhr.status < 300) {
22077 var response;
22078 try {
22079 response = JSON.parse(xhr.response);
22080 } catch (err) {
22081 response = xhr.response;
22082 }
22083 resolve(response);
22084 } else {
22085 reject(xhr.response);
22086 }
22087 };
22088 xhr.onerror = function () {
22089 return reject(xhr.response);
22090 };
22091 xhr.send(JSON.stringify(body));
22092 });
22093 };
22094
22095 /**
22096 * Sends a XHR request with certain form data
22097 *
22098 * @param {XMLHttpRequest} xhr
22099 * @param {Object} data
22100 */
22101 var sendFormRequest = function sendFormRequest(xhr, data) {
22102 var body = new FormData();
22103 for (var name in data) {
22104 body.append(name, data[name]);
22105 }
22106
22107 return new Promise(function (resolve, reject) {
22108 xhr.onload = function () {
22109 if (xhr.status >= 200 && xhr.status < 300) {
22110 var response;
22111 try {
22112 response = JSON.parse(xhr.response);
22113 } catch (err) {
22114 response = xhr.response;
22115 }
22116 resolve(response);
22117 } else {
22118 reject(xhr.response);
22119 }
22120 };
22121 xhr.onerror = function () {
22122 return reject(xhr.response);
22123 };
22124 xhr.send(body);
22125 });
22126 };
22127
22128 /**
22129 * Creates and sends XHR request
22130 *
22131 * @param {Object} options
22132 *
22133 * @returns Promise
22134 */
22135 function request (options) {
22136 var xhr = createRequest(options);
22137
22138 return sendRequest(xhr, options.body);
22139 }
22140
22141 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
22142
22143 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22144
22145 var ChunkUploadHandler = function () {
22146 /**
22147 * Constructor
22148 *
22149 * @param {File} file
22150 * @param {Object} options
22151 */
22152 function ChunkUploadHandler(file, options) {
22153 _classCallCheck(this, ChunkUploadHandler);
22154
22155 this.file = file;
22156 this.options = options;
22157 }
22158
22159 /**
22160 * Gets the max retries from options
22161 */
22162
22163
22164 _createClass(ChunkUploadHandler, [{
22165 key: 'createChunks',
22166
22167
22168 /**
22169 * Creates all the chunks in the initial state
22170 */
22171 value: function createChunks() {
22172 this.chunks = [];
22173
22174 var start = 0;
22175 var end = this.chunkSize;
22176 while (start < this.fileSize) {
22177 this.chunks.push({
22178 blob: this.file.file.slice(start, end),
22179 startOffset: start,
22180 active: false,
22181 retries: this.maxRetries
22182 });
22183 start = end;
22184 end = start + this.chunkSize;
22185 }
22186 }
22187
22188 /**
22189 * Updates the progress of the file with the handler's progress
22190 */
22191
22192 }, {
22193 key: 'updateFileProgress',
22194 value: function updateFileProgress() {
22195 this.file.progress = this.progress;
22196 }
22197
22198 /**
22199 * Paues the upload process
22200 * - Stops all active requests
22201 * - Sets the file not active
22202 */
22203
22204 }, {
22205 key: 'pause',
22206 value: function pause() {
22207 this.file.active = false;
22208 this.stopChunks();
22209 }
22210
22211 /**
22212 * Stops all the current chunks
22213 */
22214
22215 }, {
22216 key: 'stopChunks',
22217 value: function stopChunks() {
22218 this.chunksUploading.forEach(function (chunk) {
22219 chunk.xhr.abort();
22220 chunk.active = false;
22221 });
22222 }
22223
22224 /**
22225 * Resumes the file upload
22226 * - Sets the file active
22227 * - Starts the following chunks
22228 */
22229
22230 }, {
22231 key: 'resume',
22232 value: function resume() {
22233 this.file.active = true;
22234 this.startChunking();
22235 }
22236
22237 /**
22238 * Starts the file upload
22239 *
22240 * @returns Promise
22241 * - resolve The file was uploaded
22242 * - reject The file upload failed
22243 */
22244
22245 }, {
22246 key: 'upload',
22247 value: function upload() {
22248 var _this = this;
22249
22250 this.promise = new Promise(function (resolve, reject) {
22251 _this.resolve = resolve;
22252 _this.reject = reject;
22253 });
22254 this.start();
22255
22256 return this.promise;
22257 }
22258
22259 /**
22260 * Start phase
22261 * Sends a request to the backend to initialise the chunks
22262 */
22263
22264 }, {
22265 key: 'start',
22266 value: function start() {
22267 var _this2 = this;
22268
22269 request({
22270 method: 'POST',
22271 headers: Object.assign({}, this.headers, {
22272 'Content-Type': 'application/json'
22273 }),
22274 url: this.action,
22275 body: Object.assign(this.startBody, {
22276 phase: 'start',
22277 mime_type: this.fileType,
22278 size: this.fileSize,
22279 name: this.fileName
22280 })
22281 }).then(function (res) {
22282 if (res.status !== 'success') {
22283 _this2.file.response = res;
22284 return _this2.reject('server');
22285 }
22286
22287 _this2.sessionId = res.data.session_id;
22288 _this2.chunkSize = res.data.end_offset;
22289
22290 _this2.createChunks();
22291 _this2.startChunking();
22292 }).catch(function (res) {
22293 _this2.file.response = res;
22294 _this2.reject('server');
22295 });
22296 }
22297
22298 /**
22299 * Starts to upload chunks
22300 */
22301
22302 }, {
22303 key: 'startChunking',
22304 value: function startChunking() {
22305 for (var i = 0; i < this.maxActiveChunks; i++) {
22306 this.uploadNextChunk();
22307 }
22308 }
22309
22310 /**
22311 * Uploads the next chunk
22312 * - Won't do anything if the process is paused
22313 * - Will start finish phase if there are no more chunks to upload
22314 */
22315
22316 }, {
22317 key: 'uploadNextChunk',
22318 value: function uploadNextChunk() {
22319 if (this.file.active) {
22320 if (this.hasChunksToUpload) {
22321 return this.uploadChunk(this.chunksToUpload[0]);
22322 }
22323
22324 if (this.chunksUploading.length === 0) {
22325 return this.finish();
22326 }
22327 }
22328 }
22329
22330 /**
22331 * Uploads a chunk
22332 * - Sends the chunk to the backend
22333 * - Sets the chunk as uploaded if everything went well
22334 * - Decreases the number of retries if anything went wrong
22335 * - Fails if there are no more retries
22336 *
22337 * @param {Object} chunk
22338 */
22339
22340 }, {
22341 key: 'uploadChunk',
22342 value: function uploadChunk(chunk) {
22343 var _this3 = this;
22344
22345 chunk.progress = 0;
22346 chunk.active = true;
22347 this.updateFileProgress();
22348 chunk.xhr = createRequest({
22349 method: 'POST',
22350 headers: this.headers,
22351 url: this.action
22352 });
22353
22354 chunk.xhr.upload.addEventListener('progress', function (evt) {
22355 if (evt.lengthComputable) {
22356 chunk.progress = Math.round(evt.loaded / evt.total * 100);
22357 }
22358 }, false);
22359
22360 sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {
22361 phase: 'upload',
22362 session_id: this.sessionId,
22363 start_offset: chunk.startOffset,
22364 chunk: chunk.blob
22365 })).then(function (res) {
22366 chunk.active = false;
22367 if (res.status === 'success') {
22368 chunk.uploaded = true;
22369 } else {
22370 if (chunk.retries-- <= 0) {
22371 _this3.stopChunks();
22372 return _this3.reject('upload');
22373 }
22374 }
22375
22376 _this3.uploadNextChunk();
22377 }).catch(function () {
22378 chunk.active = false;
22379 if (chunk.retries-- <= 0) {
22380 _this3.stopChunks();
22381 return _this3.reject('upload');
22382 }
22383
22384 _this3.uploadNextChunk();
22385 });
22386 }
22387
22388 /**
22389 * Finish phase
22390 * Sends a request to the backend to finish the process
22391 */
22392
22393 }, {
22394 key: 'finish',
22395 value: function finish() {
22396 var _this4 = this;
22397
22398 this.updateFileProgress();
22399
22400 request({
22401 method: 'POST',
22402 headers: Object.assign({}, this.headers, {
22403 'Content-Type': 'application/json'
22404 }),
22405 url: this.action,
22406 body: Object.assign(this.finishBody, {
22407 phase: 'finish',
22408 session_id: this.sessionId
22409 })
22410 }).then(function (res) {
22411 _this4.file.response = res;
22412 if (res.status !== 'success') {
22413 return _this4.reject('server');
22414 }
22415
22416 _this4.resolve(res);
22417 }).catch(function (res) {
22418 _this4.file.response = res;
22419 _this4.reject('server');
22420 });
22421 }
22422 }, {
22423 key: 'maxRetries',
22424 get: function get() {
22425 return parseInt(this.options.maxRetries);
22426 }
22427
22428 /**
22429 * Gets the max number of active chunks being uploaded at once from options
22430 */
22431
22432 }, {
22433 key: 'maxActiveChunks',
22434 get: function get() {
22435 return parseInt(this.options.maxActive);
22436 }
22437
22438 /**
22439 * Gets the file type
22440 */
22441
22442 }, {
22443 key: 'fileType',
22444 get: function get() {
22445 return this.file.type;
22446 }
22447
22448 /**
22449 * Gets the file size
22450 */
22451
22452 }, {
22453 key: 'fileSize',
22454 get: function get() {
22455 return this.file.size;
22456 }
22457
22458 /**
22459 * Gets the file name
22460 */
22461
22462 }, {
22463 key: 'fileName',
22464 get: function get() {
22465 return this.file.name;
22466 }
22467
22468 /**
22469 * Gets action (url) to upload the file
22470 */
22471
22472 }, {
22473 key: 'action',
22474 get: function get() {
22475 return this.options.action || null;
22476 }
22477
22478 /**
22479 * Gets the body to be merged when sending the request in start phase
22480 */
22481
22482 }, {
22483 key: 'startBody',
22484 get: function get() {
22485 return this.options.startBody || {};
22486 }
22487
22488 /**
22489 * Gets the body to be merged when sending the request in upload phase
22490 */
22491
22492 }, {
22493 key: 'uploadBody',
22494 get: function get() {
22495 return this.options.uploadBody || {};
22496 }
22497
22498 /**
22499 * Gets the body to be merged when sending the request in finish phase
22500 */
22501
22502 }, {
22503 key: 'finishBody',
22504 get: function get() {
22505 return this.options.finishBody || {};
22506 }
22507
22508 /**
22509 * Gets the headers of the requests from options
22510 */
22511
22512 }, {
22513 key: 'headers',
22514 get: function get() {
22515 return this.options.headers || {};
22516 }
22517
22518 /**
22519 * Whether it's ready to upload files or not
22520 */
22521
22522 }, {
22523 key: 'readyToUpload',
22524 get: function get() {
22525 return !!this.chunks;
22526 }
22527
22528 /**
22529 * Gets the progress of the chunk upload
22530 * - Gets all the completed chunks
22531 * - Gets the progress of all the chunks that are being uploaded
22532 */
22533
22534 }, {
22535 key: 'progress',
22536 get: function get() {
22537 var _this5 = this;
22538
22539 var completedProgress = this.chunksUploaded.length / this.chunks.length * 100;
22540 var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) {
22541 return progress + (chunk.progress | 0) / _this5.chunks.length;
22542 }, 0);
22543
22544 return Math.min(completedProgress + uploadingProgress, 100);
22545 }
22546
22547 /**
22548 * Gets all the chunks that are pending to be uploaded
22549 */
22550
22551 }, {
22552 key: 'chunksToUpload',
22553 get: function get() {
22554 return this.chunks.filter(function (chunk) {
22555 return !chunk.active && !chunk.uploaded;
22556 });
22557 }
22558
22559 /**
22560 * Whether there are chunks to upload or not
22561 */
22562
22563 }, {
22564 key: 'hasChunksToUpload',
22565 get: function get() {
22566 return this.chunksToUpload.length > 0;
22567 }
22568
22569 /**
22570 * Gets all the chunks that are uploading
22571 */
22572
22573 }, {
22574 key: 'chunksUploading',
22575 get: function get() {
22576 return this.chunks.filter(function (chunk) {
22577 return !!chunk.xhr && !!chunk.active;
22578 });
22579 }
22580
22581 /**
22582 * Gets all the chunks that have finished uploading
22583 */
22584
22585 }, {
22586 key: 'chunksUploaded',
22587 get: function get() {
22588 return this.chunks.filter(function (chunk) {
22589 return !!chunk.uploaded;
22590 });
22591 }
22592 }]);
22593
22594 return ChunkUploadHandler;
22595 }();
22596
22597 //
22598 //
22599 //
22600 //
22601 //
22602 //
22603 //
22604 //
22605 //
22606 //
22607 //
22608 //
22609 //
22610 //
22611
22612 var script = {
22613 methods: {
22614 change: function change(e) {
22615 this.$parent.addInputFile(e.target);
22616 if (e.target.files) {
22617 e.target.value = '';
22618 if (!/safari/i.test(navigator.userAgent)) {
22619 e.target.type = '';
22620 e.target.type = 'file';
22621 }
22622 } else {
22623 // ie9 fix #219
22624 this.$destroy();
22625 // eslint-disable-next-line
22626 new this.constructor({
22627 parent: this.$parent,
22628 el: this.$el
22629 });
22630 }
22631 }
22632 }
22633 };
22634
22635 /* script */
22636 var __vue_script__ = script;
22637
22638 /* template */
22639 var __vue_render__ = function __vue_render__() {
22640 var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { "type": "file", "name": _vm.$parent.name, "id": _vm.$parent.inputId || _vm.$parent.name, "accept": _vm.$parent.accept, "capture": _vm.$parent.capture, "disabled": _vm.$parent.disabled, "webkitdirectory": _vm.$parent.directory && _vm.$parent.features.directory, "directory": _vm.$parent.directory && _vm.$parent.features.directory, "multiple": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { "change": _vm.change } });
22641 };
22642 var __vue_staticRenderFns__ = [];
22643
22644 /* style */
22645 var __vue_inject_styles__ = undefined;
22646 /* scoped */
22647 var __vue_scope_id__ = undefined;
22648 /* module identifier */
22649 var __vue_module_identifier__ = undefined;
22650 /* functional template */
22651 var __vue_is_functional_template__ = false;
22652 /* component normalizer */
22653 function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {
22654 var component = (typeof script$$1 === 'function' ? script$$1.options : script$$1) || {};
22655
22656 if (!component.render) {
22657 component.render = template.render;
22658 component.staticRenderFns = template.staticRenderFns;
22659 component._compiled = true;
22660
22661 if (functional) component.functional = true;
22662 }
22663
22664 component._scopeId = scope;
22665
22666 return component;
22667 }
22668 /* style inject */
22669 function __vue_create_injector__() {
22670 var head = document.head || document.getElementsByTagName('head')[0];
22671 var styles = __vue_create_injector__.styles || (__vue_create_injector__.styles = {});
22672 var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());
22673
22674 return function addStyle(id, css) {
22675 if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present.
22676
22677 var group = isOldIE ? css.media || 'default' : id;
22678 var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });
22679
22680 if (!style.ids.includes(id)) {
22681 var code = css.source;
22682 var index = style.ids.length;
22683
22684 style.ids.push(id);
22685
22686 if (css.map) {
22687 // https://developer.chrome.com/devtools/docs/javascript-debugging
22688 // this makes source maps inside style tags work properly in Chrome
22689 code += '\n/*# sourceURL=' + css.map.sources[0] + ' */';
22690 // http://stackoverflow.com/a/26603875
22691 code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';
22692 }
22693
22694 if (isOldIE) {
22695 style.element = style.element || document.querySelector('style[data-group=' + group + ']');
22696 }
22697
22698 if (!style.element) {
22699 var el = style.element = document.createElement('style');
22700 el.type = 'text/css';
22701
22702 if (css.media) el.setAttribute('media', css.media);
22703 if (isOldIE) {
22704 el.setAttribute('data-group', group);
22705 el.setAttribute('data-next-index', '0');
22706 }
22707
22708 head.appendChild(el);
22709 }
22710
22711 if (isOldIE) {
22712 index = parseInt(style.element.getAttribute('data-next-index'));
22713 style.element.setAttribute('data-next-index', index + 1);
22714 }
22715
22716 if (style.element.styleSheet) {
22717 style.parts.push(code);
22718 style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n');
22719 } else {
22720 var textNode = document.createTextNode(code);
22721 var nodes = style.element.childNodes;
22722 if (nodes[index]) style.element.removeChild(nodes[index]);
22723 if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);
22724 }
22725 }
22726 };
22727 }
22728 /* style inject SSR */
22729
22730 var InputFile = __vue_normalize__({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, __vue_create_injector__, undefined);
22731
22732 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
22733
22734 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
22735
22736 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
22737
22738 var CHUNK_DEFAULT_OPTIONS = {
22739 headers: {},
22740 action: '',
22741 minSize: 1048576,
22742 maxActive: 3,
22743 maxRetries: 5,
22744
22745 handler: ChunkUploadHandler
22746 };
22747
22748 var script$1 = {
22749 components: {
22750 InputFile: InputFile
22751 },
22752 props: {
22753 inputId: {
22754 type: String
22755 },
22756
22757 name: {
22758 type: String,
22759 default: 'file'
22760 },
22761
22762 accept: {
22763 type: String
22764 },
22765
22766 capture: {},
22767
22768 disabled: {},
22769
22770 multiple: {
22771 type: Boolean
22772 },
22773
22774 maximum: {
22775 type: Number,
22776 default: function _default() {
22777 return this.multiple ? 0 : 1;
22778 }
22779 },
22780
22781 addIndex: {
22782 type: [Boolean, Number]
22783 },
22784
22785 directory: {
22786 type: Boolean
22787 },
22788
22789 postAction: {
22790 type: String
22791 },
22792
22793 putAction: {
22794 type: String
22795 },
22796
22797 customAction: {
22798 type: Function
22799 },
22800
22801 headers: {
22802 type: Object,
22803 default: Object
22804 },
22805
22806 data: {
22807 type: Object,
22808 default: Object
22809 },
22810
22811 timeout: {
22812 type: Number,
22813 default: 0
22814 },
22815
22816 drop: {
22817 default: false
22818 },
22819
22820 dropDirectory: {
22821 type: Boolean,
22822 default: true
22823 },
22824
22825 size: {
22826 type: Number,
22827 default: 0
22828 },
22829
22830 extensions: {
22831 default: Array
22832 },
22833
22834 value: {
22835 type: Array,
22836 default: Array
22837 },
22838
22839 thread: {
22840 type: Number,
22841 default: 1
22842 },
22843
22844 // Chunk upload enabled
22845 chunkEnabled: {
22846 type: Boolean,
22847 default: false
22848 },
22849
22850 // Chunk upload properties
22851 chunk: {
22852 type: Object,
22853 default: function _default() {
22854 return CHUNK_DEFAULT_OPTIONS;
22855 }
22856 }
22857 },
22858
22859 data: function data() {
22860 return {
22861 files: this.value,
22862 features: {
22863 html5: true,
22864 directory: false,
22865 drag: false
22866 },
22867
22868 active: false,
22869 dropActive: false,
22870
22871 uploading: 0,
22872
22873 destroy: false
22874 };
22875 },
22876
22877
22878 /**
22879 * mounted
22880 * @return {[type]} [description]
22881 */
22882 mounted: function mounted() {
22883 var input = document.createElement('input');
22884 input.type = 'file';
22885 input.multiple = true;
22886
22887 // html5 特征
22888 if (window.FormData && input.files) {
22889 // 上传目录特征
22890 if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {
22891 this.features.directory = true;
22892 }
22893
22894 // 拖拽特征
22895 if (this.features.html5 && typeof input.ondrop !== 'undefined') {
22896 this.features.drop = true;
22897 }
22898 } else {
22899 this.features.html5 = false;
22900 }
22901
22902 // files 定位缓存
22903 this.maps = {};
22904 if (this.files) {
22905 for (var i = 0; i < this.files.length; i++) {
22906 var file = this.files[i];
22907 this.maps[file.id] = file;
22908 }
22909 }
22910
22911 this.$nextTick(function () {
22912
22913 // 更新下父级
22914 if (this.$parent) {
22915 this.$parent.$forceUpdate();
22916 }
22917
22918 // 拖拽渲染
22919 this.watchDrop(this.drop);
22920 });
22921 },
22922
22923
22924 /**
22925 * beforeDestroy
22926 * @return {[type]} [description]
22927 */
22928 beforeDestroy: function beforeDestroy() {
22929 // 已销毁
22930 this.destroy = true;
22931
22932 // 设置成不激活
22933 this.active = false;
22934 },
22935
22936
22937 computed: {
22938 /**
22939 * uploading 正在上传的线程
22940 * @return {[type]} [description]
22941 */
22942
22943 /**
22944 * uploaded 文件列表是否全部已上传
22945 * @return {[type]} [description]
22946 */
22947 uploaded: function uploaded() {
22948 var file = void 0;
22949 for (var i = 0; i < this.files.length; i++) {
22950 file = this.files[i];
22951 if (file.fileObject && !file.error && !file.success) {
22952 return false;
22953 }
22954 }
22955 return true;
22956 },
22957 chunkOptions: function chunkOptions() {
22958 return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk);
22959 },
22960 className: function className() {
22961 return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined, this.disabled ? 'file-uploads-disabled' : undefined];
22962 }
22963 },
22964
22965 watch: {
22966 active: function active(_active) {
22967 this.watchActive(_active);
22968 },
22969 dropActive: function dropActive() {
22970 if (this.$parent) {
22971 this.$parent.$forceUpdate();
22972 }
22973 },
22974 drop: function drop(value) {
22975 this.watchDrop(value);
22976 },
22977 value: function value(files) {
22978 if (this.files === files) {
22979 return;
22980 }
22981 this.files = files;
22982
22983 var oldMaps = this.maps;
22984
22985 // 重写 maps 缓存
22986 this.maps = {};
22987 for (var i = 0; i < this.files.length; i++) {
22988 var file = this.files[i];
22989 this.maps[file.id] = file;
22990 }
22991
22992 // add, update
22993 for (var key in this.maps) {
22994 var newFile = this.maps[key];
22995 var oldFile = oldMaps[key];
22996 if (newFile !== oldFile) {
22997 this.emitFile(newFile, oldFile);
22998 }
22999 }
23000
23001 // delete
23002 for (var _key in oldMaps) {
23003 if (!this.maps[_key]) {
23004 this.emitFile(undefined, oldMaps[_key]);
23005 }
23006 }
23007 }
23008 },
23009
23010 methods: {
23011
23012 // 清空
23013 clear: function clear() {
23014 if (this.files.length) {
23015 var files = this.files;
23016 this.files = [];
23017
23018 // 定位
23019 this.maps = {};
23020
23021 // 事件
23022 this.emitInput();
23023 for (var i = 0; i < files.length; i++) {
23024 this.emitFile(undefined, files[i]);
23025 }
23026 }
23027 return true;
23028 },
23029
23030
23031 // 选择
23032 get: function get(id) {
23033 if (!id) {
23034 return false;
23035 }
23036
23037 if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') {
23038 return this.maps[id.id] || false;
23039 }
23040
23041 return this.maps[id] || false;
23042 },
23043
23044
23045 // 添加
23046 add: function add(_files) {
23047 var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex;
23048
23049 var files = _files;
23050 var isArray = files instanceof Array;
23051
23052 // 不是数组整理成数组
23053 if (!isArray) {
23054 files = [files];
23055 }
23056
23057 // 遍历规范对象
23058 var addFiles = [];
23059 for (var i = 0; i < files.length; i++) {
23060 var file = files[i];
23061 if (this.features.html5 && file instanceof Blob) {
23062 file = {
23063 file: file,
23064 size: file.size,
23065 name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',
23066 type: file.type
23067 };
23068 }
23069 var fileObject = false;
23070 if (file.fileObject === false) ; else if (file.fileObject) {
23071 fileObject = true;
23072 } else if (typeof Element !== 'undefined' && file.el instanceof Element) {
23073 fileObject = true;
23074 } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {
23075 fileObject = true;
23076 }
23077 if (fileObject) {
23078 file = _extends({
23079 fileObject: true,
23080 size: -1,
23081 name: 'Filename',
23082 type: '',
23083 active: false,
23084 error: '',
23085 success: false,
23086 putAction: this.putAction,
23087 postAction: this.postAction,
23088 timeout: this.timeout
23089 }, file, {
23090 response: {},
23091
23092 progress: '0.00', // 只读
23093 speed: 0 // 只读
23094 // xhr: false, // 只读
23095 // iframe: false, // 只读
23096 });
23097
23098 file.data = _extends({}, this.data, file.data ? file.data : {});
23099
23100 file.headers = _extends({}, this.headers, file.headers ? file.headers : {});
23101 }
23102
23103 // 必须包含 id
23104 if (!file.id) {
23105 file.id = Math.random().toString(36).substr(2);
23106 }
23107
23108 if (this.emitFilter(file, undefined)) {
23109 continue;
23110 }
23111
23112 // 最大数量限制
23113 if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) {
23114 break;
23115 }
23116
23117 addFiles.push(file);
23118
23119 // 最大数量限制
23120 if (this.maximum === 1) {
23121 break;
23122 }
23123 }
23124
23125 // 没有文件
23126 if (!addFiles.length) {
23127 return false;
23128 }
23129
23130 // 如果是 1 清空
23131 if (this.maximum === 1) {
23132 this.clear();
23133 }
23134
23135 // 添加进去 files
23136 var newFiles = void 0;
23137 if (index === true || index === 0) {
23138 newFiles = addFiles.concat(this.files);
23139 } else if (index) {
23140 var _newFiles;
23141
23142 newFiles = this.files.concat([]);
23143 (_newFiles = newFiles).splice.apply(_newFiles, [index, 0].concat(addFiles));
23144 } else {
23145 newFiles = this.files.concat(addFiles);
23146 }
23147
23148 this.files = newFiles;
23149
23150 // 定位
23151 for (var _i = 0; _i < addFiles.length; _i++) {
23152 var _file2 = addFiles[_i];
23153 this.maps[_file2.id] = _file2;
23154 }
23155
23156 // 事件
23157 this.emitInput();
23158 for (var _i2 = 0; _i2 < addFiles.length; _i2++) {
23159 this.emitFile(addFiles[_i2], undefined);
23160 }
23161
23162 return isArray ? addFiles : addFiles[0];
23163 },
23164
23165
23166 // 添加表单文件
23167 addInputFile: function addInputFile(el) {
23168 var files = [];
23169 if (el.files) {
23170 for (var i = 0; i < el.files.length; i++) {
23171 var file = el.files[i];
23172 files.push({
23173 size: file.size,
23174 name: file.webkitRelativePath || file.relativePath || file.name,
23175 type: file.type,
23176 file: file
23177 });
23178 }
23179 } else {
23180 var names = el.value.replace(/\\/g, '/').split('/');
23181 delete el.__vuex__;
23182 files.push({
23183 name: names[names.length - 1],
23184 el: el
23185 });
23186 }
23187 return this.add(files);
23188 },
23189
23190
23191 // 添加 DataTransfer
23192 addDataTransfer: function addDataTransfer(dataTransfer) {
23193 var _this = this;
23194
23195 var files = [];
23196 if (dataTransfer.items && dataTransfer.items.length) {
23197 var items = [];
23198 for (var i = 0; i < dataTransfer.items.length; i++) {
23199 var item = dataTransfer.items[i];
23200 if (item.getAsEntry) {
23201 item = item.getAsEntry() || item.getAsFile();
23202 } else if (item.webkitGetAsEntry) {
23203 item = item.webkitGetAsEntry() || item.getAsFile();
23204 } else {
23205 item = item.getAsFile();
23206 }
23207 if (item) {
23208 items.push(item);
23209 }
23210 }
23211
23212 return new Promise(function (resolve, reject) {
23213 var forEach = function forEach(i) {
23214 var item = items[i];
23215 // 结束 文件数量大于 最大数量
23216 if (!item || _this.maximum > 0 && files.length >= _this.maximum) {
23217 return resolve(_this.add(files));
23218 }
23219 _this.getEntry(item).then(function (results) {
23220 files.push.apply(files, _toConsumableArray(results));
23221 forEach(i + 1);
23222 });
23223 };
23224 forEach(0);
23225 });
23226 }
23227
23228 if (dataTransfer.files.length) {
23229 for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
23230 files.push(dataTransfer.files[_i3]);
23231 if (this.maximum > 0 && files.length >= this.maximum) {
23232 break;
23233 }
23234 }
23235 return Promise.resolve(this.add(files));
23236 }
23237
23238 return Promise.resolve([]);
23239 },
23240
23241
23242 // 获得 entry
23243 getEntry: function getEntry(entry) {
23244 var _this2 = this;
23245
23246 var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
23247
23248 return new Promise(function (resolve, reject) {
23249 if (entry.isFile) {
23250 entry.file(function (file) {
23251 resolve([{
23252 size: file.size,
23253 name: path + file.name,
23254 type: file.type,
23255 file: file
23256 }]);
23257 });
23258 } else if (entry.isDirectory && _this2.dropDirectory) {
23259 var files = [];
23260 var dirReader = entry.createReader();
23261 var readEntries = function readEntries() {
23262 dirReader.readEntries(function (entries) {
23263 var forEach = function forEach(i) {
23264 if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) {
23265 return resolve(files);
23266 }
23267 if (!entries[i]) {
23268 return readEntries();
23269 }
23270 _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) {
23271 files.push.apply(files, _toConsumableArray(results));
23272 forEach(i + 1);
23273 });
23274 };
23275 forEach(0);
23276 });
23277 };
23278 readEntries();
23279 } else {
23280 resolve([]);
23281 }
23282 });
23283 },
23284 replace: function replace(id1, id2) {
23285 var file1 = this.get(id1);
23286 var file2 = this.get(id2);
23287 if (!file1 || !file2 || file1 === file2) {
23288 return false;
23289 }
23290 var files = this.files.concat([]);
23291 var index1 = files.indexOf(file1);
23292 var index2 = files.indexOf(file2);
23293 if (index1 === -1 || index2 === -1) {
23294 return false;
23295 }
23296 files[index1] = file2;
23297 files[index2] = file1;
23298 this.files = files;
23299 this.emitInput();
23300 return true;
23301 },
23302
23303
23304 // 移除
23305 remove: function remove(id) {
23306 var file = this.get(id);
23307 if (file) {
23308 if (this.emitFilter(undefined, file)) {
23309 return false;
23310 }
23311 var files = this.files.concat([]);
23312 var index = files.indexOf(file);
23313 if (index === -1) {
23314 console.error('remove', file);
23315 return false;
23316 }
23317 files.splice(index, 1);
23318 this.files = files;
23319
23320 // 定位
23321 delete this.maps[file.id];
23322
23323 // 事件
23324 this.emitInput();
23325 this.emitFile(undefined, file);
23326 }
23327 return file;
23328 },
23329
23330
23331 // 更新
23332 update: function update(id, data) {
23333 var file = this.get(id);
23334 if (file) {
23335 var newFile = _extends({}, file, data);
23336 // 停用必须加上错误
23337 if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {
23338 newFile.error = 'abort';
23339 }
23340
23341 if (this.emitFilter(newFile, file)) {
23342 return false;
23343 }
23344
23345 var files = this.files.concat([]);
23346 var index = files.indexOf(file);
23347 if (index === -1) {
23348 console.error('update', file);
23349 return false;
23350 }
23351 files.splice(index, 1, newFile);
23352 this.files = files;
23353
23354 // 删除 旧定位 写入 新定位 (已便支持修改id)
23355 delete this.maps[file.id];
23356 this.maps[newFile.id] = newFile;
23357
23358 // 事件
23359 this.emitInput();
23360 this.emitFile(newFile, file);
23361 return newFile;
23362 }
23363 return false;
23364 },
23365
23366
23367 // 预处理 事件 过滤器
23368 emitFilter: function emitFilter(newFile, oldFile) {
23369 var isPrevent = false;
23370 this.$emit('input-filter', newFile, oldFile, function () {
23371 isPrevent = true;
23372 return isPrevent;
23373 });
23374 return isPrevent;
23375 },
23376
23377
23378 // 处理后 事件 分发
23379 emitFile: function emitFile(newFile, oldFile) {
23380 this.$emit('input-file', newFile, oldFile);
23381 if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {
23382 this.uploading++;
23383 // 激活
23384 this.$nextTick(function () {
23385 var _this3 = this;
23386
23387 setTimeout(function () {
23388 _this3.upload(newFile).then(function () {
23389 // eslint-disable-next-line
23390 newFile = _this3.get(newFile);
23391 if (newFile && newFile.fileObject) {
23392 _this3.update(newFile, {
23393 active: false,
23394 success: !newFile.error
23395 });
23396 }
23397 }).catch(function (e) {
23398 _this3.update(newFile, {
23399 active: false,
23400 success: false,
23401 error: e.code || e.error || e.message || e
23402 });
23403 });
23404 }, parseInt(Math.random() * 50 + 50, 10));
23405 });
23406 } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {
23407 // 停止
23408 this.uploading--;
23409 }
23410
23411 // 自动延续激活
23412 if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {
23413 this.watchActive(true);
23414 }
23415 },
23416 emitInput: function emitInput() {
23417 this.$emit('input', this.files);
23418 },
23419
23420
23421 // 上传
23422 upload: function upload(id) {
23423 var file = this.get(id);
23424
23425 // 被删除
23426 if (!file) {
23427 return Promise.reject('not_exists');
23428 }
23429
23430 // 不是文件对象
23431 if (!file.fileObject) {
23432 return Promise.reject('file_object');
23433 }
23434
23435 // 有错误直接响应
23436 if (file.error) {
23437 return Promise.reject(file.error);
23438 }
23439
23440 // 已完成直接响应
23441 if (file.success) {
23442 return Promise.resolve(file);
23443 }
23444
23445 // 后缀
23446 var extensions = this.extensions;
23447 if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {
23448 if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) {
23449 if (typeof extensions === 'string') {
23450 extensions = extensions.split(',').map(function (value) {
23451 return value.trim();
23452 }).filter(function (value) {
23453 return value;
23454 });
23455 }
23456 extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i');
23457 }
23458 if (file.name.search(extensions) === -1) {
23459 return Promise.reject('extension');
23460 }
23461 }
23462
23463 // 大小
23464 if (this.size > 0 && file.size >= 0 && file.size > this.size) {
23465 return Promise.reject('size');
23466 }
23467
23468 if (this.customAction) {
23469 return this.customAction(file, this);
23470 }
23471
23472 if (this.features.html5) {
23473 if (this.shouldUseChunkUpload(file)) {
23474 return this.uploadChunk(file);
23475 }
23476 if (file.putAction) {
23477 return this.uploadPut(file);
23478 }
23479 if (file.postAction) {
23480 return this.uploadHtml5(file);
23481 }
23482 }
23483 if (file.postAction) {
23484 return this.uploadHtml4(file);
23485 }
23486 return Promise.reject('No action configured');
23487 },
23488
23489
23490 /**
23491 * Whether this file should be uploaded using chunk upload or not
23492 *
23493 * @param Object file
23494 */
23495 shouldUseChunkUpload: function shouldUseChunkUpload(file) {
23496 return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize;
23497 },
23498
23499
23500 /**
23501 * Upload a file using Chunk method
23502 *
23503 * @param File file
23504 */
23505 uploadChunk: function uploadChunk(file) {
23506 var HandlerClass = this.chunkOptions.handler;
23507 file.chunk = new HandlerClass(file, this.chunkOptions);
23508
23509 return file.chunk.upload();
23510 },
23511 uploadPut: function uploadPut(file) {
23512 var querys = [];
23513 var value = void 0;
23514 for (var key in file.data) {
23515 value = file.data[key];
23516 if (value !== null && value !== undefined) {
23517 querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
23518 }
23519 }
23520 var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : '';
23521 var xhr = new XMLHttpRequest();
23522 xhr.open('PUT', file.putAction + queryString);
23523 return this.uploadXhr(xhr, file, file.file);
23524 },
23525 uploadHtml5: function uploadHtml5(file) {
23526 var form = new window.FormData();
23527 var value = void 0;
23528 for (var key in file.data) {
23529 value = file.data[key];
23530 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {
23531 if (value instanceof File) {
23532 form.append(key, value, value.name);
23533 } else {
23534 form.append(key, JSON.stringify(value));
23535 }
23536 } else if (value !== null && value !== undefined) {
23537 form.append(key, value);
23538 }
23539 }
23540 form.append(this.name, file.file, file.file.filename || file.name);
23541 var xhr = new XMLHttpRequest();
23542 xhr.open('POST', file.postAction);
23543 return this.uploadXhr(xhr, file, form);
23544 },
23545 uploadXhr: function uploadXhr(xhr, _file, body) {
23546 var _this4 = this;
23547
23548 var file = _file;
23549 var speedTime = 0;
23550 var speedLoaded = 0;
23551
23552 // 进度条
23553 xhr.upload.onprogress = function (e) {
23554 // 还未开始上传 已删除 未激活
23555 file = _this4.get(file);
23556 if (!e.lengthComputable || !file || !file.fileObject || !file.active) {
23557 return;
23558 }
23559
23560 // 进度 速度 每秒更新一次
23561 var speedTime2 = Math.round(Date.now() / 1000);
23562 if (speedTime2 === speedTime) {
23563 return;
23564 }
23565 speedTime = speedTime2;
23566
23567 file = _this4.update(file, {
23568 progress: (e.loaded / e.total * 100).toFixed(2),
23569 speed: e.loaded - speedLoaded
23570 });
23571 speedLoaded = e.loaded;
23572 };
23573
23574 // 检查激活状态
23575 var interval = setInterval(function () {
23576 file = _this4.get(file);
23577 if (file && file.fileObject && !file.success && !file.error && file.active) {
23578 return;
23579 }
23580
23581 if (interval) {
23582 clearInterval(interval);
23583 interval = false;
23584 }
23585
23586 try {
23587 xhr.abort();
23588 xhr.timeout = 1;
23589 } catch (e) {}
23590 }, 100);
23591
23592 return new Promise(function (resolve, reject) {
23593 var complete = void 0;
23594 var fn = function fn(e) {
23595 // 已经处理过了
23596 if (complete) {
23597 return;
23598 }
23599 complete = true;
23600 if (interval) {
23601 clearInterval(interval);
23602 interval = false;
23603 }
23604
23605 file = _this4.get(file);
23606
23607 // 不存在直接响应
23608 if (!file) {
23609 return reject('not_exists');
23610 }
23611
23612 // 不是文件对象
23613 if (!file.fileObject) {
23614 return reject('file_object');
23615 }
23616
23617 // 有错误自动响应
23618 if (file.error) {
23619 return reject(file.error);
23620 }
23621
23622 // 未激活
23623 if (!file.active) {
23624 return reject('abort');
23625 }
23626
23627 // 已完成 直接相应
23628 if (file.success) {
23629 return resolve(file);
23630 }
23631
23632 var data = {};
23633
23634 switch (e.type) {
23635 case 'timeout':
23636 case 'abort':
23637 data.error = e.type;
23638 break;
23639 case 'error':
23640 if (!xhr.status) {
23641 data.error = 'network';
23642 } else if (xhr.status >= 500) {
23643 data.error = 'server';
23644 } else if (xhr.status >= 400) {
23645 data.error = 'denied';
23646 }
23647 break;
23648 default:
23649 if (xhr.status >= 500) {
23650 data.error = 'server';
23651 } else if (xhr.status >= 400) {
23652 data.error = 'denied';
23653 } else {
23654 data.progress = '100.00';
23655 }
23656 }
23657
23658 if (xhr.responseText) {
23659 var contentType = xhr.getResponseHeader('Content-Type');
23660 if (contentType && contentType.indexOf('/json') !== -1) {
23661 data.response = JSON.parse(xhr.responseText);
23662 } else {
23663 data.response = xhr.responseText;
23664 }
23665 }
23666
23667 // 更新
23668 file = _this4.update(file, data);
23669
23670 // 相应错误
23671 if (file.error) {
23672 return reject(file.error);
23673 }
23674
23675 // 响应
23676 return resolve(file);
23677 };
23678
23679 // 事件
23680 xhr.onload = fn;
23681 xhr.onerror = fn;
23682 xhr.onabort = fn;
23683 xhr.ontimeout = fn;
23684
23685 // 超时
23686 if (file.timeout) {
23687 xhr.timeout = file.timeout;
23688 }
23689
23690 // headers
23691 for (var key in file.headers) {
23692 xhr.setRequestHeader(key, file.headers[key]);
23693 }
23694
23695 // 更新 xhr
23696 file = _this4.update(file, { xhr: xhr });
23697
23698 // 开始上传
23699 xhr.send(body);
23700 });
23701 },
23702 uploadHtml4: function uploadHtml4(_file) {
23703 var _this5 = this;
23704
23705 var file = _file;
23706 var onKeydown = function onKeydown(e) {
23707 if (e.keyCode === 27) {
23708 e.preventDefault();
23709 }
23710 };
23711
23712 var iframe = document.createElement('iframe');
23713 iframe.id = 'upload-iframe-' + file.id;
23714 iframe.name = 'upload-iframe-' + file.id;
23715 iframe.src = 'about:blank';
23716 iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;');
23717
23718 var form = document.createElement('form');
23719
23720 form.action = file.postAction;
23721
23722 form.name = 'upload-form-' + file.id;
23723
23724 form.setAttribute('method', 'POST');
23725 form.setAttribute('target', 'upload-iframe-' + file.id);
23726 form.setAttribute('enctype', 'multipart/form-data');
23727
23728 var value = void 0;
23729 var input = void 0;
23730 for (var key in file.data) {
23731 value = file.data[key];
23732 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {
23733 value = JSON.stringify(value);
23734 }
23735 if (value !== null && value !== undefined) {
23736 input = document.createElement('input');
23737 input.type = 'hidden';
23738 input.name = key;
23739 input.value = value;
23740 form.appendChild(input);
23741 }
23742 }
23743 form.appendChild(file.el);
23744
23745 document.body.appendChild(iframe).appendChild(form);
23746
23747 var getResponseData = function getResponseData() {
23748 var doc = void 0;
23749 try {
23750 if (iframe.contentWindow) {
23751 doc = iframe.contentWindow.document;
23752 }
23753 } catch (err) {}
23754 if (!doc) {
23755 try {
23756 doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;
23757 } catch (err) {
23758 doc = iframe.document;
23759 }
23760 }
23761 if (doc && doc.body) {
23762 return doc.body.innerHTML;
23763 }
23764 return null;
23765 };
23766
23767 return new Promise(function (resolve, reject) {
23768 setTimeout(function () {
23769 file = _this5.update(file, { iframe: iframe });
23770
23771 // 不存在
23772 if (!file) {
23773 return reject('not_exists');
23774 }
23775
23776 // 定时检查
23777 var interval = setInterval(function () {
23778 file = _this5.get(file);
23779 if (file && file.fileObject && !file.success && !file.error && file.active) {
23780 return;
23781 }
23782
23783 if (interval) {
23784 clearInterval(interval);
23785 interval = false;
23786 }
23787
23788 iframe.onabort({ type: file ? 'abort' : 'not_exists' });
23789 }, 100);
23790
23791 var complete = void 0;
23792 var fn = function fn(e) {
23793 // 已经处理过了
23794 if (complete) {
23795 return;
23796 }
23797 complete = true;
23798
23799 if (interval) {
23800 clearInterval(interval);
23801 interval = false;
23802 }
23803
23804 // 关闭 esc 事件
23805 document.body.removeEventListener('keydown', onKeydown);
23806
23807 file = _this5.get(file);
23808
23809 // 不存在直接响应
23810 if (!file) {
23811 return reject('not_exists');
23812 }
23813
23814 // 不是文件对象
23815 if (!file.fileObject) {
23816 return reject('file_object');
23817 }
23818
23819 // 有错误自动响应
23820 if (file.error) {
23821 return reject(file.error);
23822 }
23823
23824 // 未激活
23825 if (!file.active) {
23826 return reject('abort');
23827 }
23828
23829 // 已完成 直接相应
23830 if (file.success) {
23831 return resolve(file);
23832 }
23833
23834 var response = getResponseData();
23835 var data = {};
23836 switch (e.type) {
23837 case 'abort':
23838 data.error = 'abort';
23839 break;
23840 case 'error':
23841 if (file.error) {
23842 data.error = file.error;
23843 } else if (response === null) {
23844 data.error = 'network';
23845 } else {
23846 data.error = 'denied';
23847 }
23848 break;
23849 default:
23850 if (file.error) {
23851 data.error = file.error;
23852 } else if (data === null) {
23853 data.error = 'network';
23854 } else {
23855 data.progress = '100.00';
23856 }
23857 }
23858
23859 if (response !== null) {
23860 if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {
23861 try {
23862 response = JSON.parse(response);
23863 } catch (err) {}
23864 }
23865 data.response = response;
23866 }
23867
23868 // 更新
23869 file = _this5.update(file, data);
23870
23871 if (file.error) {
23872 return reject(file.error);
23873 }
23874
23875 // 响应
23876 return resolve(file);
23877 };
23878
23879 // 添加事件
23880 iframe.onload = fn;
23881 iframe.onerror = fn;
23882 iframe.onabort = fn;
23883
23884 // 禁止 esc 键
23885 document.body.addEventListener('keydown', onKeydown);
23886
23887 // 提交
23888 form.submit();
23889 }, 50);
23890 }).then(function (res) {
23891 iframe.parentNode && iframe.parentNode.removeChild(iframe);
23892 return res;
23893 }).catch(function (res) {
23894 iframe.parentNode && iframe.parentNode.removeChild(iframe);
23895 return res;
23896 });
23897 },
23898 watchActive: function watchActive(active) {
23899 var file = void 0;
23900 var index = 0;
23901 while (file = this.files[index]) {
23902 index++;
23903 if (!file.fileObject) ; else if (active && !this.destroy) {
23904 if (this.uploading >= this.thread || this.uploading && !this.features.html5) {
23905 break;
23906 }
23907 if (!file.active && !file.error && !file.success) {
23908 this.update(file, { active: true });
23909 }
23910 } else {
23911 if (file.active) {
23912 this.update(file, { active: false });
23913 }
23914 }
23915 }
23916 if (this.uploading === 0) {
23917 this.active = false;
23918 }
23919 },
23920 watchDrop: function watchDrop(_el) {
23921 var el = _el;
23922 if (!this.features.drop) {
23923 return;
23924 }
23925
23926 // 移除挂载
23927 if (this.dropElement) {
23928 try {
23929 document.removeEventListener('dragenter', this.onDragenter, false);
23930 document.removeEventListener('dragleave', this.onDragleave, false);
23931 document.removeEventListener('drop', this.onDocumentDrop, false);
23932 this.dropElement.removeEventListener('dragover', this.onDragover, false);
23933 this.dropElement.removeEventListener('drop', this.onDrop, false);
23934 } catch (e) {}
23935 }
23936
23937 if (!el) {
23938 el = false;
23939 } else if (typeof el === 'string') {
23940 el = document.querySelector(el) || this.$root.$el.querySelector(el);
23941 } else if (el === true) {
23942 el = this.$parent.$el;
23943 }
23944
23945 this.dropElement = el;
23946
23947 if (this.dropElement) {
23948 document.addEventListener('dragenter', this.onDragenter, false);
23949 document.addEventListener('dragleave', this.onDragleave, false);
23950 document.addEventListener('drop', this.onDocumentDrop, false);
23951 this.dropElement.addEventListener('dragover', this.onDragover, false);
23952 this.dropElement.addEventListener('drop', this.onDrop, false);
23953 }
23954 },
23955 onDragenter: function onDragenter(e) {
23956 e.preventDefault();
23957 if (this.dropActive) {
23958 return;
23959 }
23960 if (!e.dataTransfer) {
23961 return;
23962 }
23963 var dt = e.dataTransfer;
23964 if (dt.files && dt.files.length) {
23965 this.dropActive = true;
23966 } else if (!dt.types) {
23967 this.dropActive = true;
23968 } else if (dt.types.indexOf && dt.types.indexOf('Files') !== -1) {
23969 this.dropActive = true;
23970 } else if (dt.types.contains && dt.types.contains('Files')) {
23971 this.dropActive = true;
23972 }
23973 },
23974 onDragleave: function onDragleave(e) {
23975 e.preventDefault();
23976 if (!this.dropActive) {
23977 return;
23978 }
23979 if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || !e.fromElement && (e.clientX <= 0 || e.clientY <= 0 || e.clientX >= window.innerWidth || e.clientY >= window.innerHeight)) {
23980 this.dropActive = false;
23981 }
23982 },
23983 onDragover: function onDragover(e) {
23984 e.preventDefault();
23985 },
23986 onDocumentDrop: function onDocumentDrop() {
23987 this.dropActive = false;
23988 },
23989 onDrop: function onDrop(e) {
23990 e.preventDefault();
23991 this.addDataTransfer(e.dataTransfer);
23992 }
23993 }
23994 };
23995
23996 /* script */
23997 var __vue_script__$1 = script$1;
23998
23999 /* template */
24000 var __vue_render__$1 = function __vue_render__() {
24001 var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('span', { class: _vm.className }, [_vm._t("default"), _vm._v(" "), _c('label', { attrs: { "for": _vm.inputId || _vm.name } }), _vm._v(" "), _c('input-file')], 2);
24002 };
24003 var __vue_staticRenderFns__$1 = [];
24004
24005 /* style */
24006 var __vue_inject_styles__$1 = function (inject) {
24007 if (!inject) return;
24008 inject("data-v-595958af_0", { source: "\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}", map: undefined, media: undefined });
24009 };
24010 /* scoped */
24011 var __vue_scope_id__$1 = undefined;
24012 /* module identifier */
24013 var __vue_module_identifier__$1 = undefined;
24014 /* functional template */
24015 var __vue_is_functional_template__$1 = false;
24016 /* component normalizer */
24017 function __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {
24018 var component = (typeof script === 'function' ? script.options : script) || {};
24019
24020 if (!component.render) {
24021 component.render = template.render;
24022 component.staticRenderFns = template.staticRenderFns;
24023 component._compiled = true;
24024
24025 if (functional) component.functional = true;
24026 }
24027
24028 component._scopeId = scope;
24029
24030 {
24031 var hook = void 0;
24032 if (style) {
24033 hook = function hook(context) {
24034 style.call(this, createInjector(context));
24035 };
24036 }
24037
24038 if (hook !== undefined) {
24039 if (component.functional) {
24040 // register for functional component in vue file
24041 var originalRender = component.render;
24042 component.render = function renderWithStyleInjection(h, context) {
24043 hook.call(context);
24044 return originalRender(h, context);
24045 };
24046 } else {
24047 // inject component registration as beforeCreate hook
24048 var existing = component.beforeCreate;
24049 component.beforeCreate = existing ? [].concat(existing, hook) : [hook];
24050 }
24051 }
24052 }
24053
24054 return component;
24055 }
24056 /* style inject */
24057 function __vue_create_injector__$1() {
24058 var head = document.head || document.getElementsByTagName('head')[0];
24059 var styles = __vue_create_injector__$1.styles || (__vue_create_injector__$1.styles = {});
24060 var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());
24061
24062 return function addStyle(id, css) {
24063 if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present.
24064
24065 var group = isOldIE ? css.media || 'default' : id;
24066 var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });
24067
24068 if (!style.ids.includes(id)) {
24069 var code = css.source;
24070 var index = style.ids.length;
24071
24072 style.ids.push(id);
24073
24074 if (css.map) {
24075 // https://developer.chrome.com/devtools/docs/javascript-debugging
24076 // this makes source maps inside style tags work properly in Chrome
24077 code += '\n/*# sourceURL=' + css.map.sources[0] + ' */';
24078 // http://stackoverflow.com/a/26603875
24079 code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';
24080 }
24081
24082 if (isOldIE) {
24083 style.element = style.element || document.querySelector('style[data-group=' + group + ']');
24084 }
24085
24086 if (!style.element) {
24087 var el = style.element = document.createElement('style');
24088 el.type = 'text/css';
24089
24090 if (css.media) el.setAttribute('media', css.media);
24091 if (isOldIE) {
24092 el.setAttribute('data-group', group);
24093 el.setAttribute('data-next-index', '0');
24094 }
24095
24096 head.appendChild(el);
24097 }
24098
24099 if (isOldIE) {
24100 index = parseInt(style.element.getAttribute('data-next-index'));
24101 style.element.setAttribute('data-next-index', index + 1);
24102 }
24103
24104 if (style.element.styleSheet) {
24105 style.parts.push(code);
24106 style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n');
24107 } else {
24108 var textNode = document.createTextNode(code);
24109 var nodes = style.element.childNodes;
24110 if (nodes[index]) style.element.removeChild(nodes[index]);
24111 if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);
24112 }
24113 }
24114 };
24115 }
24116 /* style inject SSR */
24117
24118 var FileUpload = __vue_normalize__$1({ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, __vue_create_injector__$1, undefined);
24119
24120 var FileUpload$1 = /*#__PURE__*/Object.freeze({
24121 default: FileUpload
24122 });
24123
24124 var require$$0 = ( FileUpload$1 && FileUpload ) || FileUpload$1;
24125
24126 var src = require$$0;
24127
24128 return src;
24129
24130})));
24131//# sourceMappingURL=vue-upload-component.js.map
24132
24133
24134/***/ }),
24135
24136/***/ "80c7":
24137/***/ (function(module, exports, __webpack_require__) {
24138
24139// extracted by mini-css-extract-plugin
24140
24141/***/ }),
24142
24143/***/ "81e1":
24144/***/ (function(module, __webpack_exports__, __webpack_require__) {
24145
24146"use strict";
24147/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShModal_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6fc7");
24148/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShModal_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShModal_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24149/* unused harmony reexport * */
24150 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShModal_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24151
24152/***/ }),
24153
24154/***/ "8378":
24155/***/ (function(module, exports) {
24156
24157var core = module.exports = { version: '2.5.7' };
24158if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
24159
24160
24161/***/ }),
24162
24163/***/ "8436":
24164/***/ (function(module, exports) {
24165
24166module.exports = function () { /* empty */ };
24167
24168
24169/***/ }),
24170
24171/***/ "84a3":
24172/***/ (function(module, __webpack_exports__, __webpack_require__) {
24173
24174"use strict";
24175/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionPage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b977");
24176/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionPage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionPage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24177/* unused harmony reexport * */
24178 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShActionPage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24179
24180/***/ }),
24181
24182/***/ "84d8":
24183/***/ (function(module) {
24184
24185module.exports = {"lang_lib":{"default":{"global":{"save":"Save","save_changes":"Save changes","cancel":"Cancel","close_window":"Close window","confirmation":"Confirmation","warning":"Warning","unsaved_changes_confirm":"You have unsaved changes. Are you sure you want to live this page?","yes":"Yes","no":"No","select":"Select","select_all":"Select all","deselect_all":"Deselect all","search":"Search","ok":"OK","alert_save_settings":"Zapisz ustawienia by móc przejść dalej","go":"Go","no_have_any_data_to_display":"You no have any data to display","add_new":"Add new"},"notifications":{"changes_saved_success":"Changes saved successfully","changes_saved_error":"Zmiany nie zostały zapisane"},"action_bar":{"selected_orders":"Selected 1 order | Selected {count} order","selected_many_orders":"Selected {count} order","selected_elements":"Selected {qty} items | Selected {qty} item | Selected {qty} items"},"colorpicker":{"global_colors":"Global colors"}},"messages":{"_default":"The {0} value is not valid.","less_then_or_equal":"This value should be less than or equal to {compared_value}"}}};
24186
24187/***/ }),
24188
24189/***/ "84f2":
24190/***/ (function(module, exports) {
24191
24192module.exports = {};
24193
24194
24195/***/ }),
24196
24197/***/ "85f2":
24198/***/ (function(module, exports, __webpack_require__) {
24199
24200module.exports = __webpack_require__("454f");
24201
24202/***/ }),
24203
24204/***/ "86cc":
24205/***/ (function(module, exports, __webpack_require__) {
24206
24207var anObject = __webpack_require__("cb7c");
24208var IE8_DOM_DEFINE = __webpack_require__("c69a");
24209var toPrimitive = __webpack_require__("6a99");
24210var dP = Object.defineProperty;
24211
24212exports.f = __webpack_require__("9e1e") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
24213 anObject(O);
24214 P = toPrimitive(P, true);
24215 anObject(Attributes);
24216 if (IE8_DOM_DEFINE) try {
24217 return dP(O, P, Attributes);
24218 } catch (e) { /* empty */ }
24219 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
24220 if ('value' in Attributes) O[P] = Attributes.value;
24221 return O;
24222};
24223
24224
24225/***/ }),
24226
24227/***/ "879e":
24228/***/ (function(module, exports, __webpack_require__) {
24229
24230// extracted by mini-css-extract-plugin
24231
24232/***/ }),
24233
24234/***/ "87f2":
24235/***/ (function(module, exports, __webpack_require__) {
24236
24237// extracted by mini-css-extract-plugin
24238
24239/***/ }),
24240
24241/***/ "8832":
24242/***/ (function(module, exports, __webpack_require__) {
24243
24244!function(e,t){ true?module.exports=t():undefined}(this,function(){return function(e){function t(s){if(n[s])return n[s].exports;var a=n[s]={exports:{},id:s,loaded:!1};return e[s].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}var a=n(1),i=s(a);e.exports=i.default},function(e,t,n){n(2);var s=n(6)(n(7),n(8),"data-v-82963a40",null);e.exports=s.exports},function(e,t,n){var s=n(3);"string"==typeof s&&(s=[[e.id,s,""]]);n(5)(s,{});s.locals&&(e.exports=s.locals)},function(e,t,n){t=e.exports=n(4)(),t.push([e.id,"a[data-v-82963a40]{cursor:pointer}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t<this.length;t++){var n=this[t];n[2]?e.push("@media "+n[2]+"{"+n[1]+"}"):e.push(n[1])}return e.join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var s={},a=0;a<this.length;a++){var i=this[a][0];"number"==typeof i&&(s[i]=!0)}for(a=0;a<t.length;a++){var r=t[a];"number"==typeof r[0]&&s[r[0]]||(n&&!r[2]?r[2]=n:n&&(r[2]="("+r[2]+") and ("+n+")"),e.push(r))}},e}},function(e,t,n){function s(e,t){for(var n=0;n<e.length;n++){var s=e[n],a=d[s.id];if(a){a.refs++;for(var i=0;i<a.parts.length;i++)a.parts[i](s.parts[i]);for(;i<s.parts.length;i++)a.parts.push(l(s.parts[i],t))}else{for(var r=[],i=0;i<s.parts.length;i++)r.push(l(s.parts[i],t));d[s.id]={id:s.id,refs:1,parts:r}}}}function a(e){for(var t=[],n={},s=0;s<e.length;s++){var a=e[s],i=a[0],r=a[1],o=a[2],l=a[3],u={css:r,media:o,sourceMap:l};n[i]?n[i].parts.push(u):t.push(n[i]={id:i,parts:[u]})}return t}function i(e,t){var n=g(),s=C[C.length-1];if("top"===e.insertAt)s?s.nextSibling?n.insertBefore(t,s.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),C.push(t);else{if("bottom"!==e.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(t)}}function r(e){e.parentNode.removeChild(e);var t=C.indexOf(e);t>=0&&C.splice(t,1)}function o(e){var t=document.createElement("style");return t.type="text/css",i(e,t),t}function l(e,t){var n,s,a;if(t.singleton){var i=v++;n=h||(h=o(t)),s=u.bind(null,n,i,!1),a=u.bind(null,n,i,!0)}else n=o(t),s=c.bind(null,n),a=function(){r(n)};return s(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;s(e=t)}else a()}}function u(e,t,n,s){var a=n?"":s.css;if(e.styleSheet)e.styleSheet.cssText=b(t,a);else{var i=document.createTextNode(a),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(i,r[t]):e.appendChild(i)}}function c(e,t){var n=t.css,s=t.media,a=t.sourceMap;if(s&&e.setAttribute("media",s),a&&(n+="\n/*# sourceURL="+a.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var d={},p=function(e){var t;return function(){return"undefined"==typeof t&&(t=e.apply(this,arguments)),t}},f=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),g=p(function(){return document.head||document.getElementsByTagName("head")[0]}),h=null,v=0,C=[];e.exports=function(e,t){t=t||{},"undefined"==typeof t.singleton&&(t.singleton=f()),"undefined"==typeof t.insertAt&&(t.insertAt="bottom");var n=a(e);return s(n,t),function(e){for(var i=[],r=0;r<n.length;r++){var o=n[r],l=d[o.id];l.refs--,i.push(l)}if(e){var u=a(e);s(u,t)}for(var r=0;r<i.length;r++){var l=i[r];if(0===l.refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete d[l.id]}}}};var b=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}()},function(e,t){e.exports=function(e,t,n,s){var a,i=e=e||{},r=typeof e.default;"object"!==r&&"function"!==r||(a=e,i=e.default);var o="function"==typeof i?i.options:i;if(t&&(o.render=t.render,o.staticRenderFns=t.staticRenderFns),n&&(o._scopeId=n),s){var l=o.computed||(o.computed={});Object.keys(s).forEach(function(e){var t=s[e];l[e]=function(){return t}})}return{esModule:a,exports:i,options:o}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={props:{value:{type:Number,default:1},pageCount:{type:Number,required:!0},forcePage:{type:Number},clickHandler:{type:Function,default:function(){}},pageRange:{type:Number,default:3},marginPages:{type:Number,default:1},prevText:{type:String,default:"Prev"},nextText:{type:String,default:"Next"},breakViewText:{type:String,default:"…"},containerClass:{type:String},pageClass:{type:String},pageLinkClass:{type:String},prevClass:{type:String},prevLinkClass:{type:String},nextClass:{type:String},nextLinkClass:{type:String},breakViewClass:{type:String},breakViewLinkClass:{type:String},activeClass:{type:String,default:"active"},disabledClass:{type:String,default:"disabled"},noLiSurround:{type:Boolean,default:!1},firstLastButton:{type:Boolean,default:!1},firstButtonText:{type:String,default:"First"},lastButtonText:{type:String,default:"Last"},hidePrevNext:{type:Boolean,default:!1}},beforeUpdate:function(){void 0!==this.forcePage&&this.forcePage!==this.selected&&(this.selected=this.forcePage)},computed:{selected:function(){return this.value},pages:function(){var e=this,t={};if(this.pageCount<=this.pageRange)for(var n=0;n<this.pageCount;n++){var s={index:n,content:n+1,selected:n===this.selected-1};t[n]=s}else{for(var a=Math.floor(this.pageRange/2),i=function(n){var s={index:n,content:n+1,selected:n===e.selected-1};t[n]=s},r=function(e){var n={disabled:!0,breakView:!0};t[e]=n},o=0;o<this.marginPages;o++)i(o);var l=0;this.selected-a>0&&(l=this.selected-1-a);var u=l+this.pageRange-1;u>=this.pageCount&&(u=this.pageCount-1,l=u-this.pageRange+1);for(var c=l;c<=u&&c<=this.pageCount-1;c++)i(c);l>this.marginPages&&r(l-1),u+1<this.pageCount-this.marginPages&&r(u+1);for(var d=this.pageCount-1;d>=this.pageCount-this.marginPages;d--)i(d)}return t}},methods:{handlePageSelected:function(e){this.selected!==e&&(this.$emit("input",e),this.clickHandler(e))},prevPage:function(){this.selected<=1||(this.$emit("input",this.selected-1),this.clickHandler(this.selected-1))},nextPage:function(){this.selected>=this.pageCount||(this.$emit("input",this.selected+1),this.clickHandler(this.selected+1))},firstPageSelected:function(){return 1===this.selected},lastPageSelected:function(){return this.selected===this.pageCount||0===this.pageCount},selectFirstPage:function(){this.selected<=1||(this.$emit("input",1),this.clickHandler(1))},selectLastPage:function(){this.selected>=this.pageCount||(this.$emit("input",this.pageCount),this.clickHandler(this.pageCount))}}}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.noLiSurround?n("div",{class:e.containerClass},[e.firstLastButton?n("a",{class:[e.pageLinkClass,e.firstPageSelected()?e.disabledClass:""],attrs:{tabindex:"0"},domProps:{innerHTML:e._s(e.firstButtonText)},on:{click:function(t){e.selectFirstPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.selectFirstPage():null}}}):e._e(),e._v(" "),e.firstPageSelected()&&e.hidePrevNext?e._e():n("a",{class:[e.prevLinkClass,e.firstPageSelected()?e.disabledClass:""],attrs:{tabindex:"0"},domProps:{innerHTML:e._s(e.prevText)},on:{click:function(t){e.prevPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.prevPage():null}}}),e._v(" "),e._l(e.pages,function(t){return[t.breakView?n("a",{class:[e.pageLinkClass,e.breakViewLinkClass,t.disabled?e.disabledClass:""],attrs:{tabindex:"0"}},[e._t("breakViewContent",[e._v(e._s(e.breakViewText))])],2):t.disabled?n("a",{class:[e.pageLinkClass,t.selected?e.activeClass:"",e.disabledClass],attrs:{tabindex:"0"}},[e._v(e._s(t.content))]):n("a",{class:[e.pageLinkClass,t.selected?e.activeClass:""],attrs:{tabindex:"0"},on:{click:function(n){e.handlePageSelected(t.index+1)},keyup:function(n){return"button"in n||!e._k(n.keyCode,"enter",13)?void e.handlePageSelected(t.index+1):null}}},[e._v(e._s(t.content))])]}),e._v(" "),e.lastPageSelected()&&e.hidePrevNext?e._e():n("a",{class:[e.nextLinkClass,e.lastPageSelected()?e.disabledClass:""],attrs:{tabindex:"0"},domProps:{innerHTML:e._s(e.nextText)},on:{click:function(t){e.nextPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.nextPage():null}}}),e._v(" "),e.firstLastButton?n("a",{class:[e.pageLinkClass,e.lastPageSelected()?e.disabledClass:""],attrs:{tabindex:"0"},domProps:{innerHTML:e._s(e.lastButtonText)},on:{click:function(t){e.selectLastPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.selectLastPage():null}}}):e._e()],2):n("ul",{class:e.containerClass},[e.firstLastButton?n("li",{class:[e.pageClass,e.firstPageSelected()?e.disabledClass:""]},[n("a",{class:e.pageLinkClass,attrs:{tabindex:e.firstPageSelected()?-1:0},domProps:{innerHTML:e._s(e.firstButtonText)},on:{click:function(t){e.selectFirstPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.selectFirstPage():null}}})]):e._e(),e._v(" "),e.firstPageSelected()&&e.hidePrevNext?e._e():n("li",{class:[e.prevClass,e.firstPageSelected()?e.disabledClass:""]},[n("a",{class:e.prevLinkClass,attrs:{tabindex:e.firstPageSelected()?-1:0},domProps:{innerHTML:e._s(e.prevText)},on:{click:function(t){e.prevPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.prevPage():null}}})]),e._v(" "),e._l(e.pages,function(t){return n("li",{class:[e.pageClass,t.selected?e.activeClass:"",t.disabled?e.disabledClass:"",t.breakView?e.breakViewClass:""]},[t.breakView?n("a",{class:[e.pageLinkClass,e.breakViewLinkClass],attrs:{tabindex:"0"}},[e._t("breakViewContent",[e._v(e._s(e.breakViewText))])],2):t.disabled?n("a",{class:e.pageLinkClass,attrs:{tabindex:"0"}},[e._v(e._s(t.content))]):n("a",{class:e.pageLinkClass,attrs:{tabindex:"0"},on:{click:function(n){e.handlePageSelected(t.index+1)},keyup:function(n){return"button"in n||!e._k(n.keyCode,"enter",13)?void e.handlePageSelected(t.index+1):null}}},[e._v(e._s(t.content))])])}),e._v(" "),e.lastPageSelected()&&e.hidePrevNext?e._e():n("li",{class:[e.nextClass,e.lastPageSelected()?e.disabledClass:""]},[n("a",{class:e.nextLinkClass,attrs:{tabindex:e.lastPageSelected()?-1:0},domProps:{innerHTML:e._s(e.nextText)},on:{click:function(t){e.nextPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.nextPage():null}}})]),e._v(" "),e.firstLastButton?n("li",{class:[e.pageClass,e.lastPageSelected()?e.disabledClass:""]},[n("a",{class:e.pageLinkClass,attrs:{tabindex:e.lastPageSelected()?-1:0},domProps:{innerHTML:e._s(e.lastButtonText)},on:{click:function(t){e.selectLastPage()},keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13)?void e.selectLastPage():null}}})]):e._e()],2)},staticRenderFns:[]}}])});
24245
24246/***/ }),
24247
24248/***/ "888b":
24249/***/ (function(module, exports, __webpack_require__) {
24250
24251// extracted by mini-css-extract-plugin
24252
24253/***/ }),
24254
24255/***/ "8aae":
24256/***/ (function(module, exports, __webpack_require__) {
24257
24258__webpack_require__("32a6");
24259module.exports = __webpack_require__("584a").Object.keys;
24260
24261
24262/***/ }),
24263
24264/***/ "8b5d":
24265/***/ (function(module, exports, __webpack_require__) {
24266
24267// extracted by mini-css-extract-plugin
24268
24269/***/ }),
24270
24271/***/ "8b97":
24272/***/ (function(module, exports, __webpack_require__) {
24273
24274// Works with __proto__ only. Old v8 can't work with null proto objects.
24275/* eslint-disable no-proto */
24276var isObject = __webpack_require__("d3f4");
24277var anObject = __webpack_require__("cb7c");
24278var check = function (O, proto) {
24279 anObject(O);
24280 if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
24281};
24282module.exports = {
24283 set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
24284 function (test, buggy, set) {
24285 try {
24286 set = __webpack_require__("9b43")(Function.call, __webpack_require__("11e9").f(Object.prototype, '__proto__').set, 2);
24287 set(test, []);
24288 buggy = !(test instanceof Array);
24289 } catch (e) { buggy = true; }
24290 return function setPrototypeOf(O, proto) {
24291 check(O, proto);
24292 if (buggy) O.__proto__ = proto;
24293 else set(O, proto);
24294 return O;
24295 };
24296 }({}, false) : undefined),
24297 check: check
24298};
24299
24300
24301/***/ }),
24302
24303/***/ "8bbf":
24304/***/ (function(module, exports) {
24305
24306module.exports = require("vue");
24307
24308/***/ }),
24309
24310/***/ "8e60":
24311/***/ (function(module, exports, __webpack_require__) {
24312
24313// Thank's IE8 for his funny defineProperty
24314module.exports = !__webpack_require__("294c")(function () {
24315 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
24316});
24317
24318
24319/***/ }),
24320
24321/***/ "8f60":
24322/***/ (function(module, exports, __webpack_require__) {
24323
24324"use strict";
24325
24326var create = __webpack_require__("a159");
24327var descriptor = __webpack_require__("aebd");
24328var setToStringTag = __webpack_require__("45f2");
24329var IteratorPrototype = {};
24330
24331// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
24332__webpack_require__("35e8")(IteratorPrototype, __webpack_require__("5168")('iterator'), function () { return this; });
24333
24334module.exports = function (Constructor, NAME, next) {
24335 Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
24336 setToStringTag(Constructor, NAME + ' Iterator');
24337};
24338
24339
24340/***/ }),
24341
24342/***/ "9003":
24343/***/ (function(module, exports, __webpack_require__) {
24344
24345// 7.2.2 IsArray(argument)
24346var cof = __webpack_require__("6b4c");
24347module.exports = Array.isArray || function isArray(arg) {
24348 return cof(arg) == 'Array';
24349};
24350
24351
24352/***/ }),
24353
24354/***/ "9093":
24355/***/ (function(module, exports, __webpack_require__) {
24356
24357// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
24358var $keys = __webpack_require__("ce10");
24359var hiddenKeys = __webpack_require__("e11e").concat('length', 'prototype');
24360
24361exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
24362 return $keys(O, hiddenKeys);
24363};
24364
24365
24366/***/ }),
24367
24368/***/ "9138":
24369/***/ (function(module, exports, __webpack_require__) {
24370
24371module.exports = __webpack_require__("35e8");
24372
24373
24374/***/ }),
24375
24376/***/ "9169":
24377/***/ (function(module, exports, __webpack_require__) {
24378
24379// extracted by mini-css-extract-plugin
24380
24381/***/ }),
24382
24383/***/ "9306":
24384/***/ (function(module, exports, __webpack_require__) {
24385
24386"use strict";
24387
24388// 19.1.2.1 Object.assign(target, source, ...)
24389var getKeys = __webpack_require__("c3a1");
24390var gOPS = __webpack_require__("9aa9");
24391var pIE = __webpack_require__("355d");
24392var toObject = __webpack_require__("241e");
24393var IObject = __webpack_require__("335c");
24394var $assign = Object.assign;
24395
24396// should work with symbols and should have deterministic property order (V8 bug)
24397module.exports = !$assign || __webpack_require__("294c")(function () {
24398 var A = {};
24399 var B = {};
24400 // eslint-disable-next-line no-undef
24401 var S = Symbol();
24402 var K = 'abcdefghijklmnopqrst';
24403 A[S] = 7;
24404 K.split('').forEach(function (k) { B[k] = k; });
24405 return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
24406}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
24407 var T = toObject(target);
24408 var aLen = arguments.length;
24409 var index = 1;
24410 var getSymbols = gOPS.f;
24411 var isEnum = pIE.f;
24412 while (aLen > index) {
24413 var S = IObject(arguments[index++]);
24414 var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
24415 var length = keys.length;
24416 var j = 0;
24417 var key;
24418 while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
24419 } return T;
24420} : $assign;
24421
24422
24423/***/ }),
24424
24425/***/ "9427":
24426/***/ (function(module, exports, __webpack_require__) {
24427
24428var $export = __webpack_require__("63b6");
24429// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
24430$export($export.S, 'Object', { create: __webpack_require__("a159") });
24431
24432
24433/***/ }),
24434
24435/***/ "95ca":
24436/***/ (function(module, __webpack_exports__, __webpack_require__) {
24437
24438"use strict";
24439/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagCreator_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2ddc");
24440/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagCreator_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagCreator_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24441/* unused harmony reexport * */
24442 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagCreator_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24443
24444/***/ }),
24445
24446/***/ "95d5":
24447/***/ (function(module, exports, __webpack_require__) {
24448
24449var classof = __webpack_require__("40c3");
24450var ITERATOR = __webpack_require__("5168")('iterator');
24451var Iterators = __webpack_require__("481b");
24452module.exports = __webpack_require__("584a").isIterable = function (it) {
24453 var O = Object(it);
24454 return O[ITERATOR] !== undefined
24455 || '@@iterator' in O
24456 // eslint-disable-next-line no-prototype-builtins
24457 || Iterators.hasOwnProperty(classof(O));
24458};
24459
24460
24461/***/ }),
24462
24463/***/ "9aa9":
24464/***/ (function(module, exports) {
24465
24466exports.f = Object.getOwnPropertySymbols;
24467
24468
24469/***/ }),
24470
24471/***/ "9b43":
24472/***/ (function(module, exports, __webpack_require__) {
24473
24474// optional / simple context binding
24475var aFunction = __webpack_require__("d8e8");
24476module.exports = function (fn, that, length) {
24477 aFunction(fn);
24478 if (that === undefined) return fn;
24479 switch (length) {
24480 case 1: return function (a) {
24481 return fn.call(that, a);
24482 };
24483 case 2: return function (a, b) {
24484 return fn.call(that, a, b);
24485 };
24486 case 3: return function (a, b, c) {
24487 return fn.call(that, a, b, c);
24488 };
24489 }
24490 return function (/* ...args */) {
24491 return fn.apply(that, arguments);
24492 };
24493};
24494
24495
24496/***/ }),
24497
24498/***/ "9c6c":
24499/***/ (function(module, exports, __webpack_require__) {
24500
24501// 22.1.3.31 Array.prototype[@@unscopables]
24502var UNSCOPABLES = __webpack_require__("2b4c")('unscopables');
24503var ArrayProto = Array.prototype;
24504if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__("32e9")(ArrayProto, UNSCOPABLES, {});
24505module.exports = function (key) {
24506 ArrayProto[UNSCOPABLES][key] = true;
24507};
24508
24509
24510/***/ }),
24511
24512/***/ "9cb6":
24513/***/ (function(module, __webpack_exports__, __webpack_require__) {
24514
24515"use strict";
24516/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9169");
24517/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24518/* unused harmony reexport * */
24519 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24520
24521/***/ }),
24522
24523/***/ "9def":
24524/***/ (function(module, exports, __webpack_require__) {
24525
24526// 7.1.15 ToLength
24527var toInteger = __webpack_require__("4588");
24528var min = Math.min;
24529module.exports = function (it) {
24530 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
24531};
24532
24533
24534/***/ }),
24535
24536/***/ "9e1e":
24537/***/ (function(module, exports, __webpack_require__) {
24538
24539// Thank's IE8 for his funny defineProperty
24540module.exports = !__webpack_require__("79e5")(function () {
24541 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
24542});
24543
24544
24545/***/ }),
24546
24547/***/ "9ef1":
24548/***/ (function(module, __webpack_exports__, __webpack_require__) {
24549
24550"use strict";
24551/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3f71");
24552/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24553/* unused harmony reexport * */
24554 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTagButton_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24555
24556/***/ }),
24557
24558/***/ "9f73":
24559/***/ (function(module, __webpack_exports__, __webpack_require__) {
24560
24561"use strict";
24562/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3078");
24563/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24564/* unused harmony reexport * */
24565 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24566
24567/***/ }),
24568
24569/***/ "a159":
24570/***/ (function(module, exports, __webpack_require__) {
24571
24572// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
24573var anObject = __webpack_require__("e4ae");
24574var dPs = __webpack_require__("7e90");
24575var enumBugKeys = __webpack_require__("1691");
24576var IE_PROTO = __webpack_require__("5559")('IE_PROTO');
24577var Empty = function () { /* empty */ };
24578var PROTOTYPE = 'prototype';
24579
24580// Create object with fake `null` prototype: use iframe Object with cleared prototype
24581var createDict = function () {
24582 // Thrash, waste and sodomy: IE GC bug
24583 var iframe = __webpack_require__("1ec9")('iframe');
24584 var i = enumBugKeys.length;
24585 var lt = '<';
24586 var gt = '>';
24587 var iframeDocument;
24588 iframe.style.display = 'none';
24589 __webpack_require__("32fc").appendChild(iframe);
24590 iframe.src = 'javascript:'; // eslint-disable-line no-script-url
24591 // createDict = iframe.contentWindow.Object;
24592 // html.removeChild(iframe);
24593 iframeDocument = iframe.contentWindow.document;
24594 iframeDocument.open();
24595 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
24596 iframeDocument.close();
24597 createDict = iframeDocument.F;
24598 while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
24599 return createDict();
24600};
24601
24602module.exports = Object.create || function create(O, Properties) {
24603 var result;
24604 if (O !== null) {
24605 Empty[PROTOTYPE] = anObject(O);
24606 result = new Empty();
24607 Empty[PROTOTYPE] = null;
24608 // add "__proto__" for Object.getPrototypeOf polyfill
24609 result[IE_PROTO] = O;
24610 } else result = createDict();
24611 return Properties === undefined ? result : dPs(result, Properties);
24612};
24613
24614
24615/***/ }),
24616
24617/***/ "a1ce":
24618/***/ (function(module, exports, __webpack_require__) {
24619
24620var $export = __webpack_require__("63b6");
24621var defined = __webpack_require__("25eb");
24622var fails = __webpack_require__("294c");
24623var spaces = __webpack_require__("e692");
24624var space = '[' + spaces + ']';
24625var non = '\u200b\u0085';
24626var ltrim = RegExp('^' + space + space + '*');
24627var rtrim = RegExp(space + space + '*$');
24628
24629var exporter = function (KEY, exec, ALIAS) {
24630 var exp = {};
24631 var FORCE = fails(function () {
24632 return !!spaces[KEY]() || non[KEY]() != non;
24633 });
24634 var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
24635 if (ALIAS) exp[ALIAS] = fn;
24636 $export($export.P + $export.F * FORCE, 'String', exp);
24637};
24638
24639// 1 -> String#trimLeft
24640// 2 -> String#trimRight
24641// 3 -> String#trim
24642var trim = exporter.trim = function (string, TYPE) {
24643 string = String(defined(string));
24644 if (TYPE & 1) string = string.replace(ltrim, '');
24645 if (TYPE & 2) string = string.replace(rtrim, '');
24646 return string;
24647};
24648
24649module.exports = exporter;
24650
24651
24652/***/ }),
24653
24654/***/ "a3c3":
24655/***/ (function(module, exports, __webpack_require__) {
24656
24657// 19.1.3.1 Object.assign(target, source)
24658var $export = __webpack_require__("63b6");
24659
24660$export($export.S + $export.F, 'Object', { assign: __webpack_require__("9306") });
24661
24662
24663/***/ }),
24664
24665/***/ "a481":
24666/***/ (function(module, exports, __webpack_require__) {
24667
24668// @@replace logic
24669__webpack_require__("214f")('replace', 2, function (defined, REPLACE, $replace) {
24670 // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
24671 return [function replace(searchValue, replaceValue) {
24672 'use strict';
24673 var O = defined(this);
24674 var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
24675 return fn !== undefined
24676 ? fn.call(searchValue, O, replaceValue)
24677 : $replace.call(String(O), searchValue, replaceValue);
24678 }, $replace];
24679});
24680
24681
24682/***/ }),
24683
24684/***/ "a4bb":
24685/***/ (function(module, exports, __webpack_require__) {
24686
24687module.exports = __webpack_require__("8aae");
24688
24689/***/ }),
24690
24691/***/ "a6f7":
24692/***/ (function(module, exports, __webpack_require__) {
24693
24694// extracted by mini-css-extract-plugin
24695
24696/***/ }),
24697
24698/***/ "a745":
24699/***/ (function(module, exports, __webpack_require__) {
24700
24701module.exports = __webpack_require__("f410");
24702
24703/***/ }),
24704
24705/***/ "a908":
24706/***/ (function(module, __webpack_exports__, __webpack_require__) {
24707
24708"use strict";
24709/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShAddress_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8b5d");
24710/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShAddress_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShAddress_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24711/* unused harmony reexport * */
24712 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShAddress_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24713
24714/***/ }),
24715
24716/***/ "aa77":
24717/***/ (function(module, exports, __webpack_require__) {
24718
24719var $export = __webpack_require__("5ca1");
24720var defined = __webpack_require__("be13");
24721var fails = __webpack_require__("79e5");
24722var spaces = __webpack_require__("fdef");
24723var space = '[' + spaces + ']';
24724var non = '\u200b\u0085';
24725var ltrim = RegExp('^' + space + space + '*');
24726var rtrim = RegExp(space + space + '*$');
24727
24728var exporter = function (KEY, exec, ALIAS) {
24729 var exp = {};
24730 var FORCE = fails(function () {
24731 return !!spaces[KEY]() || non[KEY]() != non;
24732 });
24733 var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
24734 if (ALIAS) exp[ALIAS] = fn;
24735 $export($export.P + $export.F * FORCE, 'String', exp);
24736};
24737
24738// 1 -> String#trimLeft
24739// 2 -> String#trimRight
24740// 3 -> String#trim
24741var trim = exporter.trim = function (string, TYPE) {
24742 string = String(defined(string));
24743 if (TYPE & 1) string = string.replace(ltrim, '');
24744 if (TYPE & 2) string = string.replace(rtrim, '');
24745 return string;
24746};
24747
24748module.exports = exporter;
24749
24750
24751/***/ }),
24752
24753/***/ "aae3":
24754/***/ (function(module, exports, __webpack_require__) {
24755
24756// 7.2.8 IsRegExp(argument)
24757var isObject = __webpack_require__("d3f4");
24758var cof = __webpack_require__("2d95");
24759var MATCH = __webpack_require__("2b4c")('match');
24760module.exports = function (it) {
24761 var isRegExp;
24762 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
24763};
24764
24765
24766/***/ }),
24767
24768/***/ "ac6a":
24769/***/ (function(module, exports, __webpack_require__) {
24770
24771var $iterators = __webpack_require__("cadf");
24772var getKeys = __webpack_require__("0d58");
24773var redefine = __webpack_require__("2aba");
24774var global = __webpack_require__("7726");
24775var hide = __webpack_require__("32e9");
24776var Iterators = __webpack_require__("84f2");
24777var wks = __webpack_require__("2b4c");
24778var ITERATOR = wks('iterator');
24779var TO_STRING_TAG = wks('toStringTag');
24780var ArrayValues = Iterators.Array;
24781
24782var DOMIterables = {
24783 CSSRuleList: true, // TODO: Not spec compliant, should be false.
24784 CSSStyleDeclaration: false,
24785 CSSValueList: false,
24786 ClientRectList: false,
24787 DOMRectList: false,
24788 DOMStringList: false,
24789 DOMTokenList: true,
24790 DataTransferItemList: false,
24791 FileList: false,
24792 HTMLAllCollection: false,
24793 HTMLCollection: false,
24794 HTMLFormElement: false,
24795 HTMLSelectElement: false,
24796 MediaList: true, // TODO: Not spec compliant, should be false.
24797 MimeTypeArray: false,
24798 NamedNodeMap: false,
24799 NodeList: true,
24800 PaintRequestList: false,
24801 Plugin: false,
24802 PluginArray: false,
24803 SVGLengthList: false,
24804 SVGNumberList: false,
24805 SVGPathSegList: false,
24806 SVGPointList: false,
24807 SVGStringList: false,
24808 SVGTransformList: false,
24809 SourceBufferList: false,
24810 StyleSheetList: true, // TODO: Not spec compliant, should be false.
24811 TextTrackCueList: false,
24812 TextTrackList: false,
24813 TouchList: false
24814};
24815
24816for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
24817 var NAME = collections[i];
24818 var explicit = DOMIterables[NAME];
24819 var Collection = global[NAME];
24820 var proto = Collection && Collection.prototype;
24821 var key;
24822 if (proto) {
24823 if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
24824 if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
24825 Iterators[NAME] = ArrayValues;
24826 if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
24827 }
24828}
24829
24830
24831/***/ }),
24832
24833/***/ "aebd":
24834/***/ (function(module, exports) {
24835
24836module.exports = function (bitmap, value) {
24837 return {
24838 enumerable: !(bitmap & 1),
24839 configurable: !(bitmap & 2),
24840 writable: !(bitmap & 4),
24841 value: value
24842 };
24843};
24844
24845
24846/***/ }),
24847
24848/***/ "b0dc":
24849/***/ (function(module, exports, __webpack_require__) {
24850
24851// call something on iterator step with safe closing on error
24852var anObject = __webpack_require__("e4ae");
24853module.exports = function (iterator, fn, value, entries) {
24854 try {
24855 return entries ? fn(anObject(value)[0], value[1]) : fn(value);
24856 // 7.4.6 IteratorClose(iterator, completion)
24857 } catch (e) {
24858 var ret = iterator['return'];
24859 if (ret !== undefined) anObject(ret.call(iterator));
24860 throw e;
24861 }
24862};
24863
24864
24865/***/ }),
24866
24867/***/ "b0f9":
24868/***/ (function(module, exports, __webpack_require__) {
24869
24870// extracted by mini-css-extract-plugin
24871
24872/***/ }),
24873
24874/***/ "b31b":
24875/***/ (function(module, __webpack_exports__, __webpack_require__) {
24876
24877"use strict";
24878/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTable_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("888b");
24879/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTable_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTable_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24880/* unused harmony reexport * */
24881 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTable_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24882
24883/***/ }),
24884
24885/***/ "b447":
24886/***/ (function(module, exports, __webpack_require__) {
24887
24888// 7.1.15 ToLength
24889var toInteger = __webpack_require__("3a38");
24890var min = Math.min;
24891module.exports = function (it) {
24892 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
24893};
24894
24895
24896/***/ }),
24897
24898/***/ "b8e3":
24899/***/ (function(module, exports) {
24900
24901module.exports = true;
24902
24903
24904/***/ }),
24905
24906/***/ "b977":
24907/***/ (function(module, exports, __webpack_require__) {
24908
24909// extracted by mini-css-extract-plugin
24910
24911/***/ }),
24912
24913/***/ "b9e9":
24914/***/ (function(module, exports, __webpack_require__) {
24915
24916__webpack_require__("7445");
24917module.exports = __webpack_require__("584a").parseInt;
24918
24919
24920/***/ }),
24921
24922/***/ "ba9e":
24923/***/ (function(module, exports, __webpack_require__) {
24924
24925// extracted by mini-css-extract-plugin
24926
24927/***/ }),
24928
24929/***/ "be13":
24930/***/ (function(module, exports) {
24931
24932// 7.2.1 RequireObjectCoercible(argument)
24933module.exports = function (it) {
24934 if (it == undefined) throw TypeError("Can't call method on " + it);
24935 return it;
24936};
24937
24938
24939/***/ }),
24940
24941/***/ "bf0b":
24942/***/ (function(module, exports, __webpack_require__) {
24943
24944var pIE = __webpack_require__("355d");
24945var createDesc = __webpack_require__("aebd");
24946var toIObject = __webpack_require__("36c3");
24947var toPrimitive = __webpack_require__("1bc3");
24948var has = __webpack_require__("07e3");
24949var IE8_DOM_DEFINE = __webpack_require__("794b");
24950var gOPD = Object.getOwnPropertyDescriptor;
24951
24952exports.f = __webpack_require__("8e60") ? gOPD : function getOwnPropertyDescriptor(O, P) {
24953 O = toIObject(O);
24954 P = toPrimitive(P, true);
24955 if (IE8_DOM_DEFINE) try {
24956 return gOPD(O, P);
24957 } catch (e) { /* empty */ }
24958 if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
24959};
24960
24961
24962/***/ }),
24963
24964/***/ "bf11":
24965/***/ (function(module, __webpack_exports__, __webpack_require__) {
24966
24967"use strict";
24968/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ba9e");
24969/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
24970/* unused harmony reexport * */
24971 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShButtonGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
24972
24973/***/ }),
24974
24975/***/ "c192":
24976/***/ (function(module) {
24977
24978module.exports = {"lang_lib":{"default":{"global":{"save":"Zapisz","save_changes":"Zapisz zmiany","cancel":"Anuluj","close_window":"Zamknij okno","confirmation":"Potwierdzenie","warning":"Ostrzeżenie","unsaved_changes_confirm":"Masz niezapisane zmiany. Jesteś pewien, że chcesz opuścić tą stronę?","yes":"Tak","no":"Nie","select":"Wybierz","select_all":"Zaznacz wszystko","deselect_all":"Odznacz wszystko","search":"Szukaj","ok":"OK","alert_save_settings":"Zapisz ustawienia by móc przejść dalej","go":"Idź","no_have_any_data_to_display":"Nie masz danych do wyświetlenia tabeli","add_new":"Dodaj nowy"},"notifications":{"changes_saved_success":"Zmiany zostały zapisane","changes_saved_error":"Zmiany nie zostały zapisane"},"action_bar":{"selected_orders":"Zaznaczyłeś 1 zamówienie | Zaznaczyłeś {count} zamówienia","selected_many_orders":"Zaznaczyłeś {count} zamówień","selected_elements":"Wybrałeś 0 elementów | Wybrałeś {qty} element | Wybrałeś {qty} elementy | Wybrałeś {count} elementów"},"colorpicker":{"global_colors":"Kolory globalne"}}}};
24979
24980/***/ }),
24981
24982/***/ "c207":
24983/***/ (function(module, exports) {
24984
24985
24986
24987/***/ }),
24988
24989/***/ "c2ce":
24990/***/ (function(module, __webpack_exports__, __webpack_require__) {
24991
24992"use strict";
24993/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDragableTags_vue_vue_type_style_index_0_id_307a09a9_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2afc");
24994/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDragableTags_vue_vue_type_style_index_0_id_307a09a9_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDragableTags_vue_vue_type_style_index_0_id_307a09a9_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
24995/* unused harmony reexport * */
24996 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDragableTags_vue_vue_type_style_index_0_id_307a09a9_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
24997
24998/***/ }),
24999
25000/***/ "c366":
25001/***/ (function(module, exports, __webpack_require__) {
25002
25003// false -> Array#indexOf
25004// true -> Array#includes
25005var toIObject = __webpack_require__("6821");
25006var toLength = __webpack_require__("9def");
25007var toAbsoluteIndex = __webpack_require__("77f1");
25008module.exports = function (IS_INCLUDES) {
25009 return function ($this, el, fromIndex) {
25010 var O = toIObject($this);
25011 var length = toLength(O.length);
25012 var index = toAbsoluteIndex(fromIndex, length);
25013 var value;
25014 // Array#includes uses SameValueZero equality algorithm
25015 // eslint-disable-next-line no-self-compare
25016 if (IS_INCLUDES && el != el) while (length > index) {
25017 value = O[index++];
25018 // eslint-disable-next-line no-self-compare
25019 if (value != value) return true;
25020 // Array#indexOf ignores holes, Array#includes - not
25021 } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
25022 if (O[index] === el) return IS_INCLUDES || index || 0;
25023 } return !IS_INCLUDES && -1;
25024 };
25025};
25026
25027
25028/***/ }),
25029
25030/***/ "c367":
25031/***/ (function(module, exports, __webpack_require__) {
25032
25033"use strict";
25034
25035var addToUnscopables = __webpack_require__("8436");
25036var step = __webpack_require__("50ed");
25037var Iterators = __webpack_require__("481b");
25038var toIObject = __webpack_require__("36c3");
25039
25040// 22.1.3.4 Array.prototype.entries()
25041// 22.1.3.13 Array.prototype.keys()
25042// 22.1.3.29 Array.prototype.values()
25043// 22.1.3.30 Array.prototype[@@iterator]()
25044module.exports = __webpack_require__("30f1")(Array, 'Array', function (iterated, kind) {
25045 this._t = toIObject(iterated); // target
25046 this._i = 0; // next index
25047 this._k = kind; // kind
25048// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
25049}, function () {
25050 var O = this._t;
25051 var kind = this._k;
25052 var index = this._i++;
25053 if (!O || index >= O.length) {
25054 this._t = undefined;
25055 return step(1);
25056 }
25057 if (kind == 'keys') return step(0, index);
25058 if (kind == 'values') return step(0, O[index]);
25059 return step(0, [index, O[index]]);
25060}, 'values');
25061
25062// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
25063Iterators.Arguments = Iterators.Array;
25064
25065addToUnscopables('keys');
25066addToUnscopables('values');
25067addToUnscopables('entries');
25068
25069
25070/***/ }),
25071
25072/***/ "c3a1":
25073/***/ (function(module, exports, __webpack_require__) {
25074
25075// 19.1.2.14 / 15.2.3.14 Object.keys(O)
25076var $keys = __webpack_require__("e6f3");
25077var enumBugKeys = __webpack_require__("1691");
25078
25079module.exports = Object.keys || function keys(O) {
25080 return $keys(O, enumBugKeys);
25081};
25082
25083
25084/***/ }),
25085
25086/***/ "c5f6":
25087/***/ (function(module, exports, __webpack_require__) {
25088
25089"use strict";
25090
25091var global = __webpack_require__("7726");
25092var has = __webpack_require__("69a8");
25093var cof = __webpack_require__("2d95");
25094var inheritIfRequired = __webpack_require__("5dbc");
25095var toPrimitive = __webpack_require__("6a99");
25096var fails = __webpack_require__("79e5");
25097var gOPN = __webpack_require__("9093").f;
25098var gOPD = __webpack_require__("11e9").f;
25099var dP = __webpack_require__("86cc").f;
25100var $trim = __webpack_require__("aa77").trim;
25101var NUMBER = 'Number';
25102var $Number = global[NUMBER];
25103var Base = $Number;
25104var proto = $Number.prototype;
25105// Opera ~12 has broken Object#toString
25106var BROKEN_COF = cof(__webpack_require__("2aeb")(proto)) == NUMBER;
25107var TRIM = 'trim' in String.prototype;
25108
25109// 7.1.3 ToNumber(argument)
25110var toNumber = function (argument) {
25111 var it = toPrimitive(argument, false);
25112 if (typeof it == 'string' && it.length > 2) {
25113 it = TRIM ? it.trim() : $trim(it, 3);
25114 var first = it.charCodeAt(0);
25115 var third, radix, maxCode;
25116 if (first === 43 || first === 45) {
25117 third = it.charCodeAt(2);
25118 if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
25119 } else if (first === 48) {
25120 switch (it.charCodeAt(1)) {
25121 case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
25122 case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
25123 default: return +it;
25124 }
25125 for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
25126 code = digits.charCodeAt(i);
25127 // parseInt parses a string to a first unavailable symbol
25128 // but ToNumber should return NaN if a string contains unavailable symbols
25129 if (code < 48 || code > maxCode) return NaN;
25130 } return parseInt(digits, radix);
25131 }
25132 } return +it;
25133};
25134
25135if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
25136 $Number = function Number(value) {
25137 var it = arguments.length < 1 ? 0 : value;
25138 var that = this;
25139 return that instanceof $Number
25140 // check on 1..constructor(foo) case
25141 && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
25142 ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
25143 };
25144 for (var keys = __webpack_require__("9e1e") ? gOPN(Base) : (
25145 // ES3:
25146 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
25147 // ES6 (in case, if modules with ES6 Number statics required before):
25148 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
25149 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
25150 ).split(','), j = 0, key; keys.length > j; j++) {
25151 if (has(Base, key = keys[j]) && !has($Number, key)) {
25152 dP($Number, key, gOPD(Base, key));
25153 }
25154 }
25155 $Number.prototype = proto;
25156 proto.constructor = $Number;
25157 __webpack_require__("2aba")(global, NUMBER, $Number);
25158}
25159
25160
25161/***/ }),
25162
25163/***/ "c69a":
25164/***/ (function(module, exports, __webpack_require__) {
25165
25166module.exports = !__webpack_require__("9e1e") && !__webpack_require__("79e5")(function () {
25167 return Object.defineProperty(__webpack_require__("230e")('div'), 'a', { get: function () { return 7; } }).a != 7;
25168});
25169
25170
25171/***/ }),
25172
25173/***/ "c7ef":
25174/***/ (function(module, exports, __webpack_require__) {
25175
25176// extracted by mini-css-extract-plugin
25177
25178/***/ }),
25179
25180/***/ "c8ba":
25181/***/ (function(module, exports) {
25182
25183var g;
25184
25185// This works in non-strict mode
25186g = (function() {
25187 return this;
25188})();
25189
25190try {
25191 // This works if eval is allowed (see CSP)
25192 g = g || Function("return this")() || (1, eval)("this");
25193} catch (e) {
25194 // This works if the window reference is available
25195 if (typeof window === "object") g = window;
25196}
25197
25198// g can still be undefined, but nothing to do about it...
25199// We return undefined, instead of nothing here, so it's
25200// easier to handle this case. if(!global) { ...}
25201
25202module.exports = g;
25203
25204
25205/***/ }),
25206
25207/***/ "c8bb":
25208/***/ (function(module, exports, __webpack_require__) {
25209
25210module.exports = __webpack_require__("54a1");
25211
25212/***/ }),
25213
25214/***/ "ca04":
25215/***/ (function(module, __webpack_exports__, __webpack_require__) {
25216
25217"use strict";
25218/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatistics_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6739");
25219/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatistics_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatistics_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25220/* unused harmony reexport * */
25221 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShStatistics_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25222
25223/***/ }),
25224
25225/***/ "ca5a":
25226/***/ (function(module, exports) {
25227
25228var id = 0;
25229var px = Math.random();
25230module.exports = function (key) {
25231 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
25232};
25233
25234
25235/***/ }),
25236
25237/***/ "cadf":
25238/***/ (function(module, exports, __webpack_require__) {
25239
25240"use strict";
25241
25242var addToUnscopables = __webpack_require__("9c6c");
25243var step = __webpack_require__("d53b");
25244var Iterators = __webpack_require__("84f2");
25245var toIObject = __webpack_require__("6821");
25246
25247// 22.1.3.4 Array.prototype.entries()
25248// 22.1.3.13 Array.prototype.keys()
25249// 22.1.3.29 Array.prototype.values()
25250// 22.1.3.30 Array.prototype[@@iterator]()
25251module.exports = __webpack_require__("01f9")(Array, 'Array', function (iterated, kind) {
25252 this._t = toIObject(iterated); // target
25253 this._i = 0; // next index
25254 this._k = kind; // kind
25255// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
25256}, function () {
25257 var O = this._t;
25258 var kind = this._k;
25259 var index = this._i++;
25260 if (!O || index >= O.length) {
25261 this._t = undefined;
25262 return step(1);
25263 }
25264 if (kind == 'keys') return step(0, index);
25265 if (kind == 'values') return step(0, O[index]);
25266 return step(0, [index, O[index]]);
25267}, 'values');
25268
25269// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
25270Iterators.Arguments = Iterators.Array;
25271
25272addToUnscopables('keys');
25273addToUnscopables('values');
25274addToUnscopables('entries');
25275
25276
25277/***/ }),
25278
25279/***/ "cb5a":
25280/***/ (function(module, __webpack_exports__, __webpack_require__) {
25281
25282"use strict";
25283/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShInput_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("df16");
25284/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShInput_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShInput_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25285/* unused harmony reexport * */
25286 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShInput_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25287
25288/***/ }),
25289
25290/***/ "cb7c":
25291/***/ (function(module, exports, __webpack_require__) {
25292
25293var isObject = __webpack_require__("d3f4");
25294module.exports = function (it) {
25295 if (!isObject(it)) throw TypeError(it + ' is not an object!');
25296 return it;
25297};
25298
25299
25300/***/ }),
25301
25302/***/ "ccb9":
25303/***/ (function(module, exports, __webpack_require__) {
25304
25305exports.f = __webpack_require__("5168");
25306
25307
25308/***/ }),
25309
25310/***/ "ce10":
25311/***/ (function(module, exports, __webpack_require__) {
25312
25313var has = __webpack_require__("69a8");
25314var toIObject = __webpack_require__("6821");
25315var arrayIndexOf = __webpack_require__("c366")(false);
25316var IE_PROTO = __webpack_require__("613b")('IE_PROTO');
25317
25318module.exports = function (object, names) {
25319 var O = toIObject(object);
25320 var i = 0;
25321 var result = [];
25322 var key;
25323 for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
25324 // Don't enum bug & hidden keys
25325 while (names.length > i) if (has(O, key = names[i++])) {
25326 ~arrayIndexOf(result, key) || result.push(key);
25327 }
25328 return result;
25329};
25330
25331
25332/***/ }),
25333
25334/***/ "ce7e":
25335/***/ (function(module, exports, __webpack_require__) {
25336
25337// most Object methods by ES6 should accept primitives
25338var $export = __webpack_require__("63b6");
25339var core = __webpack_require__("584a");
25340var fails = __webpack_require__("294c");
25341module.exports = function (KEY, exec) {
25342 var fn = (core.Object || {})[KEY] || Object[KEY];
25343 var exp = {};
25344 exp[KEY] = exec(fn);
25345 $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
25346};
25347
25348
25349/***/ }),
25350
25351/***/ "d26d":
25352/***/ (function(module, exports, __webpack_require__) {
25353
25354// extracted by mini-css-extract-plugin
25355
25356/***/ }),
25357
25358/***/ "d2d5":
25359/***/ (function(module, exports, __webpack_require__) {
25360
25361__webpack_require__("1654");
25362__webpack_require__("549b");
25363module.exports = __webpack_require__("584a").Array.from;
25364
25365
25366/***/ }),
25367
25368/***/ "d3f4":
25369/***/ (function(module, exports) {
25370
25371module.exports = function (it) {
25372 return typeof it === 'object' ? it !== null : typeof it === 'function';
25373};
25374
25375
25376/***/ }),
25377
25378/***/ "d53b":
25379/***/ (function(module, exports) {
25380
25381module.exports = function (done, value) {
25382 return { value: value, done: !!done };
25383};
25384
25385
25386/***/ }),
25387
25388/***/ "d864":
25389/***/ (function(module, exports, __webpack_require__) {
25390
25391// optional / simple context binding
25392var aFunction = __webpack_require__("79aa");
25393module.exports = function (fn, that, length) {
25394 aFunction(fn);
25395 if (that === undefined) return fn;
25396 switch (length) {
25397 case 1: return function (a) {
25398 return fn.call(that, a);
25399 };
25400 case 2: return function (a, b) {
25401 return fn.call(that, a, b);
25402 };
25403 case 3: return function (a, b, c) {
25404 return fn.call(that, a, b, c);
25405 };
25406 }
25407 return function (/* ...args */) {
25408 return fn.apply(that, arguments);
25409 };
25410};
25411
25412
25413/***/ }),
25414
25415/***/ "d8d6":
25416/***/ (function(module, exports, __webpack_require__) {
25417
25418__webpack_require__("1654");
25419__webpack_require__("6c1c");
25420module.exports = __webpack_require__("ccb9").f('iterator');
25421
25422
25423/***/ }),
25424
25425/***/ "d8e8":
25426/***/ (function(module, exports) {
25427
25428module.exports = function (it) {
25429 if (typeof it != 'function') throw TypeError(it + ' is not a function!');
25430 return it;
25431};
25432
25433
25434/***/ }),
25435
25436/***/ "d9f6":
25437/***/ (function(module, exports, __webpack_require__) {
25438
25439var anObject = __webpack_require__("e4ae");
25440var IE8_DOM_DEFINE = __webpack_require__("794b");
25441var toPrimitive = __webpack_require__("1bc3");
25442var dP = Object.defineProperty;
25443
25444exports.f = __webpack_require__("8e60") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
25445 anObject(O);
25446 P = toPrimitive(P, true);
25447 anObject(Attributes);
25448 if (IE8_DOM_DEFINE) try {
25449 return dP(O, P, Attributes);
25450 } catch (e) { /* empty */ }
25451 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
25452 if ('value' in Attributes) O[P] = Attributes.value;
25453 return O;
25454};
25455
25456
25457/***/ }),
25458
25459/***/ "dbdb":
25460/***/ (function(module, exports, __webpack_require__) {
25461
25462var core = __webpack_require__("584a");
25463var global = __webpack_require__("e53d");
25464var SHARED = '__core-js_shared__';
25465var store = global[SHARED] || (global[SHARED] = {});
25466
25467(module.exports = function (key, value) {
25468 return store[key] || (store[key] = value !== undefined ? value : {});
25469})('versions', []).push({
25470 version: core.version,
25471 mode: __webpack_require__("b8e3") ? 'pure' : 'global',
25472 copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
25473});
25474
25475
25476/***/ }),
25477
25478/***/ "dbe4":
25479/***/ (function(module, __webpack_exports__, __webpack_require__) {
25480
25481"use strict";
25482/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTextarea_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f080");
25483/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTextarea_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTextarea_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25484/* unused harmony reexport * */
25485 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTextarea_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25486
25487/***/ }),
25488
25489/***/ "dc62":
25490/***/ (function(module, exports, __webpack_require__) {
25491
25492__webpack_require__("9427");
25493var $Object = __webpack_require__("584a").Object;
25494module.exports = function create(P, D) {
25495 return $Object.create(P, D);
25496};
25497
25498
25499/***/ }),
25500
25501/***/ "df16":
25502/***/ (function(module, exports, __webpack_require__) {
25503
25504// extracted by mini-css-extract-plugin
25505
25506/***/ }),
25507
25508/***/ "e0bc":
25509/***/ (function(module, __webpack_exports__, __webpack_require__) {
25510
25511"use strict";
25512/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCustomerData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b0f9");
25513/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCustomerData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCustomerData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25514/* unused harmony reexport * */
25515 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCustomerData_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25516
25517/***/ }),
25518
25519/***/ "e11e":
25520/***/ (function(module, exports) {
25521
25522// IE 8- don't enum bug keys
25523module.exports = (
25524 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
25525).split(',');
25526
25527
25528/***/ }),
25529
25530/***/ "e4ae":
25531/***/ (function(module, exports, __webpack_require__) {
25532
25533var isObject = __webpack_require__("f772");
25534module.exports = function (it) {
25535 if (!isObject(it)) throw TypeError(it + ' is not an object!');
25536 return it;
25537};
25538
25539
25540/***/ }),
25541
25542/***/ "e53d":
25543/***/ (function(module, exports) {
25544
25545// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
25546var global = module.exports = typeof window != 'undefined' && window.Math == Math
25547 ? window : typeof self != 'undefined' && self.Math == Math ? self
25548 // eslint-disable-next-line no-new-func
25549 : Function('return this')();
25550if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
25551
25552
25553/***/ }),
25554
25555/***/ "e692":
25556/***/ (function(module, exports) {
25557
25558module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
25559 '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
25560
25561
25562/***/ }),
25563
25564/***/ "e6f3":
25565/***/ (function(module, exports, __webpack_require__) {
25566
25567var has = __webpack_require__("07e3");
25568var toIObject = __webpack_require__("36c3");
25569var arrayIndexOf = __webpack_require__("5b4e")(false);
25570var IE_PROTO = __webpack_require__("5559")('IE_PROTO');
25571
25572module.exports = function (object, names) {
25573 var O = toIObject(object);
25574 var i = 0;
25575 var result = [];
25576 var key;
25577 for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
25578 // Don't enum bug & hidden keys
25579 while (names.length > i) if (has(O, key = names[i++])) {
25580 ~arrayIndexOf(result, key) || result.push(key);
25581 }
25582 return result;
25583};
25584
25585
25586/***/ }),
25587
25588/***/ "e814":
25589/***/ (function(module, exports, __webpack_require__) {
25590
25591module.exports = __webpack_require__("b9e9");
25592
25593/***/ }),
25594
25595/***/ "e902":
25596/***/ (function(module, __webpack_exports__, __webpack_require__) {
25597
25598"use strict";
25599/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotifications_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c7ef");
25600/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotifications_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotifications_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25601/* unused harmony reexport * */
25602 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShNotifications_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25603
25604/***/ }),
25605
25606/***/ "ea5f":
25607/***/ (function(module, __webpack_exports__, __webpack_require__) {
25608
25609"use strict";
25610/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTwoColumnsLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f7b2");
25611/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTwoColumnsLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTwoColumnsLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25612/* unused harmony reexport * */
25613 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShTwoColumnsLayout_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25614
25615/***/ }),
25616
25617/***/ "ead6":
25618/***/ (function(module, exports, __webpack_require__) {
25619
25620// Works with __proto__ only. Old v8 can't work with null proto objects.
25621/* eslint-disable no-proto */
25622var isObject = __webpack_require__("f772");
25623var anObject = __webpack_require__("e4ae");
25624var check = function (O, proto) {
25625 anObject(O);
25626 if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
25627};
25628module.exports = {
25629 set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
25630 function (test, buggy, set) {
25631 try {
25632 set = __webpack_require__("d864")(Function.call, __webpack_require__("bf0b").f(Object.prototype, '__proto__').set, 2);
25633 set(test, []);
25634 buggy = !(test instanceof Array);
25635 } catch (e) { buggy = true; }
25636 return function setPrototypeOf(O, proto) {
25637 check(O, proto);
25638 if (buggy) O.__proto__ = proto;
25639 else set(O, proto);
25640 return O;
25641 };
25642 }({}, false) : undefined),
25643 check: check
25644};
25645
25646
25647/***/ }),
25648
25649/***/ "ebfd":
25650/***/ (function(module, exports, __webpack_require__) {
25651
25652var META = __webpack_require__("62a0")('meta');
25653var isObject = __webpack_require__("f772");
25654var has = __webpack_require__("07e3");
25655var setDesc = __webpack_require__("d9f6").f;
25656var id = 0;
25657var isExtensible = Object.isExtensible || function () {
25658 return true;
25659};
25660var FREEZE = !__webpack_require__("294c")(function () {
25661 return isExtensible(Object.preventExtensions({}));
25662});
25663var setMeta = function (it) {
25664 setDesc(it, META, { value: {
25665 i: 'O' + ++id, // object ID
25666 w: {} // weak collections IDs
25667 } });
25668};
25669var fastKey = function (it, create) {
25670 // return primitive with prefix
25671 if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
25672 if (!has(it, META)) {
25673 // can't set metadata to uncaught frozen object
25674 if (!isExtensible(it)) return 'F';
25675 // not necessary to add metadata
25676 if (!create) return 'E';
25677 // add missing metadata
25678 setMeta(it);
25679 // return object ID
25680 } return it[META].i;
25681};
25682var getWeak = function (it, create) {
25683 if (!has(it, META)) {
25684 // can't set metadata to uncaught frozen object
25685 if (!isExtensible(it)) return true;
25686 // not necessary to add metadata
25687 if (!create) return false;
25688 // add missing metadata
25689 setMeta(it);
25690 // return hash weak collections IDs
25691 } return it[META].w;
25692};
25693// add metadata on freeze-family methods calling
25694var onFreeze = function (it) {
25695 if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
25696 return it;
25697};
25698var meta = module.exports = {
25699 KEY: META,
25700 NEED: false,
25701 fastKey: fastKey,
25702 getWeak: getWeak,
25703 onFreeze: onFreeze
25704};
25705
25706
25707/***/ }),
25708
25709/***/ "ec06":
25710/***/ (function(module, __webpack_exports__, __webpack_require__) {
25711
25712"use strict";
25713/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdownItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("062f");
25714/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdownItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdownItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
25715/* unused harmony reexport * */
25716 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShDropdownItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
25717
25718/***/ }),
25719
25720/***/ "ee07":
25721/***/ (function(module, exports, __webpack_require__) {
25722
25723// extracted by mini-css-extract-plugin
25724
25725/***/ }),
25726
25727/***/ "f080":
25728/***/ (function(module, exports, __webpack_require__) {
25729
25730// extracted by mini-css-extract-plugin
25731
25732/***/ }),
25733
25734/***/ "f0bd":
25735/***/ (function(module, __webpack_exports__, __webpack_require__) {
25736
25737"use strict";
25738/* WEBPACK VAR INJECTION */(function(global) {/**!
25739 * @fileOverview Kickass library to create and place poppers near their reference elements.
25740 * @version 1.14.7
25741 * @license
25742 * Copyright (c) 2016 Federico Zivolo and contributors
25743 *
25744 * Permission is hereby granted, free of charge, to any person obtaining a copy
25745 * of this software and associated documentation files (the "Software"), to deal
25746 * in the Software without restriction, including without limitation the rights
25747 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25748 * copies of the Software, and to permit persons to whom the Software is
25749 * furnished to do so, subject to the following conditions:
25750 *
25751 * The above copyright notice and this permission notice shall be included in all
25752 * copies or substantial portions of the Software.
25753 *
25754 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25755 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25756 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25757 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25758 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25759 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25760 * SOFTWARE.
25761 */
25762var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
25763
25764var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
25765var timeoutDuration = 0;
25766for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
25767 if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
25768 timeoutDuration = 1;
25769 break;
25770 }
25771}
25772
25773function microtaskDebounce(fn) {
25774 var called = false;
25775 return function () {
25776 if (called) {
25777 return;
25778 }
25779 called = true;
25780 window.Promise.resolve().then(function () {
25781 called = false;
25782 fn();
25783 });
25784 };
25785}
25786
25787function taskDebounce(fn) {
25788 var scheduled = false;
25789 return function () {
25790 if (!scheduled) {
25791 scheduled = true;
25792 setTimeout(function () {
25793 scheduled = false;
25794 fn();
25795 }, timeoutDuration);
25796 }
25797 };
25798}
25799
25800var supportsMicroTasks = isBrowser && window.Promise;
25801
25802/**
25803* Create a debounced version of a method, that's asynchronously deferred
25804* but called in the minimum time possible.
25805*
25806* @method
25807* @memberof Popper.Utils
25808* @argument {Function} fn
25809* @returns {Function}
25810*/
25811var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
25812
25813/**
25814 * Check if the given variable is a function
25815 * @method
25816 * @memberof Popper.Utils
25817 * @argument {Any} functionToCheck - variable to check
25818 * @returns {Boolean} answer to: is a function?
25819 */
25820function isFunction(functionToCheck) {
25821 var getType = {};
25822 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
25823}
25824
25825/**
25826 * Get CSS computed property of the given element
25827 * @method
25828 * @memberof Popper.Utils
25829 * @argument {Eement} element
25830 * @argument {String} property
25831 */
25832function getStyleComputedProperty(element, property) {
25833 if (element.nodeType !== 1) {
25834 return [];
25835 }
25836 // NOTE: 1 DOM access here
25837 var window = element.ownerDocument.defaultView;
25838 var css = window.getComputedStyle(element, null);
25839 return property ? css[property] : css;
25840}
25841
25842/**
25843 * Returns the parentNode or the host of the element
25844 * @method
25845 * @memberof Popper.Utils
25846 * @argument {Element} element
25847 * @returns {Element} parent
25848 */
25849function getParentNode(element) {
25850 if (element.nodeName === 'HTML') {
25851 return element;
25852 }
25853 return element.parentNode || element.host;
25854}
25855
25856/**
25857 * Returns the scrolling parent of the given element
25858 * @method
25859 * @memberof Popper.Utils
25860 * @argument {Element} element
25861 * @returns {Element} scroll parent
25862 */
25863function getScrollParent(element) {
25864 // Return body, `getScroll` will take care to get the correct `scrollTop` from it
25865 if (!element) {
25866 return document.body;
25867 }
25868
25869 switch (element.nodeName) {
25870 case 'HTML':
25871 case 'BODY':
25872 return element.ownerDocument.body;
25873 case '#document':
25874 return element.body;
25875 }
25876
25877 // Firefox want us to check `-x` and `-y` variations as well
25878
25879 var _getStyleComputedProp = getStyleComputedProperty(element),
25880 overflow = _getStyleComputedProp.overflow,
25881 overflowX = _getStyleComputedProp.overflowX,
25882 overflowY = _getStyleComputedProp.overflowY;
25883
25884 if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
25885 return element;
25886 }
25887
25888 return getScrollParent(getParentNode(element));
25889}
25890
25891var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
25892var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
25893
25894/**
25895 * Determines if the browser is Internet Explorer
25896 * @method
25897 * @memberof Popper.Utils
25898 * @param {Number} version to check
25899 * @returns {Boolean} isIE
25900 */
25901function isIE(version) {
25902 if (version === 11) {
25903 return isIE11;
25904 }
25905 if (version === 10) {
25906 return isIE10;
25907 }
25908 return isIE11 || isIE10;
25909}
25910
25911/**
25912 * Returns the offset parent of the given element
25913 * @method
25914 * @memberof Popper.Utils
25915 * @argument {Element} element
25916 * @returns {Element} offset parent
25917 */
25918function getOffsetParent(element) {
25919 if (!element) {
25920 return document.documentElement;
25921 }
25922
25923 var noOffsetParent = isIE(10) ? document.body : null;
25924
25925 // NOTE: 1 DOM access here
25926 var offsetParent = element.offsetParent || null;
25927 // Skip hidden elements which don't have an offsetParent
25928 while (offsetParent === noOffsetParent && element.nextElementSibling) {
25929 offsetParent = (element = element.nextElementSibling).offsetParent;
25930 }
25931
25932 var nodeName = offsetParent && offsetParent.nodeName;
25933
25934 if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
25935 return element ? element.ownerDocument.documentElement : document.documentElement;
25936 }
25937
25938 // .offsetParent will return the closest TH, TD or TABLE in case
25939 // no offsetParent is present, I hate this job...
25940 if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
25941 return getOffsetParent(offsetParent);
25942 }
25943
25944 return offsetParent;
25945}
25946
25947function isOffsetContainer(element) {
25948 var nodeName = element.nodeName;
25949
25950 if (nodeName === 'BODY') {
25951 return false;
25952 }
25953 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
25954}
25955
25956/**
25957 * Finds the root node (document, shadowDOM root) of the given element
25958 * @method
25959 * @memberof Popper.Utils
25960 * @argument {Element} node
25961 * @returns {Element} root node
25962 */
25963function getRoot(node) {
25964 if (node.parentNode !== null) {
25965 return getRoot(node.parentNode);
25966 }
25967
25968 return node;
25969}
25970
25971/**
25972 * Finds the offset parent common to the two provided nodes
25973 * @method
25974 * @memberof Popper.Utils
25975 * @argument {Element} element1
25976 * @argument {Element} element2
25977 * @returns {Element} common offset parent
25978 */
25979function findCommonOffsetParent(element1, element2) {
25980 // This check is needed to avoid errors in case one of the elements isn't defined for any reason
25981 if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
25982 return document.documentElement;
25983 }
25984
25985 // Here we make sure to give as "start" the element that comes first in the DOM
25986 var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
25987 var start = order ? element1 : element2;
25988 var end = order ? element2 : element1;
25989
25990 // Get common ancestor container
25991 var range = document.createRange();
25992 range.setStart(start, 0);
25993 range.setEnd(end, 0);
25994 var commonAncestorContainer = range.commonAncestorContainer;
25995
25996 // Both nodes are inside #document
25997
25998 if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
25999 if (isOffsetContainer(commonAncestorContainer)) {
26000 return commonAncestorContainer;
26001 }
26002
26003 return getOffsetParent(commonAncestorContainer);
26004 }
26005
26006 // one of the nodes is inside shadowDOM, find which one
26007 var element1root = getRoot(element1);
26008 if (element1root.host) {
26009 return findCommonOffsetParent(element1root.host, element2);
26010 } else {
26011 return findCommonOffsetParent(element1, getRoot(element2).host);
26012 }
26013}
26014
26015/**
26016 * Gets the scroll value of the given element in the given side (top and left)
26017 * @method
26018 * @memberof Popper.Utils
26019 * @argument {Element} element
26020 * @argument {String} side `top` or `left`
26021 * @returns {number} amount of scrolled pixels
26022 */
26023function getScroll(element) {
26024 var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
26025
26026 var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
26027 var nodeName = element.nodeName;
26028
26029 if (nodeName === 'BODY' || nodeName === 'HTML') {
26030 var html = element.ownerDocument.documentElement;
26031 var scrollingElement = element.ownerDocument.scrollingElement || html;
26032 return scrollingElement[upperSide];
26033 }
26034
26035 return element[upperSide];
26036}
26037
26038/*
26039 * Sum or subtract the element scroll values (left and top) from a given rect object
26040 * @method
26041 * @memberof Popper.Utils
26042 * @param {Object} rect - Rect object you want to change
26043 * @param {HTMLElement} element - The element from the function reads the scroll values
26044 * @param {Boolean} subtract - set to true if you want to subtract the scroll values
26045 * @return {Object} rect - The modifier rect object
26046 */
26047function includeScroll(rect, element) {
26048 var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
26049
26050 var scrollTop = getScroll(element, 'top');
26051 var scrollLeft = getScroll(element, 'left');
26052 var modifier = subtract ? -1 : 1;
26053 rect.top += scrollTop * modifier;
26054 rect.bottom += scrollTop * modifier;
26055 rect.left += scrollLeft * modifier;
26056 rect.right += scrollLeft * modifier;
26057 return rect;
26058}
26059
26060/*
26061 * Helper to detect borders of a given element
26062 * @method
26063 * @memberof Popper.Utils
26064 * @param {CSSStyleDeclaration} styles
26065 * Result of `getStyleComputedProperty` on the given element
26066 * @param {String} axis - `x` or `y`
26067 * @return {number} borders - The borders size of the given axis
26068 */
26069
26070function getBordersSize(styles, axis) {
26071 var sideA = axis === 'x' ? 'Left' : 'Top';
26072 var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
26073
26074 return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);
26075}
26076
26077function getSize(axis, body, html, computedStyle) {
26078 return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);
26079}
26080
26081function getWindowSizes(document) {
26082 var body = document.body;
26083 var html = document.documentElement;
26084 var computedStyle = isIE(10) && getComputedStyle(html);
26085
26086 return {
26087 height: getSize('Height', body, html, computedStyle),
26088 width: getSize('Width', body, html, computedStyle)
26089 };
26090}
26091
26092var classCallCheck = function (instance, Constructor) {
26093 if (!(instance instanceof Constructor)) {
26094 throw new TypeError("Cannot call a class as a function");
26095 }
26096};
26097
26098var createClass = function () {
26099 function defineProperties(target, props) {
26100 for (var i = 0; i < props.length; i++) {
26101 var descriptor = props[i];
26102 descriptor.enumerable = descriptor.enumerable || false;
26103 descriptor.configurable = true;
26104 if ("value" in descriptor) descriptor.writable = true;
26105 Object.defineProperty(target, descriptor.key, descriptor);
26106 }
26107 }
26108
26109 return function (Constructor, protoProps, staticProps) {
26110 if (protoProps) defineProperties(Constructor.prototype, protoProps);
26111 if (staticProps) defineProperties(Constructor, staticProps);
26112 return Constructor;
26113 };
26114}();
26115
26116
26117
26118
26119
26120var defineProperty = function (obj, key, value) {
26121 if (key in obj) {
26122 Object.defineProperty(obj, key, {
26123 value: value,
26124 enumerable: true,
26125 configurable: true,
26126 writable: true
26127 });
26128 } else {
26129 obj[key] = value;
26130 }
26131
26132 return obj;
26133};
26134
26135var _extends = Object.assign || function (target) {
26136 for (var i = 1; i < arguments.length; i++) {
26137 var source = arguments[i];
26138
26139 for (var key in source) {
26140 if (Object.prototype.hasOwnProperty.call(source, key)) {
26141 target[key] = source[key];
26142 }
26143 }
26144 }
26145
26146 return target;
26147};
26148
26149/**
26150 * Given element offsets, generate an output similar to getBoundingClientRect
26151 * @method
26152 * @memberof Popper.Utils
26153 * @argument {Object} offsets
26154 * @returns {Object} ClientRect like output
26155 */
26156function getClientRect(offsets) {
26157 return _extends({}, offsets, {
26158 right: offsets.left + offsets.width,
26159 bottom: offsets.top + offsets.height
26160 });
26161}
26162
26163/**
26164 * Get bounding client rect of given element
26165 * @method
26166 * @memberof Popper.Utils
26167 * @param {HTMLElement} element
26168 * @return {Object} client rect
26169 */
26170function getBoundingClientRect(element) {
26171 var rect = {};
26172
26173 // IE10 10 FIX: Please, don't ask, the element isn't
26174 // considered in DOM in some circumstances...
26175 // This isn't reproducible in IE10 compatibility mode of IE11
26176 try {
26177 if (isIE(10)) {
26178 rect = element.getBoundingClientRect();
26179 var scrollTop = getScroll(element, 'top');
26180 var scrollLeft = getScroll(element, 'left');
26181 rect.top += scrollTop;
26182 rect.left += scrollLeft;
26183 rect.bottom += scrollTop;
26184 rect.right += scrollLeft;
26185 } else {
26186 rect = element.getBoundingClientRect();
26187 }
26188 } catch (e) {}
26189
26190 var result = {
26191 left: rect.left,
26192 top: rect.top,
26193 width: rect.right - rect.left,
26194 height: rect.bottom - rect.top
26195 };
26196
26197 // subtract scrollbar size from sizes
26198 var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
26199 var width = sizes.width || element.clientWidth || result.right - result.left;
26200 var height = sizes.height || element.clientHeight || result.bottom - result.top;
26201
26202 var horizScrollbar = element.offsetWidth - width;
26203 var vertScrollbar = element.offsetHeight - height;
26204
26205 // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
26206 // we make this check conditional for performance reasons
26207 if (horizScrollbar || vertScrollbar) {
26208 var styles = getStyleComputedProperty(element);
26209 horizScrollbar -= getBordersSize(styles, 'x');
26210 vertScrollbar -= getBordersSize(styles, 'y');
26211
26212 result.width -= horizScrollbar;
26213 result.height -= vertScrollbar;
26214 }
26215
26216 return getClientRect(result);
26217}
26218
26219function getOffsetRectRelativeToArbitraryNode(children, parent) {
26220 var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
26221
26222 var isIE10 = isIE(10);
26223 var isHTML = parent.nodeName === 'HTML';
26224 var childrenRect = getBoundingClientRect(children);
26225 var parentRect = getBoundingClientRect(parent);
26226 var scrollParent = getScrollParent(children);
26227
26228 var styles = getStyleComputedProperty(parent);
26229 var borderTopWidth = parseFloat(styles.borderTopWidth, 10);
26230 var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);
26231
26232 // In cases where the parent is fixed, we must ignore negative scroll in offset calc
26233 if (fixedPosition && isHTML) {
26234 parentRect.top = Math.max(parentRect.top, 0);
26235 parentRect.left = Math.max(parentRect.left, 0);
26236 }
26237 var offsets = getClientRect({
26238 top: childrenRect.top - parentRect.top - borderTopWidth,
26239 left: childrenRect.left - parentRect.left - borderLeftWidth,
26240 width: childrenRect.width,
26241 height: childrenRect.height
26242 });
26243 offsets.marginTop = 0;
26244 offsets.marginLeft = 0;
26245
26246 // Subtract margins of documentElement in case it's being used as parent
26247 // we do this only on HTML because it's the only element that behaves
26248 // differently when margins are applied to it. The margins are included in
26249 // the box of the documentElement, in the other cases not.
26250 if (!isIE10 && isHTML) {
26251 var marginTop = parseFloat(styles.marginTop, 10);
26252 var marginLeft = parseFloat(styles.marginLeft, 10);
26253
26254 offsets.top -= borderTopWidth - marginTop;
26255 offsets.bottom -= borderTopWidth - marginTop;
26256 offsets.left -= borderLeftWidth - marginLeft;
26257 offsets.right -= borderLeftWidth - marginLeft;
26258
26259 // Attach marginTop and marginLeft because in some circumstances we may need them
26260 offsets.marginTop = marginTop;
26261 offsets.marginLeft = marginLeft;
26262 }
26263
26264 if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
26265 offsets = includeScroll(offsets, parent);
26266 }
26267
26268 return offsets;
26269}
26270
26271function getViewportOffsetRectRelativeToArtbitraryNode(element) {
26272 var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
26273
26274 var html = element.ownerDocument.documentElement;
26275 var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
26276 var width = Math.max(html.clientWidth, window.innerWidth || 0);
26277 var height = Math.max(html.clientHeight, window.innerHeight || 0);
26278
26279 var scrollTop = !excludeScroll ? getScroll(html) : 0;
26280 var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;
26281
26282 var offset = {
26283 top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
26284 left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
26285 width: width,
26286 height: height
26287 };
26288
26289 return getClientRect(offset);
26290}
26291
26292/**
26293 * Check if the given element is fixed or is inside a fixed parent
26294 * @method
26295 * @memberof Popper.Utils
26296 * @argument {Element} element
26297 * @argument {Element} customContainer
26298 * @returns {Boolean} answer to "isFixed?"
26299 */
26300function isFixed(element) {
26301 var nodeName = element.nodeName;
26302 if (nodeName === 'BODY' || nodeName === 'HTML') {
26303 return false;
26304 }
26305 if (getStyleComputedProperty(element, 'position') === 'fixed') {
26306 return true;
26307 }
26308 var parentNode = getParentNode(element);
26309 if (!parentNode) {
26310 return false;
26311 }
26312 return isFixed(parentNode);
26313}
26314
26315/**
26316 * Finds the first parent of an element that has a transformed property defined
26317 * @method
26318 * @memberof Popper.Utils
26319 * @argument {Element} element
26320 * @returns {Element} first transformed parent or documentElement
26321 */
26322
26323function getFixedPositionOffsetParent(element) {
26324 // This check is needed to avoid errors in case one of the elements isn't defined for any reason
26325 if (!element || !element.parentElement || isIE()) {
26326 return document.documentElement;
26327 }
26328 var el = element.parentElement;
26329 while (el && getStyleComputedProperty(el, 'transform') === 'none') {
26330 el = el.parentElement;
26331 }
26332 return el || document.documentElement;
26333}
26334
26335/**
26336 * Computed the boundaries limits and return them
26337 * @method
26338 * @memberof Popper.Utils
26339 * @param {HTMLElement} popper
26340 * @param {HTMLElement} reference
26341 * @param {number} padding
26342 * @param {HTMLElement} boundariesElement - Element used to define the boundaries
26343 * @param {Boolean} fixedPosition - Is in fixed position mode
26344 * @returns {Object} Coordinates of the boundaries
26345 */
26346function getBoundaries(popper, reference, padding, boundariesElement) {
26347 var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
26348
26349 // NOTE: 1 DOM access here
26350
26351 var boundaries = { top: 0, left: 0 };
26352 var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);
26353
26354 // Handle viewport case
26355 if (boundariesElement === 'viewport') {
26356 boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
26357 } else {
26358 // Handle other cases based on DOM element used as boundaries
26359 var boundariesNode = void 0;
26360 if (boundariesElement === 'scrollParent') {
26361 boundariesNode = getScrollParent(getParentNode(reference));
26362 if (boundariesNode.nodeName === 'BODY') {
26363 boundariesNode = popper.ownerDocument.documentElement;
26364 }
26365 } else if (boundariesElement === 'window') {
26366 boundariesNode = popper.ownerDocument.documentElement;
26367 } else {
26368 boundariesNode = boundariesElement;
26369 }
26370
26371 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);
26372
26373 // In case of HTML, we need a different computation
26374 if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
26375 var _getWindowSizes = getWindowSizes(popper.ownerDocument),
26376 height = _getWindowSizes.height,
26377 width = _getWindowSizes.width;
26378
26379 boundaries.top += offsets.top - offsets.marginTop;
26380 boundaries.bottom = height + offsets.top;
26381 boundaries.left += offsets.left - offsets.marginLeft;
26382 boundaries.right = width + offsets.left;
26383 } else {
26384 // for all the other DOM elements, this one is good
26385 boundaries = offsets;
26386 }
26387 }
26388
26389 // Add paddings
26390 padding = padding || 0;
26391 var isPaddingNumber = typeof padding === 'number';
26392 boundaries.left += isPaddingNumber ? padding : padding.left || 0;
26393 boundaries.top += isPaddingNumber ? padding : padding.top || 0;
26394 boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
26395 boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
26396
26397 return boundaries;
26398}
26399
26400function getArea(_ref) {
26401 var width = _ref.width,
26402 height = _ref.height;
26403
26404 return width * height;
26405}
26406
26407/**
26408 * Utility used to transform the `auto` placement to the placement with more
26409 * available space.
26410 * @method
26411 * @memberof Popper.Utils
26412 * @argument {Object} data - The data object generated by update method
26413 * @argument {Object} options - Modifiers configuration and options
26414 * @returns {Object} The data object, properly modified
26415 */
26416function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
26417 var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
26418
26419 if (placement.indexOf('auto') === -1) {
26420 return placement;
26421 }
26422
26423 var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
26424
26425 var rects = {
26426 top: {
26427 width: boundaries.width,
26428 height: refRect.top - boundaries.top
26429 },
26430 right: {
26431 width: boundaries.right - refRect.right,
26432 height: boundaries.height
26433 },
26434 bottom: {
26435 width: boundaries.width,
26436 height: boundaries.bottom - refRect.bottom
26437 },
26438 left: {
26439 width: refRect.left - boundaries.left,
26440 height: boundaries.height
26441 }
26442 };
26443
26444 var sortedAreas = Object.keys(rects).map(function (key) {
26445 return _extends({
26446 key: key
26447 }, rects[key], {
26448 area: getArea(rects[key])
26449 });
26450 }).sort(function (a, b) {
26451 return b.area - a.area;
26452 });
26453
26454 var filteredAreas = sortedAreas.filter(function (_ref2) {
26455 var width = _ref2.width,
26456 height = _ref2.height;
26457 return width >= popper.clientWidth && height >= popper.clientHeight;
26458 });
26459
26460 var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
26461
26462 var variation = placement.split('-')[1];
26463
26464 return computedPlacement + (variation ? '-' + variation : '');
26465}
26466
26467/**
26468 * Get offsets to the reference element
26469 * @method
26470 * @memberof Popper.Utils
26471 * @param {Object} state
26472 * @param {Element} popper - the popper element
26473 * @param {Element} reference - the reference element (the popper will be relative to this)
26474 * @param {Element} fixedPosition - is in fixed position mode
26475 * @returns {Object} An object containing the offsets which will be applied to the popper
26476 */
26477function getReferenceOffsets(state, popper, reference) {
26478 var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
26479
26480 var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);
26481 return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
26482}
26483
26484/**
26485 * Get the outer sizes of the given element (offset size + margins)
26486 * @method
26487 * @memberof Popper.Utils
26488 * @argument {Element} element
26489 * @returns {Object} object containing width and height properties
26490 */
26491function getOuterSizes(element) {
26492 var window = element.ownerDocument.defaultView;
26493 var styles = window.getComputedStyle(element);
26494 var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
26495 var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
26496 var result = {
26497 width: element.offsetWidth + y,
26498 height: element.offsetHeight + x
26499 };
26500 return result;
26501}
26502
26503/**
26504 * Get the opposite placement of the given one
26505 * @method
26506 * @memberof Popper.Utils
26507 * @argument {String} placement
26508 * @returns {String} flipped placement
26509 */
26510function getOppositePlacement(placement) {
26511 var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
26512 return placement.replace(/left|right|bottom|top/g, function (matched) {
26513 return hash[matched];
26514 });
26515}
26516
26517/**
26518 * Get offsets to the popper
26519 * @method
26520 * @memberof Popper.Utils
26521 * @param {Object} position - CSS position the Popper will get applied
26522 * @param {HTMLElement} popper - the popper element
26523 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
26524 * @param {String} placement - one of the valid placement options
26525 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
26526 */
26527function getPopperOffsets(popper, referenceOffsets, placement) {
26528 placement = placement.split('-')[0];
26529
26530 // Get popper node sizes
26531 var popperRect = getOuterSizes(popper);
26532
26533 // Add position, width and height to our offsets object
26534 var popperOffsets = {
26535 width: popperRect.width,
26536 height: popperRect.height
26537 };
26538
26539 // depending by the popper placement we have to compute its offsets slightly differently
26540 var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
26541 var mainSide = isHoriz ? 'top' : 'left';
26542 var secondarySide = isHoriz ? 'left' : 'top';
26543 var measurement = isHoriz ? 'height' : 'width';
26544 var secondaryMeasurement = !isHoriz ? 'height' : 'width';
26545
26546 popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
26547 if (placement === secondarySide) {
26548 popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
26549 } else {
26550 popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
26551 }
26552
26553 return popperOffsets;
26554}
26555
26556/**
26557 * Mimics the `find` method of Array
26558 * @method
26559 * @memberof Popper.Utils
26560 * @argument {Array} arr
26561 * @argument prop
26562 * @argument value
26563 * @returns index or -1
26564 */
26565function find(arr, check) {
26566 // use native find if supported
26567 if (Array.prototype.find) {
26568 return arr.find(check);
26569 }
26570
26571 // use `filter` to obtain the same behavior of `find`
26572 return arr.filter(check)[0];
26573}
26574
26575/**
26576 * Return the index of the matching object
26577 * @method
26578 * @memberof Popper.Utils
26579 * @argument {Array} arr
26580 * @argument prop
26581 * @argument value
26582 * @returns index or -1
26583 */
26584function findIndex(arr, prop, value) {
26585 // use native findIndex if supported
26586 if (Array.prototype.findIndex) {
26587 return arr.findIndex(function (cur) {
26588 return cur[prop] === value;
26589 });
26590 }
26591
26592 // use `find` + `indexOf` if `findIndex` isn't supported
26593 var match = find(arr, function (obj) {
26594 return obj[prop] === value;
26595 });
26596 return arr.indexOf(match);
26597}
26598
26599/**
26600 * Loop trough the list of modifiers and run them in order,
26601 * each of them will then edit the data object.
26602 * @method
26603 * @memberof Popper.Utils
26604 * @param {dataObject} data
26605 * @param {Array} modifiers
26606 * @param {String} ends - Optional modifier name used as stopper
26607 * @returns {dataObject}
26608 */
26609function runModifiers(modifiers, data, ends) {
26610 var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
26611
26612 modifiersToRun.forEach(function (modifier) {
26613 if (modifier['function']) {
26614 // eslint-disable-line dot-notation
26615 console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
26616 }
26617 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
26618 if (modifier.enabled && isFunction(fn)) {
26619 // Add properties to offsets to make them a complete clientRect object
26620 // we do this before each modifier to make sure the previous one doesn't
26621 // mess with these values
26622 data.offsets.popper = getClientRect(data.offsets.popper);
26623 data.offsets.reference = getClientRect(data.offsets.reference);
26624
26625 data = fn(data, modifier);
26626 }
26627 });
26628
26629 return data;
26630}
26631
26632/**
26633 * Updates the position of the popper, computing the new offsets and applying
26634 * the new style.<br />
26635 * Prefer `scheduleUpdate` over `update` because of performance reasons.
26636 * @method
26637 * @memberof Popper
26638 */
26639function update() {
26640 // if popper is destroyed, don't perform any further update
26641 if (this.state.isDestroyed) {
26642 return;
26643 }
26644
26645 var data = {
26646 instance: this,
26647 styles: {},
26648 arrowStyles: {},
26649 attributes: {},
26650 flipped: false,
26651 offsets: {}
26652 };
26653
26654 // compute reference element offsets
26655 data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);
26656
26657 // compute auto placement, store placement inside the data object,
26658 // modifiers will be able to edit `placement` if needed
26659 // and refer to originalPlacement to know the original value
26660 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
26661
26662 // store the computed placement inside `originalPlacement`
26663 data.originalPlacement = data.placement;
26664
26665 data.positionFixed = this.options.positionFixed;
26666
26667 // compute the popper offsets
26668 data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
26669
26670 data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';
26671
26672 // run the modifiers
26673 data = runModifiers(this.modifiers, data);
26674
26675 // the first `update` will call `onCreate` callback
26676 // the other ones will call `onUpdate` callback
26677 if (!this.state.isCreated) {
26678 this.state.isCreated = true;
26679 this.options.onCreate(data);
26680 } else {
26681 this.options.onUpdate(data);
26682 }
26683}
26684
26685/**
26686 * Helper used to know if the given modifier is enabled.
26687 * @method
26688 * @memberof Popper.Utils
26689 * @returns {Boolean}
26690 */
26691function isModifierEnabled(modifiers, modifierName) {
26692 return modifiers.some(function (_ref) {
26693 var name = _ref.name,
26694 enabled = _ref.enabled;
26695 return enabled && name === modifierName;
26696 });
26697}
26698
26699/**
26700 * Get the prefixed supported property name
26701 * @method
26702 * @memberof Popper.Utils
26703 * @argument {String} property (camelCase)
26704 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
26705 */
26706function getSupportedPropertyName(property) {
26707 var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
26708 var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
26709
26710 for (var i = 0; i < prefixes.length; i++) {
26711 var prefix = prefixes[i];
26712 var toCheck = prefix ? '' + prefix + upperProp : property;
26713 if (typeof document.body.style[toCheck] !== 'undefined') {
26714 return toCheck;
26715 }
26716 }
26717 return null;
26718}
26719
26720/**
26721 * Destroys the popper.
26722 * @method
26723 * @memberof Popper
26724 */
26725function destroy() {
26726 this.state.isDestroyed = true;
26727
26728 // touch DOM only if `applyStyle` modifier is enabled
26729 if (isModifierEnabled(this.modifiers, 'applyStyle')) {
26730 this.popper.removeAttribute('x-placement');
26731 this.popper.style.position = '';
26732 this.popper.style.top = '';
26733 this.popper.style.left = '';
26734 this.popper.style.right = '';
26735 this.popper.style.bottom = '';
26736 this.popper.style.willChange = '';
26737 this.popper.style[getSupportedPropertyName('transform')] = '';
26738 }
26739
26740 this.disableEventListeners();
26741
26742 // remove the popper if user explicity asked for the deletion on destroy
26743 // do not use `remove` because IE11 doesn't support it
26744 if (this.options.removeOnDestroy) {
26745 this.popper.parentNode.removeChild(this.popper);
26746 }
26747 return this;
26748}
26749
26750/**
26751 * Get the window associated with the element
26752 * @argument {Element} element
26753 * @returns {Window}
26754 */
26755function getWindow(element) {
26756 var ownerDocument = element.ownerDocument;
26757 return ownerDocument ? ownerDocument.defaultView : window;
26758}
26759
26760function attachToScrollParents(scrollParent, event, callback, scrollParents) {
26761 var isBody = scrollParent.nodeName === 'BODY';
26762 var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
26763 target.addEventListener(event, callback, { passive: true });
26764
26765 if (!isBody) {
26766 attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
26767 }
26768 scrollParents.push(target);
26769}
26770
26771/**
26772 * Setup needed event listeners used to update the popper position
26773 * @method
26774 * @memberof Popper.Utils
26775 * @private
26776 */
26777function setupEventListeners(reference, options, state, updateBound) {
26778 // Resize event listener on window
26779 state.updateBound = updateBound;
26780 getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });
26781
26782 // Scroll event listener on scroll parents
26783 var scrollElement = getScrollParent(reference);
26784 attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
26785 state.scrollElement = scrollElement;
26786 state.eventsEnabled = true;
26787
26788 return state;
26789}
26790
26791/**
26792 * It will add resize/scroll events and start recalculating
26793 * position of the popper element when they are triggered.
26794 * @method
26795 * @memberof Popper
26796 */
26797function enableEventListeners() {
26798 if (!this.state.eventsEnabled) {
26799 this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
26800 }
26801}
26802
26803/**
26804 * Remove event listeners used to update the popper position
26805 * @method
26806 * @memberof Popper.Utils
26807 * @private
26808 */
26809function removeEventListeners(reference, state) {
26810 // Remove resize event listener on window
26811 getWindow(reference).removeEventListener('resize', state.updateBound);
26812
26813 // Remove scroll event listener on scroll parents
26814 state.scrollParents.forEach(function (target) {
26815 target.removeEventListener('scroll', state.updateBound);
26816 });
26817
26818 // Reset state
26819 state.updateBound = null;
26820 state.scrollParents = [];
26821 state.scrollElement = null;
26822 state.eventsEnabled = false;
26823 return state;
26824}
26825
26826/**
26827 * It will remove resize/scroll events and won't recalculate popper position
26828 * when they are triggered. It also won't trigger `onUpdate` callback anymore,
26829 * unless you call `update` method manually.
26830 * @method
26831 * @memberof Popper
26832 */
26833function disableEventListeners() {
26834 if (this.state.eventsEnabled) {
26835 cancelAnimationFrame(this.scheduleUpdate);
26836 this.state = removeEventListeners(this.reference, this.state);
26837 }
26838}
26839
26840/**
26841 * Tells if a given input is a number
26842 * @method
26843 * @memberof Popper.Utils
26844 * @param {*} input to check
26845 * @return {Boolean}
26846 */
26847function isNumeric(n) {
26848 return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
26849}
26850
26851/**
26852 * Set the style to the given popper
26853 * @method
26854 * @memberof Popper.Utils
26855 * @argument {Element} element - Element to apply the style to
26856 * @argument {Object} styles
26857 * Object with a list of properties and values which will be applied to the element
26858 */
26859function setStyles(element, styles) {
26860 Object.keys(styles).forEach(function (prop) {
26861 var unit = '';
26862 // add unit if the value is numeric and is one of the following
26863 if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
26864 unit = 'px';
26865 }
26866 element.style[prop] = styles[prop] + unit;
26867 });
26868}
26869
26870/**
26871 * Set the attributes to the given popper
26872 * @method
26873 * @memberof Popper.Utils
26874 * @argument {Element} element - Element to apply the attributes to
26875 * @argument {Object} styles
26876 * Object with a list of properties and values which will be applied to the element
26877 */
26878function setAttributes(element, attributes) {
26879 Object.keys(attributes).forEach(function (prop) {
26880 var value = attributes[prop];
26881 if (value !== false) {
26882 element.setAttribute(prop, attributes[prop]);
26883 } else {
26884 element.removeAttribute(prop);
26885 }
26886 });
26887}
26888
26889/**
26890 * @function
26891 * @memberof Modifiers
26892 * @argument {Object} data - The data object generated by `update` method
26893 * @argument {Object} data.styles - List of style properties - values to apply to popper element
26894 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
26895 * @argument {Object} options - Modifiers configuration and options
26896 * @returns {Object} The same data object
26897 */
26898function applyStyle(data) {
26899 // any property present in `data.styles` will be applied to the popper,
26900 // in this way we can make the 3rd party modifiers add custom styles to it
26901 // Be aware, modifiers could override the properties defined in the previous
26902 // lines of this modifier!
26903 setStyles(data.instance.popper, data.styles);
26904
26905 // any property present in `data.attributes` will be applied to the popper,
26906 // they will be set as HTML attributes of the element
26907 setAttributes(data.instance.popper, data.attributes);
26908
26909 // if arrowElement is defined and arrowStyles has some properties
26910 if (data.arrowElement && Object.keys(data.arrowStyles).length) {
26911 setStyles(data.arrowElement, data.arrowStyles);
26912 }
26913
26914 return data;
26915}
26916
26917/**
26918 * Set the x-placement attribute before everything else because it could be used
26919 * to add margins to the popper margins needs to be calculated to get the
26920 * correct popper offsets.
26921 * @method
26922 * @memberof Popper.modifiers
26923 * @param {HTMLElement} reference - The reference element used to position the popper
26924 * @param {HTMLElement} popper - The HTML element used as popper
26925 * @param {Object} options - Popper.js options
26926 */
26927function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
26928 // compute reference element offsets
26929 var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
26930
26931 // compute auto placement, store placement inside the data object,
26932 // modifiers will be able to edit `placement` if needed
26933 // and refer to originalPlacement to know the original value
26934 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
26935
26936 popper.setAttribute('x-placement', placement);
26937
26938 // Apply `position` to popper before anything else because
26939 // without the position applied we can't guarantee correct computations
26940 setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });
26941
26942 return options;
26943}
26944
26945/**
26946 * @function
26947 * @memberof Popper.Utils
26948 * @argument {Object} data - The data object generated by `update` method
26949 * @argument {Boolean} shouldRound - If the offsets should be rounded at all
26950 * @returns {Object} The popper's position offsets rounded
26951 *
26952 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as
26953 * good as it can be within reason.
26954 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715
26955 *
26956 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari
26957 * as well on High DPI screens).
26958 *
26959 * Firefox prefers no rounding for positioning and does not have blurriness on
26960 * high DPI screens.
26961 *
26962 * Only horizontal placement and left/right values need to be considered.
26963 */
26964function getRoundedOffsets(data, shouldRound) {
26965 var _data$offsets = data.offsets,
26966 popper = _data$offsets.popper,
26967 reference = _data$offsets.reference;
26968 var round = Math.round,
26969 floor = Math.floor;
26970
26971 var noRound = function noRound(v) {
26972 return v;
26973 };
26974
26975 var referenceWidth = round(reference.width);
26976 var popperWidth = round(popper.width);
26977
26978 var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
26979 var isVariation = data.placement.indexOf('-') !== -1;
26980 var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
26981 var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
26982
26983 var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
26984 var verticalToInteger = !shouldRound ? noRound : round;
26985
26986 return {
26987 left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
26988 top: verticalToInteger(popper.top),
26989 bottom: verticalToInteger(popper.bottom),
26990 right: horizontalToInteger(popper.right)
26991 };
26992}
26993
26994var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
26995
26996/**
26997 * @function
26998 * @memberof Modifiers
26999 * @argument {Object} data - The data object generated by `update` method
27000 * @argument {Object} options - Modifiers configuration and options
27001 * @returns {Object} The data object, properly modified
27002 */
27003function computeStyle(data, options) {
27004 var x = options.x,
27005 y = options.y;
27006 var popper = data.offsets.popper;
27007
27008 // Remove this legacy support in Popper.js v2
27009
27010 var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
27011 return modifier.name === 'applyStyle';
27012 }).gpuAcceleration;
27013 if (legacyGpuAccelerationOption !== undefined) {
27014 console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
27015 }
27016 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
27017
27018 var offsetParent = getOffsetParent(data.instance.popper);
27019 var offsetParentRect = getBoundingClientRect(offsetParent);
27020
27021 // Styles
27022 var styles = {
27023 position: popper.position
27024 };
27025
27026 var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
27027
27028 var sideA = x === 'bottom' ? 'top' : 'bottom';
27029 var sideB = y === 'right' ? 'left' : 'right';
27030
27031 // if gpuAcceleration is set to `true` and transform is supported,
27032 // we use `translate3d` to apply the position to the popper we
27033 // automatically use the supported prefixed version if needed
27034 var prefixedProperty = getSupportedPropertyName('transform');
27035
27036 // now, let's make a step back and look at this code closely (wtf?)
27037 // If the content of the popper grows once it's been positioned, it
27038 // may happen that the popper gets misplaced because of the new content
27039 // overflowing its reference element
27040 // To avoid this problem, we provide two options (x and y), which allow
27041 // the consumer to define the offset origin.
27042 // If we position a popper on top of a reference element, we can set
27043 // `x` to `top` to make the popper grow towards its top instead of
27044 // its bottom.
27045 var left = void 0,
27046 top = void 0;
27047 if (sideA === 'bottom') {
27048 // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
27049 // and not the bottom of the html element
27050 if (offsetParent.nodeName === 'HTML') {
27051 top = -offsetParent.clientHeight + offsets.bottom;
27052 } else {
27053 top = -offsetParentRect.height + offsets.bottom;
27054 }
27055 } else {
27056 top = offsets.top;
27057 }
27058 if (sideB === 'right') {
27059 if (offsetParent.nodeName === 'HTML') {
27060 left = -offsetParent.clientWidth + offsets.right;
27061 } else {
27062 left = -offsetParentRect.width + offsets.right;
27063 }
27064 } else {
27065 left = offsets.left;
27066 }
27067 if (gpuAcceleration && prefixedProperty) {
27068 styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
27069 styles[sideA] = 0;
27070 styles[sideB] = 0;
27071 styles.willChange = 'transform';
27072 } else {
27073 // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
27074 var invertTop = sideA === 'bottom' ? -1 : 1;
27075 var invertLeft = sideB === 'right' ? -1 : 1;
27076 styles[sideA] = top * invertTop;
27077 styles[sideB] = left * invertLeft;
27078 styles.willChange = sideA + ', ' + sideB;
27079 }
27080
27081 // Attributes
27082 var attributes = {
27083 'x-placement': data.placement
27084 };
27085
27086 // Update `data` attributes, styles and arrowStyles
27087 data.attributes = _extends({}, attributes, data.attributes);
27088 data.styles = _extends({}, styles, data.styles);
27089 data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
27090
27091 return data;
27092}
27093
27094/**
27095 * Helper used to know if the given modifier depends from another one.<br />
27096 * It checks if the needed modifier is listed and enabled.
27097 * @method
27098 * @memberof Popper.Utils
27099 * @param {Array} modifiers - list of modifiers
27100 * @param {String} requestingName - name of requesting modifier
27101 * @param {String} requestedName - name of requested modifier
27102 * @returns {Boolean}
27103 */
27104function isModifierRequired(modifiers, requestingName, requestedName) {
27105 var requesting = find(modifiers, function (_ref) {
27106 var name = _ref.name;
27107 return name === requestingName;
27108 });
27109
27110 var isRequired = !!requesting && modifiers.some(function (modifier) {
27111 return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
27112 });
27113
27114 if (!isRequired) {
27115 var _requesting = '`' + requestingName + '`';
27116 var requested = '`' + requestedName + '`';
27117 console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
27118 }
27119 return isRequired;
27120}
27121
27122/**
27123 * @function
27124 * @memberof Modifiers
27125 * @argument {Object} data - The data object generated by update method
27126 * @argument {Object} options - Modifiers configuration and options
27127 * @returns {Object} The data object, properly modified
27128 */
27129function arrow(data, options) {
27130 var _data$offsets$arrow;
27131
27132 // arrow depends on keepTogether in order to work
27133 if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
27134 return data;
27135 }
27136
27137 var arrowElement = options.element;
27138
27139 // if arrowElement is a string, suppose it's a CSS selector
27140 if (typeof arrowElement === 'string') {
27141 arrowElement = data.instance.popper.querySelector(arrowElement);
27142
27143 // if arrowElement is not found, don't run the modifier
27144 if (!arrowElement) {
27145 return data;
27146 }
27147 } else {
27148 // if the arrowElement isn't a query selector we must check that the
27149 // provided DOM node is child of its popper node
27150 if (!data.instance.popper.contains(arrowElement)) {
27151 console.warn('WARNING: `arrow.element` must be child of its popper element!');
27152 return data;
27153 }
27154 }
27155
27156 var placement = data.placement.split('-')[0];
27157 var _data$offsets = data.offsets,
27158 popper = _data$offsets.popper,
27159 reference = _data$offsets.reference;
27160
27161 var isVertical = ['left', 'right'].indexOf(placement) !== -1;
27162
27163 var len = isVertical ? 'height' : 'width';
27164 var sideCapitalized = isVertical ? 'Top' : 'Left';
27165 var side = sideCapitalized.toLowerCase();
27166 var altSide = isVertical ? 'left' : 'top';
27167 var opSide = isVertical ? 'bottom' : 'right';
27168 var arrowElementSize = getOuterSizes(arrowElement)[len];
27169
27170 //
27171 // extends keepTogether behavior making sure the popper and its
27172 // reference have enough pixels in conjunction
27173 //
27174
27175 // top/left side
27176 if (reference[opSide] - arrowElementSize < popper[side]) {
27177 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
27178 }
27179 // bottom/right side
27180 if (reference[side] + arrowElementSize > popper[opSide]) {
27181 data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
27182 }
27183 data.offsets.popper = getClientRect(data.offsets.popper);
27184
27185 // compute center of the popper
27186 var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
27187
27188 // Compute the sideValue using the updated popper offsets
27189 // take popper margin in account because we don't have this info available
27190 var css = getStyleComputedProperty(data.instance.popper);
27191 var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);
27192 var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);
27193 var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
27194
27195 // prevent arrowElement from being placed not contiguously to its popper
27196 sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
27197
27198 data.arrowElement = arrowElement;
27199 data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
27200
27201 return data;
27202}
27203
27204/**
27205 * Get the opposite placement variation of the given one
27206 * @method
27207 * @memberof Popper.Utils
27208 * @argument {String} placement variation
27209 * @returns {String} flipped placement variation
27210 */
27211function getOppositeVariation(variation) {
27212 if (variation === 'end') {
27213 return 'start';
27214 } else if (variation === 'start') {
27215 return 'end';
27216 }
27217 return variation;
27218}
27219
27220/**
27221 * List of accepted placements to use as values of the `placement` option.<br />
27222 * Valid placements are:
27223 * - `auto`
27224 * - `top`
27225 * - `right`
27226 * - `bottom`
27227 * - `left`
27228 *
27229 * Each placement can have a variation from this list:
27230 * - `-start`
27231 * - `-end`
27232 *
27233 * Variations are interpreted easily if you think of them as the left to right
27234 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
27235 * is right.<br />
27236 * Vertically (`left` and `right`), `start` is top and `end` is bottom.
27237 *
27238 * Some valid examples are:
27239 * - `top-end` (on top of reference, right aligned)
27240 * - `right-start` (on right of reference, top aligned)
27241 * - `bottom` (on bottom, centered)
27242 * - `auto-end` (on the side with more space available, alignment depends by placement)
27243 *
27244 * @static
27245 * @type {Array}
27246 * @enum {String}
27247 * @readonly
27248 * @method placements
27249 * @memberof Popper
27250 */
27251var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
27252
27253// Get rid of `auto` `auto-start` and `auto-end`
27254var validPlacements = placements.slice(3);
27255
27256/**
27257 * Given an initial placement, returns all the subsequent placements
27258 * clockwise (or counter-clockwise).
27259 *
27260 * @method
27261 * @memberof Popper.Utils
27262 * @argument {String} placement - A valid placement (it accepts variations)
27263 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
27264 * @returns {Array} placements including their variations
27265 */
27266function clockwise(placement) {
27267 var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
27268
27269 var index = validPlacements.indexOf(placement);
27270 var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
27271 return counter ? arr.reverse() : arr;
27272}
27273
27274var BEHAVIORS = {
27275 FLIP: 'flip',
27276 CLOCKWISE: 'clockwise',
27277 COUNTERCLOCKWISE: 'counterclockwise'
27278};
27279
27280/**
27281 * @function
27282 * @memberof Modifiers
27283 * @argument {Object} data - The data object generated by update method
27284 * @argument {Object} options - Modifiers configuration and options
27285 * @returns {Object} The data object, properly modified
27286 */
27287function flip(data, options) {
27288 // if `inner` modifier is enabled, we can't use the `flip` modifier
27289 if (isModifierEnabled(data.instance.modifiers, 'inner')) {
27290 return data;
27291 }
27292
27293 if (data.flipped && data.placement === data.originalPlacement) {
27294 // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
27295 return data;
27296 }
27297
27298 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
27299
27300 var placement = data.placement.split('-')[0];
27301 var placementOpposite = getOppositePlacement(placement);
27302 var variation = data.placement.split('-')[1] || '';
27303
27304 var flipOrder = [];
27305
27306 switch (options.behavior) {
27307 case BEHAVIORS.FLIP:
27308 flipOrder = [placement, placementOpposite];
27309 break;
27310 case BEHAVIORS.CLOCKWISE:
27311 flipOrder = clockwise(placement);
27312 break;
27313 case BEHAVIORS.COUNTERCLOCKWISE:
27314 flipOrder = clockwise(placement, true);
27315 break;
27316 default:
27317 flipOrder = options.behavior;
27318 }
27319
27320 flipOrder.forEach(function (step, index) {
27321 if (placement !== step || flipOrder.length === index + 1) {
27322 return data;
27323 }
27324
27325 placement = data.placement.split('-')[0];
27326 placementOpposite = getOppositePlacement(placement);
27327
27328 var popperOffsets = data.offsets.popper;
27329 var refOffsets = data.offsets.reference;
27330
27331 // using floor because the reference offsets may contain decimals we are not going to consider here
27332 var floor = Math.floor;
27333 var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
27334
27335 var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
27336 var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
27337 var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
27338 var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
27339
27340 var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
27341
27342 // flip the variation if required
27343 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
27344 var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
27345
27346 if (overlapsRef || overflowsBoundaries || flippedVariation) {
27347 // this boolean to detect any flip loop
27348 data.flipped = true;
27349
27350 if (overlapsRef || overflowsBoundaries) {
27351 placement = flipOrder[index + 1];
27352 }
27353
27354 if (flippedVariation) {
27355 variation = getOppositeVariation(variation);
27356 }
27357
27358 data.placement = placement + (variation ? '-' + variation : '');
27359
27360 // this object contains `position`, we want to preserve it along with
27361 // any additional property we may add in the future
27362 data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
27363
27364 data = runModifiers(data.instance.modifiers, data, 'flip');
27365 }
27366 });
27367 return data;
27368}
27369
27370/**
27371 * @function
27372 * @memberof Modifiers
27373 * @argument {Object} data - The data object generated by update method
27374 * @argument {Object} options - Modifiers configuration and options
27375 * @returns {Object} The data object, properly modified
27376 */
27377function keepTogether(data) {
27378 var _data$offsets = data.offsets,
27379 popper = _data$offsets.popper,
27380 reference = _data$offsets.reference;
27381
27382 var placement = data.placement.split('-')[0];
27383 var floor = Math.floor;
27384 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
27385 var side = isVertical ? 'right' : 'bottom';
27386 var opSide = isVertical ? 'left' : 'top';
27387 var measurement = isVertical ? 'width' : 'height';
27388
27389 if (popper[side] < floor(reference[opSide])) {
27390 data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
27391 }
27392 if (popper[opSide] > floor(reference[side])) {
27393 data.offsets.popper[opSide] = floor(reference[side]);
27394 }
27395
27396 return data;
27397}
27398
27399/**
27400 * Converts a string containing value + unit into a px value number
27401 * @function
27402 * @memberof {modifiers~offset}
27403 * @private
27404 * @argument {String} str - Value + unit string
27405 * @argument {String} measurement - `height` or `width`
27406 * @argument {Object} popperOffsets
27407 * @argument {Object} referenceOffsets
27408 * @returns {Number|String}
27409 * Value in pixels, or original string if no values were extracted
27410 */
27411function toValue(str, measurement, popperOffsets, referenceOffsets) {
27412 // separate value from unit
27413 var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
27414 var value = +split[1];
27415 var unit = split[2];
27416
27417 // If it's not a number it's an operator, I guess
27418 if (!value) {
27419 return str;
27420 }
27421
27422 if (unit.indexOf('%') === 0) {
27423 var element = void 0;
27424 switch (unit) {
27425 case '%p':
27426 element = popperOffsets;
27427 break;
27428 case '%':
27429 case '%r':
27430 default:
27431 element = referenceOffsets;
27432 }
27433
27434 var rect = getClientRect(element);
27435 return rect[measurement] / 100 * value;
27436 } else if (unit === 'vh' || unit === 'vw') {
27437 // if is a vh or vw, we calculate the size based on the viewport
27438 var size = void 0;
27439 if (unit === 'vh') {
27440 size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
27441 } else {
27442 size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
27443 }
27444 return size / 100 * value;
27445 } else {
27446 // if is an explicit pixel unit, we get rid of the unit and keep the value
27447 // if is an implicit unit, it's px, and we return just the value
27448 return value;
27449 }
27450}
27451
27452/**
27453 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
27454 * @function
27455 * @memberof {modifiers~offset}
27456 * @private
27457 * @argument {String} offset
27458 * @argument {Object} popperOffsets
27459 * @argument {Object} referenceOffsets
27460 * @argument {String} basePlacement
27461 * @returns {Array} a two cells array with x and y offsets in numbers
27462 */
27463function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
27464 var offsets = [0, 0];
27465
27466 // Use height if placement is left or right and index is 0 otherwise use width
27467 // in this way the first offset will use an axis and the second one
27468 // will use the other one
27469 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
27470
27471 // Split the offset string to obtain a list of values and operands
27472 // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
27473 var fragments = offset.split(/(\+|\-)/).map(function (frag) {
27474 return frag.trim();
27475 });
27476
27477 // Detect if the offset string contains a pair of values or a single one
27478 // they could be separated by comma or space
27479 var divider = fragments.indexOf(find(fragments, function (frag) {
27480 return frag.search(/,|\s/) !== -1;
27481 }));
27482
27483 if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
27484 console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
27485 }
27486
27487 // If divider is found, we divide the list of values and operands to divide
27488 // them by ofset X and Y.
27489 var splitRegex = /\s*,\s*|\s+/;
27490 var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
27491
27492 // Convert the values with units to absolute pixels to allow our computations
27493 ops = ops.map(function (op, index) {
27494 // Most of the units rely on the orientation of the popper
27495 var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
27496 var mergeWithPrevious = false;
27497 return op
27498 // This aggregates any `+` or `-` sign that aren't considered operators
27499 // e.g.: 10 + +5 => [10, +, +5]
27500 .reduce(function (a, b) {
27501 if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
27502 a[a.length - 1] = b;
27503 mergeWithPrevious = true;
27504 return a;
27505 } else if (mergeWithPrevious) {
27506 a[a.length - 1] += b;
27507 mergeWithPrevious = false;
27508 return a;
27509 } else {
27510 return a.concat(b);
27511 }
27512 }, [])
27513 // Here we convert the string values into number values (in px)
27514 .map(function (str) {
27515 return toValue(str, measurement, popperOffsets, referenceOffsets);
27516 });
27517 });
27518
27519 // Loop trough the offsets arrays and execute the operations
27520 ops.forEach(function (op, index) {
27521 op.forEach(function (frag, index2) {
27522 if (isNumeric(frag)) {
27523 offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
27524 }
27525 });
27526 });
27527 return offsets;
27528}
27529
27530/**
27531 * @function
27532 * @memberof Modifiers
27533 * @argument {Object} data - The data object generated by update method
27534 * @argument {Object} options - Modifiers configuration and options
27535 * @argument {Number|String} options.offset=0
27536 * The offset value as described in the modifier description
27537 * @returns {Object} The data object, properly modified
27538 */
27539function offset(data, _ref) {
27540 var offset = _ref.offset;
27541 var placement = data.placement,
27542 _data$offsets = data.offsets,
27543 popper = _data$offsets.popper,
27544 reference = _data$offsets.reference;
27545
27546 var basePlacement = placement.split('-')[0];
27547
27548 var offsets = void 0;
27549 if (isNumeric(+offset)) {
27550 offsets = [+offset, 0];
27551 } else {
27552 offsets = parseOffset(offset, popper, reference, basePlacement);
27553 }
27554
27555 if (basePlacement === 'left') {
27556 popper.top += offsets[0];
27557 popper.left -= offsets[1];
27558 } else if (basePlacement === 'right') {
27559 popper.top += offsets[0];
27560 popper.left += offsets[1];
27561 } else if (basePlacement === 'top') {
27562 popper.left += offsets[0];
27563 popper.top -= offsets[1];
27564 } else if (basePlacement === 'bottom') {
27565 popper.left += offsets[0];
27566 popper.top += offsets[1];
27567 }
27568
27569 data.popper = popper;
27570 return data;
27571}
27572
27573/**
27574 * @function
27575 * @memberof Modifiers
27576 * @argument {Object} data - The data object generated by `update` method
27577 * @argument {Object} options - Modifiers configuration and options
27578 * @returns {Object} The data object, properly modified
27579 */
27580function preventOverflow(data, options) {
27581 var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
27582
27583 // If offsetParent is the reference element, we really want to
27584 // go one step up and use the next offsetParent as reference to
27585 // avoid to make this modifier completely useless and look like broken
27586 if (data.instance.reference === boundariesElement) {
27587 boundariesElement = getOffsetParent(boundariesElement);
27588 }
27589
27590 // NOTE: DOM access here
27591 // resets the popper's position so that the document size can be calculated excluding
27592 // the size of the popper element itself
27593 var transformProp = getSupportedPropertyName('transform');
27594 var popperStyles = data.instance.popper.style; // assignment to help minification
27595 var top = popperStyles.top,
27596 left = popperStyles.left,
27597 transform = popperStyles[transformProp];
27598
27599 popperStyles.top = '';
27600 popperStyles.left = '';
27601 popperStyles[transformProp] = '';
27602
27603 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);
27604
27605 // NOTE: DOM access here
27606 // restores the original style properties after the offsets have been computed
27607 popperStyles.top = top;
27608 popperStyles.left = left;
27609 popperStyles[transformProp] = transform;
27610
27611 options.boundaries = boundaries;
27612
27613 var order = options.priority;
27614 var popper = data.offsets.popper;
27615
27616 var check = {
27617 primary: function primary(placement) {
27618 var value = popper[placement];
27619 if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
27620 value = Math.max(popper[placement], boundaries[placement]);
27621 }
27622 return defineProperty({}, placement, value);
27623 },
27624 secondary: function secondary(placement) {
27625 var mainSide = placement === 'right' ? 'left' : 'top';
27626 var value = popper[mainSide];
27627 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
27628 value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
27629 }
27630 return defineProperty({}, mainSide, value);
27631 }
27632 };
27633
27634 order.forEach(function (placement) {
27635 var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
27636 popper = _extends({}, popper, check[side](placement));
27637 });
27638
27639 data.offsets.popper = popper;
27640
27641 return data;
27642}
27643
27644/**
27645 * @function
27646 * @memberof Modifiers
27647 * @argument {Object} data - The data object generated by `update` method
27648 * @argument {Object} options - Modifiers configuration and options
27649 * @returns {Object} The data object, properly modified
27650 */
27651function shift(data) {
27652 var placement = data.placement;
27653 var basePlacement = placement.split('-')[0];
27654 var shiftvariation = placement.split('-')[1];
27655
27656 // if shift shiftvariation is specified, run the modifier
27657 if (shiftvariation) {
27658 var _data$offsets = data.offsets,
27659 reference = _data$offsets.reference,
27660 popper = _data$offsets.popper;
27661
27662 var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
27663 var side = isVertical ? 'left' : 'top';
27664 var measurement = isVertical ? 'width' : 'height';
27665
27666 var shiftOffsets = {
27667 start: defineProperty({}, side, reference[side]),
27668 end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
27669 };
27670
27671 data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
27672 }
27673
27674 return data;
27675}
27676
27677/**
27678 * @function
27679 * @memberof Modifiers
27680 * @argument {Object} data - The data object generated by update method
27681 * @argument {Object} options - Modifiers configuration and options
27682 * @returns {Object} The data object, properly modified
27683 */
27684function hide(data) {
27685 if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
27686 return data;
27687 }
27688
27689 var refRect = data.offsets.reference;
27690 var bound = find(data.instance.modifiers, function (modifier) {
27691 return modifier.name === 'preventOverflow';
27692 }).boundaries;
27693
27694 if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
27695 // Avoid unnecessary DOM access if visibility hasn't changed
27696 if (data.hide === true) {
27697 return data;
27698 }
27699
27700 data.hide = true;
27701 data.attributes['x-out-of-boundaries'] = '';
27702 } else {
27703 // Avoid unnecessary DOM access if visibility hasn't changed
27704 if (data.hide === false) {
27705 return data;
27706 }
27707
27708 data.hide = false;
27709 data.attributes['x-out-of-boundaries'] = false;
27710 }
27711
27712 return data;
27713}
27714
27715/**
27716 * @function
27717 * @memberof Modifiers
27718 * @argument {Object} data - The data object generated by `update` method
27719 * @argument {Object} options - Modifiers configuration and options
27720 * @returns {Object} The data object, properly modified
27721 */
27722function inner(data) {
27723 var placement = data.placement;
27724 var basePlacement = placement.split('-')[0];
27725 var _data$offsets = data.offsets,
27726 popper = _data$offsets.popper,
27727 reference = _data$offsets.reference;
27728
27729 var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
27730
27731 var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
27732
27733 popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
27734
27735 data.placement = getOppositePlacement(placement);
27736 data.offsets.popper = getClientRect(popper);
27737
27738 return data;
27739}
27740
27741/**
27742 * Modifier function, each modifier can have a function of this type assigned
27743 * to its `fn` property.<br />
27744 * These functions will be called on each update, this means that you must
27745 * make sure they are performant enough to avoid performance bottlenecks.
27746 *
27747 * @function ModifierFn
27748 * @argument {dataObject} data - The data object generated by `update` method
27749 * @argument {Object} options - Modifiers configuration and options
27750 * @returns {dataObject} The data object, properly modified
27751 */
27752
27753/**
27754 * Modifiers are plugins used to alter the behavior of your poppers.<br />
27755 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
27756 * needed by the library.
27757 *
27758 * Usually you don't want to override the `order`, `fn` and `onLoad` props.
27759 * All the other properties are configurations that could be tweaked.
27760 * @namespace modifiers
27761 */
27762var modifiers = {
27763 /**
27764 * Modifier used to shift the popper on the start or end of its reference
27765 * element.<br />
27766 * It will read the variation of the `placement` property.<br />
27767 * It can be one either `-end` or `-start`.
27768 * @memberof modifiers
27769 * @inner
27770 */
27771 shift: {
27772 /** @prop {number} order=100 - Index used to define the order of execution */
27773 order: 100,
27774 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27775 enabled: true,
27776 /** @prop {ModifierFn} */
27777 fn: shift
27778 },
27779
27780 /**
27781 * The `offset` modifier can shift your popper on both its axis.
27782 *
27783 * It accepts the following units:
27784 * - `px` or unit-less, interpreted as pixels
27785 * - `%` or `%r`, percentage relative to the length of the reference element
27786 * - `%p`, percentage relative to the length of the popper element
27787 * - `vw`, CSS viewport width unit
27788 * - `vh`, CSS viewport height unit
27789 *
27790 * For length is intended the main axis relative to the placement of the popper.<br />
27791 * This means that if the placement is `top` or `bottom`, the length will be the
27792 * `width`. In case of `left` or `right`, it will be the `height`.
27793 *
27794 * You can provide a single value (as `Number` or `String`), or a pair of values
27795 * as `String` divided by a comma or one (or more) white spaces.<br />
27796 * The latter is a deprecated method because it leads to confusion and will be
27797 * removed in v2.<br />
27798 * Additionally, it accepts additions and subtractions between different units.
27799 * Note that multiplications and divisions aren't supported.
27800 *
27801 * Valid examples are:
27802 * ```
27803 * 10
27804 * '10%'
27805 * '10, 10'
27806 * '10%, 10'
27807 * '10 + 10%'
27808 * '10 - 5vh + 3%'
27809 * '-10px + 5vh, 5px - 6%'
27810 * ```
27811 * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
27812 * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
27813 * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
27814 *
27815 * @memberof modifiers
27816 * @inner
27817 */
27818 offset: {
27819 /** @prop {number} order=200 - Index used to define the order of execution */
27820 order: 200,
27821 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27822 enabled: true,
27823 /** @prop {ModifierFn} */
27824 fn: offset,
27825 /** @prop {Number|String} offset=0
27826 * The offset value as described in the modifier description
27827 */
27828 offset: 0
27829 },
27830
27831 /**
27832 * Modifier used to prevent the popper from being positioned outside the boundary.
27833 *
27834 * A scenario exists where the reference itself is not within the boundaries.<br />
27835 * We can say it has "escaped the boundaries" — or just "escaped".<br />
27836 * In this case we need to decide whether the popper should either:
27837 *
27838 * - detach from the reference and remain "trapped" in the boundaries, or
27839 * - if it should ignore the boundary and "escape with its reference"
27840 *
27841 * When `escapeWithReference` is set to`true` and reference is completely
27842 * outside its boundaries, the popper will overflow (or completely leave)
27843 * the boundaries in order to remain attached to the edge of the reference.
27844 *
27845 * @memberof modifiers
27846 * @inner
27847 */
27848 preventOverflow: {
27849 /** @prop {number} order=300 - Index used to define the order of execution */
27850 order: 300,
27851 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27852 enabled: true,
27853 /** @prop {ModifierFn} */
27854 fn: preventOverflow,
27855 /**
27856 * @prop {Array} [priority=['left','right','top','bottom']]
27857 * Popper will try to prevent overflow following these priorities by default,
27858 * then, it could overflow on the left and on top of the `boundariesElement`
27859 */
27860 priority: ['left', 'right', 'top', 'bottom'],
27861 /**
27862 * @prop {number} padding=5
27863 * Amount of pixel used to define a minimum distance between the boundaries
27864 * and the popper. This makes sure the popper always has a little padding
27865 * between the edges of its container
27866 */
27867 padding: 5,
27868 /**
27869 * @prop {String|HTMLElement} boundariesElement='scrollParent'
27870 * Boundaries used by the modifier. Can be `scrollParent`, `window`,
27871 * `viewport` or any DOM element.
27872 */
27873 boundariesElement: 'scrollParent'
27874 },
27875
27876 /**
27877 * Modifier used to make sure the reference and its popper stay near each other
27878 * without leaving any gap between the two. Especially useful when the arrow is
27879 * enabled and you want to ensure that it points to its reference element.
27880 * It cares only about the first axis. You can still have poppers with margin
27881 * between the popper and its reference element.
27882 * @memberof modifiers
27883 * @inner
27884 */
27885 keepTogether: {
27886 /** @prop {number} order=400 - Index used to define the order of execution */
27887 order: 400,
27888 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27889 enabled: true,
27890 /** @prop {ModifierFn} */
27891 fn: keepTogether
27892 },
27893
27894 /**
27895 * This modifier is used to move the `arrowElement` of the popper to make
27896 * sure it is positioned between the reference element and its popper element.
27897 * It will read the outer size of the `arrowElement` node to detect how many
27898 * pixels of conjunction are needed.
27899 *
27900 * It has no effect if no `arrowElement` is provided.
27901 * @memberof modifiers
27902 * @inner
27903 */
27904 arrow: {
27905 /** @prop {number} order=500 - Index used to define the order of execution */
27906 order: 500,
27907 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27908 enabled: true,
27909 /** @prop {ModifierFn} */
27910 fn: arrow,
27911 /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
27912 element: '[x-arrow]'
27913 },
27914
27915 /**
27916 * Modifier used to flip the popper's placement when it starts to overlap its
27917 * reference element.
27918 *
27919 * Requires the `preventOverflow` modifier before it in order to work.
27920 *
27921 * **NOTE:** this modifier will interrupt the current update cycle and will
27922 * restart it if it detects the need to flip the placement.
27923 * @memberof modifiers
27924 * @inner
27925 */
27926 flip: {
27927 /** @prop {number} order=600 - Index used to define the order of execution */
27928 order: 600,
27929 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27930 enabled: true,
27931 /** @prop {ModifierFn} */
27932 fn: flip,
27933 /**
27934 * @prop {String|Array} behavior='flip'
27935 * The behavior used to change the popper's placement. It can be one of
27936 * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
27937 * placements (with optional variations)
27938 */
27939 behavior: 'flip',
27940 /**
27941 * @prop {number} padding=5
27942 * The popper will flip if it hits the edges of the `boundariesElement`
27943 */
27944 padding: 5,
27945 /**
27946 * @prop {String|HTMLElement} boundariesElement='viewport'
27947 * The element which will define the boundaries of the popper position.
27948 * The popper will never be placed outside of the defined boundaries
27949 * (except if `keepTogether` is enabled)
27950 */
27951 boundariesElement: 'viewport'
27952 },
27953
27954 /**
27955 * Modifier used to make the popper flow toward the inner of the reference element.
27956 * By default, when this modifier is disabled, the popper will be placed outside
27957 * the reference element.
27958 * @memberof modifiers
27959 * @inner
27960 */
27961 inner: {
27962 /** @prop {number} order=700 - Index used to define the order of execution */
27963 order: 700,
27964 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
27965 enabled: false,
27966 /** @prop {ModifierFn} */
27967 fn: inner
27968 },
27969
27970 /**
27971 * Modifier used to hide the popper when its reference element is outside of the
27972 * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
27973 * be used to hide with a CSS selector the popper when its reference is
27974 * out of boundaries.
27975 *
27976 * Requires the `preventOverflow` modifier before it in order to work.
27977 * @memberof modifiers
27978 * @inner
27979 */
27980 hide: {
27981 /** @prop {number} order=800 - Index used to define the order of execution */
27982 order: 800,
27983 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
27984 enabled: true,
27985 /** @prop {ModifierFn} */
27986 fn: hide
27987 },
27988
27989 /**
27990 * Computes the style that will be applied to the popper element to gets
27991 * properly positioned.
27992 *
27993 * Note that this modifier will not touch the DOM, it just prepares the styles
27994 * so that `applyStyle` modifier can apply it. This separation is useful
27995 * in case you need to replace `applyStyle` with a custom implementation.
27996 *
27997 * This modifier has `850` as `order` value to maintain backward compatibility
27998 * with previous versions of Popper.js. Expect the modifiers ordering method
27999 * to change in future major versions of the library.
28000 *
28001 * @memberof modifiers
28002 * @inner
28003 */
28004 computeStyle: {
28005 /** @prop {number} order=850 - Index used to define the order of execution */
28006 order: 850,
28007 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
28008 enabled: true,
28009 /** @prop {ModifierFn} */
28010 fn: computeStyle,
28011 /**
28012 * @prop {Boolean} gpuAcceleration=true
28013 * If true, it uses the CSS 3D transformation to position the popper.
28014 * Otherwise, it will use the `top` and `left` properties
28015 */
28016 gpuAcceleration: true,
28017 /**
28018 * @prop {string} [x='bottom']
28019 * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
28020 * Change this if your popper should grow in a direction different from `bottom`
28021 */
28022 x: 'bottom',
28023 /**
28024 * @prop {string} [x='left']
28025 * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
28026 * Change this if your popper should grow in a direction different from `right`
28027 */
28028 y: 'right'
28029 },
28030
28031 /**
28032 * Applies the computed styles to the popper element.
28033 *
28034 * All the DOM manipulations are limited to this modifier. This is useful in case
28035 * you want to integrate Popper.js inside a framework or view library and you
28036 * want to delegate all the DOM manipulations to it.
28037 *
28038 * Note that if you disable this modifier, you must make sure the popper element
28039 * has its position set to `absolute` before Popper.js can do its work!
28040 *
28041 * Just disable this modifier and define your own to achieve the desired effect.
28042 *
28043 * @memberof modifiers
28044 * @inner
28045 */
28046 applyStyle: {
28047 /** @prop {number} order=900 - Index used to define the order of execution */
28048 order: 900,
28049 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
28050 enabled: true,
28051 /** @prop {ModifierFn} */
28052 fn: applyStyle,
28053 /** @prop {Function} */
28054 onLoad: applyStyleOnLoad,
28055 /**
28056 * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
28057 * @prop {Boolean} gpuAcceleration=true
28058 * If true, it uses the CSS 3D transformation to position the popper.
28059 * Otherwise, it will use the `top` and `left` properties
28060 */
28061 gpuAcceleration: undefined
28062 }
28063};
28064
28065/**
28066 * The `dataObject` is an object containing all the information used by Popper.js.
28067 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
28068 * @name dataObject
28069 * @property {Object} data.instance The Popper.js instance
28070 * @property {String} data.placement Placement applied to popper
28071 * @property {String} data.originalPlacement Placement originally defined on init
28072 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
28073 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
28074 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
28075 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
28076 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
28077 * @property {Object} data.boundaries Offsets of the popper boundaries
28078 * @property {Object} data.offsets The measurements of popper, reference and arrow elements
28079 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
28080 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
28081 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
28082 */
28083
28084/**
28085 * Default options provided to Popper.js constructor.<br />
28086 * These can be overridden using the `options` argument of Popper.js.<br />
28087 * To override an option, simply pass an object with the same
28088 * structure of the `options` object, as the 3rd argument. For example:
28089 * ```
28090 * new Popper(ref, pop, {
28091 * modifiers: {
28092 * preventOverflow: { enabled: false }
28093 * }
28094 * })
28095 * ```
28096 * @type {Object}
28097 * @static
28098 * @memberof Popper
28099 */
28100var Defaults = {
28101 /**
28102 * Popper's placement.
28103 * @prop {Popper.placements} placement='bottom'
28104 */
28105 placement: 'bottom',
28106
28107 /**
28108 * Set this to true if you want popper to position it self in 'fixed' mode
28109 * @prop {Boolean} positionFixed=false
28110 */
28111 positionFixed: false,
28112
28113 /**
28114 * Whether events (resize, scroll) are initially enabled.
28115 * @prop {Boolean} eventsEnabled=true
28116 */
28117 eventsEnabled: true,
28118
28119 /**
28120 * Set to true if you want to automatically remove the popper when
28121 * you call the `destroy` method.
28122 * @prop {Boolean} removeOnDestroy=false
28123 */
28124 removeOnDestroy: false,
28125
28126 /**
28127 * Callback called when the popper is created.<br />
28128 * By default, it is set to no-op.<br />
28129 * Access Popper.js instance with `data.instance`.
28130 * @prop {onCreate}
28131 */
28132 onCreate: function onCreate() {},
28133
28134 /**
28135 * Callback called when the popper is updated. This callback is not called
28136 * on the initialization/creation of the popper, but only on subsequent
28137 * updates.<br />
28138 * By default, it is set to no-op.<br />
28139 * Access Popper.js instance with `data.instance`.
28140 * @prop {onUpdate}
28141 */
28142 onUpdate: function onUpdate() {},
28143
28144 /**
28145 * List of modifiers used to modify the offsets before they are applied to the popper.
28146 * They provide most of the functionalities of Popper.js.
28147 * @prop {modifiers}
28148 */
28149 modifiers: modifiers
28150};
28151
28152/**
28153 * @callback onCreate
28154 * @param {dataObject} data
28155 */
28156
28157/**
28158 * @callback onUpdate
28159 * @param {dataObject} data
28160 */
28161
28162// Utils
28163// Methods
28164var Popper = function () {
28165 /**
28166 * Creates a new Popper.js instance.
28167 * @class Popper
28168 * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper
28169 * @param {HTMLElement} popper - The HTML element used as the popper
28170 * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
28171 * @return {Object} instance - The generated Popper.js instance
28172 */
28173 function Popper(reference, popper) {
28174 var _this = this;
28175
28176 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
28177 classCallCheck(this, Popper);
28178
28179 this.scheduleUpdate = function () {
28180 return requestAnimationFrame(_this.update);
28181 };
28182
28183 // make update() debounced, so that it only runs at most once-per-tick
28184 this.update = debounce(this.update.bind(this));
28185
28186 // with {} we create a new object with the options inside it
28187 this.options = _extends({}, Popper.Defaults, options);
28188
28189 // init state
28190 this.state = {
28191 isDestroyed: false,
28192 isCreated: false,
28193 scrollParents: []
28194 };
28195
28196 // get reference and popper elements (allow jQuery wrappers)
28197 this.reference = reference && reference.jquery ? reference[0] : reference;
28198 this.popper = popper && popper.jquery ? popper[0] : popper;
28199
28200 // Deep merge modifiers options
28201 this.options.modifiers = {};
28202 Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
28203 _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
28204 });
28205
28206 // Refactoring modifiers' list (Object => Array)
28207 this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
28208 return _extends({
28209 name: name
28210 }, _this.options.modifiers[name]);
28211 })
28212 // sort the modifiers by order
28213 .sort(function (a, b) {
28214 return a.order - b.order;
28215 });
28216
28217 // modifiers have the ability to execute arbitrary code when Popper.js get inited
28218 // such code is executed in the same order of its modifier
28219 // they could add new properties to their options configuration
28220 // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
28221 this.modifiers.forEach(function (modifierOptions) {
28222 if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
28223 modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
28224 }
28225 });
28226
28227 // fire the first update to position the popper in the right place
28228 this.update();
28229
28230 var eventsEnabled = this.options.eventsEnabled;
28231 if (eventsEnabled) {
28232 // setup event listeners, they will take care of update the position in specific situations
28233 this.enableEventListeners();
28234 }
28235
28236 this.state.eventsEnabled = eventsEnabled;
28237 }
28238
28239 // We can't use class properties because they don't get listed in the
28240 // class prototype and break stuff like Sinon stubs
28241
28242
28243 createClass(Popper, [{
28244 key: 'update',
28245 value: function update$$1() {
28246 return update.call(this);
28247 }
28248 }, {
28249 key: 'destroy',
28250 value: function destroy$$1() {
28251 return destroy.call(this);
28252 }
28253 }, {
28254 key: 'enableEventListeners',
28255 value: function enableEventListeners$$1() {
28256 return enableEventListeners.call(this);
28257 }
28258 }, {
28259 key: 'disableEventListeners',
28260 value: function disableEventListeners$$1() {
28261 return disableEventListeners.call(this);
28262 }
28263
28264 /**
28265 * Schedules an update. It will run on the next UI update available.
28266 * @method scheduleUpdate
28267 * @memberof Popper
28268 */
28269
28270
28271 /**
28272 * Collection of utilities useful when writing custom modifiers.
28273 * Starting from version 1.7, this method is available only if you
28274 * include `popper-utils.js` before `popper.js`.
28275 *
28276 * **DEPRECATION**: This way to access PopperUtils is deprecated
28277 * and will be removed in v2! Use the PopperUtils module directly instead.
28278 * Due to the high instability of the methods contained in Utils, we can't
28279 * guarantee them to follow semver. Use them at your own risk!
28280 * @static
28281 * @private
28282 * @type {Object}
28283 * @deprecated since version 1.8
28284 * @member Utils
28285 * @memberof Popper
28286 */
28287
28288 }]);
28289 return Popper;
28290}();
28291
28292/**
28293 * The `referenceObject` is an object that provides an interface compatible with Popper.js
28294 * and lets you use it as replacement of a real DOM node.<br />
28295 * You can use this method to position a popper relatively to a set of coordinates
28296 * in case you don't have a DOM node to use as reference.
28297 *
28298 * ```
28299 * new Popper(referenceObject, popperNode);
28300 * ```
28301 *
28302 * NB: This feature isn't supported in Internet Explorer 10.
28303 * @name referenceObject
28304 * @property {Function} data.getBoundingClientRect
28305 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
28306 * @property {number} data.clientWidth
28307 * An ES6 getter that will return the width of the virtual reference element.
28308 * @property {number} data.clientHeight
28309 * An ES6 getter that will return the height of the virtual reference element.
28310 */
28311
28312
28313Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
28314Popper.placements = placements;
28315Popper.Defaults = Defaults;
28316
28317/* harmony default export */ __webpack_exports__["a"] = (Popper);
28318//# sourceMappingURL=popper.js.map
28319
28320/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("c8ba")))
28321
28322/***/ }),
28323
28324/***/ "f28a":
28325/***/ (function(module, exports, __webpack_require__) {
28326
28327// extracted by mini-css-extract-plugin
28328
28329/***/ }),
28330
28331/***/ "f2f3":
28332/***/ (function(module, exports, __webpack_require__) {
28333
28334// extracted by mini-css-extract-plugin
28335
28336/***/ }),
28337
28338/***/ "f410":
28339/***/ (function(module, exports, __webpack_require__) {
28340
28341__webpack_require__("1af6");
28342module.exports = __webpack_require__("584a").Array.isArray;
28343
28344
28345/***/ }),
28346
28347/***/ "f701":
28348/***/ (function(module, __webpack_exports__, __webpack_require__) {
28349
28350"use strict";
28351/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShImage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a6f7");
28352/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShImage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShImage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
28353/* unused harmony reexport * */
28354 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShImage_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
28355
28356/***/ }),
28357
28358/***/ "f772":
28359/***/ (function(module, exports) {
28360
28361module.exports = function (it) {
28362 return typeof it === 'object' ? it !== null : typeof it === 'function';
28363};
28364
28365
28366/***/ }),
28367
28368/***/ "f7b2":
28369/***/ (function(module, exports, __webpack_require__) {
28370
28371// extracted by mini-css-extract-plugin
28372
28373/***/ }),
28374
28375/***/ "f88e":
28376/***/ (function(module, exports, __webpack_require__) {
28377
28378// extracted by mini-css-extract-plugin
28379
28380/***/ }),
28381
28382/***/ "f921":
28383/***/ (function(module, exports, __webpack_require__) {
28384
28385__webpack_require__("014b");
28386__webpack_require__("c207");
28387__webpack_require__("69d3");
28388__webpack_require__("765d");
28389module.exports = __webpack_require__("584a").Symbol;
28390
28391
28392/***/ }),
28393
28394/***/ "f9d6":
28395/***/ (function(module, __webpack_exports__, __webpack_require__) {
28396
28397"use strict";
28398/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0b6b");
28399/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
28400/* unused harmony reexport * */
28401 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShCardHeader_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
28402
28403/***/ }),
28404
28405/***/ "fa99":
28406/***/ (function(module, exports, __webpack_require__) {
28407
28408__webpack_require__("0293");
28409module.exports = __webpack_require__("584a").Object.getPrototypeOf;
28410
28411
28412/***/ }),
28413
28414/***/ "faa5":
28415/***/ (function(module, exports, __webpack_require__) {
28416
28417// extracted by mini-css-extract-plugin
28418
28419/***/ }),
28420
28421/***/ "fab2":
28422/***/ (function(module, exports, __webpack_require__) {
28423
28424var document = __webpack_require__("7726").document;
28425module.exports = document && document.documentElement;
28426
28427
28428/***/ }),
28429
28430/***/ "fb15":
28431/***/ (function(module, __webpack_exports__, __webpack_require__) {
28432
28433"use strict";
28434__webpack_require__.r(__webpack_exports__);
28435
28436// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
28437// This file is imported into lib/wc client bundles.
28438
28439if (typeof window !== 'undefined') {
28440 var setPublicPath_i
28441 if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))) {
28442 __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line
28443 }
28444}
28445
28446// Indicate to webpack that this file can be concatenated
28447/* harmony default export */ var setPublicPath = (null);
28448
28449// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js
28450var es6_function_name = __webpack_require__("7f7f");
28451
28452// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/keys.js
28453var keys = __webpack_require__("a4bb");
28454var keys_default = /*#__PURE__*/__webpack_require__.n(keys);
28455
28456// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js
28457var web_dom_iterable = __webpack_require__("ac6a");
28458
28459// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCard.vue?vue&type=template&id=4c363d78&
28460var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._b({staticClass:"sh-card",class:{'is-card-table': _vm.isPaddingLess}},'div',_vm.$attrs,false),[_vm._t("header"),_c('div',{staticClass:"sh-card-content"},[_vm._t("default")],2),_vm._t("footer")],2)}
28461var staticRenderFns = []
28462
28463
28464// CONCATENATED MODULE: ./src/components/sh-card/ShCard.vue?vue&type=template&id=4c363d78&
28465
28466// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
28467function _classCallCheck(instance, Constructor) {
28468 if (!(instance instanceof Constructor)) {
28469 throw new TypeError("Cannot call a class as a function");
28470 }
28471}
28472// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js
28473var iterator = __webpack_require__("5d58");
28474var iterator_default = /*#__PURE__*/__webpack_require__.n(iterator);
28475
28476// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/symbol.js
28477var symbol = __webpack_require__("67bb");
28478var symbol_default = /*#__PURE__*/__webpack_require__.n(symbol);
28479
28480// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/typeof.js
28481
28482
28483
28484function typeof_typeof2(obj) { if (typeof symbol_default.a === "function" && typeof iterator_default.a === "symbol") { typeof_typeof2 = function _typeof2(obj) { return typeof obj; }; } else { typeof_typeof2 = function _typeof2(obj) { return obj && typeof symbol_default.a === "function" && obj.constructor === symbol_default.a && obj !== symbol_default.a.prototype ? "symbol" : typeof obj; }; } return typeof_typeof2(obj); }
28485
28486function typeof_typeof(obj) {
28487 if (typeof symbol_default.a === "function" && typeof_typeof2(iterator_default.a) === "symbol") {
28488 typeof_typeof = function _typeof(obj) {
28489 return typeof_typeof2(obj);
28490 };
28491 } else {
28492 typeof_typeof = function _typeof(obj) {
28493 return obj && typeof symbol_default.a === "function" && obj.constructor === symbol_default.a && obj !== symbol_default.a.prototype ? "symbol" : typeof_typeof2(obj);
28494 };
28495 }
28496
28497 return typeof_typeof(obj);
28498}
28499// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/assertThisInitialized.js
28500function _assertThisInitialized(self) {
28501 if (self === void 0) {
28502 throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
28503 }
28504
28505 return self;
28506}
28507// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn.js
28508
28509
28510function _possibleConstructorReturn(self, call) {
28511 if (call && (typeof_typeof(call) === "object" || typeof call === "function")) {
28512 return call;
28513 }
28514
28515 return _assertThisInitialized(self);
28516}
28517// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js
28518var get_prototype_of = __webpack_require__("061b");
28519var get_prototype_of_default = /*#__PURE__*/__webpack_require__.n(get_prototype_of);
28520
28521// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js
28522var set_prototype_of = __webpack_require__("4d16");
28523var set_prototype_of_default = /*#__PURE__*/__webpack_require__.n(set_prototype_of);
28524
28525// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/getPrototypeOf.js
28526
28527
28528function getPrototypeOf_getPrototypeOf(o) {
28529 getPrototypeOf_getPrototypeOf = set_prototype_of_default.a ? get_prototype_of_default.a : function _getPrototypeOf(o) {
28530 return o.__proto__ || get_prototype_of_default()(o);
28531 };
28532 return getPrototypeOf_getPrototypeOf(o);
28533}
28534// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/create.js
28535var create = __webpack_require__("4aa6");
28536var create_default = /*#__PURE__*/__webpack_require__.n(create);
28537
28538// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/setPrototypeOf.js
28539
28540function _setPrototypeOf(o, p) {
28541 _setPrototypeOf = set_prototype_of_default.a || function _setPrototypeOf(o, p) {
28542 o.__proto__ = p;
28543 return o;
28544 };
28545
28546 return _setPrototypeOf(o, p);
28547}
28548// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/inherits.js
28549
28550
28551function _inherits(subClass, superClass) {
28552 if (typeof superClass !== "function" && superClass !== null) {
28553 throw new TypeError("Super expression must either be null or a function");
28554 }
28555
28556 subClass.prototype = create_default()(superClass && superClass.prototype, {
28557 constructor: {
28558 value: subClass,
28559 writable: true,
28560 configurable: true
28561 }
28562 });
28563 if (superClass) _setPrototypeOf(subClass, superClass);
28564}
28565// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.js
28566/*! *****************************************************************************
28567Copyright (c) Microsoft Corporation. All rights reserved.
28568Licensed under the Apache License, Version 2.0 (the "License"); you may not use
28569this file except in compliance with the License. You may obtain a copy of the
28570License at http://www.apache.org/licenses/LICENSE-2.0
28571
28572THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
28573KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
28574WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
28575MERCHANTABLITY OR NON-INFRINGEMENT.
28576
28577See the Apache Version 2.0 License for specific language governing permissions
28578and limitations under the License.
28579***************************************************************************** */
28580/* global Reflect, Promise */
28581
28582var extendStatics = function(d, b) {
28583 extendStatics = Object.setPrototypeOf ||
28584 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
28585 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
28586 return extendStatics(d, b);
28587};
28588
28589function __extends(d, b) {
28590 extendStatics(d, b);
28591 function __() { this.constructor = d; }
28592 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28593}
28594
28595var __assign = function() {
28596 __assign = Object.assign || function __assign(t) {
28597 for (var s, i = 1, n = arguments.length; i < n; i++) {
28598 s = arguments[i];
28599 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
28600 }
28601 return t;
28602 }
28603 return __assign.apply(this, arguments);
28604}
28605
28606function __rest(s, e) {
28607 var t = {};
28608 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28609 t[p] = s[p];
28610 if (s != null && typeof Object.getOwnPropertySymbols === "function")
28611 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
28612 t[p[i]] = s[p[i]];
28613 return t;
28614}
28615
28616function __decorate(decorators, target, key, desc) {
28617 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28618 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28619 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28620 return c > 3 && r && Object.defineProperty(target, key, r), r;
28621}
28622
28623function __param(paramIndex, decorator) {
28624 return function (target, key) { decorator(target, key, paramIndex); }
28625}
28626
28627function __metadata(metadataKey, metadataValue) {
28628 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
28629}
28630
28631function __awaiter(thisArg, _arguments, P, generator) {
28632 return new (P || (P = Promise))(function (resolve, reject) {
28633 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
28634 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
28635 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
28636 step((generator = generator.apply(thisArg, _arguments || [])).next());
28637 });
28638}
28639
28640function __generator(thisArg, body) {
28641 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28642 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28643 function verb(n) { return function (v) { return step([n, v]); }; }
28644 function step(op) {
28645 if (f) throw new TypeError("Generator is already executing.");
28646 while (_) try {
28647 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
28648 if (y = 0, t) op = [op[0] & 2, t.value];
28649 switch (op[0]) {
28650 case 0: case 1: t = op; break;
28651 case 4: _.label++; return { value: op[1], done: false };
28652 case 5: _.label++; y = op[1]; op = [0]; continue;
28653 case 7: op = _.ops.pop(); _.trys.pop(); continue;
28654 default:
28655 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28656 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28657 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28658 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
28659 if (t[2]) _.ops.pop();
28660 _.trys.pop(); continue;
28661 }
28662 op = body.call(thisArg, _);
28663 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
28664 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
28665 }
28666}
28667
28668function __exportStar(m, exports) {
28669 for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
28670}
28671
28672function __values(o) {
28673 var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
28674 if (m) return m.call(o);
28675 return {
28676 next: function () {
28677 if (o && i >= o.length) o = void 0;
28678 return { value: o && o[i++], done: !o };
28679 }
28680 };
28681}
28682
28683function __read(o, n) {
28684 var m = typeof Symbol === "function" && o[Symbol.iterator];
28685 if (!m) return o;
28686 var i = m.call(o), r, ar = [], e;
28687 try {
28688 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
28689 }
28690 catch (error) { e = { error: error }; }
28691 finally {
28692 try {
28693 if (r && !r.done && (m = i["return"])) m.call(i);
28694 }
28695 finally { if (e) throw e.error; }
28696 }
28697 return ar;
28698}
28699
28700function __spread() {
28701 for (var ar = [], i = 0; i < arguments.length; i++)
28702 ar = ar.concat(__read(arguments[i]));
28703 return ar;
28704}
28705
28706function __await(v) {
28707 return this instanceof __await ? (this.v = v, this) : new __await(v);
28708}
28709
28710function __asyncGenerator(thisArg, _arguments, generator) {
28711 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
28712 var g = generator.apply(thisArg, _arguments || []), i, q = [];
28713 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
28714 function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
28715 function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
28716 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
28717 function fulfill(value) { resume("next", value); }
28718 function reject(value) { resume("throw", value); }
28719 function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
28720}
28721
28722function __asyncDelegator(o) {
28723 var i, p;
28724 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
28725 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
28726}
28727
28728function __asyncValues(o) {
28729 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
28730 var m = o[Symbol.asyncIterator], i;
28731 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
28732 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
28733 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
28734}
28735
28736function __makeTemplateObject(cooked, raw) {
28737 if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
28738 return cooked;
28739};
28740
28741function __importStar(mod) {
28742 if (mod && mod.__esModule) return mod;
28743 var result = {};
28744 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
28745 result.default = mod;
28746 return result;
28747}
28748
28749function __importDefault(mod) {
28750 return (mod && mod.__esModule) ? mod : { default: mod };
28751}
28752
28753// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
28754var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
28755var external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);
28756
28757// EXTERNAL MODULE: ./node_modules/vue-class-component/dist/vue-class-component.common.js
28758var vue_class_component_common = __webpack_require__("65d9");
28759var vue_class_component_common_default = /*#__PURE__*/__webpack_require__.n(vue_class_component_common);
28760
28761// CONCATENATED MODULE: ./node_modules/vue-property-decorator/lib/vue-property-decorator.js
28762/** vue-property-decorator verson 7.2.0 MIT LICENSE copyright 2018 kaorun343 */
28763
28764
28765
28766
28767/**
28768 * decorator of an inject
28769 * @param from key
28770 * @return PropertyDecorator
28771 */
28772function Inject(options) {
28773 return Object(vue_class_component_common["createDecorator"])(function (componentOptions, key) {
28774 if (typeof componentOptions.inject === 'undefined') {
28775 componentOptions.inject = {};
28776 }
28777 if (!Array.isArray(componentOptions.inject)) {
28778 componentOptions.inject[key] = options || key;
28779 }
28780 });
28781}
28782/**
28783 * decorator of a provide
28784 * @param key key
28785 * @return PropertyDecorator | void
28786 */
28787function Provide(key) {
28788 return Object(vue_class_component_common["createDecorator"])(function (componentOptions, k) {
28789 var provide = componentOptions.provide;
28790 if (typeof provide !== 'function' || !provide.managed) {
28791 var original_1 = componentOptions.provide;
28792 provide = componentOptions.provide = function () {
28793 var rv = Object.create((typeof original_1 === 'function' ? original_1.call(this) : original_1) || null);
28794 for (var i in provide.managed)
28795 rv[provide.managed[i]] = this[i];
28796 return rv;
28797 };
28798 provide.managed = {};
28799 }
28800 provide.managed[k] = key || k;
28801 });
28802}
28803/**
28804 * decorator of model
28805 * @param event event name
28806 * @param options options
28807 * @return PropertyDecorator
28808 */
28809function Model(event, options) {
28810 if (options === void 0) { options = {}; }
28811 return Object(vue_class_component_common["createDecorator"])(function (componentOptions, k) {
28812 (componentOptions.props || (componentOptions.props = {}))[k] = options;
28813 componentOptions.model = { prop: k, event: event || k };
28814 });
28815}
28816/**
28817 * decorator of a prop
28818 * @param options the options for the prop
28819 * @return PropertyDecorator | void
28820 */
28821function Prop(options) {
28822 if (options === void 0) { options = {}; }
28823 return Object(vue_class_component_common["createDecorator"])(function (componentOptions, k) {
28824 (componentOptions.props || (componentOptions.props = {}))[k] = options;
28825 });
28826}
28827/**
28828 * decorator of a watch function
28829 * @param path the path or the expression to observe
28830 * @param WatchOption
28831 * @return MethodDecorator
28832 */
28833function Watch(path, options) {
28834 if (options === void 0) { options = {}; }
28835 var _a = options.deep, deep = _a === void 0 ? false : _a, _b = options.immediate, immediate = _b === void 0 ? false : _b;
28836 return Object(vue_class_component_common["createDecorator"])(function (componentOptions, handler) {
28837 if (typeof componentOptions.watch !== 'object') {
28838 componentOptions.watch = Object.create(null);
28839 }
28840 componentOptions.watch[path] = { handler: handler, deep: deep, immediate: immediate };
28841 });
28842}
28843// Code copied from Vue/src/shared/util.js
28844var hyphenateRE = /\B([A-Z])/g;
28845var hyphenate = function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase(); };
28846/**
28847 * decorator of an event-emitter function
28848 * @param event The name of the event
28849 * @return MethodDecorator
28850 */
28851function Emit(event) {
28852 return function (_target, key, descriptor) {
28853 key = hyphenate(key);
28854 var original = descriptor.value;
28855 descriptor.value = function emitter() {
28856 var _this = this;
28857 var args = [];
28858 for (var _i = 0; _i < arguments.length; _i++) {
28859 args[_i] = arguments[_i];
28860 }
28861 var emit = function (returnValue) {
28862 if (returnValue !== undefined)
28863 args.unshift(returnValue);
28864 _this.$emit.apply(_this, [event || key].concat(args));
28865 };
28866 var returnValue = original.apply(this, args);
28867 if (isPromise(returnValue)) {
28868 returnValue.then(function (returnValue) {
28869 emit(returnValue);
28870 });
28871 }
28872 else {
28873 emit(returnValue);
28874 }
28875 };
28876 };
28877}
28878function isPromise(obj) {
28879 return obj instanceof Promise || (obj && typeof obj.then === 'function');
28880}
28881
28882// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCard.vue?vue&type=script&lang=ts&
28883
28884
28885
28886
28887
28888
28889
28890
28891var ShCardvue_type_script_lang_ts_ShCard =
28892/*#__PURE__*/
28893function (_Vue) {
28894 _inherits(ShCard, _Vue);
28895
28896 function ShCard() {
28897 _classCallCheck(this, ShCard);
28898
28899 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCard).apply(this, arguments));
28900 }
28901
28902 return ShCard;
28903}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
28904
28905__decorate([Prop({
28906 default: false
28907}), __metadata("design:type", Boolean)], ShCardvue_type_script_lang_ts_ShCard.prototype, "isPaddingLess", void 0);
28908
28909ShCardvue_type_script_lang_ts_ShCard = __decorate([vue_class_component_common_default()({})], ShCardvue_type_script_lang_ts_ShCard);
28910/* harmony default export */ var ShCardvue_type_script_lang_ts_ = (ShCardvue_type_script_lang_ts_ShCard);
28911// CONCATENATED MODULE: ./src/components/sh-card/ShCard.vue?vue&type=script&lang=ts&
28912 /* harmony default export */ var sh_card_ShCardvue_type_script_lang_ts_ = (ShCardvue_type_script_lang_ts_);
28913// EXTERNAL MODULE: ./src/components/sh-card/ShCard.vue?vue&type=style&index=0&lang=scss&
28914var ShCardvue_type_style_index_0_lang_scss_ = __webpack_require__("693d");
28915
28916// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
28917/* globals __VUE_SSR_CONTEXT__ */
28918
28919// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
28920// This module is a runtime utility for cleaner component module output and will
28921// be included in the final webpack user bundle.
28922
28923function normalizeComponent (
28924 scriptExports,
28925 render,
28926 staticRenderFns,
28927 functionalTemplate,
28928 injectStyles,
28929 scopeId,
28930 moduleIdentifier, /* server only */
28931 shadowMode /* vue-cli only */
28932) {
28933 // Vue.extend constructor export interop
28934 var options = typeof scriptExports === 'function'
28935 ? scriptExports.options
28936 : scriptExports
28937
28938 // render functions
28939 if (render) {
28940 options.render = render
28941 options.staticRenderFns = staticRenderFns
28942 options._compiled = true
28943 }
28944
28945 // functional template
28946 if (functionalTemplate) {
28947 options.functional = true
28948 }
28949
28950 // scopedId
28951 if (scopeId) {
28952 options._scopeId = 'data-v-' + scopeId
28953 }
28954
28955 var hook
28956 if (moduleIdentifier) { // server build
28957 hook = function (context) {
28958 // 2.3 injection
28959 context =
28960 context || // cached call
28961 (this.$vnode && this.$vnode.ssrContext) || // stateful
28962 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
28963 // 2.2 with runInNewContext: true
28964 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
28965 context = __VUE_SSR_CONTEXT__
28966 }
28967 // inject component styles
28968 if (injectStyles) {
28969 injectStyles.call(this, context)
28970 }
28971 // register component module identifier for async chunk inferrence
28972 if (context && context._registeredComponents) {
28973 context._registeredComponents.add(moduleIdentifier)
28974 }
28975 }
28976 // used by ssr in case component is cached and beforeCreate
28977 // never gets called
28978 options._ssrRegister = hook
28979 } else if (injectStyles) {
28980 hook = shadowMode
28981 ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
28982 : injectStyles
28983 }
28984
28985 if (hook) {
28986 if (options.functional) {
28987 // for template-only hot-reload because in that case the render fn doesn't
28988 // go through the normalizer
28989 options._injectStyles = hook
28990 // register for functioal component in vue file
28991 var originalRender = options.render
28992 options.render = function renderWithStyleInjection (h, context) {
28993 hook.call(context)
28994 return originalRender(h, context)
28995 }
28996 } else {
28997 // inject component registration as beforeCreate hook
28998 var existing = options.beforeCreate
28999 options.beforeCreate = existing
29000 ? [].concat(existing, hook)
29001 : [hook]
29002 }
29003 }
29004
29005 return {
29006 exports: scriptExports,
29007 options: options
29008 }
29009}
29010
29011// CONCATENATED MODULE: ./src/components/sh-card/ShCard.vue
29012
29013
29014
29015
29016
29017
29018/* normalize component */
29019
29020var component = normalizeComponent(
29021 sh_card_ShCardvue_type_script_lang_ts_,
29022 render,
29023 staticRenderFns,
29024 false,
29025 null,
29026 null,
29027 null
29028
29029)
29030
29031component.options.__file = "ShCard.vue"
29032/* harmony default export */ var sh_card_ShCard = (component.exports);
29033// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardHeader.vue?vue&type=template&id=27039a8f&
29034var ShCardHeadervue_type_template_id_27039a8f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"sh-card-header"},[_c('div',{staticClass:"sh-card-header-title"},[(_vm.cardTitle && !_vm.slots['default'])?_c('h4',[_vm._v(_vm._s(_vm.cardTitle))]):_vm._e(),(_vm.cardDescription && !_vm.slots['default'])?_c('p',[_vm._v(_vm._s(_vm.cardDescription))]):_vm._e(),_vm._t("default")],2),(_vm.slots['header_action'])?_c('div',{staticClass:"sh-card-header-action"},[_vm._t("header_action")],2):_vm._e()])}
29035var ShCardHeadervue_type_template_id_27039a8f_staticRenderFns = []
29036
29037
29038// CONCATENATED MODULE: ./src/components/sh-card/ShCardHeader.vue?vue&type=template&id=27039a8f&
29039
29040// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js
29041var define_property = __webpack_require__("85f2");
29042var define_property_default = /*#__PURE__*/__webpack_require__.n(define_property);
29043
29044// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/createClass.js
29045
29046
29047function _defineProperties(target, props) {
29048 for (var i = 0; i < props.length; i++) {
29049 var descriptor = props[i];
29050 descriptor.enumerable = descriptor.enumerable || false;
29051 descriptor.configurable = true;
29052 if ("value" in descriptor) descriptor.writable = true;
29053
29054 define_property_default()(target, descriptor.key, descriptor);
29055 }
29056}
29057
29058function _createClass(Constructor, protoProps, staticProps) {
29059 if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29060 if (staticProps) _defineProperties(Constructor, staticProps);
29061 return Constructor;
29062}
29063// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardHeader.vue?vue&type=script&lang=ts&
29064
29065
29066
29067
29068
29069
29070
29071
29072var ShCardHeadervue_type_script_lang_ts_ShCardHeader =
29073/*#__PURE__*/
29074function (_Vue) {
29075 _inherits(ShCardHeader, _Vue);
29076
29077 function ShCardHeader() {
29078 _classCallCheck(this, ShCardHeader);
29079
29080 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCardHeader).apply(this, arguments));
29081 }
29082
29083 _createClass(ShCardHeader, [{
29084 key: "slots",
29085 get: function get() {
29086 return this.$slots;
29087 }
29088 }]);
29089
29090 return ShCardHeader;
29091}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29092
29093__decorate([Prop(), __metadata("design:type", String)], ShCardHeadervue_type_script_lang_ts_ShCardHeader.prototype, "cardTitle", void 0);
29094
29095__decorate([Prop(), __metadata("design:type", String)], ShCardHeadervue_type_script_lang_ts_ShCardHeader.prototype, "cardDescription", void 0);
29096
29097ShCardHeadervue_type_script_lang_ts_ShCardHeader = __decorate([vue_class_component_common_default.a], ShCardHeadervue_type_script_lang_ts_ShCardHeader);
29098/* harmony default export */ var ShCardHeadervue_type_script_lang_ts_ = (ShCardHeadervue_type_script_lang_ts_ShCardHeader);
29099// CONCATENATED MODULE: ./src/components/sh-card/ShCardHeader.vue?vue&type=script&lang=ts&
29100 /* harmony default export */ var sh_card_ShCardHeadervue_type_script_lang_ts_ = (ShCardHeadervue_type_script_lang_ts_);
29101// EXTERNAL MODULE: ./src/components/sh-card/ShCardHeader.vue?vue&type=style&index=0&lang=scss&
29102var ShCardHeadervue_type_style_index_0_lang_scss_ = __webpack_require__("f9d6");
29103
29104// CONCATENATED MODULE: ./src/components/sh-card/ShCardHeader.vue
29105
29106
29107
29108
29109
29110
29111/* normalize component */
29112
29113var ShCardHeader_component = normalizeComponent(
29114 sh_card_ShCardHeadervue_type_script_lang_ts_,
29115 ShCardHeadervue_type_template_id_27039a8f_render,
29116 ShCardHeadervue_type_template_id_27039a8f_staticRenderFns,
29117 false,
29118 null,
29119 null,
29120 null
29121
29122)
29123
29124ShCardHeader_component.options.__file = "ShCardHeader.vue"
29125/* harmony default export */ var sh_card_ShCardHeader = (ShCardHeader_component.exports);
29126// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardBox.vue?vue&type=template&id=59e31e02&functional=true&
29127var ShCardBoxvue_type_template_id_59e31e02_functional_true_render = function (_h,_vm) {var _c=_vm._c;return _c('div',{staticClass:"sh-card-box",class:{'borderless': _vm.props.borderless, 'no-padding-top': _vm.props.paddingtop, 'no-padding-bottom': _vm.props.paddingbottom, 'sh-card-box-narrow': _vm.props.narrow, 'sh-card-box-with-field-group': _vm.props.withFieldGroup}},[_c('div',{staticClass:"row",class:{'align-top': _vm.props.align === 'top', 'align-middle': _vm.props.align === 'middle'}},[(_vm.$slots.label || _vm.props.label)?_c('div',{staticClass:"sm-12 column",class:[_vm.props.labelClass ? _vm.props.labelClass : 'md-3']},[(_vm.props.label)?_c('h4',{class:{'bold-label': _vm.props.boldLabel}},[_vm._v(_vm._s(_vm.props.label))]):_vm._e(),_vm._t("label")],2):_vm._e(),_c('div',{staticClass:"sm-12",class:[_vm.props.contentClass ? _vm.props.contentClass : 'md-9']},[_vm._t("default")],2)])])}
29128var ShCardBoxvue_type_template_id_59e31e02_functional_true_staticRenderFns = []
29129
29130
29131// CONCATENATED MODULE: ./src/components/sh-card/ShCardBox.vue?vue&type=template&id=59e31e02&functional=true&
29132
29133// EXTERNAL MODULE: ./src/components/sh-card/ShCardBox.vue?vue&type=style&index=0&lang=scss&
29134var ShCardBoxvue_type_style_index_0_lang_scss_ = __webpack_require__("38c1");
29135
29136// CONCATENATED MODULE: ./src/components/sh-card/ShCardBox.vue
29137
29138var script = {}
29139
29140
29141
29142/* normalize component */
29143
29144var ShCardBox_component = normalizeComponent(
29145 script,
29146 ShCardBoxvue_type_template_id_59e31e02_functional_true_render,
29147 ShCardBoxvue_type_template_id_59e31e02_functional_true_staticRenderFns,
29148 true,
29149 null,
29150 null,
29151 null
29152
29153)
29154
29155ShCardBox_component.options.__file = "ShCardBox.vue"
29156/* harmony default export */ var ShCardBox = (ShCardBox_component.exports);
29157// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardWidget.vue?vue&type=template&id=299caf7e&
29158var ShCardWidgetvue_type_template_id_299caf7e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-card-widget-wrapper",class:_vm.typeClass},[_c('div',{staticClass:"sh-card-widget"},[(_vm.imgSrc)?_c('div',{staticClass:"sh-card-widget-icon",style:({ height: _vm.imgHeight })},[_c('img',{attrs:{"src":_vm.imgSrc,"alt":""}})]):_vm._e(),(_vm.title && !_vm.$slots.title)?_c('h2',[_vm._v(_vm._s(_vm.title))]):_vm._e(),_vm._t("title"),(_vm.description && !_vm.$slots.description)?_c('p',[_vm._v(_vm._s(_vm.description))]):_vm._e(),_vm._t("description"),_c('div',{staticClass:"sh-card-widget-action"},[_vm._t("action")],2)],2)])}
29159var ShCardWidgetvue_type_template_id_299caf7e_staticRenderFns = []
29160
29161
29162// CONCATENATED MODULE: ./src/components/sh-card/ShCardWidget.vue?vue&type=template&id=299caf7e&
29163
29164// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardWidget.vue?vue&type=script&lang=ts&
29165
29166
29167
29168
29169
29170
29171
29172
29173
29174var ShCardWidgetvue_type_script_lang_ts_ShCardWidget =
29175/*#__PURE__*/
29176function (_Vue) {
29177 _inherits(ShCardWidget, _Vue);
29178
29179 function ShCardWidget() {
29180 var _this;
29181
29182 _classCallCheck(this, ShCardWidget);
29183
29184 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCardWidget).apply(this, arguments));
29185 _this.widgetType = {
29186 blankslate: 'sh-card-widget-blankslate',
29187 section: 'sh-card-widget-section',
29188 box: 'sh-card-widget-box'
29189 };
29190 return _this;
29191 }
29192
29193 _createClass(ShCardWidget, [{
29194 key: "typeClass",
29195 get: function get() {
29196 return this.widgetType[this.type];
29197 }
29198 }]);
29199
29200 return ShCardWidget;
29201}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29202
29203__decorate([Prop({
29204 default: 'auto'
29205}), __metadata("design:type", String)], ShCardWidgetvue_type_script_lang_ts_ShCardWidget.prototype, "imgHeight", void 0);
29206
29207__decorate([Prop(), __metadata("design:type", String)], ShCardWidgetvue_type_script_lang_ts_ShCardWidget.prototype, "imgSrc", void 0);
29208
29209__decorate([Prop(), __metadata("design:type", String)], ShCardWidgetvue_type_script_lang_ts_ShCardWidget.prototype, "title", void 0);
29210
29211__decorate([Prop(), __metadata("design:type", String)], ShCardWidgetvue_type_script_lang_ts_ShCardWidget.prototype, "description", void 0);
29212
29213__decorate([Prop(), __metadata("design:type", String)], ShCardWidgetvue_type_script_lang_ts_ShCardWidget.prototype, "type", void 0);
29214
29215ShCardWidgetvue_type_script_lang_ts_ShCardWidget = __decorate([vue_class_component_common_default()({})], ShCardWidgetvue_type_script_lang_ts_ShCardWidget);
29216/* harmony default export */ var ShCardWidgetvue_type_script_lang_ts_ = (ShCardWidgetvue_type_script_lang_ts_ShCardWidget);
29217// CONCATENATED MODULE: ./src/components/sh-card/ShCardWidget.vue?vue&type=script&lang=ts&
29218 /* harmony default export */ var sh_card_ShCardWidgetvue_type_script_lang_ts_ = (ShCardWidgetvue_type_script_lang_ts_);
29219// EXTERNAL MODULE: ./src/components/sh-card/ShCardWidget.vue?vue&type=style&index=0&lang=scss&
29220var ShCardWidgetvue_type_style_index_0_lang_scss_ = __webpack_require__("79a4");
29221
29222// CONCATENATED MODULE: ./src/components/sh-card/ShCardWidget.vue
29223
29224
29225
29226
29227
29228
29229/* normalize component */
29230
29231var ShCardWidget_component = normalizeComponent(
29232 sh_card_ShCardWidgetvue_type_script_lang_ts_,
29233 ShCardWidgetvue_type_template_id_299caf7e_render,
29234 ShCardWidgetvue_type_template_id_299caf7e_staticRenderFns,
29235 false,
29236 null,
29237 null,
29238 null
29239
29240)
29241
29242ShCardWidget_component.options.__file = "ShCardWidget.vue"
29243/* harmony default export */ var sh_card_ShCardWidget = (ShCardWidget_component.exports);
29244// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardGroup.vue?vue&type=template&id=6ccf1eb2&
29245var ShCardGroupvue_type_template_id_6ccf1eb2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-card-group row"},[_vm._t("default")],2)}
29246var ShCardGroupvue_type_template_id_6ccf1eb2_staticRenderFns = []
29247
29248
29249// CONCATENATED MODULE: ./src/components/sh-card/ShCardGroup.vue?vue&type=template&id=6ccf1eb2&
29250
29251// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-card/ShCardGroup.vue?vue&type=script&lang=ts&
29252
29253
29254
29255
29256
29257
29258
29259
29260var ShCardGroupvue_type_script_lang_ts_ShCardGroup =
29261/*#__PURE__*/
29262function (_Vue) {
29263 _inherits(ShCardGroup, _Vue);
29264
29265 function ShCardGroup() {
29266 _classCallCheck(this, ShCardGroup);
29267
29268 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCardGroup).apply(this, arguments));
29269 }
29270
29271 return ShCardGroup;
29272}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29273
29274ShCardGroupvue_type_script_lang_ts_ShCardGroup = __decorate([vue_class_component_common_default.a], ShCardGroupvue_type_script_lang_ts_ShCardGroup);
29275/* harmony default export */ var ShCardGroupvue_type_script_lang_ts_ = (ShCardGroupvue_type_script_lang_ts_ShCardGroup);
29276// CONCATENATED MODULE: ./src/components/sh-card/ShCardGroup.vue?vue&type=script&lang=ts&
29277 /* harmony default export */ var sh_card_ShCardGroupvue_type_script_lang_ts_ = (ShCardGroupvue_type_script_lang_ts_);
29278// EXTERNAL MODULE: ./src/components/sh-card/ShCardGroup.vue?vue&type=style&index=0&lang=scss&
29279var ShCardGroupvue_type_style_index_0_lang_scss_ = __webpack_require__("79a4e");
29280
29281// CONCATENATED MODULE: ./src/components/sh-card/ShCardGroup.vue
29282
29283
29284
29285
29286
29287
29288/* normalize component */
29289
29290var ShCardGroup_component = normalizeComponent(
29291 sh_card_ShCardGroupvue_type_script_lang_ts_,
29292 ShCardGroupvue_type_template_id_6ccf1eb2_render,
29293 ShCardGroupvue_type_template_id_6ccf1eb2_staticRenderFns,
29294 false,
29295 null,
29296 null,
29297 null
29298
29299)
29300
29301ShCardGroup_component.options.__file = "ShCardGroup.vue"
29302/* harmony default export */ var sh_card_ShCardGroup = (ShCardGroup_component.exports);
29303// CONCATENATED MODULE: ./src/components/sh-card/index.ts
29304
29305
29306
29307
29308
29309
29310// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-notifications/ShNotifications.vue?vue&type=template&id=8ebdb2d0&
29311var ShNotificationsvue_type_template_id_8ebdb2d0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('notifications',{attrs:{"group":"notify","position":"bottom right"},scopedSlots:_vm._u([{key:"body",fn:function(props){return [_c('div',{staticClass:"sh-notification",class:[{
29312 'sh-notification-green': props.item.type === 'success',
29313 'sh-notification-red': props.item.type === 'error',
29314 'sh-notification-orange': props.item.type === 'warning'
29315 }, 'notification-' + props.item.type]},[_c('i',{staticClass:"sh-icon sh-icon-check-2",class:{
29316 'sh-icon-check-2': props.item.type === 'success',
29317 'sh-icon-warning': props.item.type === 'info',
29318 'sh-icon-info-2': props.item.type === 'warning',
29319 }}),_c('span',{staticClass:"text",class:'notification-' + props.item.type + '-text'},[_vm._v("\n "+_vm._s(props.item.title)+"\n "),_c('div',{domProps:{"innerHTML":_vm._s(props.item.text)}})]),_c('ShButton',{staticClass:"sh-notification-close",attrs:{"buttonIcon":"sh-icon-close-small","buttonColor":"clear-gray","isIcon":true,"buttonSize":"small"},on:{"click":props.close}})],1)]}}])})}
29320var ShNotificationsvue_type_template_id_8ebdb2d0_staticRenderFns = []
29321
29322
29323// CONCATENATED MODULE: ./src/components/sh-notifications/ShNotifications.vue?vue&type=template&id=8ebdb2d0&
29324
29325// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button/ShButton.vue?vue&type=template&id=f2835c76&
29326var ShButtonvue_type_template_id_f2835c76_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:"sh-btn",class:[_vm.classes],attrs:{"type":_vm.buttonType,"disabled":_vm.isDisabled || _vm.isLoading},on:{"click":_vm.handleClick}},[((_vm.buttonIcon || _vm.isLoading) && _vm.isIconLeft)?_c('ShIcon',{attrs:{"iconName":[ _vm.isLoading ? 'sh-icon-refresh' : _vm.buttonIcon ]}}):_vm._e(),(_vm.buttonContent && !_vm.isIcon)?_c('span',[_vm._v(_vm._s(_vm.buttonContent))]):_vm._e(),((_vm.buttonIcon || _vm.isLoading) && !_vm.isIconLeft)?_c('ShIcon',{class:[ _vm.isLoading ? 'sh-icon-refresh' : _vm.buttonIcon ]}):_vm._e()],1)}
29327var ShButtonvue_type_template_id_f2835c76_staticRenderFns = []
29328
29329
29330// CONCATENATED MODULE: ./src/components/sh-button/ShButton.vue?vue&type=template&id=f2835c76&
29331
29332// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js
29333
29334function _defineProperty(obj, key, value) {
29335 if (key in obj) {
29336 define_property_default()(obj, key, {
29337 value: value,
29338 enumerable: true,
29339 configurable: true,
29340 writable: true
29341 });
29342 } else {
29343 obj[key] = value;
29344 }
29345
29346 return obj;
29347}
29348// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-icon/ShIcon.vue?vue&type=template&id=3818f40c&
29349var ShIconvue_type_template_id_3818f40c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticClass:"sh-icon",class:_vm.classes,on:{"click":_vm.iconClicked}})}
29350var ShIconvue_type_template_id_3818f40c_staticRenderFns = []
29351
29352
29353// CONCATENATED MODULE: ./src/components/sh-icon/ShIcon.vue?vue&type=template&id=3818f40c&
29354
29355// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-icon/ShIcon.vue?vue&type=script&lang=ts&
29356
29357
29358
29359
29360
29361
29362
29363
29364
29365
29366var ShIconvue_type_script_lang_ts_ShIcon =
29367/*#__PURE__*/
29368function (_Vue) {
29369 _inherits(ShIcon, _Vue);
29370
29371 function ShIcon() {
29372 _classCallCheck(this, ShIcon);
29373
29374 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShIcon).apply(this, arguments));
29375 }
29376
29377 _createClass(ShIcon, [{
29378 key: "iconClicked",
29379 value: function iconClicked() {
29380 this.$emit('iconClicked');
29381 }
29382 }, {
29383 key: "classes",
29384 get: function get() {
29385 return _defineProperty({}, this.iconName, this.iconName);
29386 }
29387 }]);
29388
29389 return ShIcon;
29390}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29391
29392__decorate([Prop(), __metadata("design:type", String)], ShIconvue_type_script_lang_ts_ShIcon.prototype, "iconName", void 0);
29393
29394ShIconvue_type_script_lang_ts_ShIcon = __decorate([vue_class_component_common_default()({})], ShIconvue_type_script_lang_ts_ShIcon);
29395/* harmony default export */ var ShIconvue_type_script_lang_ts_ = (ShIconvue_type_script_lang_ts_ShIcon);
29396// CONCATENATED MODULE: ./src/components/sh-icon/ShIcon.vue?vue&type=script&lang=ts&
29397 /* harmony default export */ var sh_icon_ShIconvue_type_script_lang_ts_ = (ShIconvue_type_script_lang_ts_);
29398// CONCATENATED MODULE: ./src/components/sh-icon/ShIcon.vue
29399
29400
29401
29402
29403
29404/* normalize component */
29405
29406var ShIcon_component = normalizeComponent(
29407 sh_icon_ShIconvue_type_script_lang_ts_,
29408 ShIconvue_type_template_id_3818f40c_render,
29409 ShIconvue_type_template_id_3818f40c_staticRenderFns,
29410 false,
29411 null,
29412 null,
29413 null
29414
29415)
29416
29417ShIcon_component.options.__file = "ShIcon.vue"
29418/* harmony default export */ var sh_icon_ShIcon = (ShIcon_component.exports);
29419// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button/ShButton.vue?vue&type=script&lang=ts&
29420
29421
29422
29423
29424
29425
29426
29427
29428
29429
29430
29431var ShButtonvue_type_script_lang_ts_ShButton =
29432/*#__PURE__*/
29433function (_Vue) {
29434 _inherits(ShButton, _Vue);
29435
29436 function ShButton() {
29437 var _this;
29438
29439 _classCallCheck(this, ShButton);
29440
29441 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShButton).apply(this, arguments));
29442 _this.colorTypes = {
29443 'primary': 'sh-btn-blue',
29444 'secondary': 'sh-btn-outline-blue',
29445 'clear-blue': 'sh-btn-clear-blue',
29446 'clear-gray': 'sh-btn-clear-gray',
29447 'clear-white': 'sh-btn-clear-white',
29448 'clear-red': 'sh-btn-clear-red',
29449 'icon-outline-blue': 'sh-btn-icon-outline-blue',
29450 'outline-gray': 'sh-btn-white'
29451 };
29452 _this.sizeTypes = {
29453 'small': 'sh-btn-narrow',
29454 'text-only': 'sh-btn-text-only',
29455 'icon-more': 'sh-btn-more',
29456 'icon-drag-drop': 'sh-btn-drag-drop'
29457 };
29458 _this.textAlignTypes = {
29459 center: 'sh-btn-content-center',
29460 left: 'sh-btn-content-left',
29461 right: 'sh-btn-content-right'
29462 };
29463 return _this;
29464 }
29465
29466 _createClass(ShButton, [{
29467 key: "handleClick",
29468 value: function handleClick(event) {
29469 this.$emit('click', event);
29470 }
29471 }, {
29472 key: "classes",
29473 get: function get() {
29474 var _ref;
29475
29476 return _ref = {}, _defineProperty(_ref, this.colorClass, true), _defineProperty(_ref, this.sizeClass, this.buttonSize), _defineProperty(_ref, this.textAlignClass, this.textAlign), _defineProperty(_ref, 'sh-btn-full-width', this.isFullWidth), _defineProperty(_ref, 'sh-btn-icon', this.isIcon), _defineProperty(_ref, 'sh-btn-with-icon', this.buttonIcon && this.buttonContent && !this.isIcon || this.isLoading && this.buttonContent && !this.isIcon), _defineProperty(_ref, 'sh-btn-icon-left', this.buttonIcon && this.isIconLeft && !this.isIcon || this.isLoading && this.isIconLeft && !this.isIcon), _defineProperty(_ref, 'sh-btn-icon-right', this.buttonIcon && !this.isIconLeft && !this.isIcon || this.isLoading && !this.isIconLeft && !this.isIcon), _defineProperty(_ref, 'sh-btn-loading', this.isLoading), _defineProperty(_ref, 'is-horizontal-paddingless', this.isHorizontalPaddingLess), _ref;
29477 }
29478 }, {
29479 key: "colorClass",
29480 get: function get() {
29481 return this.colorTypes[this.buttonColor];
29482 }
29483 }, {
29484 key: "sizeClass",
29485 get: function get() {
29486 return this.sizeTypes[this.buttonSize];
29487 }
29488 }, {
29489 key: "textAlignClass",
29490 get: function get() {
29491 return this.textAlignTypes[this.textAlign];
29492 }
29493 }]);
29494
29495 return ShButton;
29496}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29497
29498__decorate([Prop({
29499 default: 'primary'
29500}), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "buttonColor", void 0);
29501
29502__decorate([Prop(), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "buttonContent", void 0);
29503
29504__decorate([Prop(), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "buttonIcon", void 0);
29505
29506__decorate([Prop(), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "buttonSize", void 0);
29507
29508__decorate([Prop({
29509 default: 'button'
29510}), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "buttonType", void 0);
29511
29512__decorate([Prop({
29513 default: false
29514}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isDisabled", void 0);
29515
29516__decorate([Prop({
29517 default: false
29518}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isFullWidth", void 0);
29519
29520__decorate([Prop({
29521 default: false
29522}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isIcon", void 0);
29523
29524__decorate([Prop({
29525 default: true
29526}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isIconLeft", void 0);
29527
29528__decorate([Prop({
29529 default: false
29530}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isLoading", void 0);
29531
29532__decorate([Prop({
29533 default: false
29534}), __metadata("design:type", Boolean)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "isHorizontalPaddingLess", void 0);
29535
29536__decorate([Prop({
29537 default: 'center'
29538}), __metadata("design:type", String)], ShButtonvue_type_script_lang_ts_ShButton.prototype, "textAlign", void 0);
29539
29540ShButtonvue_type_script_lang_ts_ShButton = __decorate([vue_class_component_common_default()({
29541 components: {
29542 ShIcon: sh_icon_ShIcon
29543 }
29544})], ShButtonvue_type_script_lang_ts_ShButton);
29545/* harmony default export */ var ShButtonvue_type_script_lang_ts_ = (ShButtonvue_type_script_lang_ts_ShButton);
29546// CONCATENATED MODULE: ./src/components/sh-button/ShButton.vue?vue&type=script&lang=ts&
29547 /* harmony default export */ var sh_button_ShButtonvue_type_script_lang_ts_ = (ShButtonvue_type_script_lang_ts_);
29548// EXTERNAL MODULE: ./src/components/sh-button/ShButton.vue?vue&type=style&index=0&lang=scss&
29549var ShButtonvue_type_style_index_0_lang_scss_ = __webpack_require__("9cb6");
29550
29551// CONCATENATED MODULE: ./src/components/sh-button/ShButton.vue
29552
29553
29554
29555
29556
29557
29558/* normalize component */
29559
29560var ShButton_component = normalizeComponent(
29561 sh_button_ShButtonvue_type_script_lang_ts_,
29562 ShButtonvue_type_template_id_f2835c76_render,
29563 ShButtonvue_type_template_id_f2835c76_staticRenderFns,
29564 false,
29565 null,
29566 null,
29567 null
29568
29569)
29570
29571ShButton_component.options.__file = "ShButton.vue"
29572/* harmony default export */ var sh_button_ShButton = (ShButton_component.exports);
29573// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-notifications/ShNotifications.vue?vue&type=script&lang=ts&
29574
29575
29576
29577
29578
29579
29580
29581
29582
29583var ShNotificationsvue_type_script_lang_ts_ShNotifications =
29584/*#__PURE__*/
29585function (_Vue) {
29586 _inherits(ShNotifications, _Vue);
29587
29588 function ShNotifications() {
29589 _classCallCheck(this, ShNotifications);
29590
29591 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShNotifications).apply(this, arguments));
29592 }
29593
29594 return ShNotifications;
29595}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29596
29597ShNotificationsvue_type_script_lang_ts_ShNotifications = __decorate([vue_class_component_common_default()({
29598 components: {
29599 ShButton: sh_button_ShButton
29600 }
29601})], ShNotificationsvue_type_script_lang_ts_ShNotifications);
29602/* harmony default export */ var ShNotificationsvue_type_script_lang_ts_ = (ShNotificationsvue_type_script_lang_ts_ShNotifications);
29603// CONCATENATED MODULE: ./src/components/sh-notifications/ShNotifications.vue?vue&type=script&lang=ts&
29604 /* harmony default export */ var sh_notifications_ShNotificationsvue_type_script_lang_ts_ = (ShNotificationsvue_type_script_lang_ts_);
29605// EXTERNAL MODULE: ./src/components/sh-notifications/ShNotifications.vue?vue&type=style&index=0&lang=scss&
29606var ShNotificationsvue_type_style_index_0_lang_scss_ = __webpack_require__("e902");
29607
29608// CONCATENATED MODULE: ./src/components/sh-notifications/ShNotifications.vue
29609
29610
29611
29612
29613
29614
29615/* normalize component */
29616
29617var ShNotifications_component = normalizeComponent(
29618 sh_notifications_ShNotificationsvue_type_script_lang_ts_,
29619 ShNotificationsvue_type_template_id_8ebdb2d0_render,
29620 ShNotificationsvue_type_template_id_8ebdb2d0_staticRenderFns,
29621 false,
29622 null,
29623 null,
29624 null
29625
29626)
29627
29628ShNotifications_component.options.__file = "ShNotifications.vue"
29629/* harmony default export */ var sh_notifications_ShNotifications = (ShNotifications_component.exports);
29630// CONCATENATED MODULE: ./src/components/sh-notifications/index.ts
29631
29632/* harmony default export */ var sh_notifications = (sh_notifications_ShNotifications);
29633// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button/ShButtonGroup.vue?vue&type=template&id=6d3f5f00&
29634var ShButtonGroupvue_type_template_id_6d3f5f00_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-btn-group",class:[_vm.classes]},[_vm._t("default")],2)}
29635var ShButtonGroupvue_type_template_id_6d3f5f00_staticRenderFns = []
29636
29637
29638// CONCATENATED MODULE: ./src/components/sh-button/ShButtonGroup.vue?vue&type=template&id=6d3f5f00&
29639
29640// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button/ShButtonGroup.vue?vue&type=script&lang=ts&
29641
29642
29643
29644
29645
29646
29647
29648
29649
29650var ShButtonGroupvue_type_script_lang_ts_ShButtonGroup =
29651/*#__PURE__*/
29652function (_Vue) {
29653 _inherits(ShButtonGroup, _Vue);
29654
29655 function ShButtonGroup() {
29656 _classCallCheck(this, ShButtonGroup);
29657
29658 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShButtonGroup).apply(this, arguments));
29659 }
29660
29661 _createClass(ShButtonGroup, [{
29662 key: "classes",
29663 get: function get() {
29664 return {
29665 'is-right': this.align === 'right',
29666 'is-center': this.align === 'center',
29667 'is-connected': this.connectedButtons
29668 };
29669 }
29670 }]);
29671
29672 return ShButtonGroup;
29673}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29674
29675__decorate([Prop({
29676 default: 'left'
29677}), __metadata("design:type", String)], ShButtonGroupvue_type_script_lang_ts_ShButtonGroup.prototype, "align", void 0);
29678
29679__decorate([Prop(), __metadata("design:type", Boolean)], ShButtonGroupvue_type_script_lang_ts_ShButtonGroup.prototype, "connectedButtons", void 0);
29680
29681ShButtonGroupvue_type_script_lang_ts_ShButtonGroup = __decorate([vue_class_component_common_default()({})], ShButtonGroupvue_type_script_lang_ts_ShButtonGroup);
29682/* harmony default export */ var ShButtonGroupvue_type_script_lang_ts_ = (ShButtonGroupvue_type_script_lang_ts_ShButtonGroup);
29683// CONCATENATED MODULE: ./src/components/sh-button/ShButtonGroup.vue?vue&type=script&lang=ts&
29684 /* harmony default export */ var sh_button_ShButtonGroupvue_type_script_lang_ts_ = (ShButtonGroupvue_type_script_lang_ts_);
29685// EXTERNAL MODULE: ./src/components/sh-button/ShButtonGroup.vue?vue&type=style&index=0&lang=scss&
29686var ShButtonGroupvue_type_style_index_0_lang_scss_ = __webpack_require__("bf11");
29687
29688// CONCATENATED MODULE: ./src/components/sh-button/ShButtonGroup.vue
29689
29690
29691
29692
29693
29694
29695/* normalize component */
29696
29697var ShButtonGroup_component = normalizeComponent(
29698 sh_button_ShButtonGroupvue_type_script_lang_ts_,
29699 ShButtonGroupvue_type_template_id_6d3f5f00_render,
29700 ShButtonGroupvue_type_template_id_6d3f5f00_staticRenderFns,
29701 false,
29702 null,
29703 null,
29704 null
29705
29706)
29707
29708ShButtonGroup_component.options.__file = "ShButtonGroup.vue"
29709/* harmony default export */ var sh_button_ShButtonGroup = (ShButtonGroup_component.exports);
29710// CONCATENATED MODULE: ./src/components/sh-button/index.ts
29711
29712
29713
29714// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button-upload/ShButtonUpload.vue?vue&type=template&id=c8d59fe0&
29715var ShButtonUploadvue_type_template_id_c8d59fe0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-button-upload",class:[_vm.classes]},[_c('FileUpload',{ref:"upload",attrs:{"drop":true,"multiple":true},on:{"input":_vm.onUpload},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:"files"}},[_c('ShIcon',{attrs:{"iconName":_vm.buttonIcon}})],1)],1)}
29716var ShButtonUploadvue_type_template_id_c8d59fe0_staticRenderFns = []
29717
29718
29719// CONCATENATED MODULE: ./src/components/sh-button-upload/ShButtonUpload.vue?vue&type=template&id=c8d59fe0&
29720
29721// EXTERNAL MODULE: ./node_modules/vue-upload-component/dist/vue-upload-component.js
29722var vue_upload_component = __webpack_require__("8019");
29723var vue_upload_component_default = /*#__PURE__*/__webpack_require__.n(vue_upload_component);
29724
29725// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-button-upload/ShButtonUpload.vue?vue&type=script&lang=ts&
29726
29727
29728
29729
29730
29731
29732
29733
29734
29735
29736external_commonjs_vue_commonjs2_vue_root_Vue_default.a.component('FileUpload', vue_upload_component_default.a);
29737
29738var ShButtonUploadvue_type_script_lang_ts_ShImage =
29739/*#__PURE__*/
29740function (_Vue) {
29741 _inherits(ShImage, _Vue);
29742
29743 function ShImage() {
29744 var _this;
29745
29746 _classCallCheck(this, ShImage);
29747
29748 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShImage).apply(this, arguments));
29749 _this.files = [];
29750 return _this;
29751 }
29752
29753 _createClass(ShImage, [{
29754 key: "onUpload",
29755 value: function onUpload(value) {
29756 this.$emit('upload', value);
29757 this.files = [];
29758 }
29759 }, {
29760 key: "classes",
29761 get: function get() {
29762 var _ref;
29763
29764 return _ref = {}, _defineProperty(_ref, 'sh-thumb-' + this.buttonSize, this.buttonSize), _defineProperty(_ref, 'sh-button-circle', this.buttonCircle), _ref;
29765 }
29766 }]);
29767
29768 return ShImage;
29769}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29770
29771__decorate([Prop({
29772 default: '100'
29773}), __metadata("design:type", String)], ShButtonUploadvue_type_script_lang_ts_ShImage.prototype, "buttonSize", void 0);
29774
29775__decorate([Prop({
29776 default: false
29777}), __metadata("design:type", Boolean)], ShButtonUploadvue_type_script_lang_ts_ShImage.prototype, "buttonCircle", void 0);
29778
29779__decorate([Prop({
29780 default: 'sh-icon-add'
29781}), __metadata("design:type", String)], ShButtonUploadvue_type_script_lang_ts_ShImage.prototype, "buttonIcon", void 0);
29782
29783ShButtonUploadvue_type_script_lang_ts_ShImage = __decorate([vue_class_component_common_default()({
29784 components: {
29785 ShIcon: sh_icon_ShIcon
29786 }
29787})], ShButtonUploadvue_type_script_lang_ts_ShImage);
29788/* harmony default export */ var ShButtonUploadvue_type_script_lang_ts_ = (ShButtonUploadvue_type_script_lang_ts_ShImage);
29789// CONCATENATED MODULE: ./src/components/sh-button-upload/ShButtonUpload.vue?vue&type=script&lang=ts&
29790 /* harmony default export */ var sh_button_upload_ShButtonUploadvue_type_script_lang_ts_ = (ShButtonUploadvue_type_script_lang_ts_);
29791// EXTERNAL MODULE: ./src/components/sh-button-upload/ShButtonUpload.vue?vue&type=style&index=0&lang=scss&
29792var ShButtonUploadvue_type_style_index_0_lang_scss_ = __webpack_require__("7d81");
29793
29794// CONCATENATED MODULE: ./src/components/sh-button-upload/ShButtonUpload.vue
29795
29796
29797
29798
29799
29800
29801/* normalize component */
29802
29803var ShButtonUpload_component = normalizeComponent(
29804 sh_button_upload_ShButtonUploadvue_type_script_lang_ts_,
29805 ShButtonUploadvue_type_template_id_c8d59fe0_render,
29806 ShButtonUploadvue_type_template_id_c8d59fe0_staticRenderFns,
29807 false,
29808 null,
29809 null,
29810 null
29811
29812)
29813
29814ShButtonUpload_component.options.__file = "ShButtonUpload.vue"
29815/* harmony default export */ var ShButtonUpload = (ShButtonUpload_component.exports);
29816// CONCATENATED MODULE: ./src/components/sh-button-upload/index.ts
29817
29818/* harmony default export */ var sh_button_upload = (ShButtonUpload);
29819// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-checkbox/ShCheckbox.vue?vue&type=template&id=c9d793f4&
29820var ShCheckboxvue_type_template_id_c9d793f4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:"sh-checkbox-wrapper"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.checked),expression:"checked"}],staticClass:"sh-input-checkbox",class:_vm.classes,attrs:{"type":"checkbox","name":_vm.checkboxName,"true-value":_vm.checkboxTrueValue,"false-value":_vm.checkboxFalseValue,"disabled":_vm.disabled,"required":_vm.isRequired},domProps:{"value":_vm.checkboxValue,"checked":Array.isArray(_vm.checked)?_vm._i(_vm.checked,_vm.checkboxValue)>-1:_vm._q(_vm.checked,_vm.checkboxTrueValue)},on:{"change":[function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(_vm.checkboxTrueValue):(_vm.checkboxFalseValue);if(Array.isArray($$a)){var $$v=_vm.checkboxValue,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}},_vm.onChange]}}),_c('span',{staticClass:"sh-check",class:{ 'sh-onoffswitch-check': _vm.isSwitch }}),_c('span',{staticClass:"sh-control-label"},[_vm._v(_vm._s(_vm.checkboxLabelContent))])])}
29821var ShCheckboxvue_type_template_id_c9d793f4_staticRenderFns = []
29822
29823
29824// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckbox.vue?vue&type=template&id=c9d793f4&
29825
29826// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-checkbox/ShCheckbox.vue?vue&type=script&lang=ts&
29827
29828
29829
29830
29831
29832
29833
29834
29835
29836
29837var ShCheckboxvue_type_script_lang_ts_ShCheckbox =
29838/*#__PURE__*/
29839function (_Vue) {
29840 _inherits(ShCheckbox, _Vue);
29841
29842 function ShCheckbox() {
29843 var _this;
29844
29845 _classCallCheck(this, ShCheckbox);
29846
29847 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCheckbox).apply(this, arguments));
29848 _this.newValue = false;
29849 return _this;
29850 }
29851
29852 _createClass(ShCheckbox, [{
29853 key: "onChange",
29854 value: function onChange(event) {
29855 this.$emit('change', this.newValue);
29856 }
29857 }, {
29858 key: "onFocus",
29859 value: function onFocus() {
29860 this.$emit('focus');
29861 }
29862 }, {
29863 key: "onBlur",
29864 value: function onBlur() {
29865 this.$emit('blur');
29866 }
29867 }, {
29868 key: "classes",
29869 get: function get() {
29870 return {
29871 'sh-checkbox-without-label': !this.checkboxLabelContent
29872 };
29873 }
29874 }, {
29875 key: "checked",
29876 get: function get() {
29877 return this.value;
29878 },
29879 set: function set(val) {
29880 this.newValue = val;
29881 }
29882 }]);
29883
29884 return ShCheckbox;
29885}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29886
29887__decorate([Prop(), __metadata("design:type", String)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "checkboxLabelContent", void 0);
29888
29889__decorate([Prop(), __metadata("design:type", String)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "checkboxName", void 0);
29890
29891__decorate([Prop(), __metadata("design:type", Array)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "checkboxValue", void 0);
29892
29893__decorate([Prop({
29894 default: true
29895}), __metadata("design:type", Array)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "checkboxTrueValue", void 0);
29896
29897__decorate([Prop({
29898 default: false
29899}), __metadata("design:type", Array)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "checkboxFalseValue", void 0);
29900
29901__decorate([Prop({
29902 default: false
29903}), __metadata("design:type", Boolean)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "disabled", void 0);
29904
29905__decorate([Prop({
29906 default: false
29907}), __metadata("design:type", Boolean)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "isRequired", void 0);
29908
29909__decorate([Prop({
29910 default: false
29911}), __metadata("design:type", Boolean)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "isSwitch", void 0);
29912
29913__decorate([Model('change'), __metadata("design:type", Boolean)], ShCheckboxvue_type_script_lang_ts_ShCheckbox.prototype, "value", void 0);
29914
29915ShCheckboxvue_type_script_lang_ts_ShCheckbox = __decorate([vue_class_component_common_default()({
29916 $_veeValidate: {
29917 value: function value() {
29918 var element = this.$el;
29919 return element.value;
29920 },
29921 name: function name() {
29922 var component = this;
29923 return component.name;
29924 }
29925 }
29926})], ShCheckboxvue_type_script_lang_ts_ShCheckbox);
29927/* harmony default export */ var ShCheckboxvue_type_script_lang_ts_ = (ShCheckboxvue_type_script_lang_ts_ShCheckbox);
29928// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckbox.vue?vue&type=script&lang=ts&
29929 /* harmony default export */ var sh_checkbox_ShCheckboxvue_type_script_lang_ts_ = (ShCheckboxvue_type_script_lang_ts_);
29930// EXTERNAL MODULE: ./src/components/sh-checkbox/ShCheckbox.vue?vue&type=style&index=0&lang=scss&
29931var ShCheckboxvue_type_style_index_0_lang_scss_ = __webpack_require__("1d3b");
29932
29933// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckbox.vue
29934
29935
29936
29937
29938
29939
29940/* normalize component */
29941
29942var ShCheckbox_component = normalizeComponent(
29943 sh_checkbox_ShCheckboxvue_type_script_lang_ts_,
29944 ShCheckboxvue_type_template_id_c9d793f4_render,
29945 ShCheckboxvue_type_template_id_c9d793f4_staticRenderFns,
29946 false,
29947 null,
29948 null,
29949 null
29950
29951)
29952
29953ShCheckbox_component.options.__file = "ShCheckbox.vue"
29954/* harmony default export */ var sh_checkbox_ShCheckbox = (ShCheckbox_component.exports);
29955// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-checkbox/ShCheckboxGroup.vue?vue&type=template&id=04b2ea96&
29956var ShCheckboxGroupvue_type_template_id_04b2ea96_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-checkbox-group",class:_vm.classes},[_vm._t("default")],2)}
29957var ShCheckboxGroupvue_type_template_id_04b2ea96_staticRenderFns = []
29958
29959
29960// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckboxGroup.vue?vue&type=template&id=04b2ea96&
29961
29962// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-checkbox/ShCheckboxGroup.vue?vue&type=script&lang=ts&
29963
29964
29965
29966
29967
29968
29969
29970
29971
29972var ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup =
29973/*#__PURE__*/
29974function (_Vue) {
29975 _inherits(ShCheckboxGroup, _Vue);
29976
29977 function ShCheckboxGroup() {
29978 _classCallCheck(this, ShCheckboxGroup);
29979
29980 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCheckboxGroup).apply(this, arguments));
29981 }
29982
29983 _createClass(ShCheckboxGroup, [{
29984 key: "classes",
29985 get: function get() {
29986 return {
29987 'row': this.isWithColumns,
29988 'is-block': this.isBlock
29989 };
29990 }
29991 }]);
29992
29993 return ShCheckboxGroup;
29994}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
29995
29996__decorate([Prop({
29997 default: false
29998}), __metadata("design:type", Boolean)], ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup.prototype, "isWithColumns", void 0);
29999
30000__decorate([Prop({
30001 default: false
30002}), __metadata("design:type", Boolean)], ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup.prototype, "isBlock", void 0);
30003
30004ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup = __decorate([vue_class_component_common_default.a], ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup);
30005/* harmony default export */ var ShCheckboxGroupvue_type_script_lang_ts_ = (ShCheckboxGroupvue_type_script_lang_ts_ShCheckboxGroup);
30006// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckboxGroup.vue?vue&type=script&lang=ts&
30007 /* harmony default export */ var sh_checkbox_ShCheckboxGroupvue_type_script_lang_ts_ = (ShCheckboxGroupvue_type_script_lang_ts_);
30008// EXTERNAL MODULE: ./src/components/sh-checkbox/ShCheckboxGroup.vue?vue&type=style&index=0&lang=scss&
30009var ShCheckboxGroupvue_type_style_index_0_lang_scss_ = __webpack_require__("66ac");
30010
30011// CONCATENATED MODULE: ./src/components/sh-checkbox/ShCheckboxGroup.vue
30012
30013
30014
30015
30016
30017
30018/* normalize component */
30019
30020var ShCheckboxGroup_component = normalizeComponent(
30021 sh_checkbox_ShCheckboxGroupvue_type_script_lang_ts_,
30022 ShCheckboxGroupvue_type_template_id_04b2ea96_render,
30023 ShCheckboxGroupvue_type_template_id_04b2ea96_staticRenderFns,
30024 false,
30025 null,
30026 null,
30027 null
30028
30029)
30030
30031ShCheckboxGroup_component.options.__file = "ShCheckboxGroup.vue"
30032/* harmony default export */ var sh_checkbox_ShCheckboxGroup = (ShCheckboxGroup_component.exports);
30033// CONCATENATED MODULE: ./src/components/sh-checkbox/index.ts
30034
30035
30036
30037// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-radio/ShRadio.vue?vue&type=template&id=4d579dbf&
30038var ShRadiovue_type_template_id_4d579dbf_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:"sh-radio-wrapper",class:{ 'is-custom': _vm.isCustom }},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.checked),expression:"checked"}],staticClass:"sh-input-radio",class:_vm.classes,attrs:{"type":"radio","name":_vm.radioName,"disabled":_vm.disabled,"required":_vm.isRequired},domProps:{"value":_vm.radioValue,"checked":_vm._q(_vm.checked,_vm.radioValue)},on:{"change":[function($event){_vm.checked=_vm.radioValue},_vm.onChange]}}),(_vm.isCustom)?_vm._t("custom-content"):_c('span',{staticClass:"sh-check"}),_c('span',{staticClass:"sh-control-label"},[_vm._v(_vm._s(_vm.radioLabelContent))])],2)}
30039var ShRadiovue_type_template_id_4d579dbf_staticRenderFns = []
30040
30041
30042// CONCATENATED MODULE: ./src/components/sh-radio/ShRadio.vue?vue&type=template&id=4d579dbf&
30043
30044// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-radio/ShRadio.vue?vue&type=script&lang=ts&
30045
30046
30047
30048
30049
30050
30051
30052
30053
30054
30055var ShRadiovue_type_script_lang_ts_ShRadio =
30056/*#__PURE__*/
30057function (_Vue) {
30058 _inherits(ShRadio, _Vue);
30059
30060 function ShRadio() {
30061 var _this;
30062
30063 _classCallCheck(this, ShRadio);
30064
30065 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShRadio).apply(this, arguments));
30066 _this.newValue = false;
30067 return _this;
30068 }
30069
30070 _createClass(ShRadio, [{
30071 key: "onChange",
30072 value: function onChange(event) {
30073 this.$emit('input', this.newValue, event);
30074 }
30075 }, {
30076 key: "onFocus",
30077 value: function onFocus() {
30078 this.$emit('focus');
30079 }
30080 }, {
30081 key: "onBlur",
30082 value: function onBlur() {
30083 this.$emit('blur');
30084 }
30085 }, {
30086 key: "classes",
30087 get: function get() {
30088 return {
30089 'sh-radio-without-label': !this.radioLabelContent
30090 };
30091 }
30092 }, {
30093 key: "checked",
30094 get: function get() {
30095 return this.value;
30096 },
30097 set: function set(val) {
30098 this.newValue = val;
30099 }
30100 }]);
30101
30102 return ShRadio;
30103}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30104
30105__decorate([Prop(), __metadata("design:type", String)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "radioLabelContent", void 0);
30106
30107__decorate([Prop(), __metadata("design:type", String)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "radioName", void 0);
30108
30109__decorate([Prop(), __metadata("design:type", Array)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "radioValue", void 0);
30110
30111__decorate([Prop({
30112 default: false
30113}), __metadata("design:type", Boolean)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "isCustom", void 0);
30114
30115__decorate([Prop({
30116 default: false
30117}), __metadata("design:type", Boolean)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "disabled", void 0);
30118
30119__decorate([Prop({
30120 default: false
30121}), __metadata("design:type", Boolean)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "isRequired", void 0);
30122
30123__decorate([Model('input'), __metadata("design:type", Boolean)], ShRadiovue_type_script_lang_ts_ShRadio.prototype, "value", void 0);
30124
30125ShRadiovue_type_script_lang_ts_ShRadio = __decorate([vue_class_component_common_default()({
30126 $_veeValidate: {
30127 value: function value() {
30128 var element = this.$el;
30129 return element.value;
30130 },
30131 name: function name() {
30132 var component = this;
30133 return component.name;
30134 }
30135 }
30136})], ShRadiovue_type_script_lang_ts_ShRadio);
30137/* harmony default export */ var ShRadiovue_type_script_lang_ts_ = (ShRadiovue_type_script_lang_ts_ShRadio);
30138// CONCATENATED MODULE: ./src/components/sh-radio/ShRadio.vue?vue&type=script&lang=ts&
30139 /* harmony default export */ var sh_radio_ShRadiovue_type_script_lang_ts_ = (ShRadiovue_type_script_lang_ts_);
30140// EXTERNAL MODULE: ./src/components/sh-radio/ShRadio.vue?vue&type=style&index=0&lang=scss&
30141var ShRadiovue_type_style_index_0_lang_scss_ = __webpack_require__("327b");
30142
30143// CONCATENATED MODULE: ./src/components/sh-radio/ShRadio.vue
30144
30145
30146
30147
30148
30149
30150/* normalize component */
30151
30152var ShRadio_component = normalizeComponent(
30153 sh_radio_ShRadiovue_type_script_lang_ts_,
30154 ShRadiovue_type_template_id_4d579dbf_render,
30155 ShRadiovue_type_template_id_4d579dbf_staticRenderFns,
30156 false,
30157 null,
30158 null,
30159 null
30160
30161)
30162
30163ShRadio_component.options.__file = "ShRadio.vue"
30164/* harmony default export */ var sh_radio_ShRadio = (ShRadio_component.exports);
30165// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-radio/ShRadioGroup.vue?vue&type=template&id=4d6fafa5&
30166var ShRadioGroupvue_type_template_id_4d6fafa5_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-radio-group",class:_vm.classes},[_vm._t("default")],2)}
30167var ShRadioGroupvue_type_template_id_4d6fafa5_staticRenderFns = []
30168
30169
30170// CONCATENATED MODULE: ./src/components/sh-radio/ShRadioGroup.vue?vue&type=template&id=4d6fafa5&
30171
30172// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-radio/ShRadioGroup.vue?vue&type=script&lang=ts&
30173
30174
30175
30176
30177
30178
30179
30180
30181
30182var ShRadioGroupvue_type_script_lang_ts_ShRadioGroup =
30183/*#__PURE__*/
30184function (_Vue) {
30185 _inherits(ShRadioGroup, _Vue);
30186
30187 function ShRadioGroup() {
30188 _classCallCheck(this, ShRadioGroup);
30189
30190 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShRadioGroup).apply(this, arguments));
30191 }
30192
30193 _createClass(ShRadioGroup, [{
30194 key: "classes",
30195 get: function get() {
30196 return {
30197 row: this.isWithColumns
30198 };
30199 }
30200 }]);
30201
30202 return ShRadioGroup;
30203}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30204
30205__decorate([Prop({
30206 default: false
30207}), __metadata("design:type", Boolean)], ShRadioGroupvue_type_script_lang_ts_ShRadioGroup.prototype, "isWithColumns", void 0);
30208
30209ShRadioGroupvue_type_script_lang_ts_ShRadioGroup = __decorate([vue_class_component_common_default.a], ShRadioGroupvue_type_script_lang_ts_ShRadioGroup);
30210/* harmony default export */ var ShRadioGroupvue_type_script_lang_ts_ = (ShRadioGroupvue_type_script_lang_ts_ShRadioGroup);
30211// CONCATENATED MODULE: ./src/components/sh-radio/ShRadioGroup.vue?vue&type=script&lang=ts&
30212 /* harmony default export */ var sh_radio_ShRadioGroupvue_type_script_lang_ts_ = (ShRadioGroupvue_type_script_lang_ts_);
30213// EXTERNAL MODULE: ./src/components/sh-radio/ShRadioGroup.vue?vue&type=style&index=0&lang=scss&
30214var ShRadioGroupvue_type_style_index_0_lang_scss_ = __webpack_require__("fb5a");
30215
30216// CONCATENATED MODULE: ./src/components/sh-radio/ShRadioGroup.vue
30217
30218
30219
30220
30221
30222
30223/* normalize component */
30224
30225var ShRadioGroup_component = normalizeComponent(
30226 sh_radio_ShRadioGroupvue_type_script_lang_ts_,
30227 ShRadioGroupvue_type_template_id_4d6fafa5_render,
30228 ShRadioGroupvue_type_template_id_4d6fafa5_staticRenderFns,
30229 false,
30230 null,
30231 null,
30232 null
30233
30234)
30235
30236ShRadioGroup_component.options.__file = "ShRadioGroup.vue"
30237/* harmony default export */ var sh_radio_ShRadioGroup = (ShRadioGroup_component.exports);
30238// CONCATENATED MODULE: ./src/components/sh-radio/index.ts
30239
30240
30241
30242// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-statistics/ShStatistics.vue?vue&type=template&id=2d953130&
30243var ShStatisticsvue_type_template_id_2d953130_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-statistics-wrapper"},[_vm._l((_vm.statistics),function(item,index){return (_vm.statistics)?_c('ShStatisticsItem',{key:index},[_c('span',{attrs:{"slot":"value"},slot:"value"},[_vm._v(_vm._s(item.value))]),_c('span',{attrs:{"slot":"description"},slot:"description"},[_vm._v(_vm._s(item.description))])]):_vm._e()}),_vm._t("default")],2)}
30244var ShStatisticsvue_type_template_id_2d953130_staticRenderFns = []
30245
30246
30247// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatistics.vue?vue&type=template&id=2d953130&
30248
30249// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-statistics/ShStatisticsItem.vue?vue&type=template&id=5b5a8eca&
30250var ShStatisticsItemvue_type_template_id_5b5a8eca_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-statistics-item"},[(_vm.$slots.value)?_c('h2',{staticClass:"has-text-weight-semibold"},[_vm._t("value")],2):_vm._e(),(_vm.$slots.description)?_c('p',[_vm._t("description")],2):_vm._e()])}
30251var ShStatisticsItemvue_type_template_id_5b5a8eca_staticRenderFns = []
30252
30253
30254// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatisticsItem.vue?vue&type=template&id=5b5a8eca&
30255
30256// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-statistics/ShStatisticsItem.vue?vue&type=script&lang=ts&
30257
30258
30259
30260
30261
30262
30263
30264var ShStatisticsItemvue_type_script_lang_ts_ShStatisticsItem =
30265/*#__PURE__*/
30266function (_Vue) {
30267 _inherits(ShStatisticsItem, _Vue);
30268
30269 function ShStatisticsItem() {
30270 _classCallCheck(this, ShStatisticsItem);
30271
30272 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShStatisticsItem).apply(this, arguments));
30273 }
30274
30275 return ShStatisticsItem;
30276}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30277
30278ShStatisticsItemvue_type_script_lang_ts_ShStatisticsItem = __decorate([vue_class_component_common_default()({})], ShStatisticsItemvue_type_script_lang_ts_ShStatisticsItem);
30279/* harmony default export */ var ShStatisticsItemvue_type_script_lang_ts_ = (ShStatisticsItemvue_type_script_lang_ts_ShStatisticsItem);
30280// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatisticsItem.vue?vue&type=script&lang=ts&
30281 /* harmony default export */ var sh_statistics_ShStatisticsItemvue_type_script_lang_ts_ = (ShStatisticsItemvue_type_script_lang_ts_);
30282// EXTERNAL MODULE: ./src/components/sh-statistics/ShStatisticsItem.vue?vue&type=style&index=0&lang=scss&
30283var ShStatisticsItemvue_type_style_index_0_lang_scss_ = __webpack_require__("506b");
30284
30285// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatisticsItem.vue
30286
30287
30288
30289
30290
30291
30292/* normalize component */
30293
30294var ShStatisticsItem_component = normalizeComponent(
30295 sh_statistics_ShStatisticsItemvue_type_script_lang_ts_,
30296 ShStatisticsItemvue_type_template_id_5b5a8eca_render,
30297 ShStatisticsItemvue_type_template_id_5b5a8eca_staticRenderFns,
30298 false,
30299 null,
30300 null,
30301 null
30302
30303)
30304
30305ShStatisticsItem_component.options.__file = "ShStatisticsItem.vue"
30306/* harmony default export */ var sh_statistics_ShStatisticsItem = (ShStatisticsItem_component.exports);
30307// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-statistics/ShStatistics.vue?vue&type=script&lang=ts&
30308
30309
30310
30311
30312
30313
30314
30315
30316var ShStatisticsvue_type_script_lang_ts_ShStatistics =
30317/*#__PURE__*/
30318function (_Vue) {
30319 _inherits(ShStatistics, _Vue);
30320
30321 function ShStatistics() {
30322 _classCallCheck(this, ShStatistics);
30323
30324 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShStatistics).apply(this, arguments));
30325 }
30326
30327 return ShStatistics;
30328}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30329
30330__decorate([Prop(), __metadata("design:type", Array)], ShStatisticsvue_type_script_lang_ts_ShStatistics.prototype, "statistics", void 0);
30331
30332ShStatisticsvue_type_script_lang_ts_ShStatistics = __decorate([vue_class_component_common_default()({
30333 components: {
30334 ShStatisticsItem: sh_statistics_ShStatisticsItem
30335 }
30336})], ShStatisticsvue_type_script_lang_ts_ShStatistics);
30337/* harmony default export */ var ShStatisticsvue_type_script_lang_ts_ = (ShStatisticsvue_type_script_lang_ts_ShStatistics);
30338// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatistics.vue?vue&type=script&lang=ts&
30339 /* harmony default export */ var sh_statistics_ShStatisticsvue_type_script_lang_ts_ = (ShStatisticsvue_type_script_lang_ts_);
30340// EXTERNAL MODULE: ./src/components/sh-statistics/ShStatistics.vue?vue&type=style&index=0&lang=scss&
30341var ShStatisticsvue_type_style_index_0_lang_scss_ = __webpack_require__("ca04");
30342
30343// CONCATENATED MODULE: ./src/components/sh-statistics/ShStatistics.vue
30344
30345
30346
30347
30348
30349
30350/* normalize component */
30351
30352var ShStatistics_component = normalizeComponent(
30353 sh_statistics_ShStatisticsvue_type_script_lang_ts_,
30354 ShStatisticsvue_type_template_id_2d953130_render,
30355 ShStatisticsvue_type_template_id_2d953130_staticRenderFns,
30356 false,
30357 null,
30358 null,
30359 null
30360
30361)
30362
30363ShStatistics_component.options.__file = "ShStatistics.vue"
30364/* harmony default export */ var sh_statistics_ShStatistics = (ShStatistics_component.exports);
30365// CONCATENATED MODULE: ./src/components/sh-statistics/index.ts
30366
30367
30368
30369// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-input/ShInput.vue?vue&type=template&id=3e652982&
30370var ShInputvue_type_template_id_3e652982_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-input-wrapper",class:[_vm.classes]},[(_vm.inputPrefix !== '' || _vm.$slots.prefix)?_c('span',{staticClass:"sh-input-prefix"},[(_vm.$slots.prefix)?_vm._t("prefix"):_vm._e(),(_vm.inputPrefix !== '')?_c('span',[_vm._v(_vm._s(_vm.inputPrefix))]):_vm._e()],2):_vm._e(),_c('input',_vm._b({ref:"input",staticClass:"sh-input",class:{'sh-input-with-inner-button': _vm.inputButtonContent},attrs:{"name":_vm.inputName,"type":_vm.inputType,"disabled":_vm.disabled,"readonly":_vm.isReadonly,"placeholder":_vm.inputPlaceholder},domProps:{"value":_vm.newValue},on:{"input":_vm.onInput,"change":_vm.onChange,"focus":_vm.onFocus,"blur":_vm.onBlur,"keypress":_vm.onKeypress,"keyup":_vm.onKeyup,"keydown":_vm.submitOnKey}},'input',_vm.$attrs,false)),(_vm.inputButtonContent)?_c('ShButton',{staticClass:"sh-input-inner-button",attrs:{"buttonContent":_vm.inputButtonContent,"buttonColor":_vm.newValue === '' ? 'clear-gray' : 'clear-blue',"buttonDisabled":_vm.newValue === '' ? true : false,"buttonSize":"small"},on:{"click":_vm.submit}}):_vm._e(),(_vm.inputSuffix !== '')?_c('span',{staticClass:"sh-input-suffix"},[_vm._v("\n "+_vm._s(_vm.inputSuffix)+"\n ")]):_vm._e()],1)}
30371var ShInputvue_type_template_id_3e652982_staticRenderFns = []
30372
30373
30374// CONCATENATED MODULE: ./src/components/sh-input/ShInput.vue?vue&type=template&id=3e652982&
30375
30376// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-input/ShInput.vue?vue&type=script&lang=ts&
30377
30378
30379
30380
30381
30382
30383
30384
30385
30386
30387
30388var ShInputvue_type_script_lang_ts_ShInput =
30389/*#__PURE__*/
30390function (_Vue) {
30391 _inherits(ShInput, _Vue);
30392
30393 function ShInput() {
30394 var _this;
30395
30396 _classCallCheck(this, ShInput);
30397
30398 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShInput).apply(this, arguments));
30399 _this.newValue = _this.value;
30400 _this.oldValue = _this.value;
30401 _this.get = '';
30402 _this.sizeTypes = {
30403 large: 'sh-input-large'
30404 };
30405 return _this;
30406 }
30407
30408 _createClass(ShInput, [{
30409 key: "focus",
30410 value: function focus() {
30411 this.$refs.input.focus();
30412 }
30413 }, {
30414 key: "onInput",
30415 value: function onInput(event) {
30416 var value = event.target.value;
30417 this.newValue = value;
30418 this.$emit('input', this.newValue);
30419 }
30420 }, {
30421 key: "onChange",
30422 value: function onChange(event) {
30423 var value = event.target.value;
30424 this.newValue = value;
30425 this.$emit('change', this.newValue);
30426 }
30427 }, {
30428 key: "valueChange",
30429 value: function valueChange(newVal, oldVal) {
30430 this.newValue = newVal;
30431 this.oldValue = oldVal;
30432 }
30433 }, {
30434 key: "onFocus",
30435 value: function onFocus() {
30436 this.$emit('focus');
30437 }
30438 }, {
30439 key: "onBlur",
30440 value: function onBlur(event) {
30441 this.$emit('blur', event);
30442 }
30443 }, {
30444 key: "onKeypress",
30445 value: function onKeypress($event) {
30446 this.$emit('keypress', $event);
30447 }
30448 }, {
30449 key: "onKeyup",
30450 value: function onKeyup($event) {
30451 this.$emit('keyup', $event);
30452 }
30453 }, {
30454 key: "submit",
30455 value: function submit(data) {
30456 this.$emit('submit', this.newValue);
30457 }
30458 }, {
30459 key: "submitOnKey",
30460 value: function submitOnKey(data) {
30461 if (this.submitOnKeyup && (data.keyCode === 13 || data.keyCode === 188 || data.keyCode === 9)) {
30462 this.$emit('submit', this.newValue);
30463 }
30464 }
30465 }, {
30466 key: "classes",
30467 get: function get() {
30468 return _defineProperty({
30469 'sh-input-with-prefix': this.inputPrefix !== '' || this.$slots.prefix,
30470 'sh-input-with-suffix': this.inputSuffix !== ''
30471 }, this.sizeTypes[this.inputSize], this.inputSize);
30472 }
30473 }]);
30474
30475 return ShInput;
30476}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30477
30478__decorate([Prop({
30479 default: 'text'
30480}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputType", void 0);
30481
30482__decorate([Prop({
30483 required: true
30484}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputName", void 0);
30485
30486__decorate([Prop({
30487 default: false
30488}), __metadata("design:type", Boolean)], ShInputvue_type_script_lang_ts_ShInput.prototype, "disabled", void 0);
30489
30490__decorate([Prop({
30491 default: false
30492}), __metadata("design:type", Boolean)], ShInputvue_type_script_lang_ts_ShInput.prototype, "isReadonly", void 0);
30493
30494__decorate([Prop({
30495 default: false
30496}), __metadata("design:type", Boolean)], ShInputvue_type_script_lang_ts_ShInput.prototype, "submitOnKeyup", void 0);
30497
30498__decorate([Prop({
30499 default: ''
30500}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputPrefix", void 0);
30501
30502__decorate([Prop({
30503 default: ''
30504}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputSuffix", void 0);
30505
30506__decorate([Prop({
30507 default: ''
30508}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputPlaceholder", void 0);
30509
30510__decorate([Prop({
30511 default: ''
30512}), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputButtonContent", void 0);
30513
30514__decorate([Prop(), __metadata("design:type", String)], ShInputvue_type_script_lang_ts_ShInput.prototype, "inputSize", void 0);
30515
30516__decorate([Prop(), __metadata("design:type", Object)], ShInputvue_type_script_lang_ts_ShInput.prototype, "value", void 0);
30517
30518__decorate([Watch('value'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", void 0)], ShInputvue_type_script_lang_ts_ShInput.prototype, "valueChange", null);
30519
30520ShInputvue_type_script_lang_ts_ShInput = __decorate([vue_class_component_common_default()({
30521 components: {
30522 ShButton: sh_button_ShButton
30523 },
30524 $_veeValidate: {
30525 value: function value() {
30526 var component = this;
30527 return component.value;
30528 },
30529 name: function name() {
30530 var component = this;
30531 return component.inputName;
30532 }
30533 }
30534})], ShInputvue_type_script_lang_ts_ShInput);
30535/* harmony default export */ var ShInputvue_type_script_lang_ts_ = (ShInputvue_type_script_lang_ts_ShInput);
30536// CONCATENATED MODULE: ./src/components/sh-input/ShInput.vue?vue&type=script&lang=ts&
30537 /* harmony default export */ var sh_input_ShInputvue_type_script_lang_ts_ = (ShInputvue_type_script_lang_ts_);
30538// EXTERNAL MODULE: ./src/components/sh-input/ShInput.vue?vue&type=style&index=0&lang=scss&
30539var ShInputvue_type_style_index_0_lang_scss_ = __webpack_require__("cb5a");
30540
30541// CONCATENATED MODULE: ./src/components/sh-input/ShInput.vue
30542
30543
30544
30545
30546
30547
30548/* normalize component */
30549
30550var ShInput_component = normalizeComponent(
30551 sh_input_ShInputvue_type_script_lang_ts_,
30552 ShInputvue_type_template_id_3e652982_render,
30553 ShInputvue_type_template_id_3e652982_staticRenderFns,
30554 false,
30555 null,
30556 null,
30557 null
30558
30559)
30560
30561ShInput_component.options.__file = "ShInput.vue"
30562/* harmony default export */ var sh_input_ShInput = (ShInput_component.exports);
30563// CONCATENATED MODULE: ./src/components/sh-input/index.ts
30564
30565/* harmony default export */ var sh_input = (sh_input_ShInput);
30566// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/assign.js
30567var object_assign = __webpack_require__("5176");
30568var assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);
30569
30570// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-modal/ShModal.vue?vue&type=template&id=c1069ee0&
30571var ShModalvue_type_template_id_c1069ee0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":_vm.animation}},[(_vm.isActive)?_c('div',{staticClass:"sh-modal is-active",on:{"click":function($event){_vm.modalClick($event)}}},[_c('div',{staticClass:"animation-content",class:{ 'sh-modal-content': !_vm.hasModalCard },style:({ width: _vm.newWidth })},[(_vm.component)?_c(_vm.component,_vm._g(_vm._b({tag:"component",on:{"close":_vm.close}},'component',_vm.props,false),_vm.events)):(_vm.hasModalCard)?_c('div',{staticClass:"sh-modal-card"},[(_vm.showClose)?_c('ShButton',{staticClass:"sh-modal-close",class:{'sh-modal-close-header': _vm.modalCardHeader && _vm.modalCardHeader},attrs:{"buttonColor":"clear-gray","buttonIcon":"sh-icon-close-small","isIcon":"true"},on:{"click":function($event){_vm.cancel('x')}}}):_vm._e(),(_vm.modalCardHeader)?_c('header',{staticClass:"sh-modal-card-head"},[(_vm.modalCardHeaderIcon)?_c('img',{attrs:{"src":"https://shoplo.com/img/admin/modals/store.svg"}}):_vm._e(),_c('h2',{staticClass:"sh-modal-card-title",class:_vm.showClose ? '' : 'is-paddingless'},[_vm._v(_vm._s(_vm.modalCardHeader))])]):_vm._e(),(_vm.content)?_c('div',{staticClass:"sh-modal-card-body",domProps:{"innerHTML":_vm._s(_vm.content)}}):_c('div',{staticClass:"sh-modal-card-body",class:{'sh-modal-card-body-columns': _vm.modalCardColumns}},[_vm._t("default")],2),(_vm.modalCardConfirm || _vm.modalCardCancel)?_c('footer',{staticClass:"sh-modal-card-foot-clear"},[_c('ShButtonGroup',{attrs:{"align":"right"}},[(_vm.modalCardCancel)?_c('ShButton',{staticClass:"sh-modal-cancel-button",attrs:{"buttonColor":"clear-white","buttonContent":_vm.modalCardCancel},on:{"click":function($event){_vm.cancel('button')}}}):_vm._e(),(_vm.modalCardConfirm)?_c('ShButton',{staticClass:"sh-modal-confirm-button",attrs:{"buttonContent":_vm.modalCardConfirm,"buttonColor":"primary","isDisabled":_vm.confirmDisabled},on:{"click":function($event){_vm.confirm()}}}):_vm._e()],1)],1):_vm._e()],1):(!_vm.hasModalCard && !_vm.content)?_vm._t("default"):_vm._e()],2)]):_vm._e()])}
30572var ShModalvue_type_template_id_c1069ee0_staticRenderFns = []
30573
30574
30575// CONCATENATED MODULE: ./src/components/sh-modal/ShModal.vue?vue&type=template&id=c1069ee0&
30576
30577// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.split.js
30578var es6_regexp_split = __webpack_require__("28a5");
30579
30580// CONCATENATED MODULE: ./src/helpers/Helpers.ts
30581
30582
30583/**
30584 * Get value of an object property/path even if it's nested
30585 */
30586function getValueByPath(obj, path) {
30587 var value = path.split('.').reduce(function (o, i) {
30588 return o[i];
30589 }, obj);
30590 return value;
30591}
30592/**
30593 * Extension of indexOf method by equality function if specified
30594 */
30595
30596function indexOf(array, obj, fn) {
30597 if (!array) {
30598 return -1;
30599 }
30600
30601 if (!fn || typeof fn !== 'function') {
30602 return array.indexOf(obj);
30603 }
30604
30605 for (var i = 0; i < array.length; i++) {
30606 if (fn(array[i], obj)) {
30607 return i;
30608 }
30609 }
30610
30611 return -1;
30612}
30613function removeElement(el) {
30614 if (typeof el.remove !== 'undefined') {
30615 el.remove();
30616 } else {
30617 el.parentNode.removeChild(el);
30618 }
30619}
30620// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-modal/ShModal.vue?vue&type=script&lang=ts&
30621
30622
30623
30624
30625
30626
30627
30628
30629
30630
30631
30632
30633var ShModalvue_type_script_lang_ts_ShModal =
30634/*#__PURE__*/
30635function (_Vue) {
30636 _inherits(ShModal, _Vue);
30637
30638 function ShModal() {
30639 var _this;
30640
30641 _classCallCheck(this, ShModal);
30642
30643 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShModal).apply(this, arguments));
30644 _this.confirmDisabled = false;
30645 _this.isActive = _this.active || false;
30646 _this.savedScrollTop = null;
30647 return _this;
30648 }
30649
30650 _createClass(ShModal, [{
30651 key: "activeChange",
30652 value: function activeChange(value) {
30653 this.isActive = value;
30654 }
30655 }, {
30656 key: "isActiveChange",
30657 value: function isActiveChange() {
30658 document.activeElement.blur();
30659 this.handleScroll();
30660 }
30661 }, {
30662 key: "modalClick",
30663 value: function modalClick(e) {
30664 if (e.target.className === 'sh-modal is-active') {
30665 this.cancel('outside');
30666 }
30667 }
30668 }, {
30669 key: "confirm",
30670 value: function confirm() {
30671 this.confirmDisabled = true;
30672 this.onConfirm();
30673 this.$emit('confirm');
30674 this.close();
30675 }
30676 }, {
30677 key: "handleScroll",
30678 value: function handleScroll() {
30679 if (typeof window === 'undefined') {
30680 return;
30681 }
30682
30683 if (this.scroll === 'clip') {
30684 document.documentElement.classList.toggle('is-clipped', this.isActive);
30685 return;
30686 }
30687
30688 this.savedScrollTop = !this.savedScrollTop ? document.documentElement.scrollTop : this.savedScrollTop;
30689 document.body.classList.toggle('is-noscroll', this.isActive);
30690
30691 if (this.isActive) {
30692 document.body.style.top = "-".concat(this.savedScrollTop, "px");
30693 return;
30694 }
30695
30696 document.documentElement.scrollTop = this.savedScrollTop;
30697 document.body.style.top = null;
30698 this.savedScrollTop = null;
30699 }
30700 /**
30701 * Close the Modal if canCancel and call the onCancel prop (function).
30702 */
30703
30704 }, {
30705 key: "cancel",
30706 value: function cancel(method) {
30707 if (this.cancelOptions.indexOf(method) < 0) {
30708 return;
30709 }
30710
30711 this.onCancel.apply(null, arguments);
30712 this.close();
30713 }
30714 /**
30715 * Call the onCancel prop (function).
30716 * Emit events, and destroy modal if it's programmatic.
30717 */
30718
30719 }, {
30720 key: "close",
30721 value: function close() {
30722 var _this2 = this;
30723
30724 this.$emit('close');
30725 this.$emit('update:active', false);
30726 this.confirmDisabled = false; // Timeout for the animation complete before destroying
30727
30728 if (this.programmatic) {
30729 this.isActive = false;
30730 setTimeout(function () {
30731 _this2.$destroy();
30732
30733 removeElement(_this2.$el);
30734 }, 150);
30735 }
30736 }
30737 /**
30738 * Keypress event that is bound to the document.
30739 */
30740
30741 }, {
30742 key: "keyPress",
30743 value: function keyPress(event) {
30744 // Esc key
30745 if (this.isActive && event.keyCode === 27) {
30746 this.cancel('escape');
30747 }
30748 }
30749 }, {
30750 key: "created",
30751 value: function created() {
30752 if (typeof window !== 'undefined') {
30753 document.addEventListener('keyup', this.keyPress);
30754 }
30755 }
30756 }, {
30757 key: "beforeMount",
30758 value: function beforeMount() {
30759 if (this.programmatic) {
30760 document.body.appendChild(this.$el);
30761 }
30762 }
30763 }, {
30764 key: "mounted",
30765 value: function mounted() {
30766 if (this.programmatic) {
30767 this.isActive = true;
30768 } else if (this.isActive) {
30769 this.handleScroll();
30770 }
30771 }
30772 }, {
30773 key: "beforeDestroy",
30774 value: function beforeDestroy() {
30775 if (typeof window !== 'undefined') {
30776 document.removeEventListener('keyup', this.keyPress); // reset scroll
30777
30778 document.documentElement.classList.toggle('is-clipped', false);
30779 var savedScrollTop = !this.savedScrollTop ? document.documentElement.scrollTop : this.savedScrollTop;
30780 document.body.classList.toggle('is-noscroll', false);
30781 document.documentElement.scrollTop = savedScrollTop;
30782 document.body.style.top = null;
30783 }
30784 }
30785 }, {
30786 key: "newWidth",
30787 get: function get() {
30788 return typeof this.width === 'number' ? this.width + 'px' : this.width;
30789 }
30790 }, {
30791 key: "cancelOptions",
30792 get: function get() {
30793 return typeof this.canCancel === 'boolean' ? this.canCancel ? ['escape', 'x', 'outside', 'button'] : [] : this.canCancel;
30794 }
30795 }, {
30796 key: "showX",
30797 get: function get() {
30798 return this.cancelOptions.indexOf('x') >= 0;
30799 }
30800 }]);
30801
30802 return ShModal;
30803}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
30804
30805__decorate([Prop({
30806 default: 'zoom-out'
30807}), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "animation", void 0);
30808
30809__decorate([Prop(), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "active", void 0);
30810
30811__decorate([Prop(), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "component", void 0);
30812
30813__decorate([Prop(), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "content", void 0);
30814
30815__decorate([Prop(), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "programmatic", void 0);
30816
30817__decorate([Prop(), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "props", void 0);
30818
30819__decorate([Prop(), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "events", void 0);
30820
30821__decorate([Prop({
30822 default: 640
30823}), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "width", void 0);
30824
30825__decorate([Prop({
30826 default: true
30827}), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "hasModalCard", void 0);
30828
30829__decorate([Prop(), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "modalCardHeader", void 0);
30830
30831__decorate([Prop({
30832 default: true
30833}), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "modalCardHeaderIcon", void 0);
30834
30835__decorate([Prop({
30836 default: true
30837}), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "showClose", void 0);
30838
30839__decorate([Prop({
30840 default: function _default() {
30841 return function () {
30842 return;
30843 };
30844 }
30845}), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "onConfirm", void 0);
30846
30847__decorate([Prop(), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "modalCardConfirm", void 0);
30848
30849__decorate([Prop(), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "modalCardCancel", void 0);
30850
30851__decorate([Prop({
30852 default: false
30853}), __metadata("design:type", Boolean)], ShModalvue_type_script_lang_ts_ShModal.prototype, "modalCardColumns", void 0);
30854
30855__decorate([Prop({
30856 default: function _default() {
30857 return ['escape', 'x', 'outside', 'button'];
30858 }
30859}), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "canCancel", void 0);
30860
30861__decorate([Prop({
30862 default: function _default() {
30863 return function () {
30864 return;
30865 };
30866 }
30867}), __metadata("design:type", Object)], ShModalvue_type_script_lang_ts_ShModal.prototype, "onCancel", void 0);
30868
30869__decorate([Prop({
30870 default: function _default() {
30871 return 'clip';
30872 },
30873 validator: function validator(value) {
30874 return ['clip', 'keep'].indexOf(value) >= 0;
30875 }
30876}), __metadata("design:type", String)], ShModalvue_type_script_lang_ts_ShModal.prototype, "scroll", void 0);
30877
30878__decorate([Watch('active'), __metadata("design:type", Function), __metadata("design:paramtypes", [Boolean]), __metadata("design:returntype", void 0)], ShModalvue_type_script_lang_ts_ShModal.prototype, "activeChange", null);
30879
30880__decorate([Watch('isActive'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], ShModalvue_type_script_lang_ts_ShModal.prototype, "isActiveChange", null);
30881
30882ShModalvue_type_script_lang_ts_ShModal = __decorate([vue_class_component_common_default()({
30883 components: {
30884 ShButton: sh_button_ShButton,
30885 ShButtonGroup: sh_button_ShButtonGroup
30886 }
30887})], ShModalvue_type_script_lang_ts_ShModal);
30888/* harmony default export */ var ShModalvue_type_script_lang_ts_ = (ShModalvue_type_script_lang_ts_ShModal);
30889// CONCATENATED MODULE: ./src/components/sh-modal/ShModal.vue?vue&type=script&lang=ts&
30890 /* harmony default export */ var sh_modal_ShModalvue_type_script_lang_ts_ = (ShModalvue_type_script_lang_ts_);
30891// EXTERNAL MODULE: ./src/components/sh-modal/ShModal.vue?vue&type=style&index=0&lang=scss&
30892var ShModalvue_type_style_index_0_lang_scss_ = __webpack_require__("81e1");
30893
30894// CONCATENATED MODULE: ./src/components/sh-modal/ShModal.vue
30895
30896
30897
30898
30899
30900
30901/* normalize component */
30902
30903var ShModal_component = normalizeComponent(
30904 sh_modal_ShModalvue_type_script_lang_ts_,
30905 ShModalvue_type_template_id_c1069ee0_render,
30906 ShModalvue_type_template_id_c1069ee0_staticRenderFns,
30907 false,
30908 null,
30909 null,
30910 null
30911
30912)
30913
30914ShModal_component.options.__file = "ShModal.vue"
30915/* harmony default export */ var sh_modal_ShModal = (ShModal_component.exports);
30916// CONCATENATED MODULE: ./src/components/sh-modal/index.ts
30917
30918
30919
30920
30921/* harmony default export */ var sh_modal = ({
30922 open: function open(params) {
30923 var content;
30924 var parent;
30925
30926 if (typeof params === 'string') {
30927 content = params;
30928 }
30929
30930 var defaultParam = {
30931 programmatic: true,
30932 content: content
30933 };
30934
30935 if (params.parent) {
30936 parent = params.parent;
30937 delete params.parent;
30938 }
30939
30940 var propsData = assign_default()(defaultParam, params);
30941
30942 var ModalComponent = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend(sh_modal_ShModal);
30943 return new ModalComponent({
30944 parent: parent,
30945 el: document.createElement('div'),
30946 propsData: propsData
30947 });
30948 }
30949});
30950// CONCATENATED MODULE: ./src/components/sh-dialog/index.ts
30951
30952
30953/* harmony default export */ var sh_dialog = ({
30954 alert: function alert(params) {
30955 var content;
30956
30957 if (typeof params === 'string') {
30958 content = params;
30959 }
30960
30961 var defaultParam = {
30962 canCancel: false,
30963 showClose: false,
30964 width: 400,
30965 modalCardHeader: 'Alert',
30966 modalCardConfirm: 'OK'
30967 };
30968
30969 var propsData = assign_default()(defaultParam, params);
30970
30971 sh_modal.open(propsData);
30972 },
30973 confirm: function confirm(params) {
30974 var defaultParam = {
30975 width: 400,
30976 modalCardCancel: 'Cancel',
30977 modalCardConfirm: 'Confirm',
30978 modalCardHeader: 'Confirmation'
30979 };
30980
30981 var propsData = assign_default()(defaultParam, params);
30982
30983 sh_modal.open(propsData);
30984 }
30985});
30986// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-image/ShImage.vue?vue&type=template&id=006ff448&
30987var ShImagevue_type_template_id_006ff448_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-image",class:'sh-thumb-' + _vm.imageSize},[(_vm.$slots.dropdown)?_c('span',{staticClass:"sh-image-dropup"},[_vm._t("dropdown")],2):_vm._e(),(_vm.imageDraggable)?_c('ShButton',{staticClass:"sh-image-handle",attrs:{"isIcon":true,"buttonSize":"icon-drag-drop","buttonIcon":"sh-icon-drag-n-dop","buttonColor":"icon-outline-blue"}}):_vm._e(),(_vm.imageSrc)?_c('img',{attrs:{"src":_vm.imageSrc,"alt":_vm.imageAlt}}):_vm._e()],1)}
30988var ShImagevue_type_template_id_006ff448_staticRenderFns = []
30989
30990
30991// CONCATENATED MODULE: ./src/components/sh-image/ShImage.vue?vue&type=template&id=006ff448&
30992
30993// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-image/ShImage.vue?vue&type=script&lang=ts&
30994
30995
30996
30997
30998
30999
31000
31001
31002var ShImagevue_type_script_lang_ts_ShImage =
31003/*#__PURE__*/
31004function (_Vue) {
31005 _inherits(ShImage, _Vue);
31006
31007 function ShImage() {
31008 _classCallCheck(this, ShImage);
31009
31010 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShImage).apply(this, arguments));
31011 }
31012
31013 return ShImage;
31014}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
31015
31016__decorate([Prop({
31017 default: ''
31018}), __metadata("design:type", String)], ShImagevue_type_script_lang_ts_ShImage.prototype, "imageSrc", void 0);
31019
31020__decorate([Prop({
31021 default: ''
31022}), __metadata("design:type", String)], ShImagevue_type_script_lang_ts_ShImage.prototype, "imageAlt", void 0);
31023
31024__decorate([Prop({
31025 default: '100'
31026}), __metadata("design:type", String)], ShImagevue_type_script_lang_ts_ShImage.prototype, "imageSize", void 0);
31027
31028__decorate([Prop({
31029 default: false
31030}), __metadata("design:type", Boolean)], ShImagevue_type_script_lang_ts_ShImage.prototype, "imageDraggable", void 0);
31031
31032ShImagevue_type_script_lang_ts_ShImage = __decorate([vue_class_component_common_default()({
31033 components: {
31034 ShButton: sh_button_ShButton
31035 }
31036})], ShImagevue_type_script_lang_ts_ShImage);
31037/* harmony default export */ var ShImagevue_type_script_lang_ts_ = (ShImagevue_type_script_lang_ts_ShImage);
31038// CONCATENATED MODULE: ./src/components/sh-image/ShImage.vue?vue&type=script&lang=ts&
31039 /* harmony default export */ var sh_image_ShImagevue_type_script_lang_ts_ = (ShImagevue_type_script_lang_ts_);
31040// EXTERNAL MODULE: ./src/components/sh-image/ShImage.vue?vue&type=style&index=0&lang=scss&
31041var ShImagevue_type_style_index_0_lang_scss_ = __webpack_require__("f701");
31042
31043// CONCATENATED MODULE: ./src/components/sh-image/ShImage.vue
31044
31045
31046
31047
31048
31049
31050/* normalize component */
31051
31052var ShImage_component = normalizeComponent(
31053 sh_image_ShImagevue_type_script_lang_ts_,
31054 ShImagevue_type_template_id_006ff448_render,
31055 ShImagevue_type_template_id_006ff448_staticRenderFns,
31056 false,
31057 null,
31058 null,
31059 null
31060
31061)
31062
31063ShImage_component.options.__file = "ShImage.vue"
31064/* harmony default export */ var sh_image_ShImage = (ShImage_component.exports);
31065// CONCATENATED MODULE: ./src/components/sh-image/index.ts
31066
31067/* harmony default export */ var sh_image = (sh_image_ShImage);
31068// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-table/ShTable.vue?vue&type=template&id=26261aa6&
31069var ShTablevue_type_template_id_26261aa6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-table",class:{ 'is-loading': _vm.loading }},[_c('div',{staticClass:"table-wrapper"},[_c('table',{class:_vm.tableClasses,attrs:{"tabindex":!_vm.focusable ? false : 0},on:{"keydown":[function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();_vm.pressedArrow(-1)},function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();_vm.pressedArrow(1)}]}},[(_vm.newColumns.length)?_c('thead',[_c('tr',[(_vm.checkable)?_c('th',{staticClass:"checkbox-cell"},[_c('ShCheckbox',{staticClass:"sh-table-select-all-checkbox",attrs:{"checkboxTrueValue":true,"checkboxFalseValue":false,"value":_vm.isAllChecked},on:{"change":_vm.checkAll}})],1):_vm._e(),_vm._l((_vm.newColumns),function(column,index){return (column.visible || column.visible === undefined)?_c('th',{key:index,staticClass:"sh-table-thead-th",class:{
31070 'is-current-sort': _vm.currentSortColumn === column,
31071 'is-sortable': column.sortable,
31072 'is-centered': column.align === 'center',
31073 'is-right': column.align === 'right',
31074 },style:({ width: column.width + 'px' })},[_c('div',{staticClass:"th-wrap",class:{
31075 'is-numeric': column.numeric,
31076 'is-desc': !_vm.isAsc
31077 },on:{"click":function($event){_vm.sort(column)}}},[(_vm.$scopedSlots.header)?_vm._t("header",null,{column:column,index:index}):[_vm._v(_vm._s(column.label))]],2)]):_vm._e()}),(_vm.draggable)?_c('th',{staticClass:"sh-table-thead-th-drag"},[(_vm.draggableTable)?_c('ShIcon',{staticClass:"sh-table-row-handle-table",attrs:{"iconName":"sh-icon-drag-n-drop"}}):_vm._e()],1):_vm._e()],2)]):_vm._e(),(_vm.visibleData.length)?_c('Wrapper',{attrs:{"draggable":_vm.draggable}},[_vm._l((_vm.visibleData),function(row,index){return [_c('tr',{key:index,class:[_vm.rowClass(row, index)],on:{"click":function($event){_vm.selectRow(row)},"dblclick":function($event){_vm.$emit('dblclick', row)}}},[(_vm.checkable)?_c('td',{staticClass:"checkbox-cell"},[_c('ShCheckbox',{attrs:{"checkboxTrueValue":true,"checkboxFalseValue":false,"disabled":!_vm.isRowCheckable(row),"value":_vm.isRowChecked(row)},on:{"change":function($event){_vm.checkRow(row)}}})],1):_vm._e(),(_vm.$scopedSlots.default)?_vm._t("default",null,{row:row,index:index}):_vm._l((_vm.newColumns),function(column){return _c('ShTableColumn',_vm._b({key:column.field,attrs:{"internal":""}},'ShTableColumn',column,false),[(column.renderHtml)?void 0:[_vm._v("\n "+_vm._s(_vm.getValueByPath(row, column.field))+"\n ")]],2)}),(_vm.draggable)?_c('td',{staticClass:"sh-table-drag"},[_c('ShIcon',{staticClass:"sh-table-row-handle",attrs:{"iconName":"sh-icon-drag-n-drop"}})],1):_vm._e()],2),(_vm.detailed && _vm.isVisibleDetailRow(row))?_c('tr',{staticClass:"detail"},[_c('td',{attrs:{"colspan":_vm.columnCount}},[_c('div',{staticClass:"detail-container"},[(_vm.checkableAdditionalRows && _vm.additionalRowsKey && row[_vm.additionalRowsKey].length)?_c('table',[_c('tbody',[_vm._l((row[_vm.additionalRowsKey]),function(additionalRow,rowIndex){return [_c('tr',{key:rowIndex,staticClass:"children",class:[_vm.rowClass(additionalRow, rowIndex)]},[_c('td',{staticClass:"checkbox-cell"},[_c('ShCheckbox',{attrs:{"checkboxTrueValue":true,"checkboxFalseValue":false,"value":_vm.isAdditionalRowChecked(additionalRow)},on:{"change":function($event){_vm.checkAdditionalRow(additionalRow)}}})],1),_vm._t("additionalRow",null,{row:additionalRow,index:rowIndex})],2)]})],2)]):_vm._t("detail",null,{row:row,index:index})],2)])]):_vm._e()]})],2):_c('tbody',[(!_vm.visibleData.length && !_vm.loading)?_c('tr',{staticClass:"is-empty"},[_c('td',{attrs:{"colspan":_vm.columnCount}},[(_vm.$slots.empty !== undefined)?_vm._t("empty"):_c('div',[_c('div',{staticClass:"sh-empty-table"},[_c('img',{attrs:{"src":"https://shoplo.com/img/admin/blankslate/blankslate_no_results.svg"}}),_c('h5',[_vm._v(_vm._s(_vm.$t('lang_lib.default.global.no_have_any_data_to_display')))])])])],2)]):_vm._e()]),(_vm.$slots.footer !== undefined)?_c('tfoot',[_c('tr',{staticClass:"table-footer"},[(_vm.hasCustomFooterSlot())?_vm._t("footer"):_c('th',{attrs:{"colspan":_vm.columnCount}},[_vm._t("footer")],2)],2)]):_vm._e()],1)]),_c('ShPaginationList',{directives:[{name:"show",rawName:"v-show",value:(_vm.newData.length && _vm.paginated),expression:"newData.length && paginated"}],attrs:{"total":_vm.newDataTotal,"limit":_vm.perPage,"count":_vm.count,"current":_vm.currentPage},on:{"paginate":_vm.paginate}})],1)}
31078var ShTablevue_type_template_id_26261aa6_staticRenderFns = []
31079
31080
31081// CONCATENATED MODULE: ./src/components/sh-table/ShTable.vue?vue&type=template&id=26261aa6&
31082
31083// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js
31084var es6_number_constructor = __webpack_require__("c5f6");
31085
31086// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.to-string.js
31087var es6_regexp_to_string = __webpack_require__("6b54");
31088
31089// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/parse-int.js
31090var parse_int = __webpack_require__("e814");
31091var parse_int_default = /*#__PURE__*/__webpack_require__.n(parse_int);
31092
31093// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js
31094var is_array = __webpack_require__("a745");
31095var is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);
31096
31097// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/get-iterator.js
31098var get_iterator = __webpack_require__("5d73");
31099var get_iterator_default = /*#__PURE__*/__webpack_require__.n(get_iterator);
31100
31101// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.sort.js
31102var es6_array_sort = __webpack_require__("55dd");
31103
31104// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js
31105
31106function _arrayWithoutHoles(arr) {
31107 if (is_array_default()(arr)) {
31108 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
31109 arr2[i] = arr[i];
31110 }
31111
31112 return arr2;
31113 }
31114}
31115// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/from.js
31116var from = __webpack_require__("774e");
31117var from_default = /*#__PURE__*/__webpack_require__.n(from);
31118
31119// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js
31120var is_iterable = __webpack_require__("c8bb");
31121var is_iterable_default = /*#__PURE__*/__webpack_require__.n(is_iterable);
31122
31123// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js
31124
31125
31126function _iterableToArray(iter) {
31127 if (is_iterable_default()(Object(iter)) || Object.prototype.toString.call(iter) === "[object Arguments]") return from_default()(iter);
31128}
31129// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js
31130function _nonIterableSpread() {
31131 throw new TypeError("Invalid attempt to spread non-iterable instance");
31132}
31133// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js
31134
31135
31136
31137function _toConsumableArray(arr) {
31138 return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
31139}
31140// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-table/ShTableColumn.vue?vue&type=template&id=213a21c8&
31141var ShTableColumnvue_type_template_id_213a21c8_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('td',{class:_vm.classes,attrs:{"data-label":_vm.label}},[_c('div',[_vm._t("default")],2)]):_vm._e()}
31142var ShTableColumnvue_type_template_id_213a21c8_staticRenderFns = []
31143
31144
31145// CONCATENATED MODULE: ./src/components/sh-table/ShTableColumn.vue?vue&type=template&id=213a21c8&
31146
31147// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-table/ShTableColumn.vue?vue&type=script&lang=ts&
31148
31149
31150
31151
31152
31153
31154
31155
31156
31157var ShTableColumnvue_type_script_lang_ts_ShTableColumn =
31158/*#__PURE__*/
31159function (_Vue) {
31160 _inherits(ShTableColumn, _Vue);
31161
31162 function ShTableColumn() {
31163 var _this;
31164
31165 _classCallCheck(this, ShTableColumn);
31166
31167 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTableColumn).apply(this, arguments));
31168 _this.parent = _this.$parent;
31169 _this.newKey = _this.customKey || _this.label;
31170 return _this;
31171 }
31172
31173 _createClass(ShTableColumn, [{
31174 key: "created",
31175 value: function created() {
31176 var _this2 = this;
31177
31178 if (this.parent.element === 'tbody' && !this.parent.$parent.isColumnTable || this.parent.element !== 'tbody' && !this.parent.$data.isColumnTable) {
31179 this.$destroy();
31180 throw new Error('You should wrap ShTableColumn on a ShTable');
31181 }
31182
31183 if (this.internal) {
31184 return;
31185 }
31186
31187 if (this.field) {
31188 var parent = this.parent.element === 'tbody' ? this.parent.$parent : this.parent;
31189 var repeated = parent.columns.some(function (column) {
31190 return column.field === _this2.field;
31191 });
31192
31193 if (!repeated) {
31194 parent.columns.push(this);
31195 }
31196 }
31197 }
31198 }, {
31199 key: "classes",
31200 get: function get() {
31201 return {
31202 'has-text-right': this.align === 'right',
31203 'has-text-centered': this.align === 'center'
31204 };
31205 }
31206 }]);
31207
31208 return ShTableColumn;
31209}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
31210
31211__decorate([Prop(), __metadata("design:type", String)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "label", void 0);
31212
31213__decorate([Prop(), __metadata("design:type", Object)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "customKey", void 0);
31214
31215__decorate([Prop(), __metadata("design:type", String)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "field", void 0);
31216
31217__decorate([Prop(), __metadata("design:type", Object)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "width", void 0);
31218
31219__decorate([Prop(), __metadata("design:type", Boolean)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "numeric", void 0);
31220
31221__decorate([Prop({
31222 default: 'left'
31223}), __metadata("design:type", String)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "align", void 0);
31224
31225__decorate([Prop(), __metadata("design:type", Boolean)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "sortable", void 0);
31226
31227__decorate([Prop({
31228 default: true
31229}), __metadata("design:type", Boolean)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "visible", void 0);
31230
31231__decorate([Prop(), __metadata("design:type", Object)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "customSort", void 0);
31232
31233__decorate([Prop(), __metadata("design:type", Boolean)], ShTableColumnvue_type_script_lang_ts_ShTableColumn.prototype, "internal", void 0);
31234
31235ShTableColumnvue_type_script_lang_ts_ShTableColumn = __decorate([vue_class_component_common_default()({})], ShTableColumnvue_type_script_lang_ts_ShTableColumn);
31236/* harmony default export */ var ShTableColumnvue_type_script_lang_ts_ = (ShTableColumnvue_type_script_lang_ts_ShTableColumn);
31237// CONCATENATED MODULE: ./src/components/sh-table/ShTableColumn.vue?vue&type=script&lang=ts&
31238 /* harmony default export */ var sh_table_ShTableColumnvue_type_script_lang_ts_ = (ShTableColumnvue_type_script_lang_ts_);
31239// CONCATENATED MODULE: ./src/components/sh-table/ShTableColumn.vue
31240
31241
31242
31243
31244
31245/* normalize component */
31246
31247var ShTableColumn_component = normalizeComponent(
31248 sh_table_ShTableColumnvue_type_script_lang_ts_,
31249 ShTableColumnvue_type_template_id_213a21c8_render,
31250 ShTableColumnvue_type_template_id_213a21c8_staticRenderFns,
31251 false,
31252 null,
31253 null,
31254 null
31255
31256)
31257
31258ShTableColumn_component.options.__file = "ShTableColumn.vue"
31259/* harmony default export */ var sh_table_ShTableColumn = (ShTableColumn_component.exports);
31260// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-pagination-list/ShPaginationList.vue?vue&type=template&id=5e5804ab&
31261var ShPaginationListvue_type_template_id_5e5804ab_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.totalPages > 1)?_c('div',{staticClass:"vue-pagination align-right"},[_c('span',{staticClass:"vue-pagination-counter"},[_vm._v(_vm._s(_vm.firstInList)+"-"+_vm._s(_vm.lastInList)+"/"+_vm._s(_vm.total))]),_c('paginate',{attrs:{"page-count":_vm.totalPages,"click-handler":_vm.paginate,"next-class":'paginate-next',"prev-class":'paginate-prev',"prev-text":"<i class='sh-icon sh-icon-arrow-back'></i>","next-text":"<i class='sh-icon sh-icon-arrow-back'></i>","container-class":'pagination-pages'},model:{value:(_vm.selectedPage),callback:function ($$v) {_vm.selectedPage=$$v},expression:"selectedPage"}}),_c('ShInput',{staticClass:"sh-pagination-page-input",attrs:{"inputType":"number","inputName":"page","min":"1","max":_vm.totalPages},model:{value:(_vm.paramPage),callback:function ($$v) {_vm.paramPage=$$v},expression:"paramPage"}}),_c('ShButton',{staticClass:"sh-pagination-page-submit",attrs:{"id":"paginator-page-submit","buttonType":"button","buttonColor":"secondary","buttonSize":"small","buttonContent":_vm.$t('lang_lib.default.global.go')},on:{"click":_vm.goTo}})],1):_vm._e()}
31262var ShPaginationListvue_type_template_id_5e5804ab_staticRenderFns = []
31263
31264
31265// CONCATENATED MODULE: ./src/components/sh-pagination-list/ShPaginationList.vue?vue&type=template&id=5e5804ab&
31266
31267// EXTERNAL MODULE: ./node_modules/vuejs-paginate/dist/index.js
31268var dist = __webpack_require__("8832");
31269var dist_default = /*#__PURE__*/__webpack_require__.n(dist);
31270
31271// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-pagination-list/ShPaginationList.vue?vue&type=script&lang=ts&
31272
31273
31274
31275
31276
31277
31278
31279
31280
31281
31282
31283
31284var ShPaginationListvue_type_script_lang_ts_ShPaginationList =
31285/*#__PURE__*/
31286function (_Vue) {
31287 _inherits(ShPaginationList, _Vue);
31288
31289 function ShPaginationList() {
31290 var _this;
31291
31292 _classCallCheck(this, ShPaginationList);
31293
31294 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShPaginationList).apply(this, arguments));
31295 _this.selectedPage = _this.current;
31296 _this.paramPage = _this.selectedPage;
31297 return _this;
31298 }
31299
31300 _createClass(ShPaginationList, [{
31301 key: "paginate",
31302 value: function paginate(page) {
31303 this.selectedPage = page;
31304 this.paramPage = page;
31305 this.$emit('paginate', page);
31306 }
31307 }, {
31308 key: "goTo",
31309 value: function goTo() {
31310 var newPage = Number(this.paramPage);
31311
31312 if (newPage > this.totalPages) {
31313 this.selectedPage = this.totalPages;
31314 this.paramPage = this.totalPages;
31315 } else {
31316 this.selectedPage = newPage;
31317 }
31318
31319 this.$emit('paginate', this.selectedPage);
31320 }
31321 }, {
31322 key: "totalPages",
31323 get: function get() {
31324 var pages = (this.total - this.total % this.limit) / this.limit;
31325
31326 if (pages === 0) {
31327 pages = 1;
31328 } else if (this.total % this.limit > 0) {
31329 pages += 1;
31330 }
31331
31332 return pages;
31333 }
31334 }, {
31335 key: "firstInList",
31336 get: function get() {
31337 return (this.selectedPage - 1) * this.limit + 1;
31338 }
31339 }, {
31340 key: "lastInList",
31341 get: function get() {
31342 var last = this.selectedPage * this.limit;
31343 return last > this.total ? this.total : last;
31344 }
31345 }]);
31346
31347 return ShPaginationList;
31348}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
31349
31350__decorate([Prop(), __metadata("design:type", Number)], ShPaginationListvue_type_script_lang_ts_ShPaginationList.prototype, "count", void 0);
31351
31352__decorate([Prop(), __metadata("design:type", Number)], ShPaginationListvue_type_script_lang_ts_ShPaginationList.prototype, "total", void 0);
31353
31354__decorate([Prop(), __metadata("design:type", Number)], ShPaginationListvue_type_script_lang_ts_ShPaginationList.prototype, "current", void 0);
31355
31356__decorate([Prop(), __metadata("design:type", Number)], ShPaginationListvue_type_script_lang_ts_ShPaginationList.prototype, "limit", void 0);
31357
31358__decorate([Prop(), __metadata("design:type", Object)], ShPaginationListvue_type_script_lang_ts_ShPaginationList.prototype, "translations", void 0);
31359
31360ShPaginationListvue_type_script_lang_ts_ShPaginationList = __decorate([vue_class_component_common_default()({
31361 components: {
31362 paginate: dist_default.a,
31363 ShInput: sh_input_ShInput,
31364 ShButton: sh_button_ShButton
31365 }
31366})], ShPaginationListvue_type_script_lang_ts_ShPaginationList);
31367/* harmony default export */ var ShPaginationListvue_type_script_lang_ts_ = (ShPaginationListvue_type_script_lang_ts_ShPaginationList);
31368// CONCATENATED MODULE: ./src/components/sh-pagination-list/ShPaginationList.vue?vue&type=script&lang=ts&
31369 /* harmony default export */ var sh_pagination_list_ShPaginationListvue_type_script_lang_ts_ = (ShPaginationListvue_type_script_lang_ts_);
31370// EXTERNAL MODULE: ./src/components/sh-pagination-list/ShPaginationList.vue?vue&type=style&index=0&lang=scss&
31371var ShPaginationListvue_type_style_index_0_lang_scss_ = __webpack_require__("3d16");
31372
31373// CONCATENATED MODULE: ./src/components/sh-pagination-list/ShPaginationList.vue
31374
31375
31376
31377
31378
31379
31380/* normalize component */
31381
31382var ShPaginationList_component = normalizeComponent(
31383 sh_pagination_list_ShPaginationListvue_type_script_lang_ts_,
31384 ShPaginationListvue_type_template_id_5e5804ab_render,
31385 ShPaginationListvue_type_template_id_5e5804ab_staticRenderFns,
31386 false,
31387 null,
31388 null,
31389 null
31390
31391)
31392
31393ShPaginationList_component.options.__file = "ShPaginationList.vue"
31394/* harmony default export */ var sh_pagination_list_ShPaginationList = (ShPaginationList_component.exports);
31395// CONCATENATED MODULE: ./src/components/sh-pagination-list/index.ts
31396
31397/* harmony default export */ var sh_pagination_list = (sh_pagination_list_ShPaginationList);
31398// EXTERNAL MODULE: ./node_modules/vuedraggable/dist/vuedraggable.js
31399var vuedraggable = __webpack_require__("1516");
31400var vuedraggable_default = /*#__PURE__*/__webpack_require__.n(vuedraggable);
31401
31402// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-table/ShTable.vue?vue&type=script&lang=ts&
31403
31404
31405
31406
31407
31408
31409
31410
31411
31412
31413
31414
31415
31416
31417
31418
31419
31420
31421
31422
31423
31424
31425var Wrapper = {
31426 functional: true,
31427 render: function render(h, context) {
31428 if (context.props.draggable) {
31429 return h('draggable', {
31430 class: 'sh-table-items',
31431 value: context.parent.data,
31432 on: {
31433 start: function start(evt) {
31434 context.parent.onStart(evt);
31435 },
31436 end: function end(evt) {
31437 context.parent.onEnd(evt);
31438 }
31439 },
31440 props: {
31441 element: 'tbody',
31442 options: {
31443 handle: '.sh-table-row-handle'
31444 }
31445 }
31446 }, context.children);
31447 } else {
31448 return h('tbody', {
31449 class: 'sh-table-items'
31450 }, context.children);
31451 }
31452 }
31453};
31454
31455var ShTablevue_type_script_lang_ts_ShTable =
31456/*#__PURE__*/
31457function (_Vue) {
31458 _inherits(ShTable, _Vue);
31459
31460 function ShTable() {
31461 var _this;
31462
31463 _classCallCheck(this, ShTable);
31464
31465 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTable).apply(this, arguments));
31466 _this.getValueByPath = getValueByPath;
31467 _this.newColumns = _toConsumableArray(_this.columns);
31468 _this.visibleDetailRows = _this.openedDetailed;
31469 _this.newData = _this.data;
31470 _this.newDataTotal = _this.backendPagination ? _this.total : _this.data.length;
31471 _this.newCheckedRows = _toConsumableArray(_this.checkedRows);
31472 _this.newCheckedAdditionalRows = _toConsumableArray(_this.checkedAdditionalRows);
31473 _this.newCurrentPage = _this.currentPage;
31474 _this.currentSortColumn = {};
31475 _this.isAsc = true;
31476 _this.firstTimeSort = true; // Used by first time initSort
31477
31478 _this.isColumnTable = true; // Used by TableColumn
31479
31480 _this.count = 0;
31481 return _this;
31482 }
31483
31484 _createClass(ShTable, [{
31485 key: "rowClass",
31486 value: function rowClass(row, index) {
31487 return {
31488 'is-selected': row === this.selected,
31489 'is-checked': this.isRowChecked(row)
31490 };
31491 }
31492 /**
31493 * Splitted data based on the pagination.
31494 */
31495
31496 }, {
31497 key: "onDataChange",
31498
31499 /**
31500 *
31501 * Watchers
31502 *
31503 */
31504
31505 /**
31506 * When data prop change:
31507 * 1. Update internal value.
31508 * 2. Reset newColumns (thead), in case it's on a v-for loop.
31509 * 3. Sort again if it's not backend-sort.
31510 * 4. Set new total if it's not backend-paginated.
31511 */
31512 value: function onDataChange(value) {
31513 var _this2 = this;
31514
31515 // Save newColumns before resetting
31516 var newColumns = this.newColumns;
31517 this.newColumns = [];
31518 this.newData = value; // Prevent table from being headless, data could change and created hook
31519 // on column might not trigger
31520
31521 this.$nextTick(function () {
31522 if (!_this2.newColumns.length) {
31523 _this2.newColumns = newColumns;
31524 }
31525 });
31526
31527 if (!this.backendSorting) {
31528 this.sort(this.currentSortColumn, true);
31529 }
31530
31531 if (!this.backendPagination) {
31532 this.newDataTotal = value.length;
31533 }
31534 }
31535 /**
31536 * When Pagination total change, update internal total
31537 * only if it's backend-paginated.
31538 */
31539
31540 }, {
31541 key: "onTotalChange",
31542 value: function onTotalChange(newTotal) {
31543 if (!this.backendPagination) {
31544 return;
31545 }
31546
31547 this.newDataTotal = newTotal;
31548 }
31549 /**
31550 * When checkedRows prop change, update internal value without
31551 * mutating original data.
31552 */
31553
31554 }, {
31555 key: "onCheckedRowsChange",
31556 value: function onCheckedRowsChange(rows) {
31557 this.newCheckedRows = _toConsumableArray(rows);
31558 }
31559 }, {
31560 key: "onColumnsChange",
31561 value: function onColumnsChange(value) {
31562 this.newColumns = _toConsumableArray(value);
31563 }
31564 /**
31565 * When newColumns change, call initSort only first time (For example async data).
31566 */
31567
31568 }, {
31569 key: "onNewColumnsChange",
31570 value: function onNewColumnsChange(newColumns) {
31571 if (newColumns.length && this.firstTimeSort) {
31572 this.initSort();
31573 this.firstTimeSort = false;
31574 } else if (newColumns.length) {
31575 var _iteratorNormalCompletion = true;
31576 var _didIteratorError = false;
31577 var _iteratorError = undefined;
31578
31579 try {
31580 for (var _iterator = get_iterator_default()(newColumns), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
31581 var column = _step.value;
31582
31583 if (column.newKey === this.currentSortColumn.newKey) {
31584 this.currentSortColumn = column;
31585 break;
31586 }
31587 }
31588 } catch (err) {
31589 _didIteratorError = true;
31590 _iteratorError = err;
31591 } finally {
31592 try {
31593 if (!_iteratorNormalCompletion && _iterator.return != null) {
31594 _iterator.return();
31595 }
31596 } finally {
31597 if (_didIteratorError) {
31598 throw _iteratorError;
31599 }
31600 }
31601 }
31602 }
31603 }
31604 /**
31605 * When the user wants to control the detailed rows via props.
31606 * Or wants to open the details of certain row with the router for example.
31607 */
31608
31609 }, {
31610 key: "onOpenedDetailedChange",
31611 value: function onOpenedDetailedChange(expandedRows) {
31612 this.visibleDetailRows = expandedRows;
31613 }
31614 }, {
31615 key: "onCurrentPageChange",
31616 value: function onCurrentPageChange(newVal) {
31617 this.newCurrentPage = newVal;
31618 }
31619 }, {
31620 key: "sortBy",
31621 value: function sortBy(array, key, fn, isAsc) {
31622 var sorted = []; // Sorting without mutating original data
31623
31624 if (fn && typeof fn === 'function') {
31625 sorted = _toConsumableArray(array).sort(function (a, b) {
31626 return fn(a, b, isAsc);
31627 });
31628 } else {
31629 sorted = _toConsumableArray(array).sort(function (a, b) {
31630 // Get nested values from objects
31631 var newA = getValueByPath(a, key);
31632 var newB = getValueByPath(b, key);
31633
31634 if (!newA && newA !== 0) {
31635 return 1;
31636 }
31637
31638 if (!newB && newB !== 0) {
31639 return -1;
31640 }
31641
31642 if (newA === newB) {
31643 return 0;
31644 }
31645
31646 newA = typeof newA === 'string' ? newA.toUpperCase() : newA;
31647 newB = typeof newB === 'string' ? newB.toUpperCase() : newB;
31648 return isAsc ? newA > newB ? 1 : -1 : newA > newB ? -1 : 1;
31649 });
31650 }
31651
31652 return sorted;
31653 }
31654 /**
31655 * Sort the column.
31656 * Toggle current direction on column if it's sortable
31657 * and not just updating the prop.
31658 */
31659
31660 }, {
31661 key: "sort",
31662 value: function sort(column) {
31663 var updatingData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
31664
31665 if (!column || !column.sortable) {
31666 return;
31667 }
31668
31669 if (!updatingData) {
31670 this.isAsc = column === this.currentSortColumn ? !this.isAsc : this.defaultSortDirection.toLowerCase() !== 'desc';
31671 }
31672
31673 if (!this.firstTimeSort) {
31674 this.$emit('sort', column.field, this.isAsc ? 'asc' : 'desc');
31675 }
31676
31677 if (!this.backendSorting) {
31678 this.newData = this.sortBy(this.newData, column.field, column.customSort, this.isAsc);
31679 }
31680
31681 this.currentSortColumn = column;
31682 }
31683 /**
31684 * Check if the row is checked (is added to the array).
31685 */
31686
31687 }, {
31688 key: "isRowChecked",
31689 value: function isRowChecked(row) {
31690 return indexOf(this.newCheckedRows, row, this.customIsChecked) >= 0;
31691 }
31692 }, {
31693 key: "isAdditionalRowChecked",
31694 value: function isAdditionalRowChecked(row) {
31695 return indexOf(this.newCheckedAdditionalRows, row, this.customIsChecked) >= 0;
31696 }
31697 /**
31698 * Remove a checked row from the array.
31699 */
31700
31701 }, {
31702 key: "removeCheckedRow",
31703 value: function removeCheckedRow(row) {
31704 var index = indexOf(this.newCheckedRows, row, this.customIsChecked);
31705
31706 if (index >= 0) {
31707 this.newCheckedRows.splice(index, 1);
31708 }
31709 }
31710 }, {
31711 key: "removeCheckedAdditionalRow",
31712 value: function removeCheckedAdditionalRow(row) {
31713 var index = indexOf(this.newCheckedAdditionalRows, row, this.customIsChecked);
31714
31715 if (index >= 0) {
31716 this.newCheckedAdditionalRows.splice(index, 1);
31717 }
31718 }
31719 /**
31720 * Header checkbox click listener.
31721 * Add or remove all rows in current page.
31722 */
31723
31724 }, {
31725 key: "checkAll",
31726 value: function checkAll() {
31727 var _this3 = this;
31728
31729 var isAllChecked = this.isAllChecked;
31730 this.visibleData.forEach(function (currentRow) {
31731 _this3.removeCheckedRow(currentRow);
31732
31733 if (_this3.detailed && _this3.checkableAdditionalRows) {
31734 _this3.additionalRowsLoop(currentRow, 'remove');
31735 }
31736
31737 if (!isAllChecked) {
31738 if (_this3.isRowCheckable(currentRow)) {
31739 _this3.newCheckedRows.push(currentRow);
31740
31741 if (_this3.detailed && _this3.checkableAdditionalRows && _this3.isVisibleDetailRow(currentRow) && _this3.additionalRowsKey) {
31742 _this3.additionalRowsLoop(currentRow, 'add');
31743 }
31744 }
31745 }
31746 });
31747 this.$emit('check', this.newCheckedRows);
31748 this.$emit('check-all', this.newCheckedRows); // Emit checked rows to update user variable
31749
31750 this.$emit('update:checkedRows', this.newCheckedRows);
31751 }
31752 /**
31753 * Row checkbox click listener.
31754 * Add or remove a single row.
31755 */
31756
31757 }, {
31758 key: "checkRow",
31759 value: function checkRow(row) {
31760 if (!this.isRowChecked(row)) {
31761 this.newCheckedRows.push(row);
31762
31763 if (this.detailed && this.isVisibleDetailRow(row) && this.additionalRowsKey) {
31764 this.additionalRowsLoop(row, 'add');
31765 }
31766 } else {
31767 this.removeCheckedRow(row);
31768
31769 if (this.detailed && this.isVisibleDetailRow(row) && this.additionalRowsKey) {
31770 this.additionalRowsLoop(row, 'remove');
31771 }
31772 }
31773
31774 this.$emit('check', this.newCheckedRows, row); // Emit checked rows to update user variable
31775
31776 this.$emit('update:checkedRows', this.newCheckedRows);
31777 }
31778 }, {
31779 key: "checkAdditionalRow",
31780 value: function checkAdditionalRow(additionalRow) {
31781 if (!this.isAdditionalRowChecked(additionalRow)) {
31782 this.newCheckedAdditionalRows.push(additionalRow);
31783 }
31784
31785 this.$emit('checkAdditional', this.newCheckedAdditionalRows, additionalRow); // Emit checked rows to update user variable
31786
31787 this.$emit('update:checkedAdditionalRows', this.newCheckedAdditionalRows);
31788 }
31789 }, {
31790 key: "additionalRowsLoop",
31791 value: function additionalRowsLoop(row, action) {
31792 var length = row[this.additionalRowsKey].length;
31793 var i = 0;
31794
31795 for (i; i < length; i++) {
31796 if (action === 'add') {
31797 this.checkAdditionalRow(row[this.additionalRowsKey][i]);
31798 } else {
31799 this.removeCheckedAdditionalRow(row[this.additionalRowsKey][i]);
31800 }
31801 }
31802 }
31803 /**
31804 * Row click listener.
31805 * Emit all necessary events.
31806 */
31807
31808 }, {
31809 key: "selectRow",
31810 value: function selectRow(row, index) {
31811 this.$emit('click', row);
31812
31813 if (this.selected === row) {
31814 return;
31815 } // Emit new and old row
31816
31817
31818 this.$emit('select', row, this.selected); // Emit new row to update user variable
31819
31820 this.$emit('update:selected', row);
31821 }
31822 /**
31823 * Paginator change listener.
31824 */
31825
31826 }, {
31827 key: "pageChanged",
31828 value: function pageChanged(page) {
31829 this.newCurrentPage = page > 0 ? page : 1;
31830 this.$emit('page-change', this.newCurrentPage);
31831 this.$emit('update:currentPage', this.newCurrentPage);
31832 }
31833 /**
31834 * Toggle to show/hide details slot
31835 */
31836
31837 }, {
31838 key: "toggleDetails",
31839 value: function toggleDetails(obj) {
31840 var found = this.isVisibleDetailRow(obj);
31841
31842 if (found) {
31843 this.closeDetailRow(obj);
31844 this.$emit('details-close', obj);
31845 } else {
31846 this.openDetailRow(obj);
31847 this.$emit('details-open', obj);
31848 } // Syncs the detailed rows with the parent component
31849
31850
31851 this.$emit('update:openedDetailed', this.visibleDetailRows);
31852 }
31853 }, {
31854 key: "openDetailRow",
31855 value: function openDetailRow(obj) {
31856 var index = this.handleDetailKey(obj);
31857 this.visibleDetailRows.push(index);
31858 }
31859 }, {
31860 key: "closeDetailRow",
31861 value: function closeDetailRow(obj) {
31862 var index = this.handleDetailKey(obj);
31863 var i = this.visibleDetailRows.indexOf(index);
31864 this.visibleDetailRows.splice(i, 1);
31865 }
31866 }, {
31867 key: "isVisibleDetailRow",
31868 value: function isVisibleDetailRow(obj) {
31869 var index = this.handleDetailKey(obj);
31870 var result = this.visibleDetailRows.indexOf(index) >= 0;
31871 return result;
31872 }
31873 /**
31874 * When the detailKey is defined we use the object[detailKey] as index.
31875 * If not, use the object reference by default.
31876 */
31877
31878 }, {
31879 key: "handleDetailKey",
31880 value: function handleDetailKey(index) {
31881 var key = this.detailKey;
31882 return !key.length ? index : index[key];
31883 }
31884 }, {
31885 key: "checkPredefinedDetailedRows",
31886 value: function checkPredefinedDetailedRows() {
31887 var defaultExpandedRowsDefined = this.openedDetailed.length > 0;
31888
31889 if (defaultExpandedRowsDefined && !this.detailKey.length) {
31890 throw new Error('If you set a predefined opened-detailed, you must provide an unique key using the prop \'detail-key\'');
31891 }
31892 }
31893 /**
31894 * Check if footer slot has custom content.
31895 */
31896
31897 }, {
31898 key: "hasCustomFooterSlot",
31899 value: function hasCustomFooterSlot() {
31900 if (this.$slots.footer.length > 1) {
31901 return true;
31902 }
31903
31904 var tag = this.$slots.footer[0].tag;
31905
31906 if (tag !== 'th' && tag !== 'td') {
31907 return false;
31908 }
31909
31910 return true;
31911 }
31912 /**
31913 * Table arrow keys listener, change selection.
31914 */
31915
31916 }, {
31917 key: "pressedArrow",
31918 value: function pressedArrow(pos) {
31919 if (!this.visibleData.length) {
31920 return;
31921 }
31922
31923 var index = this.visibleData.indexOf(this.selected) + pos; // Prevent from going up from first and down from last
31924
31925 index = index < 0 ? 0 : index > this.visibleData.length - 1 ? this.visibleData.length - 1 : index;
31926 this.selectRow(this.visibleData[index]);
31927 }
31928 /**
31929 * Focus table element if has selected prop.
31930 */
31931
31932 }, {
31933 key: "focus",
31934 value: function focus() {
31935 if (!this.focusable) {
31936 return;
31937 }
31938
31939 var el = this.$el.querySelector('table');
31940 el.focus();
31941 }
31942 /**
31943 * Initial sorted column based on the default-sort prop.
31944 */
31945
31946 }, {
31947 key: "initSort",
31948 value: function initSort() {
31949 var _this4 = this;
31950
31951 if (!this.defaultSort) {
31952 return;
31953 }
31954
31955 var sortField = '';
31956 var sortDirection = this.defaultSortDirection;
31957
31958 if (is_array_default()(this.defaultSort)) {
31959 sortField = this.defaultSort[0];
31960
31961 if (this.defaultSort[1]) {
31962 sortDirection = this.defaultSort[1];
31963 }
31964 } else {
31965 sortField = this.defaultSort;
31966 }
31967
31968 this.newColumns.forEach(function (column) {
31969 if (column.field === sortField) {
31970 _this4.isAsc = sortDirection.toLowerCase() !== 'desc';
31971
31972 _this4.sort(column, true);
31973 }
31974 });
31975 }
31976 }, {
31977 key: "paginate",
31978 value: function paginate(page) {
31979 this.$emit('paginate', page);
31980 this.newCurrentPage = page;
31981 }
31982 }, {
31983 key: "onStart",
31984 value: function onStart(evt) {
31985 this.$emit('onStartDrag', evt);
31986 }
31987 }, {
31988 key: "onEnd",
31989 value: function onEnd(evt) {
31990 var data = this.data;
31991 var item = data[evt.oldIndex];
31992
31993 if (evt.newIndex > evt.oldIndex) {
31994 for (var i = evt.oldIndex; i < evt.newIndex; i++) {
31995 data[i] = data[i + 1];
31996 }
31997 } else {
31998 for (var _i = evt.oldIndex; _i > evt.newIndex; _i--) {
31999 data[_i] = data[_i - 1];
32000 }
32001 }
32002
32003 data[evt.newIndex] = item;
32004 this.$emit('onEndDrag', evt, data);
32005 }
32006 }, {
32007 key: "mounted",
32008 value: function mounted() {
32009 this.checkPredefinedDetailedRows();
32010 }
32011 }, {
32012 key: "tableClasses",
32013 get: function get() {
32014 return {
32015 'is-narrow': this.narrowed,
32016 'has-mobile-cards': this.mobileCards,
32017 'is-colored-header': this.coloredHeader,
32018 'is-hoverable': (this.hoverable || this.focusable) && this.visibleData.length
32019 };
32020 }
32021 }, {
32022 key: "visibleData",
32023 get: function get() {
32024 if (!this.paginated) {
32025 return this.newData;
32026 }
32027
32028 var currentPage = this.newCurrentPage;
32029 var perPage = this.perPage;
32030
32031 if (this.newData.length <= parse_int_default()(perPage, 10)) {
32032 return this.newData;
32033 } else {
32034 var start = (currentPage - 1) * perPage;
32035
32036 var end = parse_int_default()(start.toString(), 10) + parse_int_default()(perPage, 10);
32037
32038 return this.newData.slice(start, end);
32039 }
32040 }
32041 /**
32042 * Check if all rows in the page are checked.
32043 */
32044
32045 }, {
32046 key: "isAllChecked",
32047 get: function get() {
32048 var _this5 = this;
32049
32050 var validVisibleData = this.visibleData.filter(function (row) {
32051 return _this5.isRowCheckable(row);
32052 });
32053 var isAllChecked = validVisibleData.some(function (currentVisibleRow) {
32054 return indexOf(_this5.newCheckedRows, currentVisibleRow, _this5.customIsChecked) < 0;
32055 });
32056 return !isAllChecked;
32057 }
32058 /**
32059 * Check if has any sortable column.
32060 */
32061
32062 }, {
32063 key: "hasSortablenewColumns",
32064 get: function get() {
32065 return this.newColumns.some(function (column) {
32066 return column.sortable;
32067 });
32068 }
32069 /**
32070 * Return total column count based if it's checkable or expanded
32071 */
32072
32073 }, {
32074 key: "columnCount",
32075 get: function get() {
32076 var count = this.newColumns.length;
32077 count += this.checkable ? 1 : 0;
32078 return count;
32079 }
32080 }]);
32081
32082 return ShTable;
32083}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32084
32085__decorate([Prop({
32086 default: function _default() {
32087 var array = [];
32088 return array;
32089 }
32090}), __metadata("design:type", Array)], ShTablevue_type_script_lang_ts_ShTable.prototype, "data", void 0);
32091
32092__decorate([Prop({
32093 default: function _default() {
32094 var array = [];
32095 return array;
32096 }
32097}), __metadata("design:type", Array)], ShTablevue_type_script_lang_ts_ShTable.prototype, "columns", void 0);
32098
32099__decorate([Prop({
32100 default: false
32101}), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "coloredHeader", void 0);
32102
32103__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "narrowed", void 0);
32104
32105__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "loading", void 0);
32106
32107__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "detailed", void 0);
32108
32109__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "checkable", void 0);
32110
32111__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "checkableAdditionalRows", void 0);
32112
32113__decorate([Prop(), __metadata("design:type", String)], ShTablevue_type_script_lang_ts_ShTable.prototype, "additionalRowsKey", void 0);
32114
32115__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "hoverable", void 0);
32116
32117__decorate([Prop(), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "selected", void 0);
32118
32119__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "focusable", void 0);
32120
32121__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "draggable", void 0);
32122
32123__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "draggableTable", void 0);
32124
32125__decorate([Prop(), __metadata("design:type", Function)], ShTablevue_type_script_lang_ts_ShTable.prototype, "customIsChecked", void 0);
32126
32127__decorate([Prop({
32128 default: function _default() {
32129 return function (row) {
32130 return true;
32131 };
32132 }
32133}), __metadata("design:type", Function)], ShTablevue_type_script_lang_ts_ShTable.prototype, "isRowCheckable", void 0);
32134
32135__decorate([Prop({
32136 default: function _default() {
32137 var array = [];
32138 return array;
32139 }
32140}), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "checkedRows", void 0);
32141
32142__decorate([Prop({
32143 default: function _default() {
32144 var array = [];
32145 return array;
32146 }
32147}), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "checkedAdditionalRows", void 0);
32148
32149__decorate([Prop({
32150 default: false
32151}), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "mobileCards", void 0);
32152
32153__decorate([Prop(), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "defaultSort", void 0);
32154
32155__decorate([Prop({
32156 default: 'asc'
32157}), __metadata("design:type", String)], ShTablevue_type_script_lang_ts_ShTable.prototype, "defaultSortDirection", void 0);
32158
32159__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "paginated", void 0);
32160
32161__decorate([Prop({
32162 default: 1
32163}), __metadata("design:type", Number)], ShTablevue_type_script_lang_ts_ShTable.prototype, "currentPage", void 0);
32164
32165__decorate([Prop({
32166 default: 20
32167}), __metadata("design:type", String)], ShTablevue_type_script_lang_ts_ShTable.prototype, "perPage", void 0);
32168
32169__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "paginationSimple", void 0);
32170
32171__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "backendSorting", void 0);
32172
32173__decorate([Prop({
32174 default: function _default() {
32175 var array = [];
32176 return array;
32177 }
32178}), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "openedDetailed", void 0);
32179
32180__decorate([Prop({
32181 default: ''
32182}), __metadata("design:type", String)], ShTablevue_type_script_lang_ts_ShTable.prototype, "detailKey", void 0);
32183
32184__decorate([Prop(), __metadata("design:type", Boolean)], ShTablevue_type_script_lang_ts_ShTable.prototype, "backendPagination", void 0);
32185
32186__decorate([Prop({
32187 default: 0
32188}), __metadata("design:type", Object)], ShTablevue_type_script_lang_ts_ShTable.prototype, "total", void 0);
32189
32190__decorate([Watch('data'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onDataChange", null);
32191
32192__decorate([Watch('total'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onTotalChange", null);
32193
32194__decorate([Watch('checkedRows'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onCheckedRowsChange", null);
32195
32196__decorate([Watch('columns'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onColumnsChange", null);
32197
32198__decorate([Watch('newColumns'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onNewColumnsChange", null);
32199
32200__decorate([Watch('openedDetailed'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onOpenedDetailedChange", null);
32201
32202__decorate([Watch('currentPage'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShTablevue_type_script_lang_ts_ShTable.prototype, "onCurrentPageChange", null);
32203
32204ShTablevue_type_script_lang_ts_ShTable = __decorate([vue_class_component_common_default()({
32205 components: {
32206 ShTableColumn: sh_table_ShTableColumn,
32207 ShPaginationList: sh_pagination_list,
32208 ShCheckbox: sh_checkbox_ShCheckbox,
32209 draggable: vuedraggable_default.a,
32210 Wrapper: Wrapper,
32211 ShIcon: sh_icon_ShIcon
32212 }
32213})], ShTablevue_type_script_lang_ts_ShTable);
32214/* harmony default export */ var ShTablevue_type_script_lang_ts_ = (ShTablevue_type_script_lang_ts_ShTable);
32215// CONCATENATED MODULE: ./src/components/sh-table/ShTable.vue?vue&type=script&lang=ts&
32216 /* harmony default export */ var sh_table_ShTablevue_type_script_lang_ts_ = (ShTablevue_type_script_lang_ts_);
32217// EXTERNAL MODULE: ./src/components/sh-table/ShTable.vue?vue&type=style&index=0&lang=scss&
32218var ShTablevue_type_style_index_0_lang_scss_ = __webpack_require__("b31b");
32219
32220// CONCATENATED MODULE: ./src/components/sh-table/ShTable.vue
32221
32222
32223
32224
32225
32226
32227/* normalize component */
32228
32229var ShTable_component = normalizeComponent(
32230 sh_table_ShTablevue_type_script_lang_ts_,
32231 ShTablevue_type_template_id_26261aa6_render,
32232 ShTablevue_type_template_id_26261aa6_staticRenderFns,
32233 false,
32234 null,
32235 null,
32236 null
32237
32238)
32239
32240ShTable_component.options.__file = "ShTable.vue"
32241/* harmony default export */ var sh_table_ShTable = (ShTable_component.exports);
32242// CONCATENATED MODULE: ./src/components/sh-table/index.ts
32243
32244
32245
32246/* harmony default export */ var sh_table = (sh_table_ShTable);
32247// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTag.vue?vue&type=template&id=5623f4b3&
32248var ShTagvue_type_template_id_5623f4b3_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:"sh-tag",class:_vm.classes},[_vm._v("\n "+_vm._s(_vm.tagContent)+"\n "),(_vm.isCloseable)?_c('ShIcon',{class:'sh-icon sh-icon-close-small',on:{"iconClicked":_vm.deleteTag}}):_vm._e()],1)}
32249var ShTagvue_type_template_id_5623f4b3_staticRenderFns = []
32250
32251
32252// CONCATENATED MODULE: ./src/components/sh-tag/ShTag.vue?vue&type=template&id=5623f4b3&
32253
32254// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTag.vue?vue&type=script&lang=ts&
32255
32256
32257
32258
32259
32260
32261
32262
32263
32264
32265
32266
32267var ShTagvue_type_script_lang_ts_ShTag =
32268/*#__PURE__*/
32269function (_Vue) {
32270 _inherits(ShTag, _Vue);
32271
32272 function ShTag() {
32273 var _this;
32274
32275 _classCallCheck(this, ShTag);
32276
32277 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTag).apply(this, arguments));
32278 _this.colorTypes = {
32279 'blue': 'sh-tag-blue',
32280 'blue-light': 'sh-tag-blue-light',
32281 'blue-dark': 'sh-tag-blue-dark',
32282 'green': 'sh-tag-green',
32283 'green-light': 'sh-tag-green-light',
32284 'green-dark': 'sh-tag-green-dark',
32285 'red': 'sh-tag-red',
32286 'gray': 'sh-tag-gray',
32287 'gray-light': 'sh-tag-gray-light',
32288 'gray-dark': 'sh-tag-gray-dark',
32289 'orange': 'sh-tag-orange',
32290 'pink': 'sh-tag-pink',
32291 'pink-light': 'sh-tag-pink-light',
32292 'purple': 'sh-tag-purple'
32293 };
32294 return _this;
32295 }
32296
32297 _createClass(ShTag, [{
32298 key: "deleteTag",
32299 value: function deleteTag() {
32300 this.$emit('deleteTag', this.tagIndex);
32301 }
32302 }, {
32303 key: "classes",
32304 get: function get() {
32305 var _ref;
32306
32307 return _ref = {}, _defineProperty(_ref, this.colorClass, !this.isStockIndicator), _defineProperty(_ref, 'sh-tag-processing', this.isLoading), _defineProperty(_ref, 'sh-tag-stock', this.isStockIndicator), _defineProperty(_ref, 'sh-tag-full-green-light', this.isStockIndicator && this.isInStock), _defineProperty(_ref, 'sh-tag-full-gray-light', this.isStockIndicator && !this.isInStock), _ref;
32308 }
32309 }, {
32310 key: "colorClass",
32311 get: function get() {
32312 return this.colorTypes[this.tagColor];
32313 }
32314 }]);
32315
32316 return ShTag;
32317}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32318
32319__decorate([Prop({
32320 default: 'tag'
32321}), __metadata("design:type", String)], ShTagvue_type_script_lang_ts_ShTag.prototype, "tagContent", void 0);
32322
32323__decorate([Prop({
32324 default: 'blue'
32325}), __metadata("design:type", String)], ShTagvue_type_script_lang_ts_ShTag.prototype, "tagColor", void 0);
32326
32327__decorate([Prop({
32328 default: false
32329}), __metadata("design:type", Boolean)], ShTagvue_type_script_lang_ts_ShTag.prototype, "isCloseable", void 0);
32330
32331__decorate([Prop({
32332 default: false
32333}), __metadata("design:type", Boolean)], ShTagvue_type_script_lang_ts_ShTag.prototype, "isLoading", void 0);
32334
32335__decorate([Prop({
32336 default: false
32337}), __metadata("design:type", Boolean)], ShTagvue_type_script_lang_ts_ShTag.prototype, "isStockIndicator", void 0);
32338
32339__decorate([Prop({
32340 default: false
32341}), __metadata("design:type", Boolean)], ShTagvue_type_script_lang_ts_ShTag.prototype, "isInStock", void 0);
32342
32343__decorate([Prop({
32344 default: 0
32345}), __metadata("design:type", Number)], ShTagvue_type_script_lang_ts_ShTag.prototype, "tagIndex", void 0);
32346
32347ShTagvue_type_script_lang_ts_ShTag = __decorate([vue_class_component_common_default()({
32348 components: {
32349 ShIcon: sh_icon_ShIcon
32350 }
32351})], ShTagvue_type_script_lang_ts_ShTag);
32352/* harmony default export */ var ShTagvue_type_script_lang_ts_ = (ShTagvue_type_script_lang_ts_ShTag);
32353// CONCATENATED MODULE: ./src/components/sh-tag/ShTag.vue?vue&type=script&lang=ts&
32354 /* harmony default export */ var sh_tag_ShTagvue_type_script_lang_ts_ = (ShTagvue_type_script_lang_ts_);
32355// EXTERNAL MODULE: ./src/components/sh-tag/ShTag.vue?vue&type=style&index=0&lang=scss&
32356var ShTagvue_type_style_index_0_lang_scss_ = __webpack_require__("3a1c");
32357
32358// CONCATENATED MODULE: ./src/components/sh-tag/ShTag.vue
32359
32360
32361
32362
32363
32364
32365/* normalize component */
32366
32367var ShTag_component = normalizeComponent(
32368 sh_tag_ShTagvue_type_script_lang_ts_,
32369 ShTagvue_type_template_id_5623f4b3_render,
32370 ShTagvue_type_template_id_5623f4b3_staticRenderFns,
32371 false,
32372 null,
32373 null,
32374 null
32375
32376)
32377
32378ShTag_component.options.__file = "ShTag.vue"
32379/* harmony default export */ var sh_tag_ShTag = (ShTag_component.exports);
32380// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTagButton.vue?vue&type=template&id=1f5af019&
32381var ShTagButtonvue_type_template_id_1f5af019_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-tag-button-wrapper",class:[_vm.classes, _vm.contentWidths]},[_c('div',{staticClass:"sh-tag-button align-middle"},[(_vm.isDragable)?_c('ShIcon',{class:'sh-icon-drag-n-drop'}):_vm._e(),(_vm.colorPreview !== '')?_c('span',{staticClass:"sh-tag-button-color-preview",style:({backgroundColor: _vm.colorPreview})}):_vm._e(),_c('span',{class:[_vm.contentClasses]},[_vm._v(_vm._s(_vm.tagContent))]),(_vm.isEditable)?_c('ShIcon',{class:[_vm.editClasses],on:{"iconClicked":_vm.editClick}}):_vm._e(),(_vm.isCloseable)?_c('ShIcon',{class:[_vm.closeClasses],on:{"iconClicked":_vm.deleteClick}}):_vm._e()],1),(_vm.hasAttachment)?_c('div',{staticClass:"sh-tag-button-attachment",on:{"click":_vm.attachmentClick,"hover":_vm.attachmentHover}},[_c('ShIcon',{class:_vm.attachmentIcon})],1):_vm._e()])}
32382var ShTagButtonvue_type_template_id_1f5af019_staticRenderFns = []
32383
32384
32385// CONCATENATED MODULE: ./src/components/sh-tag/ShTagButton.vue?vue&type=template&id=1f5af019&
32386
32387// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTagButton.vue?vue&type=script&lang=ts&
32388
32389
32390
32391
32392
32393
32394
32395
32396
32397
32398var ShTagButtonvue_type_script_lang_ts_ShTagButton =
32399/*#__PURE__*/
32400function (_Vue) {
32401 _inherits(ShTagButton, _Vue);
32402
32403 function ShTagButton() {
32404 _classCallCheck(this, ShTagButton);
32405
32406 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTagButton).apply(this, arguments));
32407 }
32408
32409 _createClass(ShTagButton, [{
32410 key: "attachmentClick",
32411 value: function attachmentClick() {
32412 this.$emit('attachmentClicked');
32413 }
32414 }, {
32415 key: "attachmentHover",
32416 value: function attachmentHover() {
32417 this.$emit('attachmentHovered');
32418 }
32419 }, {
32420 key: "editClick",
32421 value: function editClick() {
32422 this.$emit('editClicked');
32423 }
32424 }, {
32425 key: "deleteClick",
32426 value: function deleteClick() {
32427 this.$emit('deleteClicked');
32428 }
32429 }, {
32430 key: "classes",
32431 get: function get() {
32432 return {
32433 'sh-tag-button-has-attachment': this.hasAttachment,
32434 'sh-tag-button-no-drag-n-drop': !this.isDragable,
32435 'sh-tag-button-no-actions': !this.isEditable && !this.isCloseable
32436 };
32437 }
32438 }, {
32439 key: "closeClasses",
32440 get: function get() {
32441 return {
32442 'sh-icon sh-icon-close-small': true,
32443 'is-single-action': !this.isEditable
32444 };
32445 }
32446 }, {
32447 key: "editClasses",
32448 get: function get() {
32449 return {
32450 'sh-icon sh-icon-edit': true,
32451 'is-single-action': !this.isCloseable
32452 };
32453 }
32454 }, {
32455 key: "contentClasses",
32456 get: function get() {
32457 return {
32458 'sh-tag-button-content': true,
32459 'has-actions': this.isEditable || this.isCloseable
32460 };
32461 }
32462 }, {
32463 key: "contentWidths",
32464 get: function get() {
32465 return {
32466 'has-width-100': this.isWidth100
32467 };
32468 }
32469 }]);
32470
32471 return ShTagButton;
32472}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32473
32474__decorate([Prop({
32475 default: 'tag'
32476}), __metadata("design:type", String)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "tagContent", void 0);
32477
32478__decorate([Prop({
32479 default: 'sh-icon-envelope'
32480}), __metadata("design:type", String)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "attachmentIcon", void 0);
32481
32482__decorate([Prop({
32483 default: false
32484}), __metadata("design:type", Boolean)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "isEditable", void 0);
32485
32486__decorate([Prop({
32487 default: false
32488}), __metadata("design:type", Boolean)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "isCloseable", void 0);
32489
32490__decorate([Prop({
32491 default: false
32492}), __metadata("design:type", Boolean)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "isDragable", void 0);
32493
32494__decorate([Prop({
32495 default: false
32496}), __metadata("design:type", Boolean)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "hasAttachment", void 0);
32497
32498__decorate([Prop({
32499 default: false
32500}), __metadata("design:type", Boolean)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "isWidth100", void 0);
32501
32502__decorate([Prop({
32503 default: ''
32504}), __metadata("design:type", String)], ShTagButtonvue_type_script_lang_ts_ShTagButton.prototype, "colorPreview", void 0);
32505
32506ShTagButtonvue_type_script_lang_ts_ShTagButton = __decorate([vue_class_component_common_default()({
32507 components: {
32508 ShIcon: sh_icon_ShIcon
32509 }
32510})], ShTagButtonvue_type_script_lang_ts_ShTagButton);
32511/* harmony default export */ var ShTagButtonvue_type_script_lang_ts_ = (ShTagButtonvue_type_script_lang_ts_ShTagButton);
32512// CONCATENATED MODULE: ./src/components/sh-tag/ShTagButton.vue?vue&type=script&lang=ts&
32513 /* harmony default export */ var sh_tag_ShTagButtonvue_type_script_lang_ts_ = (ShTagButtonvue_type_script_lang_ts_);
32514// EXTERNAL MODULE: ./src/components/sh-tag/ShTagButton.vue?vue&type=style&index=0&lang=scss&
32515var ShTagButtonvue_type_style_index_0_lang_scss_ = __webpack_require__("9ef1");
32516
32517// CONCATENATED MODULE: ./src/components/sh-tag/ShTagButton.vue
32518
32519
32520
32521
32522
32523
32524/* normalize component */
32525
32526var ShTagButton_component = normalizeComponent(
32527 sh_tag_ShTagButtonvue_type_script_lang_ts_,
32528 ShTagButtonvue_type_template_id_1f5af019_render,
32529 ShTagButtonvue_type_template_id_1f5af019_staticRenderFns,
32530 false,
32531 null,
32532 null,
32533 null
32534
32535)
32536
32537ShTagButton_component.options.__file = "ShTagButton.vue"
32538/* harmony default export */ var sh_tag_ShTagButton = (ShTagButton_component.exports);
32539// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTagCreator.vue?vue&type=template&id=77629a14&
32540var ShTagCreatorvue_type_template_id_77629a14_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-tag-creator"},[_c('ShField',{attrs:{"error":_vm.errors.first(_vm.fieldName),"label":_vm.label}},[_c('ShInput',{directives:[{name:"validate",rawName:"v-validate",value:(_vm.validationOptions),expression:"validationOptions"}],attrs:{"inputName":_vm.fieldName,"submitOnKeyup":"true","inputButtonContent":_vm.inputButtonContent},on:{"submit":_vm.submitTagName},model:{value:(_vm.inputVal),callback:function ($$v) {_vm.inputVal=$$v},expression:"inputVal"}})],1),_vm._l((_vm.tagsArray),function(tag,index){return _c('SgTag',{key:index,attrs:{"isCloseable":"true","tagIndex":index,"tagContent":tag},on:{"deleteTag":_vm.deleteTag}})})],2)}
32541var ShTagCreatorvue_type_template_id_77629a14_staticRenderFns = []
32542
32543
32544// CONCATENATED MODULE: ./src/components/sh-tag/ShTagCreator.vue?vue&type=template&id=77629a14&
32545
32546// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
32547var lodash = __webpack_require__("2ef0");
32548var lodash_default = /*#__PURE__*/__webpack_require__.n(lodash);
32549
32550// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-field/ShField.vue?vue&type=template&id=711705c0&
32551var ShFieldvue_type_template_id_711705c0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-field",class:[_vm.classes]},[(_vm.label)?_c('label',{staticClass:"sh-field-label",class:[_vm.labelClass],attrs:{"for":_vm.labelFor}},[_vm._v("\n "+_vm._s(_vm.label)+"\n ")]):_vm._e(),_c('div',{staticClass:"sh-field-content"},[_vm._t("default"),(_vm.error)?_c('div',{staticClass:"sh-field-error"},[_vm._v("\n "+_vm._s(_vm.error)+"\n ")]):_vm._e(),_vm._t("description")],2)])}
32552var ShFieldvue_type_template_id_711705c0_staticRenderFns = []
32553
32554
32555// CONCATENATED MODULE: ./src/components/sh-field/ShField.vue?vue&type=template&id=711705c0&
32556
32557// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-field/ShField.vue?vue&type=script&lang=ts&
32558
32559
32560
32561
32562
32563
32564
32565
32566
32567var ShFieldvue_type_script_lang_ts_ShField =
32568/*#__PURE__*/
32569function (_Vue) {
32570 _inherits(ShField, _Vue);
32571
32572 function ShField() {
32573 _classCallCheck(this, ShField);
32574
32575 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShField).apply(this, arguments));
32576 }
32577
32578 _createClass(ShField, [{
32579 key: "classes",
32580 get: function get() {
32581 return {
32582 'sh-field-horizontal': this.horizontal,
32583 'error': this.error
32584 };
32585 }
32586 }, {
32587 key: "labelClass",
32588 get: function get() {
32589 if (typeof this.boldLabel !== 'undefined') {
32590 return this.boldLabel ? 'sh-field-label-bold' : 'sh-field-label-normal';
32591 } else {
32592 return null;
32593 }
32594 }
32595 }]);
32596
32597 return ShField;
32598}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32599
32600__decorate([Prop(), __metadata("design:type", String)], ShFieldvue_type_script_lang_ts_ShField.prototype, "label", void 0);
32601
32602__decorate([Prop(), __metadata("design:type", String)], ShFieldvue_type_script_lang_ts_ShField.prototype, "labelFor", void 0);
32603
32604__decorate([Prop(), __metadata("design:type", Boolean)], ShFieldvue_type_script_lang_ts_ShField.prototype, "boldLabel", void 0);
32605
32606__decorate([Prop({
32607 default: false
32608}), __metadata("design:type", Boolean)], ShFieldvue_type_script_lang_ts_ShField.prototype, "horizontal", void 0);
32609
32610__decorate([Prop(), __metadata("design:type", String)], ShFieldvue_type_script_lang_ts_ShField.prototype, "error", void 0);
32611
32612ShFieldvue_type_script_lang_ts_ShField = __decorate([vue_class_component_common_default()({
32613 inject: ['$validator']
32614})], ShFieldvue_type_script_lang_ts_ShField);
32615/* harmony default export */ var ShFieldvue_type_script_lang_ts_ = (ShFieldvue_type_script_lang_ts_ShField);
32616// CONCATENATED MODULE: ./src/components/sh-field/ShField.vue?vue&type=script&lang=ts&
32617 /* harmony default export */ var sh_field_ShFieldvue_type_script_lang_ts_ = (ShFieldvue_type_script_lang_ts_);
32618// EXTERNAL MODULE: ./src/components/sh-field/ShField.vue?vue&type=style&index=0&lang=scss&
32619var ShFieldvue_type_style_index_0_lang_scss_ = __webpack_require__("0a2b");
32620
32621// CONCATENATED MODULE: ./src/components/sh-field/ShField.vue
32622
32623
32624
32625
32626
32627
32628/* normalize component */
32629
32630var ShField_component = normalizeComponent(
32631 sh_field_ShFieldvue_type_script_lang_ts_,
32632 ShFieldvue_type_template_id_711705c0_render,
32633 ShFieldvue_type_template_id_711705c0_staticRenderFns,
32634 false,
32635 null,
32636 null,
32637 null
32638
32639)
32640
32641ShField_component.options.__file = "ShField.vue"
32642/* harmony default export */ var sh_field_ShField = (ShField_component.exports);
32643// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-field/ShFieldGroup.vue?vue&type=template&id=e4459b40&
32644var ShFieldGroupvue_type_template_id_e4459b40_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-field-group"},[(_vm.label)?_c('label',{staticClass:"sh-field-group-label"},[_vm._v("\n "+_vm._s(_vm.label)+"\n ")]):_vm._e(),_c('div',{staticClass:"row"},[_vm._t("default")],2)])}
32645var ShFieldGroupvue_type_template_id_e4459b40_staticRenderFns = []
32646
32647
32648// CONCATENATED MODULE: ./src/components/sh-field/ShFieldGroup.vue?vue&type=template&id=e4459b40&
32649
32650// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-field/ShFieldGroup.vue?vue&type=script&lang=ts&
32651
32652
32653
32654
32655
32656
32657
32658
32659var ShFieldGroupvue_type_script_lang_ts_ShFieldGroup =
32660/*#__PURE__*/
32661function (_Vue) {
32662 _inherits(ShFieldGroup, _Vue);
32663
32664 function ShFieldGroup() {
32665 _classCallCheck(this, ShFieldGroup);
32666
32667 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShFieldGroup).apply(this, arguments));
32668 }
32669
32670 return ShFieldGroup;
32671}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32672
32673__decorate([Prop(), __metadata("design:type", String)], ShFieldGroupvue_type_script_lang_ts_ShFieldGroup.prototype, "label", void 0);
32674
32675ShFieldGroupvue_type_script_lang_ts_ShFieldGroup = __decorate([vue_class_component_common_default()({})], ShFieldGroupvue_type_script_lang_ts_ShFieldGroup);
32676/* harmony default export */ var ShFieldGroupvue_type_script_lang_ts_ = (ShFieldGroupvue_type_script_lang_ts_ShFieldGroup);
32677// CONCATENATED MODULE: ./src/components/sh-field/ShFieldGroup.vue?vue&type=script&lang=ts&
32678 /* harmony default export */ var sh_field_ShFieldGroupvue_type_script_lang_ts_ = (ShFieldGroupvue_type_script_lang_ts_);
32679// EXTERNAL MODULE: ./src/components/sh-field/ShFieldGroup.vue?vue&type=style&index=0&lang=scss&
32680var ShFieldGroupvue_type_style_index_0_lang_scss_ = __webpack_require__("2e7f");
32681
32682// CONCATENATED MODULE: ./src/components/sh-field/ShFieldGroup.vue
32683
32684
32685
32686
32687
32688
32689/* normalize component */
32690
32691var ShFieldGroup_component = normalizeComponent(
32692 sh_field_ShFieldGroupvue_type_script_lang_ts_,
32693 ShFieldGroupvue_type_template_id_e4459b40_render,
32694 ShFieldGroupvue_type_template_id_e4459b40_staticRenderFns,
32695 false,
32696 null,
32697 null,
32698 null
32699
32700)
32701
32702ShFieldGroup_component.options.__file = "ShFieldGroup.vue"
32703/* harmony default export */ var sh_field_ShFieldGroup = (ShFieldGroup_component.exports);
32704// CONCATENATED MODULE: ./src/components/sh-field/index.ts
32705
32706
32707
32708// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-tag/ShTagCreator.vue?vue&type=script&lang=ts&
32709
32710
32711
32712
32713
32714
32715
32716
32717
32718
32719
32720
32721
32722var ShTagCreatorvue_type_script_lang_ts_ShTagCreator =
32723/*#__PURE__*/
32724function (_Vue) {
32725 _inherits(ShTagCreator, _Vue);
32726
32727 function ShTagCreator() {
32728 var _this;
32729
32730 _classCallCheck(this, ShTagCreator);
32731
32732 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTagCreator).apply(this, arguments));
32733 _this.tagsArray = _this.tags;
32734 _this.inputVal = '';
32735 return _this;
32736 }
32737
32738 _createClass(ShTagCreator, [{
32739 key: "submitTagName",
32740 value: function submitTagName(tagName) {
32741 var _this2 = this;
32742
32743 this.$validator.validateAll().then(function (result) {
32744 if (result && tagName !== '') {
32745 _this2.tagsArray.push(tagName);
32746
32747 _this2.tagsArray = lodash_default.a.uniq(_this2.tagsArray);
32748
32749 _this2.$emit('tagsChanged', _this2.tagsArray); // TODO change the way how the comma is cleared, keyup/keydown in input
32750
32751
32752 setTimeout(function () {
32753 _this2.inputVal = '';
32754 }, 10);
32755 }
32756 });
32757 }
32758 }, {
32759 key: "deleteTag",
32760 value: function deleteTag(idx) {
32761 var tmpArray = assign_default()(this.tagsArray);
32762
32763 lodash_default.a.pullAt(tmpArray, idx);
32764
32765 this.tagsArray = [];
32766 this.tagsArray = assign_default()(tmpArray);
32767 this.$emit('tagsChanged', this.tagsArray);
32768 }
32769 }]);
32770
32771 return ShTagCreator;
32772}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32773
32774__decorate([Prop({
32775 default: function _default() {
32776 return [];
32777 }
32778}), __metadata("design:type", Array)], ShTagCreatorvue_type_script_lang_ts_ShTagCreator.prototype, "tags", void 0);
32779
32780__decorate([Prop({
32781 default: 'tagName'
32782}), __metadata("design:type", String)], ShTagCreatorvue_type_script_lang_ts_ShTagCreator.prototype, "fieldName", void 0);
32783
32784__decorate([Prop(), __metadata("design:type", String)], ShTagCreatorvue_type_script_lang_ts_ShTagCreator.prototype, "inputButtonContent", void 0);
32785
32786__decorate([Prop(), __metadata("design:type", String)], ShTagCreatorvue_type_script_lang_ts_ShTagCreator.prototype, "validationOptions", void 0);
32787
32788__decorate([Prop(), __metadata("design:type", String)], ShTagCreatorvue_type_script_lang_ts_ShTagCreator.prototype, "label", void 0);
32789
32790ShTagCreatorvue_type_script_lang_ts_ShTagCreator = __decorate([vue_class_component_common_default()({
32791 components: {
32792 ShInput: sh_input,
32793 SgTag: sh_tag_ShTag,
32794 ShField: sh_field_ShField
32795 },
32796 inject: ['$validator']
32797})], ShTagCreatorvue_type_script_lang_ts_ShTagCreator);
32798/* harmony default export */ var ShTagCreatorvue_type_script_lang_ts_ = (ShTagCreatorvue_type_script_lang_ts_ShTagCreator);
32799// CONCATENATED MODULE: ./src/components/sh-tag/ShTagCreator.vue?vue&type=script&lang=ts&
32800 /* harmony default export */ var sh_tag_ShTagCreatorvue_type_script_lang_ts_ = (ShTagCreatorvue_type_script_lang_ts_);
32801// EXTERNAL MODULE: ./src/components/sh-tag/ShTagCreator.vue?vue&type=style&index=0&lang=scss&
32802var ShTagCreatorvue_type_style_index_0_lang_scss_ = __webpack_require__("95ca");
32803
32804// CONCATENATED MODULE: ./src/components/sh-tag/ShTagCreator.vue
32805
32806
32807
32808
32809
32810
32811/* normalize component */
32812
32813var ShTagCreator_component = normalizeComponent(
32814 sh_tag_ShTagCreatorvue_type_script_lang_ts_,
32815 ShTagCreatorvue_type_template_id_77629a14_render,
32816 ShTagCreatorvue_type_template_id_77629a14_staticRenderFns,
32817 false,
32818 null,
32819 null,
32820 null
32821
32822)
32823
32824ShTagCreator_component.options.__file = "ShTagCreator.vue"
32825/* harmony default export */ var sh_tag_ShTagCreator = (ShTagCreator_component.exports);
32826// CONCATENATED MODULE: ./src/components/sh-tag/index.ts
32827
32828
32829
32830
32831// CONCATENATED MODULE: ./src/components/sh-icon/index.ts
32832
32833/* harmony default export */ var sh_icon = (sh_icon_ShIcon);
32834// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-textarea/ShTextarea.vue?vue&type=template&id=2891da1b&
32835var ShTextareavue_type_template_id_2891da1b_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('textarea',_vm._b({staticClass:"sh-textarea",attrs:{"name":_vm.textareaName,"disabled":_vm.disabled,"readonly":_vm.isReadonly,"placeholder":_vm.textareaPlaceholder},domProps:{"value":_vm.newValue},on:{"input":_vm.onInput,"focus":_vm.onFocus,"blur":_vm.onBlur,"change":_vm.onChange}},'textarea',_vm.$attrs,false))}
32836var ShTextareavue_type_template_id_2891da1b_staticRenderFns = []
32837
32838
32839// CONCATENATED MODULE: ./src/components/sh-textarea/ShTextarea.vue?vue&type=template&id=2891da1b&
32840
32841// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-textarea/ShTextarea.vue?vue&type=script&lang=ts&
32842
32843
32844
32845
32846
32847
32848
32849
32850
32851var ShTextareavue_type_script_lang_ts_ShTextarea =
32852/*#__PURE__*/
32853function (_Vue) {
32854 _inherits(ShTextarea, _Vue);
32855
32856 function ShTextarea() {
32857 var _this;
32858
32859 _classCallCheck(this, ShTextarea);
32860
32861 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShTextarea).apply(this, arguments));
32862 _this.newValue = _this.value;
32863 return _this;
32864 }
32865
32866 _createClass(ShTextarea, [{
32867 key: "onChange",
32868 value: function onChange() {
32869 this.$emit('change', this.newValue);
32870 }
32871 }, {
32872 key: "onInput",
32873 value: function onInput(event) {
32874 this.$emit('input', event.target.value);
32875 }
32876 }, {
32877 key: "onFocus",
32878 value: function onFocus() {
32879 this.$emit('focus');
32880 }
32881 }, {
32882 key: "onBlur",
32883 value: function onBlur() {
32884 this.$emit('blur');
32885 }
32886 }, {
32887 key: "valueChange",
32888 value: function valueChange(newVal, oldVal) {
32889 this.newValue = newVal;
32890 }
32891 }]);
32892
32893 return ShTextarea;
32894}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
32895
32896__decorate([Prop({
32897 default: false
32898}), __metadata("design:type", Boolean)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "disabled", void 0);
32899
32900__decorate([Prop({
32901 default: false
32902}), __metadata("design:type", Boolean)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "isReadonly", void 0);
32903
32904__decorate([Prop({
32905 required: true
32906}), __metadata("design:type", String)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "textareaName", void 0);
32907
32908__decorate([Prop({
32909 default: ''
32910}), __metadata("design:type", String)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "textareaPlaceholder", void 0);
32911
32912__decorate([Prop(), __metadata("design:type", String)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "value", void 0);
32913
32914__decorate([Watch('value'), __metadata("design:type", Function), __metadata("design:paramtypes", [String, String]), __metadata("design:returntype", void 0)], ShTextareavue_type_script_lang_ts_ShTextarea.prototype, "valueChange", null);
32915
32916ShTextareavue_type_script_lang_ts_ShTextarea = __decorate([vue_class_component_common_default()({
32917 $_veeValidate: {
32918 value: function value() {
32919 var element = this.$el;
32920 return element.value;
32921 },
32922 name: function name() {
32923 var component = this;
32924 return component.textareaName;
32925 }
32926 }
32927})], ShTextareavue_type_script_lang_ts_ShTextarea);
32928/* harmony default export */ var ShTextareavue_type_script_lang_ts_ = (ShTextareavue_type_script_lang_ts_ShTextarea);
32929// CONCATENATED MODULE: ./src/components/sh-textarea/ShTextarea.vue?vue&type=script&lang=ts&
32930 /* harmony default export */ var sh_textarea_ShTextareavue_type_script_lang_ts_ = (ShTextareavue_type_script_lang_ts_);
32931// EXTERNAL MODULE: ./src/components/sh-textarea/ShTextarea.vue?vue&type=style&index=0&lang=scss&
32932var ShTextareavue_type_style_index_0_lang_scss_ = __webpack_require__("dbe4");
32933
32934// CONCATENATED MODULE: ./src/components/sh-textarea/ShTextarea.vue
32935
32936
32937
32938
32939
32940
32941/* normalize component */
32942
32943var ShTextarea_component = normalizeComponent(
32944 sh_textarea_ShTextareavue_type_script_lang_ts_,
32945 ShTextareavue_type_template_id_2891da1b_render,
32946 ShTextareavue_type_template_id_2891da1b_staticRenderFns,
32947 false,
32948 null,
32949 null,
32950 null
32951
32952)
32953
32954ShTextarea_component.options.__file = "ShTextarea.vue"
32955/* harmony default export */ var sh_textarea_ShTextarea = (ShTextarea_component.exports);
32956// CONCATENATED MODULE: ./src/components/sh-textarea/index.ts
32957
32958/* harmony default export */ var sh_textarea = (sh_textarea_ShTextarea);
32959// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-switch/ShSwitch.vue?vue&type=template&id=fd334bbc&
32960var ShSwitchvue_type_template_id_fd334bbc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:"onoffswitch"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.value),expression:"value"},{name:"validate",rawName:"v-validate",value:(_vm.validate),expression:"validate"}],class:[
32961 'onoffswitch-checkbox',
32962 { 'error': _vm.errors.has(_vm.name) },
32963 {className: _vm.className}
32964 ],attrs:{"type":"checkbox","name":_vm.name,"id":_vm.id,"disabled":_vm.disabled,"required":_vm.required},domProps:{"checked":Array.isArray(_vm.value)?_vm._i(_vm.value,null)>-1:(_vm.value)},on:{"change":[function($event){var $$a=_vm.value,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.value=$$a.concat([$$v]))}else{$$i>-1&&(_vm.value=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.value=$$c}},_vm.change]}}),_c('label',{staticClass:"onoffswitch-label",attrs:{"for":_vm.id}})])}
32965var ShSwitchvue_type_template_id_fd334bbc_staticRenderFns = []
32966
32967
32968// CONCATENATED MODULE: ./src/components/sh-switch/ShSwitch.vue?vue&type=template&id=fd334bbc&
32969
32970// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-switch/ShSwitch.vue?vue&type=script&lang=ts&
32971
32972
32973
32974
32975
32976
32977
32978
32979
32980var ShSwitchvue_type_script_lang_ts_ShSwitch =
32981/*#__PURE__*/
32982function (_Vue) {
32983 _inherits(ShSwitch, _Vue);
32984
32985 function ShSwitch() {
32986 _classCallCheck(this, ShSwitch);
32987
32988 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShSwitch).apply(this, arguments));
32989 }
32990
32991 _createClass(ShSwitch, [{
32992 key: "change",
32993 value: function change() {
32994 this.$emit('change', this.value);
32995 }
32996 }]);
32997
32998 return ShSwitch;
32999}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33000
33001__decorate([Prop(), __metadata("design:type", String)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "id", void 0);
33002
33003__decorate([Prop(), __metadata("design:type", String)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "name", void 0);
33004
33005__decorate([Prop(), __metadata("design:type", String)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "className", void 0);
33006
33007__decorate([Prop(), __metadata("design:type", Boolean)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "disabled", void 0);
33008
33009__decorate([Prop(), __metadata("design:type", Boolean)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "required", void 0);
33010
33011__decorate([Prop(), __metadata("design:type", Boolean)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "readonly", void 0);
33012
33013__decorate([Prop(), __metadata("design:type", String)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "placeholder", void 0);
33014
33015__decorate([Prop(), __metadata("design:type", String)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "value", void 0);
33016
33017__decorate([Prop(), __metadata("design:type", Object)], ShSwitchvue_type_script_lang_ts_ShSwitch.prototype, "validate", void 0);
33018
33019ShSwitchvue_type_script_lang_ts_ShSwitch = __decorate([vue_class_component_common_default()({})], ShSwitchvue_type_script_lang_ts_ShSwitch);
33020/* harmony default export */ var ShSwitchvue_type_script_lang_ts_ = (ShSwitchvue_type_script_lang_ts_ShSwitch);
33021// CONCATENATED MODULE: ./src/components/sh-switch/ShSwitch.vue?vue&type=script&lang=ts&
33022 /* harmony default export */ var sh_switch_ShSwitchvue_type_script_lang_ts_ = (ShSwitchvue_type_script_lang_ts_);
33023// CONCATENATED MODULE: ./src/components/sh-switch/ShSwitch.vue
33024
33025
33026
33027
33028
33029/* normalize component */
33030
33031var ShSwitch_component = normalizeComponent(
33032 sh_switch_ShSwitchvue_type_script_lang_ts_,
33033 ShSwitchvue_type_template_id_fd334bbc_render,
33034 ShSwitchvue_type_template_id_fd334bbc_staticRenderFns,
33035 false,
33036 null,
33037 null,
33038 null
33039
33040)
33041
33042ShSwitch_component.options.__file = "ShSwitch.vue"
33043/* harmony default export */ var sh_switch_ShSwitch = (ShSwitch_component.exports);
33044// CONCATENATED MODULE: ./src/components/sh-switch/index.ts
33045
33046/* harmony default export */ var sh_switch = (sh_switch_ShSwitch);
33047// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-page-header/ShPageHeader.vue?vue&type=template&id=59f53add&
33048var ShPageHeadervue_type_template_id_59f53add_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"sh-page-header"},[_c('div',{staticClass:"row align-middle",class:[_vm.noHamburgerPages, _vm.setOrderOfElements]},[(_vm.hasMobileMenu)?_c('div',{staticClass:"sm-3 column hide-for-md"},[_c('ShButton',{attrs:{"id":"mobileMenuTrigger","buttonColor":"icon-outline-blue","isIcon":true,"buttonIcon":"sh-icon-hamburger","buttonSize":"small","buttonType":"button"}})],1):_vm._e(),(_vm.$slots.page_header_left)?_c('div',{staticClass:"sh-page-header-left",class:[_vm.alignmentLeftClasses]},[_vm._t("page_header_left")],2):_vm._e(),(_vm.$slots.page_header_center)?_c('div',{staticClass:"sh-page-header-center",class:[_vm.alignmentCenterClasses]},[_vm._t("page_header_center")],2):_vm._e(),(_vm.$slots.page_header_right)?_c('div',{staticClass:"sh-page-header-right align-right",class:[_vm.alignmentRightClasses]},[_vm._t("page_header_right")],2):_vm._e()])])}
33049var ShPageHeadervue_type_template_id_59f53add_staticRenderFns = []
33050
33051
33052// CONCATENATED MODULE: ./src/components/sh-page-header/ShPageHeader.vue?vue&type=template&id=59f53add&
33053
33054// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-page-header/ShPageHeader.vue?vue&type=script&lang=ts&
33055
33056
33057
33058
33059
33060
33061
33062
33063
33064
33065
33066var ShPageHeadervue_type_script_lang_ts_ShPageHeader =
33067/*#__PURE__*/
33068function (_Vue) {
33069 _inherits(ShPageHeader, _Vue);
33070
33071 function ShPageHeader() {
33072 _classCallCheck(this, ShPageHeader);
33073
33074 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShPageHeader).apply(this, arguments));
33075 }
33076
33077 _createClass(ShPageHeader, [{
33078 key: "alignmentLeftClasses",
33079 get: function get() {
33080 var _ref;
33081
33082 return _ref = {}, _defineProperty(_ref, this.alignmentLeftClass, typeof this.alignmentLeftClass !== 'undefined'), _defineProperty(_ref, 'sm-12 md-6 column', !this.$slots.page_header_center && !this.alignmentLeftClass), _defineProperty(_ref, 'sm-12 md-4 column', this.$slots.page_header_center && !this.alignmentLeftClass), _ref;
33083 }
33084 }, {
33085 key: "alignmentCenterClasses",
33086 get: function get() {
33087 var _ref2;
33088
33089 return _ref2 = {}, _defineProperty(_ref2, this.alignmentCenterClass, typeof this.alignmentCenterClass !== 'undefined'), _defineProperty(_ref2, 'sm-12 md-4 column', !this.alignmentCenterClass), _ref2;
33090 }
33091 }, {
33092 key: "alignmentRightClasses",
33093 get: function get() {
33094 var _ref3;
33095
33096 return _ref3 = {}, _defineProperty(_ref3, this.alignmentRightClass, typeof this.alignmentRightClass !== 'undefined'), _defineProperty(_ref3, 'sm-9 md-6 column', !this.$slots.page_header_center && !this.alignmentRightClass), _defineProperty(_ref3, 'sm-9 md-4 column', this.$slots.page_header_center && !this.alignmentRightClass), _ref3;
33097 }
33098 }, {
33099 key: "noHamburgerPages",
33100 get: function get() {
33101 return {
33102 'sh-no-hamburger-page': !this.hasMobileMenu
33103 };
33104 }
33105 }, {
33106 key: "setOrderOfElements",
33107 get: function get() {
33108 return {
33109 'order-elements-first': this.orderOfElements === 'btb',
33110 'order-elements-second': this.orderOfElements === 'tbb',
33111 'order-elements-third': this.orderOfElements === 'tnb',
33112 'order-elements-fourth': this.orderOfElements === 'bnt'
33113 };
33114 }
33115 }]);
33116
33117 return ShPageHeader;
33118}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33119
33120__decorate([Prop(), __metadata("design:type", String)], ShPageHeadervue_type_script_lang_ts_ShPageHeader.prototype, "alignmentLeftClass", void 0);
33121
33122__decorate([Prop(), __metadata("design:type", String)], ShPageHeadervue_type_script_lang_ts_ShPageHeader.prototype, "alignmentCenterClass", void 0);
33123
33124__decorate([Prop(), __metadata("design:type", String)], ShPageHeadervue_type_script_lang_ts_ShPageHeader.prototype, "alignmentRightClass", void 0);
33125
33126__decorate([Prop(), __metadata("design:type", Boolean)], ShPageHeadervue_type_script_lang_ts_ShPageHeader.prototype, "hasMobileMenu", void 0);
33127
33128__decorate([Prop(), __metadata("design:type", String)], ShPageHeadervue_type_script_lang_ts_ShPageHeader.prototype, "orderOfElements", void 0);
33129
33130ShPageHeadervue_type_script_lang_ts_ShPageHeader = __decorate([vue_class_component_common_default()({
33131 components: {
33132 ShButton: sh_button_ShButton
33133 }
33134})], ShPageHeadervue_type_script_lang_ts_ShPageHeader);
33135/* harmony default export */ var ShPageHeadervue_type_script_lang_ts_ = (ShPageHeadervue_type_script_lang_ts_ShPageHeader);
33136// CONCATENATED MODULE: ./src/components/sh-page-header/ShPageHeader.vue?vue&type=script&lang=ts&
33137 /* harmony default export */ var sh_page_header_ShPageHeadervue_type_script_lang_ts_ = (ShPageHeadervue_type_script_lang_ts_);
33138// EXTERNAL MODULE: ./src/components/sh-page-header/ShPageHeader.vue?vue&type=style&index=0&lang=scss&
33139var ShPageHeadervue_type_style_index_0_lang_scss_ = __webpack_require__("6077");
33140
33141// CONCATENATED MODULE: ./src/components/sh-page-header/ShPageHeader.vue
33142
33143
33144
33145
33146
33147
33148/* normalize component */
33149
33150var ShPageHeader_component = normalizeComponent(
33151 sh_page_header_ShPageHeadervue_type_script_lang_ts_,
33152 ShPageHeadervue_type_template_id_59f53add_render,
33153 ShPageHeadervue_type_template_id_59f53add_staticRenderFns,
33154 false,
33155 null,
33156 null,
33157 null
33158
33159)
33160
33161ShPageHeader_component.options.__file = "ShPageHeader.vue"
33162/* harmony default export */ var sh_page_header_ShPageHeader = (ShPageHeader_component.exports);
33163// CONCATENATED MODULE: ./src/components/sh-page-header/index.ts
33164
33165/* harmony default export */ var sh_page_header = (sh_page_header_ShPageHeader);
33166// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dragable-tags/ShDragableTags.vue?vue&type=template&id=307a09a9&scoped=true&
33167var ShDragableTagsvue_type_template_id_307a09a9_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-dragable-tags"},[(_vm.header)?_c('h6',[_vm._v(_vm._s(_vm.header))]):_vm._e(),_c('div',{staticClass:"sh-no-dragable-element"},[_vm._t("withoutDragable")],2),_c('draggable',{attrs:{"options":{handle:'.sh-icon-drag-n-drop', animation:_vm.animationSpeed},"move":_vm.onMoveItem},on:{"start":function($event){_vm.drag=true},"end":_vm.regenerateList},model:{value:(_vm.items),callback:function ($$v) {_vm.items=$$v},expression:"items"}},_vm._l((_vm.items),function(item){return (_vm.items)?_c('div',{key:item.key,staticClass:"sh-drag-element"},[_c('ShTagButton',{attrs:{"isWidth100":_vm.setWidth100,"isCloseable":!item.isNotClosable,"isDragable":!item.isNotDraggable,"tagContent":item.content},on:{"deleteClicked":function($event){_vm.deleteElement(item.key)}}})],1):_vm._e()}))],1)}
33168var ShDragableTagsvue_type_template_id_307a09a9_scoped_true_staticRenderFns = []
33169
33170
33171// CONCATENATED MODULE: ./src/components/sh-dragable-tags/ShDragableTags.vue?vue&type=template&id=307a09a9&scoped=true&
33172
33173// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dragable-tags/ShDragableTags.vue?vue&type=script&lang=ts&
33174
33175
33176
33177
33178
33179
33180
33181
33182
33183
33184
33185var ShDragableTagsvue_type_script_lang_ts_ShDragableTags =
33186/*#__PURE__*/
33187function (_Vue) {
33188 _inherits(ShDragableTags, _Vue);
33189
33190 function ShDragableTags() {
33191 var _this;
33192
33193 _classCallCheck(this, ShDragableTags);
33194
33195 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShDragableTags).apply(this, arguments));
33196 _this.items = _this.listItems;
33197 return _this;
33198 }
33199
33200 _createClass(ShDragableTags, [{
33201 key: "regenerateList",
33202 value: function regenerateList(data) {
33203 this.$emit('onChangeListRegenerate', this.items);
33204 }
33205 }, {
33206 key: "deleteElement",
33207 value: function deleteElement(item) {
33208 this.$emit('onElementDelete', item);
33209 }
33210 }, {
33211 key: "onMoveItem",
33212 value: function onMoveItem(event) {
33213 return !event.relatedContext.element.isNotDraggable;
33214 }
33215 }, {
33216 key: "onItemsChange",
33217 value: function onItemsChange(val) {
33218 this.items = val;
33219 }
33220 }]);
33221
33222 return ShDragableTags;
33223}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33224
33225__decorate([Prop({
33226 default: ''
33227}), __metadata("design:type", String)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "header", void 0);
33228
33229__decorate([Prop({
33230 default: 300
33231}), __metadata("design:type", Number)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "animationSpeed", void 0);
33232
33233__decorate([Prop(), __metadata("design:type", Array)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "disabledItems", void 0);
33234
33235__decorate([Prop({
33236 default: true
33237}), __metadata("design:type", Boolean)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "setWidth100", void 0);
33238
33239__decorate([Prop(), __metadata("design:type", Array)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "listItems", void 0);
33240
33241__decorate([Watch('listItems'), __metadata("design:type", Function), __metadata("design:paramtypes", [Array]), __metadata("design:returntype", void 0)], ShDragableTagsvue_type_script_lang_ts_ShDragableTags.prototype, "onItemsChange", null);
33242
33243ShDragableTagsvue_type_script_lang_ts_ShDragableTags = __decorate([vue_class_component_common_default()({
33244 components: {
33245 ShTagButton: sh_tag_ShTagButton,
33246 draggable: vuedraggable_default.a
33247 }
33248})], ShDragableTagsvue_type_script_lang_ts_ShDragableTags);
33249/* harmony default export */ var ShDragableTagsvue_type_script_lang_ts_ = (ShDragableTagsvue_type_script_lang_ts_ShDragableTags);
33250// CONCATENATED MODULE: ./src/components/sh-dragable-tags/ShDragableTags.vue?vue&type=script&lang=ts&
33251 /* harmony default export */ var sh_dragable_tags_ShDragableTagsvue_type_script_lang_ts_ = (ShDragableTagsvue_type_script_lang_ts_);
33252// EXTERNAL MODULE: ./src/components/sh-dragable-tags/ShDragableTags.vue?vue&type=style&index=0&id=307a09a9&lang=scss&scoped=true&
33253var ShDragableTagsvue_type_style_index_0_id_307a09a9_lang_scss_scoped_true_ = __webpack_require__("c2ce");
33254
33255// CONCATENATED MODULE: ./src/components/sh-dragable-tags/ShDragableTags.vue
33256
33257
33258
33259
33260
33261
33262/* normalize component */
33263
33264var ShDragableTags_component = normalizeComponent(
33265 sh_dragable_tags_ShDragableTagsvue_type_script_lang_ts_,
33266 ShDragableTagsvue_type_template_id_307a09a9_scoped_true_render,
33267 ShDragableTagsvue_type_template_id_307a09a9_scoped_true_staticRenderFns,
33268 false,
33269 null,
33270 "307a09a9",
33271 null
33272
33273)
33274
33275ShDragableTags_component.options.__file = "ShDragableTags.vue"
33276/* harmony default export */ var sh_dragable_tags_ShDragableTags = (ShDragableTags_component.exports);
33277// CONCATENATED MODULE: ./src/components/sh-dragable-tags/index.ts
33278
33279/* harmony default export */ var sh_dragable_tags = (sh_dragable_tags_ShDragableTags);
33280// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dropdown/ShDropdown.vue?vue&type=template&id=6d443b60&
33281var ShDropdownvue_type_template_id_6d443b60_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:"sh-dropdown"},[_c('transition',{attrs:{"name":"fade"}},[(_vm.isMobileModal)?_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showPopper),expression:"showPopper"}],staticClass:"sh-dropdown-background"}):_vm._e()]),_c('transition',{on:{"after-leave":_vm.doDestroy}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.disabled && _vm.showPopper),expression:"!disabled && showPopper"}]},[_c('div',{ref:"dropdownMenu",staticClass:"sh-dropdown-menu",style:(_vm.styleObject)},[_vm._t("default")],2)])]),_c('span',{ref:"trigger",staticClass:"sh-dropdown-trigger",attrs:{"role":"button"}},[_vm._t("reference")],2)],1)}
33282var ShDropdownvue_type_template_id_6d443b60_staticRenderFns = []
33283
33284
33285// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdown.vue?vue&type=template&id=6d443b60&
33286
33287// EXTERNAL MODULE: ./node_modules/popper.js/dist/esm/popper.js
33288var popper = __webpack_require__("f0bd");
33289
33290// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dropdown/ShDropdown.vue?vue&type=script&lang=ts&
33291
33292
33293
33294
33295
33296
33297
33298
33299var ShDropdown_1;
33300
33301
33302
33303var ShDropdownvue_type_script_lang_ts_ShDropdown = ShDropdown_1 =
33304/*#__PURE__*/
33305function (_Vue) {
33306 _inherits(ShDropdown, _Vue);
33307
33308 function ShDropdown() {
33309 var _this;
33310
33311 _classCallCheck(this, ShDropdown);
33312
33313 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShDropdown).apply(this, arguments));
33314 _this.referenceElm = null;
33315 _this.popperJS = null;
33316 _this.showPopper = false;
33317 _this.popperOptions = {
33318 placement: _this.position,
33319 computeStyle: {
33320 gpuAcceleration: false
33321 }
33322 };
33323 _this.timer = null;
33324 _this.appendedArrow = false;
33325 _this.appendedToBody = false;
33326 _this.popper = null;
33327 _this.tooltipTypes = {
33328 default: 'sh-tooltip-default',
33329 error: 'sh-tooltip-error',
33330 warning: 'sh-tooltip-warning',
33331 info: 'sh-tooltip-info'
33332 };
33333 _this.styleObject = {
33334 maxWidth: _this.width + 'px'
33335 };
33336 return _this;
33337 }
33338
33339 _createClass(ShDropdown, [{
33340 key: "created",
33341 value: function created() {
33342 this.popperOptions = assign_default()(this.popperOptions, this.options);
33343 }
33344 }, {
33345 key: "mounted",
33346 value: function mounted() {
33347 this.referenceElm = this.$slots.reference[0].elm;
33348 this.popper = this.$refs.dropdownMenu;
33349
33350 switch (this.trigger) {
33351 case 'click':
33352 ShDropdown_1.on(this.referenceElm, 'click', this.doToggle);
33353 ShDropdown_1.on(document, 'click', this.handleDocumentClick);
33354 break;
33355
33356 case 'hover':
33357 ShDropdown_1.on(this.referenceElm, 'mouseover', this.onMouseOver);
33358 ShDropdown_1.on(this.referenceElm, 'focus', this.onMouseOver);
33359 ShDropdown_1.on(this.popper, 'mouseover', this.onMouseOver);
33360 ShDropdown_1.on(this.popper, 'focus', this.onMouseOver);
33361 ShDropdown_1.on(this.referenceElm, 'mouseout', this.onMouseOut);
33362 ShDropdown_1.on(this.referenceElm, 'blur', this.onMouseOut);
33363 ShDropdown_1.on(this.popper, 'mouseout', this.onMouseOut);
33364 ShDropdown_1.on(this.popper, 'blur', this.onMouseOut);
33365 break;
33366 }
33367 }
33368 }, {
33369 key: "doToggle",
33370 value: function doToggle(event) {
33371 if (this.stopPropagation) {
33372 event.stopPropagation();
33373 }
33374
33375 if (this.preventDefault) {
33376 event.preventDefault();
33377 }
33378
33379 if (!this.forceShow) {
33380 this.showPopper = !this.showPopper;
33381 }
33382 }
33383 }, {
33384 key: "doShow",
33385 value: function doShow() {
33386 this.showPopper = true;
33387 }
33388 }, {
33389 key: "doClose",
33390 value: function doClose() {
33391 this.showPopper = false;
33392 }
33393 }, {
33394 key: "doDestroy",
33395 value: function doDestroy() {
33396 if (this.showPopper) {
33397 return;
33398 }
33399
33400 if (this.popperJS) {
33401 this.popperJS.destroy();
33402 this.popperJS = null;
33403 }
33404
33405 if (this.appendedToBody) {
33406 this.appendedToBody = false;
33407 document.body.removeChild(this.popper.parentElement);
33408 }
33409 }
33410 }, {
33411 key: "createPopper",
33412 value: function createPopper() {
33413 var _this2 = this;
33414
33415 this.$nextTick(function () {
33416 if (_this2.visibleArrow) {
33417 _this2.appendArrow(_this2.popper);
33418 }
33419
33420 if (_this2.isTooltip) {
33421 _this2.appendTooltipClass(_this2.popper);
33422 }
33423
33424 if (_this2.appendToBody && !_this2.appendedToBody) {
33425 _this2.appendedToBody = true;
33426 document.body.appendChild(_this2.popper.parentElement);
33427 }
33428
33429 if (_this2.popperJS && _this2.popperJS.destroy) {
33430 _this2.popperJS.destroy();
33431 }
33432
33433 if (_this2.boundariesSelector) {
33434 var boundariesElement = document.querySelector(_this2.boundariesSelector);
33435
33436 if (boundariesElement) {
33437 _this2.popperOptions.modifiers = assign_default()({}, _this2.popperOptions.modifiers);
33438 _this2.popperOptions.modifiers.preventOverflow = assign_default()({}, _this2.popperOptions.modifiers.preventOverflow);
33439 _this2.popperOptions.modifiers.preventOverflow.boundariesElement = boundariesElement;
33440 }
33441 }
33442
33443 _this2.popperOptions.onCreate = function () {
33444 _this2.$emit('created', _this2);
33445
33446 _this2.$nextTick(_this2.updatePopper);
33447 };
33448
33449 _this2.popperJS = new popper["a" /* default */](_this2.referenceElm, _this2.popper, _this2.popperOptions);
33450 });
33451 }
33452 }, {
33453 key: "destroyPopper",
33454 value: function destroyPopper() {
33455 ShDropdown_1.off(this.referenceElm, 'click', this.doToggle);
33456 ShDropdown_1.off(this.referenceElm, 'mouseup', this.doClose);
33457 ShDropdown_1.off(this.referenceElm, 'mousedown', this.doShow);
33458 ShDropdown_1.off(this.referenceElm, 'focus', this.doShow);
33459 ShDropdown_1.off(this.referenceElm, 'blur', this.doClose);
33460 ShDropdown_1.off(this.referenceElm, 'mouseout', this.onMouseOut);
33461 ShDropdown_1.off(this.referenceElm, 'mouseover', this.onMouseOver);
33462 ShDropdown_1.off(document, 'click', this.handleDocumentClick);
33463 this.showPopper = false;
33464 this.doDestroy();
33465 }
33466 }, {
33467 key: "appendTooltipClass",
33468 value: function appendTooltipClass(element) {
33469 element.classList.add(this.tooltipClass);
33470 }
33471 }, {
33472 key: "appendArrow",
33473 value: function appendArrow(element) {
33474 if (this.appendedArrow) {
33475 return;
33476 }
33477
33478 this.appendedArrow = true;
33479 element.classList.add('sh-has-arrow');
33480 }
33481 }, {
33482 key: "updatePopper",
33483 value: function updatePopper() {
33484 this.popperJS ? this.popperJS.scheduleUpdate() : this.createPopper();
33485 }
33486 }, {
33487 key: "onMouseOver",
33488 value: function onMouseOver() {
33489 var _this3 = this;
33490
33491 clearTimeout(this.timer);
33492 this.timer = setTimeout(function () {
33493 _this3.showPopper = true;
33494 }, this.delayOnMouseOver);
33495 }
33496 }, {
33497 key: "onMouseOut",
33498 value: function onMouseOut() {
33499 var _this4 = this;
33500
33501 clearTimeout(this.timer);
33502 this.timer = setTimeout(function () {
33503 _this4.showPopper = false;
33504 }, this.delayOnMouseOut);
33505 }
33506 }, {
33507 key: "handleDocumentClick",
33508 value: function handleDocumentClick(e) {
33509 if (!this.$el || !this.referenceElm || this.elementContains(this.$el, e.target) || this.elementContains(this.referenceElm, e.target) || !this.popper || this.elementContains(this.popper, e.target)) {
33510 return;
33511 }
33512
33513 this.$emit('documentClick', this);
33514
33515 if (this.forceShow) {
33516 return;
33517 }
33518
33519 this.showPopper = false;
33520 }
33521 }, {
33522 key: "elementContains",
33523 value: function elementContains(elm, otherElm) {
33524 if (typeof elm.contains === 'function') {
33525 return elm.contains(otherElm);
33526 }
33527
33528 return false;
33529 }
33530 }, {
33531 key: "selectItem",
33532 value: function selectItem(value) {
33533 this.$emit('input', value);
33534 this.doClose();
33535 }
33536 }, {
33537 key: "destroyed",
33538 value: function destroyed() {
33539 this.destroyPopper();
33540 }
33541 }, {
33542 key: "watchShowPopper",
33543 value: function watchShowPopper(val) {
33544 if (val) {
33545 this.$emit('show', this);
33546
33547 if (this.popperJS) {
33548 this.popperJS.enableEventListeners();
33549 }
33550
33551 this.updatePopper();
33552 } else {
33553 if (this.popperJS) {
33554 this.popperJS.disableEventListeners();
33555 }
33556
33557 this.$emit('hide', this);
33558 }
33559 }
33560 }, {
33561 key: "watchForceHide",
33562 value: function watchForceHide(val) {
33563 if (val) {
33564 this.doClose();
33565 }
33566 }
33567 }, {
33568 key: "watchDisabled",
33569 value: function watchDisabled(val) {
33570 if (val) {
33571 this.showPopper = false;
33572 }
33573 }
33574 }, {
33575 key: "watchForceShow",
33576 value: function watchForceShow(val) {
33577 this[val ? 'doShow' : 'doClose']();
33578 }
33579 }, {
33580 key: "isMobileModal",
33581 get: function get() {
33582 return this.mobileModal && this.trigger !== 'hover';
33583 }
33584 }, {
33585 key: "tooltipClass",
33586 get: function get() {
33587 return this.tooltipTypes[this.tooltipType];
33588 }
33589 }], [{
33590 key: "on",
33591 value: function on(element, event, handler) {
33592 if (element && event && handler) {
33593 document.addEventListener ? element.addEventListener(event, handler, false) : element.attachEvent('on' + event, handler);
33594 }
33595 }
33596 }, {
33597 key: "off",
33598 value: function off(element, event, handler) {
33599 if (element && event) {
33600 document.removeEventListener ? element.removeEventListener(event, handler, false) : element.detachEvent('on' + event, handler);
33601 }
33602 }
33603 }]);
33604
33605 return ShDropdown;
33606}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33607
33608__decorate([Prop({
33609 default: 'click',
33610 validator: function validator(value) {
33611 return ['click', 'hover'].indexOf(value) > -1;
33612 }
33613}), __metadata("design:type", String)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "trigger", void 0);
33614
33615__decorate([Prop({
33616 default: 10
33617}), __metadata("design:type", Number)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "delayOnMouseOver", void 0);
33618
33619__decorate([Prop({
33620 default: 10
33621}), __metadata("design:type", Number)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "delayOnMouseOut", void 0);
33622
33623__decorate([Prop({
33624 default: false
33625}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "disabled", void 0);
33626
33627__decorate([Prop(), __metadata("design:type", String)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "boundariesSelector", void 0);
33628
33629__decorate([Prop({
33630 default: 350
33631}), __metadata("design:type", Number)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "width", void 0);
33632
33633__decorate([Prop({
33634 default: 'top'
33635}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "position", void 0);
33636
33637__decorate([Prop({
33638 default: false
33639}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "forceShow", void 0);
33640
33641__decorate([Prop({
33642 default: false
33643}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "forceHide", void 0);
33644
33645__decorate([Prop({
33646 default: true
33647}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "appendToBody", void 0);
33648
33649__decorate([Prop({
33650 default: true
33651}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "visibleArrow", void 0);
33652
33653__decorate([Prop({
33654 default: false
33655}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "stopPropagation", void 0);
33656
33657__decorate([Prop({
33658 default: false
33659}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "preventDefault", void 0);
33660
33661__decorate([Prop({
33662 default: null
33663}), __metadata("design:type", Object)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "options", void 0);
33664
33665__decorate([Prop({
33666 default: false
33667}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "mobileModal", void 0);
33668
33669__decorate([Prop({
33670 default: 'default'
33671}), __metadata("design:type", String)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "tooltipType", void 0);
33672
33673__decorate([Prop({
33674 default: false
33675}), __metadata("design:type", Boolean)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "isTooltip", void 0);
33676
33677__decorate([Watch('showPopper'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "watchShowPopper", null);
33678
33679__decorate([Watch('forceHide'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "watchForceHide", null);
33680
33681__decorate([Watch('disabled'), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "watchDisabled", null);
33682
33683__decorate([Watch('forceShow', {
33684 immediate: true
33685}), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0)], ShDropdownvue_type_script_lang_ts_ShDropdown.prototype, "watchForceShow", null);
33686
33687ShDropdownvue_type_script_lang_ts_ShDropdown = ShDropdown_1 = __decorate([vue_class_component_common_default.a], ShDropdownvue_type_script_lang_ts_ShDropdown);
33688/* harmony default export */ var ShDropdownvue_type_script_lang_ts_ = (ShDropdownvue_type_script_lang_ts_ShDropdown);
33689// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdown.vue?vue&type=script&lang=ts&
33690 /* harmony default export */ var sh_dropdown_ShDropdownvue_type_script_lang_ts_ = (ShDropdownvue_type_script_lang_ts_);
33691// EXTERNAL MODULE: ./src/components/sh-dropdown/ShDropdown.vue?vue&type=style&index=0&lang=scss&
33692var ShDropdownvue_type_style_index_0_lang_scss_ = __webpack_require__("5317");
33693
33694// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdown.vue
33695
33696
33697
33698
33699
33700
33701/* normalize component */
33702
33703var ShDropdown_component = normalizeComponent(
33704 sh_dropdown_ShDropdownvue_type_script_lang_ts_,
33705 ShDropdownvue_type_template_id_6d443b60_render,
33706 ShDropdownvue_type_template_id_6d443b60_staticRenderFns,
33707 false,
33708 null,
33709 null,
33710 null
33711
33712)
33713
33714ShDropdown_component.options.__file = "ShDropdown.vue"
33715/* harmony default export */ var sh_dropdown_ShDropdown = (ShDropdown_component.exports);
33716// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dropdown/ShDropdownItem.vue?vue&type=template&id=01e2e942&
33717var ShDropdownItemvue_type_template_id_01e2e942_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.separator)?_c('hr',{staticClass:"sh-dropdown-divider"}):(_vm.isTooltip)?_c('div',{staticClass:"sh-tooltip align-top",class:_vm.tooltipClasses},[(_vm.tooltipIcon)?_c('ShIcon',{attrs:{"iconName":_vm.tooltipIcon}}):_vm._e(),_c('div',{staticClass:"sh-tooltip-content"},[_c('h2',[_vm._v(_vm._s(_vm.tooltipTitle))]),_c('p',[_vm._v(_vm._s(_vm.tooltipContent))])])],1):(!_vm.custom && !_vm.hasLink)?_c('a',{staticClass:"sh-dropdown-item",class:_vm.anchorClasses,on:{"click":_vm.selectItem}},[_vm._t("default")],2):_c('div',{class:_vm.itemClasses,on:{"click":_vm.selectItem}},[_vm._t("default")],2)}
33718var ShDropdownItemvue_type_template_id_01e2e942_staticRenderFns = []
33719
33720
33721// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdownItem.vue?vue&type=template&id=01e2e942&
33722
33723// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-dropdown/ShDropdownItem.vue?vue&type=script&lang=ts&
33724
33725
33726
33727
33728
33729
33730
33731
33732
33733
33734var ShDropdownItemvue_type_script_lang_ts_ShDropdownItem =
33735/*#__PURE__*/
33736function (_Vue) {
33737 _inherits(ShDropdownItem, _Vue);
33738
33739 function ShDropdownItem() {
33740 _classCallCheck(this, ShDropdownItem);
33741
33742 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShDropdownItem).apply(this, arguments));
33743 }
33744
33745 _createClass(ShDropdownItem, [{
33746 key: "selectItem",
33747 value: function selectItem() {
33748 if (!this.isClickable) {
33749 return;
33750 }
33751
33752 var parent = this.$parent;
33753 parent.selectItem(this.value);
33754 this.$emit('click');
33755 }
33756 }, {
33757 key: "anchorClasses",
33758 get: function get() {
33759 var parent = this.$parent;
33760 return {
33761 'is-disabled': parent.disabled || this.disabled,
33762 'is-paddingless': this.paddingless,
33763 'is-active': this.value !== null && this.value === parent.selected
33764 };
33765 }
33766 }, {
33767 key: "tooltipClasses",
33768 get: function get() {
33769 return {
33770 'no-icon': !this.tooltipIcon
33771 };
33772 }
33773 }, {
33774 key: "itemClasses",
33775 get: function get() {
33776 var parent = this.$parent;
33777 return {
33778 'dropdown-item': !this.hasLink,
33779 'is-disabled': this.disabled,
33780 'is-paddingless': this.paddingless,
33781 'is-active': this.value !== null && this.value === parent.selected,
33782 'has-link': this.hasLink
33783 };
33784 }
33785 /**
33786 * Check if item can be clickable.
33787 */
33788
33789 }, {
33790 key: "isClickable",
33791 get: function get() {
33792 var parent = this.$parent;
33793 return !parent.disabled && !this.separator && !this.disabled && !this.custom;
33794 }
33795 }]);
33796
33797 return ShDropdownItem;
33798}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33799
33800__decorate([Prop({
33801 default: null
33802}), __metadata("design:type", Object)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "value", void 0);
33803
33804__decorate([Prop({
33805 default: false
33806}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "separator", void 0);
33807
33808__decorate([Prop({
33809 default: false
33810}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "disabled", void 0);
33811
33812__decorate([Prop({
33813 default: false
33814}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "custom", void 0);
33815
33816__decorate([Prop({
33817 default: false
33818}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "paddingless", void 0);
33819
33820__decorate([Prop({
33821 default: false
33822}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "hasLink", void 0);
33823
33824__decorate([Prop({
33825 default: false
33826}), __metadata("design:type", Boolean)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "isTooltip", void 0);
33827
33828__decorate([Prop(), __metadata("design:type", String)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "tooltipTitle", void 0);
33829
33830__decorate([Prop(), __metadata("design:type", String)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "tooltipContent", void 0);
33831
33832__decorate([Prop(), __metadata("design:type", String)], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem.prototype, "tooltipIcon", void 0);
33833
33834ShDropdownItemvue_type_script_lang_ts_ShDropdownItem = __decorate([vue_class_component_common_default()({
33835 components: {
33836 ShIcon: sh_icon_ShIcon
33837 }
33838})], ShDropdownItemvue_type_script_lang_ts_ShDropdownItem);
33839/* harmony default export */ var ShDropdownItemvue_type_script_lang_ts_ = (ShDropdownItemvue_type_script_lang_ts_ShDropdownItem);
33840// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdownItem.vue?vue&type=script&lang=ts&
33841 /* harmony default export */ var sh_dropdown_ShDropdownItemvue_type_script_lang_ts_ = (ShDropdownItemvue_type_script_lang_ts_);
33842// EXTERNAL MODULE: ./src/components/sh-dropdown/ShDropdownItem.vue?vue&type=style&index=0&lang=scss&
33843var ShDropdownItemvue_type_style_index_0_lang_scss_ = __webpack_require__("ec06");
33844
33845// CONCATENATED MODULE: ./src/components/sh-dropdown/ShDropdownItem.vue
33846
33847
33848
33849
33850
33851
33852/* normalize component */
33853
33854var ShDropdownItem_component = normalizeComponent(
33855 sh_dropdown_ShDropdownItemvue_type_script_lang_ts_,
33856 ShDropdownItemvue_type_template_id_01e2e942_render,
33857 ShDropdownItemvue_type_template_id_01e2e942_staticRenderFns,
33858 false,
33859 null,
33860 null,
33861 null
33862
33863)
33864
33865ShDropdownItem_component.options.__file = "ShDropdownItem.vue"
33866/* harmony default export */ var sh_dropdown_ShDropdownItem = (ShDropdownItem_component.exports);
33867// CONCATENATED MODULE: ./src/components/sh-dropdown/index.ts
33868
33869
33870
33871// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-notification-banner/ShNotificationBanner.vue?vue&type=template&id=754887fc&
33872var ShNotificationBannervue_type_template_id_754887fc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-notification-banner",class:[_vm.classes]},[(_vm.notificationBannerIcon && !_vm.notificationBannerImage)?_c('span',{staticClass:"sh-notification-icon"},[_c('ShIcon',{attrs:{"iconName":_vm.notificationBannerIcon}})],1):_vm._e(),(!_vm.notificationBannerIcon && _vm.notificationBannerImage)?_c('img',{staticClass:"sh-notification-image",attrs:{"src":_vm.notificationBannerImage}}):_vm._e(),_vm._t("content"),(_vm.isClosable || _vm.notificationBannerButtonContent)?_c('div',{staticClass:"sh-notification-actions"},[(_vm.notificationBannerButtonContent)?_c('div',{staticClass:"sh-notification-button"},[_c('ShButton',{attrs:{"buttonContent":_vm.notificationBannerButtonContent,"buttonSize":_vm.notificationBannerButtonSize,"buttonColor":_vm.notificationBannerButtonColor},on:{"click":_vm.buttonClicked}})],1):_vm._e(),(_vm.isClosable)?_c('span',{staticClass:"sh-close-notification",on:{"click":_vm.close}},[_c('ShIcon',{attrs:{"iconName":'sh-icon-close-small'}})],1):_vm._e()]):_vm._e()],2)}
33873var ShNotificationBannervue_type_template_id_754887fc_staticRenderFns = []
33874
33875
33876// CONCATENATED MODULE: ./src/components/sh-notification-banner/ShNotificationBanner.vue?vue&type=template&id=754887fc&
33877
33878// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-notification-banner/ShNotificationBanner.vue?vue&type=script&lang=ts&
33879
33880
33881
33882
33883
33884
33885
33886
33887
33888
33889
33890
33891var ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner =
33892/*#__PURE__*/
33893function (_Vue) {
33894 _inherits(ShNotificationBanner, _Vue);
33895
33896 function ShNotificationBanner() {
33897 var _this;
33898
33899 _classCallCheck(this, ShNotificationBanner);
33900
33901 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShNotificationBanner).apply(this, arguments));
33902 _this.colorTypes = {
33903 'success': 'sh-notification-success',
33904 'warning': 'sh-notification-warning',
33905 'error': 'sh-notification-error',
33906 'info-light': 'sh-notification-info-light',
33907 'info': 'sh-notification-info',
33908 'info-dark': 'sh-notification-info-dark'
33909 };
33910 return _this;
33911 }
33912
33913 _createClass(ShNotificationBanner, [{
33914 key: "close",
33915 value: function close() {
33916 this.$emit('notificationCloseClicked');
33917 }
33918 }, {
33919 key: "buttonClicked",
33920 value: function buttonClicked() {
33921 this.$emit('notificationButtonClicked');
33922 }
33923 }, {
33924 key: "classes",
33925 get: function get() {
33926 var _ref;
33927
33928 return _ref = {}, _defineProperty(_ref, this.colorClass, true), _defineProperty(_ref, 'sh-closable-notification', this.isClosable), _defineProperty(_ref, 'sh-notification-with-icon', this.notificationBannerIcon), _defineProperty(_ref, 'sh-notification-with-image', this.notificationBannerImage), _defineProperty(_ref, 'sh-notification-with-small-image', this.isNotificationBannerWithSmallImage), _defineProperty(_ref, 'is-borderless', this.isBorderless), _defineProperty(_ref, 'is-shadowless', this.isShadowless), _defineProperty(_ref, 'is-roundedless', this.isRoundedless), _defineProperty(_ref, 'sh-colored-buttons', this.hasColoredButtons), _ref;
33929 }
33930 }, {
33931 key: "colorClass",
33932 get: function get() {
33933 return this.colorTypes[this.notificationBannerType];
33934 }
33935 }]);
33936
33937 return ShNotificationBanner;
33938}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
33939
33940__decorate([Prop(), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerButtonColor", void 0);
33941
33942__decorate([Prop(), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerButtonContent", void 0);
33943
33944__decorate([Prop({
33945 default: 'small'
33946}), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerButtonSize", void 0);
33947
33948__decorate([Prop(), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerIcon", void 0);
33949
33950__decorate([Prop(), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerImage", void 0);
33951
33952__decorate([Prop({
33953 required: true,
33954 default: 'success'
33955}), __metadata("design:type", String)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "notificationBannerType", void 0);
33956
33957__decorate([Prop({
33958 default: false
33959}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "isNotificationBannerWithSmallImage", void 0);
33960
33961__decorate([Prop({
33962 default: false
33963}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "isClosable", void 0);
33964
33965__decorate([Prop({
33966 default: false
33967}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "isBorderless", void 0);
33968
33969__decorate([Prop({
33970 default: false
33971}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "isShadowless", void 0);
33972
33973__decorate([Prop({
33974 default: false
33975}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "isRoundedless", void 0);
33976
33977__decorate([Prop({
33978 default: true
33979}), __metadata("design:type", Boolean)], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner.prototype, "hasColoredButtons", void 0);
33980
33981ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner = __decorate([vue_class_component_common_default()({
33982 components: {
33983 ShIcon: sh_icon_ShIcon,
33984 ShButton: sh_button_ShButton
33985 }
33986})], ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner);
33987/* harmony default export */ var ShNotificationBannervue_type_script_lang_ts_ = (ShNotificationBannervue_type_script_lang_ts_ShNotificationBanner);
33988// CONCATENATED MODULE: ./src/components/sh-notification-banner/ShNotificationBanner.vue?vue&type=script&lang=ts&
33989 /* harmony default export */ var sh_notification_banner_ShNotificationBannervue_type_script_lang_ts_ = (ShNotificationBannervue_type_script_lang_ts_);
33990// EXTERNAL MODULE: ./src/components/sh-notification-banner/ShNotificationBanner.vue?vue&type=style&index=0&lang=scss&
33991var ShNotificationBannervue_type_style_index_0_lang_scss_ = __webpack_require__("177a");
33992
33993// CONCATENATED MODULE: ./src/components/sh-notification-banner/ShNotificationBanner.vue
33994
33995
33996
33997
33998
33999
34000/* normalize component */
34001
34002var ShNotificationBanner_component = normalizeComponent(
34003 sh_notification_banner_ShNotificationBannervue_type_script_lang_ts_,
34004 ShNotificationBannervue_type_template_id_754887fc_render,
34005 ShNotificationBannervue_type_template_id_754887fc_staticRenderFns,
34006 false,
34007 null,
34008 null,
34009 null
34010
34011)
34012
34013ShNotificationBanner_component.options.__file = "ShNotificationBanner.vue"
34014/* harmony default export */ var sh_notification_banner_ShNotificationBanner = (ShNotificationBanner_component.exports);
34015// CONCATENATED MODULE: ./src/components/sh-notification-banner/index.ts
34016
34017/* harmony default export */ var sh_notification_banner = (sh_notification_banner_ShNotificationBanner);
34018// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-blankslate/ShBlankslate.vue?vue&type=template&id=b912b190&
34019var ShBlankslatevue_type_template_id_b912b190_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-blankslate-wrapper"},[(_vm.$slots.default)?_c('div',{staticClass:"sh-blankslate"},[_vm._t("default")],2):_c('div',{staticClass:"sh-blankslate"},[_c('ShCardWidget',{attrs:{"imgSrc":_vm.imgSrc,"title":_vm.title,"description":_vm.description,"type":"blankslate"}},[_c('div',{attrs:{"slot":"action"},slot:"action"},[_vm._t("action")],2)])],1)])}
34020var ShBlankslatevue_type_template_id_b912b190_staticRenderFns = []
34021
34022
34023// CONCATENATED MODULE: ./src/components/sh-blankslate/ShBlankslate.vue?vue&type=template&id=b912b190&
34024
34025// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-blankslate/ShBlankslate.vue?vue&type=script&lang=ts&
34026
34027
34028
34029
34030
34031
34032
34033
34034
34035var ShBlankslatevue_type_script_lang_ts_ShBlankslate =
34036/*#__PURE__*/
34037function (_Vue) {
34038 _inherits(ShBlankslate, _Vue);
34039
34040 function ShBlankslate() {
34041 _classCallCheck(this, ShBlankslate);
34042
34043 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShBlankslate).apply(this, arguments));
34044 }
34045
34046 return ShBlankslate;
34047}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34048
34049__decorate([Prop(), __metadata("design:type", String)], ShBlankslatevue_type_script_lang_ts_ShBlankslate.prototype, "imgSrc", void 0);
34050
34051__decorate([Prop(), __metadata("design:type", String)], ShBlankslatevue_type_script_lang_ts_ShBlankslate.prototype, "title", void 0);
34052
34053__decorate([Prop(), __metadata("design:type", String)], ShBlankslatevue_type_script_lang_ts_ShBlankslate.prototype, "description", void 0);
34054
34055ShBlankslatevue_type_script_lang_ts_ShBlankslate = __decorate([vue_class_component_common_default()({
34056 components: {
34057 ShCardWidget: sh_card_ShCardWidget
34058 }
34059})], ShBlankslatevue_type_script_lang_ts_ShBlankslate);
34060/* harmony default export */ var ShBlankslatevue_type_script_lang_ts_ = (ShBlankslatevue_type_script_lang_ts_ShBlankslate);
34061// CONCATENATED MODULE: ./src/components/sh-blankslate/ShBlankslate.vue?vue&type=script&lang=ts&
34062 /* harmony default export */ var sh_blankslate_ShBlankslatevue_type_script_lang_ts_ = (ShBlankslatevue_type_script_lang_ts_);
34063// EXTERNAL MODULE: ./src/components/sh-blankslate/ShBlankslate.vue?vue&type=style&index=0&lang=scss&
34064var ShBlankslatevue_type_style_index_0_lang_scss_ = __webpack_require__("2625");
34065
34066// CONCATENATED MODULE: ./src/components/sh-blankslate/ShBlankslate.vue
34067
34068
34069
34070
34071
34072
34073/* normalize component */
34074
34075var ShBlankslate_component = normalizeComponent(
34076 sh_blankslate_ShBlankslatevue_type_script_lang_ts_,
34077 ShBlankslatevue_type_template_id_b912b190_render,
34078 ShBlankslatevue_type_template_id_b912b190_staticRenderFns,
34079 false,
34080 null,
34081 null,
34082 null
34083
34084)
34085
34086ShBlankslate_component.options.__file = "ShBlankslate.vue"
34087/* harmony default export */ var sh_blankslate_ShBlankslate = (ShBlankslate_component.exports);
34088// CONCATENATED MODULE: ./src/components/sh-blankslate/index.ts
34089
34090/* harmony default export */ var sh_blankslate = (sh_blankslate_ShBlankslate);
34091// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-action-bar-layout/ShActionBarLayout.vue?vue&type=template&id=dcab3bf0&
34092var ShActionBarLayoutvue_type_template_id_dcab3bf0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-action-bar",class:{'active': _vm.show}},[_c('div',{staticClass:"row align-middle"},[_c('div',{staticClass:"sm-12 md-5 lg-5 xlg-4 columns"},[(_vm.showSelections)?_c('div',{staticClass:"sh-action-bar-checkall"},[_c('ShCheckbox',{attrs:{"checkboxLabelContent":_vm.defaultSelectAllLabel,"checkboxTrueValue":true,"checkboxFalseValue":false,"value":_vm.allSelected},on:{"change":_vm.checkAllChange}}),_c('span',{staticClass:"sh-action-bar-checkall-items-label"},[_vm._v("\n "+_vm._s(_vm.checkboxLabel)+"\n ")])],1):_vm._e()]),_c('div',{staticClass:"sm-12 md-7 lg-7 xlg-8 columns align-right"},[_c('div',{staticClass:"sh-action-bar-buttons"},[_c('ShButton',{staticClass:"sh-action-bar-save",attrs:{"buttonSize":"small","buttonContent":_vm.setSaveLabel,"isDisabled":_vm.disabledSubmit},on:{"click":_vm.save}}),_vm._t("action_types"),_c('ShButton',{staticClass:"sh-action-bar-cancel",attrs:{"buttonColor":"clear-blue","buttonSize":"small","buttonContent":_vm.setCancelLabel},on:{"click":_vm.cancel}})],2)])])])}
34093var ShActionBarLayoutvue_type_template_id_dcab3bf0_staticRenderFns = []
34094
34095
34096// CONCATENATED MODULE: ./src/components/sh-action-bar-layout/ShActionBarLayout.vue?vue&type=template&id=dcab3bf0&
34097
34098// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-action-bar-layout/ShActionBarLayout.vue?vue&type=script&lang=ts&
34099
34100
34101
34102
34103
34104
34105
34106
34107
34108
34109
34110
34111var ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout =
34112/*#__PURE__*/
34113function (_Vue) {
34114 _inherits(ShActionBarLayout, _Vue);
34115
34116 function ShActionBarLayout() {
34117 var _this;
34118
34119 _classCallCheck(this, ShActionBarLayout);
34120
34121 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShActionBarLayout).apply(this, arguments));
34122 _this.$t = _this.$t.bind(_assertThisInitialized(_assertThisInitialized(_this)));
34123 _this.$tc = _this.$tc.bind(_assertThisInitialized(_assertThisInitialized(_this)));
34124 _this.disabled = true;
34125 _this.actionType = '';
34126 _this.allSelect = _this.allSelected; //
34127 // private mounted() {
34128 // if (this.eventBus) {
34129 // this.eventBus.$on('actionChange', (data: any) => {
34130 // console.log('actionChange eventBus', data)
34131 // if (data) {
34132 // this.disabled = false;
34133 // this.actionType = data;
34134 // } else {
34135 // this.disabled = true;
34136 // this.actionType = '';
34137 // }
34138 // });
34139 // }
34140 // }
34141
34142 return _this;
34143 }
34144
34145 _createClass(ShActionBarLayout, [{
34146 key: "checkAllChange",
34147 value: function checkAllChange(e) {
34148 this.$emit('checkAll', e);
34149 }
34150 }, {
34151 key: "allSelectChange",
34152 value: function allSelectChange() {
34153 if (this.allSelect) {
34154 this.$emit('proccessAllChange', true);
34155 } else {
34156 this.$emit('proccessAllChange', false);
34157 }
34158 }
34159 }, {
34160 key: "updateAllSelected",
34161 value: function updateAllSelected() {
34162 this.allSelect = this.allSelected;
34163 } //
34164
34165 }, {
34166 key: "cancel",
34167 value: function cancel() {
34168 this.$emit('cancel', true);
34169 } //
34170 //
34171
34172 }, {
34173 key: "save",
34174 value: function save() {
34175 // this.disabled = true;
34176 // const emitObject = {
34177 // type: this.actionType,
34178 // items: this.selectedItems
34179 // };
34180 this.$emit('save', true);
34181 }
34182 }, {
34183 key: "defaultCancelLabel",
34184 get: function get() {
34185 return this.$t('lang_lib.default.global.cancel');
34186 }
34187 }, {
34188 key: "defaultSaveLabel",
34189 get: function get() {
34190 return this.$t('lang_lib.default.global.save_changes');
34191 }
34192 }, {
34193 key: "defaultSelectAllLabel",
34194 get: function get() {
34195 if (this.allSelect) {
34196 return this.$t('lang_lib.default.global.deselect_all');
34197 } else {
34198 return this.$t('lang_lib.default.global.select_all');
34199 }
34200 }
34201 }, {
34202 key: "setCancelLabel",
34203 get: function get() {
34204 return this.cancelLabel ? this.cancelLabel : this.defaultCancelLabel;
34205 }
34206 }, {
34207 key: "setSaveLabel",
34208 get: function get() {
34209 return this.saveLabel ? this.saveLabel : this.defaultSaveLabel;
34210 }
34211 }, {
34212 key: "checkboxLabel",
34213 get: function get() {
34214 return this.$tc('lang_lib.default.action_bar.selected_elements', this.selectedItems, {
34215 qty: this.selectedItems
34216 });
34217 }
34218 }]);
34219
34220 return ShActionBarLayout;
34221}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34222
34223__decorate([Prop({
34224 default: true
34225}), __metadata("design:type", Boolean)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "show", void 0);
34226
34227__decorate([Prop({
34228 default: true
34229}), __metadata("design:type", Boolean)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "showSelections", void 0);
34230
34231__decorate([Prop(), __metadata("design:type", Number)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "selectedItems", void 0);
34232
34233__decorate([Prop(), __metadata("design:type", String)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "cancelLabel", void 0);
34234
34235__decorate([Prop(), __metadata("design:type", String)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "saveLabel", void 0);
34236
34237__decorate([Prop(), __metadata("design:type", Boolean)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "disabledSubmit", void 0);
34238
34239__decorate([Prop(), __metadata("design:type", Object)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "eventBus", void 0);
34240
34241__decorate([Prop(), __metadata("design:type", Boolean)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "allSelected", void 0);
34242
34243__decorate([Watch('allSelected'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0)], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout.prototype, "updateAllSelected", null);
34244
34245ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout = __decorate([vue_class_component_common_default()({
34246 components: {
34247 ShCheckbox: sh_checkbox_ShCheckbox,
34248 ShButton: sh_button_ShButton
34249 }
34250})], ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout);
34251/* harmony default export */ var ShActionBarLayoutvue_type_script_lang_ts_ = (ShActionBarLayoutvue_type_script_lang_ts_ShActionBarLayout);
34252// CONCATENATED MODULE: ./src/components/sh-action-bar-layout/ShActionBarLayout.vue?vue&type=script&lang=ts&
34253 /* harmony default export */ var sh_action_bar_layout_ShActionBarLayoutvue_type_script_lang_ts_ = (ShActionBarLayoutvue_type_script_lang_ts_);
34254// EXTERNAL MODULE: ./src/components/sh-action-bar-layout/ShActionBarLayout.vue?vue&type=style&index=0&lang=scss&
34255var ShActionBarLayoutvue_type_style_index_0_lang_scss_ = __webpack_require__("3e1f");
34256
34257// CONCATENATED MODULE: ./src/components/sh-action-bar-layout/ShActionBarLayout.vue
34258
34259
34260
34261
34262
34263
34264/* normalize component */
34265
34266var ShActionBarLayout_component = normalizeComponent(
34267 sh_action_bar_layout_ShActionBarLayoutvue_type_script_lang_ts_,
34268 ShActionBarLayoutvue_type_template_id_dcab3bf0_render,
34269 ShActionBarLayoutvue_type_template_id_dcab3bf0_staticRenderFns,
34270 false,
34271 null,
34272 null,
34273 null
34274
34275)
34276
34277ShActionBarLayout_component.options.__file = "ShActionBarLayout.vue"
34278/* harmony default export */ var sh_action_bar_layout_ShActionBarLayout = (ShActionBarLayout_component.exports);
34279// CONCATENATED MODULE: ./src/components/sh-action-bar-layout/index.ts
34280
34281/* harmony default export */ var sh_action_bar_layout = (sh_action_bar_layout_ShActionBarLayout);
34282// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-action-page/ShActionPage.vue?vue&type=template&id=397d3900&
34283var ShActionPagevue_type_template_id_397d3900_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-action-page"},[_c('header',[(_vm.title)?_c('h1',{staticClass:"sh-action-page-heading",domProps:{"innerHTML":_vm._s(_vm.title)}}):_vm._e(),(_vm.description)?_c('p',{staticClass:"sh-action-page-description",domProps:{"innerHTML":_vm._s(_vm.description)}}):_vm._e()]),_c('div',{staticClass:"sh-action-page-content"},[_vm._t("content")],2)])}
34284var ShActionPagevue_type_template_id_397d3900_staticRenderFns = []
34285
34286
34287// CONCATENATED MODULE: ./src/components/sh-action-page/ShActionPage.vue?vue&type=template&id=397d3900&
34288
34289// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-action-page/ShActionPage.vue?vue&type=script&lang=ts&
34290
34291
34292
34293
34294
34295
34296
34297
34298var ShActionPagevue_type_script_lang_ts_ShActionPage =
34299/*#__PURE__*/
34300function (_Vue) {
34301 _inherits(ShActionPage, _Vue);
34302
34303 function ShActionPage() {
34304 _classCallCheck(this, ShActionPage);
34305
34306 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShActionPage).apply(this, arguments));
34307 }
34308
34309 return ShActionPage;
34310}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34311
34312__decorate([Prop(), __metadata("design:type", String)], ShActionPagevue_type_script_lang_ts_ShActionPage.prototype, "title", void 0);
34313
34314__decorate([Prop(), __metadata("design:type", String)], ShActionPagevue_type_script_lang_ts_ShActionPage.prototype, "description", void 0);
34315
34316ShActionPagevue_type_script_lang_ts_ShActionPage = __decorate([vue_class_component_common_default()({})], ShActionPagevue_type_script_lang_ts_ShActionPage);
34317/* harmony default export */ var ShActionPagevue_type_script_lang_ts_ = (ShActionPagevue_type_script_lang_ts_ShActionPage);
34318// CONCATENATED MODULE: ./src/components/sh-action-page/ShActionPage.vue?vue&type=script&lang=ts&
34319 /* harmony default export */ var sh_action_page_ShActionPagevue_type_script_lang_ts_ = (ShActionPagevue_type_script_lang_ts_);
34320// EXTERNAL MODULE: ./src/components/sh-action-page/ShActionPage.vue?vue&type=style&index=0&lang=scss&
34321var ShActionPagevue_type_style_index_0_lang_scss_ = __webpack_require__("84a3");
34322
34323// CONCATENATED MODULE: ./src/components/sh-action-page/ShActionPage.vue
34324
34325
34326
34327
34328
34329
34330/* normalize component */
34331
34332var ShActionPage_component = normalizeComponent(
34333 sh_action_page_ShActionPagevue_type_script_lang_ts_,
34334 ShActionPagevue_type_template_id_397d3900_render,
34335 ShActionPagevue_type_template_id_397d3900_staticRenderFns,
34336 false,
34337 null,
34338 null,
34339 null
34340
34341)
34342
34343ShActionPage_component.options.__file = "ShActionPage.vue"
34344/* harmony default export */ var sh_action_page_ShActionPage = (ShActionPage_component.exports);
34345// CONCATENATED MODULE: ./src/components/sh-action-page/index.ts
34346
34347/* harmony default export */ var sh_action_page = (sh_action_page_ShActionPage);
34348// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.constructor.js
34349var es6_regexp_constructor = __webpack_require__("3b2b");
34350
34351// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.replace.js
34352var es6_regexp_replace = __webpack_require__("a481");
34353
34354// CONCATENATED MODULE: ./src/helpers/Dom.ts
34355
34356
34357
34358function addClass(element, className) {
34359 if (element.classList) {
34360 element.classList.add(className);
34361 } else {
34362 element.className += ' ' + className;
34363 }
34364}
34365function removeClass(element, className) {
34366 if (element.classList) {
34367 element.classList.remove(className);
34368 } else {
34369 element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
34370 }
34371}
34372// CONCATENATED MODULE: ./src/components/sh-loading/loading.ts
34373
34374var loadingDirective = {};
34375
34376loadingDirective.install = function (Vue) {
34377 Vue.directive('loading', {
34378 bind: function bind(el, node) {
34379 if (node.value === true) {
34380 addClass(el, 'is-loading');
34381 }
34382 },
34383 update: function update(el, node) {
34384 if (node.value === true) {
34385 addClass(el, 'is-loading');
34386 } else {
34387 removeClass(el, 'is-loading');
34388 }
34389 },
34390 unbind: function unbind(el, none) {
34391 removeClass(el, 'is-loading');
34392 }
34393 });
34394};
34395
34396/* harmony default export */ var loading = (loadingDirective);
34397// CONCATENATED MODULE: ./src/components/sh-loading/index.ts
34398
34399/* harmony default export */ var sh_loading = ({
34400 install: function install(Vue) {
34401 Vue.use(loading);
34402 },
34403 loading: loading
34404});
34405// EXTERNAL MODULE: ./src/components/sh-photos-grid/index.ts
34406var sh_photos_grid = __webpack_require__("1946");
34407var sh_photos_grid_default = /*#__PURE__*/__webpack_require__.n(sh_photos_grid);
34408
34409// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShHistory.vue?vue&type=template&id=1641db4a&
34410var ShHistoryvue_type_template_id_1641db4a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-history"},[_c('h6',[_vm._v(_vm._s(_vm.name))]),(_vm.buttonContent)?_c('ShInput',{attrs:{"inputPlaceholder":_vm.inputPlaceholder,"inputName":_vm.inputName,"inputButtonContent":_vm.buttonContent},on:{"submit":_vm.createComment},model:{value:(_vm.inputValue),callback:function ($$v) {_vm.inputValue=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:"inputValue"}}):_vm._e(),_c('div',{staticClass:"sh-data-wrapper"},[_vm._t("commentWrapper")],2),(_vm.isShowMoreVisible)?_c('div',{staticClass:"sh-history-show-more align-center"},[_c('ShButton',{attrs:{"buttonContent":_vm.buttonShowMoreContent,"buttonColor":"secondary","isLoading":_vm.isShowMoreLoading},on:{"click":_vm.showMoreNotifications}})],1):_vm._e()],1)}
34411var ShHistoryvue_type_template_id_1641db4a_staticRenderFns = []
34412
34413
34414// CONCATENATED MODULE: ./src/components/sh-history/ShHistory.vue?vue&type=template&id=1641db4a&
34415
34416// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShHistory.vue?vue&type=script&lang=ts&
34417
34418
34419
34420
34421
34422
34423
34424
34425
34426
34427var ShHistoryvue_type_script_lang_ts_ShHistory =
34428/*#__PURE__*/
34429function (_Vue) {
34430 _inherits(ShHistory, _Vue);
34431
34432 function ShHistory() {
34433 var _this;
34434
34435 _classCallCheck(this, ShHistory);
34436
34437 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShHistory).apply(this, arguments));
34438 _this.inputValue = '';
34439 return _this;
34440 }
34441
34442 _createClass(ShHistory, [{
34443 key: "showMoreNotifications",
34444 value: function showMoreNotifications() {
34445 this.$emit('showMore');
34446 }
34447 }, {
34448 key: "createComment",
34449 value: function createComment(data) {
34450 if (this.inputValue !== '') {
34451 var newComment = {
34452 sectionID: this.sectionID,
34453 objectId: this.objectID,
34454 content: this.inputValue
34455 };
34456 this.inputValue = '';
34457 this.$emit('onNewCommentCreate', newComment);
34458 }
34459 }
34460 }]);
34461
34462 return ShHistory;
34463}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34464
34465__decorate([Prop(), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "name", void 0);
34466
34467__decorate([Prop(), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "inputPlaceholder", void 0);
34468
34469__decorate([Prop(), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "inputName", void 0);
34470
34471__decorate([Prop({
34472 default: ''
34473}), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "buttonContent", void 0);
34474
34475__decorate([Prop({
34476 default: 'Show more'
34477}), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "buttonShowMoreContent", void 0);
34478
34479__decorate([Prop(), __metadata("design:type", Boolean)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "isShowMoreLoading", void 0);
34480
34481__decorate([Prop(), __metadata("design:type", Boolean)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "isShowMoreVisible", void 0);
34482
34483__decorate([Prop(), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "sectionID", void 0);
34484
34485__decorate([Prop(), __metadata("design:type", String)], ShHistoryvue_type_script_lang_ts_ShHistory.prototype, "objectID", void 0);
34486
34487ShHistoryvue_type_script_lang_ts_ShHistory = __decorate([vue_class_component_common_default()({
34488 components: {
34489 ShInput: sh_input_ShInput,
34490 ShButton: sh_button_ShButton
34491 }
34492})], ShHistoryvue_type_script_lang_ts_ShHistory);
34493/* harmony default export */ var ShHistoryvue_type_script_lang_ts_ = (ShHistoryvue_type_script_lang_ts_ShHistory);
34494// CONCATENATED MODULE: ./src/components/sh-history/ShHistory.vue?vue&type=script&lang=ts&
34495 /* harmony default export */ var sh_history_ShHistoryvue_type_script_lang_ts_ = (ShHistoryvue_type_script_lang_ts_);
34496// EXTERNAL MODULE: ./src/components/sh-history/ShHistory.vue?vue&type=style&index=0&lang=scss&
34497var ShHistoryvue_type_style_index_0_lang_scss_ = __webpack_require__("4638");
34498
34499// CONCATENATED MODULE: ./src/components/sh-history/ShHistory.vue
34500
34501
34502
34503
34504
34505
34506/* normalize component */
34507
34508var ShHistory_component = normalizeComponent(
34509 sh_history_ShHistoryvue_type_script_lang_ts_,
34510 ShHistoryvue_type_template_id_1641db4a_render,
34511 ShHistoryvue_type_template_id_1641db4a_staticRenderFns,
34512 false,
34513 null,
34514 null,
34515 null
34516
34517)
34518
34519ShHistory_component.options.__file = "ShHistory.vue"
34520/* harmony default export */ var sh_history_ShHistory = (ShHistory_component.exports);
34521// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShComment.vue?vue&type=template&id=a5d31d8e&
34522var ShCommentvue_type_template_id_a5d31d8e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.commentData)?_c('div',{staticClass:"sh-comment"},[_c('div',{staticClass:"sh-comment-date"},[_c('span',[_vm._v(_vm._s(_vm.commentData.createdAt))])]),_c('div',{staticClass:"sh-comment-wrapper"},[_c('div',{staticClass:"sh-comment-information"},[_c('h6',[_vm._v(_vm._s(_vm.commentAuthor))]),(_vm.isEditable)?_c('div',[_c('ShDropdown',{attrs:{"visibleArrow":true,"position":"bottom-end","options":{modifiers: {offset: {offset: '15px, 10px'}}}}},[_c('ShDropdownItem',{on:{"click":_vm.editComment}},[_vm._v(_vm._s(_vm.editButton))]),_c('ShDropdownItem',{on:{"click":_vm.deleteComment}},[_vm._v(_vm._s(_vm.deleteButton))]),_c('ShIcon',{attrs:{"slot":"reference","iconName":"sh-icon-more"},slot:"reference"})],1)],1):_vm._e()]),_c('div',{staticClass:"sh-comment-content"},[(!_vm.activeEdition)?_c('span',{directives:[{name:"read-more",rawName:"v-read-more:200",value:({text: _vm.commentData.content, readMore: _vm.readMoreText, readLess: _vm.readLessText}),expression:"{text: commentData.content, readMore: readMoreText, readLess: readLessText}",arg:"200"}],staticClass:"sh-comment-text"}):_vm._e(),_c('ShInput',{directives:[{name:"show",rawName:"v-show",value:(_vm.buttonContent && _vm.activeEdition),expression:"buttonContent && activeEdition"}],ref:"editComment",attrs:{"inputName":"editComment","inputButtonContent":_vm.buttonContent},on:{"blur":_vm.cancelEdition,"submit":_vm.editFinish},model:{value:(_vm.inputValue),callback:function ($$v) {_vm.inputValue=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:"inputValue"}}),(!_vm.activeEdition && _vm.activeSeeMore)?_c('span',{staticClass:"sh-see-more-link"},[_vm._v(_vm._s(_vm.seeMoreText))]):_vm._e()],1)])]):_vm._e()}
34523var ShCommentvue_type_template_id_a5d31d8e_staticRenderFns = []
34524
34525
34526// CONCATENATED MODULE: ./src/components/sh-history/ShComment.vue?vue&type=template&id=a5d31d8e&
34527
34528// CONCATENATED MODULE: ./src/directives/sh-read-more/sh-read-more.ts
34529
34530
34531function createLink(el, binding, vnode) {
34532 var valContainer = binding.value.text;
34533
34534 if (binding.value.text.length > binding.arg) {
34535 var readMore = document.createElement('a');
34536 var readLess = document.createElement('a');
34537 vnode.elm.textContent = binding.value.text.substring(0, binding.arg) + '...';
34538 readMore.href = '#';
34539 readMore.text = binding.value.readMore;
34540 addClass(readMore, 'default-link');
34541 addClass(readMore, 'sh-read-more-link');
34542 readLess.href = '#';
34543 readLess.text = binding.value.readLess;
34544 addClass(readLess, 'default-link');
34545 addClass(readLess, 'sh-read-more-link');
34546 vnode.elm.append(' ', readMore);
34547 readMore.addEventListener('click', function (e) {
34548 e.preventDefault();
34549 vnode.elm.textContent = valContainer;
34550 vnode.elm.append(' ', readLess);
34551 });
34552 readLess.addEventListener('click', function (e) {
34553 e.preventDefault();
34554 vnode.elm.textContent = binding.value.text.substring(0, binding.arg) + '...';
34555 vnode.elm.append(' ', readMore);
34556 });
34557 } else {
34558 vnode.elm.textContent = binding.value.text;
34559 }
34560}
34561
34562var ShReadMore = {
34563 bind: function bind(el, binding, vnode) {
34564 createLink(el, binding, vnode);
34565 },
34566 update: function update(el, binding, vnode) {
34567 createLink(el, binding, vnode);
34568 }
34569};
34570/* harmony default export */ var sh_read_more = (ShReadMore);
34571// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShComment.vue?vue&type=script&lang=ts&
34572
34573
34574
34575
34576
34577
34578
34579
34580
34581
34582
34583
34584
34585var ShCommentvue_type_script_lang_ts_ShComment =
34586/*#__PURE__*/
34587function (_Vue) {
34588 _inherits(ShComment, _Vue);
34589
34590 function ShComment() {
34591 var _this;
34592
34593 _classCallCheck(this, ShComment);
34594
34595 _this = _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShComment).apply(this, arguments));
34596 _this.activeEdition = false;
34597 _this.inputValue = '';
34598 return _this;
34599 }
34600
34601 _createClass(ShComment, [{
34602 key: "deleteComment",
34603 value: function deleteComment(data) {
34604 var id = this.commentData.id;
34605 this.$emit('onDeleteComment', id);
34606 }
34607 }, {
34608 key: "editComment",
34609 value: function editComment(data) {
34610 var _this2 = this;
34611
34612 this.activeEdition = true;
34613 external_commonjs_vue_commonjs2_vue_root_Vue_default.a.nextTick(function () {
34614 _this2.$refs.editComment.focus();
34615 });
34616 this.inputValue = this.commentData.content;
34617 }
34618 }, {
34619 key: "editFinish",
34620 value: function editFinish(data, target) {
34621 if (this.inputValue !== '') {
34622 this.activeEdition = false;
34623 this.$emit('onUpdateComment', this.commentData.id, this.inputValue);
34624 }
34625 }
34626 }, {
34627 key: "cancelEdition",
34628 value: function cancelEdition(event) {
34629 if (!event.relatedTarget || event.relatedTarget.className.indexOf('sh-input-inner-button') < 0 || event.target.parentElement !== event.relatedTarget.parentElement) {
34630 this.activeEdition = false;
34631 }
34632 }
34633 }]);
34634
34635 return ShComment;
34636}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34637
34638__decorate([Prop(), __metadata("design:type", Object)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "commentData", void 0);
34639
34640__decorate([Prop(), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "commentAuthor", void 0);
34641
34642__decorate([Prop(), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "editButton", void 0);
34643
34644__decorate([Prop(), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "deleteButton", void 0);
34645
34646__decorate([Prop(), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "seeMoreText", void 0);
34647
34648__decorate([Prop(), __metadata("design:type", Boolean)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "activeSeeMore", void 0);
34649
34650__decorate([Prop(), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "buttonContent", void 0);
34651
34652__decorate([Prop({
34653 default: 'Show more'
34654}), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "readMoreText", void 0);
34655
34656__decorate([Prop({
34657 default: 'Show less'
34658}), __metadata("design:type", String)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "readLessText", void 0);
34659
34660__decorate([Prop({
34661 default: true
34662}), __metadata("design:type", Boolean)], ShCommentvue_type_script_lang_ts_ShComment.prototype, "isEditable", void 0);
34663
34664ShCommentvue_type_script_lang_ts_ShComment = __decorate([vue_class_component_common_default()({
34665 components: {
34666 ShDropdown: sh_dropdown_ShDropdown,
34667 ShIcon: sh_icon_ShIcon,
34668 ShDropdownItem: sh_dropdown_ShDropdownItem,
34669 ShInput: sh_input_ShInput
34670 },
34671 directives: {
34672 'read-more': sh_read_more
34673 }
34674})], ShCommentvue_type_script_lang_ts_ShComment);
34675/* harmony default export */ var ShCommentvue_type_script_lang_ts_ = (ShCommentvue_type_script_lang_ts_ShComment);
34676// CONCATENATED MODULE: ./src/components/sh-history/ShComment.vue?vue&type=script&lang=ts&
34677 /* harmony default export */ var sh_history_ShCommentvue_type_script_lang_ts_ = (ShCommentvue_type_script_lang_ts_);
34678// EXTERNAL MODULE: ./src/components/sh-history/ShComment.vue?vue&type=style&index=0&lang=scss&
34679var ShCommentvue_type_style_index_0_lang_scss_ = __webpack_require__("3d32");
34680
34681// CONCATENATED MODULE: ./src/components/sh-history/ShComment.vue
34682
34683
34684
34685
34686
34687
34688/* normalize component */
34689
34690var ShComment_component = normalizeComponent(
34691 sh_history_ShCommentvue_type_script_lang_ts_,
34692 ShCommentvue_type_template_id_a5d31d8e_render,
34693 ShCommentvue_type_template_id_a5d31d8e_staticRenderFns,
34694 false,
34695 null,
34696 null,
34697 null
34698
34699)
34700
34701ShComment_component.options.__file = "ShComment.vue"
34702/* harmony default export */ var sh_history_ShComment = (ShComment_component.exports);
34703// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShCustomerData.vue?vue&type=template&id=4366f194&
34704var ShCustomerDatavue_type_template_id_4366f194_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.createdAt)?_c('div',{staticClass:"sh-customer-data"},[_c('div',{staticClass:"sh-data-information"},[_c('span',[_vm._v(_vm._s(_vm.createdAt))])]),_c('span',{staticClass:"sh-data-content"},[_vm._t("content")],2)]):_vm._e()}
34705var ShCustomerDatavue_type_template_id_4366f194_staticRenderFns = []
34706
34707
34708// CONCATENATED MODULE: ./src/components/sh-history/ShCustomerData.vue?vue&type=template&id=4366f194&
34709
34710// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-history/ShCustomerData.vue?vue&type=script&lang=ts&
34711
34712
34713
34714
34715
34716
34717
34718var ShCustomerDatavue_type_script_lang_ts_ShCustomerData =
34719/*#__PURE__*/
34720function (_Vue) {
34721 _inherits(ShCustomerData, _Vue);
34722
34723 function ShCustomerData() {
34724 _classCallCheck(this, ShCustomerData);
34725
34726 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShCustomerData).apply(this, arguments));
34727 }
34728
34729 return ShCustomerData;
34730}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34731
34732__decorate([Prop(), __metadata("design:type", String)], ShCustomerDatavue_type_script_lang_ts_ShCustomerData.prototype, "createdAt", void 0);
34733
34734ShCustomerDatavue_type_script_lang_ts_ShCustomerData = __decorate([vue_class_component_common_default()({})], ShCustomerDatavue_type_script_lang_ts_ShCustomerData);
34735/* harmony default export */ var ShCustomerDatavue_type_script_lang_ts_ = (ShCustomerDatavue_type_script_lang_ts_ShCustomerData);
34736// CONCATENATED MODULE: ./src/components/sh-history/ShCustomerData.vue?vue&type=script&lang=ts&
34737 /* harmony default export */ var sh_history_ShCustomerDatavue_type_script_lang_ts_ = (ShCustomerDatavue_type_script_lang_ts_);
34738// EXTERNAL MODULE: ./src/components/sh-history/ShCustomerData.vue?vue&type=style&index=0&lang=scss&
34739var ShCustomerDatavue_type_style_index_0_lang_scss_ = __webpack_require__("e0bc");
34740
34741// CONCATENATED MODULE: ./src/components/sh-history/ShCustomerData.vue
34742
34743
34744
34745
34746
34747
34748/* normalize component */
34749
34750var ShCustomerData_component = normalizeComponent(
34751 sh_history_ShCustomerDatavue_type_script_lang_ts_,
34752 ShCustomerDatavue_type_template_id_4366f194_render,
34753 ShCustomerDatavue_type_template_id_4366f194_staticRenderFns,
34754 false,
34755 null,
34756 null,
34757 null
34758
34759)
34760
34761ShCustomerData_component.options.__file = "ShCustomerData.vue"
34762/* harmony default export */ var sh_history_ShCustomerData = (ShCustomerData_component.exports);
34763// CONCATENATED MODULE: ./src/components/sh-history/index.ts
34764
34765
34766
34767
34768// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/layouts/single-column/ShSingleColumnLayout.vue?vue&type=template&id=e21a0fba&functional=true&
34769var ShSingleColumnLayoutvue_type_template_id_e21a0fba_functional_true_render = function (_h,_vm) {var _c=_vm._c;return _c('div',{staticClass:"single-columns-layout"},[_vm._t("header"),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"sm-12"},[_vm._t("default")],2)])]),_vm._t("footer")],2)}
34770var ShSingleColumnLayoutvue_type_template_id_e21a0fba_functional_true_staticRenderFns = []
34771
34772
34773// CONCATENATED MODULE: ./src/layouts/single-column/ShSingleColumnLayout.vue?vue&type=template&id=e21a0fba&functional=true&
34774
34775// EXTERNAL MODULE: ./src/layouts/single-column/ShSingleColumnLayout.vue?vue&type=style&index=0&lang=scss&
34776var ShSingleColumnLayoutvue_type_style_index_0_lang_scss_ = __webpack_require__("5ac7");
34777
34778// CONCATENATED MODULE: ./src/layouts/single-column/ShSingleColumnLayout.vue
34779
34780var ShSingleColumnLayout_script = {}
34781
34782
34783
34784/* normalize component */
34785
34786var ShSingleColumnLayout_component = normalizeComponent(
34787 ShSingleColumnLayout_script,
34788 ShSingleColumnLayoutvue_type_template_id_e21a0fba_functional_true_render,
34789 ShSingleColumnLayoutvue_type_template_id_e21a0fba_functional_true_staticRenderFns,
34790 true,
34791 null,
34792 null,
34793 null
34794
34795)
34796
34797ShSingleColumnLayout_component.options.__file = "ShSingleColumnLayout.vue"
34798/* harmony default export */ var ShSingleColumnLayout = (ShSingleColumnLayout_component.exports);
34799// CONCATENATED MODULE: ./src/layouts/single-column/index.ts
34800
34801/* harmony default export */ var single_column = (ShSingleColumnLayout);
34802// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/layouts/two-columns/ShTwoColumnsLayout.vue?vue&type=template&id=389a9690&functional=true&
34803var ShTwoColumnsLayoutvue_type_template_id_389a9690_functional_true_render = function (_h,_vm) {var _c=_vm._c;return _c('div',{staticClass:"two-columns-layout",class:{'mobile-changed-order': _vm.props.mobileChangedOrder}},[_vm._t("header"),_c('div',{staticClass:"container"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"sm-12 md-8 columns sh-left-column"},[_vm._t("content")],2),_c('div',{staticClass:"sm-12 md-4 columns sh-right-column"},[_vm._t("side")],2)])]),_vm._t("footer")],2)}
34804var ShTwoColumnsLayoutvue_type_template_id_389a9690_functional_true_staticRenderFns = []
34805
34806
34807// CONCATENATED MODULE: ./src/layouts/two-columns/ShTwoColumnsLayout.vue?vue&type=template&id=389a9690&functional=true&
34808
34809// EXTERNAL MODULE: ./src/layouts/two-columns/ShTwoColumnsLayout.vue?vue&type=style&index=0&lang=scss&
34810var ShTwoColumnsLayoutvue_type_style_index_0_lang_scss_ = __webpack_require__("ea5f");
34811
34812// CONCATENATED MODULE: ./src/layouts/two-columns/ShTwoColumnsLayout.vue
34813
34814var ShTwoColumnsLayout_script = {}
34815
34816
34817
34818/* normalize component */
34819
34820var ShTwoColumnsLayout_component = normalizeComponent(
34821 ShTwoColumnsLayout_script,
34822 ShTwoColumnsLayoutvue_type_template_id_389a9690_functional_true_render,
34823 ShTwoColumnsLayoutvue_type_template_id_389a9690_functional_true_staticRenderFns,
34824 true,
34825 null,
34826 null,
34827 null
34828
34829)
34830
34831ShTwoColumnsLayout_component.options.__file = "ShTwoColumnsLayout.vue"
34832/* harmony default export */ var ShTwoColumnsLayout = (ShTwoColumnsLayout_component.exports);
34833// CONCATENATED MODULE: ./src/layouts/two-columns/index.ts
34834
34835/* harmony default export */ var two_columns = (ShTwoColumnsLayout);
34836// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-address/ShAddress.vue?vue&type=template&id=2539d416&
34837var ShAddressvue_type_template_id_2539d416_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sh-address"},[(_vm.header)?_c('h3',[_vm._v(_vm._s(_vm.header))]):_vm._e(),(_vm.address)?_c('ul',{staticClass:"sh-address-list"},[(_vm.address.first_name && _vm.address.last_name)?_c('ShData',{attrs:{"content":((_vm.address.first_name) + " " + (_vm.address.last_name))}}):_vm._e(),(_vm.address.company_name)?_c('ShData',{attrs:{"content":("" + (_vm.address.company_name))}}):_vm._e(),(_vm.address.phone_number)?_c('ShData',{attrs:{"content":("" + (_vm.address.phone_number))}}):_vm._e(),(_vm.address.street)?_c('ShData',{attrs:{"content":("" + (_vm.address.street))}}):_vm._e(),(_vm.address.city || _vm.address.postal_code)?_c('ShData',{attrs:{"content":((_vm.address.city) + " " + (_vm.address.postal_code))}}):_vm._e(),(_vm.address.country || _vm.address.state)?_c('ShData',{attrs:{"content":_vm.address.state ? ((_vm.address.state) + ", " + (_vm.address.country)) : _vm.address.country}}):_vm._e()],1):_vm._e()])}
34838var ShAddressvue_type_template_id_2539d416_staticRenderFns = []
34839
34840
34841// CONCATENATED MODULE: ./src/components/sh-address/ShAddress.vue?vue&type=template&id=2539d416&
34842
34843// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5e057bfd-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-address/ShData.vue?vue&type=template&id=5f284780&
34844var ShDatavue_type_template_id_5f284780_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:"sh-data",class:_vm.classes},[(_vm.iconClass)?_c('ShIcon',{class:_vm.iconClass}):_vm._e(),_c('span',[_vm._v(_vm._s(_vm.content))])],1)}
34845var ShDatavue_type_template_id_5f284780_staticRenderFns = []
34846
34847
34848// CONCATENATED MODULE: ./src/components/sh-address/ShData.vue?vue&type=template&id=5f284780&
34849
34850// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-address/ShData.vue?vue&type=script&lang=ts&
34851
34852
34853
34854
34855
34856
34857
34858
34859
34860var ShDatavue_type_script_lang_ts_ShData =
34861/*#__PURE__*/
34862function (_Vue) {
34863 _inherits(ShData, _Vue);
34864
34865 function ShData() {
34866 _classCallCheck(this, ShData);
34867
34868 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShData).apply(this, arguments));
34869 }
34870
34871 _createClass(ShData, [{
34872 key: "classes",
34873 get: function get() {
34874 return {
34875 'sh-with-icon': this.iconClass
34876 };
34877 }
34878 }]);
34879
34880 return ShData;
34881}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34882
34883__decorate([Prop(), __metadata("design:type", String)], ShDatavue_type_script_lang_ts_ShData.prototype, "iconClass", void 0);
34884
34885__decorate([Prop(), __metadata("design:type", String)], ShDatavue_type_script_lang_ts_ShData.prototype, "content", void 0);
34886
34887ShDatavue_type_script_lang_ts_ShData = __decorate([vue_class_component_common_default()({
34888 components: {
34889 ShIcon: sh_icon_ShIcon
34890 }
34891})], ShDatavue_type_script_lang_ts_ShData);
34892/* harmony default export */ var ShDatavue_type_script_lang_ts_ = (ShDatavue_type_script_lang_ts_ShData);
34893// CONCATENATED MODULE: ./src/components/sh-address/ShData.vue?vue&type=script&lang=ts&
34894 /* harmony default export */ var sh_address_ShDatavue_type_script_lang_ts_ = (ShDatavue_type_script_lang_ts_);
34895// EXTERNAL MODULE: ./src/components/sh-address/ShData.vue?vue&type=style&index=0&lang=scss&
34896var ShDatavue_type_style_index_0_lang_scss_ = __webpack_require__("9f73");
34897
34898// CONCATENATED MODULE: ./src/components/sh-address/ShData.vue
34899
34900
34901
34902
34903
34904
34905/* normalize component */
34906
34907var ShData_component = normalizeComponent(
34908 sh_address_ShDatavue_type_script_lang_ts_,
34909 ShDatavue_type_template_id_5f284780_render,
34910 ShDatavue_type_template_id_5f284780_staticRenderFns,
34911 false,
34912 null,
34913 null,
34914 null
34915
34916)
34917
34918ShData_component.options.__file = "ShData.vue"
34919/* harmony default export */ var sh_address_ShData = (ShData_component.exports);
34920// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--13-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/sh-address/ShAddress.vue?vue&type=script&lang=ts&
34921
34922
34923
34924
34925
34926
34927
34928
34929var ShAddressvue_type_script_lang_ts_ShAddress =
34930/*#__PURE__*/
34931function (_Vue) {
34932 _inherits(ShAddress, _Vue);
34933
34934 function ShAddress() {
34935 _classCallCheck(this, ShAddress);
34936
34937 return _possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ShAddress).apply(this, arguments));
34938 }
34939
34940 return ShAddress;
34941}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a);
34942
34943__decorate([Prop(), __metadata("design:type", String)], ShAddressvue_type_script_lang_ts_ShAddress.prototype, "header", void 0);
34944
34945__decorate([Prop(), __metadata("design:type", Object)], ShAddressvue_type_script_lang_ts_ShAddress.prototype, "address", void 0);
34946
34947ShAddressvue_type_script_lang_ts_ShAddress = __decorate([vue_class_component_common_default()({
34948 components: {
34949 ShData: sh_address_ShData
34950 }
34951})], ShAddressvue_type_script_lang_ts_ShAddress);
34952/* harmony default export */ var ShAddressvue_type_script_lang_ts_ = (ShAddressvue_type_script_lang_ts_ShAddress);
34953// CONCATENATED MODULE: ./src/components/sh-address/ShAddress.vue?vue&type=script&lang=ts&
34954 /* harmony default export */ var sh_address_ShAddressvue_type_script_lang_ts_ = (ShAddressvue_type_script_lang_ts_);
34955// EXTERNAL MODULE: ./src/components/sh-address/ShAddress.vue?vue&type=style&index=0&lang=scss&
34956var ShAddressvue_type_style_index_0_lang_scss_ = __webpack_require__("a908");
34957
34958// CONCATENATED MODULE: ./src/components/sh-address/ShAddress.vue
34959
34960
34961
34962
34963
34964
34965/* normalize component */
34966
34967var ShAddress_component = normalizeComponent(
34968 sh_address_ShAddressvue_type_script_lang_ts_,
34969 ShAddressvue_type_template_id_2539d416_render,
34970 ShAddressvue_type_template_id_2539d416_staticRenderFns,
34971 false,
34972 null,
34973 null,
34974 null
34975
34976)
34977
34978ShAddress_component.options.__file = "ShAddress.vue"
34979/* harmony default export */ var sh_address_ShAddress = (ShAddress_component.exports);
34980// CONCATENATED MODULE: ./src/components/sh-address/index.ts
34981
34982
34983
34984// EXTERNAL MODULE: ./src/locale/en_US.json
34985var en_US = __webpack_require__("84d8");
34986
34987// EXTERNAL MODULE: ./src/locale/pl_PL.json
34988var pl_PL = __webpack_require__("c192");
34989
34990// CONCATENATED MODULE: ./src/index.js
34991
34992
34993
34994
34995
34996
34997
34998
34999
35000
35001
35002
35003
35004
35005
35006
35007
35008
35009
35010
35011
35012
35013
35014
35015
35016
35017
35018
35019
35020
35021
35022
35023
35024
35025var components = {
35026 ShData: sh_address_ShData,
35027 ShAddress: sh_address_ShAddress,
35028 ShDragableTags: sh_dragable_tags,
35029 ShCard: sh_card_ShCard,
35030 ShCardBox: ShCardBox,
35031 ShHistory: sh_history_ShHistory,
35032 ShComment: sh_history_ShComment,
35033 ShCustomerData: sh_history_ShCustomerData,
35034 ShCardHeader: sh_card_ShCardHeader,
35035 ShCardWidget: sh_card_ShCardWidget,
35036 ShCardGroup: sh_card_ShCardGroup,
35037 ShButton: sh_button_ShButton,
35038 ShButtonGroup: sh_button_ShButtonGroup,
35039 ShButtonUpload: sh_button_upload,
35040 ShTwoColumnsLayout: two_columns,
35041 ShSingleColumnLayout: single_column,
35042 ShNotifications: sh_notifications,
35043 ShCheckbox: sh_checkbox_ShCheckbox,
35044 ShCheckboxGroup: sh_checkbox_ShCheckboxGroup,
35045 ShRadio: sh_radio_ShRadio,
35046 ShRadioGroup: sh_radio_ShRadioGroup,
35047 ShInput: sh_input,
35048 ShModal: sh_modal_ShModal,
35049 ShTable: sh_table_ShTable,
35050 ShTableColumn: sh_table_ShTableColumn,
35051 ShTag: sh_tag_ShTag,
35052 ShTagCreator: sh_tag_ShTagCreator,
35053 ShField: sh_field_ShField,
35054 ShFieldGroup: sh_field_ShFieldGroup,
35055 ShTagButton: sh_tag_ShTagButton,
35056 ShIcon: sh_icon,
35057 ShSwitch: sh_switch,
35058 ShImage: sh_image,
35059 ShTextarea: sh_textarea,
35060 ShDropdown: sh_dropdown_ShDropdown,
35061 ShDropdownItem: sh_dropdown_ShDropdownItem,
35062 ShPageHeader: sh_page_header,
35063 ShNotificationBanner: sh_notification_banner,
35064 ShBlankslate: sh_blankslate,
35065 ShActionBarLayout: sh_action_bar_layout,
35066 ShActionPage: sh_action_page,
35067 ShPhotosGrid: sh_photos_grid_default.a,
35068 ShStatistics: sh_statistics_ShStatistics,
35069 ShStatisticsItem: sh_statistics_ShStatisticsItem
35070};
35071var directives = {
35072 'read-more': sh_read_more // const directives = {
35073 // ShInputCommit
35074 // };
35075
35076};
35077
35078
35079
35080components.install = function (Vue) {
35081 var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35082
35083 if (opts.i18n) {
35084 opts.i18n.mergeLocaleMessage('en', en_US);
35085 opts.i18n.mergeLocaleMessage('pl', pl_PL);
35086 }
35087
35088 keys_default()(components).forEach(function (name) {
35089 // @ts-ignore
35090 Vue.component(name, components[name]);
35091 });
35092
35093 keys_default()(directives).forEach(function (name) {
35094 Vue.directive(name, directives[name]);
35095 }); // Object.keys(directives).forEach((name) =>{
35096 // // @ts-ignore
35097 // Vue.directive(name, directives[name]);
35098 // });
35099
35100
35101 Vue.use(sh_loading.loading);
35102 Vue.prototype.$shdialog = sh_dialog;
35103 Vue.prototype.$shmodal = sh_modal;
35104};
35105
35106
35107/* harmony default export */ var src = (components);
35108// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
35109/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, "ShDialog", function() { return sh_dialog; });
35110/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, "ModalProgrammatic", function() { return sh_modal; });
35111
35112
35113/* harmony default export */ var entry_lib = __webpack_exports__["default"] = (src);
35114
35115
35116
35117/***/ }),
35118
35119/***/ "fb5a":
35120/***/ (function(module, __webpack_exports__, __webpack_require__) {
35121
35122"use strict";
35123/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadioGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6189");
35124/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadioGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadioGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
35125/* unused harmony reexport * */
35126 /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ShRadioGroup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
35127
35128/***/ }),
35129
35130/***/ "fdef":
35131/***/ (function(module, exports) {
35132
35133module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
35134 '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
35135
35136
35137/***/ })
35138
35139/******/ });
35140//# sourceMappingURL=shoplo-kit-vue.common.js.map
\No newline at end of file