PageSourceSearch

https://www.illumina.com/etc.clientlibs/illumina-designs/illumina-…-static.75b00d2cdea6e5910108d3c7e9852c0d.js

js illumina.com collected 2026-09-24 15:15:58 UTC 245,571 bytes, 6,020 lines download raw bytes

1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
2function _OverloadYield(e, d) {
3  this.v = e, this.k = d;
4}
5module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
6},{}],2:[function(require,module,exports){
7function _arrayLikeToArray(r, a) {
8  (null == a || a > r.length) && (a = r.length);
9  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
10  return n;
11}
12module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
13},{}],3:[function(require,module,exports){
14var arrayLikeToArray = require("./arrayLikeToArray.js");
15function _arrayWithoutHoles(r) {
16  if (Array.isArray(r)) return arrayLikeToArray(r);
17}
18module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
19},{"./arrayLikeToArray.js":2}],4:[function(require,module,exports){
20function asyncGeneratorStep(n, t, e, r, o, a, c) {
21  try {
22    var i = n[a](c),
23      u = i.value;
24  } catch (n) {
25    return void e(n);
26  }
27  i.done ? t(u) : Promise.resolve(u).then(r, o);
28}
29function _asyncToGenerator(n) {
30  return function () {
31    var t = this,
32      e = arguments;
33    return new Promise(function (r, o) {
34      var a = n.apply(t, e);
35      function _next(n) {
36        asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
37      }
38      function _throw(n) {
39        asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
40      }
41      _next(void 0);
42    });
43  };
44}
45module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
46},{}],5:[function(require,module,exports){
47var toPropertyKey = require("./toPropertyKey.js");
48function _defineProperty(e, r, t) {
49  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
50    value: t,
51    enumerable: !0,
52    configurable: !0,
53    writable: !0
54  }) : e[r] = t, e;
55}
56module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
57},{"./toPropertyKey.js":19}],6:[function(require,module,exports){
58function _interopRequireDefault(e) {
59  return e && e.__esModule ? e : {
60    "default": e
61  };
62}
63module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
64},{}],7:[function(require,module,exports){
65function _iterableToArray(r) {
66  if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
67}
68module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
69},{}],8:[function(require,module,exports){
70function _nonIterableSpread() {
71  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
72}
73module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
74},{}],9:[function(require,module,exports){
75var regeneratorDefine = require("./regeneratorDefine.js");
76function _regenerator() {
77  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
78  var e,
79    t,
80    r = "function" == typeof Symbol ? Symbol : {},
81    n = r.iterator || "@@iterator",
82    o = r.toStringTag || "@@toStringTag";
83  function i(r, n, o, i) {
84    var c = n && n.prototype instanceof Generator ? n : Generator,
85      u = Object.create(c.prototype);
86    return regeneratorDefine(u, "_invoke", function (r, n, o) {
87      var i,
88        c,
89        u,
90        f = 0,
91        p = o || [],
92        y = !1,
93        G = {
94          p: 0,
95          n: 0,
96          v: e,
97          a: d,
98          f: d.bind(e, 4),
99          d: function d(t, r) {
100            return i = t, c = 0, u = e, G.n = r, a;
101          }
102        };
103      function d(r, n) {
104        for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
105          var o,
106            i = p[t],
vendor: 7,116 bytes, lines 107-278
107            d = G.p,
108            l = i[2];
109          r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
110        }
111        if (o || r > 1) return a;
112        throw y = !0, n;
113      }
114      return function (o, p, l) {
115        if (f > 1) throw TypeError("Generator is already running");
116        for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
117          i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
118          try {
119            if (f = 2, i) {
120              if (c || (o = "next"), t = i[o]) {
121                if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
122                if (!t.done) return t;
123                u = t.value, c < 2 && (c = 0);
124              } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
125              i = e;
126            } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
127          } catch (t) {
128            i = e, c = 1, u = t;
129          } finally {
130            f = 1;
131          }
132        }
133        return {
134          value: t,
135          done: y
136        };
137      };
138    }(r, o, i), !0), u;
139  }
140  var a = {};
141  function Generator() {}
142  function GeneratorFunction() {}
143  function GeneratorFunctionPrototype() {}
144  t = Object.getPrototypeOf;
145  var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {
146      return this;
147    }), t),
148    u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
149  function f(e) {
150    return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
151  }
152  return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () {
153    return this;
154  }), regeneratorDefine(u, "toString", function () {
155    return "[object Generator]";
156  }), (module.exports = _regenerator = function _regenerator() {
157    return {
158      w: i,
159      m: f
160    };
161  }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
162}
163module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
164},{"./regeneratorDefine.js":13}],10:[function(require,module,exports){
165var regeneratorAsyncGen = require("./regeneratorAsyncGen.js");
166function _regeneratorAsync(n, e, r, t, o) {
167  var a = regeneratorAsyncGen(n, e, r, t, o);
168  return a.next().then(function (n) {
169    return n.done ? n.value : a.next();
170  });
171}
172module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
173},{"./regeneratorAsyncGen.js":11}],11:[function(require,module,exports){
174var regenerator = require("./regenerator.js");
175var regeneratorAsyncIterator = require("./regeneratorAsyncIterator.js");
176function _regeneratorAsyncGen(r, e, t, o, n) {
177  return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);
178}
179module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
180},{"./regenerator.js":9,"./regeneratorAsyncIterator.js":12}],12:[function(require,module,exports){
181var OverloadYield = require("./OverloadYield.js");
182var regeneratorDefine = require("./regeneratorDefine.js");
183function AsyncIterator(t, e) {
184  function n(r, o, i, f) {
185    try {
186      var c = t[r](o),
187        u = c.value;
188      return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {
189        n("next", t, i, f);
190      }, function (t) {
191        n("throw", t, i, f);
192      }) : e.resolve(u).then(function (t) {
193        c.value = t, i(c);
194      }, function (t) {
195        return n("throw", t, i, f);
196      });
197    } catch (t) {
198      f(t);
199    }
200  }
201  var r;
202  this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
203    return this;
204  })), regeneratorDefine(this, "_invoke", function (t, o, i) {
205    function f() {
206      return new e(function (e, r) {
207        n(t, i, e, r);
208      });
209    }
210    return r = r ? r.then(f, f) : f();
211  }, !0);
212}
213module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
214},{"./OverloadYield.js":1,"./regeneratorDefine.js":13}],13:[function(require,module,exports){
215function _regeneratorDefine(e, r, n, t) {
216  var i = Object.defineProperty;
217  try {
218    i({}, "", {});
219  } catch (e) {
220    i = 0;
221  }
222  module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {
223    function o(r, n) {
224      _regeneratorDefine(e, r, function (e) {
225        return this._invoke(r, n, e);
226      });
227    }
228    r ? i ? i(e, r, {
229      value: n,
230      enumerable: !t,
231      configurable: !t,
232      writable: !t
233    }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
234  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t);
235}
236module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
237},{}],14:[function(require,module,exports){
238function _regeneratorKeys(e) {
239  var n = Object(e),
240    r = [];
241  for (var t in n) r.unshift(t);
242  return function e() {
243    for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;
244    return e.done = !0, e;
245  };
246}
247module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
248},{}],15:[function(require,module,exports){
249var OverloadYield = require("./OverloadYield.js");
250var regenerator = require("./regenerator.js");
251var regeneratorAsync = require("./regeneratorAsync.js");
252var regeneratorAsyncGen = require("./regeneratorAsyncGen.js");
253var regeneratorAsyncIterator = require("./regeneratorAsyncIterator.js");
254var regeneratorKeys = require("./regeneratorKeys.js");
255var regeneratorValues = require("./regeneratorValues.js");
256function _regeneratorRuntime() {
257  "use strict";
258
259  var r = regenerator(),
260    e = r.m(_regeneratorRuntime),
261    t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
262  function n(r) {
263    var e = "function" == typeof r && r.constructor;
264    return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
265  }
266  var o = {
267    "throw": 1,
268    "return": 2,
269    "break": 3,
270    "continue": 3
271  };
272  function a(r) {
273    var e, t;
274    return function (n) {
275      e || (e = {
276        stop: function stop() {
277          return t(n.a, 2);
278        },
279        "catch": function _catch() {
280          return n.v;
281        },
282        abrupt: function abrupt(r, e) {
283          return t(n.a, o[r], e);
284        },
285        delegateYield: function delegateYield(r, o, a) {
286          return e.resultName = o, t(n.d, regeneratorValues(r), a);
287        },
288        finish: function finish(r) {
289          return t(n.f, r);
290        }
291      }, t = function t(r, _t, o) {
292        n.p = e.prev, n.n = e.next;
293        try {
294          return r(_t, o);
295        } finally {
296          e.next = n.n;
297        }
298      }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
299      try {
300        return r.call(this, e);
301      } finally {
302        n.p = e.prev, n.n = e.next;
303      }
304    };
305  }
306  return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
307    return {
308      wrap: function wrap(e, t, n, o) {
309        return r.w(a(e), t, n, o && o.reverse());
310      },
311      isGeneratorFunction: n,
312      mark: r.m,
313      awrap: function awrap(r, e) {
314        return new OverloadYield(r, e);
315      },
316      AsyncIterator: regeneratorAsyncIterator,
317      async: function async(r, e, t, o, u) {
318        return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);
319      },
320      keys: regeneratorKeys,
321      values: regeneratorValues
322    };
323  }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
324}
325module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
326},{"./OverloadYield.js":1,"./regenerator.js":9,"./regeneratorAsync.js":10,"./regeneratorAsyncGen.js":11,"./regeneratorAsyncIterator.js":12,"./regeneratorKeys.js":14,"./regeneratorValues.js":16}],16:[function(require,module,exports){
327var _typeof = require("./typeof.js")["default"];
328function _regeneratorValues(e) {
329  if (null != e) {
330    var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
331      r = 0;
332    if (t) return t.call(e);
333    if ("function" == typeof e.next) return e;
334    if (!isNaN(e.length)) return {
335      next: function next() {
336        return e && r >= e.length && (e = void 0), {
337          value: e && e[r++],
338          done: !e
339        };
340      }
341    };
342  }
343  throw new TypeError(_typeof(e) + " is not iterable");
344}
345module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
346},{"./typeof.js":20}],17:[function(require,module,exports){
347var arrayWithoutHoles = require("./arrayWithoutHoles.js");
348var iterableToArray = require("./iterableToArray.js");
349var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
350var nonIterableSpread = require("./nonIterableSpread.js");
351function _toConsumableArray(r) {
352  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
353}
354module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
355},{"./arrayWithoutHoles.js":3,"./iterableToArray.js":7,"./nonIterableSpread.js":8,"./unsupportedIterableToArray.js":21}],18:[function(require,module,exports){
356var _typeof = require("./typeof.js")["default"];
357function toPrimitive(t, r) {
358  if ("object" != _typeof(t) || !t) return t;
359  var e = t[Symbol.toPrimitive];
360  if (void 0 !== e) {
361    var i = e.call(t, r || "default");
362    if ("object" != _typeof(i)) return i;
363    throw new TypeError("@@toPrimitive must return a primitive value.");
364  }
365  return ("string" === r ? String : Number)(t);
366}
367module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
368},{"./typeof.js":20}],19:[function(require,module,exports){
369var _typeof = require("./typeof.js")["default"];
370var toPrimitive = require("./toPrimitive.js");
371function toPropertyKey(t) {
372  var i = toPrimitive(t, "string");
373  return "symbol" == _typeof(i) ? i : i + "";
374}
375module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
376},{"./toPrimitive.js":18,"./typeof.js":20}],20:[function(require,module,exports){
377function _typeof(o) {
378  "@babel/helpers - typeof";
379
380  return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
381    return typeof o;
382  } : function (o) {
383    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
384  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
385}
386module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
387},{}],21:[function(require,module,exports){
388var arrayLikeToArray = require("./arrayLikeToArray.js");
389function _unsupportedIterableToArray(r, a) {
390  if (r) {
391    if ("string" == typeof r) return arrayLikeToArray(r, a);
392    var t = {}.toString.call(r).slice(8, -1);
393    return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
394  }
395}
396module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
397},{"./arrayLikeToArray.js":2}],22:[function(require,module,exports){
398// TODO(Babel 8): Remove this file.
399
400var runtime = require("../helpers/regeneratorRuntime")();
401module.exports = runtime;
402
403// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
404try {
405  regeneratorRuntime = runtime;
406} catch (accidentalStrictMode) {
407  if (typeof globalThis === "object") {
408    globalThis.regeneratorRuntime = runtime;
409  } else {
410    Function("r", "regeneratorRuntime = r")(runtime);
411  }
412}
413
414},{"../helpers/regeneratorRuntime":15}],23:[function(require,module,exports){
415/**
416 * @category Cookies
417 * @summary Remove a cookie value.
418 * @tutorial 03_Usage
419 *
420 * @description
421 * This method removes a cookie, given a cookie name and optionally, a domain.
422 * @memberOf ILMN
423 * @module clearCookie
424 * @exports clearCookie
425 * @param {string} name - the name of the cookie
426 * @param {string} domain - the domain of the cookie
427 * @example
428 *
429 * clearCookie('ILMN_PrefSegment', '.illumina.com');
430 */
431
432var getCookieDomain = require('../getCookieDomain');
433var getCookie = require('../getCookie');
434
435function clearCookie(name, domain) {
436    if (!domain) {
437        domain = getCookieDomain();
438    }
439    if (getCookie(name)) {
440        document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/' + ((domain) ? ";domain=" + domain : "");
441    }
442}
443
444module.exports = clearCookie;
445},{"../getCookie":24,"../getCookieDomain":25}],24:[function(require,module,exports){
446/**
447 * @category Cookies
448 * @summary Get the cookie value based on name.
449 * @tutorial 03_Usage
450 *
451 * @description
452 * This Method will return a string value matching the name of the cookie store
453 * @memberOf ILMN
454 * @module getCookie
455 * @exports getCookie
456 * @param {string} name - the name of the cookie
457 * @returns {string} Cookie value
458 * @example
459 * // given that you have a cookie called 'ILMN_PrefSegement' with the value of 'cancer_research'
460 * getCookie('ILMN_PrefSegment')
461 * // => 'cancer_research'
462 */
463
464function getCookie(cname) {
465  var name = cname + "=";
466  var ca = document.cookie.split(';');
467  for (var i = 0; i < ca.length; i++) {
468    var c = ca[i];
469    while (c.charAt(0) == ' ') {
470      c = c.substring(1);
471    }
472    if (c.indexOf(name) == 0) {
473      try {
474        return decodeURIComponent(c.substring(name.length, c.length));
475      } catch(e) {
476        return c.substring(name.length, c.length);
477      }
478    }
479  }
480  return "";
481}
482
483module.exports = getCookie;
484},{}],25:[function(require,module,exports){
485var getEnvironment = require('../getEnvironment');
486
487/**
488 * @category Cookies
489 * @summary Get cookie domain.
490 * @tutorial 03_Usage
491 *
492 * @description
493 * This method returns the domain of the current site relevant for setting/removing cookies.
494 * @memberOf ILMN
495 * @module getCookieDomain
496 * @exports getCookieDomain
497 * @returns {string} Cookie domain
498 * @example
499 *
500 * var currentCookieDomain = getCookieDomain();
501 *
502 */
503
504function getCookieDomain() {
505    var domain = '.illumina.com'; // default
506    if (window.location.href.indexOf("illumina.com.cn") > -1 || window.location.href.indexOf("apac/zh_CN") > -1) {
507        domain = '.illumina.com.cn';
508    } else if (getEnvironment() === 'localhost') {
509        domain = 'localhost';
510    }
511    return domain;
512}
513
514module.exports = getCookieDomain;
515},{"../getEnvironment":26}],26:[function(require,module,exports){
516/**
517 * @category Environment
518 * @summary Gets current server environment and returns it as a kebab-case string
519 * @tutorial 03_Usage
520 *
521 * @description
522 * A module that gets the current AEM or publish environment
523 * @module getEnvironment
524 * @exports getEnvironment
525 * @returns {string} Environment
526 * @example
527 *
528 * getEnvironment()
529 * // => 'localhost'
530 * // => 'server'
531 */
532
533function getEnvironment() {
534    return window.location.hostname === 'localhost' ? 'localhost' : 'server';
535}
536
537module.exports = getEnvironment;
538},{}],27:[function(require,module,exports){
539/**
540 * @category Locale
541 * @summary Get the Locale code for the current page
542 * @tutorial 03_Usage
543 *
544 * @description
545 * Get the Locale code for the current page
546 * @module getLocale
547 * @exports getLocale
548 * @returns {string} Locale code
549 * @example
550 * 
551 * getLocale()
552 * // => 'ja_JP'
553 */
554
555function getLocale() {
556    var locale;
557    var metaLocaleElem = document.querySelector("meta[name='locale']");
558    if (metaLocaleElem) {
559        locale = metaLocaleElem.getAttribute("content");
560    }
561    return locale;
562}
563module.exports = getLocale;
564},{}],28:[function(require,module,exports){
565/**
566 * @category Region 
567 * @summary Get the Region code for the current page
568 * @tutorial 03_Usage
569 *
570 * @description
571 * Get the Region code for the current page
572 * @memberOf ILMN
573 * @module getRegion
574 * @exports getRegion
575 * @returns {string} Region code
576 * @example
577 * 
578 * getRegion()
579 * // => 'apac'
580 */
581
582function getRegion() {
583    var region;
584    var metaRegionElem = document.querySelector("meta[name='region']");
585    if (metaRegionElem) {
586        region = metaRegionElem.getAttribute("content");
587    }
588    return region;
589}
590module.exports = getRegion;
591},{}],29:[function(require,module,exports){
592/**
593 * @category User Info
594 * @summary Get authenticated user object
595 * @tutorial 03_Usage
596 *
597 * @description
598 * Get the user object
599 * @module getUser
600 * @exports getUser
601 * @returns {object} User object
602 * @example
603 *
604 * getUser()
605 * // => {
606 *
607 * }
608 */
609
610function getUser() {
611    // TODO: cartPlugin.js line 623 // _wcs.currentUser function - pair program with @fshanley
612}
613
614// exports the variables and functions above so that other modules can use them
615module.exports.getUser = getUser;
616},{}],30:[function(require,module,exports){
617module.exports = {
618    // Browser helpers
619    isChrome: require('./isChrome/index.js'),
620    isEdge: require('./isEdge/index.js'),
621    isFirefox: require('./isFirefox/index.js'),
622    isIE: require('./isIE/index.js'),
623    isSafari: require('./isSafari/index.js'),
624
625    // Cookies helpers
626    getCookie: require('./getCookie/index.js'),
627    setCookie: require('./setCookie/index.js'),
628    getCookieDomain: require('./getCookieDomain/index.js'),
629
630    // Device helpers
631    isAndroid: require('./isAndroid/index.js'),
632    isiOS: require('./isiOS/index.js'),
633    isMobile: require('./isMobile/index.js'),
634
635    // Environment helpers
636    getEnvironment: require('./getEnvironment/index.js'),
637
638    // Locale helpers
639    getLocale: require('./getLocale/index.js'),
640    isAustralia: require('./isAustralia/index.js'),
641    isGreatBritain: require('./isGreatBritain/index.js'),
642    isUnitedStates: require('./isUnitedStates/index.js'),
643    isJapan: require('./isJapan/index.js'),
644    isChina: require('./isChina/index.js'),
645
646    // Region helpers
647    getRegion: require('./getRegion/index.js'),
648    regionContentPath: require('./regionContentPath/index.js'),
649    isAMR: require('./isAMR/index.js'),
650    isAPAC: require('./isAPAC/index.js'),
651    isSAPAC: require('./isSAPAC/index.js'),
652    isEMEA: require('./isEMEA/index.js'),
653
654    // UI helpers
655    smoothScroll: require('./smoothScroll/index.js'),
656    whenDefined: require('./whenDefined/index.js'),
657    whenObjDefined: require('./whenObjDefined/index.js'),
658
659    // User helpers
660    getUser: require('./getUser/index.js'),
661    isLoggedIn: require('./isLoggedIn/index.js')
662};
663},{"./getCookie/index.js":24,"./getCookieDomain/index.js":25,"./getEnvironment/index.js":26,"./getLocale/index.js":27,"./getRegion/index.js":28,"./getUser/index.js":29,"./isAMR/index.js":31,"./isAPAC/index.js":32,"./isAndroid/index.js":33,"./isAustralia/index.js":34,"./isChina/index.js":35,"./isChrome/index.js":36,"./isEMEA/index.js":37,"./isEdge/index.js":38,"./isFirefox/index.js":39,"./isGreatBritain/index.js":40,"./isIE/index.js":41,"./isJapan/index.js":42,"./isLoggedIn/index.js":43,"./isMobile/index.js":44,"./isSAPAC/index.js":45,"./isSafari/index.js":46,"./isUnitedStates/index.js":47,"./isiOS/index.js":48,"./regionContentPath/index.js":49,"./setCookie/index.js":50,"./smoothScroll/index.js":51,"./whenDefined/index.js":52,"./whenObjDefined/index.js":53}],31:[function(require,module,exports){
664var getRegion = require('../getRegion/index.js');
665
666/**
667 * @category Region
668 * @summary Check if Region Code is AMR. Returns true if user is on AMR region.
669 * @tutorial 03_Usage
670 *
671 * @description
672 * Check if Region Code is AMR
673 * @module isAMR
674 * @exports isAMR
675 * @returns {boolean} true or false
676 * @example
677 * 
678 * isAMR()
679 * // => 'true'
680 */
681
682function isAMR() {
683    return getRegion() === 'amr';
684}
685module.exports = isAMR;
686},{"../getRegion/index.js":28}],32:[function(require,module,exports){
687var getRegion = require('../getRegion/index.js');
688
689/**
690 * @category Region
691 * @summary Check if Region Code is APAC. Returns true if page is in the APAC region.
692 * @tutorial 03_Usage
693 *
694 * @description
695 * Check if Region Code is APAC
696 * @module isAPAC
697 * @exports isAPAC
698 * @returns {boolean} true or false
699 * @example
700 * 
701 * isAPAC()
702 * // => 'true'
703 */
704
705function isAPAC() {
706    return getRegion() === 'apac';
707}
708module.exports = isAPAC;
709},{"../getRegion/index.js":28}],33:[function(require,module,exports){
710/**
711 * @category Devices
712 * @summary Target user's device for Android-specific functionality. Returns true if the user is using an Android-operated mobile device.
713 * @tutorial 03_Usage
714 *
715 * @description
716 * Target user's device for Android-specific functionality
717 * @module isAndroid
718 * @exports isAndroid
719 * @returns {boolean} true or false
720 * @example
721 * // given the current device is Android.
722 * isAndroid()
723 * // => true
724 */
725
726function isAndroid() {
727    return navigator.userAgent.toLowerCase().indexOf("android") > -1;
728}
729
730module.exports = isAndroid;
731},{}],34:[function(require,module,exports){
732var getLocale = require('../getLocale/index.js');
733
734/**
735 * @category Locale
736 * @summary Check if Locale Code is en_AU. Returns true if page is in the en_AU locale.
737 * @tutorial 03_Usage
738 *
739 * @description
740 * Check if Locale Code is en_AU
741 * @module isAustralia
742 * @exports isAustralia
743 * @returns {boolean} true or false
744 * @example
745 * 
746 * isAustralia()
747 * // => 'true'
748 */
749
750function isAustralia() {
751    return getLocale() === 'en_AU';
752}
753module.exports = isAustralia;
754},{"../getLocale/index.js":27}],35:[function(require,module,exports){
755var getLocale = require('../getLocale/index.js');
756
757/**
758 * @category Locale
759 * @summary Check if Locale Code is zh_CN. Returns true if page is in the zg_CN locale
760 * @tutorial 03_Usage
761 *
762 * @description
763 * Check if Locale Code is zh_CN
764 * @module isChina
765 * @exports isChina
766 * @returns {boolean} true or false
767 * @example
768 * 
769 * isChina()
770 * // => 'true'
771 */
772
773function isChina() {
774    return getLocale() === 'zh_CN';
775}
776module.exports = isChina;
777},{"../getLocale/index.js":27}],36:[function(require,module,exports){
778/**
779 * @category Browser
780 * @summary Target Chrome for browser-specific functionality. Checks if the browser is Chrome and returns true or false
781 * @tutorial 03_Usage
782 *
783 * @description
784 * Target Chrome for browser-specific functionality
785 * @module isChrome
786 * @exports isChrome
787 * @returns {boolean} true or false
788 * @example
789 * // given the browser is Chrome 
790 * isChrome();
791 * // => true
792 */
793
794function isChrome() {
795    return window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
796}
797
798module.exports = isChrome;
799},{}],37:[function(require,module,exports){
800var getRegion = require('../getRegion/index.js');
801
802/**
803 * @category Region
804 * @summary Check if Region Code is EMEA. Returns true if page is in the EMEA region.
805 * @tutorial 03_Usage
806 *
807 * @description
808 * Check if Region Code is EMEA
809 * @module isEMEA
810 * @exports isEMEA
811 * @returns {boolean} true or false
812 * @example
813 * 
814 * isEMEA()
815 * // => 'true'
816 */
817
818function isEMEA() {
819    return getRegion() === 'emea';
820}
821module.exports = isEMEA;
822},{"../getRegion/index.js":28}],38:[function(require,module,exports){
823/**
824 * @category Browser
825 * @summary Target Internet Explorer Edge for browser-specific functionality. Returns true if the browser is Internet Explorer Edge.
826 * @tutorial 03_Usage
827 *
828 * @description
829 * Target Internet Explorer Edge for browser-specific functionality
830 * @module isEdge
831 * @exports isEdge
832 * @returns {boolean} true or false
833 * @example
834 * // given the browser is Edge 
835 * isEdge()
836 * // => true
837 */
838
839function isEdge() {
840    return window.navigator.userAgent.toLowerCase().indexOf('edge') > -1;
841}
842
843module.exports = isEdge;
844},{}],39:[function(require,module,exports){
845/**
846 * @category Browser
847 * @summary Target Firefox for browser-specific functionality. Returns true if the browser is Firefox.
848 * @tutorial 03_Usage
849 *
850 * @description
851 * Target Firefox for browser-specific functionality
852 * @module isFirefox
853 * @exports isFirefox
854 * @returns {boolean} true or false
855 * @example
856 * //given the browser is FireFox
857 * isFirefox()
858 * // => true
859 */
860
861function isFirefox() {
862    return window.navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
863}
864
865module.exports = isFirefox;
866},{}],40:[function(require,module,exports){
867var getLocale = require('../getLocale/index.js');
868
869/**
870 * @category Locale
871 * @summary Check if Locale Code is en_GB.  Returns true if page is in the en_GB locale.
872 * @tutorial 03_Usage
873 *
874 * @description
875 * Check if Locale Code is en_GB
876 * @module isGreatBritain
877 * @exports isGreatBritain
878 * @returns {boolean} true or false
879 * @example
880 * 
881 * isGreatBritain()
882 * // => 'true'
883 */
884
885function isGreatBritain() {
886    return getLocale() === 'en_GB';
887}
888module.exports = isGreatBritain;
889},{"../getLocale/index.js":27}],41:[function(require,module,exports){
890/**
891 * @category Browser
892 * @summary Target Internet Explorer for browser-specific functionality.  Returns true if the browser is Internet Explorer.
893 * @tutorial 03_Usage
894 *
895 * @description
896 * Target Internet Explorer for browser-specific functionality
897 * @module isIE
898 * @exports isIE
899 * @returns {boolean} true or false
900 * @example
901 * // given the browser is Internet Explorer
902 * isIE()
903 * // => true
904 */
905
906function isIE() {
907    var $index = window.navigator.userAgent.toLowerCase().indexOf("MSIE"),
908        $isIE = false;
909
910    // If IE, return true.
911    if ($index > 0 || !!navigator.userAgent.match(/Trident\/7\./))
912        $isIE = true;
913
914    return $isIE;
915}
916
917module.exports = isIE;
918},{}],42:[function(require,module,exports){
919var getLocale = require('../getLocale/index.js');
920
921/**
922 * @category Locale
923 * @summary Check if Locale Code is ja_JP. Returns true if page is in the ja_JP locale.
924 * @tutorial 03_Usage
925 *
926 * @description
927 * Check if Locale Code is ja_jP
928 * @module isJapan
929 * @exports isJapan
930 * @returns {boolean} true or false
931 * @example
932 * 
933 * isJapan()
934 * // => 'true'
935 */
936
937function isJapan() {
938    return getLocale() === 'ja_JP';
939}
940module.exports = isJapan;
941},{"../getLocale/index.js":27}],43:[function(require,module,exports){
942/**
943 * @category User Info
944 * @summary Identify if a user is logged in. Returns true if a user is logged in.
945 * @tutorial 03_Usage
946 *
947 * @description
948 * Identify is a user is logged in.
949 * @module isLoggedIn
950 * @exports isLoggedIn
951 * @returns {boolean} true or false
952 * @example
953 *
954 * isLoggedIn()
955 * // => true
956 */
957
958function isLoggedIn() {
959    if (window._ecom) {
960        return window._ecom.isLoggedIn;
961    }
962    return false;
963}
964
965// exports the variables and functions above so that other modules can use them
966module.exports.isLoggedIn = isLoggedIn;
967},{}],44:[function(require,module,exports){
968/**
969 * @category Devices
970 * @summary Target user's device for mobile-specific functionality. Returns  true if the user is using a mobile device.
971 * @tutorial 03_Usage
972 *
973 * @description
974 * Target user's device for mobile-specific functionality
975 * @module isMobile
976 * @exports isMobile
977 * @returns {boolean} true or false
978 * @example
979 *
980 * isMobile()
981 * // => true
982 */
983
984function isMobile() {
985    var $isMobile = false; //initiate as false
986    // device detection
987    if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) ||
988        /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.
988substr(0, 4)) ||
989        (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && !window.MSStream)) {
990        $isMobile = true;
991    }
992
993    return $isMobile;
994}
995
996module.exports = isMobile;
997},{}],45:[function(require,module,exports){
998var getRegion = require('../getRegion/index.js');
999
1000/**
1001 * @category Region
1002 * @summary Check if Region Code is SAPAC. Returns true if page is in the SAPAC region.
1003 * @tutorial 03_Usage
1004 *
1005 * @description
1006 * Check if Region Code is SAPAC
1007 * @module isSAPAC
1008 * @exports isSAPAC
1009 * @returns {boolean} true or false
1010 * @example
1011 * 
1012 * isSAPAC()
1013 * // => 'true'
1014 */
1015
1016function isSAPAC() {
1017    return getRegion() === 'spac';
1018}
1019module.exports = isSAPAC;
1020},{"../getRegion/index.js":28}],46:[function(require,module,exports){
1021/**
1022 * @category Browser
1023 * @summary Target Safari for browser-specific functionality. Returns true if the browser is Safari.
1024 * @tutorial 03_Usage
1025 *
1026 * @description
1027 * Target Safari for browser-specific functionality
1028 * @module isSafari
1029 * @exports isSafari
1030 * @returns {boolean} true or false
1031 * @example
1032 * // given the browser is Safari
1033 * isSafari()
1034 * // => true
1035 */
1036
1037function isSafari() {
1038    var $agent = window.navigator.userAgent.toLowerCase();
1039    return $agent.indexOf('safari') !== -1 && $agent.indexOf('chrome') === -1;
1040}
1041
1042module.exports = isSafari;
1043},{}],47:[function(require,module,exports){
1044var getLocale = require('../getLocale/index.js');
1045
1046/**
1047 * @category Locale
1048 * @summary Check if Locale Code is en_US. Returns true if page is in the en_US locale.
1049 * @tutorial 03_Usage
1050 *
1051 * @description
1052 * Check if Locale Code is en_US
1053 * @module isUnitedStates
1054 * @exports isUnitedStates
1055 * @returns {boolean} true or false
1056 * @example
1057 * 
1058 * isUnitedStates()
1059 * // => 'true'
1060 */
1061
1062function isUnitedStates() {
1063    return getLocale() === 'en_US';
1064}
1065module.exports = isUnitedStates;
1066},{"../getLocale/index.js":27}],48:[function(require,module,exports){
1067/**
1068 * @category Devices
1069 * @summary Target user's mobile device for iOS-specific functionality. Returns true if the user is using a iOS mobile device.
1070 * @tutorial 03_Usage
1071 *
1072 * @description
1073 * Target user's mobile device for iOS-specific functionality
1074 * @module isiOS
1075 * @exports isiOS
1076 * @returns {boolean} true or false
1077 * @example
1078 *
1079 * isiOS()
1080 * // => true
1081 */
1082
1083function isiOS() {
1084    return (/iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) && !window.MSStream;
1085}
1086
1087module.exports = isiOS;
1088},{}],49:[function(require,module,exports){
1089/**
1090 * @category Region 
1091 * @summary Include proper AEM regional content path
1092 * @tutorial 03_Usage
1093 *
1094 * @description
1095 * Get the Region code for the current page
1096 * @memberOf ILMN
1097 * @module regionContentPath
1098 * @exports regionContentPath
1099 * @param {string} url - AEM full relative path to page, starting with /content/....
1100 * @returns {string} relative content path
1101 * @example
1102 * 
1103 * regionContentPath.getPath('<relative-url>')
1104 * // => '/content/illumina-marketing/en' + path-to-page.html (default)
1105 * // => '/content/illumina-marketing/apac/zh_CN/path/to/page.html'
1106 * // => '/content/illumina-marketing/apac/ja_JP/path/to/page.html'
1107 * // => '/content/illumina-marketing/emea/en_GB/path/to/page.html'
1108 * // => '/content/illumina-marketing/spac/en_AU/path/to/page.html'
1109 */
1110
1111var regionContentPath = {
1112    getPath: function(enPath) {
1113        var hostname = window.location.hostname;
1114        var dataRegion = '/content/illumina-marketing/en';
1115        switch (hostname) {
1116            case 'www.illumina.com':
1117            case 'support.illumina.com':
1118                dataRegion = '/content/illumina-marketing/en';
1119                break;
1120            case 'www.illumina.com.cn':
1121            case 'support.illumina.com.cn':
1122                dataRegion = '/content/illumina-marketing/apac/zh_CN';
1123                break;
1124            case 'jp.illumina.com':
1125            case 'jp.support.illumina.com':
1126                dataRegion = '/content/illumina-marketing/apac/ja_JP';
1127                break;
1128            case 'emea.illumina.com':
1129            case 'emea.support.illumina.com':
1130                dataRegion = '/content/illumina-marketing/emea/en_GB';
1131                break;
1132            case 'sapac.illumina.com':
1133            case 'sapac.support.illumina.com':
1134                dataRegion = '/content/illumina-marketing/spac/en_AU';
1135                break;
1136            default:
1137                dataRegion = '/content/illumina-marketing/en';
1138        }
1139        return enPath ? enPath.replace('/content/illumina-marketing/en', dataRegion) : '';
1140    }
1141};
1142
1143
1144module.exports = regionContentPath;
1145},{}],50:[function(require,module,exports){
1146var getCookieDomain = require('../getCookieDomain');
1147
1148/**
1149 * @category Cookies
1150 * @summary set the cookie based on name, value, expiration (in days), and domain.
1151 * @tutorial 03_Usage
1152 *
1153 * @description
1154 * This Method will set a cookie based using the name, value, expiration, and domain that you specify
1155 * @memberOf ILMN
1156 * @module setCookie
1157 * @exports setCookie
1158 * @param {string} name - the name of the cookie
1159 * @param {string} value - the value of the named cookie
1160 * @param {number} days - the number of day until the cookie expires
1161 * @param {string} domain - the domain of the cookie
1162 * @param {string} path - the path for where the cookie will be matched. ex: /docs (/docs, /docs/Web/, and /docs/Web/HTTP will all match.)
1163 * @param {string} samesite - the samesite value for the cookie - takes 'lax', 'strict', or 'none'
1164 * @param {string} secure - true if the cookie should be written as secure
1165 * @example
1166 *
1167 * setCookie('ILMN_PrefSegment', 'cancer_research', 365, '.illumina.com', '/')
1168 * // => undefined
1169 */
1170
1171function setCookie(name, value, days, domain, path, samesite, secure) {
1172    if (!domain) {
1173        domain = getCookieDomain();
1174    }
1175    if(!path) {
1176        path = '/';
1177    }
1178    var samesiteOptions = ['lax', 'strict', 'none'];
1179    if ((typeof samesite !== 'undefined') && (samesiteOptions.indexOf(samesite) > -1) && !(!secure && samesite === 'none')) {
1180        samesite = '; samesite=' + samesite;
1181    } else {
1182        samesite = '';
1183    }
1184    secure = typeof secure !== 'undefined' ? '; secure' : '';
1185    var expires = '';
1186    if (days) {
1187        var date = new Date();
1188        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
1189        expires = '; expires=' + date.toUTCString();
1190    }
1191    document.cookie = name + '=' + (value || '') + expires + '; path=' + path + ((domain) ? "; domain=" + domain : "") + samesite + secure;
1192}
1193
1194module.exports = setCookie;
1195},{"../getCookieDomain":25}],51:[function(require,module,exports){
1196var debounce = require('lodash/debounce');
1197
1198/**
1199 * @category UI Helpers
1200 * @summary Smoothly scroll to an element on the page.
1201 * @tutorial 03_Usage
1202 *
1203 * @description
1204 * Smoothly scroll to an element on the page with an optional offset pixel value. Accepts a function as an optional 3rd
1205 * parameter that runs after scrolling. Returns nothing.
1206 * Note: For Safari, Edge, and IE11 smooth scroll functionality, you will need a polyfill.
1207 * As-is, calling the function will jump to the location in Safari and not do anything in IE11/Edge.
1208 * https://github.com/iamdustan/smoothscroll
1209 *
1210 * @module smoothScroll
1211 * @exports smoothScroll
1212 * @param {object} elem        -  (required) Visible DOM node to scroll to.
1213 * @param {number} offset      -  (optional) Pixel height to offset the final scrolled position, to account for fixed elements, padding, etc.
1214 * @param {function} callback  -  (optional) Function to run after scroll is completed.
1215 *
1216 * @example
1217 * smoothScroll(elem, 50, callbackFn);
1218 */
1219
1220function smoothScroll(elem, offset, callback) {
1221    offset = typeof offset !== 'undefined' ? offset : 0;
1222    callback = typeof callback !== 'undefined' ? callback : function() {};
1223    if (elem) {
1224        var scrollDest = Math.floor(elem.getBoundingClientRect().top + window.pageYOffset - offset);
1225        var onScroll = function () {
1226            var scrollTop = window.scrollTop || window.pageYOffset;
1227            if (scrollTop >= scrollDest) {
1228                callback();
1229                window.removeEventListener('scroll', debounceFn);
1230            }
1231        };
1232
1233        var debounceFn = debounce(onScroll, 250);
1234        window.addEventListener('scroll', debounceFn);
1235
1236        window.scrollTo({
1237            top: scrollDest,
1238            behavior: 'smooth'
1239        });
1240    }
1241}
1242
1243module.exports = smoothScroll;
1244},{"lodash/debounce":63}],52:[function(require,module,exports){
1245/**
1246 * @category UI Helpers
1247 * @summary Legacy: Wait for an object to load before executing a function.
1248 * @tutorial 03_Usage
1249 *
1250 * @description
1251 * Legacy: This function works like a promise, waiting for a passed object name to be defined before executing a passed
1252 * function. Please use whenObjDefined function
1253 *
1254 * @module whenDefined
1255 * @exports whenDefined
1256 * @param {string} objName - (required) Object name to wait for.
1257 * @param {function} callbackFn - (required) Function to fire when object has loaded
1258 * @param {function} parentObj - (optional) If the object is not scoped to the window, you can scope it here.
1259 *
1260 * @example
1261 * whenDefined('OneTrust', handleGDPCContent);
1262 */
1263
1264function whenDefined(objName, callbackFn, parentObj) {
1265    objName = typeof objName === 'string' ? objName : '';
1266    callbackFn = typeof callbackFn === 'function' ? callbackFn : function() {};
1267    parentObj = typeof parentObj === 'object' ? parentObj : window;
1268
1269    if (window[objName]) {
1270        callbackFn();
1271    } else {
1272        Object.defineProperty(parentObj, objName, {
1273            configurable: true,
1274            enumerable: true,
1275            get: function() {
1276                return this['_' + objName];
1277            },
1278            set: function(val) {
1279                this['_' + objName] = val;
1280                whenDefined(objName, callbackFn, parentObj);
1281            }
1282        });
1283    }
1284}
1285
1286module.exports = whenDefined;
1287},{}],53:[function(require,module,exports){
1288/**
1289 * @category UI Helpers
1290 * @summary Wait for an object to load before executing a function.
1291 * @tutorial 03_Usage
1292 *
1293 * @description
1294 * This function works like a promise, waiting for a passed object name to be defined before executing a passed
1295 * function.
1296 *
1297 * @module whenObjDefined
1298 * @exports whenObjDefined
1299 * @param {string} objName - (required) Object name to wait for.
1300 * @param {function} callbackFn - (required) Function to fire when object has loaded
1301 * @param {function} parentObj - (optional) If the object is not scoped to the window, you can scope it here.
1302 *
1303 * @example
1304 * whenObjDefined('OneTrust', handleGDPCContent);
1305 */
1306
1307
1308 function whenObjDefined(objName,callbackFn,parentObj) {
1309
1310    // IE11 polyfill because it doesn't support custom events. *party*
1311    (function () {
1312
1313        if ( typeof window.CustomEvent === "function" ) return false;
1314
1315        function CustomEvent ( event, params ) {
1316            params = params || { bubbles: false, cancelable: false, detail: undefined };
1317            var evt = document.createEvent('CustomEvent');
1318            evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
1319            return evt;
1320        }
1321
1322        CustomEvent.prototype = window.Event.prototype;
1323
1324        window.CustomEvent = CustomEvent;
1325    })();
1326
1327
1328    var myEvent = new CustomEvent(objName + '-defined');
1329    window.addEventListener(myEvent.type,callbackFn)
1330    objName = typeof objName === 'string' ? objName : '';
1331    callbackFn = typeof callbackFn === 'function' ? callbackFn : function() {};
1332    parentObj = typeof parentObj === 'object' ? parentObj : window;
1333
1334    if (window[objName]) {
1335        callbackFn();
1336        // console.log("Function called from if clause")
1337    } else {
1338        Object.defineProperty(parentObj, objName, {//Used to define on existing object (window in this case)
1339            configurable: true,
1340            enumerable: true,
1341            get: function() {
1342                return window['_' + objName];//Get reference object
1343            },
1344            set: function(val) {//Called whenever the property is assigned (window.OneTrust = blah), this function is called with val equal to the right hand assignment
1345                window['_' + objName] = val; //Underline character prevents recursive setting of objName, and creates window._OneTrust
1346                // console.log("object set")
1347                window.dispatchEvent(myEvent);
1348            }
1349        });
1350    }
1351}
1352
1353
1354module.exports = whenObjDefined;
1355},{}],54:[function(require,module,exports){
1356;(function (root) {
1357  function throttle (fn, threshhold, scope) {
1358    threshhold || (threshhold = 100)
1359    var last,
1360      deferTimer
1361
1362    return function () {
1363      var context = scope || this
1364
1365      var now = +(new Date())
1366
1367      var args = arguments
1368      if (last && now < last + threshhold) {
1369        clearTimeout(deferTimer)
1370        deferTimer = setTimeout(function () {
1371          last = now
1372          fn.apply(context, args)
1373        }, threshhold)
1374      } else {
1375        last = now
1376        fn.apply(context, args)
1377      }
1378    }
1379  }
1380
1381  function hasClass (el, name) {
1382    return new RegExp(' ' + name + ' ').test(' ' + el.className + ' ')
1383  }
1384
1385  function addClass (el, name) {
1386    if (!hasClass(el, name)) {
1387      el.className += ' ' + name
1388    }
1389    return el
1390  }
1391
1392  function removeClass (el, name) {
1393    var newClass = ' ' + el.className.replace(/[\t\r\n]/g, ' ') + ' '
1394    if (hasClass(el, name)) {
1395      while (newClass.indexOf(' ' + name + ' ') >= 0) {
1396        newClass = newClass.replace(' ' + name + ' ', ' ')
1397      }
1398      el.className = newClass.replace(/^\s+|\s+$/g, '')
1399    }
1400    return el
1401  }
1402
1403  function removeEvent (el, name, fn) {
1404    if (el.removeEventListener) {
1405      return el.removeEventListener(name, fn)
1406    } else if (el.detachEvent) {
1407      return el.detachEvent('on' + name, fn)
1408    }
1409  }
1410
1411  function addEvent (el, name, fn) {
1412    if (el.addEventListener) {
1413      return el.addEventListener(name, fn, false)
1414    } else if (el.attachEvent) {
1415      return el.attachEvent('on' + name, fn)
1416    }
1417  }
1418
1419  function getScrollTop () {
1420    if (typeof window.pageYOffset !== 'undefined') {
1421      return window.pageYOffset
1422    } else {
1423      var b = document.body
1424      var d = document.documentElement
1425      d = d.clientHeight ? d : b
1426      return d.scrollTop
1427    }
1428  }
1429
1430  function isInView (obj) {
1431    var winTop = getScrollTop()
1432
1433    var winBottom = winTop + window.innerHeight
1434
1435    var objTop = obj.getBoundingClientRect().top + document.documentElement.scrollTop
1436
1437    var objBottom = objTop + obj.offsetHeight
1438
1439    var offset = 0
1440
1441    if ((objTop <= winBottom + offset) && (objBottom >= winTop)) {
1442      return true
1443    }
1444
1445    return false
1446  }
1447
1448  /**
1449   * @desc Create an InView instance.
1450   *
1451   * @class
1452   * @func InView
1453   * @param {HTMLElement} element - element to detect when scrolled to view
1454   * @param {scrollCallback} scrollCallback - callback function fired on scroll event
1455   * @return {HTMLElement} - element
1456   *
1457   * @example
1458   * var el = document.querySelector('.item');
1459   *
1460   * var InView = InView(el, function(isInView, data) {
1461   *   if (isInView) {
1462   *     console.log('in view');
1463   *   } else {
1464   *     if (data.windowScrollTop - (data.elementOffsetTop - data.inViewHeight) > data.inViewHeight) {
1465   *       console.log('not in view (scroll up)');
1466   *     } else {
1467   *       console.log('not in view (scroll down)');
1468   *     }
1469   *   }
1470   * });
1471   */
1472  function InView (el, callback) {
1473    var _this = this
1474    if (!(_this instanceof InView)) {
1475      return new InView(el, callback)
1476    }
1477
1478    _this.el = el
1479    _this.callback = callback.bind(_this)
1480    _this.destroy = function () {}
1481
1482    if (!el) {
1483      return _this
1484    }
1485
1486    var isDestroyed = false
1487
1488    var check = function check (e) {
1489      if (isDestroyed) return false
1490
1491      var params = {
1492        windowScrollTop: getScrollTop(),
1493        elementOffsetTop: _this.el.offsetTop,
1494        inViewHeight: window.innerHeight,
1495        elementOffsetTopInViewHeight: window.innerHeight - (getScrollTop() - (_this.el.offsetTop - window.innerHeight))
1496      }
1497      if (isInView(_this.el)) {
1498        addClass(_this.el, 'inview')
1499        _this.callback.call(_this, true, params)
1500      } else {
1501        removeClass(_this.el, 'inview')
1502        _this.callback.call(_this, false, params)
1503      }
1504    }
1505
1506    var throttledCheck = throttle(check, 100)
1507
1508    addEvent(window, 'scroll', throttledCheck)
1509
1510    _this.destroy = function () {
1511      isDestroyed = true
1512      removeEvent(window, 'scroll', throttledCheck)
1513    }
1514
1515    throttledCheck()
1516
1517    return _this
1518  }
1519
1520  /**
1521   * @desc InView callback
1522   *
1523   * @callback scrollCallback
1524   * @param {boolean} isInView - is in view
1525   * @param {object} data - scroll data
1526   * @param {number} data.windowScrollTop - scrolled amount
1527   * @param {number} data.elementOffsetTop - element top offset
1528   * @param {number} data.inViewHeight - height of visible area
1529   * @param {number} data.elementOffsetTopInViewHeight - element top offset relative to height of visible area
1530   */
1531
1532  if (typeof exports !== 'undefined') {
1533    if (typeof module !== 'undefined' && module.exports) {
1534      exports = module.exports = InView
1535    }
1536    exports.InView = InView
1537  } else {
1538    root.InView = InView
1539  }
1540})(window);
1541
1542},{}],55:[function(require,module,exports){
1543var root = require('./_root');
1544
1545/** Built-in value references. */
1546var Symbol = root.Symbol;
1547
1548module.exports = Symbol;
1549
1550},{"./_root":61}],56:[function(require,module,exports){
1551var Symbol = require('./_Symbol'),
1552    getRawTag = require('./_getRawTag'),
1553    objectToString = require('./_objectToString');
1554
1555/** `Object#toString` result references. */
1556var nullTag = '[object Null]',
1557    undefinedTag = '[object Undefined]';
1558
1559/** Built-in value references. */
1560var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
1561
1562/**
1563 * The base implementation of `getTag` without fallbacks for buggy environments.
1564 *
1565 * @private
1566 * @param {*} value The value to query.
1567 * @returns {string} Returns the `toStringTag`.
1568 */
1569function baseGetTag(value) {
1570  if (value == null) {
1571    return value === undefined ? undefinedTag : nullTag;
1572  }
1573  return (symToStringTag && symToStringTag in Object(value))
1574    ? getRawTag(value)
1575    : objectToString(value);
1576}
1577
1578module.exports = baseGetTag;
1579
1580},{"./_Symbol":55,"./_getRawTag":59,"./_objectToString":60}],57:[function(require,module,exports){
1581var trimmedEndIndex = require('./_trimmedEndIndex');
1582
1583/** Used to match leading whitespace. */
1584var reTrimStart = /^\s+/;
1585
1586/**
1587 * The base implementation of `_.trim`.
1588 *
1589 * @private
1590 * @param {string} string The string to trim.
1591 * @returns {string} Returns the trimmed string.
1592 */
1593function baseTrim(string) {
1594  return string
1595    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
1596    : string;
1597}
1598
1599module.exports = baseTrim;
1600
1601},{"./_trimmedEndIndex":62}],58:[function(require,module,exports){
1602(function (global){(function (){
1603/** Detect free variable `global` from Node.js. */
1604var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
1605
1606module.exports = freeGlobal;
1607
1608}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
1609},{}],59:[function(require,module,exports){
1610var Symbol = require('./_Symbol');
1611
1612/** Used for built-in method references. */
1613var objectProto = Object.prototype;
1614
1615/** Used to check objects for own properties. */
1616var hasOwnProperty = objectProto.hasOwnProperty;
1617
1618/**
1619 * Used to resolve the
1620 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1621 * of values.
1622 */
1623var nativeObjectToString = objectProto.toString;
1624
1625/** Built-in value references. */
1626var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
1627
1628/**
1629 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
1630 *
1631 * @private
1632 * @param {*} value The value to query.
1633 * @returns {string} Returns the raw `toStringTag`.
1634 */
1635function getRawTag(value) {
1636  var isOwn = hasOwnProperty.call(value, symToStringTag),
1637      tag = value[symToStringTag];
1638
1639  try {
1640    value[symToStringTag] = undefined;
1641    var unmasked = true;
1642  } catch (e) {}
1643
1644  var result = nativeObjectToString.call(value);
1645  if (unmasked) {
1646    if (isOwn) {
1647      value[symToStringTag] = tag;
1648    } else {
1649      delete value[symToStringTag];
1650    }
1651  }
1652  return result;
1653}
1654
1655module.exports = getRawTag;
1656
1657},{"./_Symbol":55}],60:[function(require,module,exports){
1658/** Used for built-in method references. */
1659var objectProto = Object.prototype;
1660
1661/**
1662 * Used to resolve the
1663 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1664 * of values.
1665 */
1666var nativeObjectToString = objectProto.toString;
1667
1668/**
1669 * Converts `value` to a string using `Object.prototype.toString`.
1670 *
1671 * @private
1672 * @param {*} value The value to convert.
1673 * @returns {string} Returns the converted string.
1674 */
1675function objectToString(value) {
1676  return nativeObjectToString.call(value);
1677}
1678
1679module.exports = objectToString;
1680
1681},{}],61:[function(require,module,exports){
1682var freeGlobal = require('./_freeGlobal');
1683
1684/** Detect free variable `self`. */
1685var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
1686
1687/** Used as a reference to the global object. */
1688var root = freeGlobal || freeSelf || Function('return this')();
1689
1690module.exports = root;
1691
1692},{"./_freeGlobal":58}],62:[function(require,module,exports){
1693/** Used to match a single whitespace character. */
1694var reWhitespace = /\s/;
1695
1696/**
1697 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
1698 * character of `string`.
1699 *
1700 * @private
1701 * @param {string} string The string to inspect.
1702 * @returns {number} Returns the index of the last non-whitespace character.
1703 */
1704function trimmedEndIndex(string) {
1705  var index = string.length;
1706
1707  while (index-- && reWhitespace.test(string.charAt(index))) {}
1708  return index;
1709}
1710
1711module.exports = trimmedEndIndex;
1712
1713},{}],63:[function(require,module,exports){
1714var isObject = require('./isObject'),
1715    now = require('./now'),
1716    toNumber = require('./toNumber');
1717
1718/** Error message constants. */
1719var FUNC_ERROR_TEXT = 'Expected a function';
1720
1721/* Built-in method references for those with the same name as other `lodash` methods. */
1722var nativeMax = Math.max,
1723    nativeMin = Math.min;
1724
1725/**
1726 * Creates a debounced function that delays invoking `func` until after `wait`
1727 * milliseconds have elapsed since the last time the debounced function was
1728 * invoked. The debounced function comes with a `cancel` method to cancel
1729 * delayed `func` invocations and a `flush` method to immediately invoke them.
1730 * Provide `options` to indicate whether `func` should be invoked on the
1731 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
1732 * with the last arguments provided to the debounced function. Subsequent
1733 * calls to the debounced function return the result of the last `func`
1734 * invocation.
1735 *
1736 * **Note:** If `leading` and `trailing` options are `true`, `func` is
1737 * invoked on the trailing edge of the timeout only if the debounced function
1738 * is invoked more than once during the `wait` timeout.
1739 *
1740 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
1741 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
1742 *
1743 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
1744 * for details over the differences between `_.debounce` and `_.throttle`.
1745 *
1746 * @static
1747 * @memberOf _
1748 * @since 0.1.0
1749 * @category Function
1750 * @param {Function} func The function to debounce.
1751 * @param {number} [wait=0] The number of milliseconds to delay.
1752 * @param {Object} [options={}] The options object.
1753 * @param {boolean} [options.leading=false]
1754 *  Specify invoking on the leading edge of the timeout.
1755 * @param {number} [options.maxWait]
1756 *  The maximum time `func` is allowed to be delayed before it's invoked.
1757 * @param {boolean} [options.trailing=true]
1758 *  Specify invoking on the trailing edge of the timeout.
1759 * @returns {Function} Returns the new debounced function.
1760 * @example
1761 *
1762 * // Avoid costly calculations while the window size is in flux.
1763 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
1764 *
1765 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
1766 * jQuery(element).on('click', _.debounce(sendMail, 300, {
1767 *   'leading': true,
1768 *   'trailing': false
1769 * }));
1770 *
1771 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
1772 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
1773 * var source = new EventSource('/stream');
1774 * jQuery(source).on('message', debounced);
1775 *
1776 * // Cancel the trailing debounced invocation.
1777 * jQuery(window).on('popstate', debounced.cancel);
1778 */
1779function debounce(func, wait, options) {
1780  var lastArgs,
1781      lastThis,
1782      maxWait,
1783      result,
1784      timerId,
1785      lastCallTime,
1786      lastInvokeTime = 0,
1787      leading = false,
1788      maxing = false,
1789      trailing = true;
1790
1791  if (typeof func != 'function') {
1792    throw new TypeError(FUNC_ERROR_TEXT);
1793  }
1794  wait = toNumber(wait) || 0;
1795  if (isObject(options)) {
1796    leading = !!options.leading;
1797    maxing = 'maxWait' in options;
1798    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
1799    trailing = 'trailing' in options ? !!options.trailing : trailing;
1800  }
1801
1802  function invokeFunc(time) {
1803    var args = lastArgs,
1804        thisArg = lastThis;
1805
1806    lastArgs = lastThis = undefined;
1807    lastInvokeTime = time;
1808    result = func.apply(thisArg, args);
1809    return result;
1810  }
1811
1812  function leadingEdge(time) {
1813    // Reset any `maxWait` timer.
1814    lastInvokeTime = time;
1815    // Start the timer for the trailing edge.
1816    timerId = setTimeout(timerExpired, wait);
1817    // Invoke the leading edge.
1818    return leading ? invokeFunc(time) : result;
1819  }
1820
1821  function remainingWait(time) {
1822    var timeSinceLastCall = time - lastCallTime,
1823        timeSinceLastInvoke = time - lastInvokeTime,
1824        timeWaiting = wait - timeSinceLastCall;
1825
1826    return maxing
1827      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
1828      : timeWaiting;
1829  }
1830
1831  function shouldInvoke(time) {
1832    var timeSinceLastCall = time - lastCallTime,
1833        timeSinceLastInvoke = time - lastInvokeTime;
1834
1835    // Either this is the first call, activity has stopped and we're at the
1836    // trailing edge, the system time has gone backwards and we're treating
1837    // it as the trailing edge, or we've hit the `maxWait` limit.
1838    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
1839      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
1840  }
1841
1842  function timerExpired() {
1843    var time = now();
1844    if (shouldInvoke(time)) {
1845      return trailingEdge(time);
1846    }
1847    // Restart the timer.
1848    timerId = setTimeout(timerExpired, remainingWait(time));
1849  }
1850
1851  function trailingEdge(time) {
1852    timerId = undefined;
1853
1854    // Only invoke if we have `lastArgs` which means `func` has been
1855    // debounced at least once.
1856    if (trailing && lastArgs) {
1857      return invokeFunc(time);
1858    }
1859    lastArgs = lastThis = undefined;
1860    return result;
1861  }
1862
1863  function cancel() {
1864    if (timerId !== undefined) {
1865      clearTimeout(timerId);
1866    }
1867    lastInvokeTime = 0;
1868    lastArgs = lastCallTime = lastThis = timerId = undefined;
1869  }
1870
1871  function flush() {
1872    return timerId === undefined ? result : trailingEdge(now());
1873  }
1874
1875  function debounced() {
1876    var time = now(),
1877        isInvoking = shouldInvoke(time);
1878
1879    lastArgs = arguments;
1880    lastThis = this;
1881    lastCallTime = time;
1882
1883    if (isInvoking) {
1884      if (timerId === undefined) {
1885        return leadingEdge(lastCallTime);
1886      }
1887      if (maxing) {
1888        // Handle invocations in a tight loop.
1889        clearTimeout(timerId);
1890        timerId = setTimeout(timerExpired, wait);
1891        return invokeFunc(lastCallTime);
1892      }
1893    }
1894    if (timerId === undefined) {
1895      timerId = setTimeout(timerExpired, wait);
1896    }
1897    return result;
1898  }
1899  debounced.cancel = cancel;
1900  debounced.flush = flush;
1901  return debounced;
1902}
1903
1904module.exports = debounce;
1905
1906},{"./isObject":64,"./now":67,"./toNumber":68}],64:[function(require,module,exports){
1907/**
1908 * Checks if `value` is the
1909 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
1910 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1911 *
1912 * @static
1913 * @memberOf _
1914 * @since 0.1.0
1915 * @category Lang
1916 * @param {*} value The value to check.
1917 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1918 * @example
1919 *
1920 * _.isObject({});
1921 * // => true
1922 *
1923 * _.isObject([1, 2, 3]);
1924 * // => true
1925 *
1926 * _.isObject(_.noop);
1927 * // => true
1928 *
1929 * _.isObject(null);
1930 * // => false
1931 */
1932function isObject(value) {
1933  var type = typeof value;
1934  return value != null && (type == 'object' || type == 'function');
1935}
1936
1937module.exports = isObject;
1938
1939},{}],65:[function(require,module,exports){
1940/**
1941 * Checks if `value` is object-like. A value is object-like if it's not `null`
1942 * and has a `typeof` result of "object".
1943 *
1944 * @static
1945 * @memberOf _
1946 * @since 4.0.0
1947 * @category Lang
1948 * @param {*} value The value to check.
1949 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1950 * @example
1951 *
1952 * _.isObjectLike({});
1953 * // => true
1954 *
1955 * _.isObjectLike([1, 2, 3]);
1956 * // => true
1957 *
1958 * _.isObjectLike(_.noop);
1959 * // => false
1960 *
1961 * _.isObjectLike(null);
1962 * // => false
1963 */
1964function isObjectLike(value) {
1965  return value != null && typeof value == 'object';
1966}
1967
1968module.exports = isObjectLike;
1969
1970},{}],66:[function(require,module,exports){
1971var baseGetTag = require('./_baseGetTag'),
1972    isObjectLike = require('./isObjectLike');
1973
1974/** `Object#toString` result references. */
1975var symbolTag = '[object Symbol]';
1976
1977/**
1978 * Checks if `value` is classified as a `Symbol` primitive or object.
1979 *
1980 * @static
1981 * @memberOf _
1982 * @since 4.0.0
1983 * @category Lang
1984 * @param {*} value The value to check.
1985 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
1986 * @example
1987 *
1988 * _.isSymbol(Symbol.iterator);
1989 * // => true
1990 *
1991 * _.isSymbol('abc');
1992 * // => false
1993 */
1994function isSymbol(value) {
1995  return typeof value == 'symbol' ||
1996    (isObjectLike(value) && baseGetTag(value) == symbolTag);
1997}
1998
1999module.exports = isSymbol;
2000
2001},{"./_baseGetTag":56,"./isObjectLike":65}],67:[function(require,module,exports){
2002var root = require('./_root');
2003
2004/**
2005 * Gets the timestamp of the number of milliseconds that have elapsed since
2006 * the Unix epoch (1 January 1970 00:00:00 UTC).
2007 *
2008 * @static
2009 * @memberOf _
2010 * @since 2.4.0
2011 * @category Date
2012 * @returns {number} Returns the timestamp.
2013 * @example
2014 *
2015 * _.defer(function(stamp) {
2016 *   console.log(_.now() - stamp);
2017 * }, _.now());
2018 * // => Logs the number of milliseconds it took for the deferred invocation.
2019 */
2020var now = function() {
2021  return root.Date.now();
2022};
2023
2024module.exports = now;
2025
2026},{"./_root":61}],68:[function(require,module,exports){
2027var baseTrim = require('./_baseTrim'),
2028    isObject = require('./isObject'),
2029    isSymbol = require('./isSymbol');
2030
2031/** Used as references for various `Number` constants. */
2032var NAN = 0 / 0;
2033
2034/** Used to detect bad signed hexadecimal string values. */
2035var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
2036
2037/** Used to detect binary string values. */
2038var reIsBinary = /^0b[01]+$/i;
2039
2040/** Used to detect octal string values. */
2041var reIsOctal = /^0o[0-7]+$/i;
2042
2043/** Built-in method references without a dependency on `root`. */
2044var freeParseInt = parseInt;
2045
2046/**
2047 * Converts `value` to a number.
2048 *
2049 * @static
2050 * @memberOf _
2051 * @since 4.0.0
2052 * @category Lang
2053 * @param {*} value The value to process.
2054 * @returns {number} Returns the number.
2055 * @example
2056 *
2057 * _.toNumber(3.2);
2058 * // => 3.2
2059 *
2060 * _.toNumber(Number.MIN_VALUE);
2061 * // => 5e-324
2062 *
2063 * _.toNumber(Infinity);
2064 * // => Infinity
2065 *
2066 * _.toNumber('3.2');
2067 * // => 3.2
2068 */
2069function toNumber(value) {
2070  if (typeof value == 'number') {
2071    return value;
2072  }
2073  if (isSymbol(value)) {
2074    return NAN;
2075  }
2076  if (isObject(value)) {
2077    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
2078    value = isObject(other) ? (other + '') : other;
2079  }
2080  if (typeof value != 'string') {
2081    return value === 0 ? value : +value;
2082  }
2083  value = baseTrim(value);
2084  var isBinary = reIsBinary.test(value);
2085  return (isBinary || reIsOctal.test(value))
2086    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
2087    : (reIsBadHex.test(value) ? NAN : +value);
2088}
2089
2090module.exports = toNumber;
2091
2092},{"./_baseTrim":57,"./isObject":64,"./isSymbol":66}],69:[function(require,module,exports){
2093"use strict";
2094
2095Object.defineProperty(exports, "__esModule", {
2096  value: true
2097});
2098exports.ATTRIBUTION_EVENT = void 0;
2099exports.getChannel = getChannel;
2100exports.initAttribution = initAttribution;
2101var _ilmn = require("ilmn");
2102var _domainValues = require("./domain-values");
2103/** Custom event name for attribution data. Listen on document to push to external layers (e.g. analytics). */
2104var ATTRIBUTION_EVENT = exports.ATTRIBUTION_EVENT = 'illumina:attribution';
2105function getChannel(utmMedium, referrerDomain, scid, media) {
2106  if (utmMedium && _domainValues.utmValues[utmMedium]) {
2107    return _domainValues.utmValues[utmMedium];
2108  } else if (_domainValues.organicSocialDomains.has(referrerDomain)) {
2109    return 'Organic Social Media';
2110  } else if (_domainValues.organicSearchDomains.has(referrerDomain)) {
2111    return 'Natural Search';
2112  } else if (scid || media) {
2113    return 'Other Campaigns';
2114  }
2115  return 'Direct';
2116}
2117function setAttributionCookie() {
2118  try {
2119    var userOptedOutPerformanceCookies = window.OnetrustActiveGroups.indexOf('C0002') === -1;
2120    if (userOptedOutPerformanceCookies) {
2121      return;
2122    }
2123    var existingCookie = (0, _ilmn.getCookie)('ILMNAttribution');
2124    if (existingCookie !== null && existingCookie !== void 0 && existingCookie.length) {
2125      return;
2126    }
2127    var urlParams = new URLSearchParams(window.location.search);
2128    var utmMedium = urlParams.get('utm_medium');
2129    var scid = urlParams.get('scid');
2130    var media = urlParams.get('media');
2131    var referrerPath = '';
2132    var referrerDomain = '';
2133    if (document.referrer) {
2134      var referrerUrl = new URL(document.referrer);
2135      referrerPath = "".concat(referrerUrl.origin).concat(referrerUrl.pathname);
2136      referrerDomain = referrerUrl.hostname.replace('www.', '');
2137    }
2138    var channel = getChannel(utmMedium, referrerDomain, scid, media);
2139    var encodedChannel = encodeURIComponent(channel).substring(0, _domainValues.characterLimit);
2140    var encodedReferrer = encodeURIComponent(referrerPath).substring(0, _domainValues.characterLimit);
2141    var cookieValue = "".concat(encodedChannel, "|").concat(encodedReferrer);
2142    var cookieDomain = (0, _ilmn.getCookieDomain)();
2143    document.cookie = "ILMNAttribution=".concat(cookieValue, "; path=/;domain=").concat(cookieDomain);
2144    var attributionData = {
2145      channel: channel,
2146      referrerPath: referrerPath || null,
2147      referrerDomain: referrerDomain || null,
2148      cookieValue: cookieValue
2149    };
2150    var event = new CustomEvent(ATTRIBUTION_EVENT, {
2151      detail: attributionData,
2152      bubbles: true
2153    });
2154    document.dispatchEvent(event);
2155  } catch (_unused) {
2156    console.warn('Unable to set referrer attribution cookie');
2157  }
2158}
2159function initAttribution() {
2160  if (!window.CookieConsentLoaded) {
2161    document.addEventListener('CookieConsentLoaded', function () {
2162      setAttributionCookie();
2163    });
2164  } else {
2165    setAttributionCookie();
2166  }
2167}
2168
2169// potential future state: region specific UTM handling (e.g. Baidu for China)
2170
2171},{"./domain-values":70,"ilmn":30}],70:[function(require,module,exports){
2172"use strict";
2173
2174Object.defineProperty(exports, "__esModule", {
2175  value: true
2176});
2177exports.utmValues = exports.organicSocialDomains = exports.organicSearchDomains = exports.characterLimit = void 0;
2178var characterLimit = exports.characterLimit = 255;
2179var organicSocialDomains = exports.organicSocialDomains = new Set(['12seconds.tv', '2ch.net', '4travel.jp', '51.com', 'advogato.org', 'ameba.jp', 'anobii.com', 'asmallworld.net', 'backtype.com', 'badoo.com', 'bebo.com', 'bigadda.com', 'bigtent.com', 'biip.no', 'blackplanet.com', 'blog.seesaa.jp', 'blogspot.com', 'blogster.com', 'blomotion.jp', 'bolt.com', 'brightkite.com', 'buzznet.com', 'cafemom.com', 'care2.com', 'chiebukuro.yahoo.co.jp', 'classmates.com', 'cloob.com', 'collegeblender.com', 'cyworld.co.kr', 'cyworld.com.cn', 'dailymotion.com', 'delicious.com', 'deviantart.com', 'digg.com', 'diigo.com', 'disqus.com', 'douban.com', 'draugiem.lv', 'facebook.com', 'faceparty.com', 'fc2.com', 'flickr.com', 'flixster.com', 'fotolog.com', 'foursquare.com', 'friendfeed.com', 'friendsreunited.com', 'friendster.com', 'fubar.com', 'gaiaonline.com', 'geni.com', 'goodreads.com', 'gree.jp', 'grono.net', 'habbo.com', 'hatena.ne.jp', 'hi5.com', 'hotnews.infoseek.co.jp', 'hyves.nlibibo.comidenti.ca', 'identi.ca', 'imeem.com', 'instagram.com', 'intensedebate.com', 'irc-galleria.net', 'iwiw.hu', 'jaiku.com', 'jiayuan.com', 'jp.myspace.com', 'kaixin001.com', 'kaixin002.com', 'kakaku.com', 'kanshin.com', 'kozocom.com', 'last.fm', 'line.me', 'linkedin.com', 'livejournal.com', 'matome.naver.jp', 'me2day.net', 'meetup.com', 'mister-wong.com', 'mixi.jp', 'mixx.com', 'mouthshut.com', 'multiply.com', 'myheritage.com', 'mylife.com', 'myspace.com', 'myyearbook.com', 'nasza-klasa.pl', 'naver.com', 'naver.jp', 'netlog.com', 'nettby.no', 'netvibes.com', 'nicovideo.jp', 'ning.com', 'odnoklassniki.ru', 'okwave.jp', 'orkut.com', 'pakila.jp', 'pengyou.com', 'photobucket.com', 'pinterest.com', 'plaxo.com', 'plurk.com', 'plus.google.com', 'qzon.qq.com', 'reddit.com', 'renren.com', 'sina.com', 'skyrock.com', 'slideshare.net', 'smcb.jp', 'smugmug.com', 'sonico.com', 'studivz.net', 'stumbleupon.com', 't.163.com', 't.co', 't.hexun.com', 't.ifeng.com', 't.people.com.cn', 't.qq.com', 't.sina.com.cn', 't.sohu.com', 'tabelog.com', 'tagged.com', 'taringa.net', 'tencent.com', 'thefancy.com', 'tianya.cn', 'tripit.com', 'trombi.com', 'trytrend.jp', 'tuenti.com', 'tumblr.com', 'twine.com', 'twitter.com', 'uhuru.jp', 'viadeo.comvimeo.com', 'vimeo.com', 'vk.com', 'vox.com', 'wayn.com', 'wechat.com', 'weibo.com', 'weourfamily.com', 'wer-kennt-wen.de', 'wordpress.com', 'xanga.com', 'xing.com', 'yammer.com', 'yaplog.jp', 'yelp.com', 'youku.com', 'youtube.com', 'yozm.daum.net', 'yuku.com', 'zhihu.com', 'zooomr.com', 'glassdoor.com', 'glassdoor.ca', 'glassdoor.co.uk']);
2180var organicSearchDomains = exports.organicSearchDomains = new Set(['360.cn', 'alice.com', 'aol.com', 'ask.com', 'search.auone.jp', 'isearch.avg.com', 'search.babylon.com', 'baidu.com', 'biglobe.ne.jp', 'bing.com', 'search.centrum.cz', 'cnn.com/SEARCH', 'search.comcast.net', 'search.conduit.com', 'daum.net', 'dogpile.com', 'duckduckgo.com', 'ecosia.org', 'eniro.se', 'firmy.cz', 'globo.com/busca', 'go.mail.ru', 'google.com', 'google.co.uk', 'google.de', 'google.fr', 'google.es', 'google.it', 'google.nl', 'google.com.au', 'google.ca', 'google.co.jp', 'google.com.br', 'google.com.mx', 'google.co.in', 'google.com.sg', 'google.com.hk', 'google.ie', 'google.ch', 'google.at', 'google.be', 'google.dk', 'google.fi', 'google.no', 'google.se', 'google.pt', 'google.pl', 'google.cz', 'google.gr', 'google.hu', 'google.co.za', 'google.com.tr', 'google.com.ar', 'google.com.pe', 'google.com.co', 'google.com.ve', 'google.com.ec', 'google.com.uy', 'google.com.bo', 'google.com.py', 'google.com.gt', 'google.com.do', 'google.com.pa', 'google.com.cr', 'google.com.ni', 'google.com.sv', 'google.com.hn', 'google.com.pr', 'google.com.ph', 'google.com.my', 'google.com.vn', 'google.co.th', 'google.co.kr', 'google.com.tw', 'google.co.id', 'google.com.sa', 'google.ae', 'google.co.il', 'google.com.eg', 'google.com.qa', 'google.com.kw', 'google.com.om', 'google.com.bh', 'google.com.lb', 'google.com.jo', 'google.com.cy', 'google.com.mt', 'google.com.ma', 'google.com.tn', 'google.com.dz', 'google.com.ng', 'google.com.gh', 'google.com.ke', 'google.com.et', 'google.com.zm', 'google.com.mz', 'google.com.n
2180a', 'google.com.bw', 'google.com.sz', 'google.com.ls', 'search.incredimail.com', 'kvasir.no', 'lycos.com', 'lycos.co.uk', 'lycos.de', 'lycos.fr', 'lycos.es', 'lycos.it', 'lycos.nl', 'lycos.ch', 'lycos.at', 'lycos.pt', 'lycos.be', 'lycos.se', 'lycos.dk', 'lycos.fi', 'lycos.no', 'msn.com', 'money.msn.com', 'local.msn.com', 'najdi.si', 'naver.com', 'szukaj.onet.pl', 'qwant.com', 'rakuten.co.jp', 'rambler.ru', 'search-results.com', 'search.smt.docomo.ne.jp', 'seznam.cz', 'so.com/s', 'sogou.com', 'startsiden.no/sok', 'buscador.terra.com.br', 'search.tut.by', 'search.ukr.net', 'search.virgilio.it', 'yahoo.com', 'yahoo.co.jp', 'yahoo.co.uk', 'yahoo.de', 'yahoo.fr', 'yahoo.it', 'yahoo.es', 'yahoo.ca', 'yahoo.com.au', 'yahoo.com.sg', 'yahoo.com.hk', 'yahoo.com.tw', 'yahoo.co.in', 'yahoo.com.br', 'yahoo.com.mx', 'yandex.com', 'yandex.ru']);
2181var utmValues = exports.utmValues = {
2182  'paidsearch': 'Paid Search',
2183  'paidsocial': 'Paid Social Media',
2184  'display': 'Paid Display (Banner)',
2185  'email': 'Email',
2186  'affiliate': 'Affiliates',
2187  'referral': 'Referring Domains'
2188};
2189
2190},{}],71:[function(require,module,exports){
2191"use strict";
2192
2193var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2194Object.defineProperty(exports, "__esModule", {
2195  value: true
2196});
2197exports.default = void 0;
2198var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
2199var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
2200var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
2201var _ilmn = require("ilmn");
2202var _clearCookie = _interopRequireDefault(require("ilmn/clearCookie"));
2203var _global = require("../global");
2204var _user = _interopRequireDefault(require("./user"));
2205function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
2206function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
2207function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2208function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2209function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2210var stripXssiPrefix = function stripXssiPrefix() {
2211  var responseText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
2212  return responseText.replace(/^\)\]\}',?\s*/, '');
2213};
2214var ecommerce = {
2215  userProfileKey: 'il_usprl',
2216  isLoggedIn: false,
2217  config: {},
2218  isFetchingConfig: false,
2219  initialized: false,
2220  globalNavElement: document.getElementById('global-nav'),
2221  ribbonElement: document.querySelector('ilmn-global-ribbon'),
2222  pricingLoaded: null,
2223  pricingFailed: null,
2224  waitForPricingLoad: null,
2225  isBasicUser: false,
2226  init: function () {
2227    var _init = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
2228      return _regenerator.default.wrap(function (_context) {
2229        while (1) switch (_context.prev = _context.next) {
2230          case 0:
2231            if (!(ecommerce.globalNavElement && !ecommerce.initialized)) {
2232              _context.next = 1;
2233              break;
2234            }
2235            ecommerce.initialized = true;
2236            ecommerce.waitForPricingLoad = new Promise(function (resolve, reject) {
2237              ecommerce.pricingLoaded = resolve;
2238              ecommerce.pricingFailed = reject;
2239            });
2240            return _context.abrupt("return", ecommerce.getECommerceConfig().then(function (config) {
2241              if (!ecommerce.isEmptyObject(config)) {
2242                ecommerce.ecommerceStatus(config);
2243                ecommerce.removeXSRFTokenOnUserTimeOut(config);
2244                return _user.default.loadUserProfile(ecommerce);
2245              } else {
2246                return ecommerce.initialized;
2247              }
2248            }));
2249          case 1:
2250            return _context.abrupt("return", ecommerce.initialized);
2251          case 2:
2252          case "end":
2253            return _context.stop();
2254        }
2255      }, _callee);
2256    }));
2257    function init() {
2258      return _init.apply(this, arguments);
2259    }
2260    return init;
2261  }(),
2262  setLoggedInState: function setLoggedInState(value) {
2263    ecommerce.isLoggedIn = value;
2264    window.localStorage.setItem('loggedInStatus', true);
2265  },
2266  setLoggedOutState: function setLoggedOutState() {
2267    window.localStorage.setItem('loggedInStatus', false);
2268  },
2269  getECommerceConfig: function () {
2270    var _getECommerceConfig = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
2271      var _ecommerce$globalNavE, _ecommerce$globalNavE2, url, dataNative, dataHost;
2272      return _regenerator.default.wrap(function (_context2) {
2273        while (1) switch (_context2.prev = _context2.next) {
2274          case 0:
2275            ecommerce.globalNavElement = document.getElementById('global-nav');
2276            // if config object already populated, return it immediately
2277            if (ecommerce.isEmptyObject(ecommerce.config)) {
2278              _context2.next = 1;
2279              break;
2280            }
2281            return _context2.abrupt("return", ecommerce.config);
2282          case 1:
2283            if (!ecommerce.isFetchingConfig) {
2284              _context2.next = 2;
2285              break;
2286            }
2287            return _context2.abrupt("return", ecommerce.configFetch);
2288          case 2:
2289            if (!ecommerce.isEmptyObject(ecommerce.config)) {
2290              _context2.next = 4;
2291              break;
2292            }
2293            url = '';
2294            dataNative = ((_ecommerce$globalNavE = ecommerce.globalNavElement) === null || _ecommerce$globalNavE === void 0 ? void 0 : _ecommerce$globalNavE.getAttribute('data-native')) === 'true';
2295            dataHost = (_ecommerce$globalNavE2 = ecommerce.globalNavElement) === null || _ecommerce$globalNavE2 === void 0 ? void 0 : _ecommerce$globalNavE2.getAttribute('data-host');
2296            if (dataNative) {
2297              url = '/bin/aem/ecommerceconfig';
2298            } else if (dataHost) {
2299              url = "".concat(dataHost, "/bin/aem/ecommerceconfig");
2300            }
2301            if (!url.length) {
2302              _context2.next = 3;
2303              break;
2304            }
2305            ecommerce.isFetchingConfig = true;
2306            ecommerce.configFetch = ecommerce.getData(url).then(function (response) {
2307              var responseData = response.data;
2308              ecommerce.isFetchingConfig = false;
2309              try {
2310                if (responseData !== null && responseData !== void 0 && responseData.commerceHttpsProtocolHost) {
2311                  ecommerce.config = responseData;
2312                  return responseData;
2313                }
2314              } catch (error) {
2315                console.debug('Unable to parse commerce config');
2316              }
2317              return {};
2318            }).catch(function (error) {
2319              console.debug('Unable to get commerce config');
2320              ecommerce.isFetchingConfig = false;
2321              return {};
2322            });
2323            return _context2.abrupt("return", ecommerce.configFetch);
2324          case 3:
2325            return _context2.abrupt("return", {});
2326          case 4:
2327            return _context2.abrupt("return", {});
2328          case 5:
2329          case "end":
2330            return _context2.stop();
2331        }
2332      }, _callee2);
2333    }));
2334    function getECommerceConfig() {
2335      return _getECommerceConfig.apply(this, arguments);
2336    }
2337    return getECommerceConfig;
2338  }(),
2339  formatPrice: function formatPrice(price) {
2340    if (price && price !== 'NaN' && price !== 'null') {
2341      var locale = (0, _ilmn.getLocale)().replace(/_/g, '-');
2342      var currencyCode = ecommerce.currencyCode || 'USD';
2343      var formattedPrice = new Intl.NumberFormat(locale, {
2344        style: 'currency',
2345        currency: currencyCode
2346      }).format(price);
2347      if (currencyCode === 'TWD') {
2348        formattedPrice = formattedPrice.replace('$', 'NT$');
2349      }
2350      return formattedPrice;
2351    } else {
2352      return '';
2353    }
2354  },
2355  getToken: function () {
2356    var _getToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
2357      var xsrfTokenCookie;
2358      return _regenerator.default.wrap(function (_context3) {
2359        while (1) switch (_context3.prev = _context3.next) {
2360          case 0:
2361            if (!ecommerce.isLoggedIn) {
2362              _context3.next = 2;
2363              break;
2364            }
2365            xsrfTokenCookie = (0, _ilmn.getCookie)('xsrf-token');
2366            if (!xsrfTokenCookie) {
2367              _context3.next = 1;
2368              break;
2369            }
2370            return _context3.abrupt("return", xsrfTokenCookie);
2371          case 1:
2372            return _context3.abrupt("return", _user.default.userProfile(ecommerce).then(function (response) {
2373              return (0, _ilmn.getCookie)('xsrf-token');
2374            }));
2375          case 2:
2376            return _context3.abrupt("return", '');
2377          case 3:
2378          case "end":
2379            return _context3.stop();
2380        }
2381      }, _callee3);
2382    }));
2383    function getToken() {
2384      return _getToken.apply(this, arguments);
2385    }
2386    return getToken;
2387  }(),
2388  getFromLocalStorage: function () {
2389    var _getFromLocalStorage = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(key, timer) {
2390      var localStorageValue;
2391      return _regenerator.default.wrap(function (_context4) {
2392        while (1) switch (_context4.prev = _context4.next) {
2393          case 0:
2394            localStorageValue = localStorage.getItem(key);
2395            if (localStorageValue) {
2396              _context4.next = 1;
2397              break;
2398            }
2399            return _context4.abrupt("return", setTimeout(ecommerce.getFromLocalStorage.bind(null, key), 250));
2400          case 1:
2401            clearTimeout(timer);
2402            return _context4.abrupt("return", localStorageValue);
2403          case 2:
2404          case "end":
2405            return _context4.stop();
2406        }
2407      }, _callee4);
2408    }));
2409    function getFromLocalStorage(_x, _x2) {
2410      return _getFromLocalStorage.apply(this, arguments);
2411    }
2412    return getFromLocalStorage;
2413  }(),
2414  ecommerceStatus: function ecommerceStatus(config) {
2415    if (ecommerce.isEmptyObject(config)) {
2416      return;
2417    }
2418    // handle ribbon log out event
2419    window.ribbonLogoutUrl = config.logoutUrl;
2420    if (ecommerce.ribbonElement) {
2421      ecommerce.ribbonElement.addEventListener('userSignOut', function (event) {
2422        // always redirect to home page when logging out on AEM/Storefront
2423        window.location = "".concat(window.location.protocol, "//").concat(window.location.hostname.indexOf('my.') > -1 ? 'www.illumina.com' : window.location.hostname);
2424      });
2425    }
2426    ecommerce.loadCart(config);
2427  },
2428  removeXSRFTokenOnUserTimeOut: function removeXSRFTokenOnUserTimeOut(config) {
2429    if (ecommerce.ribbonElement) {
2430      ecommerce.ribbonElement.addEventListener('userTimeout', function (event) {
2431        var xsrfCookie = (0, _ilmn.getCookie)('xsrf-token');
2432        if (xsrfCookie) {
2433          (0, _clearCookie.default)('xsrf-token', null);
2434        }
2435      });
2436    }
2437  },
2438  loadCart: function loadCart(config) {
2439    var refreshMiniCartEvent = new Event('refreshMiniCart');
2440    window.dispatchEvent(refreshMiniCartEvent);
2441    (0, _ilmn.setCookie)('returnUrl', window.location.href, 365, null);
2442  },
2443  goToCart: function goToCart() {
2444    var _ecommerce$config, _ecommerce$config2;
2445    var targetCookie = (0, _ilmn.getCookie)('returnUrl');
2446    if (targetCookie.length && (_ecommerce$config = ecommerce.config) !== null && _ecommerce$config !== void 0 && _ecommerce$config.cartUrl) {
2447      (0, _ilmn.setCookie)('returnUrl', ecommerce.config.cartUrl, 365, null);
2448    }
2449    if ((_ecommerce$config2 = ecommerce.config) !== null && _ecommerce$config2 !== void 0 && _ecommerce$config2.checkOutUrl) {
2450      window.location.href = ecommerce.config.checkOutUrl;
2451    }
2452  },
2453  addToCart: function () {
2454    var _addToCart = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(callType, payload) {
2455      return _regenerator.default.wrap(function (_context5) {
2456        while (1) switch (_context5.prev = _context5.next) {
2457          case 0:
2458            return _context5.abrupt("return", ecommerce.getECommerceConfig().then(function (config) {
2459              return ecommerce.getToken().then(function (token) {
2460                return _user.default.getUserCartId(ecommerce).then(function (cartId) {
2461                  var psTokenCookie = (0, _ilmn.getCookie)('psToken');
2462                  var epGuestTokenCookie = (0, _ilmn.getCookie)('ep-guest-token');
2463                  var addToCartAPIUrl = ecommerce.getAddToCartAPIUrl(config, psTokenCookie, callType, cartId);
2464                  var headers = _objectSpread(_objectSpread(_objectSpread({
2465                    'Content-Type': 'application/json'
2466                  }, psTokenCookie ? {
2467                    'psToken': psTokenCookie
2468                  } : {}), !psTokenCookie && epGuestTokenCookie ? {
2469                    'ep-guest-token': epGuestTokenCookie
2470                  } : {}), token ? {
2471                    'x-xsrf-token': token
2472                  } : {});
2473                  return ecommerce.setData(addToCartAPIUrl, headers, payload).then(function (response) {
2474                    var responseObject = (response === null || response === void 0 ? void 0 : response.data) || {};
2475                    try {
2476                      responseObject.status = response.status;
2477                      responseObject.cartId = cartId;
2478                    } catch (error) {
2479                      console.debug('Failed to add products to the cart');
2480                    }
2481                    return responseObject;
2482                  });
2483                });
2484              });
2485            }));
2486          case 1:
2487          case "end":
2488            return _context5.stop();
2489        }
2490      }, _callee5);
2491    }));
2492    function addToCart(_x3, _x4) {
2493      return _addToCart.apply(this, arguments);
2494    }
2495    return addToCart;
2496  }(),
2497  getAddToCartAPIUrl: function getAddToCartAPIUrl(config, psTokenCookie, callType, cartId) {
2498    var _config$addToCart;
2499    var protocolHost = config.commerceHttpsProtocolHost;
2500    var url = "".concat(protocolHost, "/public").concat((_config$addToCart = config.addToCart) === null || _config$addToCart === void 0 ? void 0 : _config$addToCart.replace('{cartId}', cartId));
2501    if (callType === 'customAddToCart') {
2502      url = protocolHost + config.addCustomProductsToCart;
2503    } else if (psTokenCookie) {
2504      url = protocolHost + config.addToCart.replace('{cartId}', cartId);
2505    }
2506    return url;
2507  },
2508  getRegionLocale: function getRegionLocale() {
2509    var regionTag = document.querySelector('meta[name="region"]');
2510    var localeTag = document.querySelector('meta[name="locale"]');
2511    if (regionTag && localeTag) {
2512      var region = "/".concat(regionTag.getAttribute('content'));
2513      var locale = "/".concat(localeTag.getAttribute('content'));
2514      return region + locale;
2515    } else {
2516      return '/amr/en_US';
2517    }
2518  },
2519  findProducts: function () {
2520    var _findProducts = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(skus) {
2521      return _regenerator.default.wrap(function (_context6) {
2522        while (1) switch (_context6.prev = _context6.next) {
2523          case 0:
2524            if (!ecommerce.isLoggedIn) {
2525              _context6.next = 1;
2526              break;
2527            }
2528            return _context6.abrupt("return", ecommerce.findProductsSignedIn(skus));
2529          case 1:
2530            return _context6.abrupt("return", ecommerce.findProductsSignedOut(skus));
2531          case 2:
2532          case "end":
2533            return _context6.stop();
2534        }
2535      }, _callee6);
2536    }));
2537    function findProducts(_x5) {
2538      return _findProducts.apply(this, arguments);
2539    }
2540    return findProducts;
2541  }(),
2542  findProductsSignedOut: function () {
2543    var _findProductsSignedOut = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(skus) {
2544      var productIds, currentPagePath, locale, productsAPIUrl;
2545      return _regenerator.default.wrap(function (_context7) {
2546        while (1) switch (_context7.prev = _context7.next) {
2547          case 0:
2548            if (!(skus && skus.length)) {
2549              _context7.next = 1;
2550              break;
2551            }
2552            productIds = skus.join(',');
2553            currentPagePath = window.location.pathname.replace('.html', '');
2554            locale = ecommerce.getRegionLocale();
2555            productsAPIUrl = "".concat(currentPagePath, ".productsbyid.json?productIds=").concat(productIds, "&locale=").concat(locale);
2556            return _context7.abrupt("return", ecommerce.getData(productsAPIUrl).then(function (response) {
2557              ecommerce.currencyCode = ecommerce.getCurrencyCodeFromProductLookup(response);
2558              return response || {};
2559            }));
2560          case 1:
2561            return _context7.abrupt("return", {});
2562          case 2:
2563          case "end":
2564            return _context7.stop();
2565        }
2566      }, _callee7);
2567    }));
2568    function findProductsSignedOut(_x6) {
2569      return _findProductsSignedOut.apply(this, arguments);
2570    }
2571    return findProductsSignedOut;
2572  }(),
2573  findProductsSignedIn: function () {
2574    var _findProductsSignedIn = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(skus) {
2575      return _regenerator.default.wrap(function (_context8) {
2576        while (1) switch (_context8.prev = _context8.next) {
2577          case 0:
2578            return _context8.abrupt("return", ecommerce.getECommerceConfig().then(function (ecommerceConfig) {
2579              var productLookupsEndpoint = '/bin/myillumina/v1/product/lookups';
2580              if (productLookupsEndpoint) {
2581                return ecommerce.getToken().then(function (token) {
2582                  var psTokenCookie = (0, _ilmn.getCookie)('psToken');
2583                  var epGuestTokenCookie = (0, _ilmn.getCookie)('ep-guest-token');
2584                  var priceAPIUrl = "".concat(productLookupsEndpoint);
2585                  var productCodesData = JSON.stringify({
2586                    productId: skus,
2587                    locale: ecommerce.getRegionLocale()
2588                  });
2589                  var headers = _objectSpread(_objectSpread(_objectSpread({
2590                    'Content-Type': 'application/json'
2591                  }, psTokenCookie ? {
2592                    'psToken': psTokenCookie
2593                  } : {}), epGuestTokenCookie ? {
2594                    'ep-guest-token': epGuestTokenCookie
2595                  } : {}), {}, {
2596                    'x-xsrf-token': token
2597                  });
2598                  return ecommerce.setData(priceAPIUrl, headers, productC
2598odesData).then(function (response) {
2599                    ecommerce.currencyCode = ecommerce.getCurrencyCodeFromProductLookup(response);
2600                    return response || {};
2601                  });
2602                });
2603              } else {
2604                return {};
2605              }
2606            }));
2607          case 1:
2608          case "end":
2609            return _context8.stop();
2610        }
2611      }, _callee8);
2612    }));
2613    function findProductsSignedIn(_x7) {
2614      return _findProductsSignedIn.apply(this, arguments);
2615    }
2616    return findProductsSignedIn;
2617  }(),
2618  getCurrencyCodeFromProductLookup: function getCurrencyCodeFromProductLookup(response) {
2619    var _response$data;
2620    var currencyCode = 'USD';
2621    var responseProducts = response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.products;
2622    if (responseProducts) {
2623      var _iterator = _createForOfIteratorHelper(responseProducts),
2624        _step;
2625      try {
2626        for (_iterator.s(); !(_step = _iterator.n()).done;) {
2627          var product = _step.value;
2628          if (product !== null && product !== void 0 && product.currencyCode) {
2629            currencyCode = product.currencyCode;
2630            break;
2631          }
2632        }
2633      } catch (err) {
2634        _iterator.e(err);
2635      } finally {
2636        _iterator.f();
2637      }
2638    }
2639    return currencyCode;
2640  },
2641  findCustomProducts: function () {
2642    var _findCustomProducts = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(projectIds) {
2643      return _regenerator.default.wrap(function (_context9) {
2644        while (1) switch (_context9.prev = _context9.next) {
2645          case 0:
2646            return _context9.abrupt("return", ecommerce.getECommerceConfig().then(function (ecommerceConfig) {
2647              if (ecommerceConfig.getCustomProducts) {
2648                var psTokenCookie = (0, _ilmn.getCookie)('psToken');
2649                var priceEndPoint = ecommerceConfig.getCustomProducts;
2650                if ((projectIds === null || projectIds === void 0 ? void 0 : projectIds.length) > 0) {
2651                  var priceAPIUrl = priceEndPoint.replace(/<project_id>/, projectIds.join(","));
2652                  var headers = _objectSpread({
2653                    'Content-Type': 'application/json'
2654                  }, psTokenCookie ? {
2655                    'psToken': psTokenCookie
2656                  } : {});
2657                  if (priceAPIUrl.length) {
2658                    return ecommerce.getData(priceAPIUrl, headers).then(function (response) {
2659                      var respObj = response === null || response === void 0 ? void 0 : response.data;
2660                      if (respObj !== null && respObj !== void 0 && respObj.length) {
2661                        var products = [];
2662                        respObj.forEach(function (project) {
2663                          var _project$Products;
2664                          if (project !== null && project !== void 0 && (_project$Products = project.Products) !== null && _project$Products !== void 0 && _project$Products.length) {
2665                            var vcs = [];
2666                            project.Products[0].ConfigurationItems.forEach(function (vc) {
2667                              return vcs.push({
2668                                'Key': vc.Key,
2669                                'Value': vc.Value
2670                              });
2671                            });
2672                            products.push({
2673                              'ConfigurationItems': vcs,
2674                              'AccountID': null,
2675                              'Price': project.Products[0].Price,
2676                              'BaseSpace': 'N',
2677                              'Quantity': project.Products[0].Quantity,
2678                              'ConfigurationName': project.Products[0].ConfigurationName,
2679                              'CatalogId': project.Products[0].CatalogId,
2680                              'ConfigurationId': project.ConfigurationId,
2681                              'IsReadOnly': project.Products[0].Mandatory,
2682                              'CurrencySymbol': project.Products[0].CurrencySymbol,
2683                              'Errors': project.Errors
2684                            });
2685                          }
2686                        });
2687                        return products;
2688                      } else {
2689                        return {};
2690                      }
2691                    });
2692                  } else {
2693                    return {};
2694                  }
2695                } else {
2696                  return {};
2697                }
2698              } else {
2699                return {};
2700              }
2701            }));
2702          case 1:
2703          case "end":
2704            return _context9.stop();
2705        }
2706      }, _callee9);
2707    }));
2708    function findCustomProducts(_x8) {
2709      return _findCustomProducts.apply(this, arguments);
2710    }
2711    return findCustomProducts;
2712  }(),
2713  // TODO: perhaps move get/set data helpers to a separate file for reusability
2714  getData: function () {
2715    var _getData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(url, headers) {
2716      var options;
2717      return _regenerator.default.wrap(function (_context0) {
2718        while (1) switch (_context0.prev = _context0.next) {
2719          case 0:
2720            if (!(url !== null && url !== void 0 && url.length)) {
2721              _context0.next = 1;
2722              break;
2723            }
2724            options = {
2725              method: 'GET'
2726            };
2727            if (!ecommerce.isEmptyObject(headers)) {
2728              options.headers = headers;
2729            }
2730            return _context0.abrupt("return", fetch(url, options).then(function (response) {
2731              return response.text().then(function (text) {
2732                var json = (0, _global.safeJsonParse)(stripXssiPrefix(text));
2733                var responseObject = {
2734                  'headers': response.headers,
2735                  'status': response.status,
2736                  'data': json
2737                };
2738                return responseObject;
2739              });
2740            }).catch(function (error) {
2741              console.log(error);
2742              return {};
2743            }));
2744          case 1:
2745            return _context0.abrupt("return", 'no url passed');
2746          case 2:
2747          case "end":
2748            return _context0.stop();
2749        }
2750      }, _callee0);
2751    }));
2752    function getData(_x9, _x0) {
2753      return _getData.apply(this, arguments);
2754    }
2755    return getData;
2756  }(),
2757  setData: function () {
2758    var _setData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(url, headers, data) {
2759      var options;
2760      return _regenerator.default.wrap(function (_context1) {
2761        while (1) switch (_context1.prev = _context1.next) {
2762          case 0:
2763            if (!(url !== null && url !== void 0 && url.length)) {
2764              _context1.next = 1;
2765              break;
2766            }
2767            options = {
2768              method: 'POST',
2769              headers: {
2770                'Content-Type': 'application/json'
2771              },
2772              body: data
2773            };
2774            if (!ecommerce.isEmptyObject(headers)) {
2775              options.headers = headers;
2776            }
2777            return _context1.abrupt("return", fetch(url, options).then(function (response) {
2778              return response.text().then(function (text) {
2779                var json = (0, _global.safeJsonParse)(stripXssiPrefix(text));
2780                var responseObject = {
2781                  'headers': response.headers,
2782                  'status': response.status,
2783                  'data': json
2784                };
2785                return responseObject;
2786              });
2787            }).catch(function (error) {
2788              console.log(error);
2789            }));
2790          case 1:
2791            return _context1.abrupt("return", 'no url passed');
2792          case 2:
2793          case "end":
2794            return _context1.stop();
2795        }
2796      }, _callee1);
2797    }));
2798    function setData(_x1, _x10, _x11) {
2799      return _setData.apply(this, arguments);
2800    }
2801    return setData;
2802  }(),
2803  isEmptyObject: function isEmptyObject(obj) {
2804    for (var prop in obj) {
2805      if (Object.prototype.hasOwnProperty.call(obj, prop)) {
2806        return false;
2807      }
2808    }
2809    return true;
2810  },
2811  showLegacyAddToCartErrorMessage: function showLegacyAddToCartErrorMessage(errorData) {
2812    var msgElement = document.getElementById('errorModalMsg');
2813    if (!msgElement) return;
2814    if (msgElement.parentNode) {
2815      var existingContainers = msgElement.parentNode.querySelectorAll('.modal-error-list');
2816      existingContainers.forEach(function (container) {
2817        return container.remove();
2818      });
2819    }
2820    var sourceData = (errorData === null || errorData === void 0 ? void 0 : errorData.debugMessages) || errorData;
2821    var errorList = Array.isArray(sourceData) ? sourceData : [sourceData];
2822    var getI18n = function getI18n(text) {
2823      if (window.Granite && window.Granite.I18n) {
2824        return window.Granite.I18n.get(text);
2825      }
2826      return text;
2827    };
2828    msgElement.innerHTML = "\n            <h5 class=\"modal-error-title\">".concat(getI18n('Error'), "</h5>\n        ");
2829    var itemsHtml = errorList.map(function (item, index) {
2830      var text = (item === null || item === void 0 ? void 0 : item.debugMessage) || (item === null || item === void 0 ? void 0 : item.message) || item;
2831      return "\n                    <div class=\"alert alert-error\">\n                        <div class=\"error-message-icon\">\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\">\n                                <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" \n                                    fill=\"red\"        \n                                    stroke=\"red\" \n                                    stroke-width=\"2\" \n                                    stroke-linecap=\"round\" \n                                    stroke-linejoin=\"round\"/>\n                                <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n                                <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n                            </svg>\n                        </div>\n                        <p class=\"modal-error-item-text\">".concat(text, "</p>\n                    </div>\n                ");
2832    }).join('');
2833    msgElement.insertAdjacentHTML('afterend', "\n                <div class=\"modal-error-list\">\n                    ".concat(itemsHtml, "\n                </div>\n            "));
2834    if (window.$) {
2835      window.$('#errorModal').modal('show');
2836    }
2837  }
2838};
2839
2840// expose to window for legacy libraries
2841window.ecommerce = ecommerce;
2842window.ecommerceUser = _user.default;
2843var _default = exports.default = ecommerce;
2844
2845},{"../global":73,"./user":72,"@babel/runtime/helpers/asyncToGenerator":4,"@babel/runtime/helpers/defineProperty":5,"@babel/runtime/helpers/interopRequireDefault":6,"@babel/runtime/regenerator":22,"ilmn":30,"ilmn/clearCookie":23}],72:[function(require,module,exports){
2846"use strict";
2847
2848var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2849Object.defineProperty(exports, "__esModule", {
2850  value: true
2851});
2852exports.default = void 0;
2853var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
2854var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
2855var _ilmn = require("ilmn");
2856var _global = require("../global");
2857/*
2858 * Contains user-specific logic ported from globalnav/js/ecom-functions.js
2859 */
2860
2861var user = {
2862  isUserProfileSet: false,
2863  isFetchingUserData: false,
2864  getProfileLocalStorage: function getProfileLocalStorage(ecommerce) {
2865    var userLocalStorage = window.localStorage.getItem(ecommerce.userProfileKey);
2866    return userLocalStorage ? (0, _global.safeJsonParse)(userLocalStorage) : null;
2867  },
2868  setProfileLocalStorage: function setProfileLocalStorage(userProfileObj, ecommerce) {
2869    localStorage.setItem(ecommerce.userProfileKey, JSON.stringify(userProfileObj));
2870  },
2871  loadUserProfile: function () {
2872    var _loadUserProfile = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(ecommerce) {
2873      var epGuestTokenCookie;
2874      return _regenerator.default.wrap(function (_context) {
2875        while (1) switch (_context.prev = _context.next) {
2876          case 0:
2877            epGuestTokenCookie = (0, _ilmn.getCookie)('ep-guest-token');
2878            if (!epGuestTokenCookie) {
2879              localStorage.removeItem(ecommerce.userProfileKey);
2880            }
2881            return _context.abrupt("return", user.userProfile(ecommerce).then(function (userProfileData) {
2882              user.setProfileLocalStorage(userProfileData, ecommerce);
2883            }));
2884          case 1:
2885          case "end":
2886            return _context.stop();
2887        }
2888      }, _callee);
2889    }));
2890    function loadUserProfile(_x) {
2891      return _loadUserProfile.apply(this, arguments);
2892    }
2893    return loadUserProfile;
2894  }(),
2895  userProfile: function () {
2896    var _userProfile = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(ecommerce) {
2897      return _regenerator.default.wrap(function (_context2) {
2898        while (1) switch (_context2.prev = _context2.next) {
2899          case 0:
2900            if (!user.isFetchingUserData) {
2901              _context2.next = 1;
2902              break;
2903            }
2904            return _context2.abrupt("return", user.userFetch);
2905          case 1:
2906            if (user.isUserProfileSet) {
2907              _context2.next = 2;
2908              break;
2909            }
2910            user.isFetchingUserData = true;
2911            user.userFetch = ecommerce.getECommerceConfig().then(function (ecommerceConfig) {
2912              var configHost = ecommerceConfig === null || ecommerceConfig === void 0 ? void 0 : ecommerceConfig.commerceHttpsProtocolHost;
2913              var configProfile = ecommerceConfig.profile;
2914              if (configHost && configProfile) {
2915                var profileApiUrl = configHost + configProfile;
2916                var psTokenCookie = (0, _ilmn.getCookie)('psToken');
2917                var headers = psTokenCookie ? {
2918                  'Content-Type': 'application/json',
2919                  'psToken': psTokenCookie
2920                } : {};
2921                if (profileApiUrl !== null && profileApiUrl !== void 0 && profileApiUrl.length) {
2922                  return ecommerce.getData(profileApiUrl, headers).then(function (response) {
2923                    var responseData = response.data;
2924                    var profile = responseData.data;
2925                    var status = response.status;
2926                    var unauthorizedPage = responseData.unauthorizedPage; // TODO: not sure which scenario returns this
2927                    user.isUserProfileSet = true;
2928                    if (profile) {
2929                      return user.setKnownUserProfileState(response, ecommerce);
2930                    } else if (status === 401) {
2931                      return user.setGuestUserProfileState(ecommerce);
2932                    } else if (status === 403) {
2933                      return responseData.error;
2934                    }
2935                    return {};
2936                  });
2937                } else {
2938                  return {};
2939                }
2940              } else {
2941                return {};
2942              }
2943            });
2944            return _context2.abrupt("return", user.userFetch);
2945          case 2:
2946            return _context2.abrupt("return", {});
2947          case 3:
2948          case "end":
2949            return _context2.stop();
2950        }
2951      }, _callee2);
2952    }));
2953    function userProfile(_x2) {
2954      return _userProfile.apply(this, arguments);
2955    }
2956    return userProfile;
2957  }(),
2958  setKnownUserProfileState: function setKnownUserProfileState(response, ecommerce) {
2959    var responseData = response === null || response === void 0 ? void 0 : response.data;
2960    var profile = responseData === null || responseData === void 0 ? void 0 : responseData.data;
2961    var myIlluminaRoles = (profile === null || profile === void 0 ? void 0 : profile.roles) || [];
2962    var myIlluminaUserType = myIlluminaRoles.map(function (myIlluminaRole) {
2963      return myIlluminaRole.toLowerCase();
2964    });
2965    var myIlluminaID = (profile === null || profile === void 0 ? void 0 : profile.pGuid) || '';
2966    var xsrfToken = response.headers.get('xsrf-token');
2967    if (xsrfToken) {
2968      var _profile$sessionDetai;
2969      var sameSiteOption = (profile === null || profile === void 0 || (_profile$sessionDetai = profile.sessionDetails) === null || _profile$sessionDetai === void 0 ? void 0 : _profile$sessionDetai.sessionType) === 'punch_out' ? 'none' : 'strict';
2970      (0, _ilmn.setCookie)('xsrf-token', xsrfToken, '', null, '/', sameSiteOption, true);
2971    }
2972    (0, _ilmn.setCookie)('ep-guest-token', null, -1, null);
2973    ecommerce.setLoggedInState(true);
2974    window.localStorage.setItem('myIlluminaID', myIlluminaID);
2975    window.localStorage.setItem('myIlluminaUserType', JSON.stringify(myIlluminaUserType));
2976    return profile;
2977  },
2978  setGuestUserProfileState: function () {
2979    var _setGuestUserProfileState = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(ecommerce) {
2980      var _profileObject$roles;
2981      var guestProfile, profileObject, epGuestTokenCookie;
2982      return _regenerator.default.wrap(function (_context3) {
2983        while (1) switch (_context3.prev = _context3.next) {
2984          case 0:
2985            (0, _ilmn.setCookie)('psToken', null, -1, null);
2986            guestProfile = localStorage.getItem(ecommerce.userProfileKey);
2987            profileObject = guestProfile && guestProfile !== 'undefined' ? (0, _global.safeJsonParse)(guestProfile) : {};
2988            epGuestTokenCookie = (0, _ilmn.getCookie)('ep-guest-token');
2989            ecommerce.setLoggedOutState();
2990            // retain guest profile if already present
2991            if (!(epGuestTokenCookie && ((_profileObject$roles = profileObject.roles) === null || _profileObject$roles === void 0 ? void 0 : _profileObject$roles.indexOf('GUEST')) >= 0)) {
2992              _context3.next = 1;
2993              break;
2994            }
2995            return _context3.abrupt("return", profileObject);
2996          case 1:
2997            return _context3.abrupt("return", {});
2998          case 2:
2999          case "end":
3000            return _context3.stop();
3001        }
3002      }, _callee3);
3003    }));
3004    function setGuestUserProfileState(_x3) {
3005      return _setGuestUserProfileState.apply(this, arguments);
3006    }
3007    return setGuestUserProfileState;
3008  }(),
3009  guestProfile: function () {
3010    var _guestProfile = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(ecommerce) {
3011      return _regenerator.default.wrap(function (_context4) {
3012        while (1) switch (_context4.prev = _context4.next) {
3013          case 0:
3014            return _context4.abrupt("return", ecommerce.getECommerceConfig().then(function (ecommerceConfig) {
3015              if (ecommerceConfig.commerceHttpsProtocolHost && ecommerceConfig.profile) {
3016                var COOKIE_EXPIRE_IN = 7;
3017                var profileAPIurl = "".concat(ecommerceConfig.commerceHttpsProtocolHost, "/public").concat(ecommerceConfig.profile);
3018                var epGuestTokenCookie = (0, _ilmn.getCookie)('ep-guest-token');
3019                var headers = epGuestTokenCookie ? {
3020                  'Content-Type': 'application/json',
3021                  'ep-guest-token': epGuestTokenCookie
3022                } : {};
3023                return ecommerce.getData(profileAPIurl, headers).then(function (response) {
3024                  // handle 403 + ecommerceConfig.unauthorizedPage condition
3025                  if (response.status === '403' && ecommerceConfig.unauthorizedPage) {
3026                    window.location = ecommerceConfig.unauthorizedPage;
3027                  } else {
3028                    var _response$headers, _response$data;
3029                    var epGuestToken = (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('ep-guest-token');
3030                    if (epGuestToken) {
3031                      (0, _ilmn.setCookie)('ep-guest-token', epGuestToken, COOKIE_EXPIRE_IN, null);
3032                    }
3033                    if ((_response$data = response.data) !== null && _response$data !== void 0 && _response$data.data) {
3034                      user.setProfileLocalStorage(response.data.data, ecommerce);
3035                      return response.data.data;
3036                    }
3037                    return {};
3038                  }
3039                  return {};
3040                });
3041              } else {
3042                return {};
3043              }
3044            }));
3045          case 1:
3046          case "end":
3047            return _context4.stop();
3048        }
3049      }, _callee4);
3050    }));
3051    function guestProfile(_x4) {
3052      return _guestProfile.apply(this, arguments);
3053    }
3054    return guestProfile;
3055  }(),
3056  getUserCartId: function () {
3057    var _getUserCartId = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(ecommerce) {
3058      return _regenerator.default.wrap(function (_context5) {
3059        while (1) switch (_context5.prev = _context5.next) {
3060          case 0:
3061            return _context5.abrupt("return", ecommerce.getFromLocalStorage(ecommerce.userProfileKey).then(function (data) {
3062              var userData = (0, _global.safeJsonParse)(data);
3063              if (!(userData !== null && userData !== void 0 && userData.cartId)) {
3064                return user.guestProfile(ecommerce).then(function (guestProfile) {
3065                  return (guestProfile === null || guestProfile === void 0 ? void 0 : guestProfile.cartId) || null;
3066                });
3067              } else {
3068                return userData.cartId;
3069              }
3070            }));
3071          case 1:
3072          case "end":
3073            return _context5.stop();
3074        }
3075      }, _callee5);
3076    }));
3077    function getUserCartId(_x5) {
3078      return _getUserCartId.apply(this, arguments);
3079    }
3080    return getUserCartId;
3081  }()
3082};
3083var _default = exports.default = user;
3084
3085},{"../global":73,"@babel/runtime/helpers/asyncToGenerator":4,"@babel/runtime/helpers/interopRequireDefault":6,"@babel/runtime/regenerator":22,"ilmn":30}],73:[function(require,module,exports){
3086"use strict";
3087
3088Object.defineProperty(exports, "__esModule", {
3089  value: true
3090});
3091exports.debounce = debounce;
3092exports.getScrollBarWidth = getScrollBarWidth;
3093exports.isMobileDevice = isMobileDevice;
3094exports.mediaQueryLg = mediaQueryLg;
3095exports.mediaQuerySm = mediaQuerySm;
3096exports.round10 = round10;
3097exports.safeJsonParse = safeJsonParse;
3098exports.smoothScroll = smoothScroll;
3099exports.throttle = throttle;
3100function isMobileDevice() {
3101  return window.matchMedia('only screen and (max-width: 768px)').matches;
3102} // TODO: Comment-we should revisit this function to determine whether max-width should 767px or 768px
3103
3104function mediaQuerySm() {
3105  return window.matchMedia('only screen and (max-width: 767px)').matches;
3106}
3107function mediaQueryLg() {
3108  return window.matchMedia('only screen and (max-width: 1023px)').matches;
3109}
3110function debounce(func, delay) {
3111  var timer;
3112  return function () {
3113    var _this = this;
3114    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3115      args[_key] = arguments[_key];
3116    }
3117    clearTimeout(timer);
3118    timer = setTimeout(function () {
3119      func.apply(_this, args);
3120    }, delay);
3121  };
3122}
3123function throttle(func, delay) {
3124  var timerFlag = null;
3125  return function () {
3126    if (timerFlag === null) {
3127      func.apply(void 0, arguments);
3128      timerFlag = setTimeout(function () {
3129        timerFlag = null;
3130      }, delay);
3131    }
3132  };
3133}
3134function round10(x) {
3135  return x % 10 >= 5 ? Math.trunc(x / 10) * 10 + 10 : Math.trunc(x / 10) * 10;
3136}
3137function safeJsonParse(jsonString) {
3138  var parsedData = null;
3139  try {
3140    parsedData = JSON.parse(jsonString);
3141  } catch (_unused) {
3142    console.log('Unable to parse JSON string');
3143  }
3144  return parsedData || {};
3145}
3146
3147// src: adapted from a couple SO posts, which were based on a blog post. Bootstrap 4 uses the same general approach
3148function getScrollBarWidth() {
3149  var inner = document.createElement('p');
3150  var outer = document.createElement('div');
3151  inner.cssText = "\n        width: 100%;\n        height: 100%;\n    ";
3152  outer.cssText = "\n        position: absolute;\n        top: 0px;\n        left: 0px;\n        visibility: hidden;\n        width: 100px;\n        height: 100px;\n        overflow: hidden;\n    ";
3153  outer.appendChild(inner);
3154  document.body.appendChild(outer);
3155  var fullWidth = inner.offsetWidth;
3156  outer.style.overflow = 'scroll';
3157  var scrollWidth = inner.offsetWidth;
3158  if (fullWidth === scrollWidth) {
3159    scrollWidth = outer.clientWidth;
3160  }
3161  document.body.removeChild(outer);
3162  return "".concat(fullWidth - scrollWidth, "px");
3163}
3164function smoothScroll(element, offset, callback) {
3165  if (!element) {
3166    return;
3167  }
3168  var scrollOffset = offset ? parseInt(offset, 10) : 0;
3169  var scrollCallback = typeof callback === 'function' ? callback : null;
3170  var debounceFn;
3171  var elementPosition = Math.floor(element.getBoundingClientRect().top + window.scrollY - scrollOffset);
3172  var lowestScrollPosition = document.body.scrollHeight - window.innerHeight;
3173  var scrollDestination = elementPosition <= lowestScrollPosition ? elementPosition : lowestScrollPosition;
3174  var onScroll = function onScroll() {
3175    var scrollTop = window.scrollY || window.pageYOffset;
3176    if (scrollTop >= scrollDestination) {
3177      if (scrollCallback) {
3178        scrollCallback();
3179      }
3180      window.removeEventListener('scroll', debounceFn);
3181    }
3182  };
3183  debounceFn = debounce(onScroll, 250);
3184  window.addEventListener('scroll', debounceFn);
3185  window.scrollTo({
3186    top: scrollDestination,
3187    behavior: 'smooth'
3188  });
3189}
3190
3191},{}],74:[function(require,module,exports){
3192"use strict";
3193
3194Object.defineProperty(exports, "__esModule", {
3195  value: true
3196});
3197exports.analytics = analytics;
3198exports.handleAddToCartError = handleAddToCartError;
3199exports.handleAddToCartSuccess = handleAddToCartSuccess;
3200var _linkUtils = require("../../../acdl/js/handlers/linkUtils");
3201var _linkData = require("../../../acdl/js/dataObject/linkData");
3202var _formUtils = require("../../../acdl/js/handlers/formUtils");
3203var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3204var _cartData = require("../../../acdl/js/dataObject/cartData");
3205var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3206var _productCartAddActionEvent = require("../../../acdl/js/pageAction/productCartAddActionEvent");
3207var _linkAction = require("../../../acdl/js/pageAction/linkAction");
3208var _errorActionEvent = require("../../../acdl/js/pageAction/errorActionEvent");
3209var componentRegion = null;
3210function analytics() {
3211  componentRegion = 'addtocart';
3212  var productCartComponents = document.querySelectorAll('.addtocart');
3213  productCartComponents.forEach(function (addToCartInstance) {
3214    addToCartInstance.addEventListener('click', handleComponentClicks);
3215    var loginButton = addToCartInstance.querySelector('.selection-summary__button--login');
3216    var addToCartButtons = addToCartInstance.querySelectorAll('.selection-summary__button--add-to-cart, .add-to-cart__mobile-button');
3217    var eolTriggers = addToCartInstance.querySelectorAll('.eol-message-trigger');
3218    var viewMoreButtons = addToCartInstance.querySelectorAll('.product__description button');
3219    if (loginButton) {
3220      loginButton.addEventListener('logInClick', function (event) {
3221        handleCustomRegionClick(event, 'add to cart');
3222      });
3223    }
3224    addToCartButtons.forEach(function (button) {
3225      button.addEventListener('addToCartSuccess', handleAddToCartSuccess);
3226      button.addEventListener('addToCartError', handleAddToCartError);
3227    });
3228    eolTriggers.forEach(function (element) {
3229      element.addEventListener('click', handleEolTriggerClick);
3230    });
3231    viewMoreButtons.forEach(function (button) {
3232      button.addEventListener('click', handleViewMoreClick);
3233    });
3234  });
3235}
3236function handleComponentClicks(event) {
3237  var generalLinks = ['.selection-summary__product-remove'];
3238  var isGeneralLink = generalLinks.some(function (selector) {
3239    return event.target.closest(selector);
3240  });
3241  var isModalLink = event.target.closest('.modal');
3242  if (isGeneralLink || isModalLink) {
3243    handleCustomRegionClick(event);
3244  }
3245}
3246function handleCustomRegionClick(event) {
3247  if ((0, _commonUtils.isClickable)(event)) {
3248    try {
3249      var domEventType = event.type;
3250      var clickableElement = (0, _commonUtils.getClickableElement)(event);
3251      var linkJson = (0, _linkUtils.getLinkData)(clickableElement, componentRegion);
3252      var dataLayerJson = (0, _linkAction.linkActionEvent)(linkJson, domEventType);
3253      (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3254    } catch (_unused) {}
3255  }
3256}
3257function handleAddToCartSuccess(event) {
3258  if ((0, _commonUtils.isClickable)(event)) {
3259    var addToCartData = event.detail;
3260    var productsObject = addToCartData.productsList;
3261    var cartObject = {
3262      cartID: addToCartData.cartId,
3263      currencyCode: addToCartData.currencyCode
3264    };
3265    // Data Objects
3266    var link;
3267    if (addToCartData.isBundlesProduct) {
3268      var targetElement = event.target;
3269      var linkUrl = targetElement.getAttribute('href') || null;
3270      var linkType = "other";
3271      var linkRegion = "productdetail-bundles";
3272      var gatedContent = (0, _formUtils.getGatedContentValue)(targetElement) || null;
3273      var linkContent = addToCartData.linkContent ? (0, _commonUtils.getLowerCase)(addToCartData.linkContent.trim()) : null;
3274      link = (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
3275    } else {
3276      link = (0, _linkUtils.createLinkData)(event.target, componentRegion);
3277    }
3278    var cartDetails = (0, _cartData.cartDetailsData)(cartObject);
3279    var prodFindingMethod = addToCartData.productFindingMethod;
3280    var domEventType = "click";
3281    var dataLayerJson = (0, _productCartAddActionEvent.productCartAddActionEvent)(link, productsObject, cartDetails, prodFindingMethod, domEventType);
3282    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3283  }
3284}
3285function handleAddToCartError(event) {
3286  var dataLayerJson = (0, _errorActionEvent.errorActionEvent)(event.detail, 'click');
3287  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3288}
3289function handleEolTriggerClick(event) {
3290  try {
3291    var domEventType = event.type;
3292    var clickableElement = event.target.closest('.eol-message-trigger');
3293    var linkJson = (0, _linkUtils.createLinkDataFromAttribute)(clickableElement, componentRegion);
3294    var dataLayerJson = (0, _linkAction.linkActionEvent)(linkJson, domEventType);
3295    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3296  } catch (_unused2) {
3297    console.log('Unable to read data layer values from EOL Message Trigger');
3298  }
3299}
3300function handleViewMoreClick(event) {
3301  try {
3302    var _event$target;
3303    var domEventType = event.type;
3304    var clickedText = ((_event$target = event.target) === null || _event$target === void 0 || (_event$target = _event$target.closest('.rad-btn')) === null || _event$target === void 0 ? void 0 : _event$target.dataset.swapText) || 'View more';
3305    var linkJson = (0, _linkData.setLinkData)(clickedText, 'other', componentRegion, null, 'normal');
3306    var dataLayerJson = (0, _linkAction.linkActionEvent)(linkJson, domEventType);
3307    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3308  } catch (_unused3) {
3309    console.log('Unable to read data layer values from view more link');
3310  }
3311}
3312
3313},{"../../../acdl/js/dataObject/cartData":92,"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/formUtils":105,"../../../acdl/js/handlers/linkUtils":107,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/errorActionEvent":117,"../../../acdl/js/pageAction/linkAction":121,"../../../acdl/js/pageAction/productCartAddActionEvent":123}],75:[function(require,module,exports){
3314"use strict";
3315
3316Object.defineProperty(exports, "__esModule", {
3317  value: true
3318});
3319exports.analytics = analytics;
3320var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3321var _linkData = require("../../../acdl/js/dataObject/linkData");
3322var _productIncrementActionEvent = require("../../../acdl/js/pageAction/productIncrementActionEvent");
3323function analytics() {
3324  var productQuantity = document.querySelectorAll('.rad-numeric-stepper__input');
3325  productQuantity.forEach(function (elm) {
3326    elm.addEventListener('changeProductQuantityClick', function (event) {
3327      pushProductIncrementActionEvent(event);
3328    });
3329  });
3330}
3331function pushProductIncrementActionEvent(event) {
3332  var productIncrementData = (event === null || event === void 0 ? void 0 : event.detail) || null;
3333  var productsObject = (productIncrementData === null || productIncrementData === void 0 ? void 0 : productIncrementData.linkProducts) || {};
3334  var prodFindingMethod = (productIncrementData === null || productIncrementData === void 0 ? void 0 : productIncrementData.productFindingMethod) || null;
3335  var linkContent = (0, _linkData.setLinkData)("product-quantity-input", "other", "add to cart", null, 'normal');
3336  var domEventType = (productIncrementData === null || productIncrementData === void 0 ? void 0 : productIncrementData.domEventType) || null;
3337  var dataLayerJson = (0, _productIncrementActionEvent.productIncrementActionEvent)(productsObject, prodFindingMethod, linkContent, domEventType);
3338  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3339}
3340
3341},{"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/productIncrementActionEvent":124}],76:[function(require,module,exports){
3342"use strict";
3343
3344Object.defineProperty(exports, "__esModule", {
3345  value: true
3346});
3347exports.analytics = analytics;
3348var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3349var _productsUtils = require("../../../acdl/js/handlers/productsUtils");
3350var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3351var _productLinkActionEvent = require("../../../acdl/js/pageAction/productLinkActionEvent");
3352function analytics() {
3353  var pricingDiv = document.querySelectorAll('.product__pricing');
3354  if (pricingDiv && pricingDiv.length) {
3355    pricingDiv.forEach(function (elm) {
3356      if (elm) {
3357        elm.addEventListener('requestPricingClick', function (event) {
3358          if ((0, _commonUtils.isClickable)(event) && (0, _productsUtils.isRequestPricing)(event)) {
3359            pushProductMerchandisingActionEvent(event);
3360          }
3361        });
3362        elm.addEventListener('customizeProductClick', function (event) {
3363          if ((0, _commonUtils.isClickable)(event) && (0, _productsUtils.isCustomizeLink)(event)) {
3364            pushProductMerchandisingActionEvent(event);
3365          }
3366        });
3367      }
3368    });
3369  }
3370}
3371function pushProductMerchandisingActionEvent(event) {
3372  var _requestPricingData$l, _requestPricingData$l2;
3373  var requestPricingData = (event === null || event === void 0 ? void 0 : event.detail) || null;
3374  var actionEvent = (requestPricingData === null || requestPricingData === void 0 ? void 0 : requestPricingData.event) || null;
3375  var productsObject = (requestPricingData === null || requestPricingData === void 0 || (_requestPricingData$l = requestPricingData.linkProducts) === null || _requestPricingData$l === void 0 ? void 0 : _requestPricingData$l.products) || {};
3376  var link = (requestPricingData === null || requestPricingData === void 0 || (_requestPricingData$l2 = requestPricingData.linkProducts) === null || _requestPricingData$l2 === void 0 ? void 0 : _requestPricingData$l2.link) || {};
3377  var prodFindingMethod = (requestPricingData === null || requestPricingData === void 0 ? void 0 : requestPricingData.productFindingMethod) || null;
3378  var domEventType = (requestPricingData === null || requestPricingData === void 0 ? void 0 : requestPricingData.domEventType) || null;
3379  var dataLayerJson = (0, _productLinkActionEvent.productLinkActionEvent)(actionEvent, link, productsObject, prodFindingMethod, domEventType);
3380  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3381}
3382
3383},{"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/productsUtils":110,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/productLinkActionEvent":125}],77:[function(require,module,exports){
3384"use strict";
3385
3386Object.defineProperty(exports, "__esModule", {
3387  value: true
3388});
3389exports.attributionAnalytics = attributionAnalytics;
3390var _attributionActionEvent = require("../../../acdl/js/pageAction/attributionActionEvent");
3391var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3392/**
3393 * Handles attribution data and pushes it to the Adobe Data Layer (and thus
3394 * to MCP/analytics) so attribution is available even when the user never submits a form.
3395 */
3396function attributionAnalytics(event) {
3397  if (!(event !== null && event !== void 0 && event.detail)) {
3398    return;
3399  }
3400  var dataLayerJson = (0, _attributionActionEvent.attributionActionEvent)(event.detail);
3401  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3402}
3403
3404},{"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/attributionActionEvent":115}],78:[function(require,module,exports){
3405"use strict";
3406
3407Object.defineProperty(exports, "__esModule", {
3408  value: true
3409});
3410exports.analytics = analytics;
3411var _analytics = require("../add-to-cart/analytics");
3412function analytics() {
3413  var addToCartButtonBundle = document.querySelector('.pdp-add-bundle-js');
3414  var addToCartButtonBundleList = document.querySelector('.blp-add-bundle-js');
3415  var addToCartButtonModalBundles = document.querySelector('.mod-add-bundle-js');
3416  if (addToCartButtonBundle) {
3417    addToCartButtonBundle.addEventListener("addToCartBundleClick", _analytics.handleAddToCartClick);
3418  }
3419  if (addToCartButtonBundleList) {
3420    addToCartButtonBundleList.addEventListener("addToCartBundleClick", _analytics.handleAddToCartClick);
3421  }
3422  if (addToCartButtonModalBundles) {
3423    addToCartButtonModalBundles.addEventListener("addToCartBundleClick", _analytics.handleAddToCartClick);
3424  }
3425}
3426
3427},{"../add-to-cart/analytics":74}],79:[function(require,module,exports){
3428"use strict";
3429
3430var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3431Object.defineProperty(exports, "__esModule", {
3432  value: true
3433});
3434exports.analytics = analytics;
3435var _filterClickActionEvent = _interopRequireDefault(require("../../../acdl/js/pageAction/filterClickActionEvent"));
3436var _searchClickActionEvent = _interopRequireDefault(require("../../../acdl/js/pageAction/searchClickActionEvent"));
3437var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3438var _linkData = require("../../../acdl/js/dataObject/linkData");
3439var _linkAction = require("../../../acdl/js/pageAction/linkAction");
3440function analytics() {
3441  document.addEventListener('filterChanged', function (event) {
3442    var value = event.detail.analyticsFilterOb;
3443    var filterCategory = event.detail.category;
3444    var filterName = event.detail.name;
3445    var isFilterRemoved = event.detail.isFilterRemoved;
3446    var dataLayerJson = (0, _filterClickActionEvent.default)(value, filterCategory, filterName, isFilterRemoved);
3447    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3448  });
3449  document.addEventListener('ResultCardClick', function (event) {
3450    var title = event.detail.title;
3451    var href = event.detail.href;
3452    var pageNo = event.detail.pageNumber;
3453    var filterObject = event.detail.filterObj;
3454    var index = event.detail.index;
3455    var dataLayerJson = (0, _searchClickActionEvent.default)(title, href, pageNo, filterObject, index);
3456    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3457  });
3458  document.addEventListener('compareClick', function () {
3459    var linkObj = (0, _linkData.setLinkData)('compare', 'other', 'facet-search');
3460    var dataLayerJson = (0, _linkAction.linkActionEvent)(linkObj, 'click');
3461    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3462  });
3463}
3464
3465},{"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/filterClickActionEvent":118,"../../../acdl/js/pageAction/linkAction":121,"../../../acdl/js/pageAction/searchClickActionEvent":130,"@babel/runtime/helpers/interopRequireDefault":6}],80:[function(require,module,exports){
3466"use strict";
3467
3468var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3469Object.defineProperty(exports, "__esModule", {
3470  value: true
3471});
3472exports.default = formLoadAnalytics;
3473var _inview = require("inview");
3474var _formData = _interopRequireDefault(require("../../../acdl/js/dataObject/formData"));
3475var _linkData = require("../../../acdl/js/dataObject/linkData");
3476var _formUtils = require("../../../acdl/js/handlers/formUtils");
3477var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3478var _formLoadActionEvent = _interopRequireDefault(require("../../../acdl/js/pageAction/formLoadActionEvent"));
3479var _modalUtils = require("../../../acdl/js/handlers/modalUtils");
3480var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3481var trackedForms = [];
3482function destroyFormLoadActionEventListeners(inViewObject, resizeObserver, callback) {
3483  if (inViewObject && resizeObserver && !inViewObject.destroyed) {
3484    inViewObject.destroy();
3485    resizeObserver.disconnect();
3486  }
3487  document.removeEventListener('click', callback);
3488}
3489function createLinkDataFromLastClick(event) {
3490  var _target$dataset;
3491  var target = (0, _commonUtils.getClickableElement)(event);
3492  if (!target) {
3493    return {};
3494  }
3495  var linkTargetUrl = null;
3496  if (target.hasAttribute('href')) {
3497    linkTargetUrl = target.getAttribute('href');
3498  } else if (target !== null && target !== void 0 && (_target$dataset = target.dataset) !== null && _target$dataset !== void 0 && _target$dataset.target) {
3499    linkTargetUrl = target.dataset.target;
3500  }
3501  var linkContent = target !== null && target !== void 0 && target.innerText ? (0, _commonUtils.getLowerCase)(target.innerText) : null;
3502  var linkType = 'other';
3503  var linkRegion = 'pardot form';
3504  var linkURL = linkTargetUrl;
3505  var gatedContent = 'normal';
3506  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkURL, gatedContent);
3507}
3508function formLoadAnalytics(containingElement) {
3509  var container = containingElement || document;
3510  var iframes = container.querySelectorAll('iframe');
3511  if (!iframes.length > 0) return;
3512  var pardotForms = Array.from(iframes).filter(function (iframe) {
3513    return (0, _formUtils.isPardotForm)(iframe.src);
3514  });
3515  if (!pardotForms.length > 0) return;
3516  var linkData = {};
3517  var clickHandler = function clickHandler(event) {
3518    if ((0, _commonUtils.isClickable)(event)) {
3519      linkData = createLinkDataFromLastClick(event);
3520    }
3521  };
3522  document.removeEventListener('click', clickHandler);
3523  document.addEventListener('click', clickHandler);
3524  pardotForms.forEach(function (iframe) {
3525    if (trackedForms.includes(iframe)) {
3526      return;
3527    }
3528    trackedForms.push(iframe);
3529    var src = iframe.src;
3530    var form = (0, _formUtils.abstractPardotFormDataFromUrl)(src) || null;
3531    var formData = (0, _formData.default)(form.formId, form.formName, form.formURL, form.formHandler, form.formUserId);
3532    var dataLayerJson = (0, _formLoadActionEvent.default)(linkData, formData, 'load');
3533    var inViewObj = new _inview.InView(iframe, function (inView) {
3534      if (inView) {
3535        if ((0, _commonUtils.isVisible)(iframe)) {
3536          (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3537          destroyFormLoadActionEventListeners(inViewObj, formLoadResizeObserver, clickHandler);
3538        }
3539      }
3540    });
3541    var formLoadResizeObserver = new ResizeObserver(function (entries) {
3542      entries.forEach(function (entry) {
3543        var target = entry.target;
3544        if ((0, _modalUtils.elementInModal)(target) && (0, _commonUtils.isInView)(target) && (0, _commonUtils.isVisible)(target)) {
3545          dataLayerJson = (0, _formLoadActionEvent.default)(linkData, formData, 'click');
3546          (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3547          destroyFormLoadActionEventListeners(inViewObj, formLoadResizeObserver, clickHandler);
3548        } else if ((0, _modalUtils.elementInDrawer)(target) && (0, _commonUtils.isVisible)(target) && !(0, _commonUtils.isInView)(target)) {
3549          dataLayerJson = (0, _formLoadActionEvent.default)(linkData, formData, 'click');
3550          (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3551          destroyFormLoadActionEventListeners(inViewObj, formLoadResizeObserver, clickHandler);
3552        }
3553      });
3554    });
3555    try {
3556      formLoadResizeObserver.observe(iframe);
3557    } catch (e) {
3558      console.error("Error observing iframe with src \"".concat(iframe.src, "\": ").concat(e.message));
3559    }
3560  });
3561}
3562
3563},{"../../../acdl/js/dataObject/formData":93,"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/formUtils":105,"../../../acdl/js/handlers/modalUtils":109,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/formLoadActionEvent":119,"@babel/runtime/helpers/interopRequireDefault":6,"inview":54}],81:[function(require,module,exports){
3564"use strict";
3565
3566var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3567Object.defineProperty(exports, "__esModule", {
3568  value: true
3569});
3570exports.formSubmitAction = formSubmitAction;
3571var _formData = _interopRequireDefault(require("../../../acdl/js/dataObject/formData"));
3572var _linkData = require("../../../acdl/js/dataObject/linkData");
3573var _formSubmitActionEvent = require("../../../acdl/js/pageAction/formSubmitActionEvent");
3574var _formUtils = require("../../../acdl/js/handlers/formUtils");
3575var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3576var _linkAction = require("../../../acdl/js/pageAction/linkAction");
3577var _errorActionEvent = require("../../../acdl/js/pageAction/errorActionEvent");
3578var _userUtils = require("../../../acdl/js/handlers/userUtils");
3579var formSubmitted = false;
3580function formSubmitAction() {
3581  window.addEventListener('message', function (event) {
3582    var _event$data, _event$data2;
3583    if (((_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.type) !== 'pardotFormEvent') {
3584      return;
3585    }
3586    var linkData;
3587    var dataLayerJson;
3588    var data = event.data;
3589    var formUrl = (data === null || data === void 0 ? void 0 : data.formUrl) || (data === null || data === void 0 ? void 0 : data.iframeFormURL) || null;
3590    var formSuccessObj = formUrl ? (0, _formUtils.abstractPardotFormDataFromUrl)(formUrl) : null;
3591    var formData = formSuccessObj ? (0, _formData.default)(formSuccessObj.formId, formSuccessObj.formName, formSuccessObj.formURL, formSuccessObj.formHandler, formSuccessObj.formUserId) : null;
3592    var defaultError = [{
3593      'errorType': 'pardot form',
3594      'errorMessage': 'form validation error'
3595    }];
3596    var errorMessages = (data === null || data === void 0 ? void 0 : data.customError) || defaultError;
3597    if ((event === null || event === void 0 || (_event$data2 = event.data) === null || _event$data2 === void 0 ? void 0 : _event$data2.status) === 'submit') {
3598      formSubmitted = true;
3599      return;
3600    }
3601    if (isFormSubmitSuccess(data)) {
3602      (0, _userUtils.setSessionProspectId)().then(function () {
3603        linkData = (0, _linkData.setLinkData)(data.buttonText, "other", "pardot form", null, 'normal');
3604        dataLayerJson = (0, _formSubmitActionEvent.formSubmitActionEvent)(linkData, formData, 'submit');
3605        (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3606        if (formUrl) {
3607          sessionStorage.setItem('formUrl', formUrl.toString());
3608        }
3609      });
3610    } else if (isFormSubmitError(data)) {
3611      (0, _userUtils.setSessionProspectId)().then(function () {
3612        dataLayerJson = (0, _errorActionEvent.errorActionEvent)(errorMessages, 'submit');
3613        (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3614      });
3615    }
3616    if (isLinkClickedFromIframe(data)) {
3617      var linkContent = (data === null || data === void 0 ? void 0 : data.linkContent.toLowerCase()) || null;
3618      var linkUrl = (data === null || data === void 0 ? void 0 : data.linkURL) || null;
3619      var linkRegion = (data === null || data === void 0 ? void 0 : data.linkRegion) || null;
3620      var gatedContent = (data === null || data === void 0 ? void 0 : data.gatedContent) || 'gated';
3621      var linkType = (0, _linkData.getLinkType)(linkUrl);
3622      linkData = (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
3623      dataLayerJson = (0, _linkAction.linkActionEventFromForm)(linkData, formData);
3624      (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
3625    }
3626  });
3627}
3628function isFormSubmitSuccess(data) {
3629  return ((data === null || data === void 0 ? void 0 : data.status) === 'formSubmitSuccess' || (data === null || data === void 0 ? void 0 : data.event) === '
3629iframeFormSubmit') && formSubmitted;
3630}
3631function isFormSubmitError(data) {
3632  return (data === null || data === void 0 ? void 0 : data.status) === 'formSubmitError' && formSubmitted;
3633}
3634function isLinkClickedFromIframe(data) {
3635  return (data === null || data === void 0 ? void 0 : data.status) === 'linkClicked' || (data === null || data === void 0 ? void 0 : data.event) === 'linkClicked' || window !== top;
3636}
3637
3638},{"../../../acdl/js/dataObject/formData":93,"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/formUtils":105,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/handlers/userUtils":114,"../../../acdl/js/pageAction/errorActionEvent":117,"../../../acdl/js/pageAction/formSubmitActionEvent":120,"../../../acdl/js/pageAction/linkAction":121,"@babel/runtime/helpers/interopRequireDefault":6}],82:[function(require,module,exports){
3639"use strict";
3640
3641var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3642Object.defineProperty(exports, "__esModule", {
3643  value: true
3644});
3645exports.analytics = analytics;
3646exports.isAlreadyHandledLink = isAlreadyHandledLink;
3647exports.pushAnchorClickDataLayer = pushAnchorClickDataLayer;
3648var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
3649var _promoUtils = require("../../../acdl/js/handlers/promoUtils");
3650var _actionUtils = require("../../../acdl/js/handlers/actionUtils");
3651var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3652var _analytics = require("../search/analytics");
3653var _linkUtils = require("../../../acdl/js/handlers/linkUtils");
3654var _global = require("../../../../../components/utilities/global");
3655function analytics() {
3656  var processClickEvent = function processClickEvent(event) {
3657    var isValidClick = event.type === 'click' || event.type === 'auxclick' && event.button === 1;
3658    if (!isValidClick) {
3659      return;
3660    }
3661    if ((0, _commonUtils.isClickable)(event)) {
3662      try {
3663        var clickableElement = (0, _commonUtils.getClickableElement)(event);
3664        pushAnchorClickDataLayer(event, clickableElement);
3665      } catch (_unused) {
3666        console.error('Error listening for data layer general clicks');
3667      }
3668    }
3669  };
3670  document.addEventListener('click', processClickEvent);
3671  document.addEventListener('auxclick', processClickEvent);
3672}
3673function pushAnchorClickDataLayer(event, element) {
3674  var domEventType = event.type;
3675  if (isAlreadyHandledLink(element)) {
3676    return;
3677  }
3678  if ((0, _promoUtils.isMerchandisingPromo)(element)) {
3679    (0, _actionUtils.pushMerchandisingPromoToDataLayer)(element, domEventType);
3680    return;
3681  }
3682  if ((0, _promoUtils.isContentPromo)(element)) {
3683    (0, _actionUtils.pushContentPromoToDataLayer)(element, domEventType);
3684    return;
3685  }
3686  if ((0, _promoUtils.isLegacyMerchandisingPromo)(element)) {
3687    (0, _actionUtils.pushLegacyMerchandisingPromoToDataLayer)(element, domEventType);
3688    return;
3689  }
3690  if ((0, _promoUtils.isLegacyContentPromo)(element)) {
3691    (0, _actionUtils.pushLegacyContentPromoToDataLayer)(element, domEventType);
3692    return;
3693  }
3694  if (window.self !== window.top) {
3695    (0, _linkUtils.createLinkDataFromIframe)(event);
3696    return;
3697  }
3698  (0, _actionUtils.pushGeneralLinkActionToDataLayer)(element, domEventType);
3699}
3700function isAlreadyHandledLink(link) {
3701  var _dataLayerObject$prod;
3702  if (!link) return false;
3703  var dataLayerAttributeValue = link.getAttribute('data-ilmn-cmp-data-layer');
3704  var dataLayerObject = dataLayerAttributeValue ? (0, _global.safeJsonParse)(dataLayerAttributeValue) : null;
3705  var linkObjectExists = dataLayerObject === null || dataLayerObject === void 0 ? void 0 : dataLayerObject.link;
3706  var isSingleLevelDataLayerObject = dataLayerObject && Object.keys(dataLayerObject).length === 1;
3707  var hasEmptyProductArray = !!(dataLayerObject !== null && dataLayerObject !== void 0 && dataLayerObject.productFindingMethod && (((_dataLayerObject$prod = dataLayerObject.products) === null || _dataLayerObject$prod === void 0 ? void 0 : _dataLayerObject$prod.length) === 0 || dataLayerObject.products === null));
3708  var isBasicLinkObject = dataLayerObject ? isSingleLevelDataLayerObject || hasEmptyProductArray : false;
3709  // const isPromoLink = link.closest('[data-layer-object-type="promos"]');
3710  var isPromoOrMerchandisingLink = link.closest('[data-layer-object-type="promos"], [data-layer-object-type="merchandising-products"]');
3711  var isSiteSearchTools = link.closest('.site-search-tools');
3712
3713  // if ((linkObjectExists && isBasicLinkObject && !isPromoLink) || isSiteSearchTools) {
3714  if (linkObjectExists && isBasicLinkObject || isPromoOrMerchandisingLink || isSiteSearchTools) {
3715    return false;
3716  }
3717  var closestElementByType = ['[data-layer-object-type]', '.persistent-nav', '.gdpc-dialog', '#onetrust-consent-sdk', '.global-nav', '.ilmn-footer', '.addtocart', '.tabs__dropdown', '.safety-data-sheets'];
3718  var containsClassNames = ['pdp-add-bundle-js', 'blp-add-bundle-js', 'add-to-cart-cta'];
3719  var conditions = [dataLayerAttributeValue].concat((0, _toConsumableArray2.default)(closestElementByType.map(function (element) {
3720    return link.closest(element);
3721  })), (0, _toConsumableArray2.default)(containsClassNames.map(function (className) {
3722    return link.classList.contains(className);
3723  })), [(0, _analytics.isSearchIncludedElement)(link), link.classList.contains('pagin') && link.closest('.search-facet')]);
3724  return conditions.some(function (condition) {
3725    return condition;
3726  });
3727}
3728
3729},{"../../../../../components/utilities/global":73,"../../../acdl/js/handlers/actionUtils":101,"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/linkUtils":107,"../../../acdl/js/handlers/promoUtils":111,"../search/analytics":86,"@babel/runtime/helpers/interopRequireDefault":6,"@babel/runtime/helpers/toConsumableArray":17}],83:[function(require,module,exports){
3730"use strict";
3731
3732Object.defineProperty(exports, "__esModule", {
3733  value: true
3734});
3735exports.analytics = analytics;
3736var _actionUtils = require("../../../acdl/js/handlers/actionUtils");
3737function analytics() {
3738  document.addEventListener('globalNavPromoImpression', function (event) {
3739    if (!(event !== null && event !== void 0 && event.detail)) {
3740      return;
3741    }
3742    (0, _actionUtils.pushPromoImpressionToDataLayer)(event.detail);
3743  });
3744}
3745module.exports.default = analytics;
3746
3747},{"../../../acdl/js/handlers/actionUtils":101}],84:[function(require,module,exports){
3748"use strict";
3749
3750var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3751var _analytics = require("./sticky-nav/analytics");
3752var _analytics2 = require("./global-nav/analytics");
3753var _analytics3 = require("./search/analytics");
3754var _productSearchSubmit = require("./search/productSearchSubmit");
3755var _searchSubmitAction = require("./search/searchSubmitAction");
3756var _supportSearchSubmit = require("./search/supportSearchSubmit");
3757var _requestPricingAndCustomizeProductsAnaytics = require("./add-to-cart/requestPricingAndCustomizeProductsAnaytics");
3758var _analytics4 = require("./add-to-cart/analytics");
3759var _analytics5 = require("./bundles/analytics");
3760var _analytics6 = require("./general/analytics");
3761var _productIncrementAnalytics = require("./add-to-cart/productIncrementAnalytics");
3762var _formLoadAction = _interopRequireDefault(require("./forms/formLoadAction"));
3763var _formSubmitAction = require("./forms/formSubmitAction");
3764var _analytics7 = require("./facet-search/analytics");
3765var _analytics8 = require("./tab-group/analytics");
3766var _attribution = require("../../../../components/attribution/attribution");
3767var _attributionAnalytics = require("./attribution/attributionAnalytics");
3768var _analytics9 = _interopRequireDefault(require("./mcp/analytics"));
3769function analyticsInit() {
3770  (0, _formLoadAction.default)();
3771  (0, _formSubmitAction.formSubmitAction)();
3772  (0, _analytics.analytics)();
3773  (0, _analytics3.searchAnalytics)();
3774  (0, _searchSubmitAction.searchSubmitAnalytics)();
3775  (0, _supportSearchSubmit.supportSearchAnalytics)();
3776  (0, _productSearchSubmit.productSearchAnalytics)();
3777  (0, _analytics6.analytics)();
3778  (0, _analytics7.analytics)();
3779  (0, _analytics8.analytics)();
3780  (0, _analytics9.default)();
3781}
3782function productsAnalytics() {
3783  (0, _requestPricingAndCustomizeProductsAnaytics.analytics)();
3784  (0, _analytics4.analytics)();
3785  (0, _productIncrementAnalytics.analytics)();
3786}
3787function reattachDynamicAnalytics(event) {
3788  if (!(event !== null && event !== void 0 && event.detail)) {
3789    return;
3790  }
3791  (0, _formLoadAction.default)(event.detail);
3792}
3793document.addEventListener('DOMContentLoaded', function (event) {
3794  (0, _analytics2.analytics)();
3795  analyticsInit();
3796});
3797document.addEventListener('bundlesLoadComplete', _analytics5.analytics);
3798document.addEventListener('productsLoadComplete', productsAnalytics);
3799document.addEventListener('targetContentInjected', reattachDynamicAnalytics);
3800document.addEventListener(_attribution.ATTRIBUTION_EVENT, _attributionAnalytics.attributionAnalytics);
3801
3802}
3802,{"../../../../components/attribution/attribution":69,"./add-to-cart/analytics":74,"./add-to-cart/productIncrementAnalytics":75,"./add-to-cart/requestPricingAndCustomizeProductsAnaytics":76,"./attribution/attributionAnalytics":77,"./bundles/analytics":78,"./facet-search/analytics":79,"./forms/formLoadAction":80,"./forms/formSubmitAction":81,"./general/analytics":82,"./global-nav/analytics":83,"./mcp/analytics":85,"./search/analytics":86,"./search/productSearchSubmit":87,"./search/searchSubmitAction":88,"./search/supportSearchSubmit":89,"./sticky-nav/analytics":90,"./tab-group/analytics":91,"@babel/runtime/helpers/interopRequireDefault":6}],85:[function(require,module,exports){
3803"use strict";
3804
3805var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3806Object.defineProperty(exports, "__esModule", {
3807  value: true
3808});
3809exports.default = mcpAnalytics;
3810var _errorActionEvent = require("../../../acdl/js/pageAction/errorActionEvent");
3811var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3812var _linkUtils = require("../../../acdl/js/handlers/linkUtils");
3813var _cartData = require("../../../acdl/js/dataObject/cartData");
3814var _productCartAddActionEvent = require("../../../acdl/js/pageAction/productCartAddActionEvent");
3815var _user = _interopRequireDefault(require("../../../../../components/utilities/ecommerce/user"));
3816var _ecommerce = _interopRequireDefault(require("../../../../../components/utilities/ecommerce/ecommerce"));
3817function handleAddToCartClick(event) {
3818  var _ref = (event === null || event === void 0 ? void 0 : event.detail) || {},
3819    eventType = _ref.eventType,
3820    products = _ref.products,
3821    link = _ref.link,
3822    messageObj = _ref.messageObj,
3823    template = _ref.template;
3824  if (eventType === 'addToCartError') {
3825    var errorMessages = [{
3826      errorType: 'mcp - add to cart',
3827      errorMessage: 'unknown error'
3828    }];
3829    if (Object.keys(messageObj).length > 0) {
3830      errorMessages = [messageObj];
3831    }
3832    var errorDataLayerJson = (0, _errorActionEvent.errorActionEvent)(errorMessages, 'click');
3833    (0, _pushToDataLayer.pushToDataLayer)(errorDataLayerJson);
3834  } else if (eventType === 'addToCartSuccess') {
3835    var userProfile = _user.default.getProfileLocalStorage(_ecommerce.default);
3836    if (!userProfile) {
3837      return;
3838    }
3839    var cartObject = {
3840      cartId: userProfile.cartId || null,
3841      currencyCode: userProfile.currency || null
3842    };
3843    var productsObject = [];
3844    products.forEach(function (product) {
3845      var _ref2 = product || {},
3846        partNumber = _ref2.partNumber,
3847        sku = _ref2.sku,
3848        quantity = _ref2.quantity;
3849      var skuValue = partNumber || sku || '';
3850      var productElement = document.querySelector("[data-sku=\"".concat(skuValue, "\"]"));
3851      var l04Value = productElement.getAttribute('data-l04') || '';
3852      var nameValue = productElement.getAttribute('data-name') || '';
3853      var idValue = productElement.getAttribute('data-material-number') || '';
3854      productsObject.push({
3855        numbersOfUnitsAdded: quantity,
3856        productBundle: null,
3857        productID: idValue,
3858        productL04: l04Value,
3859        productName: nameValue,
3860        productSKU: skuValue
3861      });
3862    });
3863    var linkData = (0, _linkUtils.createLinkData)(link, 'addtocart');
3864    var cartDetails = (0, _cartData.cartDetailsData)(cartObject);
3865    var productFindingMethod = template;
3866    var domEventType = 'click';
3867    var successDataLayerJson = (0, _productCartAddActionEvent.productCartAddActionEvent)(linkData, productsObject, cartDetails, productFindingMethod, domEventType);
3868    (0, _pushToDataLayer.pushToDataLayer)(successDataLayerJson);
3869  }
3870}
3871function mcpAnalytics() {
3872  document.addEventListener('mcpAnalyticsEvent', handleAddToCartClick);
3873}
3874
3875},{"../../../../../components/utilities/ecommerce/ecommerce":71,"../../../../../components/utilities/ecommerce/user":72,"../../../acdl/js/dataObject/cartData":92,"../../../acdl/js/handlers/linkUtils":107,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/errorActionEvent":117,"../../../acdl/js/pageAction/productCartAddActionEvent":123,"@babel/runtime/helpers/interopRequireDefault":6}],86:[function(require,module,exports){
3876"use strict";
3877
3878Object.defineProperty(exports, "__esModule", {
3879  value: true
3880});
3881exports.handleFilterClick = handleFilterClick;
3882exports.isSearchIncludedElement = isSearchIncludedElement;
3883exports.searchAnalytics = searchAnalytics;
3884var _commonUtils = require("../../../acdl/js/handlers/commonUtils.js");
3885var _linkData = require("../../../acdl/js/dataObject/linkData");
3886var _searchActionEvent = require("../../../acdl/js/pageAction/searchActionEvent");
3887var _searchUtils = require("../../../acdl/js/handlers/searchUtils.js");
3888function searchAnalytics() {
3889  var filterArea = document.querySelector('.radio-list');
3890  if (filterArea) {
3891    filterArea.addEventListener('click', handleFilterClick);
3892  }
3893}
3894function handleFilterClick(event) {
3895  var targetNode = event.target;
3896  if (targetNode.nodeName.toLowerCase() === 'input' && isSearchIncludedElement(targetNode)) {
3897    var filterLabel = (0, _commonUtils.getLowerCase)(targetNode.parentElement.innerText.trim());
3898    var linkContent = (0, _linkData.setLinkData)(filterLabel, "other", "search_results", null);
3899    var searchDetails = (0, _searchUtils.getSearchDataParams)("click");
3900    var dataLayerJson = (0, _searchActionEvent.searchSubmitActionEvent)(linkContent, searchDetails, 'click');
3901    (0, _searchUtils.pushToDataLayerAfterSearchCompletion)(dataLayerJson);
3902  }
3903}
3904function isSearchIncludedElement(target) {
3905  if (target.closest('.ilmn-global-search__input-group') && target.classList.contains('btn-primary')) {
3906    return true;
3907  } else if (target.closest('.facet-list') && target.closest('.search-facet')) {
3908    return true;
3909  } else if (((0, _commonUtils.getLowerCase)(target.nodeName) === 'b' || (0, _commonUtils.getLowerCase)(target.nodeName) === 'a') && target.closest('.tt-topresults')) {
3910    return true;
3911  } else if (target.classList.contains('pagin')) {
3912    return true;
3913  } else if (((0, _commonUtils.getLowerCase)(target.nodeName) === 'b' || (0, _commonUtils.getLowerCase)(target.nodeName) === 'a') && target.closest('.results-title')) {
3914    return true;
3915  }
3916  return false; // Return false if none of the conditions match
3917}
3918
3919},{"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/commonUtils.js":102,"../../../acdl/js/handlers/searchUtils.js":113,"../../../acdl/js/pageAction/searchActionEvent":129}],87:[function(require,module,exports){
3920"use strict";
3921
3922Object.defineProperty(exports, "__esModule", {
3923  value: true
3924});
3925exports.getProductSubmitDataLayerObject = getProductSubmitDataLayerObject;
3926exports.productSearchAnalytics = productSearchAnalytics;
3927var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3928var _linkData = require("../../../acdl/js/dataObject/linkData");
3929var _searchActionEvent = require("../../../acdl/js/pageAction/searchActionEvent");
3930var _searchUtils = require("../../../acdl/js/handlers/searchUtils");
3931function productSearchAnalytics() {
3932  var searchSubmitElement = document.querySelector("#search-products-form");
3933  if (searchSubmitElement) {
3934    searchSubmitElement.addEventListener("click", function (event) {
3935      if ((0, _commonUtils.isClickable)(event)) {
3936        getProductSubmitDataLayerObject(event);
3937      }
3938    }, false);
3939  }
3940}
3941function getProductSubmitDataLayerObject() {
3942  var linkData = (0, _linkData.setLinkData)("search", "other", "search", null);
3943  var searchDetails = (0, _searchUtils.getSearchDataParams)("submit");
3944  if (window.sessionStorage.getItem('fromProductPage') !== 'true') {
3945    window.sessionStorage.setItem('fromProductPage', 'true');
3946  } else if (window.sessionStorage.getItem('fromProductPage') === 'true') {
3947    window.sessionStorage.setItem('fromProductPage', 'false');
3948  }
3949  var domEventType = "submit";
3950  var dataLayerJson = (0, _searchActionEvent.searchSubmitActionEvent)(linkData, searchDetails, domEventType);
3951  return dataLayerJson;
3952}
3953
3954},{"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/searchUtils":113,"../../../acdl/js/pageAction/searchActionEvent":129}],88:[function(require,module,exports){
3955"use strict";
3956
3957Object.defineProperty(exports, "__esModule", {
3958  value: true
3959});
3960exports.addSearchResultForClick = void 0;
3961exports.pushSearchSubmitDataLayerObject = pushSearchSubmitDataLayerObject;
3962exports.searchSubmitAnalytics = searchSubmitAnalytics;
3963var _searchUtils = require("../../../acdl/js/handlers/searchUtils");
3964var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
3965var _linkUtils = require("../../../acdl/js/handlers/linkUtils");
3966var _searchActionEvent = require("../../../acdl/js/pageAction/searchActionEvent");
3967var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
3968// Constants
3969var EVENT_CLICK = 'click';
3970var EVENT_SUBMIT = 'submit';
3971var SEARCH = "search";
3972function searchSubmitAnalytics() {
3973  var searchElementBtn = document.querySelector(".ilmn-global-search__input-group");
3974  var searchResultElement = document.querySelector(".site-search-results");
3975  var searchResultPagination = document.querySelector(".pagination");
3976  if (searchElementBtn) {
3977    (0, _searchUtils.setClickEvent)(searchElementBtn);
3978    searchElementBtn.addEventListener("keydown", handleSearchKeydown, false);
3979  }
3980  if (searchResultElement) {
3981    (0, _searchUtils.setClickEvent)(searchResultElement);
3982  }
3983  if (searchResultPagination) {
3984    (0, _searchUtils.setClickEvent)(searchResultPagination);
3985  }
3986}
3987function handleSearchKeydown(event) {
3988  if ((0, _commonUtils.getLowerCase)(event.key) === "enter") {
3989    pushSearchSubmitDataLayerObject(event);
3990  }
3991}
3992function pushSearchSubmitDataLayerObject(event) {
3993  var searchDetails = (0, _searchUtils.getSearchDataParams)(EVENT_SUBMIT);
3994  searchDetails.searchFormName = 'site search';
3995  searchDetails.searchKeywordSuggested = null;
3996  var linkData = setSearchDetailsSubmitType(searchDetails, event);
3997  var getSearchKeywordSuggested = window.sessionStorage.getItem('searchKeywordSuggested');
3998  if (getSearchKeywordSuggested !== null) {
3999    searchDetails.searchKeywordSuggested = getSearchKeywordSuggested;
4000    searchDetails.searchSubmitType = EVENT_CLICK;
4001    if (searchDetails.searchKeyword === null) {
4002      searchDetails.searchKeyword = getSearchKeywordSuggested;
4003    }
4004    window.sessionStorage.removeItem(getSearchKeywordSuggested);
4005  }
4006  var domEventType = EVENT_CLICK;
4007  if (event.type === 'keydown') {
4008    domEventType = EVENT_SUBMIT;
4009  }
4010  setSearchDetailsQuickLinks(event, searchDetails, domEventType, linkData);
4011  var dataLayerJson = (0, _searchActionEvent.searchSubmitActionEvent)(linkData, searchDetails, domEventType);
4012  if (event.target.closest('.results-title')) {
4013    dataLayerJson.event = 'searchResultLinkAction';
4014    if (event.target.closest('.site-search-results') && event.target.closest('.result')) {
4015      dataLayerJson.searchDetails.searchResultNumber = (Array.prototype.indexOf.call(event.target.closest('.site-search-results').children, event.target.closest('.result')) + 1).toString();
4016    }
4017  }
4018  if (event.target.classList.contains('pagin')) {
4019    dataLayerJson.event = 'searchResultLinkAction';
4020    searchDetails.searchSubmitType = EVENT_CLICK;
4021  }
4022  if (dataLayerJson.searchDetails.searchResultNumber) {
4023    addSearchResultForClick(dataLayerJson);
4024    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4025  } else {
4026    (0, _searchUtils.pushToDataLayerAfterSearchCompletion)(dataLayerJson);
4027  }
4028}
4029function setSearchDetailsSubmitType(searchDetails, event) {
4030  var target = event.target,
4031    type = event.type,
4032    key = event.key;
4033  var elementName = target.nodeName.toLowerCase();
4034  var isParentLink = target.parentElement.nodeName === "A";
4035  var linkData = null;
4036  if (isParentLink && elementName !== "a") {
4037    linkData = (0, _linkUtils.createLinkData)(target.parentElement, SEARCH);
4038    searchDetails.searchSubmitType = EVENT_CLICK;
4039    return linkData;
4040  } else if (elementName === "a") {
4041    var closestPagination = target.closest('.pagination');
4042    linkData = closestPagination ? (0, _linkUtils.createLinkDataForPagination)(target, SEARCH) : (0, _linkUtils.createLinkData)(target, SEARCH);
4043    searchDetails.searchSubmitType = EVENT_CLICK;
4044    return linkData;
4045  } else {
4046    linkData = (0, _linkUtils.createLinkDataForButton)(target, SEARCH);
4047    searchDetails.searchSubmitType = type === EVENT_CLICK ? EVENT_CLICK : key.toLowerCase() === "enter" ? "enter" : "";
4048    return linkData;
4049  }
4050}
4051function setSearchDetailsQuickLinks(event, searchDetails, domEventType, linkData) {
4052  if (event.target.closest('.tt-topresults')) {
4053    searchDetails.searchFormName = 'quick links';
4054    var parentListItem = event.target.parentElement;
4055    if (parentListItem && parentListItem.parentElement) {
4056      searchDetails.searchResultNumber = (Array.prototype.indexOf.call(parentListItem.parentElement.children, parentListItem) + 1).toString();
4057    }
4058    searchDetails.searchResultTitle = linkData.linkContent || null;
4059    if (searchDetails.searchKeyword === null) {
4060      searchDetails.searchKeyword = document.querySelectorAll('.ilmn-global-search__input')[1].value;
4061    }
4062  }
4063}
4064var addSearchResultForClick = exports.addSearchResultForClick = function addSearchResultForClick(dataLayerJson) {
4065  if (window.sessionStorage.getItem("searchNumberOfResults") !== undefined) {
4066    dataLayerJson.searchDetails.searchNumberOfResults = window.sessionStorage.getItem("searchNumberOfResults");
4067  }
4068  (0, _searchUtils.setSearchPagination)(dataLayerJson);
4069  return dataLayerJson;
4070};
4071
4072},{"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/linkUtils":107,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/handlers/searchUtils":113,"../../../acdl/js/pageAction/searchActionEvent":129}],89:[function(require,module,exports){
4073"use strict";
4074
4075Object.defineProperty(exports, "__esModule", {
4076  value: true
4077});
4078exports.getSupportSubmitDataLayerObject = getSupportSubmitDataLayerObject;
4079exports.supportSearchAnalytics = supportSearchAnalytics;
4080var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
4081var _linkData = require("../../../acdl/js/dataObject/linkData");
4082var _searchActionEvent = require("../../../acdl/js/pageAction/searchActionEvent");
4083var _searchUtils = require("../../../acdl/js/handlers/searchUtils");
4084function supportSearchAnalytics() {
4085  var searchSubmitElement = document.querySelector("#search-support-form");
4086  if (searchSubmitElement) {
4087    searchSubmitElement.addEventListener("click", function (event) {
4088      if ((0, _commonUtils.isClickable)(event)) {
4089        getSupportSubmitDataLayerObject(event);
4090      }
4091    }, false);
4092  }
4093}
4094function getSupportSubmitDataLayerObject() {
4095  var linkData = (0, _linkData.setLinkData)("search", "other", "search", null);
4096  var searchDetails = (0, _searchUtils.getSearchDataParams)('submit');
4097  var domEventType = "submit";
4098  var dataLayerJson = (0, _searchActionEvent.searchSubmitActionEvent)(linkData, searchDetails, domEventType);
4099  return dataLayerJson;
4100}
4101
4102},{"../../../acdl/js/dataObject/linkData":94,"../../../acdl/js/handlers/commonUtils":102,"../../../acdl/js/handlers/searchUtils":113,"../../../acdl/js/pageAction/searchActionEvent":129}],90:[function(require,module,exports){
4103"use strict";
4104
4105Object.defineProperty(exports, "__esModule", {
4106  value: true
4107});
4108exports.analytics = analytics;
4109var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
4110var _actionUtils = require("../../../acdl/js/handlers/actionUtils");
4111function analytics() {
4112  var stickyNavElements = document.querySelectorAll('.sticky-menu, .stickynav__menu');
4113  stickyNavElements.forEach(function (stickyNavElement) {
4114    stickyNavElement.addEventListener('click', function (event) {
4115      if ((0, _commonUtils.isClickable)(event)) {
4116        (0, _actionUtils.pushMenuActionObjectFromAttribute)(event, 'sticky nav');
4117      }
4118    }, false);
4119  });
4120}
4121module.exports.default = analytics;
4122
4123},{"../../../acdl/js/handlers/actionUtils":101,"../../../acdl/js/handlers/commonUtils":102}],91:[function(require,module,exports){
4124"use strict";
4125
4126Object.defineProperty(exports, "__esModule", {
4127  value: true
4128});
4129exports.analytics = analytics;
4130var _componentActionEvent = require("../../../acdl/js/pageAction/componentActionEvent");
4131var _linkUtils = require("../../../acdl/js/handlers/linkUtils");
4132var _pushToDataLayer = require("../../../acdl/js/handlers/pushToDataLayer");
4133function analytics() {
4134  document.addEventListener('tabClick', function (event) {
4135    var _event$detail, _event$detail2;
4136    var linkData = (_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.linkData;
4137    var componentData = (_event$detail2 = event.detail) === null || _event$detail2 === void 0 ? void 0 : _event$detail2.componentData;
4138    if (!linkData || !componentData) {
4139      return;
4140    }
4141    var dataLayerJson = (0, _componentActionEvent.componentActionEvent)(linkData, componentData, 'click');
4142    (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4143  });
4144}
4145
4146},{"../../../acdl/js/handlers/linkUtils":107,"../../../acdl/js/handlers/pushToDataLayer":112,"../../../acdl/js/pageAction/componentActionEvent":116}],92:[function(require,module,exports){
4147"use strict";
4148
4149Object.defineProperty(exports, "__esModule", {
4150  value: true
4151});
4152exports.cartDetailsData = cartDetailsData;
4153function cartDetailsData(cartDataObj) {
4154  var isEmptyCart = window.localStorage.getItem('isCartEmpty') ? JSON.parse(window.localStorage.getItem('isCartEmpty')) : null;
4155  var cartData = {
4156    'cartID': cartDataObj.cartID || null,
4157    'addingToEmptyCart': isEmptyCart,
4158    'currencyCode': cartDataObj.currencyCode || null
4159  };
4160  return cartData;
4161}
4162
4163},{}],93:[function(require,module,exports){
4164"use strict";
4165
4166Object.defineProperty(exports, "__esModule", {
4167  value: true
4168});
4169exports.default = setFormData;
4170function setFormData(id, name, url, handler, userId) {
4171  var formId = id || null;
4172  var formName = name || null;
4173  var formUrl = url || null;
4174  var formHandler = handler || null;
4175  var formUserId = userId || null;
4176  var formDataObj = {
4177    "formID": formId,
4178    "formName": formName,
4179    "formURL": formUrl,
4180    "formHandler": formHandler,
4181    "formUserID": formUserId
4182  };
4183  return formDataObj;
4184}
4185
4186},{}],94:[function(require,module,exports){
4187"use strict";
4188
4189Object.defineProperty(exports, "__esModule", {
4190  value: true
4191});
4192exports.getLinkType = getLinkType;
4193exports.setLinkData = setLinkData;
4194var _commonUtils = require("../handlers/commonUtils");
4195function setLinkData(linkContent, linkType, linkRegion, linkURL, gatedContent) {
4196  var linkDataObj = {
4197    'linkContent': (0, _commonUtils.getLowerCase)(linkContent) || null,
4198    'linkType': linkType || null,
4199    'linkRegion': linkRegion || null,
4200    'linkURL': linkURL || null,
4201    'gatedContent': gatedContent || null
4202  };
4203  return linkDataObj;
4204}
4205function getLinkType(linkURL) {
4206  var regex = /\.(exe|zip|wav|mp3|mp4|mov|mpg|avi|wmv|pdf|doc|docx|xl
4206s|xlsx|ppt|pptx|bam|fastq|csv|txt|msi|rpm|bed|tar|gz|bz2|xml|egt|ics)$/i;
4207  var internalDomain = ['illumina.com', 'illumina.webex.com', 'understandyourgenome.com', 'eventregistration.illumina.com', '/content/illumina-marketing/', '/content/illumina-support/', '/content/dam/illumina-marketing/', '/content/dam/illumina-support/'];
4208  if (regex.exec(linkURL)) {
4209    return 'download';
4210  } else if (internalDomain.some(function (x) {
4211    return linkURL.includes(x);
4212  }) || linkURL.startsWith('/') || linkURL.startsWith('#')) {
4213    return 'other';
4214  } else {
4215    return 'exit';
4216  }
4217}
4218
4219},{"../handlers/commonUtils":102}],95:[function(require,module,exports){
4220"use strict";
4221
4222Object.defineProperty(exports, "__esModule", {
4223  value: true
4224});
4225exports.setMenuData = setMenuData;
4226function setMenuData(menuName, menuTopLevelCategory, menuSecondLevelCategory) {
4227  // need send the menu values from component analytics js file, because this file would just have common logic, but not component specific logic
4228
4229  var menuDataObj = {
4230    "menuName": menuName,
4231    "menuTopLevelCategory": menuTopLevelCategory,
4232    "menuSecondLevelCategory": menuSecondLevelCategory
4233  };
4234  return menuDataObj;
4235}
4236
4237},{}],96:[function(require,module,exports){
4238"use strict";
4239
4240Object.defineProperty(exports, "__esModule", {
4241  value: true
4242});
4243exports.default = void 0;
4244var _commonUtils = require("../handlers/commonUtils");
4245// eslint-disable-next-line complexity
4246var pageObject = function pageObject() {
4247  var pageObj = {};
4248  var regionTag = document.querySelector('meta[name="region"]');
4249  var localeTag = document.querySelector('meta[name="locale"]');
4250  var entityIdTag = document.querySelector('meta[name="entityId"]');
4251  var pageTemplateTag = document.querySelector('meta[name="pageTemplate"]');
4252  var siteBreadCrumbTag = document.querySelector('meta[name="siteBreadCrumb"]');
4253  var pageTypeTag = document.querySelector('meta[name="pageType"]');
4254  var siteIdTag = document.querySelector('meta[name="siteId"]');
4255  var siteSectionTag = document.querySelector('meta[name="siteSection"]');
4256  var siteRegion = regionTag ? regionTag.content : null;
4257  var locale = localeTag ? localeTag.content : null;
4258  var entityId = entityIdTag ? entityIdTag.content : null;
4259  var pageTemplate = pageTemplateTag ? pageTemplateTag.content : null;
4260  var breadCrumb = siteBreadCrumbTag ? siteBreadCrumbTag.content : null;
4261  var pageType = pageTypeTag ? pageTypeTag.content : null;
4262  var siteId = siteIdTag ? siteIdTag.content : null;
4263  var siteSection = siteSectionTag ? siteSectionTag.content : null;
4264  var siteLanguage = locale || null;
4265  if (window.location.hostname === 'emea.support.illumina.com') {
4266    siteRegion = 'emea';
4267    siteLanguage = 'en_GB';
4268  } else if (window.location.hostname === 'sapac.support.illumina.com') {
4269    siteRegion = 'spac';
4270    siteLanguage = 'en_AU';
4271  }
4272  pageObj = {
4273    "pageName": (0, _commonUtils.getLowerCase)(document.title),
4274    "pageType": pageType,
4275    "pageTemplate": pageTemplate,
4276    "siteRegion": siteRegion,
4277    "siteLanguage": siteLanguage,
4278    "siteBreadCrumb": breadCrumb,
4279    "entityId": entityId,
4280    "siteID": siteId,
4281    "siteSection": siteSection
4282  };
4283  return pageObj;
4284};
4285var _default = exports.default = pageObject;
4286
4287},{"../handlers/commonUtils":102}],97:[function(require,module,exports){
4288"use strict";
4289
4290Object.defineProperty(exports, "__esModule", {
4291  value: true
4292});
4293exports.setProductData = setProductData;
4294function setProductData(productSKU, productL04) {
4295  var productDataObj = {
4296    "productID": null,
4297    "productSKU": productSKU,
4298    "productL04": productL04,
4299    "productName": null,
4300    "productBundle": null
4301  };
4302  return productDataObj;
4303}
4304
4305},{}],98:[function(require,module,exports){
4306"use strict";
4307
4308Object.defineProperty(exports, "__esModule", {
4309  value: true
4310});
4311exports.setPromoData = setPromoData;
4312function setPromoData(promoName, promoLocation, batchDate, userSegment) {
4313  var promoDataObj = {
4314    "promoID": null,
4315    "promoName": promoName,
4316    "promoLocation": promoLocation,
4317    "batchDate": batchDate,
4318    "userSegment": userSegment
4319  };
4320  return promoDataObj;
4321}
4322
4323},{}],99:[function(require,module,exports){
4324"use strict";
4325
4326Object.defineProperty(exports, "__esModule", {
4327  value: true
4328});
4329exports.searchData = searchData;
4330var _commonUtils = require("../handlers/commonUtils");
4331function searchData(keyword, numberOfResults, pageNumber, filterCategory, filterValue, submitType) {
4332  var searchKeyword = keyword || null;
4333  var searchNumberOfResults = numberOfResults || null;
4334  var searchPagination = pageNumber || null;
4335  var searchFilterCategory = filterCategory || null;
4336  var searchFilterValue = filterValue || null;
4337  var searchSubmitType = submitType || 'submit';
4338  var searchDataObj = {
4339    "searchKeyword": (0, _commonUtils.getLowerCase)(searchKeyword),
4340    "searchNumberOfResults": searchNumberOfResults,
4341    "searchPagination": searchPagination,
4342    "searchFilters": [{
4343      "searchFilterCategory": searchFilterCategory,
4344      "searchFilterValue": (0, _commonUtils.getLowerCase)(searchFilterValue)
4345    }],
4346    "searchSubmitType": searchSubmitType
4347  };
4348  return searchDataObj;
4349}
4350
4351},{"../handlers/commonUtils":102}],100:[function(require,module,exports){
4352"use strict";
4353
4354Object.defineProperty(exports, "__esModule", {
4355  value: true
4356});
4357exports.default = userData;
4358var _userUtils = require("../handlers/userUtils");
4359// eslint-disable-next-line @typescript-eslint/no-var-requires
4360var getCookie = require('ilmn/getCookie');
4361function localStorageHasItem(key) {
4362  return window.localStorage.getItem(key) && window.localStorage.getItem(key) !== null && window.localStorage.getItem(key) !== 'null';
4363}
4364
4365// eslint-disable-next-line complexity
4366function userData() {
4367  var _window$ecommerce;
4368  var cookieSegment = getCookie('ILMN_PrefSegment') ? getCookie('ILMN_PrefSegment') : null;
4369  // const analyticsSegments = localStorageHasItem('kxilluminadmp_segs') ? window.localStorage.getItem('kxilluminadmp_segs') : null;
4370  var loginStatus = (_window$ecommerce = window.ecommerce) !== null && _window$ecommerce !== void 0 && _window$ecommerce.isLoggedIn ? 'logged-in' : 'logged-out';
4371  var myIlluminaUserType = localStorageHasItem('myIlluminaUserType') && loginStatus === 'logged-in' ? JSON.parse(window.localStorage.getItem('myIlluminaUserType')) : null;
4372  var myIlluminaID = localStorageHasItem('myIlluminaID') && loginStatus === 'logged-in' ? window.localStorage.getItem('myIlluminaID') : null;
4373  var prospectId = (0, _userUtils.getSessionProspectId)();
4374  // const segArr = [];
4375  // if (analyticsSegments) {
4376  // 	const segValues = analyticsSegments.split(',');
4377  // 	segValues.map((element) => {
4378  // 		const ks = 'ks:';
4379  // 		const variable = ks.concat(element);
4380  // 		segArr.push(variable);
4381  // 		return segArr;
4382  // 	});
4383  // }
4384
4385  var dataLayerJson = {
4386    'myIlluminaID': myIlluminaID,
4387    'myIlluminaUserType': myIlluminaUserType,
4388    'cookieSegment': cookieSegment,
4389    // 'personaID': segArr,  TODO: Might need to pass an empty array here based on Daniel's QC
4390    'loginStatus': loginStatus,
4391    'prospectId': prospectId
4392  };
4393  if (loginStatus === 'logged-out' || !loginStatus) {
4394    delete dataLayerJson['myIlluminaID'];
4395    window.localStorage.removeItem('myIlluminaUserType');
4396    window.localStorage.removeItem('myIlluminaID');
4397  }
4398  return dataLayerJson;
4399}
4400
4401},{"../handlers/userUtils":114,"ilmn/getCookie":24}],101:[function(require,module,exports){
4402"use strict";
4403
4404Object.defineProperty(exports, "__esModule", {
4405  value: true
4406});
4407exports.pushContentPromoToDataLayer = pushContentPromoToDataLayer;
4408exports.pushGeneralLinkActionToDataLayer = pushGeneralLinkActionToDataLayer;
4409exports.pushLegacyContentPromoToDataLayer = pushLegacyContentPromoToDataLayer;
4410exports.pushLegacyMerchandisingPromoToDataLayer = pushLegacyMerchandisingPromoToDataLayer;
4411exports.pushMenuActionDataLayerObject = pushMenuActionDataLayerObject;
4412exports.pushMenuActionObjectFromAttribute = pushMenuActionObjectFromAttribute;
4413exports.pushMerchandisingPromoToDataLayer = pushMerchandisingPromoToDataLayer;
4414exports.pushPromoImpressionToDataLayer = pushPromoImpressionToDataLayer;
4415var _pushToDataLayer = require("./pushToDataLayer");
4416var _promoUtils = require("./promoUtils");
4417var _linkUtils = require("./linkUtils");
4418var _menuUtils = require("./menuUtils");
4419var _menuActionEvent = require("../pageAction/menuActionEvent");
4420var _productMerchandisingActionEvent = require("../pageAction/productMerchandisingActionEvent");
4421var _promoModuleActionEvent = require("../pageAction/promoModuleActionEvent");
4422var _linkAction = require("../pageAction/linkAction");
4423var _promoModuleImpressionEvent = require("../pageAction/promoModuleImpressionEvent");
4424function pushMenuActionDataLayerObject(event, componentName) {
4425  var link = (0, _linkUtils.getLinkData)(event.target, componentName);
4426  var menu = (0, _menuUtils.createMenuData)(event.target);
4427  var domEventType = event.type;
4428  var dataLayerJson = (0, _menuActionEvent.menuActionEvent)(link, menu, domEventType);
4429  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4430}
4431function pushMenuActionObjectFromAttribute(event, componentName) {
4432  var link = (0, _linkUtils.createLinkDataFromAttribute)(event.target, componentName);
4433  var menu = (0, _menuUtils.createMenuData)(event.target);
4434  var domEventType = event.type;
4435  var dataLayerJson = (0, _menuActionEvent.menuActionEvent)(link, menu, domEventType);
4436  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4437}
4438function pushMerchandisingPromoToDataLayer(element, domEventType) {
4439  var merchObj = JSON.parse(element.getAttribute('data-ilmn-cmp-data-layer'));
4440  var promoParent = element.closest('[data-layer-object-type="promos"]');
4441  var promosJson = null;
4442  if (promoParent) {
4443    var _JSON$parse;
4444    promosJson = ((_JSON$parse = JSON.parse(promoParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse === void 0 ? void 0 : _JSON$parse.promos) || {};
4445  }
4446  var menuParent = element.closest('.global-nav__tier-3-group');
4447  var menuJson = null;
4448  if (menuParent) {
4449    var _JSON$parse2;
4450    menuJson = ((_JSON$parse2 = JSON.parse(menuParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse2 === void 0 ? void 0 : _JSON$parse2.menu) || {};
4451  }
4452  var componentJson = merchObj === null || merchObj === void 0 ? void 0 : merchObj.component;
4453  var productsJson = (merchObj === null || merchObj === void 0 ? void 0 : merchObj.products) || {};
4454  var linkJson = (merchObj === null || merchObj === void 0 ? void 0 : merchObj.link) || {};
4455  var productFindingMethodType = (merchObj === null || merchObj === void 0 ? void 0 : merchObj.productFindingMethod) || null;
4456  var dataLayerJson = (0, _productMerchandisingActionEvent.productMerchandisingActionEvent)(linkJson, productsJson, productFindingMethodType, domEventType, componentJson, promosJson, menuJson);
4457  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4458}
4459function pushLegacyMerchandisingPromoToDataLayer(element, domEventType) {
4460  var promoJson = (0, _promoUtils.getMerchandisingPromo)(element);
4461  var linkJson = (0, _linkUtils.createLinkDataForPromo)(element);
4462  var productFindingMethodType = element.hasAttribute('data-track-retail-type') ? element.getAttribute('data-track-retail-type') 
4462: null;
4463  var dataLayerJson = (0, _productMerchandisingActionEvent.productMerchandisingActionEvent)(linkJson, promoJson, productFindingMethodType, domEventType);
4464  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4465}
4466function pushContentPromoToDataLayer(element, domEventType) {
4467  var linkJson = (0, _linkUtils.createLinkDataForPromo)(element);
4468  var promosJson = {};
4469  var promoParent = element.closest('[data-layer-object-type="promos"]');
4470  if (promoParent) {
4471    var _JSON$parse3;
4472    promosJson = ((_JSON$parse3 = JSON.parse(promoParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse3 === void 0 ? void 0 : _JSON$parse3.promos) || {};
4473  }
4474  var menuParent = element.closest('.global-nav__tier-3-group');
4475  var menuJson = null;
4476  if (menuParent) {
4477    var _JSON$parse4;
4478    menuJson = ((_JSON$parse4 = JSON.parse(menuParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse4 === void 0 ? void 0 : _JSON$parse4.menu) || {};
4479  }
4480  var dataLayerJson = (0, _promoModuleActionEvent.promoModuleActionEvent)(linkJson, promosJson, domEventType, menuJson);
4481  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4482}
4483function pushLegacyContentPromoToDataLayer(element, domEventType) {
4484  var promoJson = (0, _promoUtils.getLegacyContentPromo)(element);
4485  var linkJson = (0, _linkUtils.createLinkDataForPromo)(element);
4486  var dataLayerJson = (0, _promoModuleActionEvent.promoModuleActionEvent)(linkJson, promoJson, domEventType);
4487  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4488}
4489function pushGeneralLinkActionToDataLayer(element, domEventType) {
4490  var linkJson = (0, _linkUtils.getLinkData)(element, 'general link');
4491  var dataLayerJson = (0, _linkAction.linkActionEvent)(linkJson, domEventType);
4492  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4493}
4494function pushPromoImpressionToDataLayer(element) {
4495  if (!element) {
4496    return;
4497  }
4498  var promoCta = element.querySelector('.global-nav__promo-card-cta');
4499  var linkJson = promoCta ? (0, _linkUtils.createLinkDataForPromo)(promoCta) : (0, _linkUtils.createLinkDataForPromo)(element);
4500  var promoJson = {};
4501  var promoParent = element.closest('[data-layer-object-type="promos"]');
4502  if (promoParent) {
4503    var _JSON$parse5;
4504    promoJson = ((_JSON$parse5 = JSON.parse(promoParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse5 === void 0 ? void 0 : _JSON$parse5.promos) || {};
4505  }
4506  var menuParent = element.closest('.global-nav__tier-3-group');
4507  var menuJson = null;
4508  if (menuParent) {
4509    var _JSON$parse6;
4510    menuJson = ((_JSON$parse6 = JSON.parse(menuParent.getAttribute('data-ilmn-cmp-data-layer'))) === null || _JSON$parse6 === void 0 ? void 0 : _JSON$parse6.menu) || null;
4511  }
4512  var dataLayerJson = (0, _promoModuleImpressionEvent.promoModuleImpressionEvent)(linkJson, promoJson, menuJson);
4513  (0, _pushToDataLayer.pushToDataLayer)(dataLayerJson);
4514}
4515
4516},{"../pageAction/linkAction":121,"../pageAction/menuActionEvent":122,"../pageAction/productMerchandisingActionEvent":126,"../pageAction/promoModuleActionEvent":127,"../pageAction/promoModuleImpressionEvent":128,"./linkUtils":107,"./menuUtils":108,"./promoUtils":111,"./pushToDataLayer":112}],102:[function(require,module,exports){
4517"use strict";
4518
4519Object.defineProperty(exports, "__esModule", {
4520  value: true
4521});
4522exports.getClickableElement = getClickableElement;
4523exports.getLowerCase = getLowerCase;
4524exports.getQueryParameters = getQueryParameters;
4525exports.getScrollTop = getScrollTop;
4526exports.getValueFromDataLayerAttribute = getValueFromDataLayerAttribute;
4527exports.isClickable = isClickable;
4528exports.isInView = isInView;
4529exports.isPromo = isPromo;
4530exports.isVisible = isVisible;
4531function getLowerCase(text) {
4532  if (text) {
4533    return document.documentElement.lang === 'en' ? text.replace(/\s+/g, " ").toLowerCase() : text.toLowerCase();
4534  }
4535  return null;
4536}
4537function isClickable(event) {
4538  var targetElement = event.target;
4539  var hrefElement = targetElement.closest('a');
4540  var buttonElement = targetElement.closest('button');
4541  return !!(hrefElement || buttonElement);
4542}
4543function getClickableElement(event) {
4544  var targetElement = event.target;
4545  if (targetElement.tagName === 'A' || targetElement.tagName === 'BUTTON') {
4546    return targetElement;
4547  } else if (targetElement.closest('a')) {
4548    return targetElement.closest('a');
4549  } else if (targetElement.closest('button')) {
4550    return targetElement.closest('button');
4551  }
4552  return null;
4553}
4554function getQueryParameters() {
4555  var params = new Proxy(new URLSearchParams(window.location.search), {
4556    get: function get(searchParams, prop) {
4557      return searchParams.get(prop);
4558    }
4559  });
4560  return params;
4561}
4562function isPromo(event) {
4563  var componentModelData = event.target.closest('[data-ilmn-cmp-data-layer]');
4564  if (componentModelData) {
4565    var promo = JSON.parse(componentModelData.dataset.ilmnCmpDataLayer).promos;
4566    if (promo) {
4567      return true;
4568    }
4569  }
4570  return false;
4571}
4572function getValueFromDataLayerAttribute(element, property) {
4573  var returnValue = null;
4574  if (element && element.hasAttribute('data-ilmn-cmp-data-layer')) {
4575    var dataLayerObj = JSON.parse(element.getAttribute('data-ilmn-cmp-data-layer'));
4576    if (dataLayerObj) {
4577      if (typeof property === 'undefined') {
4578        returnValue = dataLayerObj;
4579      } else if (Object.prototype.hasOwnProperty.call(dataLayerObj, property)) {
4580        returnValue = dataLayerObj[property];
4581      }
4582    }
4583  }
4584  return returnValue;
4585}
4586function isVisible(element) {
4587  return element.offsetHeight > 0 && element.offsetWidth > 0;
4588}
4589function getScrollTop() {
4590  if (typeof window.pageYOffset !== 'undefined') {
4591    return window.pageYOffset;
4592  } else {
4593    var _document = document,
4594      body = _document.body;
4595    var _document2 = document,
4596      documentElement = _document2.documentElement;
4597    documentElement = documentElement.clientHeight ? documentElement : body;
4598    return documentElement.scrollTop;
4599  }
4600}
4601function isInView(object) {
4602  var windowTop = getScrollTop();
4603  var windowBottom = windowTop + window.innerHeight;
4604  var objectTop = object.getBoundingClientRect().top + document.documentElement.scrollTop;
4605  var objectBottom = objectTop + object.offsetHeight;
4606  var offset = 0;
4607  if (objectTop <= windowBottom + offset && objectBottom >= windowTop) {
4608    return true;
4609  }
4610  return false;
4611}
4612
4613},{}],103:[function(require,module,exports){
4614"use strict";
4615
4616Object.defineProperty(exports, "__esModule", {
4617  value: true
4618});
4619exports.getFacetFilterData = getFacetFilterData;
4620function getFacetFilterData(searchDetails, componentName, isFilterRemoved) {
4621  return {
4622    searchFormName: componentName,
4623    searchKeyword: '',
4624    searchKeywordSuggested: '',
4625    searchFilters: searchDetails,
4626    searchSubmitType: '',
4627    searchFilterRemoved: isFilterRemoved
4628  };
4629}
4630
4631},{}],104:[function(require,module,exports){
4632"use strict";
4633
4634Object.defineProperty(exports, "__esModule", {
4635  value: true
4636});
4637exports.getFacetSearchData = getFacetSearchData;
4638function getFacetSearchData(cardTitle, pageNo, filterObject, index) {
4639  return {
4640    searchKeyword: '',
4641    searchFilters: filterObject || null,
4642    searchPagination: pageNo || null,
4643    searchResultNumber: index || null,
4644    searchResultTitle: cardTitle.toLowerCase() || null
4645  };
4646}
4647
4648},{}],105:[function(require,module,exports){
4649"use strict";
4650
4651Object.defineProperty(exports, "__esModule", {
4652  value: true
4653});
4654exports.abstractPardotFormDataFromUrl = abstractPardotFormDataFromUrl;
4655exports.getGatedContentValue = getGatedContentValue;
4656exports.isPardotForm = isPardotForm;
4657var _commonUtils = require("./commonUtils");
4658var _userUtils = require("./userUtils");
4659function isPardotForm(srcUrl) {
4660  return srcUrl.includes('prdt.illumina.com');
4661}
4662function abstractPardotFormDataFromUrl(prdtUrl) {
4663  var formUrl = prdtUrl ? new URL(prdtUrl) : null;
4664  var formUrlParams = prdtUrl ? new URLSearchParams(formUrl.search) : null;
4665  var formId = formUrl !== null && formUrl !== void 0 && formUrl.pathname ? formUrl.pathname.substring(formUrl.pathname.lastIndexOf('/') + 1) : null;
4666  var formName = null;
4667  var formHandler = formUrlParams.get('formhandler') ? formUrlParams.get('formhandler') : null;
4668  var formUserId = (0, _userUtils.getSessionProspectId)();
4669  return {
4670    "formID": formId,
4671    "formName": formName,
4672    "formURL": formUrl.href,
4673    "formHandler": formHandler,
4674    "formUserId": formUserId
4675  };
4676}
4677function getGatedContentValue(element) {
4678  var srcUrl = (element === null || element === void 0 ? void 0 : element.src) || null;
4679  if (srcUrl && (isPardotForm(srcUrl) || window.self !== window.top)) {
4680    element.addEventListener('click', function (event) {
4681      if ((0, _commonUtils.isClickable)(event)) {
4682        return 'gated';
4683      }
4684      return null;
4685    }, false);
4686  }
4687  return 'normal';
4688}
4689
4690},{"./commonUtils":102,"./userUtils":114}],106:[function(require,module,exports){
4691"use strict";
4692
4693Object.defineProperty(exports, "__esModule", {
4694  value: true
4695});
4696exports.getImageAltText = getImageAltText;
4697exports.getImageLink = getImageLink;
4698var _commonUtils = require("./commonUtils");
4699function getImageAltText(element) {
4700  var imgElement = element.querySelector('img');
4701  var imgAltText = imgElement.getAttribute('alt');
4702  return imgAltText ? (0, _commonUtils.getLowerCase)(imgAltText) : 'image';
4703}
4704function getImageLink(element) {
4705  var imageLink = element.closest('a') ? element.closest('a').getAttribute('href') : null;
4706  return imageLink;
4707}
4708
4709},{"./commonUtils":102}],107:[function(require,module,exports){
4710"use strict";
4711
4712Object.defineProperty(exports, "__esModule", {
4713  value: true
4714});
4715exports.createLinkData = createLinkData;
4716exports.createLinkDataForButton = createLinkDataForButton;
4717exports.createLinkDataForImage = createLinkDataForImage;
4718exports.createLinkDataForPagination = createLinkDataForPagination;
4719exports.createLinkDataForPromo = createLinkDataForPromo;
4720exports.createLinkDataForToggle = createLinkDataForToggle;
4721exports.createLinkDataForTools = createLinkDataForTools;
4722exports.createLinkDataFromAttribute = createLinkDataFromAttribute;
4723exports.createLinkDataFromIframe = createLinkDataFromIframe;
4724exports.getLinkData = getLinkData;
4725var _linkData = require("../dataObject/linkData");
4726var _commonUtils = require("./commonUtils");
4727var _imageUtils = require("./imageUtils");
4728var _formUtils = require("./formUtils");
4729function createLinkDataForImage(element, componentName) {
4730  var linkUrl = element ? (0, _imageUtils.getImageLink)(element) : null;
4731  var linkType = linkUrl ? (0, _linkData.getLinkType)(linkUrl) : 'other';
4732  var linkRegion = componentName || null;
4733  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4734  var linkContent = element.hasAttribute('alt') ? (0, _commonUtils.getLowerCase)(element.getAttribute('alt')) : 'image';
4735  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4736}
4737function createLinkDataForButton(element, componentName) {
4738  var linkUrl = element.src || null;
4739  var linkType = 'other';
4740  var linkRegion = componentName || null;
4741  var linkContent = element.innerText ? (0, _commonUtils.getLowerCase)(element.innerText).trim() : null;
4742  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4743  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4744}
4745function createLinkDataForTools(element, componentName) {
4746  var _anchorElement$queryS;
4747  var anchorElement = element.closest('a') ? element.closest('a') : null;
4748  var linkUrl = anchorElement.getAttribute('href') || null;
4749  var linkType = linkUrl ? (0, _linkData.getLinkType)(linkUrl) : 'other';
4750  var linkRegion = componentName || null;
4751  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4752  var linkContent = (_anchorElement$queryS = anchorElement.querySelector('h5')) === null || _anchorElement$queryS === void 0 ? void 0 : _anchorElement$queryS.textContent;
4753  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4754}
4755function createLinkData(element, componentName) {
4756  var linkUrl = (element === null || element === void 0 ? void 0 : element.getAttribute('href')) || null;
4757  var linkType = linkUrl ? (0, _linkData.getLinkType)(linkUrl) : 'other';
4758  var linkRegion = componentName || null;
4759  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4760  var linkContent = element !== null && element !== void 0 && element.textContent ? (0, _commonUtils.getLowerCase)(element.textContent.trim()) : null;
4761  if (element !== null && element !== void 0 && element.querySelectorAll('img').length) {
4762    linkContent = (0, _imageUtils.getImageAltText)(element);
4763  }
4764  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4765}
4766function getLinkData(element, componentName) {
4767  if (element.tagName.toLowerCase() === 'img') {
4768    return createLinkDataForImage(element, componentName);
4769  } else if (element.tagName.toLowerCase() === 'button') {
4770    return createLinkDataForButton(element, componentName);
4771  } else if (element.tagName.toLowerCase() !== 'a' && element.closest('a')) {
4772    return createLinkDataForTools(element, componentName);
4773  }
4774  return createLinkData(element, componentName);
4775}
4776function createLinkDataForPagination(element, componentName) {
4777  var linkUrl = element.getAttribute('href') || null;
4778  var linkType = linkUrl ? (0, _linkData.getLinkType)(linkUrl) : 'other';
4779  var linkRegion = componentName || null;
4780  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4781  var linkContent = element.textContent ? (0, _commonUtils.getLowerCase)(element.textContent.trim()) : null;
4782  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4783}
4784function createLinkDataForToggle(element, componentName) {
4785  var linkUrl = element.src || null;
4786  var linkType = 'other';
4787  var linkRegion = componentName || null;
4788  var linkContent = element.closest('.bottom-sheet__actions-toggle--expand') ? 'bottom-sheet toggle expand' : 'bottom-sheet toggle collapse';
4789  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4790  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4791}
4792function createLinkDataForPromo(element) {
4793  var linkUrl = element.getAttribute('href') || null;
4794  var linkType = linkUrl ? (0, _linkData.getLinkType)(linkUrl) : 'other';
4795  var linkRegion = element.hasAttribute('data-track-group') ? element.getAttribute('data-track-group') : null;
4796  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4797  var linkContent = element.textContent ? (0, _commonUtils.getLowerCase)(element.textContent.trim()) : null;
4798  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4799}
4800
4801// eslint-disable-next-line complexity
4802function createLinkDataFromAttribute(element, componentName) {
4803  var linkContent = null;
4804  var linkUrl = null;
4805  var linkRegion = null;
4806  var linkType = null;
4807  var gatedContent = (0, _formUtils.getGatedContentValue)(element) || null;
4808  var linkModelData = element.closest("[data-ilmn-cmp-data-layer]");
4809  if (linkModelData) {
4810    var _JSON$parse = JSON.parse(linkModelData.dataset.ilmnCmpDataLayer),
4811      link = _JSON$parse.link;
4812    if (link) {
4813      linkContent = link.linkContent ? (0, _commonUtils.getLowerCase)(link.linkContent) : linkContent;
4814      linkUrl = link.linkURL ? (0, _commonUtils.getLowerCase)(link.linkURL) : 'other';
4815      linkRegion = componentName || null;
4816      linkType = link.linkType ? (0, _commonUtils.getLowerCase)(link.linkType) : linkType;
4817      gatedContent = link.gatedContent ? link.gatedContent : gatedContent;
4818    }
4819  }
4820  return (0, _linkData.setLinkData)(linkContent, linkType, linkRegion, linkUrl, gatedContent);
4821}
4822function createLinkDataFromIframe(event) {
4823  var ilmnOrigin = window.parent.location.href.match('^.+illumina.co.+')[0];
4824  var target = event.target;
4825  var formUrl = sessionStorage.getItem('formUrl') ? sessionStorage.getItem('formUrl') : null;
4826  var linkClick = {
4827    "status": 'linkClicked',
4828    "linkURL": target.href,
4829    "linkContent": target.innerText,
4830    "linkRegion": 'pardot form',
4831    "gatedContent": 'gated',
4832    "formUrl": formUrl
4833  };
4834  window.parent.postMessage(linkClick, ilmnOrigin);
4835}
4836
4837},{"../dataObject/linkData":94,"./commonUtils":102,"./formUtils":105,"./imageUtils":106}],108:[function(require,module,exports){
4838"use strict";
4839
4840Object.defineProperty(exports, "__esModule", {
4841  value: true
4842});
4843exports.createMenuData = createMenuData;
4844var _menuData = require("../dataObject/menuData");
4845var _commonUtils = require("./commonUtils");
4846function createMenuData(element) {
4847  var menuName = null;
4848  var menuTopLevelName = null;
4849  var menuSecondaryLevelName = null;
4850  var menuModelData = element.closest('[data-ilmn-cmp-data-layer]');
4851  if (menuModelData) {
4852    var menu = JSON.parse(menuModelData.dataset.ilmnCmpDataLayer).menu;
4853    if (menu) {
4854      menuName = menu.menuName ? (0, _commonUtils.getLowerCase)(menu.menuName) : menuName;
4855      menuTopLevelName = menu.menuTopLevelCategory ? (0, _commonUtils.getLowerCase)(menu.menuTopLevelCategory) : menuTopLevelName;
4856      menuSecondaryLevelName = menu.menuSecondLevelCategory ? (0, _commonUtils.getLowerCase)(menu.menuSecondLevelCategory) : menuSecondaryLevelName;
4857    }
4858  }
4859  return (0, _menuData.setMenuData)(menuName, menuTopLevelName, menuSecondaryLevelName);
4860}
4861
4862},{"../dataObject/menuData":95,"./commonUtils":102}],109:[function(require,module,exports){
4863"use strict";
4864
4865Object.defineProperty(exports, "__esModule", {
4866  value: true
4867});
4868exports.elementInDrawer = elementInDrawer;
4869exports.elementInModal = elementInModal;
4870exports.getParentModal = getParentModal;
4871function elementInModal(element) {
4872  var modal = element.closest('[class*=modal]');
4873  if (modal) {
4874    return true;
4875  }
4876  return false;
4877}
4878function elementInDrawer(element) {
4879  var drawer = element.closest('.stickyMarketoForm');
4880  if (drawer) {
4881    return true;
4882  }
4883  return false;
4884}
4885function getParentModal(element) {
4886  var modal = element.closest('[class*=modal]');
4887  var parent = modal;
4888  do {
4889    parent = parent.parentNode;
4890  } while (parent.parentNode.className.split(' ').some(function (c) {
4891    return /modal.*/.test(c);
4892  }));
4893  return parent;
4894}
4895
4896},{}],110:[function(require,module,exports){
4897"use strict";
4898
4899Object.defineProperty(exports, "__esModule", {
4900  value: true
4901});
4902exports.isCustomizeLink = isCustomizeLink;
4903exports.isRequestPricing = isRequestPricing;
4904function isRequestPricing(eventObject) {
4905  var _eventObject$detail;
4906  var eventType = eventObject === null || eventObject === void 0 || (_eventObject$detail = eventObject.detail) === null || _eventObject$detail === void 0 ? void 0 : _eventObject$detail.event;
4907  if ('productRequestPricingAction' === eventType) {
4908    return true;
4909  }
4910  return false;
4911}
4912function isCustomizeLink(eventObject) {
4913  var _eventObject$detail2;
4914  var eventType = eventObject === null || eventObject === void 0 || (_eventObject$detail2 = eventObject.detail) === null || _eventObject$detail2 === void 0 ? void 0 : _eventObject$detail2.event;
4915  if ('productCustomizeAction' === eventType) {
4916    return true;
4917  }
4918  return false;
4919}
4920
4921},{}],111:[function(require,module,exports){
4922"use strict";
4923
4924Object.defineProperty(exports, "__esModule", {
4925  value: true
4926});
4927exports.getLegacyContentPromo = getLegacyContentPromo;
4928exports.getLegacyContentPromosOnPageLoad = getLegacyContentPromosOnPageLoad;
4929exports.getMerchandisingPromo = getMerchandisingPromo;
4930exports.isContentPromo = isContentPromo;
4931exports.isLegacyContentPromo = isLegacyContentPromo;
4932exports.isLegacyMerchandisingPromo = isLegacyMerchandisingPromo;
4933exports.isMerchandisingPromo = isMerchandisingPromo;
4934var _promoData = require("../dataObject/promoData");
4935var _productData = require("../dataObject/productData");
4936var _global = require("../../../../../components/utilities/global");
4937function isExcludedLink(element) {
4938  return element === null || element === void 0 ? void 0 : element.classList.contains('modal__close');
4939}
4940function isLegacyMerchandisingPromo(element) {
4941  return !isExcludedLink(element) && (element.hasAttribute('data-track-retail-skus') || element.hasAttribute('data-track-retail-l04'));
4942}
4943function isMerchandisingPromo(element) {
4944  var _dataObj$products;
4945  var dataObj = (0, _global.safeJsonParse)(element.getAttribute('data-ilmn-cmp-data-layer'));
4946  return !isExcludedLink(element) && ((_dataObj$products = dataObj.products) === null || _dataObj$products === void 0 ? void 0 : _dataObj$products.length);
4947}
4948function isLegacyContentPromo(element) {
4949  return !isExcludedLink(element) && element.closest('[data-tracktnt-experience]');
4950}
4951function isContentPromo(element) {
4952  return !isExcludedLink(element) && element.closest('[data-layer-object-type="promos"]');
4953}
4954function getLegacyContentPromo(element) {
4955  var contentPromos = [];
4956  var parentDiv = element.closest('[data-tracktnt-experience]');
4957  var promoName = (parentDiv === null || parentDiv === void 0 ? void 0 : parentDiv.getAttribute('data-tracktnt-description')) || null;
4958  var promoLocation = (parentDiv === null || parentDiv === void 0 ? void 0 : parentDiv.getAttribute('data-tracktnt-position')) || null;
4959  var batchDateArr = (promoLocation === null || promoLocation === void 0 ? void 0 : promoLocation.split(":")) || [];
4960  var batchDate = '';
4961  if (batchDateArr.length > 1) {
4962    batchDate = batchDateArr[1].trim();
4963  }
4964  var userSegment = parentDiv.getAttribute('data-tracktnt-experience');
4965  var contentPromo = (0, _promoData.setPromoData)(promoName, promoLocation, batchDate, userSegment);
4966  contentPromos.push(contentPromo);
4967  return contentPromos;
4968}
4969function getMerchandisingPromo(element) {
4970  var products = [];
4971  var skuVal = element.getAttribute('data-track-retail-skus');
4972  var l04Val = element.getAttribute('data-track-retail-l04');
4973  var skuArr = skuVal ? skuVal.split(',') : [];
4974  if (skuArr.length > 1) {
4975    skuArr.forEach(function (sku) {
4976      products.push((0, _productData.setProductData)(sku, l04Val));
4977    });
4978  } else {
4979    products.push((0, _productData.setProductData)(skuVal, l04Val));
4980  }
4981  return products;
4982}
4983
4984// catches legacy promos using the [data-tracktnt-experience] attr with no [data-layer-object-type] or [data-ilmn-cmp-data-layer] attrs
4985function getLegacyContentPromosOnPageLoad(pagePromosList) {
4986  var contentPromoDivElements = document.querySelectorAll('[data-tracktnt-experience]');
4987  contentPromoDivElements.forEach(function (contentPromoDivElement) {
4988    if (!contentPromoDivElement.closest('[data-layer-object-type]') && !contentPromoDivElement.closest('[data-ilmn-cmp-data-layer]')) {
4989      var contentAnchorTag = contentPromoDivElement.querySelector('a');
4990      if (contentAnchorTag && getLegacyContentPromo(contentAnchorTag)) {
4991        var catchAllPromos = getLegacyContentPromo(contentAnchorTag);
4992        catchAllPromos.forEach(function (promo) {
4993          pagePromosList.push(promo);
4994        });
4995      }
4996    }
4997  });
4998  return pagePromosList;
4999}
5000
5001},{"../../../../../components/utilities/global":73,"../dataObject/productData":97,"../dataObject/promoData":98}],112:[function(require,module,exports){
5002"use strict";
5003
5004Object.defineProperty(exports, "__esModule", {
5005  value: true
5006});
5007exports.pushToDataLayer = pushToDataLayer;
5008// eslint-disable-next-line import/prefer-default-export
5009function pushToDataLayer(dataLayerJson) {
5010  try {
5011    window.adobeDataLayer = window.adobeDataLayer || [];
5012    // eslint-disable-next-line no-undef
5013    adobeDataLayer.push(dataLayerJson);
5014  } catch (err) {
5015    console.log(err);
5016  }
5017}
5018
5019},{}],113:[function(require,module,exports){
5020"use strict";
5021
5022var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5023Object.defineProperty(exports, "__esModule", {
5024  value: true
5025});
5026exports.getFilterVal = getFilterVal;
5027exports.getSearchDataParams = getSearchDataParams;
5028exports.handleUserSearchComplete = handleUserSearchComplete;
5029exports.pushToDataLayerAfterSearchCompletion = pushToDataLayerAfterSearchCompletion;
5030exports.setClickEvent = setClickEvent;
5031exports.setSearchPagination = setSearchPagination;
5032var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5033var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
5034var _commonUtils = require("../../../acdl/js/handlers/commonUtils");
5035var _searchSubmitAction = require("../../../acdl-static/js/search/searchSubmitAction");
5036var _analytics = require("../../../acdl-static/js/search/analytics");
5037var _searchData = require("../../../acdl/js/dataObject/searchData");
5038var _pushToDataLayer = require("./pushToDataLayer");
5039function getFilterVal(element) {
5040  var _element$parentElemen;
5041  var queryParams = (0, _commonUtils.getQueryParameters)();
5042  element = document.querySelector(element) ? document.querySelector(element) : null;
5043  if (!element && window.sessionStorage.getItem('fromProductPage') === 'true') {
5044    return 'products';
5045  } else if (!element && window.sessionStorage.getItem('fromSupportPage') === 'true') {
5046    return 'tech support';
5047  } else if (!element && queryParams.filter) {
5048    if (queryParams.filter === 'support') {
5049      return 'tech support';
5050    } else {
5051      return queryParams.filter;
5052    }
5053  } else if (!element) {
5054    return null;
5055  }
5056  var elementFilterValue = (0, _commonUtils.getLowerCase)((_element$parentElemen = element.parentElement) === null || _element$parentElemen === void 0 ? void 0 : _element$parentElemen.innerText) || null;
5057  return elementFilterValue;
5058}
5059function setClickEvent(element) {
5060  element.addEventListener("click", function (event) {
5061    if ((0, _commonUtils.isClickable)(event) && (0, _analytics.isSearchIncludedElement)(event.target)) {
5062      (0, _searchSubmitAction.pushSearchSubmitDataLayerObject)(event);
5063    }
5064  }, false);
5065}
5066function getSearchDataParams(actionEvent) {
5067  var queryParams = (0, _commonUtils.getQueryParameters)();
5068  var searchKeyword = queryParams.q;
5069  var searchFilterCategory = 'category';
5070  var searchPagination = queryParams.p;
5071  var filterValue = getFilterVal(".radio-list input:checked");
5072  var searchDataObj = (0, _searchData.searchData)(searchKeyword, null, searchPagination, searchFilterCategory, filterValue, actionEvent);
5073  searchDataObj.searchFormName = "site search";
5074  return searchDataObj;
5075}
5076function handleUserSearchComplete(_x) {
5077  return _handleUserSearchComplete.apply(this, arguments);
5078}
5079function _handleUserSearchComplete() {
5080  _handleUserSearchComplete = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(dataLayerJson) {
5081    return _regenerator.default.wrap(function (_context) {
5082      while (1) switch (_context.prev = _context.next) {
5083        case 0:
5084          return _context.abrupt("return", new Promise(function (resolve, reject) {
5085            var _addSearchResult = function addSearchResult(event) {
5086              var _dataLayerJson$search2;
5087              if ((dataLayerJson === null || dataLayerJson === void 0 || (_dataLayerJson$search2 = dataLayerJson.searchDetails) === null || _dataLayerJson$search2 === void 0 ? void 0 : _dataLayerJson$search2.searchNumberOfResults) !== undefined) {
5088                dataLayerJson.searchDetails.searchNumberOfResults = event.detail.numberOfResults;
5089              }
5090              setSearchPagination(dataLayerJson);
5091              document.removeEventListener('userSearchComplete', _addSearchResult);
5092              resolve(dataLayerJson);
5093            };
5094            document.addEventListener('userSearchComplete', _addSearchResult);
5095          }));
5096        case 1:
5097        case "end":
5098          return _context.stop();
5099      }
5100    }, _callee);
5101  }));
5102  return _handleUserSearchComplete.apply(this, arguments);
5103}
5104function setSearchPagination(dataLayerJson) {
5105  var _dataLayerJson$search;
5106  if ((dataLayerJson === null || dataLayerJson === void 0 || (_dataLayerJson$search = dataLayerJson.searchDetails) === null || _dataLayerJson$search === void 0 ? void 0 : _dataLayerJson$search.searchPagination) !== undefined && dataLayerJson.searchDetails.searchPagination == null) {
5107    var queryParams = (0, _commonUtils.getQueryParameters)();
5108    var searchPagination = queryParams.p;
5109    dataLayerJson.searchDetails.searchPagination = searchPagination;
5110  }
5111}
5112function pushToDataLayerAfterSearchCompletion(_x2) {
5113  return _pushToDataLayerAfterSearchCompletion.apply(this, arguments);
5114}
5115function _pushToDataLayerAfterSearchCompletion() {
5116  _pushToDataLayerAfterSearchCompletion = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(d
5116ataLayerJson) {
5117    var modifiedDataLayerJson;
5118    return _regenerator.default.wrap(function (_context2) {
5119      while (1) switch (_context2.prev = _context2.next) {
5120        case 0:
5121          _context2.next = 1;
5122          return handleUserSearchComplete(dataLayerJson);
5123        case 1:
5124          modifiedDataLayerJson = _context2.sent;
5125          (0, _pushToDataLayer.pushToDataLayer)(modifiedDataLayerJson);
5126        case 2:
5127        case "end":
5128          return _context2.stop();
5129      }
5130    }, _callee2);
5131  }));
5132  return _pushToDataLayerAfterSearchCompletion.apply(this, arguments);
5133}
5134
5135},{"../../../acdl-static/js/search/analytics":86,"../../../acdl-static/js/search/searchSubmitAction":88,"../../../acdl/js/dataObject/searchData":99,"../../../acdl/js/handlers/commonUtils":102,"./pushToDataLayer":112,"@babel/runtime/helpers/asyncToGenerator":4,"@babel/runtime/helpers/interopRequireDefault":6,"@babel/runtime/regenerator":22}],114:[function(require,module,exports){
5136"use strict";
5137
5138var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5139Object.defineProperty(exports, "__esModule", {
5140  value: true
5141});
5142exports.executeWithAdobeDataLayer = executeWithAdobeDataLayer;
5143exports.executeWithEcom = executeWithEcom;
5144exports.executeWithOneTrust = executeWithOneTrust;
5145exports.getProfileData = getProfileData;
5146exports.getSessionProspectId = getSessionProspectId;
5147exports.setMyIlluminaId = setMyIlluminaId;
5148exports.setMyIlluminaUserType = setMyIlluminaUserType;
5149exports.setSessionProspectId = setSessionProspectId;
5150exports.waitForLoggedInStatus = waitForLoggedInStatus;
5151var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5152var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
5153var _getCookie = _interopRequireDefault(require("ilmn/getCookie"));
5154function executeWithEcom(callback) {
5155  var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
5156  var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
5157  var attempts = 0;
5158  var _waitForEcom = function waitForEcom() {
5159    attempts += 1;
5160    if (window.ecommerce) {
5161      var _waitForEcomConfig = function waitForEcomConfig() {
5162        if (window.ecommerce.Config) {
5163          callback(window.ecommerce);
5164        } else if (attempts < maxAttempts) {
5165          setTimeout(_waitForEcomConfig, interval);
5166        } else {
5167          console.log('Could not retrieve ecommerce.config object');
5168        }
5169      };
5170      _waitForEcomConfig();
5171    } else if (attempts < maxAttempts) {
5172      setTimeout(_waitForEcom, interval);
5173    } else {
5174      console.log('Could not retrieve ecommerce object');
5175    }
5176  };
5177  try {
5178    _waitForEcom();
5179  } catch (error) {
5180    console.error(error);
5181  }
5182}
5183function executeWithAdobeDataLayer(callback) {
5184  var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
5185  var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
5186  var attempts = 0;
5187  var _waitForAdobeDataLayer = function waitForAdobeDataLayer() {
5188    attempts += 1;
5189    if (window.adobeDataLayer) {
5190      callback(window.adobeDataLayer);
5191    } else if (attempts < maxAttempts) {
5192      setTimeout(_waitForAdobeDataLayer, interval);
5193    } else {
5194      console.log('Could not retrieve window.adobeDataLayer object');
5195    }
5196  };
5197  try {
5198    _waitForAdobeDataLayer();
5199  } catch (error) {
5200    console.error(error);
5201  }
5202}
5203function executeWithOneTrust(callback) {
5204  var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
5205  var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
5206  var attempts = 0;
5207  var _waitForOneTrust = function waitForOneTrust() {
5208    var _window$OnetrustActiv;
5209    attempts += 1;
5210    if (window.OnetrustActiveGroups && ((_window$OnetrustActiv = window.OnetrustActiveGroups) === null || _window$OnetrustActiv === void 0 ? void 0 : _window$OnetrustActiv.replace(/,/g, '')) !== '') {
5211      callback();
5212    } else if (attempts < maxAttempts) {
5213      setTimeout(_waitForOneTrust, interval);
5214    } else {
5215      console.log('Could not retrieve window.OnetrustActiveGroups object');
5216    }
5217  };
5218  try {
5219    _waitForOneTrust();
5220  } catch (error) {
5221    console.error(error);
5222  }
5223}
5224function waitForLoggedInStatus(callback) {
5225  var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
5226  var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
5227  var attempts = 0;
5228  if (window.localStorage) {
5229    var checkLocalStorageValue = function checkLocalStorageValue() {
5230      attempts += 1;
5231      if (window.localStorage.getItem('loggedInStatus')) {
5232        window.localStorage.removeItem('loggedInStatus');
5233        callback();
5234      } else if (attempts < maxAttempts) {
5235        setTimeout(checkLocalStorageValue, interval);
5236      } else {
5237        console.log('Could not retrieve logged-in object');
5238        callback();
5239      }
5240    };
5241    checkLocalStorageValue();
5242  } else {
5243    console.log('Could not retrieve logged-in object');
5244    callback();
5245  }
5246}
5247function getPSToken() {
5248  var psToken = (0, _getCookie.default)('psToken') ? (0, _getCookie.default)('psToken') : null;
5249  return psToken;
5250}
5251function fetchData(_x) {
5252  return _fetchData.apply(this, arguments);
5253}
5254function _fetchData() {
5255  _fetchData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(url) {
5256    var psToken, getResp, contentType, responseText, jsonResponse, _t;
5257    return _regenerator.default.wrap(function (_context) {
5258      while (1) switch (_context.prev = _context.next) {
5259        case 0:
5260          psToken = getPSToken();
5261          getResp = null;
5262          if (!psToken) {
5263            _context.next = 8;
5264            break;
5265          }
5266          _context.prev = 1;
5267          _context.next = 2;
5268          return fetch(url, {
5269            headers: {
5270              "psToken": psToken
5271            }
5272          });
5273        case 2:
5274          getResp = _context.sent;
5275          if (!getResp.ok) {
5276            console.log("Network response was not ok from ".concat(url));
5277          }
5278          contentType = getResp.headers.get('content-type');
5279          if (!(contentType && contentType.indexOf('application/json') !== -1)) {
5280            _context.next = 4;
5281            break;
5282          }
5283          _context.next = 3;
5284          return getResp.text();
5285        case 3:
5286          responseText = _context.sent;
5287          jsonResponse = responseText.startsWith(')]}\'') ? JSON.parse(responseText.substring(6)) : JSON.parse(responseText); // Parse as JSON if magic prefix is not present
5288          return _context.abrupt("return", jsonResponse);
5289        case 4:
5290          console.log("Invalid response type from ".concat(url));
5291          return _context.abrupt("return", null);
5292        case 5:
5293          _context.next = 7;
5294          break;
5295        case 6:
5296          _context.prev = 6;
5297          _t = _context["catch"](1);
5298          console.log(_t);
5299          return _context.abrupt("return", null);
5300        case 7:
5301          _context.next = 9;
5302          break;
5303        case 8:
5304          return _context.abrupt("return", null);
5305        case 9:
5306        case "end":
5307          return _context.stop();
5308      }
5309    }, _callee, null, [[1, 6]]);
5310  }));
5311  return _fetchData.apply(this, arguments);
5312}
5313function getProfileData() {
5314  return _getProfileData.apply(this, arguments);
5315}
5316function _getProfileData() {
5317  _getProfileData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
5318    var url, data, _t2;
5319    return _regenerator.default.wrap(function (_context2) {
5320      while (1) switch (_context2.prev = _context2.next) {
5321        case 0:
5322          _context2.prev = 0;
5323          url = null;
5324          executeWithEcom(function (ecom) {
5325            var _ref = ecom.config || null,
5326              commerceHttpsProtocolHost = _ref.commerceHttpsProtocolHost;
5327            if (commerceHttpsProtocolHost) {
5328              url = "".concat(commerceHttpsProtocolHost, "/public/profile");
5329            }
5330          });
5331          if (!url) {
5332            _context2.next = 2;
5333            break;
5334          }
5335          _context2.next = 1;
5336          return fetchData(url);
5337        case 1:
5338          data = _context2.sent;
5339          return _context2.abrupt("return", data);
5340        case 2:
5341          return _context2.abrupt("return", null);
5342        case 3:
5343          _context2.next = 5;
5344          break;
5345        case 4:
5346          _context2.prev = 4;
5347          _t2 = _context2["catch"](0);
5348          console.error(_t2);
5349          return _context2.abrupt("return", null);
5350        case 5:
5351        case "end":
5352          return _context2.stop();
5353      }
5354    }, _callee2, null, [[0, 4]]);
5355  }));
5356  return _getProfileData.apply(this, arguments);
5357}
5358function updateDataLayerUserValue(updateFn) {
5359  executeWithAdobeDataLayer(function (adobeDataLayer) {
5360    adobeDataLayer.forEach(function (obj) {
5361      if ((obj === null || obj === void 0 ? void 0 : obj.user) !== undefined) {
5362        updateFn(obj);
5363      }
5364    });
5365  });
5366}
5367function getValueByPath(obj, path) {
5368  var keys = path.split('.');
5369  return keys.reduce(function (value, key) {
5370    return value ? value[key] : null;
5371  }, obj);
5372}
5373function getProfileDataValue(_x2) {
5374  return _getProfileDataValue.apply(this, arguments);
5375}
5376function _getProfileDataValue() {
5377  _getProfileDataValue = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(path) {
5378    var data;
5379    return _regenerator.default.wrap(function (_context3) {
5380      while (1) switch (_context3.prev = _context3.next) {
5381        case 0:
5382          _context3.next = 1;
5383          return getProfileData();
5384        case 1:
5385          data = _context3.sent;
5386          return _context3.abrupt("return", getValueByPath(data, path));
5387        case 2:
5388        case "end":
5389          return _context3.stop();
5390      }
5391    }, _callee3);
5392  }));
5393  return _getProfileDataValue.apply(this, arguments);
5394}
5395function setMyIlluminaUserType() {
5396  return _setMyIlluminaUserType.apply(this, arguments);
5397}
5398function _setMyIlluminaUserType() {
5399  _setMyIlluminaUserType = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
5400    var profileDataValue,
5401      myIlluminaUserType,
5402      myIlluminaRoles,
5403      _args4 = arguments,
5404      _t3;
5405    return _regenerator.default.wrap(function (_context4) {
5406      while (1) switch (_context4.prev = _context4.next) {
5407        case 0:
5408          profileDataValue = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : null;
5409          _context4.prev = 1;
5410          myIlluminaUserType = profileDataValue;
5411          if (myIlluminaUserType) {
5412            _context4.next = 3;
5413            break;
5414          }
5415          _context4.next = 2;
5416          return getProfileDataValue('roles');
5417        case 2:
5418          myIlluminaRoles = _context4.sent;
5419          myIlluminaUserType = myIlluminaRoles.map(function (myIlluminaRole) {
5420            return myIlluminaRole.toLowerCase();
5421          });
5422        case 3:
5423          if (myIlluminaUserType !== null) {
5424            window.localStorage.setItem('myIlluminaUserType', JSON.stringify(myIlluminaUserType));
5425          }
5426          updateDataLayerUserValue(function (obj) {
5427            obj.user.myIlluminaUserType = myIlluminaUserType;
5428          });
5429          _context4.next = 5;
5430          break;
5431        case 4:
5432          _context4.prev = 4;
5433          _t3 = _context4["catch"](1);
5434          console.error('Error setting My Illumina User Type:', _t3);
5435        case 5:
5436        case "end":
5437          return _context4.stop();
5438      }
5439    }, _callee4, null, [[1, 4]]);
5440  }));
5441  return _setMyIlluminaUserType.apply(this, arguments);
5442}
5443function setMyIlluminaId() {
5444  return _setMyIlluminaId.apply(this, arguments);
5445}
5446function _setMyIlluminaId() {
5447  _setMyIlluminaId = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
5448    var profileDataValue,
5449      myIlluminaID,
5450      _args5 = arguments,
5451      _t4;
5452    return _regenerator.default.wrap(function (_context5) {
5453      while (1) switch (_context5.prev = _context5.next) {
5454        case 0:
5455          profileDataValue = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : null;
5456          _context5.prev = 1;
5457          myIlluminaID = profileDataValue;
5458          if (myIlluminaID) {
5459            _context5.next = 3;
5460            break;
5461          }
5462          _context5.next = 2;
5463          return getProfileDataValue('pGuid');
5464        case 2:
5465          myIlluminaID = _context5.sent;
5466        case 3:
5467          if (myIlluminaID !== null) {
5468            window.localStorage.setItem('myIlluminaID', myIlluminaID);
5469          }
5470          updateDataLayerUserValue(function (obj) {
5471            obj.user.myIlluminaID = myIlluminaID;
5472          });
5473          _context5.next = 5;
5474          break;
5475        case 4:
5476          _context5.prev = 4;
5477          _t4 = _context5["catch"](1);
5478          console.error('Error setting myIlluminaID:', _t4);
5479        case 5:
5480        case "end":
5481          return _context5.stop();
5482      }
5483    }, _callee5, null, [[1, 4]]);
5484  }));
5485  return _setMyIlluminaId.apply(this, arguments);
5486}
5487function setSessionProspectId() {
5488  return _setSessionProspectId.apply(this, arguments);
5489}
5490function _setSessionProspectId() {
5491  _setSessionProspectId = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
5492    var url, response, responseJson, prospectId, _t5;
5493    return _regenerator.default.wrap(function (_context6) {
5494      while (1) switch (_context6.prev = _context6.next) {
5495        case 0:
5496          url = '/bin/pardot/getprospectid';
5497          _context6.prev = 1;
5498          _context6.next = 2;
5499          return fetch(url);
5500        case 2:
5501          response = _context6.sent;
5502          if (response.ok) {
5503            _context6.next = 3;
5504            break;
5505          }
5506          console.error("Response status: ".concat(response.status));
5507          return _context6.abrupt("return");
5508        case 3:
5509          _context6.next = 4;
5510          return response.json();
5511        case 4:
5512          responseJson = _context6.sent;
5513          prospectId = (responseJson === null || responseJson === void 0 ? void 0 : responseJson.prospectId) || null;
5514          if (prospectId) {
5515            _context6.next = 5;
5516            break;
5517          }
5518          return _context6.abrupt("return");
5519        case 5:
5520          window.sessionStorage.setItem('IlmnProspectId', prospectId);
5521          _context6.next = 7;
5522          break;
5523        case 6:
5524          _context6.prev = 6;
5525          _t5 = _context6["catch"](1);
5526          console.error(_t5.message);
5527        case 7:
5528        case "end":
5529          return _context6.stop();
5530      }
5531    }, _callee6, null, [[1, 6]]);
5532  }));
5533  return _setSessionProspectId.apply(this, arguments);
5534}
5535function getSessionProspectId() {
5536  return window.sessionStorage.getItem('IlmnProspectId');
5537}
5538
5539},{"@babel/runtime/helpers/asyncToGenerator":4,"@babel/runtime/helpers/interopRequireDefault":6,"@babel/runtime/regenerator":22,"ilmn/getCookie":24}],115:[function(require,module,exports){
5540"use strict";
5541
5542var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5543Object.defineProperty(exports, "__esModule", {
5544  value: true
5545});
5546exports.attributionActionEvent = attributionActionEvent;
5547var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5548var _userData = _interopRequireDefault(require("../dataObject/userData"));
5549/**
5550 * Builds the ACDL data layer payload for attribution (first-touch/session).
5551 * Fired when attribution is set (cookie + custom event), so attribution data
5552 * is available in the Data Layer even when the user never submits a form.
5553 *
5554 * @param {Object} attributionData - { channel, referrerPath, referrerDomain, cookieValue }
5555 * @returns {Object} dataLayerJson - payload for adobeDataLayer.push()
5556 */
5557function attributionActionEvent(attributionData) {
5558  var pageObj = (0, _pageObject.default)();
5559  var userDataObj = (0, _userData.default)();
5560  var attribution = attributionData || null;
5561  var dataLayerJson = {
5562    "event": "attributionAction",
5563    "page": pageObj,
5564    "user": userDataObj,
5565    "attribution": attribution
5566  };
5567  return dataLayerJson;
5568}
5569
5570},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],116:[function(require,module,exports){
5571"use strict";
5572
5573var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5574Object.defineProperty(exports, "__esModule", {
5575  value: true
5576});
5577exports.componentActionEvent = componentActionEvent;
5578var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5579var _userData = _interopRequireDefault(require("../dataObject/userData"));
5580function componentActionEvent(linkData, componentData, domEventType) {
5581  var pageObj = (0, _pageObject.default)();
5582  var userDataObj = (0, _userData.default)();
5583  var link = linkData || null;
5584  var component = componentData || null;
5585  var domEvent = domEventType || '';
5586  var dataLayerJson = {
5587    "event": "componentAction",
5588    "page": pageObj,
5589    "user": userDataObj,
5590    "link": link,
5591    "component": component,
5592    "domEvent": domEvent
5593  };
5594  return dataLayerJson;
5595}
5596
5597},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],117:[function(require,module,exports){
5598"use strict";
5599
5600var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5601Object.defineProperty(exports, "__esModule", {
5602  value: true
5603});
5604exports.errorActionEvent = errorActionEvent;
5605var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5606var _userData = _interopRequireDefault(require("../dataObject/userData"));
5607function errorActionEvent(errorMessages, domEventType) {
5608  var pageObj = (0, _pageObject.default)();
5609  var userDataObj = (0, _userData.default)();
5610  return {
5611    "event": "errorAction",
5612    "page": pageObj,
5613    "user": userDataObj,
5614    "error": errorMessages,
5615    "domEvent": domEventType
5616  };
5617}
5618
5619},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],118:[function(require,module,exports){
5620"use strict";
5621
5622var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5623Object.defineProperty(exports, "__esModule", {
5624  value: true
5625});
5626exports.default = filterClickActionEvent;
5627var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5628var _userData = _interopRequireDefault(require("../dataObject/userData"));
5629var _facetFilterUtils = require("../handlers/facetFilterUtils");
5630var _linkData = require("../dataObject/linkData");
5631function filterClickActionEvent(searchDetails, filterCategory, filterName, isFilterRemoved) {
5632  var pageObj = (0, _pageObject.default)();
5633  var userDataObj = (0, _userData.default)();
5634  var searchDataObj = (0, _facetFilterUtils.getFacetFilterData)(searchDetails, 'facet-search', isFilterRemoved);
5635  var linkObj = (0, _linkData.setLinkData)(filterName, 'other', filterCategory);
5636  var dataLayerJson = {
5637    "event": 'searchFilterAction',
5638    "page": pageObj,
5639    "user": userDataObj,
5640    "link": linkObj,
5641    "searchDetails": searchDataObj,
5642    "domEvent": 'click'
5643  };
5644  return dataLayerJson;
5645}
5646;
5647
5648},{"../dataObject/linkData":94,"../dataObject/pageObject":96,"../dataObject/userData":100,"../handlers/facetFilterUtils":103,"@babel/runtime/helpers/interopRequireDefault":6}],119:[function(require,module,exports){
5649"use strict";
5650
5651var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5652Object.defineProperty(exports, "__esModule", {
5653  value: true
5654});
5655exports.default = formLoadActionEvent;
5656var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5657var _userData = _interopRequireDefault(require("../dataObject/userData"));
5658function formLoadActionEvent(linkData, formData, domEventType) {
5659  var pageObj = (0, _pageObject.default)();
5660  var userDataObj = (0, _userData.default)();
5661  var link = linkData || null;
5662  var form = formData || null;
5663  var domEvent = domEventType || 'load';
5664  var dataLayerJson = {
5665    "event": "formLoadAction",
5666    "page": pageObj,
5667    "user": userDataObj,
5668    "link": link,
5669    "form": form,
5670    "domEvent": domEvent
5671  };
5672  return dataLayerJson;
5673}
5674
5675},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],120:[function(require,module,exports){
5676"use strict";
5677
5678var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5679Object.defineProperty(exports, "__esModule", {
5680  value: true
5681});
5682exports.formSubmitActionEvent = formSubmitActionEvent;
5683var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5684var _userData = _interopRequireDefault(require("../dataObject/userData"));
5685function formSubmitActionEvent(linkData, formData, domEventType) {
5686  var pageObj = (0, _pageObject.default)();
5687  var userDataObj = (0, _userData.default)();
5688  var link = linkData || null;
5689  var form = formData || null;
5690  var domEvent = domEventType || '';
5691  var dataLayerJson = {
5692    "event": "formSubmitAction",
5693    "page": pageObj,
5694    "user": userDataObj,
5695    "link": link,
5696    "form": form,
5697    "domEvent": domEvent
5698  };
5699  return dataLayerJson;
5700}
5701
5702},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],121:[function(require,module,exports){
5703"use strict";
5704
5705var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5706Object.defineProperty(exports, "__esModule", {
5707  value: true
5708});
5709exports.linkActionEvent = linkActionEvent;
5710exports.linkActionEventFromForm = linkActionEventFromForm;
5711var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5712var _userData = _interopRequireDefault(require("../dataObject/userData"));
5713function linkActionEvent(linkData, domEventType) {
5714  var pageObj = (0, _pageObject.default)();
5715  var userDataObj = (0, _userData.default)();
5716  var link = linkData || null;
5717  var domEvent = domEventType || '';
5718  var dataLayerJson = {
5719    "event": "linkAction",
5720    "page": pageObj,
5721    "user": userDataObj,
5722    "link": link,
5723    "domEvent": domEvent
5724  };
5725  return dataLayerJson;
5726}
5727function linkActionEventFromForm(linkData, formData) {
5728  var pageObj = (0, _pageObject.default)();
5729  var userDataObj = (0, _userData.default)();
5730  var link = linkData || null;
5731  var form = formData || null;
5732  var dataLayerJson = {
5733    "event": "linkAction",
5734    "page": pageObj,
5735    "user": userDataObj,
5736    "link": link,
5737    "form": form,
5738    "domEvent": 'click'
5739  };
5740  return dataLayerJson;
5741}
5742
5743},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],122:[function(require,module,exports){
5744"use strict";
5745
5746var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5747Object.defineProperty(exports, "__esModule", {
5748  value: true
5749});
5750exports.menuActionEvent = menuActionEvent;
5751var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5752var _userData = _interopRequireDefault(require("../dataObject/userData"));
5753function menuActionEvent(linkData, menuData, domEventType) {
5754  var obj = (0, _pageObject.default)();
5755  var userDataObj = (0, _userData.default)();
5756  var link = linkData || null;
5757  var menu = menuData || null;
5758  var domEvent = domEventType || '';
5759  var dataLayerJson = {
5760    "event": "menuAction",
5761    "page": obj,
5762    "user": userDataObj,
5763    "link": link,
5764    "menu": menu,
5765    "domEvent": domEvent
5766  };
5767  return dataLayerJson;
5768}
5769
5770},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],123:[function(require,module,exports){
5771"use strict";
5772
5773var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5774Object.defineProperty(exports, "__esModule", {
5775  value: true
5776});
5777exports.productCartAddActionEvent = productCartAddActionEvent;
5778var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5779var _userData = _interopRequireDefault(require("../dataObject/userData"));
5780function productCartAddActionEvent(linkData, productsDataObj, cartDetailsObj, findingMethodObj, domEventType) {
5781  var obj = (0, _pageObject.default)();
5782  var userDataObj = (0, _userData.default)();
5783  var link = linkData || null;
5784  var domEvent = domEventType || '';
5785  var dataLayerJson = {
5786    "event": "productCartAddAction",
5787    "page": obj,
5788    "user": userDataObj,
5789    "link": link,
5790    "products": productsDataObj,
5791    "cartDetails": cartDetailsObj,
5792    "productFindingMethod": findingMethodObj,
5793    "domEvent": domEvent
5794  };
5795  return dataLayerJson;
5796}
5797
5798},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],124:[function(require,module,exports){
5799"use strict";
5800
5801var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5802Object.defineProperty(exports, "__esModule", {
5803  value: true
5804});
5805exports.productIncrementActionEvent = productIncrementActionEvent;
5806var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5807var _userData = _interopRequireDefault(require("../dataObject/userData"));
5808function productIncrementActionEvent(productsData, productFindingMethod, linkContent, domEventType) {
5809  var pageObj = (0, _pageObject.default)() || {};
5810  var userDataObj = (0, _userData.default)() || {};
5811  var productsDataObj = productsData || {};
5812  var linkData = linkContent || {};
5813  var findingMethod = productFindingMethod || null;
5814  var domEvent = domEventType || null;
5815  var dataLayerJson = {
5816    'event': 'productIncrementAction',
5817    'page': pageObj,
5818    'user': userDataObj,
5819    'link': linkData,
5820    'products': productsDataObj,
5821    'productFindingMethod': findingMethod,
5822    'domEvent': domEvent
5823  };
5824  return dataLayerJson;
5825}
5826
5827},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],125:[function(require,module,exports){
5828"use strict";
5829
5830var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5831Object.defineProperty(exports, "__esModule", {
5832  value: true
5833});
5834exports.productLinkActionEvent = productLinkActionEvent;
5835var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5836var _userData = _interopRequireDefault(require("../dataObject/userData"));
5837/**
5838    * As the dataLayer object structure is pretty much same except the event type in productRequestPricingActionEvent &
5839    * productCustomizeActionEvent, both of these are using similar data objects. So rather having 2 different action events
5840    * we created a new action event productLinkActionEvent to handle both of these different action events.
5841*/
5842function productLinkActionEvent(actionEvent, linkData, productsDataObj, findingMethodObj, domEventType) {
5843  var obj = (0, _pageObject.default)();
5844  var userDataObj = (0, _userData.default)();
5845  var dataLayerJson = {
5846    'event': actionEvent || null,
5847    'page': obj || {},
5848    'user': userDataObj || {},
5849    'link': linkData || {},
5850    'products': productsDataObj || {},
5851    'productFindingMethod': findingMethodObj || null,
5852    'domEvent': domEventType || null
5853  };
5854  return dataLayerJson;
5855}
5856
5857},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],126:[function(require,module,exports){
5858"use strict";
5859
5860var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5861Object.defineProperty(exports, "__esModule", {
5862  value: true
5863});
5864exports.productMerchandisingActionEvent = productMerchandisingActionEvent;
5865var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5866var _userData = _interopRequireDefault(require("../dataObject/userData"));
5867function productMerchandisingActionEvent(linkData, productData, productFindingMethodType, domEventType, componentData, promosData, menuData) {
5868  var pageObj = (0, _pageObject.default)();
5869  var userDataObj = (0, _userData.default)();
5870  var link = linkData || null;
5871  var products = productData || null;
5872  var component = componentData !== null && componentData !== void 0 ? componentData : null;
5873  var promos = promosData || null;
5874  var menu = menuData || null;
5875  var productFindingMethod = productFindingMethodType || null;
5876  var domEvent = domEventType || '';
5877  var dataLayerJson = {
5878    'event': 'productMerchandisingAction',
5879    'page': pageObj,
5880    'user': userDataObj,
5881    'link': link,
5882    'products': products,
5883    'component': component,
5884    'promos': promos,
5885    'menu': menu,
5886    'domEvent': domEvent,
5887    'productFindingMethod': productFindingMethod
5888  };
5889  var keysToDelete = ['component', 'menu', 'promos'];
5890  for (var _i = 0, _keysToDelete = keysToDelete; _i < _keysToDelete.length; _i++) {
5891    var key = _keysToDelete[_i];
5892    if (!dataLayerJson[key]) {
5893      delete dataLayerJson[key];
5894    }
5895  }
5896  return dataLayerJson;
5897}
5898
5899},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],127:[function(require,module,exports){
5900"use strict";
5901
5902var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5903Object.defineProperty(exports, "__esModule", {
5904  value: true
5905});
5906exports.promoModuleActionEvent = promoModuleActionEvent;
5907var _userData = _interopRequireDefault(require("../dataObject/userData"));
5908var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5909function promoModuleActionEvent(linkData, promoArray, domEventType, menuData) {
5910  var pageObj = (0, _pageObject.default)();
5911  var userDataObj = (0, _userData.default)();
5912  var link = linkData || null;
5913  var page = pageObj || null;
5914  var menu = menuData || null;
5915  var domEvent = domEventType || '';
5916  var promos = promoArray || null;
5917  var dataLayerJson = {
5918    "event": "promoModuleAction",
5919    "page": page,
5920    "user": userDataObj,
5921    "link": link,
5922    "promos": promos,
5923    "menu": menu,
5924    "domEvent": domEvent
5925  };
5926  if (!menu) {
5927    delete dataLayerJson['menu'];
5928  }
5929  return dataLayerJson;
5930}
5931
5932},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],128:[function(require,module,exports){
5933"use strict";
5934
5935var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5936Object.defineProperty(exports, "__esModule", {
5937  value: true
5938});
5939exports.promoModuleImpressionEvent = promoModuleImpressionEvent;
5940var _userData = _interopRequireDefault(require("../dataObject/userData"));
5941var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5942function promoModuleImpressionEvent(linkData, promoArray, menuData) {
5943  var pageObj = (0, _pageObject.default)();
5944  var userDataObj = (0, _userData.default)();
5945  var link = linkData || null;
5946  var page = pageObj || null;
5947  var menu = menuData || null;
5948  var promos = promoArray || null;
5949  var dataLayerJson = {
5950    "event": "promoModuleImpression",
5951    "page": page,
5952    "user": userDataObj,
5953    "link": link,
5954    "promos": promos,
5955    "menu": menu,
5956    "domEvent": ""
5957  };
5958  if (!menu) {
5959    delete dataLayerJson['menu'];
5960  }
5961  return dataLayerJson;
5962}
5963
5964},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],129:[function(require,module,exports){
5965"use strict";
5966
5967var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5968Object.defineProperty(exports, "__esModule", {
5969  value: true
5970});
5971exports.searchSubmitActionEvent = searchSubmitActionEvent;
5972var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
5973var _userData = _interopRequireDefault(require("../dataObject/userData"));
5974function searchSubmitActionEvent(linkData, searchData, domEventType) {
5975  var pageObj = (0, _pageObject.default)();
5976  var userDataObj = (0, _userData.default)();
5977  var link = linkData || null;
5978  var searchDetails = searchData || null;
5979  var domEvent = domEventType || '';
5980  var dataLayerJson = {
5981    "event": "searchSubmitAction",
5982    "page": pageObj,
5983    "user": userDataObj,
5984    "link": link,
5985    "searchDetails": searchDetails,
5986    "domEvent": domEvent
5987  };
5988  return dataLayerJson;
5989}
5990
5991},{"../dataObject/pageObject":96,"../dataObject/userData":100,"@babel/runtime/helpers/interopRequireDefault":6}],130:[function(require,module,exports){
5992"use strict";
5993
5994var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5995Object.defineProperty(exports, "__esModule", {
5996  value: true
5997});
5998exports.default = searchClickActionEvent;
5999var _pageObject = _interopRequireDefault(require("../dataObject/pageObject"));
6000var _userData = _interopRequireDefault(require("../dataObject/userData"));
6001var _linkData = require("../dataObject/linkData");
6002var _facetSearchUtils = require("../handlers/facetSearchUtils");
6003function searchClickActionEvent(cardTitle, cardHref, pageNo, filterObject, index) {
6004  var pageObj = (0, _pageObject.default)();
6005  var userDataObj = (0, _userData.default)();
6006  var searchDataObj = (0, _facetSearchUtils.getFacetSearchData)(cardTitle, pageNo, filterObject, index);
6007  var linkObj = (0, _linkData.setLinkData)(cardTitle, 'other', 'facet-search', cardHref);
6008  var dataLayerJson = {
6009    "event": 'searchResultLinkAction',
6010    "page": pageObj,
6011    "user": userDataObj,
6012    "link": linkObj,
6013    "searchDetails": searchDataObj,
6014    "domEvent": 'click'
6015  };
6016  return dataLayerJson;
6017}
6018;
6019
6020},{"../dataObject/linkData":94,"../dataObject/pageObject":96,"../dataObject/userData":100,"../handlers/facetSearchUtils":104,"@babel/runtime/helpers/interopRequireDefault":6}]},{},[84]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.