@ikas/storefront 0.0.168-alpha.3 → 0.0.168-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -11299,6 +11299,7 @@ var IkasCheckoutSettings = /** @class */ (function () {
11299
11299
  this.storefrontId = data.storefrontId || "";
11300
11300
  this.giftPackagePriceList = data.giftPackagePriceList || null;
11301
11301
  this.isGiftPackageEnabled = data.isGiftPackageEnabled || false;
11302
+ this.isShowPostalCode = data.isShowPostalCode || false;
11302
11303
  }
11303
11304
  return IkasCheckoutSettings;
11304
11305
  }());
@@ -11383,7 +11384,6 @@ var IkasOrderAddress = /** @class */ (function () {
11383
11384
  firstName: !!this.firstName,
11384
11385
  lastName: !!this.lastName,
11385
11386
  addressLine1: !!this.addressLine1,
11386
- postalCode: !!this.postalCode,
11387
11387
  country: !!this.country,
11388
11388
  state: !!this.state,
11389
11389
  city: !!this.city,
@@ -17406,6 +17406,928 @@ var IkasPaymentGatewayAdditionalPriceAmountType;
17406
17406
  IkasPaymentGatewayAdditionalPriceAmountType["RATIO"] = "RATIO";
17407
17407
  })(IkasPaymentGatewayAdditionalPriceAmountType || (IkasPaymentGatewayAdditionalPriceAmountType = {}));
17408
17408
 
17409
+ /**
17410
+ * A specialized version of `_.forEach` for arrays without support for
17411
+ * iteratee shorthands.
17412
+ *
17413
+ * @private
17414
+ * @param {Array} [array] The array to iterate over.
17415
+ * @param {Function} iteratee The function invoked per iteration.
17416
+ * @returns {Array} Returns `array`.
17417
+ */
17418
+ function arrayEach(array, iteratee) {
17419
+ var index = -1,
17420
+ length = array == null ? 0 : array.length;
17421
+
17422
+ while (++index < length) {
17423
+ if (iteratee(array[index], index, array) === false) {
17424
+ break;
17425
+ }
17426
+ }
17427
+ return array;
17428
+ }
17429
+
17430
+ var _arrayEach = arrayEach;
17431
+
17432
+ /**
17433
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
17434
+ *
17435
+ * @private
17436
+ * @param {boolean} [fromRight] Specify iterating from right to left.
17437
+ * @returns {Function} Returns the new base function.
17438
+ */
17439
+ function createBaseFor(fromRight) {
17440
+ return function(object, iteratee, keysFunc) {
17441
+ var index = -1,
17442
+ iterable = Object(object),
17443
+ props = keysFunc(object),
17444
+ length = props.length;
17445
+
17446
+ while (length--) {
17447
+ var key = props[fromRight ? length : ++index];
17448
+ if (iteratee(iterable[key], key, iterable) === false) {
17449
+ break;
17450
+ }
17451
+ }
17452
+ return object;
17453
+ };
17454
+ }
17455
+
17456
+ var _createBaseFor = createBaseFor;
17457
+
17458
+ /**
17459
+ * The base implementation of `baseForOwn` which iterates over `object`
17460
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
17461
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
17462
+ *
17463
+ * @private
17464
+ * @param {Object} object The object to iterate over.
17465
+ * @param {Function} iteratee The function invoked per iteration.
17466
+ * @param {Function} keysFunc The function to get the keys of `object`.
17467
+ * @returns {Object} Returns `object`.
17468
+ */
17469
+ var baseFor = _createBaseFor();
17470
+
17471
+ var _baseFor = baseFor;
17472
+
17473
+ /**
17474
+ * The base implementation of `_.times` without support for iteratee shorthands
17475
+ * or max array length checks.
17476
+ *
17477
+ * @private
17478
+ * @param {number} n The number of times to invoke `iteratee`.
17479
+ * @param {Function} iteratee The function invoked per iteration.
17480
+ * @returns {Array} Returns the array of results.
17481
+ */
17482
+ function baseTimes(n, iteratee) {
17483
+ var index = -1,
17484
+ result = Array(n);
17485
+
17486
+ while (++index < n) {
17487
+ result[index] = iteratee(index);
17488
+ }
17489
+ return result;
17490
+ }
17491
+
17492
+ var _baseTimes = baseTimes;
17493
+
17494
+ /** Detect free variable `global` from Node.js. */
17495
+
17496
+ var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
17497
+
17498
+ var _freeGlobal = freeGlobal;
17499
+
17500
+ /** Detect free variable `self`. */
17501
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
17502
+
17503
+ /** Used as a reference to the global object. */
17504
+ var root$1 = _freeGlobal || freeSelf || Function('return this')();
17505
+
17506
+ var _root = root$1;
17507
+
17508
+ /** Built-in value references. */
17509
+ var Symbol$1 = _root.Symbol;
17510
+
17511
+ var _Symbol = Symbol$1;
17512
+
17513
+ /** Used for built-in method references. */
17514
+ var objectProto = Object.prototype;
17515
+
17516
+ /** Used to check objects for own properties. */
17517
+ var hasOwnProperty$4 = objectProto.hasOwnProperty;
17518
+
17519
+ /**
17520
+ * Used to resolve the
17521
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
17522
+ * of values.
17523
+ */
17524
+ var nativeObjectToString = objectProto.toString;
17525
+
17526
+ /** Built-in value references. */
17527
+ var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
17528
+
17529
+ /**
17530
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
17531
+ *
17532
+ * @private
17533
+ * @param {*} value The value to query.
17534
+ * @returns {string} Returns the raw `toStringTag`.
17535
+ */
17536
+ function getRawTag(value) {
17537
+ var isOwn = hasOwnProperty$4.call(value, symToStringTag),
17538
+ tag = value[symToStringTag];
17539
+
17540
+ try {
17541
+ value[symToStringTag] = undefined;
17542
+ var unmasked = true;
17543
+ } catch (e) {}
17544
+
17545
+ var result = nativeObjectToString.call(value);
17546
+ if (unmasked) {
17547
+ if (isOwn) {
17548
+ value[symToStringTag] = tag;
17549
+ } else {
17550
+ delete value[symToStringTag];
17551
+ }
17552
+ }
17553
+ return result;
17554
+ }
17555
+
17556
+ var _getRawTag = getRawTag;
17557
+
17558
+ /** Used for built-in method references. */
17559
+ var objectProto$1 = Object.prototype;
17560
+
17561
+ /**
17562
+ * Used to resolve the
17563
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
17564
+ * of values.
17565
+ */
17566
+ var nativeObjectToString$1 = objectProto$1.toString;
17567
+
17568
+ /**
17569
+ * Converts `value` to a string using `Object.prototype.toString`.
17570
+ *
17571
+ * @private
17572
+ * @param {*} value The value to convert.
17573
+ * @returns {string} Returns the converted string.
17574
+ */
17575
+ function objectToString(value) {
17576
+ return nativeObjectToString$1.call(value);
17577
+ }
17578
+
17579
+ var _objectToString = objectToString;
17580
+
17581
+ /** `Object#toString` result references. */
17582
+ var nullTag = '[object Null]',
17583
+ undefinedTag = '[object Undefined]';
17584
+
17585
+ /** Built-in value references. */
17586
+ var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
17587
+
17588
+ /**
17589
+ * The base implementation of `getTag` without fallbacks for buggy environments.
17590
+ *
17591
+ * @private
17592
+ * @param {*} value The value to query.
17593
+ * @returns {string} Returns the `toStringTag`.
17594
+ */
17595
+ function baseGetTag(value) {
17596
+ if (value == null) {
17597
+ return value === undefined ? undefinedTag : nullTag;
17598
+ }
17599
+ return (symToStringTag$1 && symToStringTag$1 in Object(value))
17600
+ ? _getRawTag(value)
17601
+ : _objectToString(value);
17602
+ }
17603
+
17604
+ var _baseGetTag = baseGetTag;
17605
+
17606
+ /**
17607
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
17608
+ * and has a `typeof` result of "object".
17609
+ *
17610
+ * @static
17611
+ * @memberOf _
17612
+ * @since 4.0.0
17613
+ * @category Lang
17614
+ * @param {*} value The value to check.
17615
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
17616
+ * @example
17617
+ *
17618
+ * _.isObjectLike({});
17619
+ * // => true
17620
+ *
17621
+ * _.isObjectLike([1, 2, 3]);
17622
+ * // => true
17623
+ *
17624
+ * _.isObjectLike(_.noop);
17625
+ * // => false
17626
+ *
17627
+ * _.isObjectLike(null);
17628
+ * // => false
17629
+ */
17630
+ function isObjectLike$1(value) {
17631
+ return value != null && typeof value == 'object';
17632
+ }
17633
+
17634
+ var isObjectLike_1 = isObjectLike$1;
17635
+
17636
+ /** `Object#toString` result references. */
17637
+ var argsTag = '[object Arguments]';
17638
+
17639
+ /**
17640
+ * The base implementation of `_.isArguments`.
17641
+ *
17642
+ * @private
17643
+ * @param {*} value The value to check.
17644
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
17645
+ */
17646
+ function baseIsArguments(value) {
17647
+ return isObjectLike_1(value) && _baseGetTag(value) == argsTag;
17648
+ }
17649
+
17650
+ var _baseIsArguments = baseIsArguments;
17651
+
17652
+ /** Used for built-in method references. */
17653
+ var objectProto$2 = Object.prototype;
17654
+
17655
+ /** Used to check objects for own properties. */
17656
+ var hasOwnProperty$5 = objectProto$2.hasOwnProperty;
17657
+
17658
+ /** Built-in value references. */
17659
+ var propertyIsEnumerable = objectProto$2.propertyIsEnumerable;
17660
+
17661
+ /**
17662
+ * Checks if `value` is likely an `arguments` object.
17663
+ *
17664
+ * @static
17665
+ * @memberOf _
17666
+ * @since 0.1.0
17667
+ * @category Lang
17668
+ * @param {*} value The value to check.
17669
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
17670
+ * else `false`.
17671
+ * @example
17672
+ *
17673
+ * _.isArguments(function() { return arguments; }());
17674
+ * // => true
17675
+ *
17676
+ * _.isArguments([1, 2, 3]);
17677
+ * // => false
17678
+ */
17679
+ var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
17680
+ return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&
17681
+ !propertyIsEnumerable.call(value, 'callee');
17682
+ };
17683
+
17684
+ var isArguments_1 = isArguments;
17685
+
17686
+ /**
17687
+ * Checks if `value` is classified as an `Array` object.
17688
+ *
17689
+ * @static
17690
+ * @memberOf _
17691
+ * @since 0.1.0
17692
+ * @category Lang
17693
+ * @param {*} value The value to check.
17694
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
17695
+ * @example
17696
+ *
17697
+ * _.isArray([1, 2, 3]);
17698
+ * // => true
17699
+ *
17700
+ * _.isArray(document.body.children);
17701
+ * // => false
17702
+ *
17703
+ * _.isArray('abc');
17704
+ * // => false
17705
+ *
17706
+ * _.isArray(_.noop);
17707
+ * // => false
17708
+ */
17709
+ var isArray = Array.isArray;
17710
+
17711
+ var isArray_1 = isArray;
17712
+
17713
+ /**
17714
+ * This method returns `false`.
17715
+ *
17716
+ * @static
17717
+ * @memberOf _
17718
+ * @since 4.13.0
17719
+ * @category Util
17720
+ * @returns {boolean} Returns `false`.
17721
+ * @example
17722
+ *
17723
+ * _.times(2, _.stubFalse);
17724
+ * // => [false, false]
17725
+ */
17726
+ function stubFalse() {
17727
+ return false;
17728
+ }
17729
+
17730
+ var stubFalse_1 = stubFalse;
17731
+
17732
+ var isBuffer_1 = createCommonjsModule(function (module, exports) {
17733
+ /** Detect free variable `exports`. */
17734
+ var freeExports = exports && !exports.nodeType && exports;
17735
+
17736
+ /** Detect free variable `module`. */
17737
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
17738
+
17739
+ /** Detect the popular CommonJS extension `module.exports`. */
17740
+ var moduleExports = freeModule && freeModule.exports === freeExports;
17741
+
17742
+ /** Built-in value references. */
17743
+ var Buffer = moduleExports ? _root.Buffer : undefined;
17744
+
17745
+ /* Built-in method references for those with the same name as other `lodash` methods. */
17746
+ var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
17747
+
17748
+ /**
17749
+ * Checks if `value` is a buffer.
17750
+ *
17751
+ * @static
17752
+ * @memberOf _
17753
+ * @since 4.3.0
17754
+ * @category Lang
17755
+ * @param {*} value The value to check.
17756
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
17757
+ * @example
17758
+ *
17759
+ * _.isBuffer(new Buffer(2));
17760
+ * // => true
17761
+ *
17762
+ * _.isBuffer(new Uint8Array(2));
17763
+ * // => false
17764
+ */
17765
+ var isBuffer = nativeIsBuffer || stubFalse_1;
17766
+
17767
+ module.exports = isBuffer;
17768
+ });
17769
+
17770
+ /** Used as references for various `Number` constants. */
17771
+ var MAX_SAFE_INTEGER = 9007199254740991;
17772
+
17773
+ /** Used to detect unsigned integer values. */
17774
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
17775
+
17776
+ /**
17777
+ * Checks if `value` is a valid array-like index.
17778
+ *
17779
+ * @private
17780
+ * @param {*} value The value to check.
17781
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
17782
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
17783
+ */
17784
+ function isIndex(value, length) {
17785
+ var type = typeof value;
17786
+ length = length == null ? MAX_SAFE_INTEGER : length;
17787
+
17788
+ return !!length &&
17789
+ (type == 'number' ||
17790
+ (type != 'symbol' && reIsUint.test(value))) &&
17791
+ (value > -1 && value % 1 == 0 && value < length);
17792
+ }
17793
+
17794
+ var _isIndex = isIndex;
17795
+
17796
+ /** Used as references for various `Number` constants. */
17797
+ var MAX_SAFE_INTEGER$1 = 9007199254740991;
17798
+
17799
+ /**
17800
+ * Checks if `value` is a valid array-like length.
17801
+ *
17802
+ * **Note:** This method is loosely based on
17803
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
17804
+ *
17805
+ * @static
17806
+ * @memberOf _
17807
+ * @since 4.0.0
17808
+ * @category Lang
17809
+ * @param {*} value The value to check.
17810
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
17811
+ * @example
17812
+ *
17813
+ * _.isLength(3);
17814
+ * // => true
17815
+ *
17816
+ * _.isLength(Number.MIN_VALUE);
17817
+ * // => false
17818
+ *
17819
+ * _.isLength(Infinity);
17820
+ * // => false
17821
+ *
17822
+ * _.isLength('3');
17823
+ * // => false
17824
+ */
17825
+ function isLength(value) {
17826
+ return typeof value == 'number' &&
17827
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;
17828
+ }
17829
+
17830
+ var isLength_1 = isLength;
17831
+
17832
+ /** `Object#toString` result references. */
17833
+ var argsTag$1 = '[object Arguments]',
17834
+ arrayTag = '[object Array]',
17835
+ boolTag = '[object Boolean]',
17836
+ dateTag = '[object Date]',
17837
+ errorTag = '[object Error]',
17838
+ funcTag = '[object Function]',
17839
+ mapTag = '[object Map]',
17840
+ numberTag = '[object Number]',
17841
+ objectTag = '[object Object]',
17842
+ regexpTag = '[object RegExp]',
17843
+ setTag = '[object Set]',
17844
+ stringTag = '[object String]',
17845
+ weakMapTag = '[object WeakMap]';
17846
+
17847
+ var arrayBufferTag = '[object ArrayBuffer]',
17848
+ dataViewTag = '[object DataView]',
17849
+ float32Tag = '[object Float32Array]',
17850
+ float64Tag = '[object Float64Array]',
17851
+ int8Tag = '[object Int8Array]',
17852
+ int16Tag = '[object Int16Array]',
17853
+ int32Tag = '[object Int32Array]',
17854
+ uint8Tag = '[object Uint8Array]',
17855
+ uint8ClampedTag = '[object Uint8ClampedArray]',
17856
+ uint16Tag = '[object Uint16Array]',
17857
+ uint32Tag = '[object Uint32Array]';
17858
+
17859
+ /** Used to identify `toStringTag` values of typed arrays. */
17860
+ var typedArrayTags = {};
17861
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
17862
+ typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
17863
+ typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
17864
+ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
17865
+ typedArrayTags[uint32Tag] = true;
17866
+ typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =
17867
+ typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
17868
+ typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
17869
+ typedArrayTags[errorTag] = typedArrayTags[funcTag] =
17870
+ typedArrayTags[mapTag] = typedArrayTags[numberTag] =
17871
+ typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
17872
+ typedArrayTags[setTag] = typedArrayTags[stringTag] =
17873
+ typedArrayTags[weakMapTag] = false;
17874
+
17875
+ /**
17876
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
17877
+ *
17878
+ * @private
17879
+ * @param {*} value The value to check.
17880
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
17881
+ */
17882
+ function baseIsTypedArray(value) {
17883
+ return isObjectLike_1(value) &&
17884
+ isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];
17885
+ }
17886
+
17887
+ var _baseIsTypedArray = baseIsTypedArray;
17888
+
17889
+ /**
17890
+ * The base implementation of `_.unary` without support for storing metadata.
17891
+ *
17892
+ * @private
17893
+ * @param {Function} func The function to cap arguments for.
17894
+ * @returns {Function} Returns the new capped function.
17895
+ */
17896
+ function baseUnary(func) {
17897
+ return function(value) {
17898
+ return func(value);
17899
+ };
17900
+ }
17901
+
17902
+ var _baseUnary = baseUnary;
17903
+
17904
+ var _nodeUtil = createCommonjsModule(function (module, exports) {
17905
+ /** Detect free variable `exports`. */
17906
+ var freeExports = exports && !exports.nodeType && exports;
17907
+
17908
+ /** Detect free variable `module`. */
17909
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
17910
+
17911
+ /** Detect the popular CommonJS extension `module.exports`. */
17912
+ var moduleExports = freeModule && freeModule.exports === freeExports;
17913
+
17914
+ /** Detect free variable `process` from Node.js. */
17915
+ var freeProcess = moduleExports && _freeGlobal.process;
17916
+
17917
+ /** Used to access faster Node.js helpers. */
17918
+ var nodeUtil = (function() {
17919
+ try {
17920
+ // Use `util.types` for Node.js 10+.
17921
+ var types = freeModule && freeModule.require && freeModule.require('util').types;
17922
+
17923
+ if (types) {
17924
+ return types;
17925
+ }
17926
+
17927
+ // Legacy `process.binding('util')` for Node.js < 10.
17928
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
17929
+ } catch (e) {}
17930
+ }());
17931
+
17932
+ module.exports = nodeUtil;
17933
+ });
17934
+
17935
+ /* Node.js helper references. */
17936
+ var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;
17937
+
17938
+ /**
17939
+ * Checks if `value` is classified as a typed array.
17940
+ *
17941
+ * @static
17942
+ * @memberOf _
17943
+ * @since 3.0.0
17944
+ * @category Lang
17945
+ * @param {*} value The value to check.
17946
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
17947
+ * @example
17948
+ *
17949
+ * _.isTypedArray(new Uint8Array);
17950
+ * // => true
17951
+ *
17952
+ * _.isTypedArray([]);
17953
+ * // => false
17954
+ */
17955
+ var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;
17956
+
17957
+ var isTypedArray_1 = isTypedArray;
17958
+
17959
+ /** Used for built-in method references. */
17960
+ var objectProto$3 = Object.prototype;
17961
+
17962
+ /** Used to check objects for own properties. */
17963
+ var hasOwnProperty$6 = objectProto$3.hasOwnProperty;
17964
+
17965
+ /**
17966
+ * Creates an array of the enumerable property names of the array-like `value`.
17967
+ *
17968
+ * @private
17969
+ * @param {*} value The value to query.
17970
+ * @param {boolean} inherited Specify returning inherited property names.
17971
+ * @returns {Array} Returns the array of property names.
17972
+ */
17973
+ function arrayLikeKeys(value, inherited) {
17974
+ var isArr = isArray_1(value),
17975
+ isArg = !isArr && isArguments_1(value),
17976
+ isBuff = !isArr && !isArg && isBuffer_1(value),
17977
+ isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),
17978
+ skipIndexes = isArr || isArg || isBuff || isType,
17979
+ result = skipIndexes ? _baseTimes(value.length, String) : [],
17980
+ length = result.length;
17981
+
17982
+ for (var key in value) {
17983
+ if ((inherited || hasOwnProperty$6.call(value, key)) &&
17984
+ !(skipIndexes && (
17985
+ // Safari 9 has enumerable `arguments.length` in strict mode.
17986
+ key == 'length' ||
17987
+ // Node.js 0.10 has enumerable non-index properties on buffers.
17988
+ (isBuff && (key == 'offset' || key == 'parent')) ||
17989
+ // PhantomJS 2 has enumerable non-index properties on typed arrays.
17990
+ (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
17991
+ // Skip index properties.
17992
+ _isIndex(key, length)
17993
+ ))) {
17994
+ result.push(key);
17995
+ }
17996
+ }
17997
+ return result;
17998
+ }
17999
+
18000
+ var _arrayLikeKeys = arrayLikeKeys;
18001
+
18002
+ /** Used for built-in method references. */
18003
+ var objectProto$4 = Object.prototype;
18004
+
18005
+ /**
18006
+ * Checks if `value` is likely a prototype object.
18007
+ *
18008
+ * @private
18009
+ * @param {*} value The value to check.
18010
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
18011
+ */
18012
+ function isPrototype(value) {
18013
+ var Ctor = value && value.constructor,
18014
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$4;
18015
+
18016
+ return value === proto;
18017
+ }
18018
+
18019
+ var _isPrototype = isPrototype;
18020
+
18021
+ /**
18022
+ * Creates a unary function that invokes `func` with its argument transformed.
18023
+ *
18024
+ * @private
18025
+ * @param {Function} func The function to wrap.
18026
+ * @param {Function} transform The argument transform.
18027
+ * @returns {Function} Returns the new function.
18028
+ */
18029
+ function overArg(func, transform) {
18030
+ return function(arg) {
18031
+ return func(transform(arg));
18032
+ };
18033
+ }
18034
+
18035
+ var _overArg = overArg;
18036
+
18037
+ /* Built-in method references for those with the same name as other `lodash` methods. */
18038
+ var nativeKeys = _overArg(Object.keys, Object);
18039
+
18040
+ var _nativeKeys = nativeKeys;
18041
+
18042
+ /** Used for built-in method references. */
18043
+ var objectProto$5 = Object.prototype;
18044
+
18045
+ /** Used to check objects for own properties. */
18046
+ var hasOwnProperty$7 = objectProto$5.hasOwnProperty;
18047
+
18048
+ /**
18049
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
18050
+ *
18051
+ * @private
18052
+ * @param {Object} object The object to query.
18053
+ * @returns {Array} Returns the array of property names.
18054
+ */
18055
+ function baseKeys(object) {
18056
+ if (!_isPrototype(object)) {
18057
+ return _nativeKeys(object);
18058
+ }
18059
+ var result = [];
18060
+ for (var key in Object(object)) {
18061
+ if (hasOwnProperty$7.call(object, key) && key != 'constructor') {
18062
+ result.push(key);
18063
+ }
18064
+ }
18065
+ return result;
18066
+ }
18067
+
18068
+ var _baseKeys = baseKeys;
18069
+
18070
+ /**
18071
+ * Checks if `value` is the
18072
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
18073
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
18074
+ *
18075
+ * @static
18076
+ * @memberOf _
18077
+ * @since 0.1.0
18078
+ * @category Lang
18079
+ * @param {*} value The value to check.
18080
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
18081
+ * @example
18082
+ *
18083
+ * _.isObject({});
18084
+ * // => true
18085
+ *
18086
+ * _.isObject([1, 2, 3]);
18087
+ * // => true
18088
+ *
18089
+ * _.isObject(_.noop);
18090
+ * // => true
18091
+ *
18092
+ * _.isObject(null);
18093
+ * // => false
18094
+ */
18095
+ function isObject$2(value) {
18096
+ var type = typeof value;
18097
+ return value != null && (type == 'object' || type == 'function');
18098
+ }
18099
+
18100
+ var isObject_1 = isObject$2;
18101
+
18102
+ /** `Object#toString` result references. */
18103
+ var asyncTag = '[object AsyncFunction]',
18104
+ funcTag$1 = '[object Function]',
18105
+ genTag = '[object GeneratorFunction]',
18106
+ proxyTag = '[object Proxy]';
18107
+
18108
+ /**
18109
+ * Checks if `value` is classified as a `Function` object.
18110
+ *
18111
+ * @static
18112
+ * @memberOf _
18113
+ * @since 0.1.0
18114
+ * @category Lang
18115
+ * @param {*} value The value to check.
18116
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
18117
+ * @example
18118
+ *
18119
+ * _.isFunction(_);
18120
+ * // => true
18121
+ *
18122
+ * _.isFunction(/abc/);
18123
+ * // => false
18124
+ */
18125
+ function isFunction(value) {
18126
+ if (!isObject_1(value)) {
18127
+ return false;
18128
+ }
18129
+ // The use of `Object#toString` avoids issues with the `typeof` operator
18130
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
18131
+ var tag = _baseGetTag(value);
18132
+ return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
18133
+ }
18134
+
18135
+ var isFunction_1 = isFunction;
18136
+
18137
+ /**
18138
+ * Checks if `value` is array-like. A value is considered array-like if it's
18139
+ * not a function and has a `value.length` that's an integer greater than or
18140
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
18141
+ *
18142
+ * @static
18143
+ * @memberOf _
18144
+ * @since 4.0.0
18145
+ * @category Lang
18146
+ * @param {*} value The value to check.
18147
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
18148
+ * @example
18149
+ *
18150
+ * _.isArrayLike([1, 2, 3]);
18151
+ * // => true
18152
+ *
18153
+ * _.isArrayLike(document.body.children);
18154
+ * // => true
18155
+ *
18156
+ * _.isArrayLike('abc');
18157
+ * // => true
18158
+ *
18159
+ * _.isArrayLike(_.noop);
18160
+ * // => false
18161
+ */
18162
+ function isArrayLike(value) {
18163
+ return value != null && isLength_1(value.length) && !isFunction_1(value);
18164
+ }
18165
+
18166
+ var isArrayLike_1 = isArrayLike;
18167
+
18168
+ /**
18169
+ * Creates an array of the own enumerable property names of `object`.
18170
+ *
18171
+ * **Note:** Non-object values are coerced to objects. See the
18172
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
18173
+ * for more details.
18174
+ *
18175
+ * @static
18176
+ * @since 0.1.0
18177
+ * @memberOf _
18178
+ * @category Object
18179
+ * @param {Object} object The object to query.
18180
+ * @returns {Array} Returns the array of property names.
18181
+ * @example
18182
+ *
18183
+ * function Foo() {
18184
+ * this.a = 1;
18185
+ * this.b = 2;
18186
+ * }
18187
+ *
18188
+ * Foo.prototype.c = 3;
18189
+ *
18190
+ * _.keys(new Foo);
18191
+ * // => ['a', 'b'] (iteration order is not guaranteed)
18192
+ *
18193
+ * _.keys('hi');
18194
+ * // => ['0', '1']
18195
+ */
18196
+ function keys(object) {
18197
+ return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);
18198
+ }
18199
+
18200
+ var keys_1 = keys;
18201
+
18202
+ /**
18203
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
18204
+ *
18205
+ * @private
18206
+ * @param {Object} object The object to iterate over.
18207
+ * @param {Function} iteratee The function invoked per iteration.
18208
+ * @returns {Object} Returns `object`.
18209
+ */
18210
+ function baseForOwn(object, iteratee) {
18211
+ return object && _baseFor(object, iteratee, keys_1);
18212
+ }
18213
+
18214
+ var _baseForOwn = baseForOwn;
18215
+
18216
+ /**
18217
+ * Creates a `baseEach` or `baseEachRight` function.
18218
+ *
18219
+ * @private
18220
+ * @param {Function} eachFunc The function to iterate over a collection.
18221
+ * @param {boolean} [fromRight] Specify iterating from right to left.
18222
+ * @returns {Function} Returns the new base function.
18223
+ */
18224
+ function createBaseEach(eachFunc, fromRight) {
18225
+ return function(collection, iteratee) {
18226
+ if (collection == null) {
18227
+ return collection;
18228
+ }
18229
+ if (!isArrayLike_1(collection)) {
18230
+ return eachFunc(collection, iteratee);
18231
+ }
18232
+ var length = collection.length,
18233
+ index = fromRight ? length : -1,
18234
+ iterable = Object(collection);
18235
+
18236
+ while ((fromRight ? index-- : ++index < length)) {
18237
+ if (iteratee(iterable[index], index, iterable) === false) {
18238
+ break;
18239
+ }
18240
+ }
18241
+ return collection;
18242
+ };
18243
+ }
18244
+
18245
+ var _createBaseEach = createBaseEach;
18246
+
18247
+ /**
18248
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
18249
+ *
18250
+ * @private
18251
+ * @param {Array|Object} collection The collection to iterate over.
18252
+ * @param {Function} iteratee The function invoked per iteration.
18253
+ * @returns {Array|Object} Returns `collection`.
18254
+ */
18255
+ var baseEach = _createBaseEach(_baseForOwn);
18256
+
18257
+ var _baseEach = baseEach;
18258
+
18259
+ /**
18260
+ * This method returns the first argument it receives.
18261
+ *
18262
+ * @static
18263
+ * @since 0.1.0
18264
+ * @memberOf _
18265
+ * @category Util
18266
+ * @param {*} value Any value.
18267
+ * @returns {*} Returns `value`.
18268
+ * @example
18269
+ *
18270
+ * var object = { 'a': 1 };
18271
+ *
18272
+ * console.log(_.identity(object) === object);
18273
+ * // => true
18274
+ */
18275
+ function identity(value) {
18276
+ return value;
18277
+ }
18278
+
18279
+ var identity_1 = identity;
18280
+
18281
+ /**
18282
+ * Casts `value` to `identity` if it's not a function.
18283
+ *
18284
+ * @private
18285
+ * @param {*} value The value to inspect.
18286
+ * @returns {Function} Returns cast function.
18287
+ */
18288
+ function castFunction(value) {
18289
+ return typeof value == 'function' ? value : identity_1;
18290
+ }
18291
+
18292
+ var _castFunction = castFunction;
18293
+
18294
+ /**
18295
+ * Iterates over elements of `collection` and invokes `iteratee` for each element.
18296
+ * The iteratee is invoked with three arguments: (value, index|key, collection).
18297
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
18298
+ *
18299
+ * **Note:** As with other "Collections" methods, objects with a "length"
18300
+ * property are iterated like arrays. To avoid this behavior use `_.forIn`
18301
+ * or `_.forOwn` for object iteration.
18302
+ *
18303
+ * @static
18304
+ * @memberOf _
18305
+ * @since 0.1.0
18306
+ * @alias each
18307
+ * @category Collection
18308
+ * @param {Array|Object} collection The collection to iterate over.
18309
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18310
+ * @returns {Array|Object} Returns `collection`.
18311
+ * @see _.forEachRight
18312
+ * @example
18313
+ *
18314
+ * _.forEach([1, 2], function(value) {
18315
+ * console.log(value);
18316
+ * });
18317
+ * // => Logs `1` then `2`.
18318
+ *
18319
+ * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
18320
+ * console.log(key);
18321
+ * });
18322
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
18323
+ */
18324
+ function forEach$1(collection, iteratee) {
18325
+ var func = isArray_1(collection) ? _arrayEach : _baseEach;
18326
+ return func(collection, _castFunction(iteratee));
18327
+ }
18328
+
18329
+ var forEach_1 = forEach$1;
18330
+
17409
18331
  var stringToSlug = function (str) {
17410
18332
  str = str.replace(/^\s+|\s+$/g, ""); // trim
17411
18333
  str = str.toLocaleLowerCase("tr-TR");
@@ -17486,6 +18408,18 @@ function formatDate(date) {
17486
18408
  options.hour12 = is12Hour(locale);
17487
18409
  return new Intl.DateTimeFormat(locale, options).format(date);
17488
18410
  }
18411
+ }
18412
+ function tryForEach(items, callback, printErrors) {
18413
+ if (printErrors === void 0) { printErrors = false; }
18414
+ forEach_1(items, function (value, index) {
18415
+ try {
18416
+ callback(value, index);
18417
+ }
18418
+ catch (err) {
18419
+ if (printErrors)
18420
+ console.error(err);
18421
+ }
18422
+ });
17489
18423
  }
17490
18424
 
17491
18425
  var IkasCheckout = /** @class */ (function () {
@@ -17767,7 +18701,6 @@ var IkasCustomerAddress = /** @class */ (function () {
17767
18701
  firstName: !!this.firstName,
17768
18702
  lastName: !!this.lastName,
17769
18703
  addressLine1: !!this.addressLine1,
17770
- postalCode: !!this.postalCode,
17771
18704
  country: !!this.country,
17772
18705
  state: !!this.state,
17773
18706
  city: !!this.city,
@@ -17834,6 +18767,19 @@ var IkasCustomer = /** @class */ (function () {
17834
18767
  enumerable: false,
17835
18768
  configurable: true
17836
18769
  });
18770
+ Object.defineProperty(IkasCustomer.prototype, "basicInfo", {
18771
+ get: function () {
18772
+ return {
18773
+ id: this.id,
18774
+ firstName: this.firstName,
18775
+ lastName: this.lastName,
18776
+ email: this.email,
18777
+ phone: this.phone,
18778
+ };
18779
+ },
18780
+ enumerable: false,
18781
+ configurable: true
18782
+ });
17837
18783
  return IkasCustomer;
17838
18784
  }());
17839
18785
  var IkasCustomerAccountStatus;
@@ -17979,913 +18925,260 @@ var FacebookPixel = /** @class */ (function () {
17979
18925
  !isServer &&
17980
18926
  window.fbq &&
17981
18927
  window.fbq("track", "ViewCategory", {
17982
- content_name: categoryPath,
17983
- });
17984
- return;
17985
- }
17986
- catch (err) {
17987
- console.error(err);
17988
- }
17989
- };
17990
- FacebookPixel.contactForm = function () {
17991
- try {
17992
- !isServer &&
17993
- window.fbq &&
17994
- window.fbq("track", "ContactForm", {});
17995
- return;
17996
- }
17997
- catch (err) {
17998
- console.error(err);
17999
- }
18000
- };
18001
- return FacebookPixel;
18002
- }());
18003
- function productToFBPItem(productDetail, quantity) {
18004
- return {
18005
- content_name: productDetail.product.name,
18006
- content_category: productDetail.product.categories.length > 0
18007
- ? productDetail.product.categories[0].path
18008
- .map(function (category) { return category.name; })
18009
- .join(" > ")
18010
- : "",
18011
- content_ids: [productDetail.selectedVariant.id],
18012
- content_type: "product",
18013
- value: productDetail.selectedVariant.price.finalPrice,
18014
- currency: productDetail.selectedVariant.price.currency === ""
18015
- ? "TRY"
18016
- : productDetail.selectedVariant.price.currency,
18017
- };
18018
- }
18019
- function beginCheckoutFBPItem(checkout) {
18020
- var _a, _b, _c, _d;
18021
- var contentIds = [];
18022
- var contents = [];
18023
- (_a = checkout.cart) === null || _a === void 0 ? void 0 : _a.items.map(function (item) {
18024
- contentIds.push(item.id);
18025
- contents.push({ id: item.id, quantity: item.quantity });
18026
- });
18027
- return {
18028
- contents: contents,
18029
- content_category: "",
18030
- content_type: "product_group",
18031
- content_ids: contentIds,
18032
- currency: (_b = checkout.cart) === null || _b === void 0 ? void 0 : _b.items[0].currencyCode,
18033
- value: (_c = checkout.cart) === null || _c === void 0 ? void 0 : _c.totalPrice,
18034
- num_items: (_d = checkout.cart) === null || _d === void 0 ? void 0 : _d.items.length,
18035
- };
18036
- }
18037
- function viewCartFBPItem(cart) {
18038
- var contentIds = [];
18039
- var contents = [];
18040
- cart.items.map(function (item) {
18041
- contentIds.push(item.id);
18042
- contents.push({ id: item.id, quantity: item.quantity });
18043
- });
18044
- return {
18045
- contents: contents,
18046
- content_type: "product_group",
18047
- content_ids: contentIds,
18048
- currency: cart.items[0].currencyCode,
18049
- value: cart.totalPrice,
18050
- num_items: cart.items.length,
18051
- };
18052
- }
18053
- function orderLineItemToFBPItem(orderLineItem, quantity) {
18054
- return {
18055
- content_name: orderLineItem.variant.name,
18056
- content_category: "",
18057
- content_ids: [orderLineItem.variant.id],
18058
- content_type: "product",
18059
- value: orderLineItem.finalPrice,
18060
- currency: orderLineItem.currencyCode,
18061
- };
18062
- }
18063
-
18064
- /**
18065
- * Removes all key-value entries from the list cache.
18066
- *
18067
- * @private
18068
- * @name clear
18069
- * @memberOf ListCache
18070
- */
18071
- function listCacheClear() {
18072
- this.__data__ = [];
18073
- this.size = 0;
18074
- }
18075
-
18076
- var _listCacheClear = listCacheClear;
18077
-
18078
- /**
18079
- * Performs a
18080
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
18081
- * comparison between two values to determine if they are equivalent.
18082
- *
18083
- * @static
18084
- * @memberOf _
18085
- * @since 4.0.0
18086
- * @category Lang
18087
- * @param {*} value The value to compare.
18088
- * @param {*} other The other value to compare.
18089
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
18090
- * @example
18091
- *
18092
- * var object = { 'a': 1 };
18093
- * var other = { 'a': 1 };
18094
- *
18095
- * _.eq(object, object);
18096
- * // => true
18097
- *
18098
- * _.eq(object, other);
18099
- * // => false
18100
- *
18101
- * _.eq('a', 'a');
18102
- * // => true
18103
- *
18104
- * _.eq('a', Object('a'));
18105
- * // => false
18106
- *
18107
- * _.eq(NaN, NaN);
18108
- * // => true
18109
- */
18110
- function eq(value, other) {
18111
- return value === other || (value !== value && other !== other);
18112
- }
18113
-
18114
- var eq_1 = eq;
18115
-
18116
- /**
18117
- * Gets the index at which the `key` is found in `array` of key-value pairs.
18118
- *
18119
- * @private
18120
- * @param {Array} array The array to inspect.
18121
- * @param {*} key The key to search for.
18122
- * @returns {number} Returns the index of the matched value, else `-1`.
18123
- */
18124
- function assocIndexOf(array, key) {
18125
- var length = array.length;
18126
- while (length--) {
18127
- if (eq_1(array[length][0], key)) {
18128
- return length;
18129
- }
18130
- }
18131
- return -1;
18132
- }
18133
-
18134
- var _assocIndexOf = assocIndexOf;
18135
-
18136
- /** Used for built-in method references. */
18137
- var arrayProto = Array.prototype;
18138
-
18139
- /** Built-in value references. */
18140
- var splice = arrayProto.splice;
18141
-
18142
- /**
18143
- * Removes `key` and its value from the list cache.
18144
- *
18145
- * @private
18146
- * @name delete
18147
- * @memberOf ListCache
18148
- * @param {string} key The key of the value to remove.
18149
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
18150
- */
18151
- function listCacheDelete(key) {
18152
- var data = this.__data__,
18153
- index = _assocIndexOf(data, key);
18154
-
18155
- if (index < 0) {
18156
- return false;
18157
- }
18158
- var lastIndex = data.length - 1;
18159
- if (index == lastIndex) {
18160
- data.pop();
18161
- } else {
18162
- splice.call(data, index, 1);
18163
- }
18164
- --this.size;
18165
- return true;
18166
- }
18167
-
18168
- var _listCacheDelete = listCacheDelete;
18169
-
18170
- /**
18171
- * Gets the list cache value for `key`.
18172
- *
18173
- * @private
18174
- * @name get
18175
- * @memberOf ListCache
18176
- * @param {string} key The key of the value to get.
18177
- * @returns {*} Returns the entry value.
18178
- */
18179
- function listCacheGet(key) {
18180
- var data = this.__data__,
18181
- index = _assocIndexOf(data, key);
18182
-
18183
- return index < 0 ? undefined : data[index][1];
18184
- }
18185
-
18186
- var _listCacheGet = listCacheGet;
18187
-
18188
- /**
18189
- * Checks if a list cache value for `key` exists.
18190
- *
18191
- * @private
18192
- * @name has
18193
- * @memberOf ListCache
18194
- * @param {string} key The key of the entry to check.
18195
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
18196
- */
18197
- function listCacheHas(key) {
18198
- return _assocIndexOf(this.__data__, key) > -1;
18199
- }
18200
-
18201
- var _listCacheHas = listCacheHas;
18202
-
18203
- /**
18204
- * Sets the list cache `key` to `value`.
18205
- *
18206
- * @private
18207
- * @name set
18208
- * @memberOf ListCache
18209
- * @param {string} key The key of the value to set.
18210
- * @param {*} value The value to set.
18211
- * @returns {Object} Returns the list cache instance.
18212
- */
18213
- function listCacheSet(key, value) {
18214
- var data = this.__data__,
18215
- index = _assocIndexOf(data, key);
18216
-
18217
- if (index < 0) {
18218
- ++this.size;
18219
- data.push([key, value]);
18220
- } else {
18221
- data[index][1] = value;
18222
- }
18223
- return this;
18224
- }
18225
-
18226
- var _listCacheSet = listCacheSet;
18227
-
18228
- /**
18229
- * Creates an list cache object.
18230
- *
18231
- * @private
18232
- * @constructor
18233
- * @param {Array} [entries] The key-value pairs to cache.
18234
- */
18235
- function ListCache(entries) {
18236
- var index = -1,
18237
- length = entries == null ? 0 : entries.length;
18238
-
18239
- this.clear();
18240
- while (++index < length) {
18241
- var entry = entries[index];
18242
- this.set(entry[0], entry[1]);
18243
- }
18244
- }
18245
-
18246
- // Add methods to `ListCache`.
18247
- ListCache.prototype.clear = _listCacheClear;
18248
- ListCache.prototype['delete'] = _listCacheDelete;
18249
- ListCache.prototype.get = _listCacheGet;
18250
- ListCache.prototype.has = _listCacheHas;
18251
- ListCache.prototype.set = _listCacheSet;
18252
-
18253
- var _ListCache = ListCache;
18254
-
18255
- /**
18256
- * Removes all key-value entries from the stack.
18257
- *
18258
- * @private
18259
- * @name clear
18260
- * @memberOf Stack
18261
- */
18262
- function stackClear() {
18263
- this.__data__ = new _ListCache;
18264
- this.size = 0;
18265
- }
18266
-
18267
- var _stackClear = stackClear;
18268
-
18269
- /**
18270
- * Removes `key` and its value from the stack.
18271
- *
18272
- * @private
18273
- * @name delete
18274
- * @memberOf Stack
18275
- * @param {string} key The key of the value to remove.
18276
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
18277
- */
18278
- function stackDelete(key) {
18279
- var data = this.__data__,
18280
- result = data['delete'](key);
18281
-
18282
- this.size = data.size;
18283
- return result;
18284
- }
18285
-
18286
- var _stackDelete = stackDelete;
18287
-
18288
- /**
18289
- * Gets the stack value for `key`.
18290
- *
18291
- * @private
18292
- * @name get
18293
- * @memberOf Stack
18294
- * @param {string} key The key of the value to get.
18295
- * @returns {*} Returns the entry value.
18296
- */
18297
- function stackGet(key) {
18298
- return this.__data__.get(key);
18299
- }
18300
-
18301
- var _stackGet = stackGet;
18302
-
18303
- /**
18304
- * Checks if a stack value for `key` exists.
18305
- *
18306
- * @private
18307
- * @name has
18308
- * @memberOf Stack
18309
- * @param {string} key The key of the entry to check.
18310
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
18311
- */
18312
- function stackHas(key) {
18313
- return this.__data__.has(key);
18314
- }
18315
-
18316
- var _stackHas = stackHas;
18317
-
18318
- /** Detect free variable `global` from Node.js. */
18319
-
18320
- var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
18321
-
18322
- var _freeGlobal = freeGlobal;
18323
-
18324
- /** Detect free variable `self`. */
18325
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
18326
-
18327
- /** Used as a reference to the global object. */
18328
- var root$1 = _freeGlobal || freeSelf || Function('return this')();
18329
-
18330
- var _root = root$1;
18331
-
18332
- /** Built-in value references. */
18333
- var Symbol$1 = _root.Symbol;
18334
-
18335
- var _Symbol = Symbol$1;
18336
-
18337
- /** Used for built-in method references. */
18338
- var objectProto = Object.prototype;
18339
-
18340
- /** Used to check objects for own properties. */
18341
- var hasOwnProperty$4 = objectProto.hasOwnProperty;
18342
-
18343
- /**
18344
- * Used to resolve the
18345
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
18346
- * of values.
18347
- */
18348
- var nativeObjectToString = objectProto.toString;
18349
-
18350
- /** Built-in value references. */
18351
- var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
18352
-
18353
- /**
18354
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
18355
- *
18356
- * @private
18357
- * @param {*} value The value to query.
18358
- * @returns {string} Returns the raw `toStringTag`.
18359
- */
18360
- function getRawTag(value) {
18361
- var isOwn = hasOwnProperty$4.call(value, symToStringTag),
18362
- tag = value[symToStringTag];
18363
-
18364
- try {
18365
- value[symToStringTag] = undefined;
18366
- var unmasked = true;
18367
- } catch (e) {}
18368
-
18369
- var result = nativeObjectToString.call(value);
18370
- if (unmasked) {
18371
- if (isOwn) {
18372
- value[symToStringTag] = tag;
18373
- } else {
18374
- delete value[symToStringTag];
18375
- }
18376
- }
18377
- return result;
18378
- }
18379
-
18380
- var _getRawTag = getRawTag;
18381
-
18382
- /** Used for built-in method references. */
18383
- var objectProto$1 = Object.prototype;
18384
-
18385
- /**
18386
- * Used to resolve the
18387
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
18388
- * of values.
18389
- */
18390
- var nativeObjectToString$1 = objectProto$1.toString;
18391
-
18392
- /**
18393
- * Converts `value` to a string using `Object.prototype.toString`.
18394
- *
18395
- * @private
18396
- * @param {*} value The value to convert.
18397
- * @returns {string} Returns the converted string.
18398
- */
18399
- function objectToString(value) {
18400
- return nativeObjectToString$1.call(value);
18928
+ content_name: categoryPath,
18929
+ });
18930
+ return;
18931
+ }
18932
+ catch (err) {
18933
+ console.error(err);
18934
+ }
18935
+ };
18936
+ FacebookPixel.contactForm = function () {
18937
+ try {
18938
+ !isServer &&
18939
+ window.fbq &&
18940
+ window.fbq("track", "ContactForm", {});
18941
+ return;
18942
+ }
18943
+ catch (err) {
18944
+ console.error(err);
18945
+ }
18946
+ };
18947
+ return FacebookPixel;
18948
+ }());
18949
+ function productToFBPItem(productDetail, quantity) {
18950
+ return {
18951
+ content_name: productDetail.product.name,
18952
+ content_category: productDetail.product.categories.length > 0
18953
+ ? productDetail.product.categories[0].path
18954
+ .map(function (category) { return category.name; })
18955
+ .join(" > ")
18956
+ : "",
18957
+ content_ids: [productDetail.selectedVariant.id],
18958
+ content_type: "product",
18959
+ value: productDetail.selectedVariant.price.finalPrice,
18960
+ currency: productDetail.selectedVariant.price.currency === ""
18961
+ ? "TRY"
18962
+ : productDetail.selectedVariant.price.currency,
18963
+ };
18964
+ }
18965
+ function beginCheckoutFBPItem(checkout) {
18966
+ var _a, _b, _c, _d;
18967
+ var contentIds = [];
18968
+ var contents = [];
18969
+ (_a = checkout.cart) === null || _a === void 0 ? void 0 : _a.items.map(function (item) {
18970
+ contentIds.push(item.id);
18971
+ contents.push({ id: item.id, quantity: item.quantity });
18972
+ });
18973
+ return {
18974
+ contents: contents,
18975
+ content_category: "",
18976
+ content_type: "product_group",
18977
+ content_ids: contentIds,
18978
+ currency: (_b = checkout.cart) === null || _b === void 0 ? void 0 : _b.items[0].currencyCode,
18979
+ value: (_c = checkout.cart) === null || _c === void 0 ? void 0 : _c.totalPrice,
18980
+ num_items: (_d = checkout.cart) === null || _d === void 0 ? void 0 : _d.items.length,
18981
+ };
18982
+ }
18983
+ function viewCartFBPItem(cart) {
18984
+ var contentIds = [];
18985
+ var contents = [];
18986
+ cart.items.map(function (item) {
18987
+ contentIds.push(item.id);
18988
+ contents.push({ id: item.id, quantity: item.quantity });
18989
+ });
18990
+ return {
18991
+ contents: contents,
18992
+ content_type: "product_group",
18993
+ content_ids: contentIds,
18994
+ currency: cart.items[0].currencyCode,
18995
+ value: cart.totalPrice,
18996
+ num_items: cart.items.length,
18997
+ };
18998
+ }
18999
+ function orderLineItemToFBPItem(orderLineItem, quantity) {
19000
+ return {
19001
+ content_name: orderLineItem.variant.name,
19002
+ content_category: "",
19003
+ content_ids: [orderLineItem.variant.id],
19004
+ content_type: "product",
19005
+ value: orderLineItem.finalPrice,
19006
+ currency: orderLineItem.currencyCode,
19007
+ };
18401
19008
  }
18402
19009
 
18403
- var _objectToString = objectToString;
18404
-
18405
- /** `Object#toString` result references. */
18406
- var nullTag = '[object Null]',
18407
- undefinedTag = '[object Undefined]';
18408
-
18409
- /** Built-in value references. */
18410
- var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
18411
-
18412
19010
  /**
18413
- * The base implementation of `getTag` without fallbacks for buggy environments.
19011
+ * Removes all key-value entries from the list cache.
18414
19012
  *
18415
19013
  * @private
18416
- * @param {*} value The value to query.
18417
- * @returns {string} Returns the `toStringTag`.
19014
+ * @name clear
19015
+ * @memberOf ListCache
18418
19016
  */
18419
- function baseGetTag(value) {
18420
- if (value == null) {
18421
- return value === undefined ? undefinedTag : nullTag;
18422
- }
18423
- return (symToStringTag$1 && symToStringTag$1 in Object(value))
18424
- ? _getRawTag(value)
18425
- : _objectToString(value);
19017
+ function listCacheClear() {
19018
+ this.__data__ = [];
19019
+ this.size = 0;
18426
19020
  }
18427
19021
 
18428
- var _baseGetTag = baseGetTag;
19022
+ var _listCacheClear = listCacheClear;
18429
19023
 
18430
19024
  /**
18431
- * Checks if `value` is the
18432
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
18433
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
19025
+ * Performs a
19026
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
19027
+ * comparison between two values to determine if they are equivalent.
18434
19028
  *
18435
19029
  * @static
18436
19030
  * @memberOf _
18437
- * @since 0.1.0
19031
+ * @since 4.0.0
18438
19032
  * @category Lang
18439
- * @param {*} value The value to check.
18440
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
19033
+ * @param {*} value The value to compare.
19034
+ * @param {*} other The other value to compare.
19035
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
18441
19036
  * @example
18442
19037
  *
18443
- * _.isObject({});
18444
- * // => true
18445
- *
18446
- * _.isObject([1, 2, 3]);
18447
- * // => true
19038
+ * var object = { 'a': 1 };
19039
+ * var other = { 'a': 1 };
18448
19040
  *
18449
- * _.isObject(_.noop);
19041
+ * _.eq(object, object);
18450
19042
  * // => true
18451
19043
  *
18452
- * _.isObject(null);
19044
+ * _.eq(object, other);
18453
19045
  * // => false
18454
- */
18455
- function isObject$2(value) {
18456
- var type = typeof value;
18457
- return value != null && (type == 'object' || type == 'function');
18458
- }
18459
-
18460
- var isObject_1 = isObject$2;
18461
-
18462
- /** `Object#toString` result references. */
18463
- var asyncTag = '[object AsyncFunction]',
18464
- funcTag = '[object Function]',
18465
- genTag = '[object GeneratorFunction]',
18466
- proxyTag = '[object Proxy]';
18467
-
18468
- /**
18469
- * Checks if `value` is classified as a `Function` object.
18470
- *
18471
- * @static
18472
- * @memberOf _
18473
- * @since 0.1.0
18474
- * @category Lang
18475
- * @param {*} value The value to check.
18476
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
18477
- * @example
18478
19046
  *
18479
- * _.isFunction(_);
19047
+ * _.eq('a', 'a');
18480
19048
  * // => true
18481
19049
  *
18482
- * _.isFunction(/abc/);
19050
+ * _.eq('a', Object('a'));
18483
19051
  * // => false
18484
- */
18485
- function isFunction(value) {
18486
- if (!isObject_1(value)) {
18487
- return false;
18488
- }
18489
- // The use of `Object#toString` avoids issues with the `typeof` operator
18490
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
18491
- var tag = _baseGetTag(value);
18492
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
18493
- }
18494
-
18495
- var isFunction_1 = isFunction;
18496
-
18497
- /** Used to detect overreaching core-js shims. */
18498
- var coreJsData = _root['__core-js_shared__'];
18499
-
18500
- var _coreJsData = coreJsData;
18501
-
18502
- /** Used to detect methods masquerading as native. */
18503
- var maskSrcKey = (function() {
18504
- var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
18505
- return uid ? ('Symbol(src)_1.' + uid) : '';
18506
- }());
18507
-
18508
- /**
18509
- * Checks if `func` has its source masked.
18510
19052
  *
18511
- * @private
18512
- * @param {Function} func The function to check.
18513
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
19053
+ * _.eq(NaN, NaN);
19054
+ * // => true
18514
19055
  */
18515
- function isMasked(func) {
18516
- return !!maskSrcKey && (maskSrcKey in func);
19056
+ function eq(value, other) {
19057
+ return value === other || (value !== value && other !== other);
18517
19058
  }
18518
19059
 
18519
- var _isMasked = isMasked;
18520
-
18521
- /** Used for built-in method references. */
18522
- var funcProto = Function.prototype;
18523
-
18524
- /** Used to resolve the decompiled source of functions. */
18525
- var funcToString = funcProto.toString;
19060
+ var eq_1 = eq;
18526
19061
 
18527
19062
  /**
18528
- * Converts `func` to its source code.
19063
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
18529
19064
  *
18530
19065
  * @private
18531
- * @param {Function} func The function to convert.
18532
- * @returns {string} Returns the source code.
19066
+ * @param {Array} array The array to inspect.
19067
+ * @param {*} key The key to search for.
19068
+ * @returns {number} Returns the index of the matched value, else `-1`.
18533
19069
  */
18534
- function toSource(func) {
18535
- if (func != null) {
18536
- try {
18537
- return funcToString.call(func);
18538
- } catch (e) {}
18539
- try {
18540
- return (func + '');
18541
- } catch (e) {}
19070
+ function assocIndexOf(array, key) {
19071
+ var length = array.length;
19072
+ while (length--) {
19073
+ if (eq_1(array[length][0], key)) {
19074
+ return length;
19075
+ }
18542
19076
  }
18543
- return '';
19077
+ return -1;
18544
19078
  }
18545
19079
 
18546
- var _toSource = toSource;
18547
-
18548
- /**
18549
- * Used to match `RegExp`
18550
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
18551
- */
18552
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
18553
-
18554
- /** Used to detect host constructors (Safari). */
18555
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
19080
+ var _assocIndexOf = assocIndexOf;
18556
19081
 
18557
19082
  /** Used for built-in method references. */
18558
- var funcProto$1 = Function.prototype,
18559
- objectProto$2 = Object.prototype;
18560
-
18561
- /** Used to resolve the decompiled source of functions. */
18562
- var funcToString$1 = funcProto$1.toString;
18563
-
18564
- /** Used to check objects for own properties. */
18565
- var hasOwnProperty$5 = objectProto$2.hasOwnProperty;
18566
-
18567
- /** Used to detect if a method is native. */
18568
- var reIsNative = RegExp('^' +
18569
- funcToString$1.call(hasOwnProperty$5).replace(reRegExpChar, '\\$&')
18570
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
18571
- );
18572
-
18573
- /**
18574
- * The base implementation of `_.isNative` without bad shim checks.
18575
- *
18576
- * @private
18577
- * @param {*} value The value to check.
18578
- * @returns {boolean} Returns `true` if `value` is a native function,
18579
- * else `false`.
18580
- */
18581
- function baseIsNative(value) {
18582
- if (!isObject_1(value) || _isMasked(value)) {
18583
- return false;
18584
- }
18585
- var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;
18586
- return pattern.test(_toSource(value));
18587
- }
18588
-
18589
- var _baseIsNative = baseIsNative;
18590
-
18591
- /**
18592
- * Gets the value at `key` of `object`.
18593
- *
18594
- * @private
18595
- * @param {Object} [object] The object to query.
18596
- * @param {string} key The key of the property to get.
18597
- * @returns {*} Returns the property value.
18598
- */
18599
- function getValue(object, key) {
18600
- return object == null ? undefined : object[key];
18601
- }
18602
-
18603
- var _getValue = getValue;
18604
-
18605
- /**
18606
- * Gets the native function at `key` of `object`.
18607
- *
18608
- * @private
18609
- * @param {Object} object The object to query.
18610
- * @param {string} key The key of the method to get.
18611
- * @returns {*} Returns the function if it's native, else `undefined`.
18612
- */
18613
- function getNative(object, key) {
18614
- var value = _getValue(object, key);
18615
- return _baseIsNative(value) ? value : undefined;
18616
- }
18617
-
18618
- var _getNative = getNative;
18619
-
18620
- /* Built-in method references that are verified to be native. */
18621
- var Map$1 = _getNative(_root, 'Map');
18622
-
18623
- var _Map = Map$1;
18624
-
18625
- /* Built-in method references that are verified to be native. */
18626
- var nativeCreate = _getNative(Object, 'create');
18627
-
18628
- var _nativeCreate = nativeCreate;
18629
-
18630
- /**
18631
- * Removes all key-value entries from the hash.
18632
- *
18633
- * @private
18634
- * @name clear
18635
- * @memberOf Hash
18636
- */
18637
- function hashClear() {
18638
- this.__data__ = _nativeCreate ? _nativeCreate(null) : {};
18639
- this.size = 0;
18640
- }
19083
+ var arrayProto = Array.prototype;
18641
19084
 
18642
- var _hashClear = hashClear;
19085
+ /** Built-in value references. */
19086
+ var splice = arrayProto.splice;
18643
19087
 
18644
19088
  /**
18645
- * Removes `key` and its value from the hash.
19089
+ * Removes `key` and its value from the list cache.
18646
19090
  *
18647
19091
  * @private
18648
19092
  * @name delete
18649
- * @memberOf Hash
18650
- * @param {Object} hash The hash to modify.
19093
+ * @memberOf ListCache
18651
19094
  * @param {string} key The key of the value to remove.
18652
19095
  * @returns {boolean} Returns `true` if the entry was removed, else `false`.
18653
19096
  */
18654
- function hashDelete(key) {
18655
- var result = this.has(key) && delete this.__data__[key];
18656
- this.size -= result ? 1 : 0;
18657
- return result;
18658
- }
18659
-
18660
- var _hashDelete = hashDelete;
18661
-
18662
- /** Used to stand-in for `undefined` hash values. */
18663
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
18664
-
18665
- /** Used for built-in method references. */
18666
- var objectProto$3 = Object.prototype;
18667
-
18668
- /** Used to check objects for own properties. */
18669
- var hasOwnProperty$6 = objectProto$3.hasOwnProperty;
19097
+ function listCacheDelete(key) {
19098
+ var data = this.__data__,
19099
+ index = _assocIndexOf(data, key);
18670
19100
 
18671
- /**
18672
- * Gets the hash value for `key`.
18673
- *
18674
- * @private
18675
- * @name get
18676
- * @memberOf Hash
18677
- * @param {string} key The key of the value to get.
18678
- * @returns {*} Returns the entry value.
18679
- */
18680
- function hashGet(key) {
18681
- var data = this.__data__;
18682
- if (_nativeCreate) {
18683
- var result = data[key];
18684
- return result === HASH_UNDEFINED ? undefined : result;
19101
+ if (index < 0) {
19102
+ return false;
18685
19103
  }
18686
- return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
18687
- }
18688
-
18689
- var _hashGet = hashGet;
18690
-
18691
- /** Used for built-in method references. */
18692
- var objectProto$4 = Object.prototype;
18693
-
18694
- /** Used to check objects for own properties. */
18695
- var hasOwnProperty$7 = objectProto$4.hasOwnProperty;
18696
-
18697
- /**
18698
- * Checks if a hash value for `key` exists.
18699
- *
18700
- * @private
18701
- * @name has
18702
- * @memberOf Hash
18703
- * @param {string} key The key of the entry to check.
18704
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
18705
- */
18706
- function hashHas(key) {
18707
- var data = this.__data__;
18708
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$7.call(data, key);
18709
- }
18710
-
18711
- var _hashHas = hashHas;
18712
-
18713
- /** Used to stand-in for `undefined` hash values. */
18714
- var HASH_UNDEFINED$1 = '__lodash_hash_undefined__';
18715
-
18716
- /**
18717
- * Sets the hash `key` to `value`.
18718
- *
18719
- * @private
18720
- * @name set
18721
- * @memberOf Hash
18722
- * @param {string} key The key of the value to set.
18723
- * @param {*} value The value to set.
18724
- * @returns {Object} Returns the hash instance.
18725
- */
18726
- function hashSet(key, value) {
18727
- var data = this.__data__;
18728
- this.size += this.has(key) ? 0 : 1;
18729
- data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;
18730
- return this;
18731
- }
18732
-
18733
- var _hashSet = hashSet;
18734
-
18735
- /**
18736
- * Creates a hash object.
18737
- *
18738
- * @private
18739
- * @constructor
18740
- * @param {Array} [entries] The key-value pairs to cache.
18741
- */
18742
- function Hash(entries) {
18743
- var index = -1,
18744
- length = entries == null ? 0 : entries.length;
18745
-
18746
- this.clear();
18747
- while (++index < length) {
18748
- var entry = entries[index];
18749
- this.set(entry[0], entry[1]);
19104
+ var lastIndex = data.length - 1;
19105
+ if (index == lastIndex) {
19106
+ data.pop();
19107
+ } else {
19108
+ splice.call(data, index, 1);
18750
19109
  }
19110
+ --this.size;
19111
+ return true;
18751
19112
  }
18752
19113
 
18753
- // Add methods to `Hash`.
18754
- Hash.prototype.clear = _hashClear;
18755
- Hash.prototype['delete'] = _hashDelete;
18756
- Hash.prototype.get = _hashGet;
18757
- Hash.prototype.has = _hashHas;
18758
- Hash.prototype.set = _hashSet;
18759
-
18760
- var _Hash = Hash;
18761
-
18762
- /**
18763
- * Removes all key-value entries from the map.
18764
- *
18765
- * @private
18766
- * @name clear
18767
- * @memberOf MapCache
18768
- */
18769
- function mapCacheClear() {
18770
- this.size = 0;
18771
- this.__data__ = {
18772
- 'hash': new _Hash,
18773
- 'map': new (_Map || _ListCache),
18774
- 'string': new _Hash
18775
- };
18776
- }
18777
-
18778
- var _mapCacheClear = mapCacheClear;
18779
-
18780
- /**
18781
- * Checks if `value` is suitable for use as unique object key.
18782
- *
18783
- * @private
18784
- * @param {*} value The value to check.
18785
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
18786
- */
18787
- function isKeyable(value) {
18788
- var type = typeof value;
18789
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
18790
- ? (value !== '__proto__')
18791
- : (value === null);
18792
- }
18793
-
18794
- var _isKeyable = isKeyable;
18795
-
18796
- /**
18797
- * Gets the data for `map`.
18798
- *
18799
- * @private
18800
- * @param {Object} map The map to query.
18801
- * @param {string} key The reference key.
18802
- * @returns {*} Returns the map data.
18803
- */
18804
- function getMapData(map, key) {
18805
- var data = map.__data__;
18806
- return _isKeyable(key)
18807
- ? data[typeof key == 'string' ? 'string' : 'hash']
18808
- : data.map;
18809
- }
18810
-
18811
- var _getMapData = getMapData;
18812
-
18813
- /**
18814
- * Removes `key` and its value from the map.
18815
- *
18816
- * @private
18817
- * @name delete
18818
- * @memberOf MapCache
18819
- * @param {string} key The key of the value to remove.
18820
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
18821
- */
18822
- function mapCacheDelete(key) {
18823
- var result = _getMapData(this, key)['delete'](key);
18824
- this.size -= result ? 1 : 0;
18825
- return result;
18826
- }
18827
-
18828
- var _mapCacheDelete = mapCacheDelete;
19114
+ var _listCacheDelete = listCacheDelete;
18829
19115
 
18830
19116
  /**
18831
- * Gets the map value for `key`.
19117
+ * Gets the list cache value for `key`.
18832
19118
  *
18833
19119
  * @private
18834
19120
  * @name get
18835
- * @memberOf MapCache
19121
+ * @memberOf ListCache
18836
19122
  * @param {string} key The key of the value to get.
18837
19123
  * @returns {*} Returns the entry value.
18838
- */
18839
- function mapCacheGet(key) {
18840
- return _getMapData(this, key).get(key);
19124
+ */
19125
+ function listCacheGet(key) {
19126
+ var data = this.__data__,
19127
+ index = _assocIndexOf(data, key);
19128
+
19129
+ return index < 0 ? undefined : data[index][1];
18841
19130
  }
18842
19131
 
18843
- var _mapCacheGet = mapCacheGet;
19132
+ var _listCacheGet = listCacheGet;
18844
19133
 
18845
19134
  /**
18846
- * Checks if a map value for `key` exists.
19135
+ * Checks if a list cache value for `key` exists.
18847
19136
  *
18848
19137
  * @private
18849
19138
  * @name has
18850
- * @memberOf MapCache
19139
+ * @memberOf ListCache
18851
19140
  * @param {string} key The key of the entry to check.
18852
19141
  * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
18853
19142
  */
18854
- function mapCacheHas(key) {
18855
- return _getMapData(this, key).has(key);
19143
+ function listCacheHas(key) {
19144
+ return _assocIndexOf(this.__data__, key) > -1;
18856
19145
  }
18857
19146
 
18858
- var _mapCacheHas = mapCacheHas;
19147
+ var _listCacheHas = listCacheHas;
18859
19148
 
18860
19149
  /**
18861
- * Sets the map `key` to `value`.
19150
+ * Sets the list cache `key` to `value`.
18862
19151
  *
18863
19152
  * @private
18864
19153
  * @name set
18865
- * @memberOf MapCache
19154
+ * @memberOf ListCache
18866
19155
  * @param {string} key The key of the value to set.
18867
19156
  * @param {*} value The value to set.
18868
- * @returns {Object} Returns the map cache instance.
19157
+ * @returns {Object} Returns the list cache instance.
18869
19158
  */
18870
- function mapCacheSet(key, value) {
18871
- var data = _getMapData(this, key),
18872
- size = data.size;
19159
+ function listCacheSet(key, value) {
19160
+ var data = this.__data__,
19161
+ index = _assocIndexOf(data, key);
18873
19162
 
18874
- data.set(key, value);
18875
- this.size += data.size == size ? 0 : 1;
19163
+ if (index < 0) {
19164
+ ++this.size;
19165
+ data.push([key, value]);
19166
+ } else {
19167
+ data[index][1] = value;
19168
+ }
18876
19169
  return this;
18877
19170
  }
18878
19171
 
18879
- var _mapCacheSet = mapCacheSet;
19172
+ var _listCacheSet = listCacheSet;
18880
19173
 
18881
19174
  /**
18882
- * Creates a map cache object to store key-value pairs.
19175
+ * Creates an list cache object.
18883
19176
  *
18884
19177
  * @private
18885
19178
  * @constructor
18886
19179
  * @param {Array} [entries] The key-value pairs to cache.
18887
19180
  */
18888
- function MapCache(entries) {
19181
+ function ListCache(entries) {
18889
19182
  var index = -1,
18890
19183
  length = entries == null ? 0 : entries.length;
18891
19184
 
@@ -18896,644 +19189,574 @@ function MapCache(entries) {
18896
19189
  }
18897
19190
  }
18898
19191
 
18899
- // Add methods to `MapCache`.
18900
- MapCache.prototype.clear = _mapCacheClear;
18901
- MapCache.prototype['delete'] = _mapCacheDelete;
18902
- MapCache.prototype.get = _mapCacheGet;
18903
- MapCache.prototype.has = _mapCacheHas;
18904
- MapCache.prototype.set = _mapCacheSet;
18905
-
18906
- var _MapCache = MapCache;
19192
+ // Add methods to `ListCache`.
19193
+ ListCache.prototype.clear = _listCacheClear;
19194
+ ListCache.prototype['delete'] = _listCacheDelete;
19195
+ ListCache.prototype.get = _listCacheGet;
19196
+ ListCache.prototype.has = _listCacheHas;
19197
+ ListCache.prototype.set = _listCacheSet;
18907
19198
 
18908
- /** Used as the size to enable large array optimizations. */
18909
- var LARGE_ARRAY_SIZE = 200;
19199
+ var _ListCache = ListCache;
18910
19200
 
18911
19201
  /**
18912
- * Sets the stack `key` to `value`.
19202
+ * Removes all key-value entries from the stack.
18913
19203
  *
18914
19204
  * @private
18915
- * @name set
19205
+ * @name clear
18916
19206
  * @memberOf Stack
18917
- * @param {string} key The key of the value to set.
18918
- * @param {*} value The value to set.
18919
- * @returns {Object} Returns the stack cache instance.
18920
19207
  */
18921
- function stackSet(key, value) {
18922
- var data = this.__data__;
18923
- if (data instanceof _ListCache) {
18924
- var pairs = data.__data__;
18925
- if (!_Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
18926
- pairs.push([key, value]);
18927
- this.size = ++data.size;
18928
- return this;
18929
- }
18930
- data = this.__data__ = new _MapCache(pairs);
18931
- }
18932
- data.set(key, value);
18933
- this.size = data.size;
18934
- return this;
19208
+ function stackClear() {
19209
+ this.__data__ = new _ListCache;
19210
+ this.size = 0;
18935
19211
  }
18936
19212
 
18937
- var _stackSet = stackSet;
19213
+ var _stackClear = stackClear;
18938
19214
 
18939
19215
  /**
18940
- * Creates a stack cache object to store key-value pairs.
19216
+ * Removes `key` and its value from the stack.
18941
19217
  *
18942
19218
  * @private
18943
- * @constructor
18944
- * @param {Array} [entries] The key-value pairs to cache.
19219
+ * @name delete
19220
+ * @memberOf Stack
19221
+ * @param {string} key The key of the value to remove.
19222
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
18945
19223
  */
18946
- function Stack(entries) {
18947
- var data = this.__data__ = new _ListCache(entries);
19224
+ function stackDelete(key) {
19225
+ var data = this.__data__,
19226
+ result = data['delete'](key);
19227
+
18948
19228
  this.size = data.size;
19229
+ return result;
18949
19230
  }
18950
19231
 
18951
- // Add methods to `Stack`.
18952
- Stack.prototype.clear = _stackClear;
18953
- Stack.prototype['delete'] = _stackDelete;
18954
- Stack.prototype.get = _stackGet;
18955
- Stack.prototype.has = _stackHas;
18956
- Stack.prototype.set = _stackSet;
18957
-
18958
- var _Stack = Stack;
19232
+ var _stackDelete = stackDelete;
18959
19233
 
18960
19234
  /**
18961
- * A specialized version of `_.forEach` for arrays without support for
18962
- * iteratee shorthands.
19235
+ * Gets the stack value for `key`.
18963
19236
  *
18964
19237
  * @private
18965
- * @param {Array} [array] The array to iterate over.
18966
- * @param {Function} iteratee The function invoked per iteration.
18967
- * @returns {Array} Returns `array`.
19238
+ * @name get
19239
+ * @memberOf Stack
19240
+ * @param {string} key The key of the value to get.
19241
+ * @returns {*} Returns the entry value.
18968
19242
  */
18969
- function arrayEach(array, iteratee) {
18970
- var index = -1,
18971
- length = array == null ? 0 : array.length;
19243
+ function stackGet(key) {
19244
+ return this.__data__.get(key);
19245
+ }
18972
19246
 
18973
- while (++index < length) {
18974
- if (iteratee(array[index], index, array) === false) {
18975
- break;
18976
- }
18977
- }
18978
- return array;
19247
+ var _stackGet = stackGet;
19248
+
19249
+ /**
19250
+ * Checks if a stack value for `key` exists.
19251
+ *
19252
+ * @private
19253
+ * @name has
19254
+ * @memberOf Stack
19255
+ * @param {string} key The key of the entry to check.
19256
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
19257
+ */
19258
+ function stackHas(key) {
19259
+ return this.__data__.has(key);
18979
19260
  }
18980
19261
 
18981
- var _arrayEach = arrayEach;
19262
+ var _stackHas = stackHas;
18982
19263
 
18983
- var defineProperty = (function() {
18984
- try {
18985
- var func = _getNative(Object, 'defineProperty');
18986
- func({}, '', {});
18987
- return func;
18988
- } catch (e) {}
18989
- }());
19264
+ /** Used to detect overreaching core-js shims. */
19265
+ var coreJsData = _root['__core-js_shared__'];
18990
19266
 
18991
- var _defineProperty = defineProperty;
19267
+ var _coreJsData = coreJsData;
19268
+
19269
+ /** Used to detect methods masquerading as native. */
19270
+ var maskSrcKey = (function() {
19271
+ var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
19272
+ return uid ? ('Symbol(src)_1.' + uid) : '';
19273
+ }());
18992
19274
 
18993
19275
  /**
18994
- * The base implementation of `assignValue` and `assignMergeValue` without
18995
- * value checks.
19276
+ * Checks if `func` has its source masked.
18996
19277
  *
18997
19278
  * @private
18998
- * @param {Object} object The object to modify.
18999
- * @param {string} key The key of the property to assign.
19000
- * @param {*} value The value to assign.
19279
+ * @param {Function} func The function to check.
19280
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
19001
19281
  */
19002
- function baseAssignValue(object, key, value) {
19003
- if (key == '__proto__' && _defineProperty) {
19004
- _defineProperty(object, key, {
19005
- 'configurable': true,
19006
- 'enumerable': true,
19007
- 'value': value,
19008
- 'writable': true
19009
- });
19010
- } else {
19011
- object[key] = value;
19012
- }
19282
+ function isMasked(func) {
19283
+ return !!maskSrcKey && (maskSrcKey in func);
19013
19284
  }
19014
19285
 
19015
- var _baseAssignValue = baseAssignValue;
19286
+ var _isMasked = isMasked;
19016
19287
 
19017
19288
  /** Used for built-in method references. */
19018
- var objectProto$5 = Object.prototype;
19289
+ var funcProto = Function.prototype;
19019
19290
 
19020
- /** Used to check objects for own properties. */
19021
- var hasOwnProperty$8 = objectProto$5.hasOwnProperty;
19291
+ /** Used to resolve the decompiled source of functions. */
19292
+ var funcToString = funcProto.toString;
19022
19293
 
19023
19294
  /**
19024
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
19025
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
19026
- * for equality comparisons.
19295
+ * Converts `func` to its source code.
19027
19296
  *
19028
19297
  * @private
19029
- * @param {Object} object The object to modify.
19030
- * @param {string} key The key of the property to assign.
19031
- * @param {*} value The value to assign.
19298
+ * @param {Function} func The function to convert.
19299
+ * @returns {string} Returns the source code.
19032
19300
  */
19033
- function assignValue(object, key, value) {
19034
- var objValue = object[key];
19035
- if (!(hasOwnProperty$8.call(object, key) && eq_1(objValue, value)) ||
19036
- (value === undefined && !(key in object))) {
19037
- _baseAssignValue(object, key, value);
19301
+ function toSource(func) {
19302
+ if (func != null) {
19303
+ try {
19304
+ return funcToString.call(func);
19305
+ } catch (e) {}
19306
+ try {
19307
+ return (func + '');
19308
+ } catch (e) {}
19038
19309
  }
19310
+ return '';
19039
19311
  }
19040
19312
 
19041
- var _assignValue = assignValue;
19313
+ var _toSource = toSource;
19042
19314
 
19043
19315
  /**
19044
- * Copies properties of `source` to `object`.
19045
- *
19046
- * @private
19047
- * @param {Object} source The object to copy properties from.
19048
- * @param {Array} props The property identifiers to copy.
19049
- * @param {Object} [object={}] The object to copy properties to.
19050
- * @param {Function} [customizer] The function to customize copied values.
19051
- * @returns {Object} Returns `object`.
19316
+ * Used to match `RegExp`
19317
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
19052
19318
  */
19053
- function copyObject(source, props, object, customizer) {
19054
- var isNew = !object;
19055
- object || (object = {});
19319
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
19056
19320
 
19057
- var index = -1,
19058
- length = props.length;
19321
+ /** Used to detect host constructors (Safari). */
19322
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
19059
19323
 
19060
- while (++index < length) {
19061
- var key = props[index];
19324
+ /** Used for built-in method references. */
19325
+ var funcProto$1 = Function.prototype,
19326
+ objectProto$6 = Object.prototype;
19062
19327
 
19063
- var newValue = customizer
19064
- ? customizer(object[key], source[key], key, object, source)
19065
- : undefined;
19328
+ /** Used to resolve the decompiled source of functions. */
19329
+ var funcToString$1 = funcProto$1.toString;
19066
19330
 
19067
- if (newValue === undefined) {
19068
- newValue = source[key];
19069
- }
19070
- if (isNew) {
19071
- _baseAssignValue(object, key, newValue);
19072
- } else {
19073
- _assignValue(object, key, newValue);
19074
- }
19075
- }
19076
- return object;
19077
- }
19331
+ /** Used to check objects for own properties. */
19332
+ var hasOwnProperty$8 = objectProto$6.hasOwnProperty;
19078
19333
 
19079
- var _copyObject = copyObject;
19334
+ /** Used to detect if a method is native. */
19335
+ var reIsNative = RegExp('^' +
19336
+ funcToString$1.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
19337
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
19338
+ );
19080
19339
 
19081
19340
  /**
19082
- * The base implementation of `_.times` without support for iteratee shorthands
19083
- * or max array length checks.
19341
+ * The base implementation of `_.isNative` without bad shim checks.
19084
19342
  *
19085
19343
  * @private
19086
- * @param {number} n The number of times to invoke `iteratee`.
19087
- * @param {Function} iteratee The function invoked per iteration.
19088
- * @returns {Array} Returns the array of results.
19344
+ * @param {*} value The value to check.
19345
+ * @returns {boolean} Returns `true` if `value` is a native function,
19346
+ * else `false`.
19089
19347
  */
19090
- function baseTimes(n, iteratee) {
19091
- var index = -1,
19092
- result = Array(n);
19093
-
19094
- while (++index < n) {
19095
- result[index] = iteratee(index);
19348
+ function baseIsNative(value) {
19349
+ if (!isObject_1(value) || _isMasked(value)) {
19350
+ return false;
19096
19351
  }
19097
- return result;
19352
+ var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;
19353
+ return pattern.test(_toSource(value));
19098
19354
  }
19099
19355
 
19100
- var _baseTimes = baseTimes;
19356
+ var _baseIsNative = baseIsNative;
19101
19357
 
19102
19358
  /**
19103
- * Checks if `value` is object-like. A value is object-like if it's not `null`
19104
- * and has a `typeof` result of "object".
19105
- *
19106
- * @static
19107
- * @memberOf _
19108
- * @since 4.0.0
19109
- * @category Lang
19110
- * @param {*} value The value to check.
19111
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
19112
- * @example
19113
- *
19114
- * _.isObjectLike({});
19115
- * // => true
19116
- *
19117
- * _.isObjectLike([1, 2, 3]);
19118
- * // => true
19119
- *
19120
- * _.isObjectLike(_.noop);
19121
- * // => false
19359
+ * Gets the value at `key` of `object`.
19122
19360
  *
19123
- * _.isObjectLike(null);
19124
- * // => false
19361
+ * @private
19362
+ * @param {Object} [object] The object to query.
19363
+ * @param {string} key The key of the property to get.
19364
+ * @returns {*} Returns the property value.
19125
19365
  */
19126
- function isObjectLike$1(value) {
19127
- return value != null && typeof value == 'object';
19366
+ function getValue(object, key) {
19367
+ return object == null ? undefined : object[key];
19128
19368
  }
19129
19369
 
19130
- var isObjectLike_1 = isObjectLike$1;
19131
-
19132
- /** `Object#toString` result references. */
19133
- var argsTag = '[object Arguments]';
19370
+ var _getValue = getValue;
19134
19371
 
19135
19372
  /**
19136
- * The base implementation of `_.isArguments`.
19373
+ * Gets the native function at `key` of `object`.
19137
19374
  *
19138
19375
  * @private
19139
- * @param {*} value The value to check.
19140
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
19376
+ * @param {Object} object The object to query.
19377
+ * @param {string} key The key of the method to get.
19378
+ * @returns {*} Returns the function if it's native, else `undefined`.
19141
19379
  */
19142
- function baseIsArguments(value) {
19143
- return isObjectLike_1(value) && _baseGetTag(value) == argsTag;
19380
+ function getNative(object, key) {
19381
+ var value = _getValue(object, key);
19382
+ return _baseIsNative(value) ? value : undefined;
19144
19383
  }
19145
19384
 
19146
- var _baseIsArguments = baseIsArguments;
19385
+ var _getNative = getNative;
19147
19386
 
19148
- /** Used for built-in method references. */
19149
- var objectProto$6 = Object.prototype;
19387
+ /* Built-in method references that are verified to be native. */
19388
+ var Map$1 = _getNative(_root, 'Map');
19150
19389
 
19151
- /** Used to check objects for own properties. */
19152
- var hasOwnProperty$9 = objectProto$6.hasOwnProperty;
19390
+ var _Map = Map$1;
19153
19391
 
19154
- /** Built-in value references. */
19155
- var propertyIsEnumerable = objectProto$6.propertyIsEnumerable;
19392
+ /* Built-in method references that are verified to be native. */
19393
+ var nativeCreate = _getNative(Object, 'create');
19394
+
19395
+ var _nativeCreate = nativeCreate;
19156
19396
 
19157
19397
  /**
19158
- * Checks if `value` is likely an `arguments` object.
19159
- *
19160
- * @static
19161
- * @memberOf _
19162
- * @since 0.1.0
19163
- * @category Lang
19164
- * @param {*} value The value to check.
19165
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
19166
- * else `false`.
19167
- * @example
19168
- *
19169
- * _.isArguments(function() { return arguments; }());
19170
- * // => true
19398
+ * Removes all key-value entries from the hash.
19171
19399
  *
19172
- * _.isArguments([1, 2, 3]);
19173
- * // => false
19400
+ * @private
19401
+ * @name clear
19402
+ * @memberOf Hash
19174
19403
  */
19175
- var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
19176
- return isObjectLike_1(value) && hasOwnProperty$9.call(value, 'callee') &&
19177
- !propertyIsEnumerable.call(value, 'callee');
19178
- };
19404
+ function hashClear() {
19405
+ this.__data__ = _nativeCreate ? _nativeCreate(null) : {};
19406
+ this.size = 0;
19407
+ }
19179
19408
 
19180
- var isArguments_1 = isArguments;
19409
+ var _hashClear = hashClear;
19181
19410
 
19182
19411
  /**
19183
- * Checks if `value` is classified as an `Array` object.
19184
- *
19185
- * @static
19186
- * @memberOf _
19187
- * @since 0.1.0
19188
- * @category Lang
19189
- * @param {*} value The value to check.
19190
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
19191
- * @example
19192
- *
19193
- * _.isArray([1, 2, 3]);
19194
- * // => true
19195
- *
19196
- * _.isArray(document.body.children);
19197
- * // => false
19198
- *
19199
- * _.isArray('abc');
19200
- * // => false
19412
+ * Removes `key` and its value from the hash.
19201
19413
  *
19202
- * _.isArray(_.noop);
19203
- * // => false
19414
+ * @private
19415
+ * @name delete
19416
+ * @memberOf Hash
19417
+ * @param {Object} hash The hash to modify.
19418
+ * @param {string} key The key of the value to remove.
19419
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
19204
19420
  */
19205
- var isArray = Array.isArray;
19421
+ function hashDelete(key) {
19422
+ var result = this.has(key) && delete this.__data__[key];
19423
+ this.size -= result ? 1 : 0;
19424
+ return result;
19425
+ }
19206
19426
 
19207
- var isArray_1 = isArray;
19427
+ var _hashDelete = hashDelete;
19428
+
19429
+ /** Used to stand-in for `undefined` hash values. */
19430
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
19431
+
19432
+ /** Used for built-in method references. */
19433
+ var objectProto$7 = Object.prototype;
19434
+
19435
+ /** Used to check objects for own properties. */
19436
+ var hasOwnProperty$9 = objectProto$7.hasOwnProperty;
19208
19437
 
19209
19438
  /**
19210
- * This method returns `false`.
19211
- *
19212
- * @static
19213
- * @memberOf _
19214
- * @since 4.13.0
19215
- * @category Util
19216
- * @returns {boolean} Returns `false`.
19217
- * @example
19439
+ * Gets the hash value for `key`.
19218
19440
  *
19219
- * _.times(2, _.stubFalse);
19220
- * // => [false, false]
19441
+ * @private
19442
+ * @name get
19443
+ * @memberOf Hash
19444
+ * @param {string} key The key of the value to get.
19445
+ * @returns {*} Returns the entry value.
19221
19446
  */
19222
- function stubFalse() {
19223
- return false;
19447
+ function hashGet(key) {
19448
+ var data = this.__data__;
19449
+ if (_nativeCreate) {
19450
+ var result = data[key];
19451
+ return result === HASH_UNDEFINED ? undefined : result;
19452
+ }
19453
+ return hasOwnProperty$9.call(data, key) ? data[key] : undefined;
19224
19454
  }
19225
19455
 
19226
- var stubFalse_1 = stubFalse;
19456
+ var _hashGet = hashGet;
19227
19457
 
19228
- var isBuffer_1 = createCommonjsModule(function (module, exports) {
19229
- /** Detect free variable `exports`. */
19230
- var freeExports = exports && !exports.nodeType && exports;
19458
+ /** Used for built-in method references. */
19459
+ var objectProto$8 = Object.prototype;
19231
19460
 
19232
- /** Detect free variable `module`. */
19233
- var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
19461
+ /** Used to check objects for own properties. */
19462
+ var hasOwnProperty$a = objectProto$8.hasOwnProperty;
19234
19463
 
19235
- /** Detect the popular CommonJS extension `module.exports`. */
19236
- var moduleExports = freeModule && freeModule.exports === freeExports;
19464
+ /**
19465
+ * Checks if a hash value for `key` exists.
19466
+ *
19467
+ * @private
19468
+ * @name has
19469
+ * @memberOf Hash
19470
+ * @param {string} key The key of the entry to check.
19471
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
19472
+ */
19473
+ function hashHas(key) {
19474
+ var data = this.__data__;
19475
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$a.call(data, key);
19476
+ }
19237
19477
 
19238
- /** Built-in value references. */
19239
- var Buffer = moduleExports ? _root.Buffer : undefined;
19478
+ var _hashHas = hashHas;
19240
19479
 
19241
- /* Built-in method references for those with the same name as other `lodash` methods. */
19242
- var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
19480
+ /** Used to stand-in for `undefined` hash values. */
19481
+ var HASH_UNDEFINED$1 = '__lodash_hash_undefined__';
19243
19482
 
19244
19483
  /**
19245
- * Checks if `value` is a buffer.
19246
- *
19247
- * @static
19248
- * @memberOf _
19249
- * @since 4.3.0
19250
- * @category Lang
19251
- * @param {*} value The value to check.
19252
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
19253
- * @example
19484
+ * Sets the hash `key` to `value`.
19254
19485
  *
19255
- * _.isBuffer(new Buffer(2));
19256
- * // => true
19486
+ * @private
19487
+ * @name set
19488
+ * @memberOf Hash
19489
+ * @param {string} key The key of the value to set.
19490
+ * @param {*} value The value to set.
19491
+ * @returns {Object} Returns the hash instance.
19492
+ */
19493
+ function hashSet(key, value) {
19494
+ var data = this.__data__;
19495
+ this.size += this.has(key) ? 0 : 1;
19496
+ data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;
19497
+ return this;
19498
+ }
19499
+
19500
+ var _hashSet = hashSet;
19501
+
19502
+ /**
19503
+ * Creates a hash object.
19257
19504
  *
19258
- * _.isBuffer(new Uint8Array(2));
19259
- * // => false
19505
+ * @private
19506
+ * @constructor
19507
+ * @param {Array} [entries] The key-value pairs to cache.
19260
19508
  */
19261
- var isBuffer = nativeIsBuffer || stubFalse_1;
19509
+ function Hash(entries) {
19510
+ var index = -1,
19511
+ length = entries == null ? 0 : entries.length;
19262
19512
 
19263
- module.exports = isBuffer;
19264
- });
19513
+ this.clear();
19514
+ while (++index < length) {
19515
+ var entry = entries[index];
19516
+ this.set(entry[0], entry[1]);
19517
+ }
19518
+ }
19265
19519
 
19266
- /** Used as references for various `Number` constants. */
19267
- var MAX_SAFE_INTEGER = 9007199254740991;
19520
+ // Add methods to `Hash`.
19521
+ Hash.prototype.clear = _hashClear;
19522
+ Hash.prototype['delete'] = _hashDelete;
19523
+ Hash.prototype.get = _hashGet;
19524
+ Hash.prototype.has = _hashHas;
19525
+ Hash.prototype.set = _hashSet;
19268
19526
 
19269
- /** Used to detect unsigned integer values. */
19270
- var reIsUint = /^(?:0|[1-9]\d*)$/;
19527
+ var _Hash = Hash;
19271
19528
 
19272
19529
  /**
19273
- * Checks if `value` is a valid array-like index.
19530
+ * Removes all key-value entries from the map.
19274
19531
  *
19275
19532
  * @private
19276
- * @param {*} value The value to check.
19277
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
19278
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
19533
+ * @name clear
19534
+ * @memberOf MapCache
19279
19535
  */
19280
- function isIndex(value, length) {
19281
- var type = typeof value;
19282
- length = length == null ? MAX_SAFE_INTEGER : length;
19283
-
19284
- return !!length &&
19285
- (type == 'number' ||
19286
- (type != 'symbol' && reIsUint.test(value))) &&
19287
- (value > -1 && value % 1 == 0 && value < length);
19536
+ function mapCacheClear() {
19537
+ this.size = 0;
19538
+ this.__data__ = {
19539
+ 'hash': new _Hash,
19540
+ 'map': new (_Map || _ListCache),
19541
+ 'string': new _Hash
19542
+ };
19288
19543
  }
19289
19544
 
19290
- var _isIndex = isIndex;
19291
-
19292
- /** Used as references for various `Number` constants. */
19293
- var MAX_SAFE_INTEGER$1 = 9007199254740991;
19545
+ var _mapCacheClear = mapCacheClear;
19294
19546
 
19295
19547
  /**
19296
- * Checks if `value` is a valid array-like length.
19297
- *
19298
- * **Note:** This method is loosely based on
19299
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
19548
+ * Checks if `value` is suitable for use as unique object key.
19300
19549
  *
19301
- * @static
19302
- * @memberOf _
19303
- * @since 4.0.0
19304
- * @category Lang
19550
+ * @private
19305
19551
  * @param {*} value The value to check.
19306
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
19307
- * @example
19308
- *
19309
- * _.isLength(3);
19310
- * // => true
19311
- *
19312
- * _.isLength(Number.MIN_VALUE);
19313
- * // => false
19314
- *
19315
- * _.isLength(Infinity);
19316
- * // => false
19317
- *
19318
- * _.isLength('3');
19319
- * // => false
19552
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
19320
19553
  */
19321
- function isLength(value) {
19322
- return typeof value == 'number' &&
19323
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;
19554
+ function isKeyable(value) {
19555
+ var type = typeof value;
19556
+ return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
19557
+ ? (value !== '__proto__')
19558
+ : (value === null);
19324
19559
  }
19325
19560
 
19326
- var isLength_1 = isLength;
19327
-
19328
- /** `Object#toString` result references. */
19329
- var argsTag$1 = '[object Arguments]',
19330
- arrayTag = '[object Array]',
19331
- boolTag = '[object Boolean]',
19332
- dateTag = '[object Date]',
19333
- errorTag = '[object Error]',
19334
- funcTag$1 = '[object Function]',
19335
- mapTag = '[object Map]',
19336
- numberTag = '[object Number]',
19337
- objectTag = '[object Object]',
19338
- regexpTag = '[object RegExp]',
19339
- setTag = '[object Set]',
19340
- stringTag = '[object String]',
19341
- weakMapTag = '[object WeakMap]';
19342
-
19343
- var arrayBufferTag = '[object ArrayBuffer]',
19344
- dataViewTag = '[object DataView]',
19345
- float32Tag = '[object Float32Array]',
19346
- float64Tag = '[object Float64Array]',
19347
- int8Tag = '[object Int8Array]',
19348
- int16Tag = '[object Int16Array]',
19349
- int32Tag = '[object Int32Array]',
19350
- uint8Tag = '[object Uint8Array]',
19351
- uint8ClampedTag = '[object Uint8ClampedArray]',
19352
- uint16Tag = '[object Uint16Array]',
19353
- uint32Tag = '[object Uint32Array]';
19354
-
19355
- /** Used to identify `toStringTag` values of typed arrays. */
19356
- var typedArrayTags = {};
19357
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
19358
- typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
19359
- typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
19360
- typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
19361
- typedArrayTags[uint32Tag] = true;
19362
- typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =
19363
- typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
19364
- typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
19365
- typedArrayTags[errorTag] = typedArrayTags[funcTag$1] =
19366
- typedArrayTags[mapTag] = typedArrayTags[numberTag] =
19367
- typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
19368
- typedArrayTags[setTag] = typedArrayTags[stringTag] =
19369
- typedArrayTags[weakMapTag] = false;
19561
+ var _isKeyable = isKeyable;
19370
19562
 
19371
19563
  /**
19372
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
19564
+ * Gets the data for `map`.
19373
19565
  *
19374
19566
  * @private
19375
- * @param {*} value The value to check.
19376
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
19567
+ * @param {Object} map The map to query.
19568
+ * @param {string} key The reference key.
19569
+ * @returns {*} Returns the map data.
19377
19570
  */
19378
- function baseIsTypedArray(value) {
19379
- return isObjectLike_1(value) &&
19380
- isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];
19571
+ function getMapData(map, key) {
19572
+ var data = map.__data__;
19573
+ return _isKeyable(key)
19574
+ ? data[typeof key == 'string' ? 'string' : 'hash']
19575
+ : data.map;
19381
19576
  }
19382
19577
 
19383
- var _baseIsTypedArray = baseIsTypedArray;
19578
+ var _getMapData = getMapData;
19384
19579
 
19385
19580
  /**
19386
- * The base implementation of `_.unary` without support for storing metadata.
19581
+ * Removes `key` and its value from the map.
19387
19582
  *
19388
19583
  * @private
19389
- * @param {Function} func The function to cap arguments for.
19390
- * @returns {Function} Returns the new capped function.
19584
+ * @name delete
19585
+ * @memberOf MapCache
19586
+ * @param {string} key The key of the value to remove.
19587
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
19391
19588
  */
19392
- function baseUnary(func) {
19393
- return function(value) {
19394
- return func(value);
19395
- };
19589
+ function mapCacheDelete(key) {
19590
+ var result = _getMapData(this, key)['delete'](key);
19591
+ this.size -= result ? 1 : 0;
19592
+ return result;
19396
19593
  }
19397
19594
 
19398
- var _baseUnary = baseUnary;
19399
-
19400
- var _nodeUtil = createCommonjsModule(function (module, exports) {
19401
- /** Detect free variable `exports`. */
19402
- var freeExports = exports && !exports.nodeType && exports;
19403
-
19404
- /** Detect free variable `module`. */
19405
- var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
19595
+ var _mapCacheDelete = mapCacheDelete;
19406
19596
 
19407
- /** Detect the popular CommonJS extension `module.exports`. */
19408
- var moduleExports = freeModule && freeModule.exports === freeExports;
19597
+ /**
19598
+ * Gets the map value for `key`.
19599
+ *
19600
+ * @private
19601
+ * @name get
19602
+ * @memberOf MapCache
19603
+ * @param {string} key The key of the value to get.
19604
+ * @returns {*} Returns the entry value.
19605
+ */
19606
+ function mapCacheGet(key) {
19607
+ return _getMapData(this, key).get(key);
19608
+ }
19409
19609
 
19410
- /** Detect free variable `process` from Node.js. */
19411
- var freeProcess = moduleExports && _freeGlobal.process;
19610
+ var _mapCacheGet = mapCacheGet;
19412
19611
 
19413
- /** Used to access faster Node.js helpers. */
19414
- var nodeUtil = (function() {
19415
- try {
19416
- // Use `util.types` for Node.js 10+.
19417
- var types = freeModule && freeModule.require && freeModule.require('util').types;
19612
+ /**
19613
+ * Checks if a map value for `key` exists.
19614
+ *
19615
+ * @private
19616
+ * @name has
19617
+ * @memberOf MapCache
19618
+ * @param {string} key The key of the entry to check.
19619
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
19620
+ */
19621
+ function mapCacheHas(key) {
19622
+ return _getMapData(this, key).has(key);
19623
+ }
19418
19624
 
19419
- if (types) {
19420
- return types;
19421
- }
19625
+ var _mapCacheHas = mapCacheHas;
19422
19626
 
19423
- // Legacy `process.binding('util')` for Node.js < 10.
19424
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
19425
- } catch (e) {}
19426
- }());
19627
+ /**
19628
+ * Sets the map `key` to `value`.
19629
+ *
19630
+ * @private
19631
+ * @name set
19632
+ * @memberOf MapCache
19633
+ * @param {string} key The key of the value to set.
19634
+ * @param {*} value The value to set.
19635
+ * @returns {Object} Returns the map cache instance.
19636
+ */
19637
+ function mapCacheSet(key, value) {
19638
+ var data = _getMapData(this, key),
19639
+ size = data.size;
19427
19640
 
19428
- module.exports = nodeUtil;
19429
- });
19641
+ data.set(key, value);
19642
+ this.size += data.size == size ? 0 : 1;
19643
+ return this;
19644
+ }
19430
19645
 
19431
- /* Node.js helper references. */
19432
- var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;
19646
+ var _mapCacheSet = mapCacheSet;
19433
19647
 
19434
19648
  /**
19435
- * Checks if `value` is classified as a typed array.
19436
- *
19437
- * @static
19438
- * @memberOf _
19439
- * @since 3.0.0
19440
- * @category Lang
19441
- * @param {*} value The value to check.
19442
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
19443
- * @example
19444
- *
19445
- * _.isTypedArray(new Uint8Array);
19446
- * // => true
19649
+ * Creates a map cache object to store key-value pairs.
19447
19650
  *
19448
- * _.isTypedArray([]);
19449
- * // => false
19651
+ * @private
19652
+ * @constructor
19653
+ * @param {Array} [entries] The key-value pairs to cache.
19450
19654
  */
19451
- var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;
19655
+ function MapCache(entries) {
19656
+ var index = -1,
19657
+ length = entries == null ? 0 : entries.length;
19452
19658
 
19453
- var isTypedArray_1 = isTypedArray;
19659
+ this.clear();
19660
+ while (++index < length) {
19661
+ var entry = entries[index];
19662
+ this.set(entry[0], entry[1]);
19663
+ }
19664
+ }
19454
19665
 
19455
- /** Used for built-in method references. */
19456
- var objectProto$7 = Object.prototype;
19666
+ // Add methods to `MapCache`.
19667
+ MapCache.prototype.clear = _mapCacheClear;
19668
+ MapCache.prototype['delete'] = _mapCacheDelete;
19669
+ MapCache.prototype.get = _mapCacheGet;
19670
+ MapCache.prototype.has = _mapCacheHas;
19671
+ MapCache.prototype.set = _mapCacheSet;
19457
19672
 
19458
- /** Used to check objects for own properties. */
19459
- var hasOwnProperty$a = objectProto$7.hasOwnProperty;
19673
+ var _MapCache = MapCache;
19674
+
19675
+ /** Used as the size to enable large array optimizations. */
19676
+ var LARGE_ARRAY_SIZE = 200;
19460
19677
 
19461
19678
  /**
19462
- * Creates an array of the enumerable property names of the array-like `value`.
19679
+ * Sets the stack `key` to `value`.
19463
19680
  *
19464
19681
  * @private
19465
- * @param {*} value The value to query.
19466
- * @param {boolean} inherited Specify returning inherited property names.
19467
- * @returns {Array} Returns the array of property names.
19682
+ * @name set
19683
+ * @memberOf Stack
19684
+ * @param {string} key The key of the value to set.
19685
+ * @param {*} value The value to set.
19686
+ * @returns {Object} Returns the stack cache instance.
19468
19687
  */
19469
- function arrayLikeKeys(value, inherited) {
19470
- var isArr = isArray_1(value),
19471
- isArg = !isArr && isArguments_1(value),
19472
- isBuff = !isArr && !isArg && isBuffer_1(value),
19473
- isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),
19474
- skipIndexes = isArr || isArg || isBuff || isType,
19475
- result = skipIndexes ? _baseTimes(value.length, String) : [],
19476
- length = result.length;
19477
-
19478
- for (var key in value) {
19479
- if ((inherited || hasOwnProperty$a.call(value, key)) &&
19480
- !(skipIndexes && (
19481
- // Safari 9 has enumerable `arguments.length` in strict mode.
19482
- key == 'length' ||
19483
- // Node.js 0.10 has enumerable non-index properties on buffers.
19484
- (isBuff && (key == 'offset' || key == 'parent')) ||
19485
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
19486
- (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
19487
- // Skip index properties.
19488
- _isIndex(key, length)
19489
- ))) {
19490
- result.push(key);
19688
+ function stackSet(key, value) {
19689
+ var data = this.__data__;
19690
+ if (data instanceof _ListCache) {
19691
+ var pairs = data.__data__;
19692
+ if (!_Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
19693
+ pairs.push([key, value]);
19694
+ this.size = ++data.size;
19695
+ return this;
19491
19696
  }
19697
+ data = this.__data__ = new _MapCache(pairs);
19492
19698
  }
19493
- return result;
19699
+ data.set(key, value);
19700
+ this.size = data.size;
19701
+ return this;
19494
19702
  }
19495
19703
 
19496
- var _arrayLikeKeys = arrayLikeKeys;
19497
-
19498
- /** Used for built-in method references. */
19499
- var objectProto$8 = Object.prototype;
19704
+ var _stackSet = stackSet;
19500
19705
 
19501
19706
  /**
19502
- * Checks if `value` is likely a prototype object.
19707
+ * Creates a stack cache object to store key-value pairs.
19503
19708
  *
19504
19709
  * @private
19505
- * @param {*} value The value to check.
19506
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
19710
+ * @constructor
19711
+ * @param {Array} [entries] The key-value pairs to cache.
19507
19712
  */
19508
- function isPrototype(value) {
19509
- var Ctor = value && value.constructor,
19510
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;
19511
-
19512
- return value === proto;
19713
+ function Stack(entries) {
19714
+ var data = this.__data__ = new _ListCache(entries);
19715
+ this.size = data.size;
19513
19716
  }
19514
19717
 
19515
- var _isPrototype = isPrototype;
19718
+ // Add methods to `Stack`.
19719
+ Stack.prototype.clear = _stackClear;
19720
+ Stack.prototype['delete'] = _stackDelete;
19721
+ Stack.prototype.get = _stackGet;
19722
+ Stack.prototype.has = _stackHas;
19723
+ Stack.prototype.set = _stackSet;
19724
+
19725
+ var _Stack = Stack;
19726
+
19727
+ var defineProperty = (function() {
19728
+ try {
19729
+ var func = _getNative(Object, 'defineProperty');
19730
+ func({}, '', {});
19731
+ return func;
19732
+ } catch (e) {}
19733
+ }());
19734
+
19735
+ var _defineProperty = defineProperty;
19516
19736
 
19517
19737
  /**
19518
- * Creates a unary function that invokes `func` with its argument transformed.
19738
+ * The base implementation of `assignValue` and `assignMergeValue` without
19739
+ * value checks.
19519
19740
  *
19520
19741
  * @private
19521
- * @param {Function} func The function to wrap.
19522
- * @param {Function} transform The argument transform.
19523
- * @returns {Function} Returns the new function.
19742
+ * @param {Object} object The object to modify.
19743
+ * @param {string} key The key of the property to assign.
19744
+ * @param {*} value The value to assign.
19524
19745
  */
19525
- function overArg(func, transform) {
19526
- return function(arg) {
19527
- return func(transform(arg));
19528
- };
19746
+ function baseAssignValue(object, key, value) {
19747
+ if (key == '__proto__' && _defineProperty) {
19748
+ _defineProperty(object, key, {
19749
+ 'configurable': true,
19750
+ 'enumerable': true,
19751
+ 'value': value,
19752
+ 'writable': true
19753
+ });
19754
+ } else {
19755
+ object[key] = value;
19756
+ }
19529
19757
  }
19530
19758
 
19531
- var _overArg = overArg;
19532
-
19533
- /* Built-in method references for those with the same name as other `lodash` methods. */
19534
- var nativeKeys = _overArg(Object.keys, Object);
19535
-
19536
- var _nativeKeys = nativeKeys;
19759
+ var _baseAssignValue = baseAssignValue;
19537
19760
 
19538
19761
  /** Used for built-in method references. */
19539
19762
  var objectProto$9 = Object.prototype;
@@ -19542,91 +19765,62 @@ var objectProto$9 = Object.prototype;
19542
19765
  var hasOwnProperty$b = objectProto$9.hasOwnProperty;
19543
19766
 
19544
19767
  /**
19545
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
19768
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
19769
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
19770
+ * for equality comparisons.
19546
19771
  *
19547
19772
  * @private
19548
- * @param {Object} object The object to query.
19549
- * @returns {Array} Returns the array of property names.
19773
+ * @param {Object} object The object to modify.
19774
+ * @param {string} key The key of the property to assign.
19775
+ * @param {*} value The value to assign.
19550
19776
  */
19551
- function baseKeys(object) {
19552
- if (!_isPrototype(object)) {
19553
- return _nativeKeys(object);
19554
- }
19555
- var result = [];
19556
- for (var key in Object(object)) {
19557
- if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
19558
- result.push(key);
19559
- }
19777
+ function assignValue(object, key, value) {
19778
+ var objValue = object[key];
19779
+ if (!(hasOwnProperty$b.call(object, key) && eq_1(objValue, value)) ||
19780
+ (value === undefined && !(key in object))) {
19781
+ _baseAssignValue(object, key, value);
19560
19782
  }
19561
- return result;
19562
19783
  }
19563
19784
 
19564
- var _baseKeys = baseKeys;
19785
+ var _assignValue = assignValue;
19565
19786
 
19566
19787
  /**
19567
- * Checks if `value` is array-like. A value is considered array-like if it's
19568
- * not a function and has a `value.length` that's an integer greater than or
19569
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
19570
- *
19571
- * @static
19572
- * @memberOf _
19573
- * @since 4.0.0
19574
- * @category Lang
19575
- * @param {*} value The value to check.
19576
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
19577
- * @example
19578
- *
19579
- * _.isArrayLike([1, 2, 3]);
19580
- * // => true
19581
- *
19582
- * _.isArrayLike(document.body.children);
19583
- * // => true
19584
- *
19585
- * _.isArrayLike('abc');
19586
- * // => true
19788
+ * Copies properties of `source` to `object`.
19587
19789
  *
19588
- * _.isArrayLike(_.noop);
19589
- * // => false
19790
+ * @private
19791
+ * @param {Object} source The object to copy properties from.
19792
+ * @param {Array} props The property identifiers to copy.
19793
+ * @param {Object} [object={}] The object to copy properties to.
19794
+ * @param {Function} [customizer] The function to customize copied values.
19795
+ * @returns {Object} Returns `object`.
19590
19796
  */
19591
- function isArrayLike(value) {
19592
- return value != null && isLength_1(value.length) && !isFunction_1(value);
19593
- }
19797
+ function copyObject(source, props, object, customizer) {
19798
+ var isNew = !object;
19799
+ object || (object = {});
19594
19800
 
19595
- var isArrayLike_1 = isArrayLike;
19801
+ var index = -1,
19802
+ length = props.length;
19596
19803
 
19597
- /**
19598
- * Creates an array of the own enumerable property names of `object`.
19599
- *
19600
- * **Note:** Non-object values are coerced to objects. See the
19601
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
19602
- * for more details.
19603
- *
19604
- * @static
19605
- * @since 0.1.0
19606
- * @memberOf _
19607
- * @category Object
19608
- * @param {Object} object The object to query.
19609
- * @returns {Array} Returns the array of property names.
19610
- * @example
19611
- *
19612
- * function Foo() {
19613
- * this.a = 1;
19614
- * this.b = 2;
19615
- * }
19616
- *
19617
- * Foo.prototype.c = 3;
19618
- *
19619
- * _.keys(new Foo);
19620
- * // => ['a', 'b'] (iteration order is not guaranteed)
19621
- *
19622
- * _.keys('hi');
19623
- * // => ['0', '1']
19624
- */
19625
- function keys(object) {
19626
- return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);
19804
+ while (++index < length) {
19805
+ var key = props[index];
19806
+
19807
+ var newValue = customizer
19808
+ ? customizer(object[key], source[key], key, object, source)
19809
+ : undefined;
19810
+
19811
+ if (newValue === undefined) {
19812
+ newValue = source[key];
19813
+ }
19814
+ if (isNew) {
19815
+ _baseAssignValue(object, key, newValue);
19816
+ } else {
19817
+ _assignValue(object, key, newValue);
19818
+ }
19819
+ }
19820
+ return object;
19627
19821
  }
19628
19822
 
19629
- var keys_1 = keys;
19823
+ var _copyObject = copyObject;
19630
19824
 
19631
19825
  /**
19632
19826
  * The base implementation of `_.assign` without support for multiple sources
@@ -21700,28 +21894,6 @@ function baseMatchesProperty(path, srcValue) {
21700
21894
 
21701
21895
  var _baseMatchesProperty = baseMatchesProperty;
21702
21896
 
21703
- /**
21704
- * This method returns the first argument it receives.
21705
- *
21706
- * @static
21707
- * @since 0.1.0
21708
- * @memberOf _
21709
- * @category Util
21710
- * @param {*} value Any value.
21711
- * @returns {*} Returns `value`.
21712
- * @example
21713
- *
21714
- * var object = { 'a': 1 };
21715
- *
21716
- * console.log(_.identity(object) === object);
21717
- * // => true
21718
- */
21719
- function identity(value) {
21720
- return value;
21721
- }
21722
-
21723
- var identity_1 = identity;
21724
-
21725
21897
  /**
21726
21898
  * The base implementation of `_.property` without support for deep paths.
21727
21899
  *
@@ -21806,104 +21978,6 @@ function baseIteratee(value) {
21806
21978
 
21807
21979
  var _baseIteratee = baseIteratee;
21808
21980
 
21809
- /**
21810
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
21811
- *
21812
- * @private
21813
- * @param {boolean} [fromRight] Specify iterating from right to left.
21814
- * @returns {Function} Returns the new base function.
21815
- */
21816
- function createBaseFor(fromRight) {
21817
- return function(object, iteratee, keysFunc) {
21818
- var index = -1,
21819
- iterable = Object(object),
21820
- props = keysFunc(object),
21821
- length = props.length;
21822
-
21823
- while (length--) {
21824
- var key = props[fromRight ? length : ++index];
21825
- if (iteratee(iterable[key], key, iterable) === false) {
21826
- break;
21827
- }
21828
- }
21829
- return object;
21830
- };
21831
- }
21832
-
21833
- var _createBaseFor = createBaseFor;
21834
-
21835
- /**
21836
- * The base implementation of `baseForOwn` which iterates over `object`
21837
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
21838
- * Iteratee functions may exit iteration early by explicitly returning `false`.
21839
- *
21840
- * @private
21841
- * @param {Object} object The object to iterate over.
21842
- * @param {Function} iteratee The function invoked per iteration.
21843
- * @param {Function} keysFunc The function to get the keys of `object`.
21844
- * @returns {Object} Returns `object`.
21845
- */
21846
- var baseFor = _createBaseFor();
21847
-
21848
- var _baseFor = baseFor;
21849
-
21850
- /**
21851
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
21852
- *
21853
- * @private
21854
- * @param {Object} object The object to iterate over.
21855
- * @param {Function} iteratee The function invoked per iteration.
21856
- * @returns {Object} Returns `object`.
21857
- */
21858
- function baseForOwn(object, iteratee) {
21859
- return object && _baseFor(object, iteratee, keys_1);
21860
- }
21861
-
21862
- var _baseForOwn = baseForOwn;
21863
-
21864
- /**
21865
- * Creates a `baseEach` or `baseEachRight` function.
21866
- *
21867
- * @private
21868
- * @param {Function} eachFunc The function to iterate over a collection.
21869
- * @param {boolean} [fromRight] Specify iterating from right to left.
21870
- * @returns {Function} Returns the new base function.
21871
- */
21872
- function createBaseEach(eachFunc, fromRight) {
21873
- return function(collection, iteratee) {
21874
- if (collection == null) {
21875
- return collection;
21876
- }
21877
- if (!isArrayLike_1(collection)) {
21878
- return eachFunc(collection, iteratee);
21879
- }
21880
- var length = collection.length,
21881
- index = fromRight ? length : -1,
21882
- iterable = Object(collection);
21883
-
21884
- while ((fromRight ? index-- : ++index < length)) {
21885
- if (iteratee(iterable[index], index, iterable) === false) {
21886
- break;
21887
- }
21888
- }
21889
- return collection;
21890
- };
21891
- }
21892
-
21893
- var _createBaseEach = createBaseEach;
21894
-
21895
- /**
21896
- * The base implementation of `_.forEach` without support for iteratee shorthands.
21897
- *
21898
- * @private
21899
- * @param {Array|Object} collection The collection to iterate over.
21900
- * @param {Function} iteratee The function invoked per iteration.
21901
- * @returns {Array|Object} Returns `collection`.
21902
- */
21903
- var baseEach = _createBaseEach(_baseForOwn);
21904
-
21905
- var _baseEach = baseEach;
21906
-
21907
21981
  /**
21908
21982
  * The base implementation of `_.map` without support for iteratee shorthands.
21909
21983
  *
@@ -22568,7 +22642,7 @@ var IkasCartStore = /** @class */ (function () {
22568
22642
  eventId = this.cart.id + "-" + this.cart.updatedAt;
22569
22643
  item = this.cart.items.find(function (i) { return i.variant.id; });
22570
22644
  if (item) {
22571
- Analytics.addToCart(item, initialQuantity, eventId);
22645
+ Analytics.addToCart(item, initialQuantity, eventId, this.cart);
22572
22646
  }
22573
22647
  }
22574
22648
  return [3 /*break*/, 5];
@@ -22620,10 +22694,10 @@ var IkasCartStore = /** @class */ (function () {
22620
22694
  eventId = this.cart.id + "-" + this.cart.updatedAt;
22621
22695
  oldQuantity = item.quantity;
22622
22696
  if (oldQuantity > quantity) {
22623
- Analytics.removeFromCart(item, oldQuantity - quantity);
22697
+ Analytics.removeFromCart(item, oldQuantity - quantity, this.cart);
22624
22698
  }
22625
22699
  else {
22626
- Analytics.addToCart(item, quantity - oldQuantity, eventId);
22700
+ Analytics.addToCart(item, quantity - oldQuantity, eventId, this.cart);
22627
22701
  }
22628
22702
  }
22629
22703
  return [3 /*break*/, 5];
@@ -22911,7 +22985,8 @@ var CheckoutViewModel = /** @class */ (function () {
22911
22985
  case 2:
22912
22986
  // Skip shipping if there is only 1 shipping method
22913
22987
  if (this.step === CheckoutStep.SHIPPING &&
22914
- this.checkout.availableShippingMethods.length === 1) {
22988
+ this.checkout.availableShippingMethods.length === 1 &&
22989
+ !this.checkoutSettings.isGiftPackageEnabled) {
22915
22990
  this.step = CheckoutStep.PAYMENT;
22916
22991
  this.router.replace("/checkout?id=" + this.checkout.id + "&step=" + this.step, undefined, {
22917
22992
  shallow: true,
@@ -24110,40 +24185,199 @@ function orderLineItemToGTMItem(orderLineItem, quantity) {
24110
24185
  };
24111
24186
  }
24112
24187
 
24188
+ function IkasEvents(initialSubscribers) {
24189
+ // Subscriber type is "any" because this function will be called from app scripts
24190
+ // We need to ensure type safety on runtime
24191
+ var subscribe = function (subscriber) {
24192
+ if (!isValidIkasEventSubscriber(subscriber))
24193
+ return;
24194
+ var existingSubscriberIndex = Analytics.subscribers.findIndex(function (s) { return s.id === subscriber.id; });
24195
+ if (existingSubscriberIndex !== -1) {
24196
+ Analytics.subscribers[existingSubscriberIndex] = subscriber;
24197
+ }
24198
+ else {
24199
+ Analytics.subscribers.push(subscriber);
24200
+ }
24201
+ };
24202
+ var unsubscribe = function (id) {
24203
+ var existingSubscriberIndex = Analytics.subscribers.findIndex(function (s) { return s.id === id; });
24204
+ if (existingSubscriberIndex !== -1)
24205
+ Analytics.subscribers.splice(existingSubscriberIndex, 1);
24206
+ };
24207
+ initialSubscribers.forEach(subscribe);
24208
+ return {
24209
+ subscribe: subscribe,
24210
+ unsubscribe: unsubscribe,
24211
+ };
24212
+ }
24213
+ function initIkasEvents() {
24214
+ //@ts-ignore
24215
+ if (typeof window !== "undefined") {
24216
+ var initialSubscribers = [];
24217
+ try {
24218
+ //@ts-ignore
24219
+ var existingIkasEvents = window.IkasEvents;
24220
+ if (existingIkasEvents &&
24221
+ existingIkasEvents.subscribers &&
24222
+ existingIkasEvents.subscribers.length) {
24223
+ initialSubscribers = existingIkasEvents.subscribers;
24224
+ }
24225
+ }
24226
+ catch (err) { }
24227
+ //@ts-ignore
24228
+ window.IkasEvents = IkasEvents(initialSubscribers);
24229
+ }
24230
+ }
24231
+ // This is for the initial page load, a temporary object to collect subscribers from app scripts
24232
+ // until the page component mounts
24233
+ function getIkasEventsScript() {
24234
+ return "<script>\n var subscribers = [];\n var subscribe = (subscriber) => { subscribers.push(subscriber); }; \n var unsubscribe = () => {};\n \n window.IkasEvents = {\n subscribers,\n subscribe,\n unsubscribe\n };\n </script>";
24235
+ }
24236
+ function isValidIkasEventSubscriber(data) {
24237
+ return !!(data &&
24238
+ data.id &&
24239
+ typeof data.id === "string" &&
24240
+ data.callback &&
24241
+ typeof data.callback === "function");
24242
+ }
24243
+ var IkasEventType;
24244
+ (function (IkasEventType) {
24245
+ IkasEventType["PAGE_VIEW"] = "PAGE_VIEW";
24246
+ IkasEventType["PRODUCT_VIEW"] = "PRODUCT_VIEW";
24247
+ IkasEventType["ADD_TO_CART"] = "ADD_TO_CART";
24248
+ IkasEventType["REMOVE_FROM_CART"] = "REMOVE_FROM_CART";
24249
+ IkasEventType["BEGIN_CHECKOUT"] = "BEGIN_CHECKOUT";
24250
+ IkasEventType["CHECKOUT_STEP"] = "CHECKOUT_STEP";
24251
+ IkasEventType["COMPLETE_CHECKOUT"] = "COMPLETE_CHECKOUT";
24252
+ IkasEventType["ADD_TO_WISHLIST"] = "ADD_TO_WISHLIST";
24253
+ IkasEventType["SEARCH"] = "SEARCH";
24254
+ IkasEventType["CUSTOMER_REGISTER"] = "CUSTOMER_REGISTER";
24255
+ IkasEventType["CUSTOMER_LOGIN"] = "CUSTOMER_LOGIN";
24256
+ IkasEventType["CUSTOMER_LOGOUT"] = "CUSTOMER_LOGOUT";
24257
+ IkasEventType["CUSTOMER_VISIT"] = "CUSTOMER_VISIT";
24258
+ IkasEventType["VIEW_CART"] = "VIEW_CART";
24259
+ IkasEventType["VIEW_CATEGORY"] = "VIEW_CATEGORY";
24260
+ IkasEventType["VIEW_SEARCH_RESULTS"] = "VIEW_SEARCH_RESULTS";
24261
+ IkasEventType["CONTACT_FORM"] = "CONTACT_FORM";
24262
+ })(IkasEventType || (IkasEventType = {}));
24263
+
24113
24264
  var LS_BEGIN_CHECKOUT_KEY = "gtmBeginCheckout";
24114
24265
  var Analytics = /** @class */ (function () {
24115
24266
  function Analytics() {
24116
24267
  mobx.makeAutoObservable(this);
24117
24268
  }
24118
- Analytics.pageView = function (url) {
24119
- try {
24120
- GoogleTagManager.pageView(url);
24121
- }
24122
- catch (err) {
24123
- console.error(err);
24124
- }
24269
+ Analytics.getCustomerInfo = function () {
24270
+ return __awaiter(this, void 0, void 0, function () {
24271
+ var store, customer;
24272
+ return __generator(this, function (_a) {
24273
+ switch (_a.label) {
24274
+ case 0:
24275
+ store = IkasStorefrontConfig.store;
24276
+ return [4 /*yield*/, store.customerStore.waitUntilInitialized()];
24277
+ case 1:
24278
+ _a.sent();
24279
+ customer = store.customerStore.customer;
24280
+ if (customer) {
24281
+ return [2 /*return*/, __assign(__assign({}, customer.basicInfo), { consentGranted: store.customerStore.customerConsentGranted })];
24282
+ }
24283
+ return [2 /*return*/, null];
24284
+ }
24285
+ });
24286
+ });
24287
+ };
24288
+ Analytics.pageView = function (pageType) {
24289
+ return __awaiter(this, void 0, void 0, function () {
24290
+ var url_1, customerInfo_1, err_1;
24291
+ return __generator(this, function (_a) {
24292
+ switch (_a.label) {
24293
+ case 0:
24294
+ _a.trys.push([0, 2, , 3]);
24295
+ url_1 = window.location.href;
24296
+ return [4 /*yield*/, Analytics.getCustomerInfo()];
24297
+ case 1:
24298
+ customerInfo_1 = _a.sent();
24299
+ GoogleTagManager.pageView(url_1);
24300
+ tryForEach(Analytics.subscribers, function (s) {
24301
+ s.callback({
24302
+ type: IkasEventType.PAGE_VIEW,
24303
+ data: {
24304
+ url: url_1,
24305
+ pageType: pageType,
24306
+ customer: customerInfo_1,
24307
+ },
24308
+ });
24309
+ });
24310
+ return [3 /*break*/, 3];
24311
+ case 2:
24312
+ err_1 = _a.sent();
24313
+ console.error(err_1);
24314
+ return [3 /*break*/, 3];
24315
+ case 3: return [2 /*return*/];
24316
+ }
24317
+ });
24318
+ });
24125
24319
  };
24126
24320
  Analytics.productView = function (productDetail) {
24127
24321
  try {
24128
24322
  FacebookPixel.productView(productDetail);
24129
24323
  GoogleTagManager.productView(productDetail);
24324
+ if (Analytics.subscribers.length) {
24325
+ var clone = cloneDeep_1(productDetail);
24326
+ var cloneProductDetail_1 = new IkasProductDetail(clone.product, clone.selectedVariantValues);
24327
+ tryForEach(Analytics.subscribers, function (s) {
24328
+ s.callback({
24329
+ type: IkasEventType.PRODUCT_VIEW,
24330
+ data: {
24331
+ productDetail: cloneProductDetail_1,
24332
+ },
24333
+ });
24334
+ });
24335
+ }
24130
24336
  }
24131
24337
  catch (err) {
24132
24338
  console.error(err);
24133
24339
  }
24134
24340
  };
24135
- Analytics.addToCart = function (item, quantity, eventId) {
24341
+ Analytics.addToCart = function (item, quantity, eventId, cart) {
24136
24342
  try {
24137
24343
  FacebookPixel.addToCart(item, quantity, eventId);
24138
24344
  GoogleTagManager.addToCart(item, quantity);
24345
+ if (Analytics.subscribers.length) {
24346
+ var cloneItem_1 = cloneDeep_1(item);
24347
+ var cloneCart_1 = new IkasCart(cloneDeep_1(cart));
24348
+ tryForEach(Analytics.subscribers, function (s) {
24349
+ s.callback({
24350
+ type: IkasEventType.ADD_TO_CART,
24351
+ data: {
24352
+ item: cloneItem_1,
24353
+ quantity: quantity,
24354
+ cart: cloneCart_1,
24355
+ },
24356
+ });
24357
+ });
24358
+ }
24139
24359
  }
24140
24360
  catch (err) {
24141
24361
  console.error(err);
24142
24362
  }
24143
24363
  };
24144
- Analytics.removeFromCart = function (item, quantity) {
24364
+ Analytics.removeFromCart = function (item, quantity, cart) {
24145
24365
  try {
24146
24366
  GoogleTagManager.removeFromCart(item, quantity);
24367
+ if (Analytics.subscribers.length) {
24368
+ var cloneItem_2 = cloneDeep_1(item);
24369
+ var cloneCart_2 = new IkasCart(cloneDeep_1(cart));
24370
+ tryForEach(Analytics.subscribers, function (s) {
24371
+ s.callback({
24372
+ type: IkasEventType.REMOVE_FROM_CART,
24373
+ data: {
24374
+ item: cloneItem_2,
24375
+ quantity: quantity,
24376
+ cart: cloneCart_2,
24377
+ },
24378
+ });
24379
+ });
24380
+ }
24147
24381
  }
24148
24382
  catch (err) {
24149
24383
  console.error(err);
@@ -24157,16 +24391,40 @@ var Analytics = /** @class */ (function () {
24157
24391
  localStorage.setItem(LS_BEGIN_CHECKOUT_KEY, checkout.id);
24158
24392
  FacebookPixel.beginCheckout(checkout);
24159
24393
  GoogleTagManager.beginCheckout(checkout);
24394
+ if (Analytics.subscribers.length) {
24395
+ var cloneCheckout_1 = new IkasCheckout(cloneDeep_1(checkout));
24396
+ tryForEach(Analytics.subscribers, function (s) {
24397
+ s.callback({
24398
+ type: IkasEventType.BEGIN_CHECKOUT,
24399
+ data: {
24400
+ checkout: cloneCheckout_1,
24401
+ },
24402
+ });
24403
+ });
24404
+ }
24160
24405
  }
24161
24406
  catch (err) {
24162
24407
  console.error(err);
24163
24408
  }
24164
24409
  };
24165
- Analytics.purchase = function (checkout, eventId) {
24410
+ Analytics.purchase = function (checkout, transaction) {
24166
24411
  try {
24167
24412
  localStorage.removeItem(LS_BEGIN_CHECKOUT_KEY);
24168
- FacebookPixel.purchase(checkout, eventId);
24169
- GoogleTagManager.purchase(checkout, eventId);
24413
+ FacebookPixel.purchase(checkout, transaction.id || "");
24414
+ GoogleTagManager.purchase(checkout, transaction.id || "");
24415
+ if (Analytics.subscribers.length) {
24416
+ var cloneCheckout_2 = new IkasCheckout(cloneDeep_1(checkout));
24417
+ var cloneTransaction_1 = cloneDeep_1(transaction);
24418
+ tryForEach(Analytics.subscribers, function (s) {
24419
+ s.callback({
24420
+ type: IkasEventType.COMPLETE_CHECKOUT,
24421
+ data: {
24422
+ checkout: cloneCheckout_2,
24423
+ transaction: cloneTransaction_1,
24424
+ },
24425
+ });
24426
+ });
24427
+ }
24170
24428
  }
24171
24429
  catch (err) {
24172
24430
  console.error(err);
@@ -24175,6 +24433,18 @@ var Analytics = /** @class */ (function () {
24175
24433
  Analytics.checkoutStep = function (checkout, step) {
24176
24434
  try {
24177
24435
  GoogleTagManager.checkoutStep(checkout, step);
24436
+ if (Analytics.subscribers.length) {
24437
+ var cloneCheckout_3 = new IkasCheckout(cloneDeep_1(checkout));
24438
+ tryForEach(Analytics.subscribers, function (s) {
24439
+ s.callback({
24440
+ type: IkasEventType.CHECKOUT_STEP,
24441
+ data: {
24442
+ checkout: cloneCheckout_3,
24443
+ step: step,
24444
+ },
24445
+ });
24446
+ });
24447
+ }
24178
24448
  }
24179
24449
  catch (err) {
24180
24450
  console.error(err);
@@ -24188,9 +24458,19 @@ var Analytics = /** @class */ (function () {
24188
24458
  console.error(err);
24189
24459
  }
24190
24460
  };
24191
- Analytics.addToWishlist = function (id) {
24461
+ Analytics.addToWishlist = function (productId) {
24192
24462
  try {
24193
- FacebookPixel.addToWishlist(id);
24463
+ FacebookPixel.addToWishlist(productId);
24464
+ if (Analytics.subscribers.length) {
24465
+ tryForEach(Analytics.subscribers, function (s) {
24466
+ s.callback({
24467
+ type: IkasEventType.ADD_TO_WISHLIST,
24468
+ data: {
24469
+ productId: productId,
24470
+ },
24471
+ });
24472
+ });
24473
+ }
24194
24474
  }
24195
24475
  catch (err) {
24196
24476
  console.error(err);
@@ -24200,40 +24480,141 @@ var Analytics = /** @class */ (function () {
24200
24480
  try {
24201
24481
  FacebookPixel.search(searchKeyword);
24202
24482
  GoogleTagManager.search(searchKeyword);
24483
+ if (Analytics.subscribers.length) {
24484
+ tryForEach(Analytics.subscribers, function (s) {
24485
+ s.callback({
24486
+ type: IkasEventType.SEARCH,
24487
+ data: {
24488
+ searchKeyword: searchKeyword,
24489
+ },
24490
+ });
24491
+ });
24492
+ }
24203
24493
  }
24204
24494
  catch (err) {
24205
24495
  console.error(err);
24206
24496
  }
24207
24497
  };
24208
- Analytics.completeRegistration = function () {
24498
+ Analytics.completeRegistration = function (email) {
24209
24499
  try {
24210
24500
  FacebookPixel.completeRegistration();
24211
24501
  GoogleTagManager.completeRegistration();
24502
+ if (Analytics.subscribers.length) {
24503
+ tryForEach(Analytics.subscribers, function (s) {
24504
+ s.callback({
24505
+ type: IkasEventType.CUSTOMER_REGISTER,
24506
+ data: {
24507
+ email: email,
24508
+ },
24509
+ });
24510
+ });
24511
+ }
24212
24512
  }
24213
24513
  catch (err) {
24214
24514
  console.error(err);
24215
24515
  }
24216
24516
  };
24217
- Analytics.customerLogin = function (email) {
24218
- try {
24219
- GoogleTagManager.customerLogin(email);
24220
- }
24221
- catch (err) {
24222
- console.error(err);
24223
- }
24517
+ Analytics.customerLogin = function () {
24518
+ return __awaiter(this, void 0, void 0, function () {
24519
+ var customerInfo_2, err_2;
24520
+ return __generator(this, function (_a) {
24521
+ switch (_a.label) {
24522
+ case 0:
24523
+ _a.trys.push([0, 2, , 3]);
24524
+ return [4 /*yield*/, Analytics.getCustomerInfo()];
24525
+ case 1:
24526
+ customerInfo_2 = _a.sent();
24527
+ if (!customerInfo_2 || !customerInfo_2.email)
24528
+ return [2 /*return*/];
24529
+ GoogleTagManager.customerLogin(customerInfo_2.email);
24530
+ if (Analytics.subscribers.length) {
24531
+ tryForEach(Analytics.subscribers, function (s) {
24532
+ s.callback({
24533
+ type: IkasEventType.CUSTOMER_LOGIN,
24534
+ data: {
24535
+ customer: customerInfo_2,
24536
+ },
24537
+ });
24538
+ });
24539
+ }
24540
+ return [3 /*break*/, 3];
24541
+ case 2:
24542
+ err_2 = _a.sent();
24543
+ console.error(err_2);
24544
+ return [3 /*break*/, 3];
24545
+ case 3: return [2 /*return*/];
24546
+ }
24547
+ });
24548
+ });
24224
24549
  };
24225
- Analytics.customerVisit = function (email) {
24226
- try {
24227
- GoogleTagManager.customerVisit(email);
24228
- }
24229
- catch (err) {
24230
- console.error(err);
24231
- }
24550
+ Analytics.customerLogout = function () {
24551
+ return __awaiter(this, void 0, void 0, function () {
24552
+ return __generator(this, function (_a) {
24553
+ try {
24554
+ if (Analytics.subscribers.length) {
24555
+ tryForEach(Analytics.subscribers, function (s) {
24556
+ s.callback({
24557
+ type: IkasEventType.CUSTOMER_LOGOUT,
24558
+ data: {},
24559
+ });
24560
+ });
24561
+ }
24562
+ }
24563
+ catch (err) {
24564
+ console.error(err);
24565
+ }
24566
+ return [2 /*return*/];
24567
+ });
24568
+ });
24569
+ };
24570
+ Analytics.customerVisit = function () {
24571
+ return __awaiter(this, void 0, void 0, function () {
24572
+ var customerInfo_3, err_3;
24573
+ return __generator(this, function (_a) {
24574
+ switch (_a.label) {
24575
+ case 0:
24576
+ _a.trys.push([0, 2, , 3]);
24577
+ return [4 /*yield*/, Analytics.getCustomerInfo()];
24578
+ case 1:
24579
+ customerInfo_3 = _a.sent();
24580
+ if (!customerInfo_3 || !customerInfo_3.email)
24581
+ return [2 /*return*/];
24582
+ GoogleTagManager.customerVisit(customerInfo_3.email);
24583
+ if (Analytics.subscribers.length) {
24584
+ tryForEach(Analytics.subscribers, function (s) {
24585
+ s.callback({
24586
+ type: IkasEventType.CUSTOMER_VISIT,
24587
+ data: {
24588
+ customer: customerInfo_3,
24589
+ },
24590
+ });
24591
+ });
24592
+ }
24593
+ return [3 /*break*/, 3];
24594
+ case 2:
24595
+ err_3 = _a.sent();
24596
+ console.error(err_3);
24597
+ return [3 /*break*/, 3];
24598
+ case 3: return [2 /*return*/];
24599
+ }
24600
+ });
24601
+ });
24232
24602
  };
24233
24603
  Analytics.viewCart = function (cart) {
24234
24604
  try {
24235
24605
  if (cart) {
24236
24606
  FacebookPixel.viewCart(cart);
24607
+ if (Analytics.subscribers.length) {
24608
+ var cloneCart_3 = new IkasCart(cloneDeep_1(cart));
24609
+ tryForEach(Analytics.subscribers, function (s) {
24610
+ s.callback({
24611
+ type: IkasEventType.VIEW_CART,
24612
+ data: {
24613
+ cart: cloneCart_3,
24614
+ },
24615
+ });
24616
+ });
24617
+ }
24237
24618
  }
24238
24619
  }
24239
24620
  catch (err) {
@@ -24244,19 +24625,62 @@ var Analytics = /** @class */ (function () {
24244
24625
  try {
24245
24626
  FacebookPixel.viewCategory(categoryPath);
24246
24627
  GoogleTagManager.viewCategory(category, categoryPath);
24628
+ if (Analytics.subscribers.length) {
24629
+ var cloneCategory_1 = new IkasCategory(cloneDeep_1(category));
24630
+ tryForEach(Analytics.subscribers, function (s) {
24631
+ s.callback({
24632
+ type: IkasEventType.VIEW_CATEGORY,
24633
+ data: {
24634
+ categoryPath: categoryPath,
24635
+ category: cloneCategory_1,
24636
+ },
24637
+ });
24638
+ });
24639
+ }
24640
+ }
24641
+ catch (err) {
24642
+ console.error(err);
24643
+ }
24644
+ };
24645
+ Analytics.viewSearchResults = function (searchKeyword, productDetails) {
24646
+ try {
24647
+ if (Analytics.subscribers.length) {
24648
+ var cloneProductDetails_1 = cloneDeep_1(productDetails).map(function (p) { return new IkasProductDetail(p.product, p.selectedVariantValues); });
24649
+ tryForEach(Analytics.subscribers, function (s) {
24650
+ s.callback({
24651
+ type: IkasEventType.VIEW_SEARCH_RESULTS,
24652
+ data: {
24653
+ searchKeyword: searchKeyword,
24654
+ productDetails: cloneProductDetails_1,
24655
+ },
24656
+ });
24657
+ });
24658
+ }
24247
24659
  }
24248
24660
  catch (err) {
24249
24661
  console.error(err);
24250
24662
  }
24251
24663
  };
24252
- Analytics.contactForm = function () {
24664
+ Analytics.contactForm = function (form) {
24253
24665
  try {
24254
24666
  FacebookPixel.contactForm();
24667
+ if (Analytics.subscribers.length) {
24668
+ var cloneForm_1 = cloneDeep_1(form);
24669
+ tryForEach(Analytics.subscribers, function (s) {
24670
+ s.callback({
24671
+ type: IkasEventType.CONTACT_FORM,
24672
+ data: {
24673
+ form: cloneForm_1,
24674
+ },
24675
+ });
24676
+ });
24677
+ }
24255
24678
  }
24256
24679
  catch (err) {
24257
24680
  console.error(err);
24258
24681
  }
24259
24682
  };
24683
+ Analytics.subscribers = [];
24260
24684
  return Analytics;
24261
24685
  }());
24262
24686
 
@@ -32309,6 +32733,7 @@ var AnalyticsHead = function (_a) {
32309
32733
  fbpId && (React.createElement("script", { defer: true, dangerouslySetInnerHTML: {
32310
32734
  __html: "!function(f,b,e,v,n,t,s)\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];t=b.createElement(e);t.async=!0;\n t.src=v;s=b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t,s)}(window, document,'script',\n 'https://connect.facebook.net/en_US/fbevents.js');\n fbq('init', '" + fbpId + "');\n fbq('track', 'PageView');",
32311
32735
  } })),
32736
+ htmlReactParser(getIkasEventsScript()),
32312
32737
  storefrontJSScripts.map(function (script) { return htmlReactParser(script); })));
32313
32738
  };
32314
32739
  var AnalyticsBody = function () {
@@ -32600,7 +33025,7 @@ var IkasCustomerStore = /** @class */ (function () {
32600
33025
  this.setToken(response.token, response.tokenExpiry);
32601
33026
  this.setCustomer(response.customer);
32602
33027
  if (this.customer)
32603
- Analytics.customerLogin(this.customer.email);
33028
+ Analytics.customerLogin();
32604
33029
  cart = (_a = this.baseStore) === null || _a === void 0 ? void 0 : _a.cartStore.cart;
32605
33030
  if (!cart) return [3 /*break*/, 3];
32606
33031
  return [4 /*yield*/, this.baseStore.cartStore.changeItemQuantity(cart.items[0], cart.items[0].quantity)];
@@ -32635,7 +33060,7 @@ var IkasCustomerStore = /** @class */ (function () {
32635
33060
  return __generator(this, function (_a) {
32636
33061
  switch (_a.label) {
32637
33062
  case 0:
32638
- Analytics.contactForm();
33063
+ Analytics.contactForm(input);
32639
33064
  return [4 /*yield*/, IkasContactFormAPI.sendContactFormToMerchant(input)];
32640
33065
  case 1: return [2 /*return*/, _a.sent()];
32641
33066
  }
@@ -32669,6 +33094,7 @@ var IkasCustomerStore = /** @class */ (function () {
32669
33094
  var _a;
32670
33095
  _this.clearLocalData();
32671
33096
  (_a = _this.baseStore) === null || _a === void 0 ? void 0 : _a.cartStore.removeCart();
33097
+ Analytics.customerLogout();
32672
33098
  };
32673
33099
  this.saveCustomer = function (customer) { return __awaiter(_this, void 0, void 0, function () {
32674
33100
  var savedCustomer;
@@ -32919,7 +33345,7 @@ var IkasCustomerStore = /** @class */ (function () {
32919
33345
  _a.sent();
32920
33346
  this._initialized = true;
32921
33347
  if (this.customer)
32922
- Analytics.customerVisit(this.customer.email);
33348
+ Analytics.customerVisit();
32923
33349
  return [2 /*return*/];
32924
33350
  }
32925
33351
  });
@@ -35780,6 +36206,7 @@ var IkasProductDetail = /** @class */ (function () {
35780
36206
  shallow: isShallow,
35781
36207
  scroll: false,
35782
36208
  });
36209
+ Analytics.productView(this);
35783
36210
  };
35784
36211
  return IkasProductDetail;
35785
36212
  }());
@@ -37050,6 +37477,7 @@ var IkasProductList = /** @class */ (function () {
37050
37477
  this._minPage = this.page;
37051
37478
  if (!isInfiteScrollReturn)
37052
37479
  this._infiniteScrollPage = null;
37480
+ this.handleViewSearchResults();
37053
37481
  return [2 /*return*/, true];
37054
37482
  case 12:
37055
37483
  err_1 = _a.sent();
@@ -37191,7 +37619,7 @@ var IkasProductList = /** @class */ (function () {
37191
37619
  this.searchDebouncer = debounce_1(function () {
37192
37620
  _this.applyFilters();
37193
37621
  }, 100);
37194
- this.analyticsDebouncer = debounce_1(function () {
37622
+ this.searchAnalyticsDebouncer = debounce_1(function () {
37195
37623
  Analytics.search(_this._searchKeyword);
37196
37624
  }, 1000);
37197
37625
  this.data = data.data
@@ -37305,7 +37733,7 @@ var IkasProductList = /** @class */ (function () {
37305
37733
  return;
37306
37734
  this._searchKeyword = value;
37307
37735
  this.searchDebouncer();
37308
- this.analyticsDebouncer();
37736
+ this.searchAnalyticsDebouncer();
37309
37737
  },
37310
37738
  enumerable: false,
37311
37739
  configurable: true
@@ -37786,6 +38214,11 @@ var IkasProductList = /** @class */ (function () {
37786
38214
  }, 1000);
37787
38215
  });
37788
38216
  };
38217
+ IkasProductList.prototype.handleViewSearchResults = function () {
38218
+ if (this.searchKeyword && this.data.length) {
38219
+ Analytics.viewSearchResults(this._searchKeyword, this.data);
38220
+ }
38221
+ };
37789
38222
  return IkasProductList;
37790
38223
  }());
37791
38224
  (function (IkasProductListType) {
@@ -38485,12 +38918,6 @@ var AddressForm = /** @class */ (function () {
38485
38918
  valuePath: "addressLine1",
38486
38919
  message: _this.message.requiredRule,
38487
38920
  }),
38488
- new RequiredRule({
38489
- model: _this.address,
38490
- fieldKey: "postalCode",
38491
- valuePath: "postalCode",
38492
- message: _this.message.requiredRule,
38493
- }),
38494
38921
  new RequiredRule({
38495
38922
  model: _this.address,
38496
38923
  fieldKey: "country",
@@ -38618,19 +39045,27 @@ var AddressForm = /** @class */ (function () {
38618
39045
  };
38619
39046
  };
38620
39047
  this.listCountries = function () { return __awaiter(_this, void 0, void 0, function () {
38621
- var countries;
38622
- return __generator(this, function (_a) {
38623
- switch (_a.label) {
39048
+ var countries, currentRouting_1;
39049
+ var _a;
39050
+ return __generator(this, function (_b) {
39051
+ switch (_b.label) {
38624
39052
  case 0:
38625
- _a.trys.push([0, 2, 3, 4]);
39053
+ _b.trys.push([0, 2, 3, 4]);
38626
39054
  this._isCountriesPending = true;
38627
39055
  return [4 /*yield*/, IkasCountryAPI.listCountries()];
38628
39056
  case 1:
38629
- countries = _a.sent();
39057
+ countries = _b.sent();
39058
+ currentRouting_1 = IkasStorefrontConfig.routings.find(function (r) { return r.id === IkasStorefrontConfig.storefrontRoutingId; });
39059
+ if ((_a = currentRouting_1 === null || currentRouting_1 === void 0 ? void 0 : currentRouting_1.countryCodes) === null || _a === void 0 ? void 0 : _a.length) {
39060
+ countries = countries.filter(function (c) { var _a; return c.iso2 && ((_a = currentRouting_1.countryCodes) === null || _a === void 0 ? void 0 : _a.includes(c.iso2)); });
39061
+ }
39062
+ this.countries = countries;
39063
+ if (this.countries.length === 1 && !this.address.country)
39064
+ this.onCountryChange(this.countries[0].id);
38630
39065
  this.countries = countries;
38631
39066
  return [3 /*break*/, 4];
38632
39067
  case 2:
38633
- _a.sent();
39068
+ _b.sent();
38634
39069
  return [3 /*break*/, 4];
38635
39070
  case 3:
38636
39071
  this._isCountriesPending = false;
@@ -39090,7 +39525,7 @@ var RegisterForm = /** @class */ (function () {
39090
39525
  isRegisterSuccess = _b.sent();
39091
39526
  if (isRegisterSuccess) {
39092
39527
  response.isSuccess = true;
39093
- Analytics.completeRegistration();
39528
+ Analytics.completeRegistration(this.model.email);
39094
39529
  }
39095
39530
  return [2 /*return*/, response];
39096
39531
  case 4:
@@ -41454,6 +41889,7 @@ var IkasPage = mobxReactLite.observer(function (_a) {
41454
41889
  //@ts-ignore
41455
41890
  store.cartStore.getCart();
41456
41891
  store.checkLocalization();
41892
+ initIkasEvents();
41457
41893
  }, []);
41458
41894
  React.useEffect(function () {
41459
41895
  if (reInitOnBrowser)
@@ -41489,6 +41925,7 @@ var renderComponent = function (pageComponentPropValue, settings, index) {
41489
41925
  return (React.createElement(ThemeComponent, { key: pageComponentPropValue.pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, settings: settings }));
41490
41926
  };
41491
41927
  function handleAnalytics(pageType, pageSpecificDataStr, store) {
41928
+ Analytics.pageView(pageType);
41492
41929
  try {
41493
41930
  if (pageType === exports.IkasThemePageType.PRODUCT) {
41494
41931
  var productDetailParsed = JSON.parse(pageSpecificDataStr);
@@ -43535,7 +43972,7 @@ var IkasCheckoutAPI = /** @class */ (function () {
43535
43972
  return __generator(this, function (_b) {
43536
43973
  switch (_b.label) {
43537
43974
  case 0:
43538
- QUERY = src(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n query listCheckoutSettings($storefrontId: StringFilterInput!) {\n listCheckoutSettings(storefrontId: $storefrontId) {\n createdAt\n id\n identityNumberRequirement\n isAccountRequired\n isTermsAndConditionsDefaultChecked\n options {\n name\n required\n }\n phoneRequirement\n showCheckoutNote\n showTermsAndConditionsCheckbox\n storefrontId\n updatedAt\n isGiftPackageEnabled\n giftPackagePriceList {\n currencyCode\n price\n }\n }\n }\n "], ["\n query listCheckoutSettings($storefrontId: StringFilterInput!) {\n listCheckoutSettings(storefrontId: $storefrontId) {\n createdAt\n id\n identityNumberRequirement\n isAccountRequired\n isTermsAndConditionsDefaultChecked\n options {\n name\n required\n }\n phoneRequirement\n showCheckoutNote\n showTermsAndConditionsCheckbox\n storefrontId\n updatedAt\n isGiftPackageEnabled\n giftPackagePriceList {\n currencyCode\n price\n }\n }\n }\n "])));
43975
+ QUERY = src(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n query listCheckoutSettings($storefrontId: StringFilterInput!) {\n listCheckoutSettings(storefrontId: $storefrontId) {\n createdAt\n id\n identityNumberRequirement\n isAccountRequired\n isTermsAndConditionsDefaultChecked\n options {\n name\n required\n }\n phoneRequirement\n showCheckoutNote\n showTermsAndConditionsCheckbox\n storefrontId\n updatedAt\n isGiftPackageEnabled\n giftPackagePriceList {\n currencyCode\n price\n }\n isShowPostalCode\n }\n }\n "], ["\n query listCheckoutSettings($storefrontId: StringFilterInput!) {\n listCheckoutSettings(storefrontId: $storefrontId) {\n createdAt\n id\n identityNumberRequirement\n isAccountRequired\n isTermsAndConditionsDefaultChecked\n options {\n name\n required\n }\n phoneRequirement\n showCheckoutNote\n showTermsAndConditionsCheckbox\n storefrontId\n updatedAt\n isGiftPackageEnabled\n giftPackagePriceList {\n currencyCode\n price\n }\n isShowPostalCode\n }\n }\n "])));
43539
43976
  _b.label = 1;
43540
43977
  case 1:
43541
43978
  _b.trys.push([1, 3, , 4]);
@@ -68387,6 +68824,7 @@ var AddressFormViewModel = /** @class */ (function () {
68387
68824
  }());
68388
68825
 
68389
68826
  var AddressForm$1 = mobxReactLite.observer(function (props) {
68827
+ var _a;
68390
68828
  var t = useTranslation().t;
68391
68829
  var vm = React.useMemo(function () {
68392
68830
  return new AddressFormViewModel(__assign({}, props));
@@ -68408,13 +68846,18 @@ var AddressForm$1 = mobxReactLite.observer(function (props) {
68408
68846
  vm.address.checkoutSettings.identityNumberRequirement !==
68409
68847
  IkasCheckoutRequirementEnum.INVISIBLE && (React.createElement("div", { className: styles$4.RowPB },
68410
68848
  React.createElement(IdentityNumber, __assign({}, props, { vm: vm })))),
68411
- React.createElement("div", { className: styles$4.RowPB },
68412
- React.createElement(AddressFirstLine, __assign({}, props, { vm: vm }))),
68413
- React.createElement("div", { className: [commonStyles.Grid, commonStyles.Grid2].join(" ") },
68414
- React.createElement(AddressSecondLine, __assign({}, props, { vm: vm })),
68415
- React.createElement(PostalCode, __assign({}, props, { vm: vm })),
68416
- React.createElement("div", null),
68417
- " "),
68849
+ ((_a = vm.address.checkoutSettings) === null || _a === void 0 ? void 0 : _a.isShowPostalCode) ? (React.createElement(React.Fragment, null,
68850
+ React.createElement("div", { className: styles$4.RowPB },
68851
+ React.createElement(AddressFirstLine, __assign({}, props, { vm: vm }))),
68852
+ React.createElement("div", { className: [commonStyles.Grid, commonStyles.Grid2].join(" ") },
68853
+ React.createElement(AddressSecondLine, __assign({}, props, { vm: vm })),
68854
+ React.createElement(PostalCode, __assign({}, props, { vm: vm })),
68855
+ React.createElement("div", null),
68856
+ " "))) : (React.createElement(React.Fragment, null,
68857
+ React.createElement("div", { className: styles$4.RowPB },
68858
+ React.createElement(AddressFirstLine, __assign({}, props, { vm: vm }))),
68859
+ React.createElement("div", { className: styles$4.RowPB },
68860
+ React.createElement(AddressSecondLine, __assign({}, props, { vm: vm }))))),
68418
68861
  React.createElement("div", { className: [
68419
68862
  styles$4.RowPB,
68420
68863
  commonStyles.Grid,
@@ -68477,10 +68920,9 @@ var AddressSecondLine = mobxReactLite.observer(function (_a) {
68477
68920
  return (React.createElement(FormItem, { type: FormItemType.TEXT, autocomplete: "address-line2", label: t("checkout-page:addressLine2"), value: vm.address.addressLine2 || "", onChange: vm.onAddressLine2Change }));
68478
68921
  });
68479
68922
  var PostalCode = mobxReactLite.observer(function (_a) {
68480
- var _b;
68481
68923
  var vm = _a.vm;
68482
68924
  var t = useTranslation().t;
68483
- return (React.createElement(FormItem, { type: FormItemType.TEXT, label: t("checkout-page:postalCode"), autocomplete: "postal-code", value: vm.address.postalCode || "", onChange: vm.onAddressPostalCodeChange, hasError: vm.isErrorsVisible && !((_b = vm.address.validationResult) === null || _b === void 0 ? void 0 : _b.postalCode), errorText: t("checkout-page:postalCodeError") }));
68925
+ return (React.createElement(FormItem, { type: FormItemType.TEXT, label: t("checkout-page:postalCode"), autocomplete: "postal-code", value: vm.address.postalCode || "", onChange: vm.onAddressPostalCodeChange }));
68484
68926
  });
68485
68927
  var Country = mobxReactLite.observer(function (_a) {
68486
68928
  var _b, _c;
@@ -69103,7 +69545,7 @@ var CartSummary = mobxReactLite.observer(function (_a) {
69103
69545
  return null;
69104
69546
  return (React.createElement("div", { className: cartSummaryClasses },
69105
69547
  !!allowExpand && (React.createElement("div", { className: styles$g.ExpandHeader, onClick: function () { return setExpanded(!isExpanded); } },
69106
- React.createElement("div", { className: styles$g.Left }, "\u00D6zet"),
69548
+ React.createElement("div", { className: styles$g.Left }, t("checkout-page:summary")),
69107
69549
  React.createElement("div", { className: styles$g.Price },
69108
69550
  React.createElement("span", { className: styles$g.PriceText }, formatMoney(vm.finalPrice, cart.currencyCode) + " (" + ((_b = vm.cart) === null || _b === void 0 ? void 0 : _b.items.length) + " " + t("checkout-page:cartItemProduct") + ")"),
69109
69551
  React.createElement("span", { className: arrowDownClasses },
@@ -69337,7 +69779,6 @@ var StepSuccess = mobxReactLite.observer(function (_a) {
69337
69779
  var t = useTranslation().t;
69338
69780
  var _f = React.useState(false), isContactModalVisible = _f[0], setContactModalVisible = _f[1];
69339
69781
  React.useEffect(function () {
69340
- var _a;
69341
69782
  if (typeof localStorage !== "undefined") {
69342
69783
  var lsCartId = localStorage.getItem(CART_LS_KEY);
69343
69784
  var lsCheckoutId = localStorage.getItem(CHECKOUT_LS_KEY);
@@ -69346,7 +69787,8 @@ var StepSuccess = mobxReactLite.observer(function (_a) {
69346
69787
  if (lsCheckoutId && lsCheckoutId === vm.checkout.id)
69347
69788
  localStorage.removeItem(CHECKOUT_LS_KEY);
69348
69789
  }
69349
- Analytics.purchase(vm.checkout, ((_a = vm.successTransaction) === null || _a === void 0 ? void 0 : _a.id) || "");
69790
+ if (vm.successTransaction)
69791
+ Analytics.purchase(vm.checkout, vm.successTransaction);
69350
69792
  }, []);
69351
69793
  var customerName = (((_b = vm.checkout.customer) === null || _b === void 0 ? void 0 : _b.firstName) || "") +
69352
69794
  " " +
@@ -70497,6 +70939,7 @@ var CheckoutPage = function (_a) {
70497
70939
  React.useEffect(function () {
70498
70940
  store.checkLocalization();
70499
70941
  getCheckout();
70942
+ initIkasEvents();
70500
70943
  }, []);
70501
70944
  var getCheckout = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
70502
70945
  var urlParams, checkoutId, checkout;
@@ -70908,6 +71351,7 @@ var tr = {
70908
71351
 
70909
71352
  shipping: "Kargo",
70910
71353
  payment: "Ödeme",
71354
+ summary: "Özet",
70911
71355
 
70912
71356
  free: "Ücretsiz",
70913
71357
  standartShipping: "Standart Kargo",
@@ -71073,6 +71517,7 @@ var en = {
71073
71517
 
71074
71518
  shipping: "Shipping",
71075
71519
  payment: "Payment",
71520
+ summary: "Summary",
71076
71521
 
71077
71522
  free: "Free",
71078
71523
  standartShipping: "Standart Shipping",
@@ -71320,5 +71765,6 @@ exports.parseRangeStr = parseRangeStr;
71320
71765
  exports.pascalCase = pascalCase;
71321
71766
  exports.stringSorter = stringSorter;
71322
71767
  exports.stringToSlug = stringToSlug;
71768
+ exports.tryForEach = tryForEach;
71323
71769
  exports.useTranslation = useTranslation;
71324
71770
  exports.validatePhoneNumber = validatePhoneNumber;