{"version":3,"file":"theme.js","mappings":"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","sources":["webpack://easternstandard/./scripts/src/utils.js","webpack://easternstandard/./scripts/src/modules/mask-button.js","webpack://easternstandard/./scripts/src/modules/mobile-menu.js","webpack://easternstandard/./scripts/src/modules/scroll-reveal.js","webpack://easternstandard/./scripts/src/theme.js","webpack://easternstandard/./scripts/src/modules/grid-width-fix.js"],"sourcesContent":["const svgNs = \"http://www.w3.org/2000/svg\";\n\n/**\n *\n * @param {String} query\n * @param {HTMLElement} root\n * @returns\n */\nconst query = (query, root) => {\n\treturn (root || document).querySelector(query);\n};\n\n/**\n *\n * @param {String} query\n * @param {HTMLElement} root\n * @returns\n */\nconst queryAll = (query, root) => {\n\treturn (root || document).querySelectorAll(query);\n};\n\nconst toArray = (el) => {\n\treturn Array.isArray(el) ? el : [el];\n};\n\n/**\n *\n * @param {HTMLElement|HTMLElement[]} el\n * @param {Object} props\n */\nconst setProps = (el, props) => {\n\tel = toArray(el);\n\tfor (let i in props) {\n\t\tel.forEach((_el) => _el.style.setProperty(i, props[i]));\n\t}\n};\n\nconst setAttribute = (el, attr) => {\n\tel = toArray(el);\n\tfor (let i in attr) {\n\t\tel.forEach((_el) => _el.setAttribute(i, attr[i]));\n\t}\n};\n\nconst getAttribute = (el, attr) => {\n\treturn el.getAttribute(attr);\n};\n\nconst addClass = (el, ...classname) => {\n\tel = toArray(el);\n\tel.forEach((_el) => _el.classList.add(...classname));\n};\n\nconst removeClass = (el, ...classname) => {\n\tel = toArray(el);\n\tel.forEach((_el) => _el.classList.remove(...classname));\n};\n\nconst hasClass = (el, classname) => {\n\treturn el.classList.contains(classname);\n};\n\nconst itemClass = (el, index) => {\n\treturn el.classList.item(index);\n};\n\nconst toggleClass = (el, classname, force) => {\n\tel.classList.toggle(classname, force);\n};\n\n/**\n *\n * @param {HTMLElement|HTMLElement[]} el\n * @param {Boolean} deep\n */\nconst clearProps = (el, deep) => {\n\tel = toArray(el);\n\tel.forEach((_el) => {\n\t\t_el.removeAttribute(\"style\");\n\t\tif (deep && _el.children && _el.children.length)\n\t\t\tclearProps([..._el.children], deep);\n\t});\n};\n\n/**\n * Quebra o texto em characteres\n * Falta aperfeiçoar a função para tratar tags dentro do elemento.\n * @param {HTMLElement} el\n * @param {Number=0,1,2} [type=0]\n * @param {Boolean} [masked=false]\n * @returns {HTMLElement[]}\n */\nconst splitText = (el, type = 0, masked = false, recursive = false) => {\n\tconst childNodes = [...el.childNodes];\n\tconst span = (content, nowrap) =>\n\t\t`<span${\n\t\t\tnowrap ? ' style=\"white-space:nowrap;display:inline-flex;\"' : \"\"\n\t\t}>${content}</span>`;\n\tconst maskHTML = (content) =>\n\t\t`<span style=\"overflow:hidden;display:inline-flex;\">${content}</span>`;\n\tconst format = (match, capture) => {\n\t\tlet content = span(match, !masked && capture === undefined);\n\t\treturn masked ? maskHTML(content) : content;\n\t};\n\n\tel.innerHTML = \"\";\n\n\tchildNodes.forEach((child) => {\n\t\tconst children = child.children;\n\t\tif (children) el.appendChild(child);\n\t\telse {\n\t\t\t// const htmlPart = el.textContent.replace(/\\S+/g, type == 1 && masked ? maskHTML(span) : span)\n\t\t\tchild.textContent.split(\"\\n\").forEach((line) => {\n\t\t\t\tif (!line) return;\n\t\t\t\tconst text = line.trim();\n\t\t\t\tconst newLine =\n\t\t\t\t\ttype == 2\n\t\t\t\t\t\t? format(text)\n\t\t\t\t\t\t: text.replace(/\\S+/g, (match) => {\n\t\t\t\t\t\t\t\treturn type\n\t\t\t\t\t\t\t\t\t? format(match)\n\t\t\t\t\t\t\t\t\t: span(match.replace(/\\S|-/g, format), true);\n\t\t\t\t\t\t });\n\t\t\t\tel.insertAdjacentHTML(\"beforeend\", newLine);\n\t\t\t});\n\t\t}\n\t});\n\n\tconst _children = el.querySelectorAll(\n\t\t!type\n\t\t\t? masked\n\t\t\t\t? \"span span span\"\n\t\t\t\t: \"span span\"\n\t\t\t: masked\n\t\t\t? \"span span\"\n\t\t\t: \"span\"\n\t);\n\tel._children = _children;\n\treturn _children;\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @returns {DOMRect}\n */\nconst getRect = (el) => {\n\tconst rect =\n\t\tel == window\n\t\t\t? { x: 0, y: 0, width: innerWidth, height: innerHeight }\n\t\t\t: el.getBoundingClientRect();\n\trect.maxX = rect.x + rect.width;\n\trect.maxY = rect.y + rect.height;\n\trect.cX = rect.x + rect.width * 0.5;\n\trect.cY = rect.y + rect.height * 0.5;\n\treturn rect;\n};\n\n/**\n * @private\n * @param {HTMLElement} el\n * @param {String} name\n * @param {HTMLElement} child\n */\nconst addDOMProp = (el, name, child) => {\n\tconst filter = [\"text\", \"title\", \"name\"];\n\tif (filter.indexOf(name) > -1) name = \"_\" + name;\n\tlet value = el[name];\n\tif (value) {\n\t\tif (!value.length) el[name] = [value];\n\t\tel[name].push(child);\n\t} else el[name] = child;\n};\n\n/**\n *\n * @param {HTMLElement} el\n */\nconst clearDOM = (el) => {\n\tlet children = el.children;\n\tfor (let child of children) {\n\t\tlet tagName = child.tagName.toLowerCase();\n\t\tlet classList = child.classList;\n\t\tlet id = child.id;\n\t\tdelete el[tagName];\n\t\tdelete el[id];\n\t\tif (classList.length) {\n\t\t\tlet className = classList[0];\n\t\t\tdelete el[className];\n\t\t}\n\t\tif (child.children.length) {\n\t\t\tclearDOM(child);\n\t\t}\n\t}\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nconst getDOM = (el) => {\n\tclearDOM(el);\n\tlet children = el.children;\n\tfor (let child of children) {\n\t\tlet tagName = child.tagName.toLowerCase();\n\t\tlet classList = child.classList;\n\t\tlet id = child.id;\n\t\taddDOMProp(el, tagName, child);\n\t\taddDOMProp(el, id, child);\n\t\tif (classList.length) {\n\t\t\tlet className = classList[0];\n\t\t\taddDOMProp(el, className, child);\n\t\t}\n\t\tif (child.children.length) {\n\t\t\tgetDOM(child);\n\t\t}\n\t}\n\treturn el;\n};\n\n/**\n *\n * @param {EventTarget} el\n * @param {String} events\n * @param {Function} call\n */\nconst addEventListeners = (el, events, call, props) => {\n\tevents.split(\" \").forEach((event) => {\n\t\tel.addEventListener(event, call, props);\n\t});\n};\n\n/**\n *\n * @param {EventTarget} el\n * @param {String} events\n * @param {Function} call\n */\nconst removeEventListeners = (el, events, call) => {\n\tevents.split(\" \").forEach((event) => {\n\t\tel.removeEventListener(event, call);\n\t});\n};\n\n/**\n *\n * @param {MouseEvent} e\n * @param {Boolean} absolute\n * @returns {{x:Number, y:Number}}\n */\nconst getCursorPoint = (e, absolute) => {\n\tlet target = e.currentTarget;\n\tlet rect = getRect(target);\n\tlet point = e.changedTouches ? e.changedTouches[0] : e;\n\treturn absolute\n\t\t? { x: point.clientX, y: point.clientY }\n\t\t: // : { x: point.pageX - rect.x, y: point.pageY - rect.y }\n\t\t { x: point.clientX - rect.left, y: point.clientY - rect.top };\n};\n\n/**\n *\n * @param {HTMLElement} el\n * @returns {{x:Number, y:Number}}\n */\nconst getCenterPoint = (el) => {\n\tlet bounding = getRect(el);\n\treturn {\n\t\tx: bounding.x + bounding.width * 0.5,\n\t\ty: bounding.y + bounding.height * 0.5,\n\t};\n};\n\n/**\n *\n * @returns {Boolean}\n */\nconst isMobileDevice = () => {\n\treturn typeof window.orientation !== \"undefined\";\n};\n\n/**\n *\n * @returns {String}\n */\nconst randomizeHexColor = () => {\n\treturn `#${Math.round(Math.random() * 0xffffff).toString(16)}`;\n};\n\n/**\n *\n * @param {HTMLElement} el\n */\nconst isVisible = (el) => {\n\treturn el.offsetWidth > 0 && el.offsetHeight > 0;\n};\n\n/**\n *\n * @param {String} nomeDaTag\n * @param {Object} tagName\n * @returns\n */\nconst createElement = (tagName, attributes) => {\n\tconst el = document.createElement(tagName);\n\tif (attributes) {\n\t\tfor (let key in attributes) el.setAttribute(key, attributes[key]);\n\t}\n\treturn el;\n};\n\nconst createElementNS = (tagName, attributes) => {\n\tconst el = document.createElementNS(svgNs, tagName);\n\tif (attributes) {\n\t\tfor (let key in attributes) el.setAttributeNS(null, key, attributes[key]);\n\t}\n\treturn el;\n};\n\n/**\n *\n * @param {String} url\n * @returns\n */\nconst toSeoUrl = (url) => {\n\treturn url\n\t\t.toString()\n\t\t.normalize(\"NFD\")\n\t\t.replace(/[\\u0300-\\u036f]/g, \"\")\n\t\t.replace(/\\s+/g, \"-\")\n\t\t.toLowerCase()\n\t\t.replace(/&/g, \"-and-\")\n\t\t.replace(/[^a-z0-9\\-]/g, \"\")\n\t\t.replace(/-+/g, \"-\")\n\t\t.replace(/^-*/, \"\")\n\t\t.replace(/-*$/, \"\");\n};\n\n/**\n *\n * @param {String} value\n */\nconst splitValue = (value) => {\n\tlet index = value.length;\n\tlet unit = \"\";\n\tdo {\n\t\tindex--;\n\t\tconst char = value.charAt(index);\n\t\tif (!isNaN(char)) break;\n\t\telse unit = char + unit;\n\t} while (index > 0);\n\n\tconst obj = { value: parseFloat(value.substring(0, index + 1)), unit: unit };\n\treturn obj;\n};\n\nconst wheelNormalize = (e) => {\n\tlet o = e,\n\t\td = o.detail,\n\t\tw = o.wheelDeltaY,\n\t\tn = 225,\n\t\tn1 = n - 1;\n\td = d ? (w && (f = w / d) ? d / f : -d / 1.35) : w / 120;\n\td =\n\t\td < 1\n\t\t\t? d < -1\n\t\t\t\t? (-Math.pow(d, 2) - n1) / n\n\t\t\t\t: d\n\t\t\t: (Math.pow(d, 2) + n1) / n;\n\te.delta = Math.min(Math.max(d / 2, -1), 1);\n\n\treturn e;\n};\n\nconst getExtension = (filename) => {\n\tconst ext = filename.match(/\\.([^\\./\\?]+)($|\\?)/);\n\treturn ext ? ext[1].toLowerCase() : null;\n};\n\nconst getScreenSize = () => {\n\treturn screen.width <= 1080\n\t\t? 1\n\t\t: screen.width <= 1620\n\t\t? 2\n\t\t: screen.width <= 2560\n\t\t? 3\n\t\t: 4;\n};\n\nconst canUseWebP = () => {\n\treturn new Promise((res) => {\n\t\tconst webP = new Image();\n\t\twebP.src =\n\t\t\t\"data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA\";\n\t\twebP.onload = webP.onerror = () => {\n\t\t\tres(webP.height === 2);\n\t\t};\n\t});\n};\n\nconst canUseAvif = () => {\n\treturn new Promise((res) => {\n\t\tconst avif = new Image();\n\t\tavif.src =\n\t\t\t\"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\";\n\t\tavif.onload = avif.onerror = () => {\n\t\t\tres(avif.height === 2);\n\t\t};\n\t});\n};\n\nexport {\n\tsplitValue,\n\tsetProps,\n\tclearProps,\n\taddClass,\n\tremoveClass,\n\thasClass,\n\titemClass,\n\ttoggleClass,\n\tsplitText,\n\tgetDOM,\n\tgetRect,\n\taddEventListeners,\n\tremoveEventListeners,\n\tgetCursorPoint,\n\tgetCenterPoint,\n\tisMobileDevice,\n\trandomizeHexColor,\n\tquery,\n\tqueryAll,\n\tisVisible,\n\tcreateElement,\n\tcreateElementNS,\n\ttoSeoUrl,\n\twheelNormalize,\n\tgetExtension,\n\tgetScreenSize,\n\tcanUseWebP,\n\tcanUseAvif,\n\tsetAttribute,\n\tgetAttribute,\n};\n","import {\n\tcreateElement,\n\tcreateElementNS,\n\tquery,\n\tqueryAll,\n\tgetCursorPoint,\n\tsetProps,\n\thasClass,\n\taddClass,\n\tremoveClass,\n} from \"../utils.js\";\n\nclass MaskedButton {\n\tbtn;\n\tpoint;\n\tlerpPoint;\n\trunning;\n\tinertia = 0.1;\n\n\tconstructor(el) {\n\t\tthis.btn = el;\n\t\tthis.btn.addEventListener(\"mouseenter\", this.enterHandler);\n\t}\n\n\treset = () => {\n\t\tthis.point = this.lerpPoint = null;\n\t\tthis.running = false;\n\t};\n\n\tenterHandler = (e) => {\n\t\tconst el = e.target;\n\t\tconst container = el;\n\t\tconst svg = query(\".u-svg\", el);\n\n\t\t// if (!svg) {\n\t\t// \tconst clone = hasClass(el, 'clone');\n\t\t// \tconst index = maskBts.indexOf(el);\n\t\t// \tconst maskId = `circle_mask_${index}`;\n\t\t// \tconst circle_1 = createElementNS('circle');\n\t\t// \tconst svg = createElementNS('svg');\n\n\t\t// \tif (clone) {\n\t\t// \t\tconst clipPath = createElementNS('clipPath', { id: maskId });\n\t\t// \t\tclipPath.appendChild(circle_1);\n\t\t// \t\tsvg.appendChild(clipPath);\n\t\t// \t} else svg.appendChild(circle_1);\n\n\t\t// \tel.appendChild(svg);\n\n\t\t// \tif (container && clone) {\n\t\t// \t\tconst style = `clip-path: url(#${maskId});`;\n\t\t// \t\tconst cloneContainer = createElement('div', { class: 'clone-container', style: style });\n\t\t// \t\tconst containerClone = container.cloneNode(true);\n\t\t// \t\tcloneContainer.appendChild(containerClone);\n\t\t// \t\tel.appendChild(cloneContainer);\n\t\t// \t}\n\t\t// }\n\n\t\tel.addEventListener(\"mousemove\", this.moveHandler);\n\t\tel.addEventListener(\"mouseleave\", this.leaveHandler, { once: true });\n\n\t\tconst r = Math.hypot(el.clientWidth, el.clientHeight);\n\t\tsetProps(el, { \"--r\": `${r}px` });\n\n\t\tconst circle = query(\"circle\", el);\n\t\tcircle.removeEventListener(\"transitionend\", this.reset);\n\n\t\tthis.moveHandler(e);\n\t\tif (!this.running) {\n\t\t\tthis.running = true;\n\t\t\tthis.render();\n\t\t}\n\t\taddClass(el, \"hover\");\n\t};\n\n\tmoveHandler = (e) => {\n\t\tthis.point = getCursorPoint(e);\n\t\tif (!this.lerpPoint) this.lerpPoint = this.point;\n\t};\n\n\tleaveHandler = (e) => {\n\t\tconst el = e.target;\n\t\tconst circle = query(\"circle\", el);\n\t\tsetProps(el, { \"--r\": `0px` });\n\t\tel.removeEventListener(\"mousemove\", this.moveHandler);\n\t\tcircle.addEventListener(\"transitionend\", this.reset);\n\t\tremoveClass(el, \"hover\");\n\t};\n\n\trender = () => {\n\t\tif (this.running) {\n\t\t\tthis.lerpPoint.x += (this.point.x - this.lerpPoint.x) * this.inertia;\n\t\t\tthis.lerpPoint.y += (this.point.y - this.lerpPoint.y) * this.inertia;\n\t\t\tsetProps(this.btn, {\n\t\t\t\t\"--x\": `${this.lerpPoint.x}px`,\n\t\t\t\t\"--y\": `${this.lerpPoint.y}px`,\n\t\t\t});\n\t\t\trequestAnimationFrame(this.render);\n\t\t}\n\t};\n}\n\nexport { MaskedButton };\n","import {\n\taddClass,\n\tremoveClass,\n\thasClass,\n\tsetAttribute,\n\tgetAttribute,\n\tquery,\n} from \"../utils\";\n\nconst createTransitionClasses = (elementName, baseClass) => ({\n\t[`${elementName}IsOpen`]: `${baseClass}--open`,\n\t[`${elementName}IsClosing`]: `${baseClass}--closing`,\n\t[`${elementName}IsClosed`]: `${baseClass}--closed`,\n});\n\nclass MobileMenu {\n\t#button = null;\n\tget button() {\n\t\treturn this.#button;\n\t}\n\n\tset button(_button) {\n\t\tthis.#button = _button;\n\t}\n\n\t#menu = null;\n\tget menu() {\n\t\treturn this.#menu;\n\t}\n\n\tset menu(_menu) {\n\t\tthis.#menu = _menu;\n\t}\n\n\t#mql = null;\n\tget mql() {\n\t\treturn this.#mql;\n\t}\n\n\tset mql(_mql) {\n\t\tthis.#mql = _mql;\n\t}\n\n\tbuttonClasses = {};\n\tmenuClasses = {};\n\tconstructor() {\n\t\tdocument.addEventListener(\"DOMContentLoaded\", this.initializeMenu);\n\t}\n\n\tinitializeMenu = () => {\n\t\tthis.buttonClasses = createTransitionClasses(\n\t\t\t\"button\",\n\t\t\t\"block-site-wide-header__mobile-button\"\n\t\t);\n\t\tthis.menuClasses = createTransitionClasses(\n\t\t\t\"menu\",\n\t\t\t\"block-site-wide-header__navigation-container\"\n\t\t);\n\n\t\tif (!this.button) {\n\t\t\tthis.button = document.getElementById(\"mobile-button\");\n\t\t\tthis.button.addEventListener(\"click\", this.handleMenuClick);\n\t\t}\n\t\tif (!this.menu) {\n\t\t\tthis.menu = document.getElementById(\"main-nav\");\n\t\t\tthis.menu.addEventListener(\"transitionend\", this.handleMenuTransition);\n\t\t}\n\t\tif (!this.mql) {\n\t\t\tthis.mql = window.matchMedia(\"only screen and (min-width: 87.5em)\");\n\t\t\tthis.mql.addEventListener(\"change\", this.handleMqlChange);\n\t\t}\n\t};\n\n\thandleMqlChange = (event) => {\n\t\tif (\n\t\t\tevent.matches &&\n\t\t\tgetAttribute(this.button, \"aria-expanded\") === \"true\"\n\t\t) {\n\t\t\tthis.resetMenu();\n\t\t}\n\t};\n\n\tresetMenu = () => {\n\t\tconst body = query(\"body\");\n\t\tsetAttribute(this.button, { \"aria-expanded\": false });\n\t\tremoveClass(this.button, this.buttonClasses.buttonIsOpen);\n\t\taddClass(this.button, this.buttonClasses.buttonIsClosed);\n\n\t\tremoveClass(this.menu, this.menuClasses.menuIsClosing);\n\t\tremoveClass(this.menu, this.menuClasses.menuIsOpen);\n\t\taddClass(this.menu, this.menuClasses.menuIsClosed);\n\t\tremoveClass(body, \"no-scroll\");\n\n\t\t// Hide custom link when menu is reset\n\t\tconst customLink = document.querySelector('.custom-link');\n\t\tif (customLink) {\n\t\t\tcustomLink.style.display = 'none';\n\t\t}\n\t};\n\n\thandleMenuTransition = () => {\n\t\tif (hasClass(this.menu, this.menuClasses.menuIsClosing)) {\n\t\t\tconst body = query(\"body\");\n\t\t\tremoveClass(this.menu, this.menuClasses.menuIsClosing);\n\t\t\taddClass(this.menu, this.menuClasses.menuIsClosed);\n\n\t\t\tremoveClass(body, \"no-scroll\");\n\t\t}\n\t};\n\n\thandleOpenMenu = () => {\n\t\tconst body = query(\"body\");\n\t\tsetAttribute(this.button, { \"aria-expanded\": true });\n\t\tremoveClass(this.button, this.buttonClasses.buttonIsClosed);\n\t\taddClass(this.button, this.buttonClasses.buttonIsOpen);\n\n\t\taddClass(this.menu, this.menuClasses.menuIsOpen);\n\t\taddClass(body, \"no-scroll\");\n\n\t\t// Show custom link when menu is opened\n\t\tconst customLink = document.querySelector('.custom-link');\n\t\tif (customLink) {\n\t\t\tcustomLink.style.display = 'block';\n\t\t}\n\t};\n\n\thandleCloseMenu = () => {\n\t\tsetAttribute(this.button, { \"aria-expanded\": false });\n\t\tremoveClass(this.button, this.buttonClasses.buttonIsOpen);\n\t\taddClass(this.button, this.buttonClasses.buttonIsClosed);\n\n\t\tremoveClass(this.menu, this.menuClasses.menuIsOpen);\n\t\taddClass(this.menu, this.menuClasses.menuIsClosing);\n\n\t\t// Hide custom link when menu is closed\n\t\tconst customLink = document.querySelector('.custom-link');\n\t\tif (customLink) {\n\t\t\tcustomLink.style.display = 'none';\n\t\t}\n\t};\n\n\thandleMenuClick = (e) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (getAttribute(this.button, \"aria-expanded\") === \"false\") {\n\t\t\tthis.handleOpenMenu();\n\t\t} else {\n\t\t\tthis.handleCloseMenu();\n\t\t}\n\t};\n}\n\nexport { MobileMenu };\n","function handleBasicScrollObserver(entries, observer) {\n\tconsole.log(entries);\n\tentries.forEach((entry) => {\n\t\tif (entry.isIntersecting && entry.target.classList.contains(\"u-watch\")) {\n\t\t\tentry.target.classList.add(\"u-watch--active\");\n\t\t} else {\n\t\t\tentry.target.classList.remove(\"u-watch--active\");\n\t\t}\n\t});\n}\n\nfunction handleOutScrollObserver(entries) {\n\tentries.forEach((entry) => {\n\t\tif (!entry.isIntersecting && entry.boundingClientRect.top <= 0) {\n\t\t\tentry.target.classList.add(\"u-watch--active-out\");\n\t\t} else {\n\t\t\tentry.target.classList.remove(\"u-watch--active-out\");\n\t\t}\n\t});\n}\n\nfunction handleLazyLoadImages(entries, observer) {\n\tentries.forEach((entry) => {\n\t\tif (\n\t\t\tentry.isIntersecting &&\n\t\t\tentry.target.getAttribute(\"loading\") === \"lazy\"\n\t\t) {\n\t\t\t// Might as well store the img element in a variable since we need it for so much\n\t\t\tlet imgEle = entry.target;\n\t\t\tlet imageUrl = imgEle.getAttribute(\"src\");\n\n\t\t\tif (imageUrl) {\n\t\t\t\timgEle.src = imageUrl;\n\n\t\t\t\t// Check if the image has already loaded, if so add our animation class to it\n\t\t\t\tif (imgEle.complete) {\n\t\t\t\t\timgEle.classList.add(\"lazy-image--loaded\");\n\t\t\t\t} else {\n\t\t\t\t\t// If it hasn't finished loaded an a load even listener that will add the class once it's done\n\t\t\t\t\timgEle.onload = () => {\n\t\t\t\t\t\timgEle.classList.add(\"lazy-image--loaded\");\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tobserver.unobserve(entry.target);\n\t\t\t}\n\t\t}\n\t});\n}\n\nexport default function scrollRevealInit() {\n\tconst basicScrollObserver = new IntersectionObserver(\n\t\thandleBasicScrollObserver,\n\t\t{\n\t\t\troot: document.querySelector(\".wp-site-blocks\"),\n\t\t\trootMargin: \"-25% 0% -25% 0%\",\n\t\t\tthreshold: 0,\n\t\t}\n\t);\n\n\tconst lazyImageObserver = new IntersectionObserver(handleLazyLoadImages, {\n\t\tthreshold: 0.1,\n\t});\n\n\tconst watchers = document.querySelectorAll(`.u-watch`);\n\n\tif (watchers) {\n\t\t[].forEach.call(watchers, (watcher) => {\n\t\t\tbasicScrollObserver.observe(watcher);\n\t\t});\n\t}\n\n\t// const outWatchers = document.querySelectorAll(`.u-watch--out`);\n\n\t// if (outWatchers) {\n\t// [].forEach.call(outWatchers, (watcher) => {\n\t// outScrollObserver.observe(watcher);\n\t// });\n\t// }\n\n\tconst imgWatchers = document.querySelectorAll(\".lazy-image\");\n\tif (imgWatchers) {\n\t\t[].forEach.call(imgWatchers, (watcher) => {\n\t\t\tlazyImageObserver.observe(watcher);\n\t\t});\n\t}\n}\n","import { MaskedButton } from \"./modules/mask-button.js\";\nimport { MobileMenu } from \"./modules/mobile-menu.js\";\nimport { queryAll, query, setProps } from \"./utils.js\";\nimport { GridWidthFix } from \"./modules/grid-width-fix.js\";\nimport scrollRevealInit from \"./modules/scroll-reveal.js\";\n\n// const BlockEditorGridWidthFix = require(\"./modules/block-editor-grid-width-fix.js\");\n// new BlockEditorGridWidthFix();\nnew MobileMenu();\nnew GridWidthFix();\n\ndocument.addEventListener(\"readystatechange\", (event) => {\n\tif (document.readyState === \"complete\") {\n\t\tconst body = query(\"body\");\n\t\tsetProps(body, { \"--internal-url\": window.location.host });\n\n\t\tconst maskBtns = [...queryAll(\".mask-btn\")];\n\n\t\tmaskBtns.forEach((el) => {\n\t\t\tif (!el.instance) el.instance = new MaskedButton(el);\n\t\t});\n\n\t\tconst stickyElm = query(\"header\");\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t([e]) => e.target.classList.toggle(\"is-stuck\", e.intersectionRatio < 1),\n\t\t\t{ threshold: [1] }\n\t\t);\n\n\t\tobserver.observe(stickyElm);\n\t}\n});\n\n(() =>\n\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\tscrollRevealInit();\n\t\t// Search and delete all elements that match <div class=\"sub-menu-heading\">_</div>\n const elements = document.querySelectorAll('.sub-menu-heading');\n elements.forEach(function(element) {\n\t\t\t\n if (element.innerHTML.trim() === \"_\") {\n element.parentNode.removeChild(element);\n }\n });\n\t}))();\nclass LazyImage extends HTMLImageElement {\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback() {}\n}\n\ncustomElements.define(\"block-lazy-image\", LazyImage, {\n\textends: \"img\",\n});\n","/*\nThis class addresses the issue of the 'vw' CSS unit type not properly reflecting\nthe width of the scroll bar. The grid mixin relies on the 'vw' unit to work properly.\nWith this fix constantly updating the '--grid-viewport-width' CSS variable to account\nfor the scroll bar, we use the '--grid-viewport-width' variable (if it's available)\nin place of 'vw' in our grid script.\n*/\n\nclass GridWidthFix {\n\tconstructor() {\n\t\tdocument.addEventListener(\"DOMContentLoaded\", this.updateGridViewportWidth);\n\t\twindow.addEventListener(\"resize\", this.updateGridViewportWidth);\n\t}\n\n\tupdateGridViewportWidth = () => {\n\t\tlet width = \"100vw\";\n\t\tif (document.body) {\n\t\t\tconst documentBodyElementWidth = document.body.offsetWidth;\n\t\t\tif (typeof documentBodyElementWidth === \"number\") {\n\t\t\t\twidth = documentBodyElementWidth.toString() + \"px\";\n\t\t\t}\n\t\t\tdocument.body.style.setProperty(\"--grid-viewport-width\", width);\n\t\t}\n\t};\n}\n\nexport { GridWidthFix };\n"],"names":["query","root","document","querySelector","queryAll","querySelectorAll","toArray","el","Array","isArray","setProps","props","i","forEach","_el","style","setProperty","setAttribute","attr","getAttribute","addClass","classname","classList","add","removeClass","remove","MaskedButton","btn","point","lerpPoint","running","inertia","constructor","this","addEventListener","enterHandler","reset","e","target","moveHandler","leaveHandler","once","r","Math","hypot","clientWidth","clientHeight","removeEventListener","render","absolute","rect","window","x","y","width","innerWidth","height","innerHeight","getBoundingClientRect","maxX","maxY","cX","cY","getRect","currentTarget","changedTouches","clientX","left","clientY","top","getCursorPoint","circle","requestAnimationFrame","createTransitionClasses","elementName","baseClass","handleBasicScrollObserver","entries","observer","console","log","entry","isIntersecting","contains","handleLazyLoadImages","imgEle","imageUrl","src","complete","onload","unobserve","button","_button","menu","_menu","mql","_mql","buttonClasses","menuClasses","initializeMenu","getElementById","handleMenuClick","handleMenuTransition","matchMedia","handleMqlChange","event","matches","resetMenu","body","buttonIsOpen","buttonIsClosed","menuIsClosing","menuIsOpen","menuIsClosed","customLink","display","handleOpenMenu","handleCloseMenu","preventDefault","stopPropagation","updateGridViewportWidth","documentBodyElementWidth","offsetWidth","toString","readyState","location","host","instance","stickyElm","IntersectionObserver","toggle","intersectionRatio","threshold","observe","basicScrollObserver","rootMargin","lazyImageObserver","watchers","call","watcher","imgWatchers","scrollRevealInit","element","innerHTML","trim","parentNode","removeChild","LazyImage","HTMLImageElement","super","connectedCallback","customElements","define","extends"],"sourceRoot":""}