{"version":3,"file":"kiosk.js","sources":["../../resources/modern-javascript/kiosk/components/back-button.js","../../resources/modern-javascript/kiosk/kiosk.js","../../resources/modern-javascript/kiosk.js"],"sourcesContent":["/**\n * Initialize the kiosk back button, everywhere but the\n */\nexport const initKioskBackButton = () => {\n    if (!shouldShowBackButton()) {\n        return;\n    }\n\n    // Create back button\n    const backButton = document.createElement('div')\n    Object.assign(backButton, {\n        className: 'kiosk__back-button'\n    })\n\n    const circle = document.createElement('div')\n    Object.assign(circle, {\n        className: 'kiosk__back-button-circle',\n        innerHTML: '&#8678'\n    })\n\n    backButton.appendChild(circle);\n\n    const textSpan = document.createElement('span')\n    textSpan.textContent = 'Go Back'\n\n    backButton.appendChild(textSpan);\n\n    // Append back button to body\n    document.body.appendChild(backButton)\n\n    document.querySelector('.kiosk__back-button').addEventListener('click', () => {\n        history.back();\n    })\n}\n\n/**\n * Check if the back button should be shown\n *\n * @returns {Boolean}\n */\nconst shouldShowBackButton = () => {\n    // Are we on the homepage?\n    return window.location.pathname == '/' ? false : true\n}\n","import { debounce } from 'lodash-es'\nimport { loadOverlay } from '../features/overlays'\nimport { initKioskBackButton } from './components/back-button'\n\nexport default class Kiosk {\n    /* @var Number  */\n    timeout = 0\n\n    /* @var Number */\n    timer = null\n\n    /**\n     * @param {HTMLElement} elm\n     * @param {Object} options\n     */\n    constructor() {\n        if (!this.getKioskCookie()) {\n            return;\n        }\n\n        initKioskBackButton();\n\n        const timeout = this.getTimeoutValue()\n        if (!timeout) {\n            return;\n        }\n\n        this.timeout = timeout\n        this.addEventListeners()\n    }\n\n    /**\n     * Get cookie by name\n     */\n    getKioskCookie() {\n        const value = `; ${document.cookie}`\n        const parts = value.split(`; kiosk=`)\n        if (parts.length === 2) {\n            const data = decodeURIComponent(parts.pop().split(';').shift())\n            try {\n                return JSON.parse(data)\n            } catch { }\n        }\n\n        return null\n    }\n\n    /**\n     * Get timeout value from cookie\n     */\n    getTimeoutValue() {\n        const KioskCookie = this.getKioskCookie()\n\n        if (KioskCookie && typeof KioskCookie[0] !== 'undefined' && !isNaN(KioskCookie[0])) {\n            return parseInt(KioskCookie[0]) * 1000\n        }\n\n        return null\n    }\n\n    /**\n     * Show the overlay\n     */\n    showOverlay() {\n        loadOverlay('/kiosk/overlay', {\n            modifiers: ['takeover', 'inactivity'],\n        })\n\n        const oneTrustBanner = document.querySelector('#onetrust-consent-sdk');\n        if (oneTrustBanner) {\n            oneTrustBanner.remove();\n        }\n\n        const cookieScriptBanner = document.querySelector('#cookiescript_injected');\n        if (cookieScriptBanner) {\n            cookieScriptBanner.remove();\n        }\n    }\n\n    /**\n     * Debounced timer method\n     */\n    timerReset = debounce(() => {\n        clearTimeout(this.timer)\n        this.timer = setTimeout(this.showOverlay, this.timeout)\n    }, 1000)\n\n    /**\n     * Add event listeners to body/overlay\n     */\n    addEventListeners() {\n        const events = ['click', 'touchstart', 'touchmove', 'wheel', 'pointerdown', 'pointermove', 'scroll', 'keydown', 'mousemove'];\n        events.forEach(event => document.body.addEventListener(event, () => {\n            this.timerReset()\n        }))\n\n        this.timerReset()\n    }\n}\n","import Kiosk from './kiosk/kiosk';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n    new Kiosk();\n});\n"],"names":["shouldShowBackButton","window","location","pathname","Kiosk","constructor","this","timeout","timer","timerReset","debounce","clearTimeout","setTimeout","showOverlay","getKioskCookie","initKioskBackButton","backButton","document","createElement","Object","assign","className","circle","innerHTML","appendChild","textSpan","textContent","body","querySelector","addEventListener","history","back","getTimeoutValue","addEventListeners","parts","cookie","split","length","data","decodeURIComponent","pop","shift","JSON","parse","_unused","KioskCookie","isNaN","parseInt","loadOverlay","modifiers","oneTrustBanner","remove","cookieScriptBanner","forEach","event"],"mappings":"+HAGO,MAqCDA,EAAuBA,IAEU,KAA5BC,OAAOC,SAASC,SCtCZ,MAAMC,EAWjBC,WAAAA,GACI,GAXRC,KACIC,QAAU,EAEdD,KACIE,MAAQ,KAsEZF,KAGIG,WAAaC,GAAS,KAClBC,aAAaL,KAAKE,OAClBF,KAAKE,MAAQI,WAAWN,KAAKO,YAAaP,KAAKC,QAAQ,GACxD,MArEMD,KAAKQ,iBACN,ODduBC,MAC/B,IAAKf,IACD,OAIJ,MAAMgB,EAAaC,SAASC,cAAc,OAC1CC,OAAOC,OAAOJ,EAAY,CACtBK,UAAW,uBAGf,MAAMC,EAASL,SAASC,cAAc,OACtCC,OAAOC,OAAOE,EAAQ,CAClBD,UAAW,4BACXE,UAAW,WAGfP,EAAWQ,YAAYF,GAEvB,MAAMG,EAAWR,SAASC,cAAc,QACxCO,EAASC,YAAc,UAEvBV,EAAWQ,YAAYC,GAGvBR,SAASU,KAAKH,YAAYR,GAE1BC,SAASW,cAAc,uBAAuBC,iBAAiB,SAAS,KACpEC,QAAQC,MAAM,GAChB,ECZEhB,GAEA,MAAMR,EAAUD,KAAK0B,kBAChBzB,IAILD,KAAKC,QAAUA,EACfD,KAAK2B,oBACR,CAKDnB,cAAAA,GACI,MACMoB,EADS,KAAIjB,SAASkB,SACRC,MAAO,YAC3B,GAAqB,IAAjBF,EAAMG,OAAc,CACpB,MAAMC,EAAOC,mBAAmBL,EAAMM,MAAMJ,MAAM,KAAKK,SACvD,IACI,OAAOC,KAAKC,MAAML,EACrB,CAAC,MAAAM,GAAS,CACd,CAED,OAAO,IACV,CAKDZ,eAAAA,GACI,MAAMa,EAAcvC,KAAKQ,iBAEzB,OAAI+B,QAAyC,IAAnBA,EAAY,KAAuBC,MAAMD,EAAY,IACzC,IAA3BE,SAASF,EAAY,IAGzB,IACV,CAKDhC,WAAAA,GACImC,EAAY,iBAAkB,CAC1BC,UAAW,CAAC,WAAY,gBAG5B,MAAMC,EAAiBjC,SAASW,cAAc,yBAC1CsB,GACAA,EAAeC,SAGnB,MAAMC,EAAqBnC,SAASW,cAAc,0BAC9CwB,GACAA,EAAmBD,QAE1B,CAaDlB,iBAAAA,GACmB,CAAC,QAAS,aAAc,YAAa,QAAS,cAAe,cAAe,SAAU,UAAW,aACzGoB,SAAQC,GAASrC,SAASU,KAAKE,iBAAiByB,GAAO,KAC1DhD,KAAKG,YAAY,MAGrBH,KAAKG,YACR,EC/FLR,OAAO4B,iBAAiB,oBAAoB,KACxC,IAAIzB,CAAO"}