{"version":3,"sources":["webpack:///./Scripts/Pearson/vendor/siema/siema.js","webpack:///./Scripts/Pearson/carousels/carousel.ts"],"names":["Siema","options","_this","this","_classCallCheck","config","mergeSettings","selector","document","querySelector","Error","resolveSlidesNumber","selectorWidth","offsetWidth","innerElements","slice","call","children","currentSlide","loop","startIndex","length","Math","max","min","perPage","transformProperty","webkitOrNot","forEach","method","bind","init","window","addEventListener","resizeHandler","draggable","pointerDown","drag","startX","endX","startY","letItGo","preventClick","touchstartHandler","touchendHandler","touchmoveHandler","mousedownHandler","mouseupHandler","mouseleaveHandler","mousemoveHandler","clickHandler","removeEventListener","attachEvents","style","overflow","direction","rtl","buildSliderFrame","onInit","widthItem","itemsToBuild","sliderFrame","createElement","sliderFrameElementType","className","sliderFrameClassName","width","concat","enableTransition","cursor","docFragment","createDocumentFragment","i","element","buildSliderFrameItem","cloneNode","appendChild","innerHTML","slideToCurrent","elm","elementContainer","sliderFrameItemElementType","sliderFrameItemClassName","cssFloat","float","_typeof","viewport","innerWidth","howManySlides","arguments","undefined","callback","beforeChange","disableTransition","mirrorSlideIndex","moveTo","offset","dragDistance","onChange","webkitTransition","easing","transition","duration","index","_this2","requestAnimationFrame","movement","movementDistance","abs","howManySliderToSlide","multipleDrag","ceil","slideToNegativeClone","slideToPositiveClone","threshold","prev","next","e","indexOf","target","nodeName","stopPropagation","touches","pageX","pageY","updateAfterDrag","clearDrag","preventDefault","currentOffset","dragOffset","lowerIndex","lastItem","splice","item","shouldItShift","insert","restoreMarkup","detachEvents","slides","removeAttribute","settings","userSttings","attrname","documentElement","transform","container","USER_OPTIONS","querySelectorAll","_forEach","default","slide","setAttribute","label","textContent","trim","carousel","_siema","__assign","DEFAULT_OPTIONS","remove","destroy","carousels","filter","c","push","_debounce","_interopRequireDefault","__webpack_require__","_delegatedEvents","_dataLayerPush","SIEMA_NAVIGATION_SELECTOR","SIEMA_PREV_BUTTON_SELECTOR","SIEMA_NEXT_BUTTON_SELECTOR","SIEMA_INDEX_CONTAINER","CAROUSEL_ACTIVE_CLASSNAME","1024","768","425","navigator","maxTouchPoints","msMaxTouchPoints","DocumentTouch","displayButtons","updateFade","initFade","el","removeOverflow","centerSlides","goToSlideOnFocus","initIndexNavigation","navigation","closest","paginationElements","dots","updatePagination","hidden","initPagination","displayCaption","indexLabel","event","Arrow","vehicles","data","LOCATION_HEADING","locationHeading","terminal","level","pillar","GarageLabel","Level","LevelLabel","replace","Pillar","PillarLabel","toLowerCase","displayLocationHeading","onResize","parentElement","classList","add","activateSlides","buttons","button","HTMLElement","current","indexContainer","display","moveCarouselBack","filteredCarousels","contains","currentTarget","moveCarouselForward","prevButton","nextButton","calculateButtonPositions","toggleElementActiveState","active","tabIndex","CAROUSEL_PICTURE_SELECTOR","DUAL_PANEL_CAROUSEL","isInDualPanel","OVERLAY","isInOverlay","cardTopPadding","parseInt","getComputedStyle","getPropertyValue","picture","height","getBoundingClientRect","top","slideFigCaption","panel","placeholder","marginLeft","marginRight","on"],"mappings":"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","file":"book-taxi-limo~carousel-curator-explorer~carousel-dual-panel~carousel-media-objects~find-my-vehicle-~c9ead806.353da15454a1f6341d79.chunk.gen.js","sourcesContent":["/**\r\n * CUSTOMIZATION. PLEASE READ.\r\n * This library has been customized to allow for customizing the slide frame\r\n * and slide frame item element type.\r\n */\r\n/**\r\n * Hi :-) This is a class representing a Siema.\r\n */\r\nexport default class Siema {\r\n\t/**\r\n\t * Create a Siema.\r\n\t * @param {Object} options - Optional settings object.\r\n\t */\r\n\tconstructor(options) {\r\n\t\t// Merge defaults with user's settings\r\n\t\tthis.config = Siema.mergeSettings(options);\r\n\r\n\t\t// Resolve selector's type\r\n\t\tthis.selector = typeof this.config.selector === 'string' ? document.querySelector(this.config.selector) : this.config.selector;\r\n\r\n\t\t// Early throw if selector doesn't exists\r\n\t\tif (this.selector === null) {\r\n\t\t\tthrow new Error('Something wrong with your selector ðŸ˜');\r\n\t\t}\r\n\r\n\t\t// update perPage number dependable of user value\r\n\t\tthis.resolveSlidesNumber();\r\n\r\n\t\t// Create global references\r\n\t\tthis.selectorWidth = this.selector.offsetWidth;\r\n\t\tthis.innerElements = [].slice.call(this.selector.children);\r\n\t\tthis.currentSlide = this.config.loop ?\r\n\t\t\tthis.config.startIndex % this.innerElements.length :\r\n\t\t\tMath.max(0, Math.min(this.config.startIndex, this.innerElements.length - this.perPage));\r\n\t\tthis.transformProperty = Siema.webkitOrNot();\r\n\r\n\t\t// Bind all event handlers for referencability\r\n\t\t['resizeHandler', 'touchstartHandler', 'touchendHandler', 'touchmoveHandler', 'mousedownHandler', 'mouseupHandler', 'mouseleaveHandler', 'mousemoveHandler', 'clickHandler'].forEach(method => {\r\n\t\t\tthis[method] = this[method].bind(this);\r\n\t\t});\r\n\r\n\t\t// Build markup and apply required styling to elements\r\n\t\tthis.init();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Overrides default settings with custom ones.\r\n\t * @param {Object} options - Optional settings object.\r\n\t * @returns {Object} - Custom Siema settings.\r\n\t */\r\n\tstatic mergeSettings(options) {\r\n\t\tconst settings = {\r\n\t\t\tsliderFrameElementType: 'div',\r\n\t\t\tsliderFrameClassName: 'siema__slide-frame',\r\n\t\t\tsliderFrameItemElementType: 'div',\r\n\t\t\tsliderFrameItemClassName: 'siema__slide-frame-item',\r\n\t\t\tselector: '.siema',\r\n\t\t\tduration: 200,\r\n\t\t\teasing: 'ease-out',\r\n\t\t\tperPage: 1,\r\n\t\t\tstartIndex: 0,\r\n\t\t\tdraggable: true,\r\n\t\t\tmultipleDrag: true,\r\n\t\t\tthreshold: 20,\r\n\t\t\tloop: false,\r\n\t\t\trtl: false,\r\n\t\t\tonInit: () => { },\r\n\t\t\tonChange: () => { },\r\n\t\t};\r\n\r\n\t\tconst userSttings = options;\r\n\t\tfor (const attrname in userSttings) {\r\n\t\t\tsettings[attrname] = userSttings[attrname];\r\n\t\t}\r\n\r\n\t\treturn settings;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Determine if browser supports unprefixed transform property.\r\n\t * Google Chrome since version 26 supports prefix-less transform\r\n\t * @returns {string} - Transform property supported by client.\r\n\t */\r\n\tstatic webkitOrNot() {\r\n\t\tconst style = document.documentElement.style;\r\n\t\tif (typeof style.transform === 'string') {\r\n\t\t\treturn 'transform';\r\n\t\t}\r\n\t\treturn 'WebkitTransform';\r\n\t}\r\n\r\n\t/**\r\n\t * Attaches listeners to required events.\r\n\t */\r\n\tattachEvents() {\r\n\t\t// Resize element on window resize\r\n\t\twindow.addEventListener('resize', this.resizeHandler);\r\n\r\n\t\t// If element is draggable / swipable, add event handlers\r\n\t\tif (this.config.draggable) {\r\n\t\t\t// Keep track pointer hold and dragging distance\r\n\t\t\tthis.pointerDown = false;\r\n\t\t\tthis.drag = {\r\n\t\t\t\tstartX: 0,\r\n\t\t\t\tendX: 0,\r\n\t\t\t\tstartY: 0,\r\n\t\t\t\tletItGo: null,\r\n\t\t\t\tpreventClick: false,\r\n\t\t\t};\r\n\r\n\t\t\t// Touch events\r\n\t\t\tthis.selector.addEventListener('touchstart', this.touchstartHandler);\r\n\t\t\tthis.selector.addEventListener('touchend', this.touchendHandler);\r\n\t\t\tthis.selector.addEventListener('touchmove', this.touchmoveHandler);\r\n\r\n\t\t\t// Mouse events\r\n\t\t\tthis.selector.addEventListener('mousedown', this.mousedownHandler);\r\n\t\t\tthis.selector.addEventListener('mouseup', this.mouseupHandler);\r\n\t\t\tthis.selector.addEventListener('mouseleave', this.mouseleaveHandler);\r\n\t\t\tthis.selector.addEventListener('mousemove', this.mousemoveHandler);\r\n\r\n\t\t\t// Click\r\n\t\t\tthis.selector.addEventListener('click', this.clickHandler);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Detaches listeners from required events.\r\n\t */\r\n\tdetachEvents() {\r\n\t\twindow.removeEventListener('resize', this.resizeHandler);\r\n\t\tthis.selector.removeEventListener('touchstart', this.touchstartHandler);\r\n\t\tthis.selector.removeEventListener('touchend', this.touchendHandler);\r\n\t\tthis.selector.removeEventListener('touchmove', this.touchmoveHandler);\r\n\t\tthis.selector.removeEventListener('mousedown', this.mousedownHandler);\r\n\t\tthis.selector.removeEventListener('mouseup', this.mouseupHandler);\r\n\t\tthis.selector.removeEventListener('mouseleave', this.mouseleaveHandler);\r\n\t\tthis.selector.removeEventListener('mousemove', this.mousemoveHandler);\r\n\t\tthis.selector.removeEventListener('click', this.clickHandler);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Builds the markup and attaches listeners to required events.\r\n\t */\r\n\tinit() {\r\n\t\tthis.attachEvents();\r\n\r\n\t\t// hide everything out of selector's boundaries\r\n\t\tthis.selector.style.overflow = 'hidden';\r\n\r\n\t\t// rtl or ltr\r\n\t\tthis.selector.style.direction = this.config.rtl ? 'rtl' : 'ltr';\r\n\r\n\t\t// build a frame and slide to a currentSlide\r\n\t\tthis.buildSliderFrame();\r\n\r\n\t\tthis.config.onInit.call(this);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Build a sliderFrame and slide to a current item.\r\n\t */\r\n\tbuildSliderFrame() {\r\n\t\tconst widthItem = this.selectorWidth / this.perPage;\r\n\t\tconst itemsToBuild = this.config.loop ? this.innerElements.length + (2 * this.perPage) : this.innerElements.length;\r\n\r\n\t\t// Create frame and apply styling\r\n\t\t/** Customized to change element type and add name. */\r\n\t\tthis.sliderFrame = document.createElement(this.config.sliderFrameElementType);\r\n\t\tthis.sliderFrame.className = this.config.sliderFrameClassName;\r\n\t\tthis.sliderFrame.style.width = `${widthItem * itemsToBuild}px`;\r\n\t\tthis.enableTransition();\r\n\r\n\t\tif (this.config.draggable) {\r\n\t\t\tthis.selector.style.cursor = '-webkit-grab';\r\n\t\t}\r\n\r\n\t\t// Create a document fragment to put slides into it\r\n\t\tconst docFragment = document.createDocumentFragment();\r\n\r\n\t\t// Loop through the slides, add styling and add them to document fragment\r\n\t\tif (this.config.loop) {\r\n\t\t\tfor (let i = this.innerElements.length - this.perPage; i < this.innerElements.length; i++) {\r\n\t\t\t\tconst element = this.buildSliderFrameItem(this.innerElements[i].cloneNode(true));\r\n\t\t\t\tdocFragment.appendChild(element);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (let i = 0; i < this.innerElements.length; i++) {\r\n\t\t\tconst element = this.buildSliderFrameItem(this.innerElements[i]);\r\n\t\t\tdocFragment.appendChild(element);\r\n\t\t}\r\n\t\tif (this.config.loop) {\r\n\t\t\tfor (let i = 0; i < this.perPage; i++) {\r\n\t\t\t\tconst element = this.buildSliderFrameItem(this.innerElements[i].cloneNode(true));\r\n\t\t\t\tdocFragment.appendChild(element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add fragment to the frame\r\n\t\tthis.sliderFrame.appendChild(docFragment);\r\n\r\n\t\t// Clear selector (just in case something is there) and insert a frame\r\n\t\tthis.selector.innerHTML = '';\r\n\t\tthis.selector.appendChild(this.sliderFrame);\r\n\r\n\t\t// Go to currently active slide after initial build\r\n\t\tthis.slideToCurrent();\r\n\t}\r\n\r\n\tbuildSliderFrameItem(elm) {\r\n\t\t/** Customized to change element type and add name. */\r\n\t\tconst elementContainer = document.createElement(this.config.sliderFrameItemElementType);\r\n\t\telementContainer.className = this.config.sliderFrameItemClassName;\r\n\t\telementContainer.style.cssFloat = this.config.rtl ? 'right' : 'left';\r\n\t\telementContainer.style.float = this.config.rtl ? 'right' : 'left';\r\n\t\telementContainer.style.width = `${this.config.loop ? 100 / (this.innerElements.length + (this.perPage * 2)) : 100 / (this.innerElements.length)}%`;\r\n\t\telementContainer.appendChild(elm);\r\n\t\treturn elementContainer;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Determinates slides number accordingly to clients viewport.\r\n\t */\r\n\tresolveSlidesNumber() {\r\n\t\tif (typeof this.config.perPage === 'number') {\r\n\t\t\tthis.perPage = this.config.perPage;\r\n\t\t}\r\n\t\telse if (typeof this.config.perPage === 'object') {\r\n\t\t\tthis.perPage = 1;\r\n\t\t\tfor (const viewport in this.config.perPage) {\r\n\t\t\t\tif (window.innerWidth >= viewport) {\r\n\t\t\t\t\tthis.perPage = this.config.perPage[viewport];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Go to previous slide.\r\n\t * @param {number} [howManySlides=1] - How many items to slide backward.\r\n\t * @param {function} callback - Optional callback function.\r\n\t */\r\n\tprev(howManySlides = 1, callback) {\r\n\t\t// early return when there is nothing to slide\r\n\t\tif (this.innerElements.length <= this.perPage) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst beforeChange = this.currentSlide;\r\n\r\n\t\tif (this.config.loop) {\r\n\t\t\tconst isNewIndexClone = this.currentSlide - howManySlides < 0;\r\n\t\t\tif (isNewIndexClone) {\r\n\t\t\t\tthis.disableTransition();\r\n\r\n\t\t\t\tconst mirrorSlideIndex = this.currentSlide + this.innerElements.length;\r\n\t\t\t\tconst mirrorSlideIndexOffset = this.perPage;\r\n\t\t\t\tconst moveTo = mirrorSlideIndex + mirrorSlideIndexOffset;\r\n\t\t\t\tconst offset = (this.config.rtl ? 1 : -1) * moveTo * (this.selectorWidth / this.perPage);\r\n\t\t\t\tconst dragDistance = this.config.draggable ? this.drag.endX - this.drag.startX : 0;\r\n\r\n\t\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${offset + dragDistance}px, 0, 0)`;\r\n\t\t\t\tthis.currentSlide = mirrorSlideIndex - howManySlides;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.currentSlide = this.currentSlide - howManySlides;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.currentSlide = Math.max(this.currentSlide - howManySlides, 0);\r\n\t\t}\r\n\r\n\t\tif (beforeChange !== this.currentSlide) {\r\n\t\t\tthis.slideToCurrent(this.config.loop);\r\n\t\t\tthis.config.onChange.call(this);\r\n\t\t\tif (callback) {\r\n\t\t\t\tcallback.call(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Go to next slide.\r\n\t * @param {number} [howManySlides=1] - How many items to slide forward.\r\n\t * @param {function} callback - Optional callback function.\r\n\t */\r\n\tnext(howManySlides = 1, callback) {\r\n\t\t// early return when there is nothing to slide\r\n\t\tif (this.innerElements.length <= this.perPage) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst beforeChange = this.currentSlide;\r\n\r\n\t\tif (this.config.loop) {\r\n\t\t\tconst isNewIndexClone = this.currentSlide + howManySlides > this.innerElements.length - this.perPage;\r\n\t\t\tif (isNewIndexClone) {\r\n\t\t\t\tthis.disableTransition();\r\n\r\n\t\t\t\tconst mirrorSlideIndex = this.currentSlide - this.innerElements.length;\r\n\t\t\t\tconst mirrorSlideIndexOffset = this.perPage;\r\n\t\t\t\tconst moveTo = mirrorSlideIndex + mirrorSlideIndexOffset;\r\n\t\t\t\tconst offset = (this.config.rtl ? 1 : -1) * moveTo * (this.selectorWidth / this.perPage);\r\n\t\t\t\tconst dragDistance = this.config.draggable ? this.drag.endX - this.drag.startX : 0;\r\n\r\n\t\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${offset + dragDistance}px, 0, 0)`;\r\n\t\t\t\tthis.currentSlide = mirrorSlideIndex + howManySlides;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.currentSlide = this.currentSlide + howManySlides;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.currentSlide = Math.min(this.currentSlide + howManySlides, this.innerElements.length - this.perPage);\r\n\t\t}\r\n\t\tif (beforeChange !== this.currentSlide) {\r\n\t\t\tthis.slideToCurrent(this.config.loop);\r\n\t\t\tthis.config.onChange.call(this);\r\n\t\t\tif (callback) {\r\n\t\t\t\tcallback.call(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Disable transition on sliderFrame.\r\n\t */\r\n\tdisableTransition() {\r\n\t\tthis.sliderFrame.style.webkitTransition = `all 0ms ${this.config.easing}`;\r\n\t\tthis.sliderFrame.style.transition = `all 0ms ${this.config.easing}`;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Enable transition on sliderFrame.\r\n\t */\r\n\tenableTransition() {\r\n\t\tthis.sliderFrame.style.webkitTransition = `all ${this.config.duration}ms ${this.config.easing}`;\r\n\t\tthis.sliderFrame.style.transition = `all ${this.config.duration}ms ${this.config.easing}`;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Go to slide with particular index\r\n\t * @param {number} index - Item index to slide to.\r\n\t * @param {function} callback - Optional callback function.\r\n\t */\r\n\tgoTo(index, callback) {\r\n\t\tif (this.innerElements.length <= this.perPage) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst beforeChange = this.currentSlide;\r\n\t\tthis.currentSlide = this.config.loop ?\r\n\t\t\tindex % this.innerElements.length :\r\n\t\t\tMath.min(Math.max(index, 0), this.innerElements.length - this.perPage);\r\n\t\tif (beforeChange !== this.currentSlide) {\r\n\t\t\tthis.slideToCurrent();\r\n\t\t\tthis.config.onChange.call(this);\r\n\t\t\tif (callback) {\r\n\t\t\t\tcallback.call(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Moves sliders frame to position of currently active slide\r\n\t */\r\n\tslideToCurrent(enableTransition) {\r\n\t\tconst currentSlide = this.config.loop ? this.currentSlide + this.perPage : this.currentSlide;\r\n\t\tconst offset = (this.config.rtl ? 1 : -1) * currentSlide * (this.selectorWidth / this.perPage);\r\n\r\n\t\tif (enableTransition) {\r\n\t\t\t// This one is tricky, I know but this is a perfect explanation:\r\n\t\t\t// https://youtu.be/cCOL7MC4Pl0\r\n\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\tthis.enableTransition();\r\n\t\t\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${offset}px, 0, 0)`;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${offset}px, 0, 0)`;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Recalculate drag /swipe event and reposition the frame of a slider\r\n\t */\r\n\tupdateAfterDrag() {\r\n\t\tconst movement = (this.config.rtl ? -1 : 1) * (this.drag.endX - this.drag.startX);\r\n\t\tconst movementDistance = Math.abs(movement);\r\n\t\tconst howManySliderToSlide = this.config.multipleDrag ? Math.ceil(movementDistance / (this.selectorWidth / this.perPage)) : 1;\r\n\r\n\t\tconst slideToNegativeClone = movement > 0 && this.currentSlide - howManySliderToSlide < 0;\r\n\t\tconst slideToPositiveClone = movement < 0 && this.currentSlide + howManySliderToSlide > this.innerElements.length - this.perPage;\r\n\r\n\t\tif (movement > 0 && movementDistance > this.config.threshold && this.innerElements.length > this.perPage) {\r\n\t\t\tthis.prev(howManySliderToSlide);\r\n\t\t}\r\n\t\telse if (movement < 0 && movementDistance > this.config.threshold && this.innerElements.length > this.perPage) {\r\n\t\t\tthis.next(howManySliderToSlide);\r\n\t\t}\r\n\t\tthis.slideToCurrent(slideToNegativeClone || slideToPositiveClone);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * When window resizes, resize slider components as well\r\n\t */\r\n\tresizeHandler() {\r\n\t\t// update perPage number dependable of user value\r\n\t\tthis.resolveSlidesNumber();\r\n\r\n\t\t// relcalculate currentSlide\r\n\t\t// prevent hiding items when browser width increases\r\n\t\tif (this.currentSlide + this.perPage > this.innerElements.length) {\r\n\t\t\tthis.currentSlide = this.innerElements.length <= this.perPage ? 0 : this.innerElements.length - this.perPage;\r\n\t\t}\r\n\r\n\t\tthis.selectorWidth = this.selector.offsetWidth;\r\n\r\n\t\tthis.buildSliderFrame();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Clear drag after touchend and mouseup event\r\n\t */\r\n\tclearDrag() {\r\n\t\tthis.drag = {\r\n\t\t\tstartX: 0,\r\n\t\t\tendX: 0,\r\n\t\t\tstartY: 0,\r\n\t\t\tletItGo: null,\r\n\t\t\tpreventClick: this.drag.preventClick\r\n\t\t};\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * touchstart event handler\r\n\t */\r\n\ttouchstartHandler(e) {\r\n\t\t// Prevent dragging / swiping on inputs, selects and textareas\r\n\t\tconst ignoreSiema = ['TEXTAREA', 'OPTION', 'INPUT', 'SELECT'].indexOf(e.target.nodeName) !== -1;\r\n\t\tif (ignoreSiema) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\t\tthis.pointerDown = true;\r\n\t\tthis.drag.startX = e.touches[0].pageX;\r\n\t\tthis.drag.startY = e.touches[0].pageY;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * touchend event handler\r\n\t */\r\n\ttouchendHandler(e) {\r\n\t\te.stopPropagation();\r\n\t\tthis.pointerDown = false;\r\n\t\tthis.enableTransition();\r\n\t\tif (this.drag.endX) {\r\n\t\t\tthis.updateAfterDrag();\r\n\t\t}\r\n\t\tthis.clearDrag();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * touchmove event handler\r\n\t */\r\n\ttouchmoveHandler(e) {\r\n\t\te.stopPropagation();\r\n\r\n\t\tif (this.drag.letItGo === null) {\r\n\t\t\tthis.drag.letItGo = Math.abs(this.drag.startY - e.touches[0].pageY) < Math.abs(this.drag.startX - e.touches[0].pageX);\r\n\t\t}\r\n\r\n\t\tif (this.pointerDown && this.drag.letItGo) {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.drag.endX = e.touches[0].pageX;\r\n\t\t\tthis.sliderFrame.style.webkitTransition = `all 0ms ${this.config.easing}`;\r\n\t\t\tthis.sliderFrame.style.transition = `all 0ms ${this.config.easing}`;\r\n\r\n\t\t\tconst currentSlide = this.config.loop ? this.currentSlide + this.perPage : this.currentSlide;\r\n\t\t\tconst currentOffset = currentSlide * (this.selectorWidth / this.perPage);\r\n\t\t\tconst dragOffset = (this.drag.endX - this.drag.startX);\r\n\t\t\tconst offset = this.config.rtl ? currentOffset + dragOffset : currentOffset - dragOffset;\r\n\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${(this.config.rtl ? 1 : -1) * offset}px, 0, 0)`;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * mousedown event handler\r\n\t */\r\n\tmousedownHandler(e) {\r\n\t\t// Prevent dragging / swiping on inputs, selects and textareas\r\n\t\tconst ignoreSiema = ['TEXTAREA', 'OPTION', 'INPUT', 'SELECT'].indexOf(e.target.nodeName) !== -1;\r\n\t\tif (ignoreSiema) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tthis.pointerDown = true;\r\n\t\tthis.drag.startX = e.pageX;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * mouseup event handler\r\n\t */\r\n\tmouseupHandler(e) {\r\n\t\te.stopPropagation();\r\n\t\tthis.pointerDown = false;\r\n\t\tthis.selector.style.cursor = '-webkit-grab';\r\n\t\tthis.enableTransition();\r\n\t\tif (this.drag.endX) {\r\n\t\t\tthis.updateAfterDrag();\r\n\t\t}\r\n\t\tthis.clearDrag();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * mousemove event handler\r\n\t */\r\n\tmousemoveHandler(e) {\r\n\t\te.preventDefault();\r\n\t\tif (this.pointerDown) {\r\n\t\t\t// if dragged element is a link\r\n\t\t\t// mark preventClick prop as a true\r\n\t\t\t// to detemine about browser redirection later on\r\n\t\t\tif (e.target.nodeName === 'A') {\r\n\t\t\t\tthis.drag.preventClick = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.drag.endX = e.pageX;\r\n\t\t\tthis.selector.style.cursor = '-webkit-grabbing';\r\n\t\t\tthis.sliderFrame.style.webkitTransition = `all 0ms ${this.config.easing}`;\r\n\t\t\tthis.sliderFrame.style.transition = `all 0ms ${this.config.easing}`;\r\n\r\n\t\t\tconst currentSlide = this.config.loop ? this.currentSlide + this.perPage : this.currentSlide;\r\n\t\t\tconst currentOffset = currentSlide * (this.selectorWidth / this.perPage);\r\n\t\t\tconst dragOffset = (this.drag.endX - this.drag.startX);\r\n\t\t\tconst offset = this.config.rtl ? currentOffset + dragOffset : currentOffset - dragOffset;\r\n\t\t\tthis.sliderFrame.style[this.transformProperty] = `translate3d(${(this.config.rtl ? 1 : -1) * offset}px, 0, 0)`;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * mouseleave event handler\r\n\t */\r\n\tmouseleaveHandler(e) {\r\n\t\tif (this.pointerDown) {\r\n\t\t\tthis.pointerDown = false;\r\n\t\t\tthis.selector.style.cursor = '-webkit-grab';\r\n\t\t\tthis.drag.endX = e.pageX;\r\n\t\t\tthis.drag.preventClick = false;\r\n\t\t\tthis.enableTransition();\r\n\t\t\tthis.updateAfterDrag();\r\n\t\t\tthis.clearDrag();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * click event handler\r\n\t */\r\n\tclickHandler(e) {\r\n\t\t// if the dragged element is a link\r\n\t\t// prevent browsers from folowing the link\r\n\t\tif (this.drag.preventClick) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tthis.drag.preventClick = false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Remove item from carousel.\r\n\t * @param {number} index - Item index to remove.\r\n\t * @param {function} callback - Optional callback to call after remove.\r\n\t */\r\n\tremove(index, callback) {\r\n\t\tif (index < 0 || index >= this.innerElements.length) {\r\n\t\t\tthrow new Error('Item to remove doesn\\'t exist ðŸ˜');\r\n\t\t}\r\n\r\n\t\t// Shift sliderFrame back by one item when:\r\n\t\t// 1. Item with lower index than currenSlide is removed.\r\n\t\t// 2. Last item is removed.\r\n\t\tconst lowerIndex = index < this.currentSlide;\r\n\t\tconst lastItem = this.currentSlide + this.perPage - 1 === index;\r\n\r\n\t\tif (lowerIndex || lastItem) {\r\n\t\t\tthis.currentSlide--;\r\n\t\t}\r\n\r\n\t\tthis.innerElements.splice(index, 1);\r\n\r\n\t\t// build a frame and slide to a currentSlide\r\n\t\tthis.buildSliderFrame();\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(this);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Insert item to carousel at particular index.\r\n\t * @param {HTMLElement} item - Item to insert.\r\n\t * @param {number} index - Index of new new item insertion.\r\n\t * @param {function} callback - Optional callback to call after insert.\r\n\t */\r\n\tinsert(item, index, callback) {\r\n\t\tif (index < 0 || index > this.innerElements.length + 1) {\r\n\t\t\tthrow new Error('Unable to inset it at this index ðŸ˜');\r\n\t\t}\r\n\t\tif (this.innerElements.indexOf(item) !== -1) {\r\n\t\t\tthrow new Error('The same item in a carousel? Really? Nope ðŸ˜');\r\n\t\t}\r\n\r\n\t\t// Avoid shifting content\r\n\t\tconst shouldItShift = index <= this.currentSlide > 0 && this.innerElements.length;\r\n\t\tthis.currentSlide = shouldItShift ? this.currentSlide + 1 : this.currentSlide;\r\n\r\n\t\tthis.innerElements.splice(index, 0, item);\r\n\r\n\t\t// build a frame and slide to a currentSlide\r\n\t\tthis.buildSliderFrame();\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(this);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Prepernd item to carousel.\r\n\t * @param {HTMLElement} item - Item to prepend.\r\n\t * @param {function} callback - Optional callback to call after prepend.\r\n\t */\r\n\tprepend(item, callback) {\r\n\t\tthis.insert(item, 0);\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(this);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Append item to carousel.\r\n\t * @param {HTMLElement} item - Item to append.\r\n\t * @param {function} callback - Optional callback to call after append.\r\n\t */\r\n\tappend(item, callback) {\r\n\t\tthis.insert(item, this.innerElements.length + 1);\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(this);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Removes listeners and optionally restores to initial markup\r\n\t * @param {boolean} restoreMarkup - Determinants about restoring an initial markup.\r\n\t * @param {function} callback - Optional callback function.\r\n\t */\r\n\tdestroy(restoreMarkup = false, callback) {\r\n\t\tthis.detachEvents();\r\n\r\n\t\tthis.selector.style.cursor = 'auto';\r\n\r\n\t\tif (restoreMarkup) {\r\n\t\t\tconst slides = document.createDocumentFragment();\r\n\t\t\tfor (let i = 0; i < this.innerElements.length; i++) {\r\n\t\t\t\tslides.appendChild(this.innerElements[i]);\r\n\t\t\t}\r\n\t\t\tthis.selector.innerHTML = '';\r\n\t\t\tthis.selector.appendChild(slides);\r\n\t\t\tthis.selector.removeAttribute('style');\r\n\t\t}\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(this);\r\n\t\t}\r\n\t}\r\n}\r\n","import debounce from 'lodash/debounce';\r\nimport { on } from 'delegated-events';\r\n\r\nimport forEach from '../utilities/forEach';\r\nimport dataLayerPush from '../utilities/dataLayerPush';\r\nimport setTabIndexes from '../utilities/setTabIndexes';\r\n\r\nimport { IVehicleLocation } from '../forms/find-my-vehicle-form';\r\n\r\nimport Siema from '../vendor/siema/siema';\r\n\r\nconst SIEMA_NAVIGATION_SELECTOR = '[data-carousel-navigation]';\r\nconst SIEMA_PREV_BUTTON_SELECTOR = '[data-carousel-prev-button]';\r\nconst SIEMA_NEXT_BUTTON_SELECTOR = '[data-carousel-next-button]';\r\nconst SIEMA_INDEX_CONTAINER = '.carousel__button-container';\r\nconst CAROUSEL_ACTIVE_CLASSNAME = 'carousel__item--active';\r\n\r\nlet carousels: any[] = [];\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tsliderFrameElementType: 'ul',\r\n\tsliderFrameClassName: 'carousel__slide-frame',\r\n\tsliderFrameItemElementType: 'li',\r\n\tsliderFrameItemClassName: 'carousel__slide-frame-item',\r\n\tduration: 300,\r\n\teasing: 'ease-out',\r\n\tperPage: {\r\n\t\t1024: 3,\r\n\t\t768: 2,\r\n\t\t425: 1\r\n\t},\r\n\tstartIndex: 0,\r\n\tdraggable: 'ontouchstart' in document!.documentElement! || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0 || (window as any).DocumentTouch,\r\n\tmultipleDrag: true,\r\n\tthreshold: 20,\r\n\tloop: false,\r\n\tonInit,\r\n\tonChange\r\n};\r\n\r\nfunction main() {\r\n\twindow.addEventListener('resize', debounce(onResize, 200));\r\n\r\n\taddButtonEventListeners();\r\n}\r\n\r\nexport function initCarousel(container: any, USER_OPTIONS?: any) {\r\n\tconst slides = container.querySelectorAll('.carousel__item');\r\n\r\n\tforEach(slides, (slide: HTMLElement, index: number) => {\r\n\t\tslide.setAttribute('data-analytics-category', 'carousel item');\r\n\t\tslide.setAttribute('data-analytics-order', `${index + 1}/${slides.length}`);\r\n\r\n\t\tconst label = slide.querySelector('.iconic-content__heading');\r\n\r\n\t\tif (label?.textContent) {\r\n\t\t\tslide.setAttribute('data-analytics-label', label.textContent.trim());\r\n\t\t}\r\n\t});\r\n\r\n\tconst carousel = new Siema({ ...DEFAULT_OPTIONS, ...USER_OPTIONS, selector: container });\r\n\r\n\tcarousel.remove = () => {\r\n\t\tcarousel.destroy();\r\n\r\n\t\tcarousels = carousels.filter((c) => c !== carousel);\r\n\t};\r\n\r\n\tcarousels.push(carousel);\r\n\r\n\treturn carousel;\r\n}\r\n\r\n// Event listeners\r\nfunction onInit() {\r\n\t// For all carousels\r\n\tdisplayButtons(this);\r\n\tupdateFade(this);\r\n\tinitFade(this);\r\n\tremoveOverflow(this);\r\n\tcenterSlides(this);\r\n\tgoToSlideOnFocus(this);\r\n\r\n\t// For dual-panel carousels\r\n\tinitIndexNavigation(this);\r\n\tinitPagination(this);\r\n\tdisplayCaption(this);\r\n}\r\n\r\nfunction onChange() {\r\n\tupdateFade(this);\r\n\tinitFade(this);\r\n\r\n\tconst carousel = this.selector.closest('.carousel');\r\n\r\n\tif (carousel) {\r\n\t\tconst navigation = carousel.querySelector(SIEMA_NAVIGATION_SELECTOR);\r\n\r\n\t\tif (navigation) {\r\n\t\t\tupdatePagination(this, navigation);\r\n\t\t}\r\n\r\n\t\tconst indexLabel = carousel.querySelector(SIEMA_INDEX_CONTAINER);\r\n\r\n\t\tif (indexLabel) {\r\n\t\t\tinitIndexNavigation(this);\r\n\t\t}\r\n\t}\r\n\r\n\tdisplayCaption(this);\r\n\r\n\tif (this.drag) {\r\n\t\tif (this.drag.startX < this.drag.endX) {\r\n\t\t\tdataLayerPush({\r\n\t\t\t\tevent: 'Carousel button click',\r\n\t\t\t\t'Arrow': 'Previous'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tdataLayerPush({\r\n\t\t\t\tevent: 'Carousel button click',\r\n\t\t\t\t'Arrow': 'Next'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// For find my vehicle\r\n\tif (this.config.vehicles) {\r\n\t\tdisplayLocationHeading(this.selector, this.config.vehicles, this.currentSlide);\r\n\t}\r\n}\r\n\r\nexport function onResize() {\r\n\tcarousels.filter((c) => c.selector.parentElement != null).forEach((carousel) => {\r\n\t\tinitFade(carousel);\r\n\t\tdisplayButtons(carousel);\r\n\t\tupdateFade(carousel);\r\n\t\tcenterSlides(carousel);\r\n\t});\r\n}\r\n\r\nexport function initFade(el) {\r\n\tconst slides = el.sliderFrame.querySelectorAll('.carousel__item');\r\n\r\n\tif (slides.length > 0) {\r\n\t\t// Reset slides\r\n\t\tforEach(slides, (slide: HTMLElement) => {\r\n\t\t\tslide.classList.remove(CAROUSEL_ACTIVE_CLASSNAME);\r\n\t\t\t//slide.setAttribute('aria-hidden', 'true');\r\n\t\t\t//setTabIndexes(slide, false);\r\n\t\t});\r\n\r\n\t\tactivateSlides(slides, el.currentSlide, el.perPage);\r\n\t}\r\n}\r\n\r\nfunction activateSlides(slides: HTMLElement[], index: number, perPage: number) {\r\n\tfor (let i = index; i < index + perPage; i++) {\r\n\t\tif (slides[i]) {\r\n\t\t\tslides[i].classList.add(CAROUSEL_ACTIVE_CLASSNAME);\r\n\t\t\t//slides[i].setAttribute('aria-hidden', 'false');\r\n\t\t\t//setTabIndexes(slides[i], true);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction initPagination(carousel) {\r\n\tconst navigation = carousel.selector.closest('.carousel').querySelector(SIEMA_NAVIGATION_SELECTOR);\r\n\r\n\tif (!navigation) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (carousel.innerElements.length <= 12 && carousel.innerElements.length > 1) {\r\n\t\tlet paginationElements = '';\r\n\r\n\t\tconst dots = carousel.innerElements.length - carousel.perPage + 1;\r\n\r\n\t\tfor (let i = 0; i < dots; i++) {\r\n\t\t\tpaginationElements += '
';\r\n\t\t}\r\n\r\n\t\tnavigation.innerHTML = paginationElements;\r\n\r\n\t\tupdatePagination(carousel, navigation);\r\n\t} else {\r\n\t\tnavigation.hidden = true;\r\n\t}\r\n}\r\n\r\nfunction updatePagination(carousel, navigation) {\r\n\tconst buttons = navigation.children;\r\n\r\n\tforEach(buttons, (button) => {\r\n\t\tif (button instanceof HTMLElement) {\r\n\t\t\tbutton.classList.remove('carousel-nav__indicator--current');\r\n\t\t}\r\n\t});\r\n\r\n\tconst current = carousel.currentSlide;\r\n\r\n\tif (buttons && buttons[current]) {\r\n\t\tbuttons[current].classList.add('carousel-nav__indicator--current');\r\n\t}\r\n}\r\n\r\nexport function initIndexNavigation(el) {\r\n\tconst indexContainer = el.selector.closest('.carousel').querySelector(SIEMA_INDEX_CONTAINER);\r\n\r\n\tif (indexContainer) {\r\n\t\tconst indexLabel = indexContainer.querySelector('.carousel__index-label');\r\n\r\n\t\tif (indexLabel instanceof HTMLElement && el.innerElements.length > 1) {\r\n\t\t\tindexLabel.innerHTML = `${el.currentSlide + 1} of ${el.innerElements.length}`;\r\n\t\t} else {\r\n\t\t\tindexLabel.style.display = 'none';\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function displayButtons(carousel) {\r\n\t// If carousel has more cards than cardsPerPage\r\n\t// AND if user is on a non touch screen device\r\n\t// OR if screen width is >= 1024px\r\n\t// OR if carousel is in a dual-panel\r\n\t// OR if carousel is in flight journey step AND screen width is > 425px\r\n\tif (carousel.innerElements.length > carousel.perPage &&\r\n\t\t(!('ontouchstart' in document!.documentElement!) ||\r\n\t\t\twindow.innerWidth >= 1024) ||\r\n\t\tcarousel.selector.closest('.carousel--dual-panel') ||\r\n\t\t(carousel.selector.closest('.carousel--flight-journey') && window.innerWidth > 425)) {\r\n\t\tcarousel.selector.closest('.carousel').classList.add('carousel--no-touch');\r\n\t} else {\r\n\t\tcarousel.selector.closest('.carousel').classList.remove('carousel--no-touch');\r\n\t}\r\n}\r\n\r\nfunction moveCarouselBack(e: MouseEvent) {\r\n\tdataLayerPush({\r\n\t\tevent: 'Carousel button click',\r\n\t\t'Arrow': 'Previous'\r\n\t});\r\n\r\n\tconst filteredCarousels = carousels.filter((carousel) => {\r\n\t\tif (carousel && carousel.selector && carousel.selector.parentElement) {\r\n\t\t\treturn carousel.selector.parentElement.contains(e.currentTarget)\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t});\r\n\r\n\tif (filteredCarousels) {\r\n\t\tconst carousel = filteredCarousels[0];\r\n\r\n\t\tcarousel.prev();\r\n\t}\r\n}\r\n\r\nfunction moveCarouselForward(e: MouseEvent) {\r\n\tdataLayerPush({\r\n\t\tevent: 'Carousel button click',\r\n\t\t'Arrow': 'Next'\r\n\t});\r\n\r\n\tconst filteredCarousels = carousels.filter((carousel) => {\r\n\t\tif (carousel && carousel.selector && carousel.selector.parentElement) {\r\n\t\t\treturn carousel.selector.parentElement!.contains(e.currentTarget)\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t});\r\n\r\n\tif (filteredCarousels) {\r\n\t\tconst carousel = filteredCarousels[0];\r\n\r\n\t\tcarousel.next();\r\n\t}\r\n}\r\n\r\nfunction addButtonEventListeners() {\r\n\ton('click', SIEMA_PREV_BUTTON_SELECTOR, moveCarouselBack);\r\n\ton('click', SIEMA_NEXT_BUTTON_SELECTOR, moveCarouselForward);\r\n}\r\n\r\nexport function updateFade(carousel) {\r\n\tconst prevButton = carousel.selector.parentElement!.querySelector(SIEMA_PREV_BUTTON_SELECTOR);\r\n\tconst nextButton = carousel.selector.parentElement!.querySelector(SIEMA_NEXT_BUTTON_SELECTOR);\r\n\r\n\t// If prevButton and nextButton exists\r\n\tif (prevButton && nextButton) {\r\n\t\tcalculateButtonPositions(carousel, prevButton, nextButton);\r\n\r\n\t\t// If number of slides is greater than slides per page\r\n\t\tif (carousel.innerElements.length > carousel.perPage) {\r\n\t\t\t// If current slide index is on first slide, hide previous button\r\n\t\t\tif (carousel.currentSlide === 0) {\r\n\t\t\t\ttoggleElementActiveState(prevButton, false);\r\n\t\t\t\ttoggleElementActiveState(nextButton, true);\r\n\r\n\t\t\t\t// If current slides index is on last slide, hide next button\r\n\t\t\t} else if (carousel.currentSlide === carousel.innerElements.length - carousel.perPage) {\r\n\t\t\t\ttoggleElementActiveState(prevButton, true);\r\n\t\t\t\ttoggleElementActiveState(nextButton, false);\r\n\r\n\t\t\t\t// Else show buttons because current index is in between\r\n\t\t\t} else { // If user is not using touchscreen device\r\n\t\t\t\ttoggleElementActiveState(prevButton, true);\r\n\t\t\t\ttoggleElementActiveState(nextButton, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\ttoggleElementActiveState(prevButton, false);\r\n\t\t\ttoggleElementActiveState(nextButton, false);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction goToSlideOnFocus(carousel) {\r\n\tconst slides = carousel.sliderFrame.querySelectorAll('.carousel__item');\r\n\r\n\tforEach(slides, (slide, index) => {\r\n\t\tslide.addEventListener('focusin', () => {\r\n\t\t\t/*carousel.goTo(index);*/\r\n\r\n\t\t\t//window.scrollTo(0, window.scrollY);\r\n\t\t});\r\n\t})\r\n}\r\n\r\nfunction toggleElementActiveState(element: HTMLElement, active: boolean, CAROUSEL_ACTIVE_CLASSNAME = 'carousel__pager-button--active') {\r\n\tif (active) {\r\n\t\telement.classList.add(CAROUSEL_ACTIVE_CLASSNAME);\r\n\t\telement.tabIndex = 0;\r\n\t\telement.setAttribute('aria-hidden', 'false');\r\n\t} else {\r\n\t\telement.classList.remove(CAROUSEL_ACTIVE_CLASSNAME);\r\n\t\telement.tabIndex = -1;\r\n\t\telement.setAttribute('aria-hidden', 'true');\r\n\t}\r\n}\r\n\r\nfunction removeOverflow(el) {\r\n\tconst slide = el.selector;\r\n\r\n\tif (slide) {\r\n\t\tslide.style.overflow = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * For carousels that contain cards and we need to\r\n * calcultate the card__picture height\r\n * @param el carousel\r\n */\r\nexport function calculateButtonPositions(el, prevButton, nextButton, CAROUSEL_PICTURE_SELECTOR = '[data-carousel-picture]') {\r\n\tconst slide = el.innerElements[0];\r\n\r\n\tif (!slide) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!isInDualPanel(el) && !isInOverlay(el)) {\r\n\t\tconst cardTopPadding = parseInt(window.getComputedStyle(slide).getPropertyValue('padding-top'), 10);\r\n\t\tconst picture = slide.querySelector(CAROUSEL_PICTURE_SELECTOR);\r\n\r\n\t\tif (picture) {\r\n\t\t\tconst height = picture.getBoundingClientRect().height;\r\n\r\n\t\t\tif (prevButton) {\r\n\t\t\t\tprevButton.style.top = `${picture.closest('.card') ? height + (cardTopPadding ? cardTopPadding : 0) : height / 2 + (cardTopPadding ? cardTopPadding : 0)}px`;\r\n\t\t\t}\r\n\r\n\t\t\tif (nextButton) {\r\n\t\t\t\tnextButton.style.top = `${picture.closest('.card') ? height + (cardTopPadding ? cardTopPadding : 0) : height / 2 + (cardTopPadding ? cardTopPadding : 0)}px`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (prevButton) {\r\n\t\t\t\tprevButton.style.top = '50%';\r\n\t\t\t}\r\n\r\n\t\t\tif (nextButton) {\r\n\t\t\t\tnextButton.style.top = '50%';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function displayCaption(el) {\r\n\tconst slides = el.innerElements;\r\n\tconst currentSlide = slides[el.currentSlide];\r\n\r\n\tif (currentSlide) {\r\n\t\tconst slideFigCaption = currentSlide.querySelector('.dual-panel__figcaption');\r\n\r\n\t\tif (slideFigCaption) {\r\n\t\t\tconst panel = currentSlide.closest('.panel__container');\r\n\r\n\t\t\tif (panel) {\r\n\t\t\t\tconst placeholder = panel.querySelector('.dual-panel__placeholder');\r\n\r\n\t\t\t\tif (placeholder) {\r\n\t\t\t\t\tplaceholder.innerHTML = slideFigCaption.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction displayLocationHeading(carousel: HTMLElement, data: IVehicleLocation[], currentSlide: number, LOCATION_HEADING = '[data-find-my-vehicle-overlay-location-heading]') {\r\n\tconst locationHeading = carousel.closest('.overlay-modal')!.querySelector(LOCATION_HEADING);\r\n\r\n\tif (locationHeading) {\r\n\t\tconst terminal = locationHeading.querySelector('[data-find-my-vehicle-overlay-terminal]');\r\n\t\tconst level = locationHeading.querySelector('[data-find-my-vehicle-overlay-level]');\r\n\t\tconst pillar = locationHeading.querySelector('[data-find-my-vehicle-overlay-pillar]');\r\n\r\n\t\tif (terminal) {\r\n\t\t\tif (data[currentSlide].GarageLabel !== '') {\r\n\t\t\t\tterminal.innerHTML = data[currentSlide].GarageLabel;\r\n\t\t\t} else {\r\n\t\t\t\tterminal.innerHTML = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (level) {\r\n\t\t\tif (data[currentSlide].Level !== '') {\r\n\t\t\t\tlevel.innerHTML = `·${data[currentSlide].LevelLabel}`;\r\n\t\t\t\tlevel.innerHTML = level.innerHTML.replace('{{level}}', data[currentSlide].Level);\r\n\t\t\t} else {\r\n\t\t\t\tlevel.innerHTML = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (pillar) {\r\n\t\t\tif (pillar && data[currentSlide].Pillar !== '') {\r\n\t\t\t\tpillar.innerHTML = `·${data[currentSlide].PillarLabel}`;\r\n\t\t\t\tpillar.innerHTML = pillar.innerHTML.replace('{{pillar}}', data[currentSlide].Pillar.toLowerCase());\r\n\t\t\t} else {\r\n\t\t\t\tpillar.innerHTML = '';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction centerSlides(carousel) {\r\n\tif (!carousel.selector.closest('.carousel--flight-journey')) {\r\n\t\tcarousel.sliderFrame.style.marginLeft = 'auto';\r\n\t\tcarousel.sliderFrame.style.marginRight = 'auto';\r\n\t}\r\n}\r\n\r\nfunction isInDualPanel(carousel, DUAL_PANEL_CAROUSEL = '.carousel--dual-panel') {\r\n\treturn carousel.selector.closest(DUAL_PANEL_CAROUSEL);\r\n}\r\n\r\nfunction isInOverlay(carousel, OVERLAY = '.overlay-modal') {\r\n\treturn carousel.selector.closest(OVERLAY);\r\n}\r\n\r\nmain();\r\n"],"sourceRoot":""}