PageSourceSearch

https://www.frandroid.com/wp-content/themes/humanoid-redesign/dist…umanoidfr-cash-dom-vD7AqXygL_cVzk_8zi3yt.js

js frandroid.com collected 2026-09-24 08:27:30 UTC 82,307 bytes, 2,476 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._posthogChunkIds=e._posthogChunkIds||{},e._posthogChunkIds[n]="01a0cd79-2a16-7d00-b365-fb2465d82c85")}catch(e){}}();import { d as domReady } from "./wordpress-dom-ready-va-j_DcZ-xxc3hbE_tB8c.js";
2const doc = document;
3const win = window;
4const docEle = doc.documentElement;
5const createElement = doc.createElement.bind(doc);
6const div = createElement("div");
7const table = createElement("table");
8const tbody = createElement("tbody");
9const tr = createElement("tr");
10const { isArray, prototype: ArrayPrototype } = Array;
11const { concat, filter, indexOf, map, push, slice, some, splice } = ArrayPrototype;
12const idRe = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/;
13const classRe = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/;
14const htmlRe = /<.+>/;
15const tagRe = /^\w+$/;
16const input = {
17  ":input": "input, textarea, select, button",
18  ":button": "button"
19};
20function find(selector, context) {
21  return !selector || !isDocument(context) && !isElement(context) ? [] : classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : input[selector] ? context.querySelectorAll(input[selector]) : context.querySelectorAll(selector.replace(/(\[[^=]+=)([^"\]]+)(])/, '$1"$2"$3'));
22}
23class Cash {
24  constructor(selector, context) {
25    if (!selector)
26      return;
27    if (isCash(selector))
28      return selector;
29    let eles = selector;
30    if (isString(selector)) {
31      const ctx = context || doc;
32      eles = idRe.test(selector) && isDocument(ctx) ? ctx.getElementById(selector.slice(1).replace(/\\/g, "")) : htmlRe.test(selector) ? parseHTML(selector) : isCash(ctx) ? ctx.find(selector) : isString(ctx) ? cash(ctx).find(selector) : find(selector, ctx);
33      if (!eles)
34        return;
35    } else if (isFunction(selector)) {
36      return this.ready(selector);
37    }
38    if (eles.nodeType || eles === win)
39      eles = [eles];
40    this.length = eles.length;
41    for (let i = 0, l = this.length; i < l; i++) {
42      this[i] = eles[i];
43    }
44  }
45  init(selector, context) {
46    return new Cash(selector, context);
47  }
48}
49const fn = Cash.prototype;
50const cash = fn.init;
51cash.fn = cash.prototype = fn;
52fn.length = 0;
53fn.splice = splice;
54if (typeof Symbol === "function") {
55  fn[Symbol["iterator"]] = ArrayPrototype[Symbol["iterator"]];
56}
57function isCash(value) {
58  return value instanceof Cash;
59}
60function isWindow(value) {
61  return !!value && value === value.window;
62}
63function isDocument(value) {
64  return !!value && value.nodeType === 9;
65}
66function isElement(value) {
67  return !!value && value.nodeType === 1;
68}
69function isText(value) {
70  return !!value && value.nodeType === 3;
71}
72function isBoolean(value) {
73  return typeof value === "boolean";
74}
75function isFunction(value) {
76  return typeof value === "function";
77}
78function isString(value) {
79  return typeof value === "string";
80}
81function isUndefined(value) {
82  return value === void 0;
83}
84function isNull(value) {
85  return value === null;
86}
87function isNumeric(value) {
88  return !isNaN(parseFloat(value)) && isFinite(value);
89}
90function isPlainObject(value) {
91  if (typeof value !== "object" || value === null)
92    return false;
93  const proto = Object.getPrototypeOf(value);
94  return proto === null || proto === Object.prototype;
95}
96cash.isWindow = isWindow;
97cash.isFunction = isFunction;
98cash.isArray = isArray;
99cash.isNumeric = isNumeric;
100cash.isPlainObject = isPlainObject;
101function each(arr, callback, _reverse) {
102  if (_reverse) {
103    let i = arr.length;
104    while (i--) {
105      if (callback.call(arr[i], i, arr[i]) === false)
106        return arr;
107    }
108  } else if (isPlainObject(arr)) {
109    const keys = Object.keys(arr);
110    for (let i = 0, l = keys.length; i < l; i++) {
111      const key = keys[i];
112      if (callback.call(arr[key], key, arr[key]) === false)
113        return arr;
114    }
115  } else {
116    for (let i = 0, l = arr.length; i < l; i++) {
117      if (callback.call(arr[i], i, arr[i]) === false)
118        return arr;
119    }
120  }
121  return arr;
122}
123cash.each = each;
124fn.each = function(callback) {
125  return each(this, callback);
126};
127fn.empty = function() {
128  return this.each((i, ele) => {
129    while (ele.firstChild) {
130      ele.removeChild(ele.firstChild);
131    }
132  });
133};
134function extend(...sources) {
135  const deep = isBoolean(sources[0]) ? sources.shift() : false;
136  const target = sources.shift();
137  const length = sources.length;
138  if (!target)
139    return {};
140  if (!length)
141    return extend(deep, cash, target);
142  for (let i = 0; i < length; i++) {
143    const source = sources[i];
144    for (const key in source) {
145      if (deep && (isArray(source[key]) || isPlainObject(source[key]))) {
146        if (!target[key] || target[key].constructor !== source[key].constructor)
147          target[key] = new source[key].constructor();
148        extend(deep, target[key], source[key]);
149      } else {
150        target[key] = source[key];
151      }
152    }
153  }
154  return target;
155}
156cash.extend = extend;
157fn.extend = function(plugins) {
158  return extend(fn, plugins);
159};
160const splitValuesRe = /\S+/g;
161function getSplitValues(str) {
162  return isString(str) ? str.match(splitValuesRe) || [] : [];
163}
164fn.toggleClass = function(cls, force) {
165  const classes = getSplitValues(cls);
166  const isForce = !isUndefined(force);
167  return this.each((i, ele) => {
168    if (!isElement(ele))
169      return;
170    each(classes, (i2, c) => {
171      if (isForce) {
172        force ? ele.classList.add(c) : ele.classList.remove(c);
173      } else {
174        ele.classList.toggle(c);
175      }
176    });
177  });
178};
179fn.addClass = function(cls) {
180  return this.toggleClass(cls, true);
181};
182fn.removeAttr = function(attr2) {
183  const attrs = getSplitValues(attr2);
184  return this.each((i, ele) => {
185    if (!isElement(ele))
186      return;
187    each(attrs, (i2, a) => {
188      ele.removeAttribute(a);
189    });
190  });
191};
192function attr(attr2, value) {
193  if (!attr2)
194    return;
195  if (isString(attr2)) {
196    if (arguments.length < 2) {
197      if (!this[0] || !isElement(this[0]))
198        return;
199      const value2 = this[0].getAttribute(attr2);
200      return isNull(value2) ? void 0 : value2;
201    }
202    if (isUndefined(value))
203      return this;
204    if (isNull(value))
205      return this.removeAttr(attr2);
206    return this.each((i, ele) => {
207      if (!isElement(ele))
208        return;
209      ele.setAttribute(attr2, value);
210    });
211  }
212  for (const key in attr2) {
213    this.attr(key, attr2[key]);
214  }
215  return this;
216}
217fn.attr = attr;
218fn.removeClass = function(cls) {
219  if (arguments.length)
220    return this.toggleClass(cls, false);
221  return this.attr("class", "");
222};
223fn.hasClass = function(cls) {
224  return !!cls && some.call(this, (ele) => isElement(ele) && ele.classList.contains(cls));
225};
226fn.get = function(index) {
227  if (isUndefined(index))
228    return slice.call(this);
229  index = Number(index);
230  return this[index < 0 ? index + this.length : index];
231};
232fn.eq = function(index) {
233  return cash(this.get(index));
234};
235fn.first = function() {
236  return this.eq(0);
237};
238fn.last = function() {
239  return this.eq(-1);
240};
241function text(text2) {
242  if (isUndefined(text2)) {
243    return this.get().map((ele) => isElement(ele) || isText(ele) ? ele.textContent : "").join("");
244  }
245  return this.each((i, ele) => {
246    if (!isElement(ele))
247      return;
248    ele.textContent = text2;
249  });
250}
251fn.text = text;
252function computeStyle(ele, prop, isVariable) {
253  if (!isElement(ele))
254    return;
255  const style2 = win.getComputedStyle(ele, null);
256  return isVariable ? style2.getPropertyValue(prop) || void 0 : style2[prop] || ele.style[prop];
257}
258function computeStyleInt(ele, prop) {
259  return parseInt(computeStyle(ele, prop), 10) || 0;
260}
261function getExtraSpace(ele, xAxis) {
262  return computeStyleInt(ele, `border${xAxis ? "Left" : "Top"}Width`) + computeStyleInt(ele, `padding${xAxis ? "Left" : "Top"}`) + computeStyleInt(ele, `padding${xAxis ? "Right" : "Bottom"}`) + computeStyleInt(ele, `border${xAxis ? "Right" : "Bottom"}Width`);
263}
264const defaultDisplay = {};
265function getDefaultDisplay(tagName) {
266  if (defaultDisplay[tagName])
267    return defaultDisplay[tagName];
268  const ele = createElement(tagName);
269  doc.body.insertBefore(ele, null);
270  const display = computeStyle(ele, "display");
271  doc.body.removeChild(ele);
272  return defaultDisplay[tagName] = display !== "none" ? display : "block";
273}
274function isHidden(ele) {
275  return computeStyle(ele, "display") === "none";
276}
277function matches(ele, selector) {
278  const matches2 = ele && (ele["matches"] || ele["webkitMatchesSelector"] || ele["msMatchesSelector"]);
279  if (selector === ":visible") {
280    return !!(ele.offsetWidth || ele.offsetHeight || ele.getClientRects().length);
281  } else if (selector === ":hidden") {
282    return !(ele.offsetWidth || ele.offsetHeight || ele.getClientRects().length);
283  }
284  return !!matches2 && !!selector && matches2.call(ele, selector);
285}
286function getCompareFunction(comparator) {
287  return isString(comparator) ? (i, ele) => matches(ele, comparator) : isFunction(comparator) ? comparator : isCash(comparator) ? (i, ele) => comparator.is(ele) : !comparator ? () => false : (i, ele) => ele === comparator;
288}
289fn.filter = function(comparator) {
290  const compare = getCompareFunction(comparator);
291  return cash(filter.call(this, (ele, i) => compare.call(ele, i, ele)));
292};
293function filtered(collection, comparator) {
294  return !comparator ? collection : collection.filter(comparator);
295}
296fn.detach = function(comparator) {
297  filtered(this, comparator).each((i, ele) => {
298    if (ele.parentNode) {
299      ele.parentNode.removeChild(ele);
300    }
301  });
302  return this;
303};
304const fragmentRe = /^\s*<(\w+)[^>]*>/;
305const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
306const containers = {
307  "*": div,
308  tr: tbody,
309  td: tr,
310  th: tr,
311  thead: table,
312  tbody: table,
313  tfoot: table
314};
315function parseHTML(html2) {
316  if (!isString(html2))
317    return [];
318  if (singleTagRe.test(html2))
319    return [createElement(RegExp.$1)];
320  const fragment = fragmentRe.test(html2) && RegExp.$1;
321  const container = containers[fragment] || containers["*"];
322  container.innerHTML = html2;
323  return cash(container.childNodes).detach().get();
324}
325cash.parseHTML = parseHTML;
326fn.has = function(selector) {
327  const comparator = isString(selector) ? (i, ele) =>
327 find(selector, ele).length : (i, ele) => ele.contains(selector);
328  return this.filter(comparator);
329};
330fn.not = function(comparator) {
331  const compare = getCompareFunction(comparator);
332  return this.filter((i, ele) => (!isString(comparator) || isElement(ele)) && !compare.call(ele, i, ele));
333};
334function pluck(arr, prop, deep, until) {
335  const plucked = [];
336  const isCallback = isFunction(prop);
337  const compare = until && getCompareFunction(until);
338  for (let i = 0, l = arr.length; i < l; i++) {
339    if (isCallback) {
340      const val2 = prop(arr[i]);
341      if (val2.length)
342        push.apply(plucked, val2);
343    } else {
344      let val2 = arr[i][prop];
345      while (val2 != null) {
346        if (until && compare(-1, val2))
347          break;
348        plucked.push(val2);
349        val2 = deep ? val2[prop] : null;
350      }
351    }
352  }
353  return plucked;
354}
355function getValue(ele) {
356  if (ele.multiple && ele.options)
357    return pluck(filter.call(ele.options, (option) => option.selected && !option.disabled && !option.parentNode.disabled), "value");
358  return ele.value || "";
359}
360function val(value) {
361  if (!arguments.length)
362    return this[0] && getValue(this[0]);
363  return this.each((i, ele) => {
364    const isSelect = ele.multiple && ele.options;
365    if (isSelect || checkableRe.test(ele.type)) {
366      const eleValue = isArray(value) ? map.call(value, String) : isNull(value) ? [] : [String(value)];
367      if (isSelect) {
368        each(ele.options, (i2, option) => {
369          option.selected = eleValue.indexOf(option.value) >= 0;
370        }, true);
371      } else {
372        ele.checked = eleValue.indexOf(ele.value) >= 0;
373      }
374    } else {
375      ele.value = isUndefined(value) || isNull(value) ? "" : value;
376    }
377  });
378}
379fn.val = val;
380fn.is = function(comparator) {
381  const compare = getCompareFunction(comparator);
382  return some.call(this, (ele, i) => compare.call(ele, i, ele));
383};
384cash.guid = 1;
385function unique(arr) {
386  return arr.length > 1 ? filter.call(arr, (item, index, self) => indexOf.call(self, item) === index) : arr;
387}
388cash.unique = unique;
389fn.add = function(selector, context) {
390  return cash(unique(this.get().concat(cash(selector, context).get())));
391};
392fn.children = function(comparator) {
393  return filtered(cash(unique(pluck(this, (ele) => ele.children))), comparator);
394};
395fn.parent = function(comparator) {
396  return filtered(cash(unique(pluck(this, "parentNode"))), comparator);
397};
398fn.index = function(selector) {
399  const child = selector ? cash(selector)[0] : this[0];
400  const collection = selector ? this : cash(child).parent().children();
401  return indexOf.call(collection, child);
402};
403fn.closest = function(comparator) {
404  const filtered2 = this.filter(comparator);
405  if (filtered2.length)
406    return filtered2;
407  const $parent = this.parent();
408  if (!$parent.length)
409    return filtered2;
410  return $parent.closest(comparator);
411};
412fn.siblings = function(comparator) {
413  return filtered(cash(unique(pluck(this, (ele) => cash(ele).parent().children().not(ele)))), comparator);
414};
415fn.find = function(selector) {
416  return cash(unique(pluck(this, (ele) => find(selector, ele))));
417};
418const HTMLCDATARe = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
419const scriptTypeRe = /^$|^module$|\/(java|ecma)script/i;
420const scriptAttributes = ["type", "src", "nonce", "noModule"];
421function evalScripts(node, doc2) {
422  const collection = cash(node);
423  collection.filter("script").add(collection.find("script")).each((i, ele) => {
424    if (scriptTypeRe.test(ele.type) && docEle.contains(ele)) {
425      const script = createElement("script");
426      script.text = ele.textContent.replace(HTMLCDATARe, "");
427      each(scriptAttributes, (i2, attr2) => {
428        if (ele[attr2])
429          script[attr2] = ele[attr2];
430      });
431      doc2.head.insertBefore(script, null);
432      doc2.head.removeChild(script);
433    }
434  });
435}
436function insertElement(anchor, target, left, inside, evaluate) {
437  if (inside) {
438    anchor.insertBefore(target, left ? anchor.firstChild : null);
439  } else {
440    if (anchor.nodeName === "HTML") {
441      anchor.parentNode.replaceChild(target, anchor);
442    } else {
443      anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);
444    }
445  }
446  if (evaluate) {
447    evalScripts(target, anchor.ownerDocument);
448  }
449}
450function insertSelectors(selectors, anchors, inverse, left, inside, reverseLoop1, reverseLoop2, reverseLoop3) {
451  each(selectors, (si, selector) => {
452    each(cash(selector), (ti, target) => {
453      each(cash(anchors), (ai, anchor) => {
454        const anchorFinal = inverse ? target : anchor;
455        const targetFinal = inverse ? anchor : target;
456        const indexFinal = inverse ? ti : ai;
457        insertElement(anchorFinal, !indexFinal ? targetFinal : targetFinal.cloneNode(true), left, inside, !indexFinal);
458      }, reverseLoop3);
459    }, reverseLoop2);
460  }, reverseLoop1);
461  return anchors;
462}
463fn.after = function() {
464  return insertSelectors(arguments, this, false, false, false, true, true);
465};
466fn.append = function() {
467  return insertSelectors(arguments, this, false, false, true);
468};
469function html(html2) {
470  if (!arguments.length)
471    return this[0] && this[0].innerHTML;
472  if (isUndefined(html2))
473    return this;
474  const hasScript = /<script[\s>]/.test(html2);
475  return this.each((i, ele) => {
476    if (!isElement(ele))
477      return;
478    if (hasScript) {
479      cash(ele).empty().append(html2);
480    } else {
481      ele.innerHTML = html2;
482    }
483  });
484}
485fn.html = html;
486fn.appendTo = function(selector) {
487  return insertSelectors(arguments, this, true, false, true);
488};
489fn.wrapInner = function(selector) {
490  return this.each((i, ele) => {
491    const $ele = cash(ele);
492    const contents = $ele.contents();
493    contents.length ? contents.wrapAll(selector) : $ele.append(selector);
494  });
495};
496fn.before = function() {
497  return insertSelectors(arguments, this, false, true);
498};
499fn.wrapAll = function(selector) {
500  let structure = cash(selector);
501  let wrapper = structure[0];
502  while (wrapper.children.length)
503    wrapper = wrapper.firstElementChild;
504  this.first().before(structure);
505  return this.appendTo(wrapper);
506};
507fn.wrap = function(selector) {
508  return this.each((i, ele) => {
509    const wrapper = cash(selector)[0];
510    cash(ele).wrapAll(!i ? wrapper : wrapper.cloneNode(true));
511  });
512};
513fn.insertAfter = function(selector) {
514  return insertSelectors(arguments, this, true, false, false, false, false, true);
515};
516fn.insertBefore = function(selector) {
517  return insertSelectors(arguments, this, true, true);
518};
519fn.prepend = function() {
520  return insertSelectors(arguments, this, false, true, true, true, true);
521};
522fn.prependTo = function(selector) {
523  return insertSelectors(arguments, this, true, true, true, false, false, true);
524};
525fn.contents = function() {
526  return cash(unique(pluck(this, (ele) => ele.tagName === "IFRAME" ? [ele.contentDocument] : ele.tagName === "TEMPLATE" ? ele.content.childNodes : ele.childNodes)));
527};
528fn.next = function(comparator, _all, _until) {
529  return filtered(cash(unique(pluck(this, "nextElementSibling", _all, _until))), comparator);
530};
531fn.nextAll = function(comparator) {
532  return this.next(comparator, true);
533};
534fn.nextUntil = function(until, comparator) {
535  return this.next(comparator, true, until);
536};
537fn.parents = function(comparator, _until) {
538  return filtered(cash(unique(pluck(this, "parentElement", true, _until))), comparator);
539};
540fn.parentsUntil = function(until, comparator) {
541  return this.parents(comparator, until);
542};
543fn.prev = function(comparator, _all, _until) {
544  return filtered(cash(unique(pluck(this, "previousElementSibling", _all, _until))), comparator);
545};
546fn.prevAll = function(comparator) {
547  return this.prev(comparator, true);
548};
549fn.prevUntil = function(until, comparator) {
550  return this.prev(comparator, true, until);
551};
552fn.map = function(callback) {
553  return cash(concat.apply([], map.call(this, (ele, i) => callback.call(ele, i, ele))));
554};
555fn.clone = function() {
556  return this.map((i, ele) => ele.cloneNode(true));
557};
558fn.offsetParent = function() {
559  return this.map((i, ele) => {
560    let offsetParent = ele.offsetParent;
561    while (offsetParent && computeStyle(offsetParent, "position") === "static") {
562      offsetParent = offsetParent.offsetParent;
563    }
564    return offsetParent || docEle;
565  });
566};
567fn.slice = function(start, end) {
568  return cash(slice.call(this, start, end));
569};
570const dashAlphaRe = /-([a-z])/g;
571function camelCase(str) {
572  return str.replace(dashAlphaRe, (match, letter) => letter.toUpperCase());
573}
574fn.ready = function(callback) {
575  const cb = () => setTimeout(callback, 0, cash);
576  if (doc.readyState !== "loading") {
577    cb();
578  } else {
579    doc.addEventListener("DOMContentLoaded", cb);
580  }
581  return this;
582};
583fn.unwrap = function() {
584  this.parent().each((i, ele) => {
585    if (ele.tagName === "BODY")
586      return;
587    const $ele = cash(ele);
588    $ele.replaceWith($ele.children());
589  });
590  return this;
591};
592fn.offset = function() {
593  const ele = this[0];
594  if (!ele)
595    return;
596  const rect = ele.getBoundingClientRect();
597  return {
598    top: rect.top + win.pageYOffset,
599    left: rect.left + win.pageXOffset
600  };
601};
602fn.position = function() {
603  const ele = this[0];
604  if (!ele)
605    return;
606  const isFixed = computeStyle(ele, "position") === "fixed";
607  const offset = isFixed ? ele.getBoundingClientRect() : this.offset();
608  if (!isFixed) {
609    const doc2 = ele.ownerDocument;
610    let offsetParent = ele.offsetParent || doc2.documentElement;
611    while ((offsetParent === doc2.body || offsetParent === doc2.documentElement) && computeStyle(offsetParent, "position") === "static") {
612      offsetParent = offsetParent.parentNode;
613    }
614    if (offsetParent !== ele && isElement(offsetParent)) {
615      const parentOffset = cash(offsetParent).offset();
616      offset.top -= parentOffset.top + computeStyleInt(offsetParent, "borderTopWidth");
617      offset.left -= parentOffset.left + computeStyleInt(offsetParent, "borderLeftWidth");
618    }
619  }
620  return {
621    top: offset.top - computeStyleInt(ele, "marginTop"),
622    left: offset.left - computeStyleInt(ele, "marginLeft")
623  };
624};
625const propMap = {
626  /* GENERAL */
627  class: "className",
628  contenteditable: "contentEditable",
629  /* LABEL */
630  for: "htmlFor",
631  /* INPUT */
632  readonly: "readOnly",
633  maxlength: "maxLength",
634  tabindex: "tabIndex",
635  /* TABLE */
636  colspan: "colSpan",
637  rowspan: "rowSpan",
638  /* IMAGE */
639  usemap: "useMap"
640};
641fn.prop = function(prop, value) {
642  if (!prop)
643    return;
644  if (isString(prop)) {
645    prop = propMap[prop] || prop;
646    if (arguments.length < 2)
647      return this[0] && this[0][prop];
648    return this.each((i, ele) => {
649      ele[prop] = value;
650    });
651  }
652  for (const key in prop) {
653    this.prop(key, prop[key]);
654  }
655  return this;
656};
657fn.removeProp = function(prop) {
658  return this.each((i, ele) => {
659    delete ele[propMap[prop] || prop];
660  });
661};
662const cssVariableRe = /^--/;
663function isCSSVariable(prop) {
664  return cssVariableRe.test(prop);
665}
666const prefixedProps = {};
667const { style } = div;
668const vendorsPrefixes = ["webkit", "moz", "ms"];
669function getPrefixedProp(prop, isVariable = isCSSVariable(prop)) {
670  if (isVariable)
671    return prop;
672  if (!prefixedProps[prop]) {
673    const propCC = camelCase(prop);
674    const propUC = `${propCC[0].toUpperCase()}${propCC.slice(1)}`;
675    const props = `${propCC} ${vendorsPrefixes.join(`${propUC} `)}${propUC}`.split(" ");
676    each(props, (i, p) => {
677      if (p in style) {
678        prefixedProps[prop] = p;
679        return false;
680      }
681    });
682  }
683  return prefixedProps[prop];
684}
685const numericProps = {
686  animationIterationCount: true,
687  columnCount: true,
688  flexGrow: true,
689  flexShrink: true,
690  fontWeight: true,
691  gridArea: true,
692  gridColumn: true,
693  gridColumnEnd: true,
694  gridColumnStart: true,
695  gridRow: true,
696  gridRowEnd: true,
697  gridRowStart: true,
698  lineHeight: true,
699  opacity: true,
700  order: true,
701  orphans: true,
702  widows: true,
703  zIndex: true
704};
705function getSuffixedValue(prop, value, isVariable = isCSSVariable(prop)) {
706  return !isVariable && !numericProps[prop] && isNumeric(value) ? `${value}px` : value;
707}
708function css(prop, value) {
709  if (isString(prop)) {
710    const isVariable = isCSSVariable(prop);
711    prop = getPrefixedProp(prop, isVariable);
712    if (arguments.length < 2)
713      return this[0] && computeStyle(this[0], prop, isVariable);
714    if (!prop)
715      return this;
716    value = getSuffixedValue(prop, value, isVariable);
717    return this.each((i, ele) => {
718      if (!isElement(ele))
719        return;
720      if (isVariable) {
721        ele.style.setProperty(prop, value);
722      } else {
723        ele.style[prop] = value;
724      }
725    });
726  }
727  for (const key in prop) {
728    this.css(key, prop[key]);
729  }
730  return this;
731}
732fn.css = css;
733function attempt(fn2, arg) {
734  try {
735    return fn2(arg);
736  } catch (_a) {
737    return arg;
738  }
739}
740const JSONStringRe = /^\s+|\s+$/;
741function getData$1(ele, key) {
742  const value = ele.dataset[key] || ele.dataset[camelCase(key)];
743  if (JSONStringRe.test(value))
744    return value;
745  return attempt(JSON.parse, value);
746}
747function setData$1(ele, key, value) {
748  value = attempt(JSON.stringify, value);
749  ele.dataset[camelCase(key)] = value;
750}
751function data(name, value) {
752  if (!name) {
753    if (!this[0])
754      return;
755    const datas = {};
756    for (const key in this[0].dataset) {
757      datas[key] = getData$1(this[0], key);
758    }
759    return datas;
760  }
761  if (isString(name)) {
762    if (arguments.length < 2)
763      return this[0] && getData$1(this[0], name);
764    if (isUndefined(value))
765      return this;
766    return this.each((i, ele) => {
767      setData$1(ele, name, value);
768    });
769  }
770  for (const key in name) {
771    this.data(key, name[key]);
772  }
773  return this;
774}
775fn.data = data;
776function getDocumentDimension(doc2, dimension) {
777  const docEle2 = doc2.documentElement;
778  return Math.max(doc2.body[`scroll${dimension}`], docEle2[`scroll${dimension}`], doc2.body[`offset${dimension}`], docEle2[`offset${dimension}`], docEle2[`client${dimension}`]);
779}
780each([true, false], (i, outer) => {
781  each(["Width", "Height"], (i2, prop) => {
782    const name = `${outer ? "outer" : "inner"}${prop}`;
783    fn[name] = function(includeMargins) {
784      if (!this[0])
785        return;
786      if (isWindow(this[0]))
787        return outer ? this[0][`inner${prop}`] : this[0].document.documentElement[`client${prop}`];
788      if (isDocument(this[0]))
789        return getDocumentDimension(this[0], prop);
790      return this[0][`${outer ? "offset" : "client"}${prop}`] + (includeMargins && outer ? computeStyleInt(this[0], `margin${i2 ? "Top" : "Left"}`) + computeStyleInt(this[0], `margin${i2 ? "Bottom" : "Right"}`) : 0);
791    };
792  });
793});
794each(["Width", "Height"], (index, prop) => {
795  const propLC = prop.toLowerCase();
796  fn[propLC] = function(value) {
797    if (!this[0])
798      return isUndefined(value) ? void 0 : this;
799    if (!arguments.length) {
800      if (isWindow(this[0]))
801        return this[0].document.documentElement[`client${prop}`];
802      if (isDocument(this[0]))
803        return getDocumentDimension(this[0], prop);
804      return this[0].getBoundingClientRect()[propLC] - getExtraSpace(this[0], !index);
805    }
806    const valueNumber = parseInt(value, 10);
807    return this.each((i, ele) => {
808      if (!isElement(ele))
809        return;
810      const boxSizing = computeStyle(ele, "boxSizing");
811      ele.style[propLC] = getSuffixedValue(propLC, valueNumber + (boxSizing === "border-box" ? getExtraSpace(ele, !index) : 0));
812    });
813  };
814});
815const displayProperty = "___cd";
816fn.toggle = function(force) {
817  return this.each((i, ele) => {
818    if (!isElement(ele))
819      return;
820    const hidden = isHidden(ele);
821    const show = isUndefined(force) ? hidden : force;
822    if (show) {
823      ele.style.display = ele[displayProperty] || "";
824      if (isHidden(ele)) {
825        ele.style.display = getDefaultDisplay(ele.tagName);
826      }
827    }
827 else if (!hidden) {
828      ele[displayProperty] = computeStyle(ele, "display");
829      ele.style.display = "none";
830    }
831  });
832};
833fn.hide = function() {
834  return this.toggle(false);
835};
836fn.show = function() {
837  return this.toggle(true);
838};
839const eventsNamespace = "___ce";
840const eventsNamespacesSeparator = ".";
841const eventsFocus = { focus: "focusin", blur: "focusout" };
842const eventsHover = { mouseenter: "mouseover", mouseleave: "mouseout" };
843const eventsMouseRe = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;
844function getEventNameBubbling(name) {
845  return eventsHover[name] || eventsFocus[name] || name;
846}
847function parseEventName(eventName) {
848  const parts = eventName.split(eventsNamespacesSeparator);
849  return [parts[0], parts.slice(1).sort()];
850}
851fn.trigger = function(event, data2) {
852  if (isString(event)) {
853    const [nameOriginal, namespaces] = parseEventName(event);
854    const name = getEventNameBubbling(nameOriginal);
855    if (!name)
856      return this;
857    const type = eventsMouseRe.test(name) ? "MouseEvents" : "HTMLEvents";
858    event = doc.createEvent(type);
859    event.initEvent(name, true, true);
860    event.namespace = namespaces.join(eventsNamespacesSeparator);
861    event.___ot = nameOriginal;
862  }
863  event.___td = data2;
864  event.___array = Array.isArray(data2);
865  const isEventFocus = event.___ot in eventsFocus;
866  return this.each((i, ele) => {
867    if (isEventFocus && isFunction(ele[event.___ot])) {
868      ele[`___i${event.type}`] = true;
869      ele[event.___ot]();
870      ele[`___i${event.type}`] = false;
871    }
872    ele.dispatchEvent(event);
873  });
874};
875function getEventsCache(ele) {
876  return ele[eventsNamespace] = ele[eventsNamespace] || {};
877}
878function addEvent(ele, name, namespaces, selector, callback) {
879  const eventCache = getEventsCache(ele);
880  eventCache[name] = eventCache[name] || [];
881  eventCache[name].push([namespaces, selector, callback]);
882  ele.addEventListener(name, callback);
883}
884function hasNamespaces(ns1, ns2) {
885  return !ns2 || !some.call(ns2, (ns) => ns1.indexOf(ns) < 0);
886}
887function removeEvent(ele, name, namespaces, selector, callback) {
888  const cache = getEventsCache(ele);
889  if (!name) {
890    for (name in cache) {
891      removeEvent(ele, name, namespaces, selector, callback);
892    }
893  } else if (cache[name]) {
894    cache[name] = cache[name].filter(([ns, sel, cb]) => {
895      if (callback && cb.guid !== callback.guid || !hasNamespaces(ns, namespaces) || selector && selector !== sel)
896        return true;
897      ele.removeEventListener(name, cb);
898    });
899  }
900}
901fn.off = function(eventFullName, selector, callback) {
902  if (isUndefined(eventFullName)) {
903    this.each((i, ele) => {
904      if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))
905        return;
906      removeEvent(ele);
907    });
908  } else if (!isString(eventFullName)) {
909    for (const key in eventFullName) {
910      this.off(key, eventFullName[key]);
911    }
912  } else {
913    if (isFunction(selector)) {
914      callback = selector;
915      selector = "";
916    }
917    each(getSplitValues(eventFullName), (i, eventFullName2) => {
918      const [nameOriginal, namespaces] = parseEventName(eventFullName2);
919      const name = getEventNameBubbling(nameOriginal);
920      this.each((i2, ele) => {
921        if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))
922          return;
923        removeEvent(ele, name, namespaces, selector, callback);
924      });
925    });
926  }
927  return this;
928};
929fn.remove = function(comparator) {
930  filtered(this, comparator).detach().off();
931  return this;
932};
933fn.replaceWith = function(selector) {
934  return this.before(selector).remove();
935};
936fn.replaceAll = function(selector) {
937  cash(selector).replaceWith(this);
938  return this;
939};
940function on(eventFullName, selector, data2, callback, _one) {
941  if (!isString(eventFullName)) {
942    for (const key in eventFullName) {
943      this.on(key, selector, data2, eventFullName[key], _one);
944    }
945    return this;
946  }
947  if (!isString(selector)) {
948    if (isUndefined(selector) || isNull(selector)) {
949      selector = "";
950    } else if (isUndefined(data2)) {
951      data2 = selector;
952      selector = "";
953    } else {
954      callback = data2;
955      data2 = selector;
956      selector = "";
957    }
958  }
959  if (!isFunction(callback)) {
960    callback = data2;
961    data2 = void 0;
962  }
963  if (!callback)
964    return this;
965  each(getSplitValues(eventFullName), (i, eventFullName2) => {
966    const [nameOriginal, namespaces] = parseEventName(eventFullName2);
967    const name = getEventNameBubbling(nameOriginal);
968    const isEventHover = nameOriginal in eventsHover;
969    const isEventFocus = nameOriginal in eventsFocus;
970    if (!name)
971      return;
972    this.each((i2, ele) => {
973      if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))
974        return;
975      const finalCallback = function(event) {
976        if (event.target[`___i${event.type}`])
977          return event.stopImmediatePropagation();
978        if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))
979          return;
980        if (!selector && (isEventFocus && (event.target !== ele || event.___ot === name) || isEventHover && event.relatedTarget && ele.contains(event.relatedTarget)))
981          return;
982        let thisArg = ele;
983        if (selector) {
984          let target = event.target;
985          while (!matches(target, selector)) {
986            if (target === ele)
987              return;
988            target = target.parentNode;
989            if (!target)
990              return;
991          }
992          thisArg = target;
993        }
994        Object.defineProperty(event, "currentTarget", {
995          configurable: true,
996          get() {
997            return thisArg;
998          }
999        });
1000        Object.defineProperty(event, "delegateTarget", {
1001          configurable: true,
1002          get() {
1003            return ele;
1004          }
1005        });
1006        Object.defineProperty(event, "data", {
1007          configurable: true,
1008          get() {
1009            return data2;
1010          }
1011        });
1012        let returnValue = null;
1013        if (Array.isArray(event.___td) && event.___array) {
1014          returnValue = callback.call(thisArg, event, ...event.___td);
1015        } else {
1016          returnValue = callback.call(thisArg, event, event.___td);
1017        }
1018        if (_one) {
1019          removeEvent(ele, name, namespaces, selector, finalCallback);
1020        }
1021        if (returnValue === false) {
1022          event.preventDefault();
1023          event.stopPropagation();
1024        }
1025      };
1026      finalCallback.guid = callback.guid = callback.guid || cash.guid++;
1027      addEvent(ele, name, namespaces, selector, finalCallback);
1028    });
1029  });
1030  return this;
1031}
1032fn.on = on;
1033function one(eventFullName, selector, data2, callback) {
1034  return this.on(eventFullName, selector, data2, callback, true);
1035}
1036fn.one = one;
1037const queryEncodeCRLFRe = /\r?\n/g;
1038function queryEncode(prop, value) {
1039  return `&${encodeURIComponent(prop)}=${encodeURIComponent(value.replace(queryEncodeCRLFRe, "\r\n"))}`;
1040}
1041const skippableRe = /file|reset|submit|button|image/i;
1042const checkableRe = /radio|checkbox/i;
1043fn.serialize = function() {
1044  let query = "";
1045  this.each((i, ele) => {
1046    each(ele.elements || [ele], (i2, ele2) => {
1047      if (ele2.disabled || !ele2.name || ele2.tagName === "FIELDSET" || skippableRe.test(ele2.type) || checkableRe.test(ele2.type) && !ele2.checked)
1048        return;
1049      const value = getValue(ele2);
1050      if (!isUndefined(value)) {
1051        const values = isArray(value) ? value : [value];
1052        each(values, (i3, value2) => {
1053          query += queryEncode(ele2.name, value2);
1054        });
1055      }
1056    });
1057  });
1058  return query.slice(1);
1059};
1060const ledger = /* @__PURE__ */ new WeakMap();
1061function editLedger(wanted, baseElement, callback, setup) {
1062  if (!wanted && !ledger.has(baseElement)) {
1063    return false;
1064  }
1065  const elementMap = ledger.get(baseElement) ?? /* @__PURE__ */ new WeakMap();
1066  ledger.set(baseElement, elementMap);
1067  const setups = elementMap.get(callback) ?? /* @__PURE__ */ new Set();
1068  elementMap.set(callback, setups);
1069  const existed = setups.has(setup);
1070  if (wanted) {
1071    setups.add(setup);
1072  } else {
1073    setups.delete(setup);
1074  }
1075  return existed && wanted;
1076}
1077function safeClosest(event, selector) {
1078  let target = event.target;
1079  if (target instanceof Text) {
1080    target = target.parentElement;
1081  }
1082  if (target instanceof Element && event.currentTarget instanceof Node) {
1083    const closest = target.closest(selector);
1084    if (closest && event.currentTarget.contains(closest)) {
1085      return closest;
1086    }
1087  }
1088}
1089function delegate(selector, type, callback, options = {}) {
1090  if (Array.isArray(type)) {
1091    for (const t of type) {
1092      delegate(selector, t, callback, options);
1093    }
1094    return;
1095  }
1096  const singleType = type;
1097  const { signal, base = document } = options;
1098  if (signal?.aborted) {
1099    return;
1100  }
1101  const { once, ...nativeListenerOptions } = options;
1102  const baseElement = base instanceof Document ? base.documentElement : base;
1103  const capture = Boolean(typeof options === "object" ? options.capture : options);
1104  const listenerFunction = (event) => {
1105    const delegateTarget = safeClosest(event, String(selector));
1106    if (delegateTarget) {
1107      const delegateEvent = Object.assign(event, { delegateTarget });
1108      callback.call(baseElement, delegateEvent);
1109      if (once) {
1110        baseElement.removeEventListener(singleType, listenerFunction, nativeListenerOptions);
1111        editLedger(false, baseElement, callback, setup);
1112      }
1113    }
1114  };
1115  const setup = JSON.stringify({ selector, type: singleType, capture });
1116  const isAlreadyListening = editLedger(true, baseElement, callback, setup);
1117  if (!isAlreadyListening) {
1118    baseElement.addEventListener(singleType, listenerFunction, nativeListenerOptions);
1119  }
1120  signal?.addEventListener("abort", () => {
1121    editLedger(false, baseElement, callback, setup);
1122  });
1123}
1124const runningOnBrowser = typeof window !== "undefined";
1125const isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);
1126const supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window;
1127const supportsClassList = runningOnBrowser && "classList" in document.createElement("p");
1128const isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;
1129const defaultSettings = {
1130  elements_selector: ".lazy",
1131  container: isBot || runningOnBrowser ? document : null,
1132  threshold: 300,
1133  thresholds: null,
1134  data_src: "src",
1135  data_srcset: "srcset",
1136  data_sizes: "sizes",
1137  data_bg: "bg",
1138  data_bg_hidpi: "bg-hidpi",
1139  data_bg_multi: "bg-multi",
1140  data_bg_multi_hidpi: "bg-multi-hidpi",
1141  data_bg_set: "bg-set",
1142  data_poster: "poster",
1143  class_applied: "applied",
1144  class_loading: "loading",
1145  class_loaded: "loaded",
1146  class_error: "error",
1147  class_entered: "entered",
1148  class_exited: "exited",
1149  unobserve_completed: true,
1150  unobserve_entered: false,
1151  cancel_on_exit: true,
1152  callback_enter: null,
1153  callback_exit: null,
1154  callback_applied: null,
1155  callback_loading: null,
1156  callback_loaded: null,
1157  callback_error: null,
1158  callback_finish: null,
1159  callback_cancel: null,
1160  use_native: false,
1161  restore_on_error: false
1162};
1163const getExtendedSettings = (customSettings) => {
1164  return Object.assign({}, defaultSettings, customSettings);
1165};
1166const createInstance = function(classObj, options) {
1167  let event;
1168  const eventString = "LazyLoad::Initialized";
1169  const instance = new classObj(options);
1170  try {
1171    event = new CustomEvent(eventString, { detail: { instance } });
1172  } catch (err) {
1173    event = document.createEvent("CustomEvent");
1174    event.initCustomEvent(eventString, false, false, { instance });
1175  }
1176  window.dispatchEvent(event);
1177};
1178const autoInitialize = (classObj, options) => {
1179  if (!options) {
1180    return;
1181  }
1182  if (!options.length) {
1183    createInstance(classObj, options);
1184  } else {
1185    for (let i = 0, optionsItem; optionsItem = options[i]; i += 1) {
1186      createInstance(classObj, optionsItem);
1187    }
1188  }
1189};
1190const SRC = "src";
1191const SRCSET = "srcset";
1192const SIZES = "sizes";
1193const POSTER = "poster";
1194const ORIGINALS = "llOriginalAttrs";
1195const DATA = "data";
1196const statusLoading = "loading";
1197const statusLoaded = "loaded";
1198const statusApplied = "applied";
1199const statusEntered = "entered";
1200const statusError = "error";
1201const statusNative = "native";
1202const dataPrefix = "data-";
1203const statusDataName = "ll-status";
1204const getData = (element, attribute) => {
1205  return element.getAttribute(dataPrefix + attribute);
1206};
1207const setData = (element, attribute, value) => {
1208  const attrName = dataPrefix + attribute;
1209  if (value === null) {
1210    element.removeAttribute(attrName);
1211    return;
1212  }
1213  element.setAttribute(attrName, value);
1214};
1215const getStatus = (element) => getData(element, statusDataName);
1216const setStatus = (element, status) => setData(element, statusDataName, status);
1217const resetStatus = (element) => setStatus(element, null);
1218const hasEmptyStatus = (element) => getStatus(element) === null;
1219const hasStatusLoading = (element) => getStatus(element) === statusLoading;
1220const hasStatusError = (element) => getStatus(element) === statusError;
1221const hasStatusNative = (element) => getStatus(element) === statusNative;
1222const statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];
1223const hadStartedLoading = (element) =>
1223 statusesAfterLoading.indexOf(getStatus(element)) >= 0;
1224const safeCallback = (callback, arg1, arg2, arg3) => {
1225  if (!callback || typeof callback !== "function") {
1226    return;
1227  }
1228  if (arg3 !== void 0) {
1229    callback(arg1, arg2, arg3);
1230    return;
1231  }
1232  if (arg2 !== void 0) {
1233    callback(arg1, arg2);
1234    return;
1235  }
1236  callback(arg1);
1237};
1238const addClass = (element, className) => {
1239  if (className === "") {
1240    return;
1241  }
1242  if (supportsClassList) {
1243    element.classList.add(className);
1244    return;
1245  }
1246  element.className += (element.className ? " " : "") + className;
1247};
1248const removeClass = (element, className) => {
1249  if (className === "") {
1250    return;
1251  }
1252  if (supportsClassList) {
1253    element.classList.remove(className);
1254    return;
1255  }
1256  element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "");
1257};
1258const addTempImage = (element) => {
1259  element.llTempImage = document.createElement("IMG");
1260};
1261const deleteTempImage = (element) => {
1262  delete element.llTempImage;
1263};
1264const getTempImage = (element) => element.llTempImage;
1265const unobserve = (element, instance) => {
1266  if (!instance) return;
1267  const observer = instance._observer;
1268  if (!observer) return;
1269  observer.unobserve(element);
1270};
1271const resetObserver = (observer) => {
1272  observer.disconnect();
1273};
1274const unobserveEntered = (element, settings, instance) => {
1275  if (settings.unobserve_entered) unobserve(element, instance);
1276};
1277const updateLoadingCount = (instance, delta) => {
1278  if (!instance) return;
1279  instance.loadingCount += delta;
1280};
1281const decreaseToLoadCount = (instance) => {
1282  if (!instance) return;
1283  instance.toLoadCount -= 1;
1284};
1285const setToLoadCount = (instance, value) => {
1286  if (!instance) return;
1287  instance.toLoadCount = value;
1288};
1289const isSomethingLoading = (instance) => instance.loadingCount > 0;
1290const haveElementsToLoad = (instance) => instance.toLoadCount > 0;
1291const getSourceTags = (parentTag) => {
1292  let sourceTags = [];
1293  for (let i = 0, childTag; childTag = parentTag.children[i]; i += 1) {
1294    if (childTag.tagName === "SOURCE") {
1295      sourceTags.push(childTag);
1296    }
1297  }
1298  return sourceTags;
1299};
1300const forEachPictureSource = (element, fn2) => {
1301  const parent = element.parentNode;
1302  if (!parent || parent.tagName !== "PICTURE") {
1303    return;
1304  }
1305  let sourceTags = getSourceTags(parent);
1306  sourceTags.forEach(fn2);
1307};
1308const forEachVideoSource = (element, fn2) => {
1309  let sourceTags = getSourceTags(element);
1310  sourceTags.forEach(fn2);
1311};
1312const attrsSrc = [SRC];
1313const attrsSrcPoster = [SRC, POSTER];
1314const attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];
1315const attrsData = [DATA];
1316const hasOriginalAttrs = (element) => !!element[ORIGINALS];
1317const getOriginalAttrs = (element) => element[ORIGINALS];
1318const deleteOriginalAttrs = (element) => delete element[ORIGINALS];
1319const setOriginalsObject = (element, attributes) => {
1320  if (hasOriginalAttrs(element)) {
1321    return;
1322  }
1323  const originals = {};
1324  attributes.forEach((attribute) => {
1325    originals[attribute] = element.getAttribute(attribute);
1326  });
1327  element[ORIGINALS] = originals;
1328};
1329const saveOriginalBackgroundStyle = (element) => {
1330  if (hasOriginalAttrs(element)) {
1331    return;
1332  }
1333  element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };
1334};
1335const setOrResetAttribute = (element, attrName, value) => {
1336  if (!value) {
1337    element.removeAttribute(attrName);
1338    return;
1339  }
1340  element.setAttribute(attrName, value);
1341};
1342const restoreOriginalAttrs = (element, attributes) => {
1343  if (!hasOriginalAttrs(element)) {
1344    return;
1345  }
1346  const originals = getOriginalAttrs(element);
1347  attributes.forEach((attribute) => {
1348    setOrResetAttribute(element, attribute, originals[attribute]);
1349  });
1350};
1351const restoreOriginalBgImage = (element) => {
1352  if (!hasOriginalAttrs(element)) {
1353    return;
1354  }
1355  const originals = getOriginalAttrs(element);
1356  element.style.backgroundImage = originals.backgroundImage;
1357};
1358const manageApplied = (element, settings, instance) => {
1359  addClass(element, settings.class_applied);
1360  setStatus(element, statusApplied);
1361  if (!instance) return;
1362  if (settings.unobserve_completed) {
1363    unobserve(element, settings);
1364  }
1365  safeCallback(settings.callback_applied, element, instance);
1366};
1367const manageLoading = (element, settings, instance) => {
1368  addClass(element, settings.class_loading);
1369  setStatus(element, statusLoading);
1370  if (!instance) return;
1371  updateLoadingCount(instance, 1);
1372  safeCallback(settings.callback_loading, element, instance);
1373};
1374const setAttributeIfValue = (element, attrName, value) => {
1375  if (!value) {
1376    return;
1377  }
1378  element.setAttribute(attrName, value);
1379};
1380const setImageAttributes = (element, settings) => {
1381  setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));
1382  setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));
1383  setAttributeIfValue(element, SRC, getData(element, settings.data_src));
1384};
1385const setSourcesImg = (imgEl, settings) => {
1386  forEachPictureSource(imgEl, (sourceTag) => {
1387    setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);
1388    setImageAttributes(sourceTag, settings);
1389  });
1390  setOriginalsObject(imgEl, attrsSrcSrcsetSizes);
1391  setImageAttributes(imgEl, settings);
1392};
1393const setSourcesIframe = (iframe, settings) => {
1394  setOriginalsObject(iframe, attrsSrc);
1395  setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));
1396};
1397const setSourcesVideo = (videoEl, settings) => {
1398  forEachVideoSource(videoEl, (sourceEl) => {
1399    setOriginalsObject(sourceEl, attrsSrc);
1400    setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));
1401  });
1402  setOriginalsObject(videoEl, attrsSrcPoster);
1403  setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));
1404  setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));
1405  videoEl.load();
1406};
1407const setSourcesObject = (object, settings) => {
1408  setOriginalsObject(object, attrsData);
1409  setAttributeIfValue(object, DATA, getData(object, settings.data_src));
1410};
1411const setBackground = (element, settings, instance) => {
1412  const bg1xValue = getData(element, settings.data_bg);
1413  const bgHiDpiValue = getData(element, settings.data_bg_hidpi);
1414  const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;
1415  if (!bgDataValue) return;
1416  element.style.backgroundImage = `url("${bgDataValue}")`;
1417  getTempImage(element).setAttribute(SRC, bgDataValue);
1418  manageLoading(element, settings, instance);
1419};
1420const setMultiBackground = (element, settings, instance) => {
1421  const bg1xValue = getData(element, settings.data_bg_multi);
1422  const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);
1423  const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;
1424  if (!bgDataValue) {
1425    return;
1426  }
1427  element.style.backgroundImage = bgDataValue;
1428  manageApplied(element, settings, instance);
1429};
1430const setImgsetBackground = (element, settings, instance) => {
1431  const bgImgSetDataValue = getData(element, settings.data_bg_set);
1432  if (!bgImgSetDataValue) {
1433    return;
1434  }
1435  const imgSetValues = bgImgSetDataValue.split("|");
1436  let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);
1437  element.style.backgroundImage = bgImageValues.join();
1438  if (element.style.backgroundImage === "") {
1439    bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);
1440    element.style.backgroundImage = bgImageValues.join();
1441  }
1442  manageApplied(element, settings, instance);
1443};
1444const setSourcesFunctions = {
1445  IMG: setSourcesImg,
1446  IFRAME: setSourcesIframe,
1447  VIDEO: setSourcesVideo,
1448  OBJECT: setSourcesObject
1449};
1450const setSourcesNative = (element, settings) => {
1451  const setSourcesFunction = setSourcesFunctions[element.tagName];
1452  if (!setSourcesFunction) {
1453    return;
1454  }
1455  setSourcesFunction(element, settings);
1456};
1457const setSources = (element, settings, instance) => {
1458  const setSourcesFunction = setSourcesFunctions[element.tagName];
1459  if (!setSourcesFunction) {
1460    return;
1461  }
1462  setSourcesFunction(element, settings);
1463  manageLoading(element, settings, instance);
1464};
1465const elementsWithLoadEvent = ["IMG", "IFRAME", "VIDEO", "OBJECT"];
1466const hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;
1467const checkFinish = (settings, instance) => {
1468  if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {
1469    safeCallback(settings.callback_finish, instance);
1470  }
1471};
1472const addEventListener = (element, eventName, handler) => {
1473  element.addEventListener(eventName, handler);
1474  element.llEvLisnrs[eventName] = handler;
1475};
1476const removeEventListener = (element, eventName, handler) => {
1477  element.removeEventListener(eventName, handler);
1478};
1479const hasEventListeners = (element) => {
1480  return !!element.llEvLisnrs;
1481};
1482const addEventListeners = (element, loadHandler2, errorHandler2) => {
1483  if (!hasEventListeners(element)) element.llEvLisnrs = {};
1484  const loadEventName = element.tagName === "VIDEO" ? "loadeddata" : "load";
1485  addEventListener(element, loadEventName, loadHandler2);
1486  addEventListener(element, "error", errorHandler2);
1487};
1488const removeEventListeners = (element) => {
1489  if (!hasEventListeners(element)) {
1490    return;
1491  }
1492  const eventListeners = element.llEvLisnrs;
1493  for (let eventName in eventListeners) {
1494    const handler = eventListeners[eventName];
1495    removeEventListener(element, eventName, handler);
1496  }
1497  delete element.llEvLisnrs;
1498};
1499const doneHandler = (element, settings, instance) => {
1500  deleteTempImage(element);
1501  updateLoadingCount(instance, -1);
1502  decreaseToLoadCount(instance);
1503  removeClass(element, settings.class_loading);
1504  if (settings.unobserve_completed) {
1505    unobserve(element, instance);
1506  }
1507};
1508const loadHandler = (event, element, settings, instance) => {
1509  const goingNative = hasStatusNative(element);
1510  doneHandler(element, settings, instance);
1511  addClass(element, settings.class_loaded);
1512  setStatus(element, statusLoaded);
1513  safeCallback(settings.callback_loaded, element, instance);
1514  if (!goingNative) checkFinish(settings, instance);
1515};
1516const errorHandler = (event, element, settings, instance) => {
1517  const goingNative = hasStatusNative(element);
1518  doneHandler(element, settings, instance);
1519  addClass(element, settings.class_error);
1520  setStatus(element, statusError);
1521  safeCallback(settings.callback_error, element, instance);
1522  if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);
1523  if (!goingNative) checkFinish(settings, instance);
1524};
1525const addOneShotEventListeners = (element, settings, instance) => {
1526  const elementToListenTo = getTempImage(element) || element;
1527  if (hasEventListeners(elementToListenTo)) {
1528    return;
1529  }
1530  const _loadHandler = (event) => {
1531    loadHandler(event, element, settings, instance);
1532    removeEventListeners(elementToListenTo);
1533  };
1534  const _errorHandler = (event) => {
1535    errorHandler(event, element, settings, instance);
1536    removeEventListeners(elementToListenTo);
1537  };
1538  addEventListeners(elementToListenTo, _loadHandler, _errorHandler);
1539};
1540const loadBackground = (element, settings, instance) => {
1541  addTempImage(element);
1542  addOneShotEventListeners(element, settings, instance);
1543  saveOriginalBackgroundStyle(element);
1544  setBackground(element, settings, instance);
1545  setMultiBackground(element, settings, instance);
1546  setImgsetBackground(element, settings, instance);
1547};
1548const loadRegular = (element, settings, instance) => {
1549  addOneShotEventListeners(element, settings, instance);
1550  setSources(element, settings, instance);
1551};
1552const load = (element, settings, instance) => {
1553  if (hasLoadEvent(element)) {
1554    loadRegular(element, settings, instance);
1555  } else {
1556    loadBackground(element, settings, instance);
1557  }
1558};
1559const loadNative = (element, settings, instance) => {
1560  element.setAttribute("loading", "lazy");
1561  addOneShotEventListeners(element, settings, instance);
1562  setSourcesNative(element, settings);
1563  setStatus(element, statusNative);
1564};
1565const removeImageAttributes = (element) => {
1566  element.removeAttribute(SRC);
1567  element.removeAttribute(SRCSET);
1568  element.removeAttribute(SIZES);
1569};
1570const resetSourcesImg = (element) => {
1571  forEachPictureSource(element, (sourceTag) => {
1572    removeImageAttributes(sourceTag);
1573  });
1574  removeImageAttributes(element);
1575};
1576const restoreImg = (imgEl) => {
1577  forEachPictureSource(imgEl, (sourceEl) => {
1578    restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);
1579  });
1580  restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);
1581};
1582const restoreVideo = (videoEl) => {
1583  forEachVideoSource(videoEl, (sourceEl) => {
1584    restoreOriginalAttrs(sourceEl, attrsSrc);
1585  });
1586  restoreOriginalAttrs(videoEl, attrsSrcPoster);
1587  videoEl.load();
1588};
1589const restoreIframe = (iframeEl) => {
1590  restoreOriginalAttrs(iframeEl, attrsSrc);
1591};
1592const restoreObject = (objectEl) => {
1593  restoreOriginalAttrs(objectEl, attrsData);
1594};
1595const restoreFunctions = {
1596  IMG: restoreImg,
1597  IFRAME: restoreIframe,
1598  VIDEO: restoreVideo,
1599  OBJECT: restoreObject
1600};
1601const restoreAttributes = (element) => {
1602  const restoreFunction = restoreFunctions[element.tagName];
1603  if (!restoreFunction) {
1604    restoreOriginalBgImage(element);
1605    return;
1606  }
1607  restoreFunction(element);
1608};
1609const resetClasses = (element, settings) => {
1610  if (hasEmptyStatus(element) || hasStatusNative(element)) {
1611    return;
1612  }
1613  removeClass(element, settings.class_entered);
1614  removeClass(element, settings.class_exited);
1615  removeClass(element, settings.class_applied);
1616  removeClass(element, settings.class_loading);
1617  removeClass(element, settings.class_loaded);
1618  removeClass(element, settings.class_error);
1619};
1620const restore = (element, settings) => {
1621  restoreAttributes(element);
1622  resetClasses(element, settings);
1623  resetStatus(element);
1624  deleteOriginalAttrs(element);
1625};
1626const cancelLoading = (element, entry, settings, instance) => {
1627  if (!settings.cancel_on_exit) return;
1628  if (!hasStatusLoading(element)) return;
1629  if (element.tagName !== "IMG") return;
1630  removeEventListeners(element);
1631  resetSourcesImg(element);
1632  restoreImg(element);
1633  removeClass(element, settings.class_loading);
1634  updateLoadingCount(instance, -1);
1635  resetStatus(element);
1636  safeCallback(settings.callback_cancel, element, entry, instance);
1637};
1638const onEnter = (element, entry, settings, instance) => {
1639  const dontLoad = hadStartedLoading(element);
1640  setStatus(element, statusEntered);
1641  addClass(element, settings.class_entered);
1642  removeClass(element, settings.class_exited);
1643  unobserveEntered(element, settings, instance);
1644  safeCallback(settings.callback_enter, element, entry, instance);
1645  if (dontLoad) return;
1646  load(element, settings, instance);
1647};
1648const onExit = (element, entry, settings, instance) => {
1649  if (hasEmptyStatus(element)) return;
1650  addClass(element, settings.class_exited);
1651  cancelLoading(element, entry, settings, instance);
1652  safeCallback(settings.callback_exit, element, entry, instance);
1653};
1654const tagsWithNativeLazy = ["IMG", "IFRAME", "VIDEO"];
1655const shouldUseNative = (settings) => settings.use_native && "loading" in HTMLImageElement.prototype;
1656const loadAllNative = (elements, settings, instance) => {
1657  elements.forEach((element) => {
1658    if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {
1659      return;
1660    }
1661    loadNative(element, settings, instance);
1662  });
1663  setToLoadCount(instance, 0);
1664};
1665const isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;
1666const getObserverSettings = (settings) => ({
1667  root: settings.container === document ? null : settings.container,
1668  rootMargin: settings.thresholds || settings.threshold + "px"
1669});
1670const intersectionHandler = (entries, settings, instance) => {
1671  entries.forEach(
1672    (entry) => isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance)
1673  );
1674};
1675const observeElements = (observer, elements) => {
1676  elements.forEach((element) => {
1677    observer.observe(element);
1678  });
1679};
1680const updateObserver = (observer, elementsToObserve) => {
1681  resetObserver(observer);
1682  observeElements(observer, elementsToObserve);
1683};
1684const setObserver = (settings, instance) => {
1685  if (!supportsIntersectionObserver || shouldUseNative(settings)) {
1686    return;
1687  }
1688  instance._observer = new IntersectionObserver((entries) => {
1689    intersectionHandler(entries, settings, instance);
1690  }, getObserverSettings(settings));
1691};
1692const toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);
1693const queryElements = (settings) => settings.container.querySelectorAll(settings.elements_selector);
1694const excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);
1695const hasError = (element) => hasStatusError(element);
1696const filterErrorElements = (elements) => toArray(elements).filter(hasError);
1697const getElementsToLoad = (elements, settings) => excludeManagedElements(elements || queryElements(settings));
1698const retryLazyLoad = (settings, instance) => {
1699  const errorElements = filterErrorElements(queryElements(settings));
1700  errorElements.forEach((element) => {
1701    removeClass(element, settings.class_error);
1702    resetStatus(element);
1703  });
1704  instance.update();
1705};
1706const setOnlineCheck = (settings, instance) => {
1707  if (!runningOnBrowser) {
1708    return;
1709  }
1710  instance._onlineHandler = () => {
1711    retryLazyLoad(settings, instance);
1712  };
1713  window.addEventListener("online", instance._onlineHandler);
1714};
1715const resetOnlineCheck = (instance) => {
1716  if (!runningOnBrowser) {
1717    return;
1718  }
1719  window.removeEventListener("online", instance._onlineHandler);
1720};
1721const LazyLoad = function(customSettings, elements) {
1722  const settings = getExtendedSettings(customSettings);
1723  this._settings = settings;
1724  this.loadingCount = 0;
1725  setObserver(settings, this);
1726  setOnlineCheck(settings, this);
1727  this.update(elements);
1728};
1729LazyLoad.prototype = {
1730  update: function(givenNodeset) {
1731    const settings = this._settings;
1732    const elementsToLoad = getElementsToLoad(givenNodeset, settings);
1733    setToLoadCount(this, elementsToLoad.length);
1734    if (isBot || !supportsIntersectionObserver) {
1735      this.loadAll(elementsToLoad);
1736      return;
1737    }
1738    if (shouldUseNative(settings)) {
1739      loadAllNative(elementsToLoad, settings, this);
1740      return;
1741    }
1742    updateObserver(this._observer, elementsToLoad);
1743  },
1744  destroy: function() {
1745    if (this._observer) {
1746      this._observer.disconnect();
1747    }
1748    resetOnlineCheck(this);
1749    queryElements(this._settings).forEach((element) => {
1750      deleteOriginalAttrs(element);
1751    });
1752    delete this._observer;
1753    delete this._settings;
1754    delete this._onlineHandler;
1755    delete this.loadingCount;
1756    delete this.toLoadCount;
1757  },
1758  loadAll: function(elements) {
1759    const settings = this._settings;
1760    const elementsToLoad = getElementsToLoad(elements, settings);
1761    elementsToLoad.forEach((element) => {
1762      unobserve(element, this);
1763      load(element, settings, this);
1764    });
1765  },
1766  restoreAll: function() {
1767    const settings = this._settings;
1768    queryElements(settings).forEach((element) => {
1769      restore(element, settings);
1770    });
1771  }
1772};
1773LazyLoad.load = (element, customSettings) => {
1774  const settings = getExtendedSettings(customSettings);
1775  load(element, settings);
1776};
1777LazyLoad.resetStatus = (element) => {
1778  resetStatus(element);
1779};
1780if (runningOnBrowser) {
1781  autoInitialize(LazyLoad, window.lazyLoadOptions);
1782}
1783document.getElementById("optidigital-adslot-hum_ad");
1784function _extends() {
1785  return _extends = Object.assign ? Object.assign.bind() : function(n) {
1786    for (var e = 1; e < arguments.length; e++) {
1787      var t = arguments[e];
1788      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
1789    }
1790    return n;
1791  }, _extends.apply(null, arguments);
1792}
1793function _objectWithoutPropertiesLoose(r, e) {
1794  if (null == r) return {};
1795  var t = {};
1796  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
1797    if (-1 !== e.indexOf(n)) continue;
1798    t[n] = r[n];
1799  }
1800  return t;
1801}
1802var _excluded$1 = ["type", "data", "headers", "processData", "url", "contentType"];
1803var parseJSON = function parseJSON2(response) {
1804  var contentType = response.headers.get("content-type");
1805  if (contentType && contentType.indexOf("application/json") !== -1) {
1806    return response.json();
1807  }
1808  return response.text();
1809};
1810var AJAX_URL = "/wp-content/mu-plugins/humanoid-core/includes/Core/Ajax/AjaxEndpoint.php";
1811var Ajax = {
1812  // POST method
1813  post: function post(url, data2, cb) {
1814    if (cb === void 0) {
1815      cb = null;
1816    }
1817    return this.ajax({
1818      url,
1819      data: data2,
1820      success: cb,
1821      type: "POST"
1822    });
1823  },
1824  // GET method
1825  get: function get(url, data2, cb) {
1826    if (cb === void 0) {
1827      cb = null;
1828    }
1829    return this.ajax({
1830      url,
1831      data: data2,
1832      success: cb
1833    });
1834  },
1835  ajax: function ajax(params) {
1836    if (params === void 0) {
1837      params = {};
1838    }
1839    var _params = params, _params$type = _params.type, type = _params$type === void 0 ? "GET" : _params$type, data2 = _params.data, _params$headers = _params.headers, headers = _params$headers === void 0 ? {}
1839 : _params$headers, _params$processData = _params.processData, processData = _params$processData === void 0 ? true : _params$processData, url = _params.url, _params$contentType = _params.contentType, contentType = _params$contentType === void 0 ? null : _params$contentType, rest = _objectWithoutPropertiesLoose(_params, _excluded$1);
1840    var body = null;
1841    if (type === "GET" && data2) {
1842      var args = [];
1843      var _loop = function _loop2(key2) {
1844        if (data2[key2] !== void 0) {
1845          if (Array.isArray(data2[key2])) {
1846            data2[key2].forEach(function(e) {
1847              args.push(key2 + "[]=" + encodeURIComponent(e));
1848            });
1849          } else if (typeof data2[key2] !== "string") {
1850            args.push(key2 + "=" + encodeURIComponent(JSON.stringify(data2[key2])));
1851          } else {
1852            args.push(key2 + "=" + encodeURIComponent(data2[key2]));
1853          }
1854        }
1855      };
1856      for (var key in data2) {
1857        _loop(key);
1858      }
1859      url += "?" + args.join("&");
1860    } else if (data2) {
1861      body = data2;
1862      if (contentType === null) {
1863        contentType = "application/x-www-form-urlencoded;charset=UTF-8";
1864      }
1865      if (processData) {
1866        if (typeof data2 === "object" && !(data2 instanceof FormData)) {
1867          contentType = null;
1868          body = new FormData();
1869          var keys = Object.keys(data2);
1870          for (var i = 0; i < keys.length; i += 1) {
1871            body.append(keys[i], data2[keys[i]]);
1872          }
1873        }
1874      }
1875    }
1876    if (contentType) {
1877      headers["Content-Type"] = contentType;
1878    }
1879    var fetchParams = _extends({
1880      method: type || "GET",
1881      body,
1882      headers
1883    }, rest);
1884    var promise = window.fetch(url, fetchParams).then(parseJSON).then(function(res) {
1885      if (params.success) {
1886        params.success(res);
1887      }
1888      return res;
1889    })["catch"](function(err) {
1890      if (params.error) {
1891        params.error(err);
1892      }
1893      throw err;
1894    });
1895    promise.done = function(e) {
1896      promise.then(e);
1897      return promise;
1898    };
1899    promise.fail = function(e) {
1900      promise["catch"](e);
1901      return promise;
1902    };
1903    return promise;
1904  }
1905};
1906var GTM_DATA_ATTRIBUTE_LEGACY = "data-push-event";
1907var GTM_DATA_ATTRIBUTE = "data-gtm";
1908var GTM_DATA_ATTRIBUTE_ON = "data-gtm-on";
1909function getDataLayer() {
1910  window.dataLayer = window.dataLayer || [];
1911  return window.dataLayer;
1912}
1913function pushDataLayer(event) {
1914  window.dataLayer = window.dataLayer || [];
1915  window.dataLayer.push(event);
1916}
1917function newPageView(title, url, objectStats) {
1918  var layer = getDataLayer();
1919  var relativeUrl = url;
1920  if (relativeUrl.indexOf("http://") !== -1) {
1921    relativeUrl = "/" + relativeUrl.split("/").slice(3).join("/");
1922  }
1923  if (layer.some(function(f) {
1924    return f.virtualPageURL === relativeUrl;
1925  })) {
1926    return;
1927  }
1928  var data2 = {};
1929  data2 = {
1930    event: "VirtualPageview",
1931    virtualPageURL: relativeUrl,
1932    virtualPageTitle: title,
1933    theme: document.documentElement.getAttribute("data-scheme")
1934  };
1935  pushDataLayer(data2);
1936}
1937function newsletterEvent() {
1938  pushDataLayer({
1939    event: "NewsLetterInterArticleBox"
1940  });
1941}
1942function onGtmClick(event) {
1943  var link = event.delegateTarget;
1944  var dataPushEvents = link.getAttribute(GTM_DATA_ATTRIBUTE_LEGACY);
1945  if (dataPushEvents) {
1946    var eventArray = dataPushEvents.split(",");
1947    for (var j = 0; j < eventArray.length; j += 1) {
1948      pushDataLayer({
1949        event: eventArray[j]
1950      });
1951    }
1952  }
1953  if (link) {
1954    pushElementGtm(link);
1955  }
1956}
1957function pushElementGtm(element) {
1958  var gtmJsonEncodedData = element.getAttribute(GTM_DATA_ATTRIBUTE);
1959  if (!gtmJsonEncodedData) {
1960    return;
1961  }
1962  try {
1963    var dataJson = JSON.parse(gtmJsonEncodedData);
1964    pushDataLayer(dataJson);
1965  } catch (e) {
1966    console.error(e);
1967  }
1968}
1969function initPushEventInClick() {
1970  var selectorOnClick = ["[" + GTM_DATA_ATTRIBUTE_LEGACY + "]", "[" + GTM_DATA_ATTRIBUTE + "]:not(" + GTM_DATA_ATTRIBUTE_ON + ")"].join(",");
1971  var selectorOnCustomEvent = ["[" + GTM_DATA_ATTRIBUTE + "][" + GTM_DATA_ATTRIBUTE_ON + "]"].join(",");
1972  delegate(selectorOnClick, "click", onGtmClick, {
1973    capture: true
1974  });
1975  document.querySelectorAll(selectorOnCustomEvent).forEach(function(element) {
1976    var eventType = element.getAttribute(GTM_DATA_ATTRIBUTE_ON);
1977    if (eventType === "ready") {
1978      domReady(function() {
1979        return pushElementGtm(element);
1980      });
1981    }
1982  });
1983}
1984var _excluded = ["html"];
1985var NO_MORE_ITEMS = "no_more_items";
1986var MORE_LINK = "more_link";
1987var ON_ERROR = "on_error";
1988var AJAX_LOADER = "ajax_loader";
1989var AJAX_LOADER_CLASS = "ajax-loader";
1990var Feed = /* @__PURE__ */ (function() {
1991  function Feed2(ajaxUrl, siteUrl, elementsCallbacks) {
1992    var _this = this;
1993    if (elementsCallbacks === void 0) {
1994      elementsCallbacks = {};
1995    }
1996    this.ajaxUrl = ajaxUrl;
1997    this.siteUrl = siteUrl;
1998    this.elementsCallbacks = elementsCallbacks;
1999    this.filters = document.querySelectorAll("[data-filter]");
2000    this.filtersList = document.querySelector(".filters__list");
2001    this.noAjaxClass = "js-no-ajax";
2002    this.infiniteScrollClass = "js-infinite-scroll";
2003    this.$filterWrapper = $(".js-feed-filters-wrapper");
2004    this.$footer = $('#footer, footer[role="contentinfo"]').first();
2005    this.loadEventStarted = false;
2006    this.pageLoaded = 1;
2007    this.canAjax = true;
2008    this.oldDatas = {};
2009    this.currentDataKey = null;
2010    this.abortController = new AbortController();
2011    this.timeoutId = null;
2012    this.searchPostsBlocks();
2013    if (this.$postsBlocks.length > 0) {
2014      $(window).on("scroll", this.bindScrollEvent.bind(this));
2015    }
2016    this.filters.forEach(function(filter2) {
2017      filter2.addEventListener("click", function(ev) {
2018        var $currentTarget = $(ev.currentTarget);
2019        if ($currentTarget.hasClass("active")) {
2020          return;
2021        }
2022        var filterData = $currentTarget.data("filter");
2023        _this.getAjaxPostsFiltered(filterData, $currentTarget);
2024      });
2025      if (window.location.hash === "" + filter2.getAttribute("href")) {
2026        filter2.click();
2027        if (filter2.offsetLeft + filter2.offsetWidth > _this.filtersList.offsetWidth) {
2028          _this.filtersList.scrollLeft = filter2.offsetLeft - 40;
2029        }
2030      }
2031    });
2032  }
2033  var _proto = Feed2.prototype;
2034  _proto.searchPostsBlocks = function searchPostsBlocks() {
2035    this.$postsBlocks = $(".js-feed-posts");
2036    this.$lastBlock = this.$postsBlocks.last();
2037  };
2038  _proto.updateDomData = function updateDomData(data2) {
2039    var currentOldData = {};
2040    if (data2.url && data2.url !== window.location.href) {
2041      currentOldData.url = window.location.href;
2042      window.history.pushState({
2043        urlPath: data2.url
2044      }, "", data2.url);
2045      $("a[data-page-url]").attr("href", data2.url);
2046    }
2047    if (data2.title && data2.title !== document.title) {
2048      currentOldData.title = document.title;
2049      document.title = data2.title;
2050      $('meta[property="og:title"]').attr("content", data2.title);
2051    }
2052    if (data2.heading) {
2053      currentOldData.heading = $("[data-page-title],h1").html();
2054      $("[data-page-title],h1").html(data2.heading);
2055    }
2056    if (data2.description) {
2057      currentOldData.description = $("[data-page-description]").html();
2058      $("[data-page-description]").html(data2.description);
2059      $('meta[name="description"]').attr("content", data2.description);
2060      $('meta[property="og:description"]').attr("content", data2.description);
2061    }
2062    if (data2.breadcrumb) {
2063      currentOldData.breadcrumb = $("[data-page-breadcrumb]").html();
2064      $("[data-page-breadcrumb]").html(data2.breadcrumb);
2065    }
2066    return currentOldData;
2067  };
2068  _proto.bindScrollEvent = function bindScrollEvent() {
2069    if (!this.loadEventStarted && this.canAjax && !this.$lastBlock.hasClass(this.noAjaxClass)) {
2070      if (window.scrollY + $(window).height() > document.body.scrollHeight - $(window).height() - this.$footer.height() / 2) {
2071        this.loadEventStarted = true;
2072        this.getAjaxPosts();
2073        return;
2074      }
2075    }
2076    var keys = Object.keys(this.oldDatas);
2077    if (keys.length === 0) {
2078      return;
2079    }
2080    var nearestOldData = null;
2081    var nearestOldDataKey = null;
2082    var scrollKey = window.scrollY + $(window).height();
2083    for (var i = 0; i < keys.length; i += 1) {
2084      var key = keys[i];
2085      if (scrollKey < key) {
2086        nearestOldData = this.oldDatas[key];
2087        nearestOldDataKey = key;
2088        break;
2089      }
2090    }
2091    if (nearestOldData && nearestOldDataKey !== this.currentDataKey) {
2092      this.currentDataKey = nearestOldDataKey;
2093      this.updateDomData(nearestOldData);
2094    }
2095  };
2096  _proto.getData = function getData2() {
2097    return this.$lastBlock.data("feed") || {};
2098  };
2099  _proto.buildEsiAjaxConfig = function buildEsiAjaxConfig(params) {
2100    var esiParams = {
2101      feed_type: params.feed_type,
2102      term_id: params.term_id,
2103      paged: params.paged
2104    };
2105    if (params.page_slug) {
2106      esiParams.page_slug = params.page_slug;
2107    }
2108    var query = Object.entries(esiParams).filter(function(_ref) {
2109      var v = _ref[1];
2110      return v !== void 0 && v !== null;
2111    }).map(function(_ref2) {
2112      var k = _ref2[0], v = _ref2[1];
2113      return k + "=" + encodeURIComponent(v);
2114    }).join("&");
2115    return {
2116      url: "/_fragment/" + params.esi_fragment + "?" + query,
2117      headers: {
2118        "X-Fragment": "1"
2119      }
2120    };
2121  };
2122  _proto.getAjaxPostsFiltered = function getAjaxPostsFiltered(filter2, filterTarget) {
2123    var params = this.getData();
2124    params.paged = 1;
2125    params.filter = filter2;
2126    this.$lastBlock.data("feed", params);
2127    this.oldDatas = {};
2128    return this.getAjaxPosts(filterTarget);
2129  };
2130  _proto.getAjaxPosts = function getAjaxPosts(filterTarget) {
2131    var _this2 = this;
2132    if (filterTarget === void 0) {
2133      filterTarget = null;
2134    }
2135    var params = this.getData();
2136    if (!filterTarget) {
2137      params.paged += 1;
2138    } else {
2139      this.abortController.abort();
2140      this.abortController = new AbortController();
2141    }
2142    $(".ajax-error").remove();
2143    var $wrapper = params.filters_wrapper ? $(params.filters_wrapper) : null;
2144    var $loaderWrapper = params.loader_wrapper ? $(params.loader_wrapper) : $wrapper;
2145    this.injectAjaxLoader(!!filterTarget, $loaderWrapper);
2146    var ajaxConfig = params.esi_fragment ? this.buildEsiAjaxConfig(params) : {
2147      url: this.ajaxUrl,
2148      data: _extends({
2149        action: "getNextPage"
2150      }, params)
2151    };
2152    return Ajax.ajax(_extends({}, ajaxConfig, {
2153      signal: this.abortController.signal
2154    })).then(function(data2) {
2155      var html2;
2156      var otherData;
2157      if (params.esi_fragment) {
2158        html2 = data2;
2159        otherData = {};
2160      } else {
2161        var _data = data2;
2162        html2 = _data.html;
2163        otherData = _objectWithoutPropertiesLoose(_data, _excluded);
2164      }
2165      var fragments = document.createRange().createContextualFragment(html2);
2166      var feeds = fragments.querySelectorAll(".js-feed-posts");
2167      var feed = Array.from(feeds).pop();
2168      var content = feed.innerHTML.trim();
2169      var dataAttributes = $(feed).data();
2170      var currentOldData = _this2.updateDomData(otherData);
2171      if (_this2.loadEventStarted) {
2172        var key = document.body.scrollHeight - $(window).height();
2173        _this2.oldDatas[key] = currentOldData;
2174      }
2175      var _ref3 = dataAttributes.feed || {}, layout = _ref3.layout;
2176      if (layout && layout.length && _this2.elementsCallbacks[layout]) {
2177        _this2.elementsCallbacks[layout](content, !!filterTarget);
2178      } else if (filterTarget) {
2179        if ($wrapper && $wrapper.length) {
2180          $wrapper.html($(html2.trim()).html());
2181          _this2.searchPostsBlocks();
2182        } else {
2183          _this2.$lastBlock.html(content);
2184        }
2185        $(".ajax-no-posts").remove();
2186      } else {
2187        _this2.$lastBlock.append(content);
2188      }
2189      _this2.currentDataKey = document.body.scrollHeight - $(window).height();
2190      _this2.oldDatas[_this2.currentDataKey] = otherData;
2191      _this2.$lastBlock.data(dataAttributes);
2192      _this2.$lastBlock.attr("class", feed.className);
2193      document.dispatchEvent(new Event("updateLazyload"));
2194      if (_this2.$ajaxLoader) {
2195        _this2.$ajaxLoader.remove();
2196        _this2.$ajaxLoader = null;
2197      }
2198      if (_this2.pageLoaded === 4 && !_this2.$lastBlock.hasClass(_this2.noAjaxClass) && !_this2.$postsBlocks.hasClass(_this2.infiniteScrollClass)) {
2199        var url = _this2.getUrl(params.redirect_path, params.paged, params.paged_as_get);
2200        if (url.length > 0) {
2201          _this2.injectMoreLink(url + "#derniers-articles");
2202        }
2203        _this2.canAjax = false;
2204      } else if (_this2.$lastBlock.hasClass(_this2.noAjaxClass)) {
2205        _this2.injectNoMoreItems(!!filterTarget);
2206        _this2.canAjax = false;
2207      } else if (filterTarget) {
2208        _this2.canAjax = true;
2209      }
2210      if (!filterTarget) {
2211        _this2.pageLoaded += 1;
2212      } else {
2213        _this2.pageLoaded = 0;
2214        $("[data-filter], .is-feed-filter").removeClass("active");
2215        if (filterTarget !== true) {
2216          filterTarget.addClass("active");
2217        }
2218      }
2219      _this2.loadEventStarted = false;
2220      if (params.slug !== "single") {
2221        _this2.pushVirtualPageView();
2222      }
2223      return otherData;
2224    })["catch"](function(err) {
2225      if (err.name === "AbortError") {
2226        return;
2227      }
2228      console.error(err);
2229      if (_this2.$ajaxLoader) {
2230        _this2.$ajaxLoader.remove();
2231        _this2.$ajaxLoader = null;
2232      }
2233      var $onError = null;
2234      if (!_this2.elementsCallbacks[ON_ERROR]) {
2235        $onError = $('<div class="ajax-error has-text-weight-semibold has-text-primary has-text-centered mt-3 mb-3">Oups, une erreur est survenue !</div>');
2236      } else {
2237        $onError = _this2.elementsCallbacks[ON_ERROR](!!filterTarget);
2238      }
2239      if (filterTarget) {
2240        _this2.$lastBlock.html($onError.html());
2241      } else {
2242        _this2.$lastBlock.after($onError);
2243      }
2244    });
2245  };
2246  _proto.getUrl = function getUrl(slug, pageNumber, pagedAsGet) {
2247    if (pagedAsGet === void 0) {
2248      pagedAsGet = false;
2249    }
2250    if (!slug && slug !== "") {
2251      return false;
2252    }
2253    var nextPage = pageNumber + 1;
2254    var baseURL = this.siteUrl;
2255    if (slug !== "" && slug !== "/") {
2256      baseURL += "/" + slug;
2257    }
2258    if (pagedAsGet === true || pagedAsGet === "true") {
2259      var url = new URL(baseURL);
2260      url.searchParams.set("page", nextPage);
2261      return url.href;
2262    }
2263    return baseURL + "/page/" + nextPage + "/";
2264  };
2265  _proto.injectAjaxLoader = function injectAjaxLoader(isFiltering, $wrapper) {
2266    var _this3 = this;
2267    if (isFiltering === void 0) {
2268      isFiltering = false;
2269    }
2270    if ($wrapper === void 0) {
2271      $wrapper = null;
2272    }
2273    if (this.timeoutId) {
2274      clearTimeout(this.timeoutId);
2275      this.timeoutId = null;
2276    }
2277    if (!this.$ajaxLoader) {
2278      var $ajaxLoader = $("<div>");
2279      if (!this.elementsCallbacks[AJAX_LOADER]) {
2280        $ajaxLoader.append($("<div>").addClass(AJAX_LOADER_CLASS));
2281      } else {
2282        var $loader = this.elementsCallbacks[AJAX_LOADER](isFiltering);
2283        if (!$loader) {
2284          return;
2285        }
2286        $ajaxLoader.append($loader);
2287      }
2288      if (isFiltering) {
2289        if ($wrapper && $wrapper.length) {
2290          $ajaxLoader.hide().insertBefore($wrapper).slideDown(150);
2291        } else {
2292          $ajaxLoader.hide().insertBefore(this.$lastBlock).slideDown(150);
2293        }
2294      } else {
2295        this.$lastBlock.after($ajaxLoader);
2296      }
2297      this.$ajaxLoader = $ajaxLoader;
2298    }
2299    this.timeoutId = setTimeout(function() {
2300      if (_this3.$ajaxLoader && _this3.$ajaxLoader.length) {
2301        _this3.$ajaxLoader.append('<p class="ajax-text has-text-weight-semibold has-text-primary has-text-centered">Encore un petit instant...</p>');
2302      }
2303    }, 2500);
2304  };
2305  _proto.injectNoMoreItems = function injectNoMoreItems(isFiltering) {
2306    if (isFiltering === void 0) {
2307      isFiltering = false;
2308    }
2309    var $noMoreItems = null;
2310    if (!this.elementsCallbacks[NO_MORE_ITEMS]) {
2311      $noMoreItems = $(`<div class="ajax-no-posts has-text-weight-semibold has-text-primary has-text-centered mt-3 mb-3">Il n'y a pas d'autres articles` + (isFiltering ? " pour ce filtre" : "") + "...</div>");
2312    } else {
2313      $noMoreItems = this.elementsCallbacks[NO_MORE_ITEMS](isFiltering);
2314    }
2315    if ($noMoreItems) {
2316      this.$lastBlock.after($noMoreItems);
2317    }
2318  };
2319  _proto.injectMoreLink = function injectMoreLink(url) {
2320    var $moreLink = null;
2321    if (!this.elementsCallbacks[MORE_LINK]) {
2322      $moreLink = $('<div class="has-text-centered mt-3 mb-3"><a href="' + url + `" class="button">Voir plus d'articles</a></div>`);
2323    } else {
2324      $moreLink = this.elementsCallbacks[MORE_LINK](url);
2325    }
2326    if ($moreLink) {
2327      this.$lastBlock.after($moreLink);
2328    }
2329  };
2330  _proto.pushVirtualPageView = function pushVirtualPageView() {
2331    var currentUrl = window.location.href.split("#")[0];
2332    var siteTitle = document.title;
2333    newPageView(siteTitle, currentUrl + "page/" + this.pageLoaded);
2334  };
2335  return Feed2;
2336})();
2337window.lazyFunctions = {};
2338window.lazyPendings = {};
2339var Lazyload = {
2340  add: function add(funcName, cb, context) {
2341    if (context === void 0) {
2342      context = "default";
2343    }
2344    if (!window.lazyFunctions) {
2345      var _window$lazyFunctions;
2346      window.lazyFunctions = (_window$lazyFunctions = {}, _window$lazyFunctions[context] = {}, _window$lazyFunctions);
2347    } else if (!window.lazyFunctions[context]) {
2348      window.lazyFunctions[context] = {};
2349    }
2350    window.lazyFunctions[context][funcName] = cb;
2351    if (window.lazyPendings && window.lazyPendings[context]) {
2352      var lazyPendings = window.lazyPendings[context][funcName];
2353      if (lazyPendings && lazyPendings.length) {
2354        var lazyFunc = window.lazyFunctions[context][funcName];
2355        if (lazyFunc) {
2356          lazyPendings.map(lazyFunc);
2357          delete window.lazyPendings[context][funcName];
2358        }
2359      }
2360    }
2361  },
2362  init: function init4(_temp) {
2363    var _ref = _temp === void 0 ? {} : _temp, _ref$errorImg = _ref.errorImg, errorImg = _ref$errorImg === void 0 ? null : _ref$errorImg, _ref$threshold = _ref.threshold, threshold = _ref$threshold === void 0 ? 600 : _ref$threshold, _ref$context = _ref.context, context = _ref$context === void 0 ? "default" : _ref$context;
2364    errorImg = errorImg || window.theme_config.theme + "/assets/images/error.png";
2365    if (!window.lazyPendings) {
2366      var _window$lazyPendings;
2367      window.lazyPendings = (_window$lazyPendings = {}, _window$lazyPendings[context] = {}, _window$lazyPendings);
2368    } else {
2369      window.lazyPendings[context] = {};
2370    }
2371    var instance = new LazyLoad({
2372      threshold,
2373      elements_selector: context === "default" ? "img[data-src], [data-bg], [data-lazy-func]" : "[data-lazy-func]",
2374      unobserve_entered: true,
2375      callback_enter: function callback_enter(el) {
2376        var funcName = el.getAttribute("data-lazy-func");
2377        if (!funcName) return;
2378        var lazyFunc = (window.lazyFunctions[context] || {})[funcName];
2379        if (!lazyFunc) {
2380          if (window.lazyPendings[context] && window.lazyPendings[context][funcName]) {
2381            window.lazyPendings[context][funcName] = [].concat(window.lazyPendings[context][funcName], [el]);
2382          } else if (window.lazyPendings[context]) {
2383            window.lazyPendings[context][funcName] = [el];
2384          } else {
2385            var _window$lazyPendings$;
2386            window.lazyPendings[context] = (_window$lazyPendings$ = {}, _window$lazyPendings$[funcName] = [el], _window$lazyPendings$);
2387          }
2388          return;
2389        }
2390        lazyFunc(el);
2391      },
2392      callback_error: function callback_error(el) {
2393        if (el.tagName !== "IMG") {
2394          return;
2395        }
2396        if (el.dataset.fallback && el.src !== el.dataset.fallback) {
2397          el.src = el.dataset.fallback;
2398        } else if (el.src) {
2399          el.src = errorImg;
2400        }
2401        if (el.dataset.fallback && el.srcset !== el.dataset.fallback) {
2402          el.srcset = el.dataset.fallback;
2403        } else if (el.srcset) {
2404          el.srcset = errorImg;
2405        }
2406      }
2407    });
2408    document.addEventListener("updateLazyload", function() {
2409      instance.update();
2410    });
2411    return instance;
2412  }
2413};
2414var ThemeManifest = {
2415  manifest: null,
2416  /**
2417   * @returns {Promise<Ajax>}
2418   */
2419  fetch: function fetch() {
2420    try {
2421      var _this = this;
2422      if (_this.manifest !== null) {
2423        return Promise.resolve(_this.manifest);
2424      }
2425      return Promise.resolve(Ajax.get(window.theme_config.themeManifest).then(function(data2) {
2426        _this.manifest = data2;
2427        return data2;
2428      }));
2429    } catch (e) {
2430      return Promise.reject(e);
2431    }
2432  }
2433};
2434var VideosUtils = {
2435  /**
2436   * Load the video iframe on click on the image placeholder.
2437   * @param ev Event
2438   * @param player query selector for the player
2439   */
2440  loadYouTubeIframe: function loadYouTubeIframe(e, player) {
2441    e.preventDefault();
2442    var $video = $(e.target).closest(player);
2443    var videoID = $video.data("videoId");
2444    $video.removeClass("placeholder");
2445    var iframe = '<iframe width="' + $video.width() + '" height="' + $video.height() + '" src="';
2446    iframe += "https://www.youtube.com/embed/" + videoID;
2447    iframe += '?autoplay=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
2448    $video.html(iframe);
2449  }
2450};
2451var getNonce = function getNonce2(action) {
2452  try {
2453    return Promise.resolve(Ajax.post(AJAX_URL, {
2454      action: "getNonce",
2455      value: action
2456    }).then(function(response) {
2457      return response.nonce;
2458    }));
2459  } catch (e) {
2460    return Promise.reject(e);
2461  }
2462};
2463export {
2464  Feed as F,
2465  Lazyload as L,
2466  NO_MORE_ITEMS as N,
2467  ThemeManifest as T,
2468  VideosUtils as V,
2469  newPageView as a,
2470  getNonce as g,
2471  initPushEventInClick as i,
2472  newsletterEvent as n,
2473  pushDataLayer as p
2474};
2475
2476//# chunkId=01a0cd79-2a16-7d00-b365-fb2465d82c85

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.