{"version":3,"file":"SkipLink.js","names":["SkipLink","a","setters","Component","default","mix","Event","mediaQuery","Accessibility","execute","with","bindEvents","on","onHeaderStickyEnabled","onHeaderStickyDisabled","afterInit","saveOriginalTabIndex","is","setAltTabIndex","resetOriginalTabIndex","destroy","removeListener","onShow","onHide"],"sources":["components/global/SkipLink.js"],"sourcesContent":["import Component from 'core/Component';\nimport { mix } from 'core/mixwith';\nimport { Event } from 'services/EventEmitter';\nimport { mediaQuery } from 'toolbox/mediaQuery';\nimport Accessibility from 'mixins/Accessibility';\n\n/**\n * This is a description of the SkipLink constructor function.\n * @class\n * @classdesc A \"Skip to content\" component should be placed on each page to help keyboard users navigate the page.\n * This should be the first interactive element on the page.\n * This internal link will take the user directly to the main content.\n * @extends Component\n */\nexport default class SkipLink extends mix(Component).with(Accessibility) {\n    /**\n     * Should contain only event listeners and nothing else\n     * All the event handlers should be into a separated function. No usage of anonyous function\n     */\n    bindEvents() {\n        Event.on('header.sticky.enabled', this.onHeaderStickyEnabled, this);\n        Event.on('header.sticky.disabled', this.onHeaderStickyDisabled, this);\n    }\n\n    /**\n     * After init\n     * Run any script after the component is fully initialized\n     */\n    afterInit() {\n        super.saveOriginalTabIndex();\n    }\n\n    /**\n     * Modify tabindex for consistent TAB navigation when the header becomes sticky\n     */\n    onHeaderStickyEnabled() {\n        if (mediaQuery.is('xlarge')) {\n            super.setAltTabIndex();\n        }\n    }\n\n    /**\n     * Restore tabindex for consistent TAB navigation when the header becomes unsticky\n     */\n    onHeaderStickyDisabled() {\n        if (mediaQuery.is('xlarge')) {\n            super.resetOriginalTabIndex(true);\n        }\n    }\n\n    /**\n     * Destroy is called automatically after the component is being removed from the DOM\n     * You must always destroy the listeners attached to an element to avoid any memory leaks\n     */\n    destroy() {\n        Event.removeListener('header.sticky.enabled', this.onShow, this);\n        Event.removeListener('header.sticky.disabled', this.onHide, this);\n    }\n}\n"],"mappings":"0KAcqBA,CAAQ,QAAAC,CAAA,oBAAAC,OAAA,WAAAD,CAAA,EAdtBE,CAAS,CAAAF,CAAA,CAAAG,OAAA,WAAAH,CAAA,EACPI,CAAG,CAAAJ,CAAA,CAAHI,GAAG,WAAAJ,CAAA,EACHK,CAAK,CAAAL,CAAA,CAALK,KAAK,WAAAL,CAAA,EACLM,CAAU,CAAAN,CAAA,CAAVM,UAAU,WAAAN,CAAA,EACZO,CAAa,CAAAP,CAAA,CAAAG,OAAA,GAAAK,OAAA,SAAAA,CAAA,EAAAR,CAAA,WAUCD,CAAQ,CAAd,aAAuB,CAAAK,CAAG,CAACF,CAAS,CAAC,CAACO,IAAI,CAACF,CAAa,CAAE,CAKrEG,UAAUA,CAAA,CAAG,CACTL,CAAK,CAACM,EAAE,CAAC,uBAAuB,CAAE,IAAI,CAACC,qBAAqB,CAAE,IAAI,CAAC,CACnEP,CAAK,CAACM,EAAE,CAAC,wBAAwB,CAAE,IAAI,CAACE,sBAAsB,CAAE,IAAI,CACxE,CAMAC,SAASA,CAAA,CAAG,CACR,KAAK,CAACC,oBAAoB,CAAC,CAC/B,CAKAH,qBAAqBA,CAAA,CAAG,CAChBN,CAAU,CAACU,EAAE,CAAC,QAAQ,CAAC,EACvB,KAAK,CAACC,cAAc,CAAC,CAE7B,CAKAJ,sBAAsBA,CAAA,CAAG,CACjBP,CAAU,CAACU,EAAE,CAAC,QAAQ,CAAC,EACvB,KAAK,CAACE,qBAAqB,GAAK,CAExC,CAMAC,OAAOA,CAAA,CAAG,CACNd,CAAK,CAACe,cAAc,CAAC,uBAAuB,CAAE,IAAI,CAACC,MAAM,CAAE,IAAI,CAAC,CAChEhB,CAAK,CAACe,cAAc,CAAC,wBAAwB,CAAE,IAAI,CAACE,MAAM,CAAE,IAAI,CACpE,CACJ,CAAC","ignoreList":[]}