{"version":3,"file":"animatePage.js","sources":["../../../node_modules/gsap/dist/SplitText.js","../../../node_modules/vanilla-lazyload/dist/lazyload.esm.js","../../../node_modules/vanilla-marquee/dist/vanilla-marquee.js","../../../fe-src/js/modules/animatePage.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n\tvar emojiExp = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF](?:[\\u200D\\uFE0F][\\uD800-\\uDBFF][\\uDC00-\\uDFFF]){2,}|\\uD83D\\uDC69(?:\\u200D(?:(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC67|(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC66)|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC69\\u200D)?\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC6F\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDD6-\\uDDDF])\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642])\\uFE0F|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\uD83D\\uDC69\\u200D[\\u2695\\u2696\\u2708]|\\uD83D\\uDC68(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708]))\\uFE0F|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83D\\uDC69\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]))|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDD1-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\u200D(?:(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC67|(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D)?\\uD83D\\uDC66)|\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC69\\uDC6E\\uDC70-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3D\\uDD3E\\uDDD1-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])?|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDEEB\\uDEEC\\uDEF4-\\uDEF8]|\\uD83E[\\uDD10-\\uDD3A\\uDD3C-\\uDD3E\\uDD40-\\uDD45\\uDD47-\\uDD4C\\uDD50-\\uDD6B\\uDD80-\\uDD97\\uDDC0\\uDDD0-\\uDDE6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEF8]|\\uD83E[\\uDD10-\\uDD3A\\uDD3C-\\uDD3E\\uDD40-\\uDD45\\uDD47-\\uDD4C\\uDD50-\\uDD6B\\uDD80-\\uDD97\\uDDC0\\uDDD0-\\uDDE6])\\uFE0F)/;\n\tfunction getText(e) {\n\t var type = e.nodeType,\n\t result = \"\";\n\n\t if (type === 1 || type === 9 || type === 11) {\n\t if (typeof e.textContent === \"string\") {\n\t return e.textContent;\n\t } else {\n\t for (e = e.firstChild; e; e = e.nextSibling) {\n\t result += getText(e);\n\t }\n\t }\n\t } else if (type === 3 || type === 4) {\n\t return e.nodeValue;\n\t }\n\n\t return result;\n\t}\n\n\t/*!\n\t * SplitText: 3.12.5\n\t * https://gsap.com\n\t *\n\t * @license Copyright 2008-2024, GreenSock. All rights reserved.\n\t * Subject to the terms at https://gsap.com/standard-license or for\n\t * Club GSAP members, the agreement issued with that membership.\n\t * @author: Jack Doyle, jack@greensock.com\n\t*/\n\n\tvar _doc,\n\t _win,\n\t _coreInitted,\n\t gsap,\n\t _context,\n\t _toArray,\n\t _stripExp = /(?:\\r|\\n|\\t\\t)/g,\n\t _multipleSpacesExp = /(?:\\s\\s+)/g,\n\t _nonBreakingSpace = String.fromCharCode(160),\n\t _initCore = function _initCore(core) {\n\t _doc = document;\n\t _win = window;\n\t gsap = gsap || core || _win.gsap || console.warn(\"Please gsap.registerPlugin(SplitText)\");\n\n\t if (gsap) {\n\t _toArray = gsap.utils.toArray;\n\n\t _context = gsap.core.context || function () {};\n\n\t _coreInitted = 1;\n\t }\n\t},\n\t _getComputedStyle = function _getComputedStyle(element) {\n\t return _win.getComputedStyle(element);\n\t},\n\t _isAbsolute = function _isAbsolute(vars) {\n\t return vars.position === \"absolute\" || vars.absolute === true;\n\t},\n\t _findSpecialChars = function _findSpecialChars(text, chars) {\n\t var i = chars.length,\n\t s;\n\n\t while (--i > -1) {\n\t s = chars[i];\n\n\t if (text.substr(0, s.length) === s) {\n\t return s.length;\n\t }\n\t }\n\t},\n\t _divStart = \" style='position:relative;display:inline-block;'\",\n\t _cssClassFunc = function _cssClassFunc(cssClass, tag) {\n\t if (cssClass === void 0) {\n\t cssClass = \"\";\n\t }\n\n\t var iterate = ~cssClass.indexOf(\"++\"),\n\t num = 1;\n\n\t if (iterate) {\n\t cssClass = cssClass.split(\"++\").join(\"\");\n\t }\n\n\t return function () {\n\t return \"<\" + tag + _divStart + (cssClass ? \" class='\" + cssClass + (iterate ? num++ : \"\") + \"'>\" : \">\");\n\t };\n\t},\n\t _swapText = function _swapText(element, oldText, newText) {\n\t var type = element.nodeType;\n\n\t if (type === 1 || type === 9 || type === 11) {\n\t for (element = element.firstChild; element; element = element.nextSibling) {\n\t _swapText(element, oldText, newText);\n\t }\n\t } else if (type === 3 || type === 4) {\n\t element.nodeValue = element.nodeValue.split(oldText).join(newText);\n\t }\n\t},\n\t _pushReversed = function _pushReversed(a, merge) {\n\t var i = merge.length;\n\n\t while (--i > -1) {\n\t a.push(merge[i]);\n\t }\n\t},\n\t _isBeforeWordDelimiter = function _isBeforeWordDelimiter(e, root, wordDelimiter) {\n\t var next;\n\n\t while (e && e !== root) {\n\t next = e._next || e.nextSibling;\n\n\t if (next) {\n\t return next.textContent.charAt(0) === wordDelimiter;\n\t }\n\n\t e = e.parentNode || e._parent;\n\t }\n\t},\n\t _deWordify = function _deWordify(e) {\n\t var children = _toArray(e.childNodes),\n\t l = children.length,\n\t i,\n\t child;\n\n\t for (i = 0; i < l; i++) {\n\t child = children[i];\n\n\t if (child._isSplit) {\n\t _deWordify(child);\n\t } else {\n\t if (i && child.previousSibling && child.previousSibling.nodeType === 3) {\n\t child.previousSibling.nodeValue += child.nodeType === 3 ? child.nodeValue : child.firstChild.nodeValue;\n\t e.removeChild(child);\n\t } else if (child.nodeType !== 3) {\n\t e.insertBefore(child.firstChild, child);\n\t e.removeChild(child);\n\t }\n\t }\n\t }\n\t},\n\t _getStyleAsNumber = function _getStyleAsNumber(name, computedStyle) {\n\t return parseFloat(computedStyle[name]) || 0;\n\t},\n\t _setPositionsAfterSplit = function _setPositionsAfterSplit(element, vars, allChars, allWords, allLines, origWidth, origHeight) {\n\t var cs = _getComputedStyle(element),\n\t paddingLeft = _getStyleAsNumber(\"paddingLeft\", cs),\n\t lineOffsetY = -999,\n\t borderTopAndBottom = _getStyleAsNumber(\"borderBottomWidth\", cs) + _getStyleAsNumber(\"borderTopWidth\", cs),\n\t borderLeftAndRight = _getStyleAsNumber(\"borderLeftWidth\", cs) + _getStyleAsNumber(\"borderRightWidth\", cs),\n\t padTopAndBottom = _getStyleAsNumber(\"paddingTop\", cs) + _getStyleAsNumber(\"paddingBottom\", cs),\n\t padLeftAndRight = _getStyleAsNumber(\"paddingLeft\", cs) + _getStyleAsNumber(\"paddingRight\", cs),\n\t lineThreshold = _getStyleAsNumber(\"fontSize\", cs) * (vars.lineThreshold || 0.2),\n\t textAlign = cs.textAlign,\n\t charArray = [],\n\t wordArray = [],\n\t lineArray = [],\n\t wordDelimiter = vars.wordDelimiter || \" \",\n\t tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n\t types = vars.type || vars.split || \"chars,words,lines\",\n\t lines = allLines && ~types.indexOf(\"lines\") ? [] : null,\n\t words = ~types.indexOf(\"words\"),\n\t chars = ~types.indexOf(\"chars\"),\n\t absolute = _isAbsolute(vars),\n\t linesClass = vars.linesClass,\n\t iterateLine = ~(linesClass || \"\").indexOf(\"++\"),\n\t spaceNodesToRemove = [],\n\t isFlex = cs.display === \"flex\",\n\t prevInlineDisplay = element.style.display,\n\t i,\n\t j,\n\t l,\n\t node,\n\t nodes,\n\t isChild,\n\t curLine,\n\t addWordSpaces,\n\t style,\n\t lineNode,\n\t lineWidth,\n\t offset;\n\n\t iterateLine && (linesClass = linesClass.split(\"++\").join(\"\"));\n\t isFlex && (element.style.display = \"block\");\n\t j = element.getElementsByTagName(\"*\");\n\t l = j.length;\n\t nodes = [];\n\n\t for (i = 0; i < l; i++) {\n\t nodes[i] = j[i];\n\t }\n\n\t if (lines || absolute) {\n\t for (i = 0; i < l; i++) {\n\t node = nodes[i];\n\t isChild = node.parentNode === element;\n\n\t if (isChild || absolute || chars && !words) {\n\t offset = node.offsetTop;\n\n\t if (lines && isChild && Math.abs(offset - lineOffsetY) > lineThreshold && (node.nodeName !== \"BR\" || i === 0)) {\n\t curLine = [];\n\t lines.push(curLine);\n\t lineOffsetY = offset;\n\t }\n\n\t if (absolute) {\n\t node._x = node.offsetLeft;\n\t node._y = offset;\n\t node._w = node.offsetWidth;\n\t node._h = node.offsetHeight;\n\t }\n\n\t if (lines) {\n\t if (node._isSplit && isChild || !chars && isChild || words && isChild || !words && node.parentNode.parentNode === element && !node.parentNode._isSplit) {\n\t curLine.push(node);\n\t node._x -= paddingLeft;\n\n\t if (_isBeforeWordDelimiter(node, element, wordDelimiter)) {\n\t node._wordEnd = true;\n\t }\n\t }\n\n\t if (node.nodeName === \"BR\" && (node.nextSibling && node.nextSibling.nodeName === \"BR\" || i === 0)) {\n\t lines.push([]);\n\t }\n\t }\n\t }\n\t }\n\t }\n\n\t for (i = 0; i < l; i++) {\n\t node = nodes[i];\n\t isChild = node.parentNode === element;\n\n\t if (node.nodeName === \"BR\") {\n\t if (lines || absolute) {\n\t node.parentNode && node.parentNode.removeChild(node);\n\t nodes.splice(i--, 1);\n\t l--;\n\t } else if (!words) {\n\t element.appendChild(node);\n\t }\n\n\t continue;\n\t }\n\n\t if (absolute) {\n\t style = node.style;\n\n\t if (!words && !isChild) {\n\t node._x += node.parentNode._x;\n\t node._y += node.parentNode._y;\n\t }\n\n\t style.left = node._x + \"px\";\n\t style.top = node._y + \"px\";\n\t style.position = \"absolute\";\n\t style.display = \"block\";\n\t style.width = node._w + 1 + \"px\";\n\t style.height = node._h + \"px\";\n\t }\n\n\t if (!words && chars) {\n\t if (node._isSplit) {\n\t node._next = j = node.nextSibling;\n\t node.parentNode.appendChild(node);\n\n\t while (j && j.nodeType === 3 && j.textContent === \" \") {\n\t node._next = j.nextSibling;\n\t node.parentNode.appendChild(j);\n\t j = j.nextSibling;\n\t }\n\t } else if (node.parentNode._isSplit) {\n\t node._parent = node.parentNode;\n\n\t if (!node.previousSibling && node.firstChild) {\n\t node.firstChild._isFirst = true;\n\t }\n\n\t if (node.nextSibling && node.nextSibling.textContent === \" \" && !node.nextSibling.nextSibling) {\n\t spaceNodesToRemove.push(node.nextSibling);\n\t }\n\n\t node._next = node.nextSibling && node.nextSibling._isFirst ? null : node.nextSibling;\n\t node.parentNode.removeChild(node);\n\t nodes.splice(i--, 1);\n\t l--;\n\t } else if (!isChild) {\n\t offset = !node.nextSibling && _isBeforeWordDelimiter(node.parentNode, element, wordDelimiter);\n\t node.parentNode._parent && node.parentNode._parent.appendChild(node);\n\t offset && node.parentNode.appendChild(_doc.createTextNode(\" \"));\n\n\t if (tag === \"span\") {\n\t node.style.display = \"inline\";\n\t }\n\n\t charArray.push(node);\n\t }\n\t } else if (node.parentNode._isSplit && !node._isSplit && node.innerHTML !== \"\") {\n\t wordArray.push(node);\n\t } else if (chars && !node._isSplit) {\n\t if (tag === \"span\") {\n\t node.style.display = \"inline\";\n\t }\n\n\t charArray.push(node);\n\t }\n\t }\n\n\t i = spaceNodesToRemove.length;\n\n\t while (--i > -1) {\n\t spaceNodesToRemove[i].parentNode.removeChild(spaceNodesToRemove[i]);\n\t }\n\n\t if (lines) {\n\t if (absolute) {\n\t lineNode = _doc.createElement(tag);\n\t element.appendChild(lineNode);\n\t lineWidth = lineNode.offsetWidth + \"px\";\n\t offset = lineNode.offsetParent === element ? 0 : element.offsetLeft;\n\t element.removeChild(lineNode);\n\t }\n\n\t style = element.style.cssText;\n\t element.style.cssText = \"display:none;\";\n\n\t while (element.firstChild) {\n\t element.removeChild(element.firstChild);\n\t }\n\n\t addWordSpaces = wordDelimiter === \" \" && (!absolute || !words && !chars);\n\n\t for (i = 0; i < lines.length; i++) {\n\t curLine = lines[i];\n\t lineNode = _doc.createElement(tag);\n\t lineNode.style.cssText = \"display:block;text-align:\" + textAlign + \";position:\" + (absolute ? \"absolute;\" : \"relative;\");\n\n\t if (linesClass) {\n\t lineNode.className = linesClass + (iterateLine ? i + 1 : \"\");\n\t }\n\n\t lineArray.push(lineNode);\n\t l = curLine.length;\n\n\t for (j = 0; j < l; j++) {\n\t if (curLine[j].nodeName !== \"BR\") {\n\t node = curLine[j];\n\t lineNode.appendChild(node);\n\t addWordSpaces && node._wordEnd && lineNode.appendChild(_doc.createTextNode(\" \"));\n\n\t if (absolute) {\n\t if (j === 0) {\n\t lineNode.style.top = node._y + \"px\";\n\t lineNode.style.left = paddingLeft + offset + \"px\";\n\t }\n\n\t node.style.top = \"0px\";\n\n\t if (offset) {\n\t node.style.left = node._x - offset + \"px\";\n\t }\n\t }\n\t }\n\t }\n\n\t if (l === 0) {\n\t lineNode.innerHTML = \" \";\n\t } else if (!words && !chars) {\n\t _deWordify(lineNode);\n\n\t _swapText(lineNode, String.fromCharCode(160), \" \");\n\t }\n\n\t if (absolute) {\n\t lineNode.style.width = lineWidth;\n\t lineNode.style.height = node._h + \"px\";\n\t }\n\n\t element.appendChild(lineNode);\n\t }\n\n\t element.style.cssText = style;\n\t }\n\n\t if (absolute) {\n\t if (origHeight > element.clientHeight) {\n\t element.style.height = origHeight - padTopAndBottom + \"px\";\n\n\t if (element.clientHeight < origHeight) {\n\t element.style.height = origHeight + borderTopAndBottom + \"px\";\n\t }\n\t }\n\n\t if (origWidth > element.clientWidth) {\n\t element.style.width = origWidth - padLeftAndRight + \"px\";\n\n\t if (element.clientWidth < origWidth) {\n\t element.style.width = origWidth + borderLeftAndRight + \"px\";\n\t }\n\t }\n\t }\n\n\t isFlex && (prevInlineDisplay ? element.style.display = prevInlineDisplay : element.style.removeProperty(\"display\"));\n\n\t _pushReversed(allChars, charArray);\n\n\t words && _pushReversed(allWords, wordArray);\n\n\t _pushReversed(allLines, lineArray);\n\t},\n\t _splitRawText = function _splitRawText(element, vars, wordStart, charStart) {\n\t var tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n\t types = vars.type || vars.split || \"chars,words,lines\",\n\t chars = ~types.indexOf(\"chars\"),\n\t absolute = _isAbsolute(vars),\n\t wordDelimiter = vars.wordDelimiter || \" \",\n\t isWordDelimiter = function isWordDelimiter(_char) {\n\t return _char === wordDelimiter || _char === _nonBreakingSpace && wordDelimiter === \" \";\n\t },\n\t space = wordDelimiter !== \" \" ? \"\" : absolute ? \"­ \" : \" \",\n\t wordEnd = \"\",\n\t wordIsOpen = 1,\n\t specialChars = vars.specialChars ? typeof vars.specialChars === \"function\" ? vars.specialChars : _findSpecialChars : null,\n\t text,\n\t splitText,\n\t i,\n\t j,\n\t l,\n\t character,\n\t hasTagStart,\n\t testResult,\n\t container = _doc.createElement(\"div\"),\n\t parent = element.parentNode;\n\n\t parent.insertBefore(container, element);\n\t container.textContent = element.nodeValue;\n\t parent.removeChild(element);\n\t element = container;\n\t text = getText(element);\n\t hasTagStart = text.indexOf(\"<\") !== -1;\n\n\t if (vars.reduceWhiteSpace !== false) {\n\t text = text.replace(_multipleSpacesExp, \" \").replace(_stripExp, \"\");\n\t }\n\n\t if (hasTagStart) {\n\t text = text.split(\"<\").join(\"{{LT}}\");\n\t }\n\n\t l = text.length;\n\t splitText = (text.charAt(0) === \" \" ? space : \"\") + wordStart();\n\n\t for (i = 0; i < l; i++) {\n\t character = text.charAt(i);\n\n\t if (specialChars && (testResult = specialChars(text.substr(i), vars.specialChars))) {\n\t character = text.substr(i, testResult || 1);\n\t splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\n\t i += testResult - 1;\n\t } else if (isWordDelimiter(character) && !isWordDelimiter(text.charAt(i - 1)) && i) {\n\t splitText += wordIsOpen ? wordEnd : \"\";\n\t wordIsOpen = 0;\n\n\t while (isWordDelimiter(text.charAt(i + 1))) {\n\t splitText += space;\n\t i++;\n\t }\n\n\t if (i === l - 1) {\n\t splitText += space;\n\t } else if (text.charAt(i + 1) !== \")\") {\n\t splitText += space + wordStart();\n\t wordIsOpen = 1;\n\t }\n\t } else if (character === \"{\" && text.substr(i, 6) === \"{{LT}}\") {\n\t splitText += chars ? charStart() + \"{{LT}}\" + \"\" : \"{{LT}}\";\n\t i += 5;\n\t } else if (character.charCodeAt(0) >= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) {\n\t j = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\n\t splitText += chars && character !== \" \" ? charStart() + text.substr(i, j) + \"\" : text.substr(i, j);\n\t i += j - 1;\n\t } else {\n\t splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\n\t }\n\t }\n\n\t element.outerHTML = splitText + (wordIsOpen ? wordEnd : \"\");\n\t hasTagStart && _swapText(parent, \"{{LT}}\", \"<\");\n\t},\n\t _split = function _split(element, vars, wordStart, charStart) {\n\t var children = _toArray(element.childNodes),\n\t l = children.length,\n\t absolute = _isAbsolute(vars),\n\t i,\n\t child;\n\n\t if (element.nodeType !== 3 || l > 1) {\n\t vars.absolute = false;\n\n\t for (i = 0; i < l; i++) {\n\t child = children[i];\n\t child._next = child._isFirst = child._parent = child._wordEnd = null;\n\n\t if (child.nodeType !== 3 || /\\S+/.test(child.nodeValue)) {\n\t if (absolute && child.nodeType !== 3 && _getComputedStyle(child).display === \"inline\") {\n\t child.style.display = \"inline-block\";\n\t child.style.position = \"relative\";\n\t }\n\n\t child._isSplit = true;\n\n\t _split(child, vars, wordStart, charStart);\n\t }\n\t }\n\n\t vars.absolute = absolute;\n\t element._isSplit = true;\n\t return;\n\t }\n\n\t _splitRawText(element, vars, wordStart, charStart);\n\t};\n\n\tvar SplitText = function () {\n\t function SplitText(element, vars) {\n\t _coreInitted || _initCore();\n\t this.elements = _toArray(element);\n\t this.chars = [];\n\t this.words = [];\n\t this.lines = [];\n\t this._originals = [];\n\t this.vars = vars || {};\n\n\t _context(this);\n\n\t this.split(vars);\n\t }\n\n\t var _proto = SplitText.prototype;\n\n\t _proto.split = function split(vars) {\n\t this.isSplit && this.revert();\n\t this.vars = vars = vars || this.vars;\n\t this._originals.length = this.chars.length = this.words.length = this.lines.length = 0;\n\n\t var i = this.elements.length,\n\t tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\n\t wordStart = _cssClassFunc(vars.wordsClass, tag),\n\t charStart = _cssClassFunc(vars.charsClass, tag),\n\t origHeight,\n\t origWidth,\n\t e;\n\n\t while (--i > -1) {\n\t e = this.elements[i];\n\t this._originals[i] = {\n\t html: e.innerHTML,\n\t style: e.getAttribute(\"style\")\n\t };\n\t origHeight = e.clientHeight;\n\t origWidth = e.clientWidth;\n\n\t _split(e, vars, wordStart, charStart);\n\n\t _setPositionsAfterSplit(e, vars, this.chars, this.words, this.lines, origWidth, origHeight);\n\t }\n\n\t this.chars.reverse();\n\t this.words.reverse();\n\t this.lines.reverse();\n\t this.isSplit = true;\n\t return this;\n\t };\n\n\t _proto.revert = function revert() {\n\t var originals = this._originals;\n\n\t if (!originals) {\n\t throw \"revert() call wasn't scoped properly.\";\n\t }\n\n\t this.elements.forEach(function (e, i) {\n\t e.innerHTML = originals[i].html;\n\t e.setAttribute(\"style\", originals[i].style);\n\t });\n\t this.chars = [];\n\t this.words = [];\n\t this.lines = [];\n\t this.isSplit = false;\n\t return this;\n\t };\n\n\t SplitText.create = function create(element, vars) {\n\t return new SplitText(element, vars);\n\t };\n\n\t return SplitText;\n\t}();\n\tSplitText.version = \"3.12.5\";\n\tSplitText.register = _initCore;\n\n\texports.SplitText = SplitText;\n\texports.default = SplitText;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","const runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n (runningOnBrowser && !(\"onscroll\" in window)) ||\n (typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false,\n};\n\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\n\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\n\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\n\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\n\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n var attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\n\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\n\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\n\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\n\nconst getTempImage = (element) => element.llTempImage;\n\nconst unobserve = (element, instance) => {\n if (!instance) return;\n const observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n};\n\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\n\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered) unobserve(element, instance);\n};\n\nconst updateLoadingCount = (instance, delta) => {\n if (!instance) return;\n instance.loadingCount += delta;\n};\n\nconst decreaseToLoadCount = (instance) => {\n if (!instance) return;\n instance.toLoadCount -= 1;\n};\n\nconst setToLoadCount = (instance, value) => {\n if (!instance) return;\n instance.toLoadCount = value;\n};\n\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\n\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\n\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\n\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\n\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\n\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\n\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\n\n// ## SAVE ##\n\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\n\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\n\n// ## RESTORE ##\n\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\n\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\n\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\n\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\n\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\n\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\n\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\n\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\n\n// NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n// BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n// COULD BE A GRADIENT BACKGROUND IMAGE\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\n\nconst setImgsetBackground = (element, settings, instance) => {\n const bgImgSetDataValue = getData(element, settings.data_bg_set);\n if (!bgImgSetDataValue) {\n return;\n }\n const imgSetValues = bgImgSetDataValue.split(\"|\");\n let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n // Temporary fix for Chromeium with the -webkit- prefix\n if (element.style.backgroundImage === '') {\n bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n }\n manageApplied(element, settings, instance);\n};\n\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\n\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\n\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\n\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\n\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\n\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\n\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n};\n\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\n\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\n\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\n\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n};\n\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\n\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\n\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\n\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\n\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\n\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\n\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\n\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\n\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\n\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\n\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\n\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\n\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\n\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\n\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element); /* Save status \n before setting it, to prevent loading it again. Fixes #526. */\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n};\n\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\n\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst shouldUseNative = (settings) =>\n settings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\n\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach((entry) =>\n isIntersecting(entry)\n ? onEnter(entry.target, entry, settings, instance)\n : onExit(entry.target, entry, settings, instance)\n );\n};\n\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\n\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\n\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\n\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = (settings) =>\n settings.container.querySelectorAll(settings.elements_selector);\n\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\n\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\n\nconst getElementsToLoad = (elements, settings) =>\n excludeManagedElements(elements || queryElements(settings));\n\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach((element) => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\n\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\n\nconst resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\n\nconst LazyLoad = function (customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\n\nLazyLoad.prototype = {\n update: function (givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n\n destroy: function () {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n }\n // Clean handlers\n resetOnlineCheck(this);\n // Clean custom attributes on elements\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n // Delete all internal props\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n\n loadAll: function (elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\n\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\n\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\n\n// Automatic instances creation if required (useful for async script loading)\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nexport { LazyLoad as default };\n","// @ts-check\n/**\n * Shorthand for `document.getElementsByClassName`\n *\n * @param {String} selClass - The selector's class\n * @param {Element|HTMLElement|Document} [parent=document] - Parent element\n *\n * @returns {HTMLCollectionOf} - The selected elements\n */\n\nfunction byClass(selClass, parent = document) {\n return parent.getElementsByClassName(selClass);\n}\n/**\n * Shorthand for `document.querySelector`\n *\n * @param {String} selector - Selector\n * @param {Element|HTMLElement|Document} [parent=document] - Parent element\n *\n * @returns {Element|HTMLElementTagNameMap|SVGElementTagNameMap|null} - The selected element\n */\n\nfunction query(selector, parent = document) {\n return parent.querySelector(selector);\n}\n/**\n * Shorthand for `document.querySelectorAll`\n *\n * @param {String} selector - Selector\n * @param {Element|HTMLElement|Document} [parent=document] - Parent element\n *\n * @returns {NodeList} - The selected element\n */\n\nfunction queryAll(selector, parent = document) {\n return parent.querySelectorAll(selector);\n}\n\n// @ts-check\n\n/**\n * Foreach polyfill for NodeList and HTMLCollection\n * https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\n *\n * @param {Array|NodeList|HTMLCollection} els - A list of elements\n * @param {foreachCB} fn - Callback containing ( value, index ) as arguments\n * @param {Function} [scope] - Scope\n */\nfunction forEachHTML(els, fn, scope) {\n for (let i = 0, numEls = els.length; i < numEls; i++) fn.call(scope, els[i], i);\n}\n\n// @ts-check\n/**\n * Shorthand for `element.classList.add`, works with multiple nodes\n *\n * @param {Element|HTMLElement|HTMLCollection|NodeList} el - A list of elements\n * @param {...String} classes - Classes to add\n */\n\nfunction addClass(el, ...classes) {\n // @ts-ignore\n if (el.length === undefined) {\n // @ts-ignore\n addClassEl(el, ...classes);\n } else {\n // @ts-ignore\n forEachHTML(el, currEl => {\n addClassEl(currEl, ...classes);\n });\n }\n /**\n * Adds classes to a single element\n *\n * @param {Element|HTMLElement} elem - An HTML element\n * @param {...String} remClass - Classes to add\n */\n\n\n function addClassEl(elem, ...remClass) {\n remClass.forEach(singleClass => {\n elem.classList.add(singleClass);\n });\n }\n}\n\n// @ts-check\n\n/**\n * Shorthand for `element.addEventListener`\n *\n * @param {Element|HTMLElement|Window|Document|MediaQueryList} el - A list of elements\n * @param {String} ev - Event's name\n * @param {EventListenerOrEventListenerObject} fn - Event's function\n * @param {Object} [opts] - Optional event options\n */\nfunction addEvent(el, ev, fn, opts) {\n el.addEventListener(ev, fn, opts);\n}\n/**\n * Shorthand for `element.removeEventListener`\n *\n * @param {Element|HTMLElement|Window|Document|MediaQueryList} el - A list of elements\n * @param {String} ev - Event's name\n * @param {EventListenerOrEventListenerObject} fn - Event's function\n * @param {Object} [opts] - Optional event options\n */\n\nfunction removeEvent(el, ev, fn, opts) {\n el.removeEventListener(ev, fn, opts);\n}\n\n// @ts-check\n\n/**\n * Shorthand for `element.getAttribute`\n *\n * @param {Element|HTMLElement} el - An HTML element\n * @param {String} attr - The attribute to retrieve\n *\n * @returns {String|null} - The attribute's value\n */\nfunction getAttr(el, attr) {\n return el.getAttribute(attr);\n}\n/**\n * Shorthand for `element.setAttribute`\n *\n * @param {Element|HTMLElement} el - An HTML element\n * @param {String} attr - The attribute to retrieve\n * @param {String} val - The value to set to the attribute\n */\n\nfunction setAttr(el, attr, val) {\n el.setAttribute(attr, val);\n}\n/**\n * Shorthand for `element.removeAttribute`\n *\n * @param {Element|HTMLElement} el - An HTML element\n * @param {String} attr - The attribute to remove\n */\n\nfunction remAttr(el, attr) {\n el.removeAttribute(attr);\n}\n\n/**\n * @typedef defaultOptions\n * @property {String} [css3easing='linear'] - A css3 transtion timing\n * @property {Number} [delayBeforeStart=1000] - Time in milliseconds before the marquee starts animating\n * @property {String} [direction='left'] - Direction towards which the marquee will animate ` 'left' | 'right' | 'up' | 'down'`\n * @property {Boolean} [duplicated=false] - Should the marquee be duplicated to show an effect of continuous flow. Use this only when the text is shorter than the container\n * @property {Number} [duration=5000] - Duration in milliseconds in which you want your element to travel\n * @property {Number} [gap=20] - Gap in pixels between the tickers. Will work only when the `duplicated` option is set to `true`\n * @property {Boolean} [pauseOnHover=false] - Pause the marquee on hover\n * @property {Boolean} [recalcResize=false] - Recalculate the marquee position on resize (breaks compatibility with jquery.marquee)\n * @property {Number} [speed=0] - Speed will override duration. Speed allows you to set a relatively constant marquee speed regardless of the width of the containing element. Speed is measured in pixels/second\n * @property {Boolean} [startVisible=false] - The marquee will be visible from the start if set to `true`\n */\nconst defOpts = {\n css3easing: 'linear',\n delayBeforeStart: 1000,\n direction: 'left',\n duplicated: false,\n duration: 5000,\n gap: 20,\n pauseOnHover: false,\n recalcResize: false,\n speed: 0,\n startVisible: false,\n};\n\nlet instances = 0;\n\n/**\n * Vanilla js marquee based on jQuery.marquee\n * https://github.com/aamirafridi/jQuery.Marquee\n */\nclass marquee {\n\n /**\n * Constructor\n *\n * @param {Element} el - The element where the marquee is applied\n * @param {defaultOptions} opts - the options\n */\n constructor( el, opts ) {\n\n if ( typeof el === 'undefined' )\n throw new Error( 'el cannot be undefined' );\n\n if ( typeof el === 'string' )\n throw new Error( 'el cannot be just a selector' );\n\n if ( el === null )\n throw new Error( 'el cannot be null' );\n\n opts = {\n ...defOpts,\n ...opts,\n };\n\n this.el = el;\n this._loopCount = 3;\n\n // Check for data-option since they have top priority\n for ( const option in defOpts ) {\n\n let currData = getAttr( el, `data-${defOpts[option]}` );\n\n if ( currData !== null && currData !== '' ) {\n\n if ( currData === 'true' || currData === 'false' )\n currData = Boolean( currData );\n\n opts[option] = currData;\n\n }\n\n }\n\n // Reintroduce speed as an option. It calculates duration as a factor of the container width\n // measured in pixels per second.\n if ( opts.speed )\n opts.duration = parseInt( el.clientWidth ) / opts.speed * 1000;\n\n // no gap if not duplicated\n opts.gap = opts.duplicated ? parseInt( opts.gap ) : 0;\n\n // wrap inner content into a div\n el.innerHTML = `
${el.innerHTML}
`;\n\n // Make a copy of the element\n const marq = byClass( 'js-marquee', el )[0];\n\n marq.style.marginRight = `${opts.gap}px`;\n marq.style.willChange = 'transform';\n marq.style.float = 'left';\n\n if ( opts.duplicated )\n el.appendChild( marq.cloneNode( true ) );\n\n // wrap both inner elements into one div\n el.innerHTML = `
${el.innerHTML}
`;\n\n // Save the reference of the wrapper\n const marqWrap = byClass( 'js-marquee-wrapper', el )[0],\n vertical = ( opts.direction === 'up' || opts.direction === 'down' );\n\n this._marqWrap = marqWrap;\n this._vertical = vertical;\n this._duration = opts.duration;\n this._opts = opts;\n\n this._calcSizes();\n\n const animationName = `marqueeAnimation-${Math.floor( Math.random() * 10000000 )}`,\n animStr = this._animationStr(\n animationName,\n opts.duration / 1000,\n opts.delayBeforeStart / 1000,\n 'infinite',\n );\n\n this._animName = animationName;\n this._animStr = animStr;\n\n // if duplicated option is set to true than position the wrapper\n if ( opts.duplicated ) {\n\n if ( vertical ) {\n\n if ( opts.startVisible )\n this._marqWrap.style.transform = 'translateY(0px)';\n else\n this._marqWrap.style.transform = `translateY(${opts.direction === 'up' ? this._contHeight : ( -1 * ( ( this._elHeight * 2 ) - opts.gap ) )}px)`;\n\n } else {\n\n if ( opts.startVisible ) // eslint-disable-line no-lonely-if\n this._marqWrap.style.transform = 'translateX(0px)';\n else\n this._marqWrap.style.transform = `translateX(${opts.direction === 'left' ? this._contWidth : ( -1 * ( ( this._elWidth * 2 ) - opts.gap ) )}px)`;\n\n }\n\n // If the text starts out visible we can skip the two initial loops\n if ( !opts.startVisible )\n this._loopCount = 1;\n\n } else if ( opts.startVisible ) {\n\n // We only have two different loops if marquee is duplicated and starts visible\n this._loopCount = 2;\n\n } else {\n\n if ( vertical ) // eslint-disable-line no-lonely-if\n this._repositionVert();\n else\n this._repositionHor();\n\n }\n\n addEvent( this.el, 'pause', this.pause.bind( this ) );\n addEvent( this.el, 'resume', this.resume.bind( this ) );\n\n if ( opts.pauseOnHover ) {\n\n addEvent( this.el, 'mouseover', this.pause.bind( this ) );\n addEvent( this.el, 'mouseout', this.resume.bind( this ) );\n\n }\n\n /**\n * Method for animation end event\n */\n this._animEnd = () => {\n this._animate( vertical );\n this.el.dispatchEvent( new CustomEvent( 'finished' ) );\n };\n\n this._instance = instances;\n instances++;\n\n this._animate( vertical );\n\n if ( opts.recalcResize )\n addEvent( window, 'resize', this._recalcResize.bind( this ) );\n\n }\n\n /**\n * Build the css string for the animation\n *\n * @privte\n * @param {String} [name=''] - animation name\n * @param {Number} [duration=0] - Animation duration (in s)\n * @param {Number} [delay=0] - Animation delay before starting (in s)\n * @param {String} [loops=''] - Animation iterations\n *\n * @returns {String} css animation string\n */\n _animationStr( name = '', duration = 0, delay = 0, loops = '' ) {\n return `${name} ${duration}s ${delay}s ${loops} ${this._opts.css3easing}`;\n }\n\n /**\n * Animation of the marquee\n *\n * @private\n * @param {Boolean} vertical - Vertical direction\n */\n _animate( vertical = false ) {\n\n const opts = this._opts;\n\n if ( opts.duplicated ) {\n\n // When duplicated, the first loop will be scroll longer so double the duration\n if ( this._loopCount === 1 ) {\n\n let duration = opts.duration;\n\n if ( vertical )\n duration = ( opts.direction === 'up' ) ? duration + ( this._contHeight / ( this._elHeight / duration ) ) : duration * 2;\n else\n duration = ( opts.direction === 'left' ) ? duration + ( this._contWidth / ( this._elWidth / duration ) ) : duration * 2;\n\n this._animStr = this._animationStr(\n this._animName,\n duration / 1000,\n opts.delayBeforeStart / 1000,\n );\n\n // On 2nd loop things back to normal, normal duration for the rest of animations\n } else if ( this._loopCount === 2 ) {\n this._animName = `${this._animName}0`;\n this._animStr = this._animationStr(\n this._animName,\n opts.duration / 1000,\n 0,\n 'infinite',\n );\n }\n\n this._loopCount++;\n\n }\n\n let animationCss = '';\n\n if ( vertical ) {\n if ( opts.duplicated ) {\n\n // Adjust the starting point of animation only when first loops finishes\n if ( this._loopCount > 2 )\n this._marqWrap.style.transform = `translateY(${( opts.direction === 'up' ) ? 0 : -1 * this._elHeight}px)`;\n\n animationCss = `translateY(${( opts.direction === 'up' ) ? -1 * this._elHeight : 0}px)`;\n\n } else if ( opts.startVisible ) {\n\n // This loop moves the marquee out of the container\n if ( this._loopCount === 2 ) {\n\n // Adjust the css3 animation as well\n this._animStr = this._animationStr(\n this._animName,\n opts.duration / 1000,\n opts.delayBeforeStart / 1000,\n );\n animationCss = `translateY(${( opts.direction === 'up' ) ? -1 * this._elHeight : this._contHeight}px)`;\n\n this._loopCount++;\n\n } else if ( this._loopCount === 3 ) {\n\n this._animName = `${this._animName}0`;\n this._animStr = this._animationStr(\n this._animName,\n this._completeDuration / 1000,\n 0,\n 'infinite',\n );\n this._repositionVert();\n\n }\n\n } else {\n\n this._repositionVert();\n animationCss = `translateY(${( opts.direction === 'up' ) ? -1 * this._marqWrap.clientHeight : this._contHeight}px)`;\n\n }\n } else {\n\n if ( opts.duplicated ) { // eslint-disable-line no-lonely-if\n\n // Adjust the starting point of animation only when first loops finishes\n if ( this._loopCount > 2 )\n this._marqWrap.style.transform = `translateX(${( opts.direction === 'left' ) ? 0 : -1 * this._elWidth}px)`;\n\n animationCss = `translateX(${( opts.direction === 'left' ) ? -1 * this._elWidth : 0}px)`;\n\n } else if ( opts.startVisible ) {\n\n // This loop moves the marquee out of the container\n if ( this._loopCount === 2 ) {\n\n // Adjust the css3 animation as well\n this._animStr = this._animationStr(\n this._animName,\n opts.duration / 1000,\n opts.delayBeforeStart / 1000,\n );\n animationCss = `translateX(${( opts.direction === 'left' ) ? -1 * this._elWidth : this._contWidth}px)`;\n\n this._loopCount++;\n\n } else if ( this._loopCount === 3 ) {\n\n // Adjust the animation\n this._animName = `${this._animName}0`;\n this._animStr = this._animationStr(\n this._animName,\n opts.duration / 1000,\n 0,\n 'infinite',\n );\n this._repositionHor();\n\n }\n\n } else {\n this._repositionHor();\n animationCss = `translateX(${( opts.direction === 'left' ) ? -1 * this._elWidth : this._contWidth}px)`;\n }\n }\n\n // fire event\n this.el.dispatchEvent( new CustomEvent( 'beforeStarting' ) );\n\n // Append animation\n this._marqWrap.style.animation = this._animStr;\n\n const keyFrameCss = `@keyframes ${this._animName} {\n 100% {\n transform: ${animationCss};\n }\n }`,\n styles = queryAll( 'style', this._marqWrap );\n\n if ( styles.length )\n styles[styles.length - 1].innerHTML = keyFrameCss;\n else if ( byClass( `marq-wrap-style-${this._instance}` ).length )\n byClass( `marq-wrap-style-${this._instance}` )[0].innerHTML = keyFrameCss;\n else {\n\n const styleEl = document.createElement( 'style' );\n addClass( styleEl, `marq-wrap-style-${this._instance}` );\n styleEl.innerHTML = keyFrameCss;\n\n query( 'head' ).appendChild( styleEl );\n\n }\n\n // Animation iteration event\n addEvent( this._marqWrap, 'animationiteration', this._animIter.bind( this ), {\n once: true,\n });\n\n // Animation stopped\n addEvent( this._marqWrap, 'animationend', this._animEnd.bind( this ), {\n once: true,\n });\n\n this._status = 'running';\n setAttr( this.el, 'data-runningStatus', 'resumed' );\n\n }\n\n /**\n * Event fired on Animation iteration\n *\n * @private\n */\n _animIter() {\n this.el.dispatchEvent( new CustomEvent( 'finished' ) );\n }\n\n /**\n * Reposition the Wrapper vertically\n *\n * @private\n */\n _repositionVert() {\n this._marqWrap.style.transform = `translateY(${this._opts.direction === 'up' ? this._contHeight : ( this._elHeight * -1 )}px)`;\n }\n\n /**\n * Reposition the Wrapper horizontally\n *\n * @private\n */\n _repositionHor() {\n this._marqWrap.style.transform = `translateX(${this._opts.direction === 'left' ? this._contWidth : ( this._elWidth * -1 )}px)`;\n }\n\n /**\n * Calculates the speed and the dimension of the marquee\n *\n * @private\n */\n _calcSizes() {\n\n const el = this.el,\n opts = this._opts;\n\n // If direction is up or down, get the height of main element\n if ( this._vertical ) {\n\n const contHeight = el.clientHeight;\n this._contHeight = contHeight;\n\n remAttr( this._marqWrap, 'style' );\n\n el.style.clientHeight = `${contHeight}px`;\n\n const marqs = byClass( 'js-marquee', el ),\n marqNums = marqs.length - 1;\n\n // Change the CSS for js-marquee element\n forEachHTML( marqs, ( currEl, ind ) => {\n\n currEl.style.float = 'none';\n currEl.style.marginRight = '0px';\n\n // Remove bottom margin from 2nd element if duplicated\n if ( opts.duplicated && ind === marqNums )\n currEl.style.marginBottom = '0px';\n else\n currEl.style.marginBottom = `${opts.gap}px`;\n\n });\n\n const elHeight = parseInt( marqs[0].clientHeight + opts.gap );\n this._elHeight = elHeight;\n\n // adjust the animation duration according to the text length\n if ( opts.startVisible && !opts.duplicated ) {\n // Compute the complete animation duration and save it for later reference\n // formula is to: (Height of the text node + height of the main container / Height of the main container) * duration;\n this._completeDuration = ( elHeight + contHeight ) / parseInt( contHeight ) * this._duration; // eslint-disable-line max-len\n opts.duration = elHeight / parseInt( contHeight ) * this._duration;\n } else // formula is to: (Height of the text node + height of the main container / Height of the main container) * duration;\n opts.duration = elHeight / parseInt( contHeight ) / parseInt( contHeight ) * this._duration;\n\n } else {\n\n // Save the width of the each element so we can use it in animation\n const elWidth = parseInt( byClass( 'js-marquee', el )[0].clientWidth + opts.gap ),\n contWidth = el.clientWidth;\n\n this._contWidth = contWidth;\n this._elWidth = elWidth;\n\n // adjust the animation duration according to the text length\n if ( opts.startVisible && !opts.duplicated ) {\n // Compute the complete animation duration and save it for later reference\n // formula is to: (Width of the text node + width of the main container / Width of the main container) * duration;\n this._completeDuration = ( elWidth + contWidth ) / parseInt( contWidth ) * this._duration;\n // (Width of the text node / width of the main container) * duration\n opts.duration = elWidth / parseInt( contWidth ) * this._duration;\n } else // formula is to: (Width of the text node + width of the main container / Width of the main container) * duration;\n opts.duration = ( elWidth + parseInt( contWidth ) ) / parseInt( contWidth ) * this._duration; // eslint-disable-line max-len\n }\n\n // if duplicated then reduce the duration\n if ( opts.duplicated )\n opts.duration = opts.duration / 2;\n\n }\n\n /**\n * Recalculates the dimensions and positon of the marquee on page resize\n *\n * @private\n */\n _recalcResize() {\n\n this._calcSizes();\n\n this._loopCount = 2;\n this._animEnd();\n\n }\n\n /**\n * Pause the animation\n */\n pause() {\n this._marqWrap.style.animationPlayState = 'paused';\n this._status = 'paused';\n\n setAttr( this.el, 'data-runningStatus', 'paused' );\n this.el.dispatchEvent( new CustomEvent( 'paused' ) );\n }\n\n /**\n * Resume the animation\n */\n resume() {\n this._marqWrap.style.animationPlayState = 'running';\n this._status = 'running';\n\n setAttr( this.el, 'data-runningStatus', 'resumed' );\n this.el.dispatchEvent( new CustomEvent( 'resumed' ) );\n }\n\n /**\n * Toggle animation playing status\n */\n toggle() {\n\n if ( this._status === 'paused' )\n this.resume();\n else if ( this._status === 'running' )\n this.pause();\n\n }\n\n /**\n * Destorys the instance and removes events\n */\n destroy() {\n\n removeEvent( this.el, 'pause', this.pause.bind( this ) );\n removeEvent( this.el, 'resume', this.resume.bind( this ) );\n\n if ( this._opts.pauseOnHover ) {\n\n removeEvent( this.el, 'mouseover', this.pause.bind( this ) );\n removeEvent( this.el, 'mouseout', this.resume.bind( this ) );\n\n }\n\n removeEvent( this._marqWrap, 'animationiteration', this._animIter.bind( this ), {\n once: true,\n });\n\n removeEvent( this._marqWrap, 'animationend', this._animEnd.bind( this ), {\n once: true,\n });\n\n if ( this._opts.recalcResize )\n removeEvent( window, 'resize', this._recalcResize.bind( this ) );\n\n }\n\n /**\n * Forces a refresh (like recalcResize) but done manually\n */\n refresh() {\n this._recalcResize();\n }\n\n}\n\nexport { marquee as default };\n","/* eslint-disable no-new */\r\n/* eslint-disable no-lonely-if */\r\n/* eslint-disable no-plusplus */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable import/no-extraneous-dependencies */\r\n/* eslint-disable no-use-before-define */\r\nimport { gsap } from \"gsap\";\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\";\r\nimport { SplitText } from \"gsap/dist/SplitText\";\r\nimport LazyLoad from \"vanilla-lazyload\";\r\nimport Marquee from \"vanilla-marquee\";\r\n\r\ngsap.registerPlugin(ScrollTrigger, SplitText);\r\n\r\nconst anim = {\r\n duration: 0.5,\r\n durationOnTimeLine: 0.25,\r\n y: 100,\r\n ease: \"power2.inOut\"\r\n};\r\n\r\nconst marquee = {\r\n speed: 100\r\n};\r\n\r\n// hide all Elements for animation\r\nconst hideAllElements = () => {\r\n const animationComponents = document.querySelectorAll(\"[data-animation]\");\r\n const animationSubComponents = document.querySelectorAll(\"[data-animation-type]\");\r\n\r\n if (animationComponents.length >= 1) {\r\n animationComponents.forEach((wrapper) => {\r\n // select all the animationType\r\n if (wrapper.dataset.animation !== \"split-animation\") {\r\n // if not Interaction section\r\n gsap.set(wrapper, {\r\n opacity: 0,\r\n y: 100\r\n });\r\n }\r\n });\r\n }\r\n\r\n animationSubComponents.forEach((item) => {\r\n const { animationType } = item.dataset;\r\n\r\n if (animationType === \"fade\") {\r\n gsap.set(item, {\r\n opacity: 0\r\n });\r\n } else {\r\n gsap.set(item, {\r\n opacity: 0,\r\n y: 100\r\n });\r\n }\r\n });\r\n};\r\n\r\n// init logo marquee section\r\nconst initLogoMarqueeSection = () => {\r\n const marqueeWrapper = document.querySelectorAll(\".js-marquee-wrapper\");\r\n\r\n const windowSize = window.innerWidth;\r\n\r\n if (windowSize < 768) {\r\n marquee.speed = 120;\r\n }\r\n marqueeWrapper.forEach((item) => {\r\n new Marquee(item, {\r\n duplicated: true,\r\n pauseOnHover: true,\r\n startVisible: true,\r\n gap: 0,\r\n speed: marquee.speed\r\n });\r\n\r\n const lazyload = new LazyLoad({\r\n // use_native: true,\r\n elements_selector: \".js-lazy-img\"\r\n });\r\n });\r\n};\r\n\r\n// init Stat Section lines\r\nconst initStatSectionLines = () => {\r\n const textWrapper = document.querySelectorAll(\".js-animate-text\");\r\n\r\n if (textWrapper.length >= 1) {\r\n textWrapper.forEach((text) => {\r\n gsap.set(text, {\r\n opacity: 1\r\n });\r\n const split = new SplitText(text, { type: \"lines , words, chars\" });\r\n\r\n split.lines.forEach((line, index) => {\r\n // 2. set all the lines opacity as per index\r\n gsap.set(line, {\r\n opacity: 1 - index * (1 / split.lines.length)\r\n });\r\n });\r\n });\r\n }\r\n};\r\n\r\n// animate Whole Wrapper\r\nconst animateWholeBlock = ($section) => {\r\n const wrapper = $section;\r\n const animationSection = wrapper?.querySelector(\"[data-animation]\");\r\n let timelineValue = false;\r\n if (animationSection) {\r\n const { animationTimeline } = animationSection.dataset;\r\n if (animationTimeline === undefined || animationTimeline === null) {\r\n timelineValue = false;\r\n } else {\r\n timelineValue = animationTimeline;\r\n }\r\n }\r\n\r\n const tl = gsap.timeline();\r\n const animationWrapper = wrapper.querySelectorAll(\"[data-animation]\");\r\n if (animationWrapper.length >= 1) {\r\n animationWrapper.forEach((wrap) => {\r\n tl.to(wrap, {\r\n opacity: 1,\r\n y: 0,\r\n duration: anim.duration,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(wrap);\r\n }\r\n });\r\n\r\n const animationType = wrap?.querySelectorAll(\"[data-animation-type]\");\r\n if (animationType?.length >= 1) {\r\n animationType?.forEach((type) => {\r\n animateWidget(type, tl, timelineValue);\r\n });\r\n }\r\n });\r\n }\r\n};\r\n\r\n// Animate sub Components\r\nconst splitAnimation = ($section) => {\r\n const wrapper = $section;\r\n const animationSection = wrapper?.querySelector(\"[data-animation]\");\r\n let timelineValue = false;\r\n if (animationSection) {\r\n const { animationTimeline } = animationSection.dataset;\r\n if (animationTimeline === undefined || animationTimeline === null) {\r\n timelineValue = false;\r\n } else {\r\n timelineValue = animationTimeline;\r\n }\r\n }\r\n const tl = gsap.timeline();\r\n const animationType = wrapper?.querySelectorAll(\"[data-animation-type]\");\r\n if (animationType?.length >= 1) {\r\n animationType?.forEach((animationWrapper) => {\r\n animateWidget(animationWrapper, tl, timelineValue);\r\n });\r\n }\r\n};\r\n\r\n// Check the Animation type for the sub Components\r\nconst animateWidget = (item, tl, timeline = false) => {\r\n // console.log(item);\r\n const { animationType } = item.dataset;\r\n // console.log(animationType);\r\n // console.log(timeline);\r\n // console.log(tl);\r\n\r\n if (animationType === \"fade\") {\r\n if (timeline) {\r\n tl.to(item, {\r\n opacity: 1,\r\n duration: anim.durationOnTimeLine,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(item);\r\n }\r\n });\r\n } else {\r\n gsap.to(item, {\r\n opacity: 1,\r\n duration: anim.duration,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(item);\r\n }\r\n });\r\n }\r\n } else if (animationType === \"scale\") {\r\n const imageWrapper = item.querySelectorAll(\".js-image-wrapper\");\r\n imageWrapper.forEach((wrapper) => {\r\n const image = wrapper.querySelector(\"img\");\r\n\r\n gsap.fromTo(\r\n image,\r\n {\r\n scale: 1.1,\r\n opacity: 0,\r\n duration: anim.duration\r\n },\r\n {\r\n scale: 1,\r\n opacity: 1,\r\n duration: anim.duration,\r\n ease: anim.ease\r\n }\r\n );\r\n });\r\n } else {\r\n if (timeline) {\r\n tl.to(item, {\r\n opacity: 1,\r\n y: 0,\r\n duration: anim.durationOnTimeLine,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(item);\r\n }\r\n });\r\n } else {\r\n gsap.to(item, {\r\n opacity: 1,\r\n y: 0,\r\n duration: anim.duration,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(item);\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\r\n// animate stat text on scroll\r\nconst animateStatSectionOnscroll = ($section) => {\r\n const wrapperHeight = $section.offsetHeight;\r\n const sectionPosition = window.scrollY;\r\n const textLinesWrapper = $section.querySelector(\".js-animate-text\");\r\n const textLines = $section.querySelectorAll(\".js-animate-text > div\");\r\n const scrollHeightPerEachItem = wrapperHeight / textLines.length;\r\n let activeIndex = 0;\r\n\r\n const checktextLines = () => {\r\n textLines.forEach((item, i) => {\r\n if (\r\n window.scrollY >= sectionPosition + scrollHeightPerEachItem * i &&\r\n window.scrollY < sectionPosition + scrollHeightPerEachItem * i + scrollHeightPerEachItem\r\n ) {\r\n if (activeIndex !== i) {\r\n activeIndex = i;\r\n\r\n textLines.forEach((line, index) => {\r\n if (line.classList.contains(\"js-text-active\")) {\r\n line.classList.remove(\"js-text-active\");\r\n }\r\n // gsap.to(line, {\r\n // y: -(i * 50 - textLines.length * 50)\r\n // });\r\n });\r\n\r\n textLines[i].classList.add(\"js-text-active\");\r\n\r\n const opacitychangingValue = 1 / textLines.length;\r\n let b = 0;\r\n for (let a = i; a >= 0; a--) {\r\n const opacityValue = 1 - opacitychangingValue * b;\r\n gsap.to(textLines[a], {\r\n opacity: opacityValue,\r\n ease: anim.ease\r\n });\r\n b++;\r\n }\r\n\r\n let c = 0;\r\n for (let a = i + 1; a < textLines.length; a++) {\r\n const opacityValue = (textLines.length - c) * opacitychangingValue - opacitychangingValue;\r\n gsap.to(textLines[a], {\r\n opacity: opacityValue,\r\n ease: anim.ease\r\n });\r\n c++;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n window.addEventListener(\"scroll\", (event) => {\r\n checktextLines();\r\n });\r\n};\r\n\r\n// reset animation\r\nconst resetAnimation = (selector) => {\r\n gsap.set(selector, { clearProps: \"transform,opacity\" });\r\n};\r\n\r\n// animate Header\r\nconst animateHeader = (header) => {\r\n const topHeader = header.querySelector(\".js-top-header\").querySelector(\".o-container-large\");\r\n const bottomHeader = header.querySelector(\".js-bottom-header\").querySelector(\".o-container-large\");\r\n gsap.fromTo(\r\n topHeader,\r\n {\r\n y: -100\r\n },\r\n {\r\n y: 0,\r\n duration: 1,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(topHeader);\r\n }\r\n }\r\n );\r\n\r\n gsap.fromTo(\r\n bottomHeader,\r\n {\r\n y: -100\r\n },\r\n {\r\n y: 0,\r\n duration: 1,\r\n ease: anim.ease,\r\n onComplete: () => {\r\n resetAnimation(bottomHeader);\r\n }\r\n }\r\n );\r\n};\r\n\r\n// animate banner\r\nconst animateBanner = (banner, master) => {\r\n const textWrapper = banner.querySelector(\".js-text-wrapper\");\r\n const imageWrapper = banner.querySelector(\".js-image-wrapper\");\r\n const image = imageWrapper?.querySelector(\"img\");\r\n if (textWrapper) {\r\n gsap.from(textWrapper, {\r\n y: anim.y,\r\n opacity: 0,\r\n ease: anim.ease,\r\n duration: anim.duration,\r\n onComplete: () => {\r\n resetAnimation(textWrapper);\r\n }\r\n });\r\n }\r\n if (image) {\r\n gsap.fromTo(\r\n image,\r\n {\r\n scale: 1.1,\r\n opacity: 0,\r\n duration: anim.duration\r\n },\r\n {\r\n scale: 1,\r\n opacity: 1,\r\n ease: anim.ease,\r\n duration: anim.duration,\r\n onComplete: () => {\r\n resetAnimation(image);\r\n }\r\n }\r\n );\r\n }\r\n};\r\n\r\n// animate Footer\r\nconst animateFooter = (footer) => {\r\n const tl = gsap.timeline();\r\n const animationType = footer.querySelectorAll(\"[data-animation-type]\");\r\n if (animationType.length >= 1) {\r\n animationType.forEach((animationWrapper) => {\r\n animateWidget(animationWrapper, tl, true);\r\n });\r\n }\r\n};\r\n\r\nconst scrollToSection = () => {\r\n const links = document.querySelectorAll(\".js-navigate-to-link\");\r\n if (links.length > 0) {\r\n links.forEach((link) => {\r\n const sectionId = link.getAttribute(\"href\");\r\n\r\n if (sectionId !== \"\" && sectionId !== \"#\") {\r\n const section = document.querySelector(`${sectionId}`);\r\n link.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n const headerHeight = document.querySelector(\".js-bottom-header\")?.offsetHeight;\r\n const offsetPosition = section.getBoundingClientRect().top + window.scrollY - headerHeight;\r\n window.scrollTo({\r\n top: offsetPosition,\r\n left: 0,\r\n behavior: \"smooth\"\r\n });\r\n });\r\n } else if (sectionId === \"#\") {\r\n link.addEventListener(\"click\", () => {\r\n const headerHeight = document.querySelector(\"header\")?.offsetHeight;\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n offset: headerHeight,\r\n behavior: \"smooth\"\r\n });\r\n });\r\n }\r\n });\r\n }\r\n};\r\n\r\nconst initAnimation = () => {\r\n const myPromise = new Promise((resolve, reject) => {\r\n // console.log(\"page animate loaded\");\r\n\r\n const headerHeight = document.querySelector(\".js-bottom-header\")?.offsetHeight;\r\n\r\n initStatSectionLines();\r\n hideAllElements();\r\n\r\n // 1. header animation\r\n const master = gsap.timeline();\r\n const header = document.querySelector(\"header\");\r\n // animateHeader(header);\r\n\r\n // 2. banner animation\r\n const banners = document.querySelectorAll(\".js-banner\");\r\n // banners.forEach((banner) => {\r\n // animateBanner(banner, master);\r\n // });\r\n\r\n // 3. animation logo section\r\n\r\n initLogoMarqueeSection();\r\n\r\n // 4. animate sections\r\n\r\n const $sections = document.querySelectorAll(\"[data-animation]\");\r\n\r\n $sections.forEach(($section, index) => {\r\n // const { id } = $section.dataset;\r\n\r\n const section = $section.closest(\"section\");\r\n const id = $section.dataset.animation;\r\n\r\n if (id === \"stats-animation\") {\r\n ScrollTrigger.create({\r\n trigger: section,\r\n start: \"top 60%\",\r\n // end: index < $sections.length - 1 ? $section[index + 1] : '+=500',\r\n end: \"+=200\",\r\n toggleActions: \"play none none none\",\r\n once: true,\r\n // markers: true,\r\n // delay: delay,\r\n onEnter: (e) => animateWholeBlock(section)\r\n // onComplete: (e) => clearProperty($section)\r\n });\r\n\r\n ScrollTrigger.create({\r\n trigger: section,\r\n toggleActions: \"play none reverse none\",\r\n // markers: true,\r\n start: `0 ${headerHeight}px`,\r\n pin: section,\r\n scrub: true,\r\n end: `bottom ${headerHeight}px`,\r\n onEnter: () => animateStatSectionOnscroll(section)\r\n });\r\n } else if (id === \"split-animation\") {\r\n ScrollTrigger.create({\r\n trigger: section,\r\n start: \"top 60%\",\r\n // end: index < $sections.length - 1 ? $section[index + 1] : '+=500',\r\n end: \"+=200\",\r\n toggleActions: \"play none none none\",\r\n once: true,\r\n // markers: true,\r\n // delay: delay,\r\n onEnter: (e) => splitAnimation(section)\r\n // onComplete: (e) => clearProperty($section)\r\n });\r\n } else {\r\n ScrollTrigger.create({\r\n trigger: section,\r\n start: \"top 60%\",\r\n // end: index < $sections.length - 1 ? $section[index + 1] : '+=500',\r\n end: \"+=200\",\r\n toggleActions: \"play none none none\",\r\n once: true,\r\n // markers: true,\r\n // delay: delay,\r\n onEnter: (e) => animateWholeBlock(section)\r\n // onComplete: (e) => clearProperty($section)\r\n });\r\n }\r\n });\r\n\r\n // 5. animate footer\r\n\r\n const footer = document.querySelector(\"footer\");\r\n\r\n ScrollTrigger.create({\r\n trigger: footer,\r\n start: \"top 60%\",\r\n // end: index < $sections.length - 1 ? $section[index + 1] : '+=500',\r\n end: \"+=200\",\r\n toggleActions: \"play none none none\",\r\n once: true,\r\n // markers: true,\r\n // delay: delay,\r\n onEnter: (e) => animateFooter(footer)\r\n // onComplete: (e) => clearProperty($section)\r\n });\r\n\r\n // animate footer items\r\n\r\n scrollToSection();\r\n\r\n resolve();\r\n });\r\n\r\n return myPromise;\r\n};\r\n\r\nconst scrollRefresh = () => {\r\n ScrollTrigger.refresh();\r\n};\r\n\r\nexport { initAnimation, scrollRefresh };\r\n"],"names":["global","factory","exports","this","emojiExp","getText","e","type","result","_doc","_win","_coreInitted","gsap","_context","_toArray","_stripExp","_multipleSpacesExp","_nonBreakingSpace","_initCore","core","_getComputedStyle","element","_isAbsolute","vars","_findSpecialChars","text","chars","i","s","_divStart","_cssClassFunc","cssClass","tag","iterate","num","_swapText","oldText","newText","_pushReversed","a","merge","_isBeforeWordDelimiter","root","wordDelimiter","next","_deWordify","children","child","_getStyleAsNumber","name","computedStyle","_setPositionsAfterSplit","allChars","allWords","allLines","origWidth","origHeight","cs","paddingLeft","lineOffsetY","borderTopAndBottom","borderLeftAndRight","padTopAndBottom","padLeftAndRight","lineThreshold","textAlign","charArray","wordArray","lineArray","types","lines","words","absolute","linesClass","iterateLine","spaceNodesToRemove","isFlex","prevInlineDisplay","j","l","node","nodes","isChild","curLine","addWordSpaces","style","lineNode","lineWidth","offset","_splitRawText","wordStart","charStart","isWordDelimiter","_char","space","wordEnd","wordIsOpen","specialChars","splitText","character","hasTagStart","testResult","container","parent","_split","SplitText","_proto","originals","runningOnBrowser","isBot","supportsIntersectionObserver","supportsClassList","isHiDpi","defaultSettings","getExtendedSettings","customSettings","createInstance","classObj","options","event","eventString","instance","autoInitialize","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","attribute","setData","value","attrName","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","callback","arg1","arg2","arg3","addClass","className","removeClass","addTempImage","deleteTempImage","getTempImage","unobserve","observer","resetObserver","unobserveEntered","settings","updateLoadingCount","delta","decreaseToLoadCount","setToLoadCount","isSomethingLoading","haveElementsToLoad","getSourceTags","parentTag","sourceTags","childTag","forEachPictureSource","fn","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","saveOriginalBackgroundStyle","setOrResetAttribute","restoreOriginalAttrs","restoreOriginalBgImage","manageApplied","manageLoading","setAttributeIfValue","setImageAttributes","setSourcesImg","imgEl","sourceTag","setSourcesIframe","iframe","setSourcesVideo","videoEl","sourceEl","setSourcesObject","object","setBackground","bg1xValue","bgHiDpiValue","bgDataValue","setMultiBackground","setImgsetBackground","bgImgSetDataValue","imgSetValues","bgImageValues","setSourcesFunctions","setSourcesNative","setSourcesFunction","setSources","elementsWithLoadEvent","hasLoadEvent","checkFinish","addEventListener","eventName","handler","removeEventListener","hasEventListeners","addEventListeners","loadHandler","errorHandler","loadEventName","removeEventListeners","eventListeners","doneHandler","goingNative","addOneShotEventListeners","elementToListenTo","loadBackground","loadRegular","load","loadNative","removeImageAttributes","resetSourcesImg","restoreImg","restoreVideo","restoreIframe","iframeEl","restoreObject","objectEl","restoreFunctions","restoreAttributes","restoreFunction","resetClasses","restore","cancelLoading","entry","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","loadAllNative","elements","isIntersecting","getObserverSettings","intersectionHandler","entries","observeElements","updateObserver","elementsToObserve","setObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","setOnlineCheck","resetOnlineCheck","LazyLoad","givenNodeset","elementsToLoad","byClass","selClass","query","selector","queryAll","forEachHTML","els","scope","numEls","el","classes","addClassEl","currEl","elem","remClass","singleClass","addEvent","ev","opts","removeEvent","getAttr","attr","setAttr","val","remAttr","defOpts","instances","marquee$1","option","currData","marq","marqWrap","vertical","animationName","animStr","duration","delay","loops","animationCss","keyFrameCss","styles","styleEl","contHeight","marqs","marqNums","ind","elHeight","elWidth","contWidth","ScrollTrigger","anim","marquee","hideAllElements","animationComponents","animationSubComponents","wrapper","item","animationType","initLogoMarqueeSection","marqueeWrapper","Marquee","initStatSectionLines","textWrapper","split","line","index","animateWholeBlock","$section","animationSection","timelineValue","animationTimeline","tl","animationWrapper","wrap","resetAnimation","animateWidget","splitAnimation","timeline","image","animateStatSectionOnscroll","wrapperHeight","sectionPosition","textLines","scrollHeightPerEachItem","activeIndex","checktextLines","opacitychangingValue","b","opacityValue","c","animateFooter","footer","scrollToSection","links","link","sectionId","section","headerHeight","_a","offsetPosition","initAnimation","resolve","reject","id","scrollRefresh"],"mappings":"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","x_google_ignoreList":[0,1,2]}