{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/scripts/components/accordion.js","webpack:///./src/scripts/components/form.js","webpack:///./src/scripts/components/tabs.js","webpack:///./src/scripts/frontend/autoload-components.js","webpack:///./src/scripts/frontend/core.js","webpack:///./src/scripts/frontend/main.js","webpack:///./src/scripts/frontend/site-header.js","webpack:///./src/scripts/inc/component-functions.js","webpack:///./src/scripts/inc/cookie.js","webpack:///./src/scripts/inc/global.js"],"names":["Accordion","itemsTarget","duration","defaultOpen","allowMultiOpen","args","items","target","querySelectorAll","settings","length","console","warn","setAttribute","index","forEach","item","children","tab","panel","tabID","componentID","panelID","style","display","addEventListener","e","preventDefault","current","querySelector","close","window","getComputedStyle","open","first","classList","add","removeAttribute","removeProperty","height","offsetHeight","overflow","paddingTop","paddingBottom","transitionProperty","transitionDuration","setTimeout","remove","ShiftrComponent","head","Layout","Form","validate","submission","validationClasses","focus","success","error","submitMessageCopy","shiftr","form","fields","submitButton","submitButtonOrgLabel","innerHTML","actionClass","fieldEvents","getStyles","bind","submit","field","fieldWrapper","parentElement","validateErrorActive","nodeName","type","value","checkValidity","clearValidationError","checked","displayValidationError","notice","createEl","validationMessage","appendChild","removeChild","disabled","fetch","ajaxUrl","method","body","FormData","then","res","json","data","response","formName","dataset","shiftrForm","location","href","origin","log","formSubmitOutput","svgDefaultAtts","message","event","clearSubmitMessage","dataLayer","push","autoClearDelay","autoClear","reset","i","cssRequested","stylesheet","theme","removeEventListener","Tabs","tabList","tabPanel","tabs","panels","activateTab","deactivateCurrentTab","currentTab","currentPanel","getAttribute","document","forms","el","f","init","accordions","a","t","host","CookieNotice","toggleButton","groupEntities","visible","hash","toggle","blocks","block","trigger","modal","closeButton","hideModal","videoEl","pause","escHideModal","key","play","triggers","embed","match","videoGallery","facilitiesBlock","facilities","facilitiesContainer","expandBtn","expandCount","generateLoopHeight","slice","reduce","parseFloat","getPropertyValue","textContent","innerWidth","expandButton","loadMoreTrigger","url","URL","loadMoreParams","URLSearchParams","search","loadMoreData","postType","get","loop","page","maxPageReached","Event","orgWording","actionData","append","credentials","fragment","max_num_pages","newPosts","post","dispatchEvent","bookingForm","observer","IntersectionObserver","entries","entry","isIntersecting","boundingClientRect","y","threshold","observe","videoElem","startPlayPromise","undefined","playAttempt","setInterval","clearInterval","firstImage","firstImageRect","getBoundingClientRect","span","top","fixedAwardImage","onscroll","innerHeight","scrollY","offersPopupWrapper","offersPopupBtn","offersPopup","offersPopupClose","popupAutoOpen","iconicFrontpage","videoPlayer","videoControls","audio","videoPLaying","audioPlaying","muted","formTrigger","formModal","formModalClose","siteHeader","pointerEvents","closeFormModal","header","mobileMenuTrigger","mobileMenu","mobileMenuSubMenus","menu","menuSubMenus","headerWrapper","announcementBar","scrollPosition","previousScroll","shouldResizeLogo","displayStickyHeader","scrollPos","pageYOffset","documentElement","scrollTop","vh","contains","resetSvgSiteLogo","passive","banner","toggleBannerVisibility","checkBannerVisibility","bannerForMobile","stopPropagation","openMobileMenu","closeMobileMenu","displayClass","link","subMenuEl","removeOpen","clearTimeout","subMenu","clean","node","n","childNodes","child","nodeType","test","nodeValue","logo","hasChildNodes","svg","viewbox","values","split","viewBoxWidth","viewBoxHeight","mainGroup","ratio","width","getBBox","Math","round","floor","newVewBoxHeight","Error","Object","keys","defaultSettings","parseComponentData","assign","componentSlug","generateComponentID","id","strToBool","str","component","hasAttribute","s","$ID","random","getElementById","cookieName","cookie","indexOf","expiry","Date","setDate","getDate","getElementsByTagName","createElement","vw","m","l","xl","max","x","fn","callback","runOnce","run","allow"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * Imports\n */\nimport ShiftrComponent from '../inc/component-functions'\n\n\n/**\n * Shiftr Component: Accordion\n */\nexport default class Accordion extends ShiftrComponent {\n\n componentSlug() {\n return 'accordion'\n }\n\n defaultSettings() {\n return {\n itemsTarget: '.shiftr-accordion__item',\n duration: 600,\n defaultOpen: 0,\n allowMultiOpen: false\n }\n }\n\n /**\n * We want some extra things to happen here\n */\n constructor( ...args ) {\n super( ...args )\n\n this.items = this.target.querySelectorAll( this.settings.itemsTarget )\n }\n\n /**\n * Initiate the component\n */\n init() {\n \n if ( this.items.length <= 0 ) {\n console.warn( 'This Accordion component contains no items.' )\n return false;\n }\n\n this.target.setAttribute( 'role', 'tablist' )\n\n /**\n * Prepare each item\n */\n let index = 0\n this.items.forEach( item => {\n\n const [ tab, panel ] = item.children\n\n const tabID = `${this.componentID}-tab_${index}`,\n panelID = `${this.componentID}-panel_${index}`\n\n // handle the label\n tab.setAttribute( 'id', tabID )\n tab.setAttribute( 'role', 'tab' )\n tab.setAttribute( 'aria-selected', false )\n tab.setAttribute( 'aria-controls', panelID )\n\n // handle the content\n panel.style.display = 'none'\n panel.setAttribute( 'id', panelID )\n panel.setAttribute( 'role', 'tabpanel' )\n panel.setAttribute( 'aria-labelledby', tabID )\n panel.setAttribute( 'hidden', '' )\n\n tab.addEventListener( 'click', e => {\n e.preventDefault()\n \n if ( ! this.settings.allowMultiOpen ) {\n const current = this.target.querySelector( '.shiftr-accordion__item.is-expanded' ) || null\n \n if ( current != item && current !== null ) {\n this.close( current )\n }\n }\n \n if ( window.getComputedStyle( panel ).display === 'none' ) {\n this.open( item )\n \n } else {\n this.close( item )\n }\n });\n\n index++\n })\n\n /**\n * Set a first open state\n */\n if ( this.settings.defaultOpen >= 0 ) {\n const first = this.items[ this.settings.defaultOpen ]\n \n first.classList.add( 'is-expanded' )\n \n first.children[0].setAttribute( 'aria-selected', true )\n first.children[1].removeAttribute( 'hidden' )\n first.children[1].style.display = 'block'\n }\n }\n\n /**\n * Open an Accordion item\n */\n open( item ) {\n item.classList.add( 'is-expanded' )\n\n const [ tab, panel ] = item.children\n\n // ARIA\n tab.setAttribute( 'aria-selected', 'true' )\n panel.removeAttribute( 'hidden' )\n\n // Styling & transition\n panel.style.removeProperty( 'display' )\n\n const display = window.getComputedStyle( panel ).display\n\n if ( display === 'none' ) {\n display = 'block'\n }\n\n panel.style.display = display\n\n const height = panel.offsetHeight\n\n panel.style.overflow = 'hidden'\n panel.style.height = 0\n panel.style.paddingTop = 0\n panel.style.paddingBottom = 0\n panel.offsetHeight\n panel.style.transitionProperty = \"height, padding\"\n panel.style.transitionDuration = this.settings.duration + 'ms'\n panel.style.height = height + 'px'\n\n panel.style.removeProperty( 'padding-top' )\n panel.style.removeProperty( 'padding-bottom' )\n\n setTimeout( () => {\n panel.style.removeProperty( 'height' )\n panel.style.removeProperty( 'overflow' )\n panel.style.removeProperty( 'transition-duration' )\n panel.style.removeProperty( 'transition-property' )\n }, this.settings.duration )\n }\n\n /**\n * Close an Accordion item\n */\n close( item ) {\n item.classList.remove( 'is-expanded' )\n\n const [ tab, panel ] = item.children\n\n // ARIA\n tab.setAttribute( 'aria-selected', false )\n panel.setAttribute( 'hidden', '' )\n\n // Styling & transition\n panel.style.transitionProperty = 'height, padding'\n panel.style.transitionDuration = this.settings.duration + 'ms'\n panel.style.height = panel.offsetHeight + 'px'\n panel.offsetHeight\n panel.style.overflow = 'hidden'\n panel.style.height = 0\n panel.style.paddingTop = 0\n panel.style.paddingBottom = 0\n\n setTimeout( () => {\n panel.style.display = 'none';\n panel.style.removeProperty( 'height' )\n panel.style.removeProperty( 'padding-top' )\n panel.style.removeProperty( 'padding-bottom' )\n panel.style.removeProperty( 'overflow' )\n panel.style.removeProperty( 'transition-duration' )\n panel.style.removeProperty( 'transition-property' )\n }, this.settings.duration )\n }\n}\n","/**\n * Imports\n */\nimport { Layout, createEl } from '../inc/global'\nimport ShiftrComponent from '../inc/component-functions'\n\nconst { head } = Layout\n\n\n/**\n * class\n */\nexport default class Form extends ShiftrComponent {\n\n /** @var {bool} cssRequested State of the stylesheet download for Form actions */\n cssRequested = false\n\n componentSlug() {\n return 'form'\n }\n\n defaultSettings() {\n return {\n validate: true,\n submission: true,\n validationClasses: {\n focus: 'field-event--focus',\n success: 'field-event--success',\n error: 'field-event--error'\n },\n submitMessageCopy: shiftr.form || {}\n }\n }\n\n\n /**\n * \n */\n constructor( ...args ) {\n super( ...args )\n\n this.fields = this.target.querySelectorAll( 'input:not([type=\"hidden\"]):not([type=\"submit\"]), textarea, select' )\n this.submitButton = this.target.querySelector( '[type=\"submit\"]' )\n this.submitButtonOrgLabel = this.submitButton.innerHTML\n\n this.actionClass = this.settings.validationClasses\n }\n\n\n /**\n * Set up event listeners to all components of the form\n */\n init() {\n this.fieldEvents()\n this.submitButton.addEventListener( 'mouseover', this.getStyles.bind( this ) );\n this.target.addEventListener( 'submit', this.submit.bind( this ) )\n }\n\n\n /**\n * \n */\n fieldEvents() {\n\n const { focus, success, error } = this.actionClass\n\n this.fields.forEach( field => {\n\n const { parentElement: fieldWrapper } = field\n field.validateErrorActive = false\n\n if ( field.nodeName === 'SELECT' ) {\n field.addEventListener( 'change', () => {\n fieldWrapper.classList.add( success )\n })\n\n } else {\n if ( field.type != 'checkbox' && field.type != 'radio' ) {\n \n field.addEventListener( 'focus', () => {\n this.getStyles()\n fieldWrapper.classList.add( focus )\n })\n \n field.addEventListener( 'blur', () => {\n fieldWrapper.classList.remove( focus, success, error )\n \n if ( this.settings.validate && field.value != '' ) {\n \n if ( field.checkValidity() ) {\n fieldWrapper.classList.add( success )\n this.clearValidationError( field )\n \n } else {\n fieldWrapper.classList.add( error )\n }\n }\n })\n\n } else if ( field.type == 'checkbox' || field.type == 'radio' ) {\n\n if ( this.settings.validate ) {\n field.addEventListener( 'change', () => {\n \n if ( field.checked ) {\n fieldWrapper.classList.remove( error )\n this.clearValidationError( field )\n }\n })\n }\n }\n\n if ( this.settings.validate ) {\n field.addEventListener( 'invalid', e => {\n e.preventDefault()\n\n fieldWrapper.classList.add( error )\n if ( ! field.validateErrorActive ) {\n this.displayValidationError( field )\n field.validateErrorActive = true\n }\n })\n }\n }\n })\n }\n\n\n /**\n * Generate and display the validation notice of a field\n * \n * @param {object} field The form field element\n */\n displayValidationError( field ) {\n const { parentElement: fieldWrapper } = field\n const notice = createEl( 'span' )\n\n notice.classList.add( 'validation' )\n notice.innerHTML = field.validationMessage\n fieldWrapper.appendChild( notice )\n\n setTimeout( () => {\n notice.classList.add( 'is-visible' )\n }, 200 )\n\n setTimeout( () => {\n this.clearValidationError( field )\n }, 6000 )\n }\n\n\n /**\n * Clear the validation notice of a field\n * \n * @param {object} fieldWrfieldapper The form field element\n */\n clearValidationError( field ) {\n const { parentElement: fieldWrapper } = field\n const notice = fieldWrapper.querySelector( 'span.validation' )\n \n if ( notice ) {\n notice.classList.remove( 'is-visible' )\n\n setTimeout( () => {\n fieldWrapper.removeChild( notice )\n field.validateErrorActive = false\n }, 400 )\n }\n }\n\n\n /**\n * Send the data to the server for handling\n * \n * @param {object} e The event\n */\n submit( e ) {\n e.preventDefault()\n\n this.target.classList.add( 'send-in-progress' )\n this.submitButton.disabled = true\n this.submitButton.innerHTML = 'Sending...'\n\n fetch( shiftr.ajaxUrl, {\n method: 'post',\n body: new FormData( this.target )\n })\n .then( res => res.json() )\n .then( data => {\n this.target.classList.remove( 'send-in-progress' )\n this.response = data\n // this.displaySubmitMessage( data )\n const formName = this.target.dataset.shiftrForm\n\n location.href = `${ location.origin }/thank-you/${ formName=== 'general' ? 'contact' : formName }`\n })\n .catch( error => {\n console.log( error )\n })\n }\n\n\n /**\n * @param {object} data The body of the response\n */\n displaySubmitMessage( data = {} ) {\n this.target.classList.add( 'submitted' )\n\n const formSubmitOutput = this.target.querySelector( '.form-submit-notice' )\n const svgDefaultAtts = 'xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"'\n\n formSubmitOutput.classList.add( data.success ? 'success' : 'error' )\n\n formSubmitOutput.innerHTML = `\n <div>\n ${ \n data.success ? `\n <svg ${ svgDefaultAtts } fill=\"var(--c-primary)\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.88-11.71L10 14.17l-1.88-1.88c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41l2.59 2.59c.39.39 1.02.39 1.41 0L17.3 9.7c.39-.39.39-1.02 0-1.41-.39-.39-1.03-.39-1.42 0z\"/>\n </svg>\n ` : `\n <svg ${ svgDefaultAtts } fill=\"var(--c-red,#ff0000)\">\n <path d=\"M12 7c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1zm-.01-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm1-3h-2v-2h2v2z\"/>\n </svg>\n `\n }\n <p>${ data.message }</p>\n <button type=\"button\" name=\"reset_form\">Reset form</button>\n </div>\n `\n\n formSubmitOutput.querySelector( 'button[name=\"reset_form\"]' ).addEventListener( 'click', event => {\n event.preventDefault()\n\n this.clearSubmitMessage( data )\n })\n\n /**\n * Support for Google Tag Manager tracking\n */\n if ( data.success ) {\n window.dataLayer = window.dataLayer || []\n window.dataLayer.push({\n 'event': 'formSubmission',\n 'form': this.target.dataset.shiftrForm\n })\n }\n\n setTimeout( () => {\n formSubmitOutput.setAttribute( 'aria-hidden', false )\n\n if ( data.success ) {\n this.submitButton.innerHTML = 'Sent!'\n } else {\n this.submitButton.disabled = false\n this.submitButton.innerHTML = this.submitButtonOrgLabel\n }\n }, 100 )\n\n const autoClearDelay = data.success ? 20000 : 10000\n\n var autoClear = setTimeout( () => {\n this.clearSubmitMessage( data )\n }, autoClearDelay )\n }\n\n\n /**\n * @param {object} message The message wrapper element\n * @param {string} data The server response\n */\n clearSubmitMessage( data ) {\n\n if ( data.success ) {\n const { success, error } = this.actionClass\n\n this.target.reset()\n\n // Empty all fields of values\n for ( var i = 0; i < this.fields.length; i++ ) {\n const field = this.fields[i]\n\n if ( field.nodeName === 'SELECT' || ( field.type != 'checkbox' && field.type != 'radio' ) ) {\n field.parentElement.classList.remove( success, error )\n }\n }\n }\n\n setTimeout( () => {\n this.target.classList.remove( 'submitted' )\n this.target.querySelector( '.form-submit-output' ).setAttribute( 'aria-hidden', true )\n }, 100 )\n \n /**\n * Enabling the button again is the very last thing we need to do\n */\n this.submitButton.disabled = false\n this.submitButton.innerHTML = this.submitButtonOrgLabel\n }\n\n\n /**\n * Request the stylesheet for Form interactions\n */\n getStyles() {\n if ( ! this.cssRequested ) {\n const stylesheet = createEl( 'link' );\n stylesheet.setAttribute( 'rel', 'stylesheet' );\n stylesheet.setAttribute( 'href', `${shiftr.theme}/assets/styles/form.css` );\n stylesheet.setAttribute( 'type', 'text/css' );\n head.appendChild( stylesheet );\n\n this.cssRequested = true;\n }\n\n this.submitButton.removeEventListener( 'mouseover', this.getStyles );\n }\n}\n","/**\n * Imports\n */\nimport ShiftrComponent from '../inc/component-functions'\n\n\n/**\n * Shiftr Component: Tabs\n */\nexport default class Tabs extends ShiftrComponent {\n\n componentSlug() {\n return 'tabs'\n }\n\n defaultSettings() {\n return {\n tabList: '.shiftr-tabs__tab',\n tabPanel: '.shiftr-tabs__panel'\n }\n }\n\n /**\n * We want some extra things to happen here\n */\n constructor( ...args ) {\n super( ...args )\n\n this.tabs = this.target.querySelectorAll( this.settings.tabList )\n this.panels = this.target.querySelectorAll( this.settings.tabPanel )\n }\n\n /**\n * Initiate the component\n */\n init() {\n this.target.setAttribute( 'role', 'tablist' )\n\n this.tabs.forEach( ( tab, index ) => {\n const tabID = `${ this.componentID }-tab_${ index }`,\n panelID = `${ this.componentID }-panel_${ index }`\n\n tab.setAttribute( 'id', tabID )\n tab.setAttribute( 'role', 'tab' )\n tab.setAttribute( 'aria-selected', false )\n tab.setAttribute( 'aria-controls', panelID )\n tab.setAttribute( 'tabindex', -1 )\n\n tab.addEventListener( 'click', e => {\n e.preventDefault()\n\n this.activateTab( index )\n })\n })\n\n this.panels.forEach( ( panel, index ) => {\n const tabID = `${ this.componentID }-tab_${ index }`,\n panelID = `${ this.componentID }-panel_${ index }`\n\n panel.setAttribute( 'id', panelID )\n panel.setAttribute( 'role', 'tabpanel' )\n panel.setAttribute( 'aria-labelledby', tabID )\n panel.setAttribute( 'tabindex', 0 )\n })\n\n this.activateTab( 0 )\n }\n\n activateTab( index ) {\n this.deactivateCurrentTab()\n\n const tab = this.target.querySelector( `#${ this.componentID }-tab_${ index }` ),\n panel = this.target.querySelector( `#${ this.componentID }-panel_${ index }` )\n\n tab.removeAttribute( 'tabindex' )\n tab.setAttribute( 'aria-selected', true )\n tab.classList.add( 'is-visible' )\n\n panel.classList.add( 'is-visible' )\n }\n\n deactivateCurrentTab() {\n const currentTab = this.target.querySelector( '.shiftr-tabs__tab[aria-selected=\"true\"]' )\n\n if ( currentTab ) {\n currentTab.classList.remove( 'is-visible' )\n currentTab.setAttribute( 'tabindex', -1 )\n currentTab.setAttribute( 'aria-selected', false )\n\n const currentPanel = this.target.querySelector( `#${ currentTab.getAttribute( 'aria-controls' ) }` )\n\n if ( currentPanel ) {\n currentPanel.classList.remove( 'is-visible' )\n }\n }\n }\n}\n ","/**\n * This file is for auto-loading components only. \n * \n * It targets components by \"data-shiftr-<COMPONENT>\" attribute\n */\nimport Form from '../components/form'\nimport Accordion from '../components/accordion'\nimport Tabs from '../components/tabs'\n\n\n/**\n * Auto-load Form components\n */\nif ( document.querySelector( '[data-shiftr-form]' ) ) {\n const forms = document.querySelectorAll( '[data-shiftr-form]' ) || []\n\n forms.forEach( el => {\n const f = new Form( el )\n f.init()\n })\n}\n\n\n/**\n * Auto-load Accordion components\n */\nif ( document.querySelector( '[data-shiftr-accordion]' ) ) {\n const accordions = document.querySelectorAll( '[data-shiftr-accordion]' ) || []\n \n accordions.forEach( el => {\n const a = new Accordion( el )\n a.init()\n })\n}\n\n\n/**\n * Auto-load Tabs components\n */\n if ( document.querySelector( '[data-shiftr-tabs]' ) ) {\n const tabs = document.querySelectorAll( '[data-shiftr-tabs]' ) || []\n \n tabs.forEach( el => {\n const t = new Tabs( el )\n t.init()\n })\n}\n","/**\n * This core file is for working on the core components \n * of the theme.\n * \n * It's unlikely you would need to alter this file\n */\nimport CookieNotice from '../inc/cookie'\n\n\n/**\n * Load core components\n */\nif ( window.location.host === 'oborishte63.com' ) {\n CookieNotice()\n}\n","/**\n * Footer - Display group entities\n */\n( () => {\n const toggleButton = document.querySelector( '#toggle_group_entities' )\n const groupEntities = document.querySelector( '.group-entities' )\n \n let visible = false\n\n toggleButton.addEventListener( 'click', () => {\n location.hash = 'group'\n\n groupEntities.setAttribute( 'aria-hidden', visible )\n groupEntities.classList.toggle( 'is-visible' )\n\n visible = !visible\n })\n})();\n\n\n/**\n * Video Block\n * \n * Display a modoal containing th video player.\n */\n;( () => {\n const blocks = document.querySelectorAll( '.flexi-block.block--video' )\n\n if ( !blocks?.length ) {\n return\n }\n\n blocks.forEach( block => {\n const trigger = block.querySelector( 'button.video-trigger' )\n const modal = block.querySelector( '.video-modal' )\n const closeButton = modal.querySelector( '.video-modal__close' )\n\n /**\n * Hide the video modal.\n */\n function hideModal() {\n document.body.classList.remove( 'no-scroll', 'overlay-active' )\n modal.classList.remove( 'is-visible' )\n modal.setAttribute( 'arai-hidden', true )\n\n const videoEl = modal.querySelector( 'video' )\n\n if ( videoEl ) {\n videoEl.pause()\n }\n\n setTimeout( () => {\n window.removeEventListener( 'click', hideModal )\n window.removeEventListener( 'keyup', escHideModal )\n }, 100 )\n }\n\n /**\n * Hide the modal by pressing the escape key.\n * \n * @param {KeyboardEvent} event \n */\n function escHideModal( event ) {\n if ( event.key === 'Escape' ) {\n hideModal()\n }\n }\n\n trigger.addEventListener( 'click', () => {\n document.body.classList.add( 'no-scroll', 'overlay-active' )\n modal.classList.add( 'is-visible' )\n modal.setAttribute( 'arai-hidden', false )\n\n const videoEl = modal.querySelector( 'video' )\n\n console.log( videoEl )\n\n if ( videoEl ) {\n videoEl.play()\n }\n\n setTimeout( () => {\n window.addEventListener( 'click', hideModal )\n window.addEventListener( 'keyup', escHideModal )\n }, 100 )\n })\n\n closeButton.addEventListener( 'click', hideModal )\n })\n})();\n\n\n/**\n * Gallery Block (video)\n * \n * Display a modoal containing the video player.\n */\n;( () => {\n const blocks = document.querySelectorAll( '.flexi-block.block--gallery' )\n\n if ( !blocks?.length ) {\n return\n }\n\n blocks.forEach( block => {\n const triggers = block.querySelectorAll( '.video-gallery a' )\n const modal = block.querySelector( '.gallery-video-modal' )\n const closeButton = modal.querySelector( '.video-modal__close' )\n\n /**\n * Hide the video modal.\n */\n function hideModal() {\n document.body.classList.remove( 'no-scroll', 'overlay-active' )\n modal.classList.remove( 'is-visible' )\n modal.setAttribute( 'arai-hidden', true )\n\n const videoEl = modal.querySelector( 'video' )\n\n if ( videoEl ) {\n videoEl.pause()\n }\n\n setTimeout( () => {\n window.removeEventListener( 'click', hideModal )\n window.removeEventListener( 'keyup', escHideModal )\n }, 100 )\n }\n\n /**\n * Hide the modal by pressing the escape key.\n * \n * @param {KeyboardEvent} event \n */\n function escHideModal( event ) {\n if ( event.key === 'Escape' ) {\n hideModal()\n }\n }\n\n triggers.forEach( trigger => {\n trigger.addEventListener( 'click', () => {\n document.body.classList.add( 'no-scroll', 'overlay-active' )\n\n if ( trigger.dataset.embed.match( window.location.host ) ) {\n modal.querySelector( '.iframe-wrapper' ).innerHTML = `\n <video src=\"${ trigger.dataset.embed }\" controls></video>\n `\n } else {\n modal.querySelector( '.iframe-wrapper' ).innerHTML = trigger.dataset.embed\n }\n\n modal.classList.add( 'is-visible' )\n modal.setAttribute( 'arai-hidden', false )\n\n const videoEl = modal.querySelector( 'video' )\n\n if ( videoEl ) {\n videoEl.play()\n }\n \n setTimeout( () => {\n window.addEventListener( 'click', hideModal )\n window.addEventListener( 'keyup', escHideModal )\n }, 100 )\n })\n })\n\n closeButton.addEventListener( 'click', hideModal )\n })\n})();\n\n\n/**\n * Single Gallery\n * \n * Display a modoal containing th video player.\n */\n ;( () => {\n const videoGallery = document.querySelector( '.video-gallery' )\n\n if ( !videoGallery ) {\n return\n }\n\n const triggers = document.querySelectorAll( '.video-gallery a' )\n const modal = document.querySelector( '.gallery-video-modal' )\n const closeButton = modal.querySelector( '.video-modal__close' )\n\n /**\n * Hide the video modal.\n */\n function hideModal() {\n document.body.classList.remove( 'no-scroll', 'overlay-active' )\n modal.classList.remove( 'is-visible' )\n modal.setAttribute( 'arai-hidden', true )\n\n const videoEl = modal.querySelector( 'video' )\n\n if ( videoEl ) {\n videoEl.pause()\n }\n\n setTimeout( () => {\n window.removeEventListener( 'click', hideModal )\n window.removeEventListener( 'keyup', escHideModal )\n }, 100 )\n }\n\n /**\n * Hide the modal by pressing the escape key.\n * \n * @param {KeyboardEvent} event \n */\n function escHideModal( event ) {\n if ( event.key === 'Escape' ) {\n hideModal()\n }\n }\n\n triggers.forEach( trigger => {\n trigger.addEventListener( 'click', () => {\n document.body.classList.add( 'no-scroll', 'overlay-active' )\n console.log( 'hello' )\n \n if ( trigger.dataset.embed.match( window.location.host ) ) {\n modal.querySelector( '.iframe-wrapper' ).innerHTML = `\n <video src=\"${ trigger.dataset.embed }\" controls autoplay></video>\n `\n } else {\n modal.querySelector( '.iframe-wrapper' ).innerHTML = trigger.dataset.embed\n }\n\n modal.classList.add( 'is-visible' )\n modal.setAttribute( 'arai-hidden', false )\n\n const videoEl = modal.querySelector( 'video' )\n\n if ( videoEl ) {\n videoEl.play()\n }\n\n setTimeout( () => {\n window.addEventListener( 'click', hideModal )\n window.addEventListener( 'keyup', escHideModal )\n }, 100 )\n })\n })\n\n closeButton.addEventListener( 'click', hideModal )\n})();\n\n\n/**\n * Facilities Block\n */\n;( () => {\n const facilitiesBlock = document.querySelector( '.block--facilities' )\n\n if ( !facilitiesBlock ) {\n return\n }\n\n const facilities = facilitiesBlock.querySelectorAll( '.facility' )\n const facilitiesContainer = facilitiesBlock.querySelector( '.facilities-container' )\n const expandBtn = facilitiesBlock.querySelector( '.expand-btn' )\n const expandCount = facilitiesBlock.querySelector( '.expand_count' )\n\n\n function generateLoopHeight() {\n if ( facilities.length <= 4 ) {\n return\n }\n\n facilitiesBlock.classList.add( 'expandable' )\n expandBtn.style.display = 'block'\n\n const height = [ ...facilities ].slice( 0, 3 ).reduce( ( value, current, index ) => {\n const style = getComputedStyle( current )\n\n return value + current.offsetHeight + parseFloat( style.getPropertyValue( 'margin-top' ) )\n }, 0 ) - 100\n\n facilitiesContainer.style.height = `${ height }px`\n expandCount.textContent = facilities.length - 3\n }\n\n \n // When page loads set the height of the container\n if( window.innerWidth <= 650 ) {\n generateLoopHeight()\n\n } else {\n facilitiesContainer.style.height = '100%';\n } \n\n\n // Expand Button Event\n const expandButton = ( event ) => {\n facilitiesContainer.style.height = `${ facilitiesContainer.querySelector( 'ul' )?.offsetHeight }px`\n facilitiesBlock.classList.add( 'expanded' )\n event.target.style.display = 'none'\n }\n expandBtn.addEventListener( 'click', expandButton )\n\n\n window.addEventListener( 'resize', event => { \n if( event.target.innerWidth < 650 ) {\n generateLoopHeight()\n\n } else {\n facilitiesBlock.classList.remove( 'expandable' )\n expandBtn.style.display = 'none'\n }\n })\n})();\n\n\n/**\n * Load more posts\n */\n;( () => {\n if ( ! document.querySelector( 'a[href*=\"?post_type\"]' ) ) return\n \n const loadMoreTrigger = document.querySelector( 'a[href*=\"?post_type\"]' )\n\n const url = new URL( loadMoreTrigger.href )\n const loadMoreParams = new URLSearchParams( url.search )\n\n const loadMoreData = {\n postType: loadMoreParams.get( 'post_type' )\n }\n\n const loop = document.querySelector( `ul.${ loadMoreData.postType }s` )\n let page = 1\n let maxPageReached = false\n\n const event = new Event( 'loadmoreposts' );\n\n loadMoreTrigger.addEventListener( 'click', e => {\n /** We're using fetch only, so if it isn't available, just go old school */\n if ( window.fetch ) e.preventDefault()\n\n if ( maxPageReached ) return\n\n // Update wording...\n let orgWording = loadMoreTrigger.innerHTML\n loadMoreTrigger.innerHTML = 'Loading more...'\n\n const actionData = new FormData()\n actionData.append( 'action', 'load_more_posts' )\n actionData.append( 'next_page', page + 1 )\n\n for ( const [ key, value ] of loadMoreParams ) {\n actionData.append( key, value )\n }\n\n fetch( shiftr.ajaxUrl, {\n method: 'POST',\n credentials: 'same-origin',\n body: actionData\n })\n .then( response => response.json() )\n .then( data => {\n page++\n\n loop.innerHTML = loop.innerHTML + ( data?.fragment || '' )\n\n if ( page === data.max_num_pages ) {\n loadMoreTrigger.classList.add( 'max-pages-reached' )\n maxPageReached = true\n }\n\n const newPosts = loop.querySelectorAll( `li.${ loadMoreData.postType }.delay-entry` )\n\n newPosts.forEach( ( post, i ) => {\n setTimeout( () => post.classList.remove( 'delay-entry' ), 50 * ( i + 1 ) )\n })\n\n loadMoreTrigger.innerHTML = orgWording\n\n /**\n * Reset product feature triggers.\n */\n document.body.dispatchEvent( event )\n })\n })\n})();\n\n\n/**\n * Front page sticky booking form.\n */\n;( () => {\n const bookingForm = document.querySelector( '.front-page .hero .booking_form' )\n\n if ( !bookingForm ) {\n return\n }\n\n const observer = new IntersectionObserver( ( entries, observer ) => {\n entries.forEach( entry => {\n if ( entry.isIntersecting ) {\n document.querySelector( 'header.site-header' ).classList.remove( 'display-booking-form' )\n } else if ( entry.boundingClientRect.y < 0 ) {\n document.querySelector( 'header.site-header' ).classList.add( 'display-booking-form' )\n }\n })\n }, { threshold: 1 })\n\n observer.observe( bookingForm )\n})();\n\n\n/**\n * Bypass Autoplay blocking\n * \n * https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide\n */\n;( () => {\n var videoElem = document.querySelector( 'video[autoplay]' )\n\n if ( !videoElem ) {\n return;\n }\n \n var startPlayPromise = videoElem.play()\n\n if ( startPlayPromise !== undefined ) {\n startPlayPromise.catch((error) => {\n // Auto-play was prevented\n let playAttempt = setInterval(() => {\n videoElem.play()\n .then(() => {\n clearInterval(playAttempt);\n })\n .catch((error) => {\n console.log('Unable to play the video, User has not interacted yet.');\n });\n }, 3000);\n }).then(() => {\n console.log('Autoplay successful.');\n });\n }\n})();\n\n\n/**\n * Image Couple Block.\n */\n( () => {\n const blocks = document.querySelectorAll( '.block--image-couple' )\n\n if ( !blocks.length ) {\n return\n }\n\n if ( window.innerWidth >= 650 ) {\n return\n }\n\n blocks.forEach( block => {\n const firstImage = block.querySelector( '.image' )\n const firstImageRect = firstImage.getBoundingClientRect()\n const span = block.querySelector( 'span' )\n\n span.style.top = `${ firstImageRect.height + 10 }px`\n span.style.display = 'block'\n })\n})();\n\n\n/**\n * Hide the Fixed Award Image when you get to the bottom \n * of the page as it covers the footer content\n */\n( () => {\n const fixedAwardImage = document.querySelector( '.iconicsantorini .award-sticky-logo' )\n\n if( ! fixedAwardImage ) return\n\n window.onscroll = function() {\n if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {\n fixedAwardImage.style.display = 'none'\n } else {\n fixedAwardImage.style.display = 'inline-block'\n }\n };\n})();\n\n/**\n * Offers Popup\n */\n(() => {\n const offersPopupWrapper = document.querySelector( '#offers-popup-wrapper' );\n\n if( ! offersPopupWrapper ) return;\n\n const offersPopupBtn = document.querySelector( '#offers-popup-btn' );\n const offersPopup = document.querySelector( '#offers-popup' );\n const offersPopupClose = document.querySelector( '#offers-popup__close' );\n \n\n offersPopupBtn.addEventListener( 'click', function() {\n offersPopup.classList.toggle( 'offers-popup--active' )\n })\n offersPopupClose.addEventListener( 'click', function() {\n offersPopup.classList.remove( 'offers-popup--active' )\n } )\n\n\n /**\n * Show pop up automatically once\n */\n function popupAutoOpen() {\n setTimeout( function() {\n offersPopup.classList.add( 'offers-popup--active' )\n }, 2000);\n }\n popupAutoOpen();\n\n})();\n\n\n/**\n * Hero Video Controls\n */\n( () => {\n const iconicFrontpage = document.querySelector( '.iconicsantorini.front-page' );\n\n if( !iconicFrontpage ) return\n\n const videoPlayer = iconicFrontpage.querySelector( '.hero__feature-video video' );\n\n if( !videoPlayer ) return\n\n const videoControls = document.querySelector( '.video-controls' );\n\n videoControls.style.display = 'block';\n\n const play = videoControls.querySelector( '#play' )\n const audio = videoControls.querySelector( '#sound' )\n\n let videoPLaying = true;\n let audioPlaying = false;\n\n play.addEventListener( 'click',function() {\n play.classList.toggle( 'paused' )\n\n if( videoPLaying == true ) {\n videoPlayer.pause();\n videoPLaying = false;\n } else {\n videoPlayer.play();\n videoPLaying = true;\n }\n })\n\n audio.addEventListener( 'click', function() {\n audio.classList.toggle( 'muted' );\n\n if( audioPlaying == false ) {\n videoPlayer.muted = false ;\n audioPlaying = true;\n } else {\n videoPlayer.muted = true;\n audioPlaying = false;\n }\n })\n\n})();\n\n\n/**\n * Booking Form Modal\n */\n( () => {\n const formTrigger = document.querySelector( '#booking-form-trigger' )\n\n if( !formTrigger ) return\n\n const formModal = document.querySelector( '#booking-form-modal' )\n const formModalClose = document.querySelector( '#booking-form-modal--close' )\n const siteHeader = document.querySelector( '.site-header' )\n const body = document.body\n\n\n formTrigger.addEventListener( 'click', function() {\n formModal.setAttribute( 'aria-hidden', 'false' )\n body.classList.add( 'no-scroll', 'overlay-active' )\n siteHeader.style.pointerEvents = 'none' \n })\n\n formModalClose.addEventListener( 'click', closeFormModal )\n\n function closeFormModal() {\n formModal.setAttribute( 'aria-hidden', 'true' )\n body.classList.remove( 'no-scroll', 'overlay-active' )\n siteHeader.style.pointerEvents = 'auto'\n }\n\n})();\n","/**\n * Control the behaviour of the site header. This includes \n * the hamburger menu and dropdown menus. It would also be where \n * to handle a search bar should one exist.\n */\nimport { Layout, vh } from '../inc/global'\n\n\nconst { header, body } = Layout; // Semi-colon here forces Layout to not be a function...\n\n\n( () => {\n const mobileMenuTrigger = document.querySelector( '#mobile-menu-trigger' ),\n mobileMenu = document.querySelector( '.mobile-menu' ),\n mobileMenuSubMenus = mobileMenu?.querySelectorAll( 'li.has-sub-menu' ) || [],\n menu = document.querySelector( 'header.site-header nav.nav-primary' ),\n menuSubMenus = menu?.querySelectorAll( 'li.has-sub-menu' ) || [],\n headerWrapper = header.parentElement,\n siteHeader = document.querySelector( 'header.site-header' );\n\n \n /**\n * Announcement Bar\n */\n const announcementBar = document.querySelector( '.announcement-bar' )\n let scrollPosition = 0;\n\n if( announcementBar ) {\n siteHeader.style.top = announcementBar.offsetHeight + 'px';\n scrollPosition = announcementBar.offsetHeight;\n }\n\n\n /**\n * Sticky peek-a-boo header\n */\n let previousScroll = 0\n let shouldResizeLogo = true\n function displayStickyHeader() {\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop\n let threshold = vh() / 4\n\n if ( window.innerWidth >= 900 && !document.body.classList.contains( 'front-page' ) ) {\n threshold = 110\n }\n\n /** Sticky header can only be available after the threshold */\n if ( scrollPos >= threshold ) {\n header.classList.add( 'pre-set-sticky' )\n\n setTimeout( () => {\n header.classList.add( 'set-sticky' )\n\n if ( shouldResizeLogo ) {\n resetSvgSiteLogo()\n shouldResizeLogo = false\n }\n }, 50 )\n\n /** Catch scroll up */\n if ( scrollPos < previousScroll ) {\n \n /** Match scroll up against a threshold that must be reached */\n if ( previousScroll > scrollPos + 60 ) {\n if ( shouldResizeLogo ) {\n resetSvgSiteLogo()\n }\n header.classList.add( 'is-visible' )\n body.classList.add( 'header-state-active' )\n } else {\n return\n }\n\n } else {\n header.classList.remove( 'is-visible' )\n body.classList.remove( 'header-state-active' )\n }\n\n } else if ( scrollPos > previousScroll || scrollPos <= scrollPosition ) {\n if ( header.classList.contains( 'pre-set-sticky' ) && !shouldResizeLogo ) {\n setTimeout( () => {\n resetSvgSiteLogo()\n shouldResizeLogo = true\n }, 25 )\n }\n\n header.classList.remove( 'pre-set-sticky', 'set-sticky', 'is-visible' )\n body.classList.remove( 'header-state-active' )\n }\n\n previousScroll = scrollPos\n }\n window.addEventListener( 'scroll', displayStickyHeader, { passive: true } )\n\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n var banner = document.querySelector('.banner');\n // Function to toggle banner visibility based on scroll position\n function toggleBannerVisibility() {\n if (window.scrollY >= 400) {\n banner.style.display = 'flex'; // show the banner\n } else {\n banner.style.display = 'none'; // hide the banner\n }\n }\n // Set the initial state for the banner based on the current scroll position\n toggleBannerVisibility();\n // Update the banner visibility upon scrolling\n window.addEventListener('scroll', toggleBannerVisibility);\n});\n\n\n\n\n\n\ndocument.addEventListener('DOMContentLoaded', function() {\n var banner = document.querySelector('.banner-for-mobile');\n if (!banner) {\n return; // Exit if the banner isn't found on the page.\n }\n function checkBannerVisibility() {\n if (window.scrollY <= 100) { // 100px is the height of your navbar\n banner.style.display = 'none';\n } else {\n banner.style.display = 'block';\n }\n }\n // Initial visibility check\n checkBannerVisibility();\n // Check visibility on scroll\n window.addEventListener('scroll', checkBannerVisibility);\n});\n\t\n\t\n\tfunction toggleBannerVisibility() {\n // Get the header-wrapper element\n var headerWrapper = document.querySelector('.header-wrapper');\n // Get the .banner-for-mobile element\n var bannerForMobile = document.querySelector('.banner-for-mobile');\n // Check if the headerWrapper exists and if it has the 'mobile-menu-active' class\n if (headerWrapper && headerWrapper.classList.contains('mobile-menu-active')) {\n bannerForMobile.style.display = 'none';\n } else {\n bannerForMobile.style.display = 'block';\n }\n}\n// Attach an event listener to the mobile menu trigger button\ndocument.querySelector('#mobile-menu-trigger').addEventListener('click', function() {\n // Allow any immediate class changes to settle. This ensures that the toggleBannerVisibility function\n // reads the updated class state. The delay can be adjusted as needed.\n setTimeout(toggleBannerVisibility, 50);\n});\n\n\n\n\n\n\n /**\n * Mobile menu\n */\n mobileMenu.addEventListener( 'click', e => e.stopPropagation() )\n\n function openMobileMenu( event ) {\n event.stopPropagation()\n\n if ( !headerWrapper.classList.contains( 'mobile-menu-active' ) ) {\n mobileMenuTrigger.querySelector( 'rect:first-child' ).setAttribute( 'transform', 'translate(0 11) rotate(45,18,3)' )\n mobileMenuTrigger.querySelector( 'rect:last-child' ).setAttribute( 'transform', 'translate(0 -11) rotate(-45,18,25)' )\n\n mobileMenu.setAttribute( 'aria-hidden', false )\n headerWrapper.classList.add( 'mobile-menu-active' )\n body.classList.add( 'no-scroll', 'overlay-active' )\n siteHeader.style.top = 0;\n\n setTimeout( () => {\n window.addEventListener( 'click', closeMobileMenu )\n }, 200 )\n } else {\n mobileMenuTrigger.querySelector( 'rect:first-child' ).setAttribute( 'transform', '' )\n mobileMenuTrigger.querySelector( 'rect:last-child' ).setAttribute( 'transform', '' )\n\n mobileMenu.setAttribute( 'aria-hidden', true )\n headerWrapper.classList.remove( 'mobile-menu-active' )\n body.classList.remove( 'no-scroll', 'overlay-active' )\n if( announcementBar ) {\n siteHeader.style.top = announcementBar.offsetHeight + 'px';\n }\n\n setTimeout( () => {\n window.removeEventListener( 'click', closeMobileMenu )\n }, 200 )\n }\n }\n mobileMenuTrigger.addEventListener( 'click', openMobileMenu )\n\n function closeMobileMenu( event ) {\n event.preventDefault()\n\n mobileMenu.setAttribute( 'aria-hidden', true )\n headerWrapper.classList.remove( 'mobile-menu-active' )\n body.classList.remove( 'no-scroll', 'overlay-active' )\n\n setTimeout( () => {\n window.removeEventListener( 'click', closeMobileMenu )\n }, 200 )\n }\n\n\n /**\n * Sub menu event handling\n */\n menu?.classList.add( menuSubMenus.length <= 0 ? 'has-no-sub-menus' : 'has-sub-menus' )\n mobileMenu.querySelector( 'nav' )?.classList.add( mobileMenuSubMenus.length <= 0 ? 'has-no-sub-menus' : 'has-sub-menus' )\n const displayClass = 'is-visible'\n\n // Primary sub-menus\n menuSubMenus.forEach( ({ children, classList }) => {\n const link = children[0],\n subMenuEl = children[1]\n\n let removeOpen\n\n link.addEventListener( 'mouseover', event => {\n event.preventDefault()\n\n clearTimeout( removeOpen )\n\n if ( classList.contains( displayClass ) !== true ) {\n classList.add( displayClass )\n }\n })\n\n link.addEventListener( 'mouseleave', () => {\n removeOpen = setTimeout( () => {\n classList.remove( displayClass )\n }, 200 )\n })\n\n subMenuEl.addEventListener( 'mouseover', () => {\n clearTimeout( removeOpen )\n })\n\n subMenuEl.addEventListener( 'mouseleave', () => {\n removeOpen = setTimeout( () => {\n classList.remove( displayClass )\n }, 200 )\n })\n })\n\n // Mobile sub-menus\n mobileMenuSubMenus.forEach( subMenu => {\n const toggle = subMenu.children[1]\n\n toggle.addEventListener( 'click', event => {\n event.preventDefault()\n subMenu.classList.toggle( displayClass )\n })\n })\n\n /**\n * Remove comments and whitespace-only text nodes.\n */\n function clean(node) {\n for(var n = 0; n < node.childNodes.length; n ++) {\n\n var child = node.childNodes[n];\n if(child.nodeType === 8 || (child.nodeType === 3 && !/\\S/.test(child.nodeValue))) {\n node.removeChild(child);\n n --;\n }\n else if(child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n /**\n * Dynamically size SVG site logo\n */\n function resetSvgSiteLogo() {\n const logo = document.querySelector( '.site-logo' )\n\n if ( !logo ) return\n\n clean( logo )\n\n if( !logo.hasChildNodes() ) return\n\n let svg = logo.children[0]\n\n let viewbox = svg.getAttribute( 'viewBox' ),\n values = viewbox.split( ' ' ),\n viewBoxWidth = parseFloat( values[2] ),\n viewBoxHeight = parseFloat( values[3] ),\n mainGroup = svg.querySelector( 'g' ),\n ratio = viewBoxWidth / viewBoxHeight,\n width = logo.offsetHeight * ratio,\n height = 0\n\n\n ratio = mainGroup.getBBox().width / mainGroup.getBBox().height ?? 1\n\n width = Math.round( Math.floor( logo.offsetHeight * ratio ) * 100 ) / 100 ?? 0\n height = Math.round( Math.floor( width / ratio ) * 100 ) / 100 ?? 0\n\n const newVewBoxHeight = Math.round( Math.floor( viewBoxWidth / ratio ) * 100 ) / 100 ?? 0\n\n svg.setAttribute( 'viewBox', `0 0 ${ viewBoxWidth } ${ newVewBoxHeight }` )\n svg.setAttribute( 'width', width )\n svg.setAttribute( 'height', height )\n }\n resetSvgSiteLogo()\n window.addEventListener( 'resize', resetSvgSiteLogo )\n\n})();\n","/**\n * The parent class to creating Shiftr Components\n */\nclass ShiftrComponent {\n\n componentSlug() {\n return ''\n }\n\n defaultSettings() {\n return {}\n }\n\n /**\n * Assign the target and parse settings\n * \n * @param {string|DOMElement} target The target element \n * @param {object} settings Any settings to override default\n */\n constructor( target, settings = {} ) {\n\n if ( typeof target === 'string' ) {\n this.target = document.querySelector( target ) || false\n } else {\n this.target = target\n }\n\n if ( ! this.target ) {\n throw new Error( 'target is not defined.' )\n }\n\n if ( Object.keys( settings ).length == 0 ) {\n settings = this.defaultSettings()\n }\n\n this.settings = parseComponentData( Object.assign( this.defaultSettings(), settings ), this.target, this.componentSlug() )\n\n this.componentID = generateComponentID( this.target, this.componentSlug() )\n this.target.id = this.componentID\n }\n}\n\n\n/** \n * strToBool\n *\n * Perform regex against string for true|false and return boolean\n *\n * @since 1.0\n *\n * @param str str The string to check against\n * @return bool|str Boolean if match found, string if no match\n */\n\nfunction strToBool( str ) {\n\n if ( str.match( /^true$/i ) ) {\n return true\n\n } else if ( str.match( /^false$/i ) ) {\n return false\n\n } else {\n return str\n }\n}\n\n\n/** \n * parseComponentData\n *\n * For use on parsing Shiftr component settings\n * Override component setting defaults with data attributes\n *\n * @since 1.0\n *\n * @param settings obj The settings of the component\n * @param el Element The component element\n * @param component str The Shiftr component name\n * @return obj The parsed settings\n */\nfunction parseComponentData( settings = {}, el, component = '' ) {\n\n if ( el && el.hasAttribute( `data-shiftr-${component}` ) ) {\n\n Object.keys( settings ).forEach( s => {\n\n if ( el.hasAttribute( `data-${component}-${s}` ) ) {\n settings[s] = strToBool( el.getAttribute( `data-${component}-${s}` ) )\n }\n })\n }\n\n return settings\n}\n\n\n/** \n * generateComponentID\n *\n * For use on generating a random ID for a Shiftr Component\n *\n * @since 1.0\n *\n * @param el Element The component element\n * @param component str The Shiftr component name\n * @return str The ID\n */\nfunction generateComponentID( el, component = '' ) {\n\n // Check if element already has id set\n if ( el.hasAttribute( 'id' ) ) return el.id;\n\n const $ID = `${component}_` + Math.floor( Math.random() * Math.floor( 100 ) )\n\n // Rerun if element with id already exists\n if ( document.getElementById( $ID ) ) generateComponentID( el, component )\n\n return $ID\n}\n\nexport default ShiftrComponent\nexport { strToBool, parseComponentData, generateComponentID }\n ","/**\n * Display the cookie notice if the cookie confirmation cookie\n * is not found.\n */\nimport { createEl } from './global'\n\n\nexport default function CookieNotice() {\n\n const cookieName = 'shiftr_accept_cookie'\n\n if ( document.cookie.indexOf( cookieName ) == -1 ) {\n const el = createEl( 'div' )\n el.classList.add( 'shiftr-cookie-notice' )\n\n el.innerHTML = `\n <div>${ shiftr.cookie.message }</div>\n <button id=\"shiftr-cookie-accept\" class=\"button\">Understood</button>\n `\n\n document.body.appendChild( el )\n\n setTimeout( function() {\n el.classList.add( 'is-visible' )\n }, 1000 )\n\n // Listen for notice acceptance\n document.getElementById( 'shiftr-cookie-accept' ).addEventListener( 'click', e => {\n e.preventDefault()\n\n var expiry = new Date()\n\n expiry.setDate( expiry.getDate() + 30 )\n\n // Set the cookie\n document.cookie = `${cookieName}=${true}; expires=${expiry}; path=/`\n\n\n // Now, remove the notice\n el.classList.remove( 'is-visible' )\n\n setTimeout( () => {\n document.body.removeChild( el )\n }, 1000 )\n\n })\n }\n};\n","/**\n * Core document elements\n */\nconst header = document.querySelector( 'header.site-header' ), \n head = document.getElementsByTagName( 'head' )[0],\n body = document.body;\n\nconst Layout = { header, head, body }\n\n\n/**\n * Wrapper to document.createElement\n * \n * @param {string} el The node tag name\n * @return {HTMLElement} The HTML element\n */\nfunction createEl( el ) {\n\n return document.createElement( el )\n}\n\n\n/**\n * Get the width of the viewport\n * \n * @return {integer} The window.innerWidth\n */\nfunction vw() {\n return window.innerWidth\n}\n\n\n/**\n * Get the height of the viewport\n * \n * @return {integer} The window.innerHeight\n */\nfunction vh() {\n return window.innerHeight\n}\n\n\n/* //// --| Width Breakpoint - the JS equivilant to CSS media queries\n\n * Ensure breakpoint settings match those set in the styles\n*/\n\nconst s = 's';\nconst m = 'm';\nconst l = 'l';\nconst xl = 'xl';\nconst max = 'max';\n\n\n/**\n * CSS media query equivilant to 'min-width'\n * \n * @param {integar|string} width The breakpoint width to match\n * @param {function} fn The function to run when match is met\n * @param {function} callback The function to run when match is not met\n * @param {boolean} runOnce Whether to run only on load\n */\nfunction x( width, fn, callback = () => {}, runOnce = false ) {\n let value\n\n switch ( width ) {\n case s: value = 450; break\n case m: value = 768; break\n case l: value = 1024; break\n case xl: value = 1600; break\n case max: value = 1920; break\n default: value = width\n }\n\n const run = () => {\n let allow = false\n\n if ( vw() >= value ) {\n if ( runOnce && ! allow ) return;\n fn()\n\n allow = false\n\n } else {\n if ( runOnce && allow ) return;\n callback()\n\n allow = true\n } \n }\n\n document.addEventListener( 'DOMContentLoaded', run )\n window.addEventListener( 'resize', run )\n window.addEventListener( 'orientationchange', run )\n}\n\n/**\n * Exports\n */\nexport { Layout, createEl, vw, vh, x }\n"],"sourceRoot":""}