{"version":3,"file":"js/main.js","mappings":"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","sources":["webpack://rs_theme/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://rs_theme/./src/js/global/_accessibility.js","webpack://rs_theme/./src/js/global/_navigation.js","webpack://rs_theme/./src/js/util/_utilities.js","webpack://rs_theme/./src/js/global/_site-header.js","webpack://rs_theme/./src/js/component/_video-controls.js","webpack://rs_theme/./src/sass/main.scss","webpack://rs_theme/./src/js/routes/common.js","webpack://rs_theme/./src/js/routes/home.js","webpack://rs_theme/./src/js/util/Router.js","webpack://rs_theme/./src/js/util/_camelCase.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://rs_theme/webpack/bootstrap","webpack://rs_theme/webpack/runtime/compat get default export","webpack://rs_theme/webpack/runtime/define property getters","webpack://rs_theme/webpack/runtime/hasOwnProperty shorthand","webpack://rs_theme/webpack/runtime/nonce","webpack://rs_theme/./src/js/main.js"],"sourcesContent":["/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/* Global Accessibility functionality.\n *\n * Tabbing and skiplinks\n *\n * @file combined\n *\n */\n\nconst Accessibility = {\n handleFirstTab: (e) => {\n if (e.keyCode === 9) {\n // the \"I am a keyboard user\" key\n document.body.classList.add(\"user-is-tabbing\");\n window.removeEventListener(\"keydown\", Accessibility.handleFirstTab);\n }\n },\n\n init: () => {\n const isIe = /(trident|msie)/i.test(navigator.userAgent);\n\n if (isIe && document.getElementById && window.addEventListener) {\n window.addEventListener(\"hashchange\", () => {\n let id = location.hash.substring(1);\n let element;\n\n if (!/^[A-z0-9_-]+$/.test(id)) {\n return;\n }\n\n element = document.getElementById(id);\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1;\n }\n\n element.focus();\n }\n }, false);\n }\n\n window.addEventListener(\"keydown\", Accessibility.handleFirstTab);\n }\n}\n\nexport default Accessibility;\n\n","/* Global & Mobile Navigation Handling\n *\n * @file combined\n *\n */\nconst Navigation = {\n mobile: () => {\n const body = document.body;\n const menuToggle = document.getElementById('menu-toggle');\n const mobileMenuItem = document.querySelectorAll('.menu-mobile .nav__menu .menu-item');\n const helloBar = document.querySelector('.rs-hello-bar');\n const masthead = document.getElementById('masthead');\n const nav = document.querySelector('.rs-header__mobile-nav');\n\n // If the Hello Bar is active, we need to dynamically track and set the mobile menu offset.\n // The needed offset changes according to the height of the hello bar at different screen widths,\n // as well as whether the user has scrolled down and engaged the sticky header.\n if (helloBar) {\n const setMobileMenuOffset = () => {\n nav.style.top = helloBar.offsetHeight + masthead.offsetHeight + 'px';\n }\n const mobileMenuOffsetObserver = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n if (mutation.target.classList.contains('rs-header--is-sticky')) {\n nav.style.top = masthead.offsetHeight + 'px';\n } else {\n setMobileMenuOffset();\n }\n }\n });\n });\n setMobileMenuOffset();\n window.addEventListener('resize', setMobileMenuOffset);\n mobileMenuOffsetObserver.observe(masthead, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n // Menu Toggle.\n menuToggle.addEventListener('click', () => {\n body.classList.contains('menu-mobile-active') ? body.classList.remove('menu-mobile-active') : body.classList.add('menu-mobile-active');\n });\n\n // Mobile Sub Menu.\n Array.from(mobileMenuItem).forEach(menuItem => {\n menuItem.classList.remove('expanded');\n menuItem.addEventListener('click', () => {\n this.classList.contains('expanded') ? this.classList.remove('expanded') : this.classList.add('expanded');\n });\n });\n },\n allNavs: () => {\n // Store header for later\n const header = document.querySelector('.rs-header');\n const body = document.body;\n\n // Do not follow hash links or those opening a submenu.\n const deadLinks = document.querySelectorAll('.nav li:not(.rs-modal-link) > a[href=\"#\"], .nav .menu-item-has-children > a');\n Array.from(deadLinks).forEach(link => {\n link.addEventListener('click', e => e.preventDefault());\n });\n\n // Flag navbar with class when page scrolled.\n if (window.requestAnimationFrame) {\n let curScrollY;\n let lastScrollY = window.scrollY;\n\n const onScroll = () => {\n // Style navbar when scrolled a minimum distance.\n if (curScrollY >= 60 && !header.classList.contains('rs-header--is-sticky')) {\n header.classList.add('rs-header--is-sticky');\n } else if (curScrollY < 60 && header.classList.contains('rs-header--is-sticky')) {\n header.classList.remove('rs-header--is-sticky');\n }\n };\n\n // Fire \"onScroll\" only when window is scrolled vertically.\n const rafLoop = () => {\n curScrollY = window.scrollY;\n\n if (lastScrollY === curScrollY) {\n window.requestAnimationFrame(rafLoop);\n return;\n }\n\n // Fire onScroll function if window scrolls vertically.\n onScroll();\n\n lastScrollY = curScrollY;\n window.requestAnimationFrame(rafLoop);\n };\n\n // Initialize state based on browser initial scroll position.\n onScroll();\n // Start loop.\n rafLoop();\n }\n },\n init: () => {\n Navigation.allNavs();\n Navigation.mobile();\n }\n};\n\nexport default Navigation;\n","/* Global utility functions.\n *\n * @file combined\n */\n\n/* Scroll event listener with request animation frame throttling\n * use this instead of the native scroll listener\n * pass a function to this scroll listener\n */\nexport function scrollListener(myscrollFunction) {\n // Setup a timer\n let timeout;\n // Listen for resize events\n window.addEventListener(\n \"scroll\",\n function(event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n // Setup the new requestAnimationFrame()\n timeout = window.requestAnimationFrame(function() {\n // Run our scroll functions (Your code here)\n myscrollFunction(event);\n });\n },\n false\n );\n}\n\n/* Resize event listener with request animation frame throttling\n * use this instead of the native resize listener\n * pass a function to this resize listener\n */\nexport function resizeListener(myresizeFunction) {\n // Setup a timer\n let timeout;\n // Listen for resize events\n window.addEventListener(\n \"resize\",\n function(event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n // Setup the new requestAnimationFrame()\n timeout = window.requestAnimationFrame(function() {\n // Run our resize functions (Your code here)\n myresizeFunction(event);\n });\n },\n false\n );\n}\n\n/*\n * IE 11 polyfill for ForEach loop.\n */\nexport function ie11forEachPolyfill() {\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = function(callback, thisArg) {\n thisArg = thisArg || window;\n for (var i = 0; i < this.length; i++) {\n callback.call(thisArg, this[i], i, this);\n }\n };\n }\n}\n\n/*\n * Check if an element exisits\n */\nexport function elementExists(element) {\n return typeof element !== \"undefined\" && element != null;\n}\n\n/*\n * Slide Element Up\n */\nconst slideWatchers = {};\nexport function slideUp(target, duration = 500, callback) {\n clearTimeout(slideWatchers[target.id]);\n target.style.transitionProperty = \"height, margin, padding\";\n target.style.transitionDuration = duration + \"ms\";\n target.style.boxSizing = \"border-box\";\n target.style.height = target.offsetHeight + \"px\";\n target.offsetHeight;\n target.style.overflow = \"hidden\";\n target.style.height = 0;\n target.style.paddingTop = 0;\n target.style.paddingBottom = 0;\n target.style.marginTop = 0;\n target.style.marginBottom = 0;\n slideWatchers[target.id] = setTimeout(() => {\n target.style.display = \"none\";\n target.style.removeProperty(\"height\");\n target.style.removeProperty(\"padding-top\");\n target.style.removeProperty(\"padding-bottom\");\n target.style.removeProperty(\"margin-top\");\n target.style.removeProperty(\"margin-bottom\");\n target.style.removeProperty(\"overflow\");\n target.style.removeProperty(\"transition-duration\");\n target.style.removeProperty(\"transition-property\");\n\n if (callback instanceof Function) {\n callback();\n }\n }, duration);\n}\n\n/*\n * Slide Element Down\n */\nexport function slideDown(target, duration = 500, callback) {\n clearTimeout(slideWatchers[target.id]);\n target.style.removeProperty(\"display\");\n let display = window.getComputedStyle(target).display;\n if (display === \"none\") display = \"block\";\n target.style.display = display;\n const height = target.offsetHeight;\n target.style.overflow = \"hidden\";\n target.style.height = 0;\n target.style.paddingTop = 0;\n target.style.paddingBottom = 0;\n target.style.marginTop = 0;\n target.style.marginBottom = 0;\n target.offsetHeight;\n target.style.boxSizing = \"border-box\";\n target.style.transitionProperty = \"height, margin, padding\";\n target.style.transitionDuration = duration + \"ms\";\n target.style.height = height + \"px\";\n target.style.removeProperty(\"padding-top\");\n target.style.removeProperty(\"padding-bottom\");\n target.style.removeProperty(\"margin-top\");\n target.style.removeProperty(\"margin-bottom\");\n slideWatchers[target.id] = setTimeout(() => {\n target.style.removeProperty(\"height\");\n target.style.removeProperty(\"overflow\");\n target.style.removeProperty(\"transition-duration\");\n target.style.removeProperty(\"transition-property\");\n\n if (callback instanceof Function) {\n callback();\n }\n }, duration);\n}\n\n/*\n * Slide Toggle Element\n */\nexport function slideToggle(target, duration = 500, callback) {\n if (window.getComputedStyle(target).display === \"none\") {\n return slideDown(target, duration, callback);\n } else {\n return slideUp(target, duration, callback);\n }\n}\n\n// Load any scripts Asynchronous.\nexport function loadScriptAsync(uri) {\n return new Promise((resolve, reject) => {\n const tag = document.createElement(\"script\");\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n resolve();\n };\n const firstScriptTag = document.getElementsByTagName(\"script\")[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n });\n}\n\n// To detect if the borwser is IE or not.\nexport const isIE = () =>\n !!window.MSInputMethodContext && !!document.documentMode;\n\n/**\n * This function is fot Accordion Toggle block.\n * It's moved here from block level in somecase we need to trigger from different block.\n * @param {array} toggleButtons\n */\nexport const toggleHandler = toggleButtons => {\n // Loop through buttons\n Array.from(toggleButtons).forEach(toggleButton => {\n // Add click event.\n toggleButton.addEventListener(\"click\", function() {\n //Find parent's previous element\n const accordion = this.parentNode.previousElementSibling;\n let buttonText = this.children[1];\n\n let isOpen = accordion.classList.contains(\n \"block-accordion-toggle__items--open\"\n );\n\n if (isOpen) {\n this.classList.remove(\"a-toggle-button--open\");\n accordion.classList.remove(\n \"block-accordion-toggle__items--open\"\n );\n buttonText.innerText = this.dataset.open;\n } else {\n this.classList.add(\"a-toggle-button--open\");\n accordion.classList.add(\"block-accordion-toggle__items--open\");\n buttonText.innerText = this.dataset.close;\n }\n });\n });\n};\n","/* Import Utils */\nimport { elementExists, slideUp, slideDown } from '../util/_utilities';\n\n// Variable that holds all classes used in the script\nconst classes = {\n // Class that is added/removed to set a sub menu as active.\n activeSubmenu: 'rs-navigation__sub--active'\n};\n\n// Variable that holds all elements used in the script\nconst elements = {\n // body Element\n bodyElement: document.body,\n // Header Element\n headerElement: document.querySelector('.rs-header'),\n // Header Element\n headerMainBarElement: document.querySelector('.rs-header__main'),\n // Main Menu Container\n mainMenuElement: document.querySelector('.rs-navigation'),\n // Sub menu container\n subMenuElement: document.querySelector('.rs-navigation__sub'),\n // Top Level Menu Items\n topLevelMenuItems: document.querySelectorAll('.rs-navigation__menu-item')\n};\n\n// Currently open submenu\nconst currentSubMenu = {\n open: false, // Flag if the menu is open or closed.\n id: 1, // Current ID for the active sub menu\n element: '', // Current element for the active sub menu.\n parent: '' // Current main menuelement for the active sub menu.\n};\n\n// Main exportable function. Will call the MobileMenu functionality and the stickyHeader functionality\nexport function siteHeader () {\n // Make sure mainMenu exists.\n if (\n elementExists(elements.headerElement) &&\n elementExists(elements.mainMenuElement)\n ) {\n // elements.subMenu is required for the logic to work\n if (elementExists(elements.subMenuElement)) {\n // Desktop Menu Functions\n setupDesktopSubMenu();\n }\n }\n}\n\n/* =============================================================================\nDesktop Setup\n============================================================================= */\nfunction setupDesktopSubMenu () {\n // Add event watchers to open/switch the sub menus.\n desktopOpenSubMenu();\n desktopCloseSubMenu();\n}\n\n/* =============================================================================\nDesktop Sub Menu Watchers\n============================================================================= */\n// Adds watchers to each top level menu item to open the menu\nfunction desktopOpenSubMenu () {\n // Check to make sure there are top level menu items.\n if (elements.topLevelMenuItems.length > 0) {\n elements.topLevelMenuItems.forEach(menuItem => {\n // When the mouse enters the list item check to open the sub menu.\n menuItem.addEventListener('mouseenter', event => {\n updateCurrentSubMenu(\n event.target.getAttribute('data-menu-number')\n );\n setActiveTopMenu();\n setActiveSubMenu();\n\n if (\n event.target.classList.contains(\n 'item_has_children'\n ) &&\n (!currentSubMenu.open ||\n elements.subMenuElement.style.display === 'none')\n ) {\n // If the menu is not already open open it now\n openSubMenu();\n }\n });\n // When the mouse leaves the list item, check to remove the active class.\n menuItem.addEventListener('mouseleave', event => {\n if (\n event.target.classList.contains(\n 'item_no_children'\n )\n ) {\n disableActiveTopMenu();\n closeSubMenu();\n currentSubMenu.open = false;\n }\n });\n });\n }\n}\nfunction desktopCloseSubMenu () {\n // Check to make sure there are top level menu items.\n if (elementExists(elements.headerElement)) {\n elements.headerElement.addEventListener('mouseleave', event => {\n // If the menu is open it now, close it\n if (currentSubMenu.open) {\n closeSubMenu();\n disableActiveTopMenu();\n }\n });\n }\n}\n\n/* =============================================================================\nSub Menu Actions\n============================================================================= */\n// Opens the sub menu\nfunction openSubMenu () {\n if (elementExists(elements.subMenuElement)) {\n slideDown(elements.subMenuElement, 250, () => {\n currentSubMenu.open = true;\n });\n }\n}\n// Closes the sub menu\nfunction closeSubMenu () {\n if (elementExists(elements.subMenuElement)) {\n slideUp(elements.subMenuElement, 250, () => {\n currentSubMenu.open = false;\n });\n }\n}\n\n/* =============================================================================\nActive Sub Menu Activation\n============================================================================= */\n// Get the currently open submenu\nfunction updateCurrentSubMenu (subMenuID) {\n if (subMenuID) {\n currentSubMenu.id = subMenuID;\n currentSubMenu.element = elements.subMenuElement.querySelector(\n '[data-menu-number=\"' + subMenuID + '\"]'\n );\n currentSubMenu.parent = elements.mainMenuElement.querySelector(\n '[data-menu-number=\"' + subMenuID + '\"]'\n );\n } else {\n currentSubMenu.id = false;\n currentSubMenu.element = null;\n currentSubMenu.parent = null;\n }\n}\n// Set the active top level menu item (and update the indicator)\nfunction setActiveTopMenu () {\n disableActiveTopMenu();\n\n if (elementExists(currentSubMenu.parent)) {\n currentSubMenu.parent.classList.add(classes.activeSubmenu);\n }\n}\n// Set the active top level menu item (and update the indicator)\nfunction disableActiveTopMenu () {\n // if there are active menus, loop them.\n if (elements.topLevelMenuItems.length > 0) {\n elements.topLevelMenuItems.forEach(activeMenu => {\n activeMenu.classList.remove(classes.activeSubmenu);\n });\n }\n}\n// Handle the logic to transition a sub menu from another one\nfunction setActiveSubMenu () {\n // Check to make sure the current element exsists\n if (elementExists(currentSubMenu.element)) {\n // get active menus.\n const activeMenus = elements.subMenuElement.querySelectorAll(\n '.rs-navigation__sub__menu'\n );\n // if there are active menus, loop them.\n if (activeMenus.length > 0) {\n activeMenus.forEach(activeMenu => {\n activeMenu.classList.remove(classes.activeSubmenu);\n });\n }\n currentSubMenu.element.classList.add(classes.activeSubmenu);\n } else {\n closeSubMenu();\n }\n}\n","const videoControls = {\n handleVideoPlay: (e) => {\n const button = e.currentTarget;\n const video = button.previousElementSibling;\n video.play();\n button.classList.add(\"rs-play--hidden\");\n },\n handleVideoEnd: (e) => {\n const video = e.currentTarget;\n const button = video.nextElementSibling;\n button.classList.remove(\"rs-play--hidden\");\n },\n handleEmbedPlay: (e) => {\n const button = e.currentTarget;\n const iframe = button.previousElementSibling;\n const src = iframe.src.replace(/autoplay=\\d/, \"autoplay=1\");\n iframe.src = src;\n button.classList.add(\"rs-play--hidden\");\n },\n videoInit: (el) => {\n const videoButtons = document.querySelectorAll(el); //.rs-video .rs-play\n\n if (videoButtons) {\n videoButtons.forEach(button => {\n const video = button.previousElementSibling;\n button.addEventListener(\"click\", videoControls.handleVideoPlay);\n\n // If not a looping video and controls aren't enabled, make sure to\n // redisplay play button on video end.\n if (!video.loop && !video.controls) {\n video.addEventListener(\"ended\", videoControls.handleVideoEnd);\n }\n });\n }\n },\n embedInit: (el) => {\n const embedButtons = document.querySelectorAll(el);\n\n if (embedButtons) {\n embedButtons.forEach(button => {\n const video = button.previousElementSibling;\n button.addEventListener(\"click\", videoControls.handleEmbedPlay);\n });\n }\n },\n init: (videoEl, embedEl) => {\n videoControls.videoInit(videoEl);\n videoControls.embedInit(embedEl);\n },\n}\n\nexport default videoControls;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[5]!./main.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[5]!./main.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * Basic route file, duplicate and rename depending if additional routes are required.\n * Note that the body class should match the file name.\n */\n\n/* Import External Modules */\nimport Cookies from 'js-cookie';\n\n/* Import Internal Modules */\nimport Accessibility from '../global/_accessibility';\nimport Navigation from '../global/_navigation';\nimport { siteHeader } from '../global/_site-header';\nimport videoControls from '../component/_video-controls';\n\n/* Import Utils */\nimport { scrollListener, resizeListener } from '../util/_utilities';\n\n/* Import Styles */\nimport styles from '../..//sass/main.scss';\n\nexport default {\n init () {\n // JavaScript to be fired on all pages\n Cookies;\n siteHeader();\n Navigation.init();\n Accessibility.init();\n videoControls.init('.rs-video .rs-play', '.embed-container .rs-play');\n\n // ---------- Mobile Menu ----------\n jQuery('.item_has_children > a').on('click', function (e) {\n e.preventDefault();\n });\n // ---------- Mobile Menu ----------\n\n // ---------- Mobile Menu ----------\n jQuery('.rs-mobile__menu-item.item_has_children > a').on('click', function (e) {\n e.preventDefault();\n jQuery(this).siblings('.rs-mobile__sub-menu').addClass('active');\n jQuery('.rs-mobile__cta').addClass('hide');\n });\n jQuery('.rs-mobile__back').on('click', function () {\n jQuery(this).closest('.rs-mobile__sub-menu').removeClass('active');\n jQuery('.rs-mobile__cta').removeClass('hide');\n });\n // ---------- Mobile Menu ----------\n },\n finalize () {\n // JavaScript to be fired on all pages, after page specific JS is fired\n }\n};\n","/**\n * Homepage specific routing.\n */\n\n/* Import External Modules */\n\n/* Import Internal Modules */\n\n/* Import Utils */\n\nexport default {\n init() {\n // JavaScript to be fired on all pages\n },\n finalize() {\n // JavaScript to be fired on all pages, after page specific JS is fired\n },\n};","import camelCase from './_camelCase';\n\n/**\n * DOM-based Routing\n *\n * Based on {@link http://goo.gl/EUTi53|Markup-based Unobtrusive Comprehensive DOM-ready Execution} by Paul Irish\n *\n * The routing fires all common scripts, followed by the page specific scripts.\n * Add additional events for more control over timing e.g. a finalize event\n */\nclass Router {\n\n /**\n * Create a new Router\n * @param {Object} routes\n */\n constructor(routes) {\n this.routes = routes;\n }\n\n /**\n * Fire Router events\n * @param {string} route DOM-based route derived from body classes (``)\n * @param {string} [event] Events on the route. By default, `init` and `finalize` events are called.\n * @param {string} [arg] Any custom argument to be passed to the event.\n */\n fire(route, event = 'init', arg) {\n document.dispatchEvent(new CustomEvent('routed', {\n bubbles: true,\n detail: {\n route,\n fn: event,\n },\n }));\n\n const fire = route !== '' && this.routes[route] && typeof this.routes[route][event] === 'function';\n if (fire) {\n this.routes[route][event](arg);\n }\n }\n\n /**\n * Automatically load and fire Router events\n *\n * Events are fired in the following order:\n * * common init\n * * page-specific init\n * * page-specific finalize\n * * common finalize\n */\n loadEvents() {\n // Fire common init JS\n this.fire('common');\n\n // Fire page-specific init JS, and then finalize JS\n document.body.className\n .toLowerCase()\n .replace(/-/g, '_')\n .split(/\\s+/)\n .map(camelCase)\n .forEach((className) => {\n this.fire(className);\n this.fire(className, 'finalize');\n });\n\n // Fire common finalize JS\n this.fire('common', 'finalize');\n }\n}\n\nexport default Router;","/**\n * the most terrible camelizer on the internet, guaranteed!\n * @param {string} str String that isn't camel-case, e.g., CAMeL_CaSEiS-harD\n * @return {string} String converted to camel-case, e.g., camelCaseIsHard\n */\nexport default str => `${str.charAt(0).toLowerCase()}${str.replace(/[\\W_]/g, '|').split('|')\n .map(part => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join('')\n .slice(1)}`;","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nc = undefined;","import Router from './util/Router';\n\n// Routes, hyphens should be switched to camelCase\nimport common from './routes/common';\nimport home from './routes/home';\n\n/** Populate Router instance with DOM routes */\nconst routes = new Router({\n common,\n home\n});\n\n// Load Events\njQuery(document).ready(() => routes.loadEvents());\n"],"names":["target","i","arguments","length","source","key","init","converter","defaultAttributes","set","name","value","attributes","document","expires","Date","now","toUTCString","encodeURIComponent","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","Object","create","get","cookies","jar","parts","slice","join","found","read","e","remove","withAttributes","this","withConverter","freeze","path","Accessibility","handleFirstTab","keyCode","body","classList","add","window","removeEventListener","test","navigator","userAgent","getElementById","addEventListener","element","id","location","hash","substring","tagName","tabIndex","focus","Navigation","mobile","menuToggle","mobileMenuItem","querySelectorAll","helloBar","querySelector","masthead","nav","setMobileMenuOffset","style","top","offsetHeight","mobileMenuOffsetObserver","MutationObserver","mutations","forEach","mutation","type","contains","observe","attributeFilter","Array","from","menuItem","_this","allNavs","header","deadLinks","link","preventDefault","requestAnimationFrame","curScrollY","lastScrollY","scrollY","onScroll","rafLoop","elementExists","slideWatchers","classes","elements","bodyElement","headerElement","headerMainBarElement","mainMenuElement","subMenuElement","topLevelMenuItems","currentSubMenu","open","parent","siteHeader","event","subMenuID","getAttribute","disableActiveTopMenu","activeMenus","activeMenu","closeSubMenu","setActiveSubMenu","display","duration","undefined","callback","clearTimeout","removeProperty","getComputedStyle","height","overflow","paddingTop","paddingBottom","marginTop","marginBottom","boxSizing","transitionProperty","transitionDuration","setTimeout","Function","slideDown","slideUp","videoControls","handleVideoPlay","button","currentTarget","previousElementSibling","play","handleVideoEnd","nextElementSibling","handleEmbedPlay","iframe","src","videoInit","el","videoButtons","video","loop","controls","embedInit","embedButtons","videoEl","embedEl","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","jQuery","on","siblings","addClass","closest","removeClass","finalize","Router","routes","_classCallCheck","route","arg","dispatchEvent","CustomEvent","bubbles","detail","fn","fire","className","toLowerCase","map","camelCase","str","concat","charAt","part","toUpperCase","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","list","idCountMap","identifiers","item","base","count","indexByIdentifier","obj","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","push","api","update","newObj","module","exports","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","head","getTarget","Error","appendChild","createElement","styleElement","nonce","setAttribute","needLayer","btoa","unescape","JSON","stringify","apply","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","prop","prototype","hasOwnProperty","call","nc","common","home","ready","loadEvents"],"sourceRoot":""}