{"version":3,"sources":["../assets/scripts/includes/pageFunctions.js","../assets/scripts/includes/_helpers.js","../assets/scripts/main.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9LA","file":"main.js","sourcesContent":["// Page Functions\r\n\r\nvar canBeLoaded = true,\r\n headerHeight;\r\n\r\nwindow.PageFunctions = {\r\n\t\r\n\tsetup: function() {\r\n this.eventListeners();\r\n this.mobileMenuSubMenus();\r\n this.checkScrollPosition();\r\n\t}, \r\n\r\n eventListeners: function() {\r\n\r\n // // Menu Trigger\r\n document.querySelector('.menu-trigger-container').addEventListener('click', function(e) {\r\n e.preventDefault();\r\n document.body.classList.toggle('menu-open');\r\n });\r\n\r\n // Prevent Default on Main Menu Links\r\n let main_menu_links = document.querySelectorAll('.desktop-menu a[href=\"#\"]');\r\n main_menu_links.forEach((el, index) => {\r\n el.addEventListener( 'click', function(e) {\r\n e.preventDefault();\r\n });\r\n });\r\n\r\n // Scroll To Anchor Links\r\n let anchor_links = document.querySelectorAll('main.main a[href^=\"#\"]:not(.noscroll):not([data-lity])');\r\n anchor_links.forEach((el, index) => {\r\n el.addEventListener( 'click', window.PageFunctions.scrollToTopOfDivWithOffset );\r\n });\r\n\r\n // Shrink Header On Scroll\r\n window.addEventListener( 'scroll', window.PageFunctions.shrinkHeaderOnScroll );\r\n\r\n },\r\n\r\n mobileMenuSubMenus: function() {\r\n\r\n // Open Mobile Sub Meus\r\n let mobile_sub_links = document.querySelectorAll('.mobile-menu .has-children > a');\r\n\r\n mobile_sub_links.forEach((el, index) => {\r\n \r\n var sub_menu = window.helpers.next(el);\r\n let parent = window.helpers.parent(el);\r\n \r\n el.addEventListener( 'click', function(e) {\r\n e.preventDefault();\r\n window.helpers.slideToggle(sub_menu, 500);\r\n window.helpers.toggleClass(el, 'menu-item-open');\r\n } );\r\n\r\n \r\n })\r\n },\r\n\r\n\r\n\r\n openMobileMegaNavs: function(e) {\r\n e.preventDefault();\r\n\r\n let next = window.helpers.next(e.target);\r\n let parent = window.helpers.parent(e.target);\r\n\r\n window.helpers.slideToggle(next, 500);\r\n window.helpers.toggleClass(parent, 'mega-nav-item-open');\r\n\r\n },\r\n\r\n /**\r\n * Scroll to the top of a div with header offset\r\n */\r\n scrollToTopOfDivWithOffset: function(e) {\r\n\r\n e.preventDefault();\r\n\r\n let href = e.target.getAttribute('href');\r\n\r\n if (href != '#') {\r\n let target = href.replace(\"#\", \"\");\r\n \r\n let element = document.getElementById( target );\r\n let headerOffset = 120;\r\n let elementPosition = element.getBoundingClientRect().top;\r\n let offsetPosition = elementPosition + window.pageYOffset - headerOffset;\r\n \r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Add shrink class to header on scroll\r\n */\r\n shrinkHeaderOnScroll: function() {\r\n\r\n let scroll_position = window.helpers.scrollTop(window);\r\n let threshold = 50;\r\n let body = document.body;\r\n\r\n if ( scroll_position > threshold ) {\r\n window.helpers.addClass(body, 'shrink');\r\n } else {\r\n window.helpers.removeClass(body, 'shrink');\r\n }\r\n\r\n },\r\n checkScrollPosition: function() {\r\n\r\n let scroll_position = window.helpers.scrollTop(window);\r\n let body = document.body;\r\n\r\n if (scroll_position > 0) {\r\n window.helpers.addClass( body, 'shrink' )\r\n }\r\n },\r\n /**\r\n * Accordions\r\n */\r\n accordions: function(e) {\r\n \r\n e.preventDefault();\r\n\r\n let target = e.target;\r\n let parent = window.helpers.parent(target);\r\n let next = window.helpers.next(target);\r\n\r\n window.helpers.toggleClass(parent, 'open');\r\n window.helpers.slideToggle(next);\r\n \r\n }\r\n\r\n};\r\n\r\n\r\n\r\n\r\n\r\n","// Helpers\r\n\r\nwindow.helpers = {\r\n setup: function() {\r\n \r\n },\r\n el: function(el) {\r\n return document.querySelector(el);\r\n },\r\n hasClass: function(el, className) {\r\n if ( el.classList.contains(className) ) {\r\n return true;\r\n }\r\n },\r\n removeClass: function(el, className) {\r\n el.classList.remove(className);\r\n },\r\n addClass: function(el, className) {\r\n el.classList.add(className);\r\n },\r\n toggleClass: function(el, className) {\r\n el.classList.toggle(className);\r\n },\r\n parent: function(el) {\r\n return el.parentNode;\r\n },\r\n parents: function(el, selector) {\r\n const parents = [];\r\n while ((el = el.parentNode) && el !== document) {\r\n if (!selector || el.matches(selector)) parents.unshift(el);\r\n }\r\n return parents;\r\n },\r\n next: function(el) {\r\n return el.nextElementSibling;\r\n },\r\n attr: function(el, attr) {\r\n return el.getAttribute(attr);\r\n },\r\n data: function(el) {\r\n return el.getAttribute('data');\r\n },\r\n append: function(el, parent) {\r\n parent.append(el);\r\n },\r\n prepend: function(el, parent) {\r\n parent.prepend(el);\r\n },\r\n animate: function(el) {\r\n\r\n },\r\n offset: function(el) {\r\n box = el.getBoundingClientRect();\r\n docElem = document.documentElement;\r\n return {\r\n top: box.top + window.pageYOffset - docElem.clientTop,\r\n left: box.left + window.pageXOffset - docElem.clientLeft\r\n };\r\n },\r\n empty: function(el) {\r\n el.replaceChildren();\r\n },\r\n wrap: function(el, wrapEl, elClass) {\r\n const wrappingElement = document.createElement(wrapEl);\r\n wrappingElement.className(elClass);\r\n el.replaceWith(wrappingElement);\r\n wrappingElement.appendChild(el);\r\n },\r\n ready: function() {\r\n if (document.readyState !== 'loading') {\r\n fn();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', fn);\r\n }\r\n },\r\n on: function(el, eventName, eventHandler, selector) {\r\n if (selector) {\r\n const wrappedHandler = function(e) {\r\n if (e.target && e.target.matches(selector)) {\r\n eventHandler(e);\r\n }\r\n };\r\n el.addEventListener(eventName, wrappedHandler);\r\n return wrappedHandler;\r\n } else {\r\n el.addEventListener(eventName, eventHandler);\r\n return eventHandler;\r\n }\r\n },\r\n slideUp: function(target, duration) {\r\n\r\n target.style.transitionProperty = 'height, margin, padding';\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.boxSizing = 'border-box';\r\n target.style.height = target.offsetHeight + 'px';\r\n target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0;\r\n target.style.paddingTop = 0;\r\n target.style.paddingBottom = 0;\r\n target.style.marginTop = 0;\r\n target.style.marginBottom = 0;\r\n window.setTimeout( () => {\r\n target.style.display = 'none';\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n }, duration);\r\n },\r\n\r\n slideDown: function(target, duration) {\r\n target.style.removeProperty('display');\r\n let display = window.getComputedStyle(target).display;\r\n\r\n if (display === 'none')\r\n display = 'block';\r\n\r\n target.style.display = display;\r\n let height = target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0;\r\n target.style.paddingTop = 0;\r\n target.style.paddingBottom = 0;\r\n target.style.marginTop = 0;\r\n target.style.marginBottom = 0;\r\n target.offsetHeight;\r\n target.style.boxSizing = 'border-box';\r\n target.style.transitionProperty = \"height, margin, padding\";\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.height = height + 'px';\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n window.setTimeout( () => {\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n }, duration);\r\n },\r\n\r\n slideToggle: function(target, duration) {\r\n if (window.getComputedStyle(target).display === 'none') {\r\n return window.helpers.slideDown(target, duration);\r\n } else {\r\n return window.helpers.slideUp(target, duration);\r\n }\r\n },\r\n scrollTop: function(el, value) {\r\n if (value === undefined) {\r\n return el.pageYOffset;\r\n } else {\r\n if (el === window || el.nodeType === 9) {\r\n el.scrollTo(el.pageXOffset, value);\r\n } else {\r\n el.pageYOffset = value;\r\n }\r\n }\r\n },\r\n hide: function(el) {\r\n el.style.display = 'none';\r\n },\r\n fadeIn: function(el, display) {\r\n el.style.opacity = 0;\r\n el.style.display = display || \"block\";\r\n (function fade() {\r\n var val = parseFloat(el.style.opacity);\r\n if (!((val += 0.1) > 1)) {\r\n el.style.opacity = val;\r\n requestAnimationFrame(fade);\r\n }\r\n })();\r\n },\r\n fadeOut: function(el) {\r\n el.style.opacity = 1;\r\n (function fade() {\r\n if ((el.style.opacity -= 0.1) < 0) {\r\n el.style.display = \"none\";\r\n } else {\r\n requestAnimationFrame(fade);\r\n }\r\n })();\r\n }\r\n\r\n};","window.PageFunctions.setup();"],"sourceRoot":"assets/scripts/"}