{"version":3,"file":"carousel.js","sources":["../src/util/index.js","../src/carousel.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => ({}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase())\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n const evt = document.createEvent('HTMLEvents')\n\n evt.initEvent(TRANSITION_END, true, true)\n element.dispatchEvent(evt)\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes)\n .forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst makeArray = nodeList => {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nexport {\n getjQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n makeArray,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n makeArray,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n}\n\nconst Event = {\n SLIDE: `slide${EVENT_KEY}`,\n SLID: `slid${EVENT_KEY}`,\n KEYDOWN: `keydown${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`,\n TOUCHSTART: `touchstart${EVENT_KEY}`,\n TOUCHMOVE: `touchmove${EVENT_KEY}`,\n TOUCHEND: `touchend${EVENT_KEY}`,\n POINTERDOWN: `pointerdown${EVENT_KEY}`,\n POINTERUP: `pointerup${EVENT_KEY}`,\n DRAG_START: `dragstart${EVENT_KEY}`,\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item',\n POINTER_EVENT: 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n ITEM_IMG: '.carousel-item img',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = SelectorEngine.findOne(Selector.INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(Selector.NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n Direction.NEXT :\n Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n Data.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler\n .on(this._element, Event.KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler\n .on(this._element, Event.MOUSEENTER, event => this.pause(event))\n EventHandler\n .on(this._element, Event.MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n makeArray(SelectorEngine.find(Selector.ITEM_IMG, this._element)).forEach(itemImg => {\n EventHandler.on(itemImg, Event.DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, Event.POINTERDOWN, event => start(event))\n EventHandler.on(this._element, Event.POINTERUP, event => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n EventHandler.on(this._element, Event.TOUCHSTART, event => start(event))\n EventHandler.on(this._element, Event.TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, Event.TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n makeArray(SelectorEngine.find(Selector.ITEM, element.parentNode)) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(Selector.ACTIVE, this._indicatorsElement)\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(ClassName.ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(Selector.ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement &&\n this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n if (this._element.classList.contains(ClassName.SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler\n .one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName)\n nextElement.classList.remove(orderClassName)\n nextElement.classList.add(ClassName.ACTIVE)\n\n activeElement.classList.remove(ClassName.ACTIVE)\n activeElement.classList.remove(orderClassName)\n activeElement.classList.remove(directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(ClassName.ACTIVE)\n nextElement.classList.add(ClassName.ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler\n .on(document, Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, Event.LOAD_DATA_API, () => {\n const carousels = makeArray(SelectorEngine.find(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\nconst $ = getjQuery()\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .carousel to jQuery only if jQuery is present\n */\n/* istanbul ignore if */\nif ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n}\n\nexport default Carousel\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","trim","getElementFromSelector","document","querySelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","evt","createEvent","initEvent","dispatchEvent","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","makeArray","nodeList","slice","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","Event","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CLICK_DATA_API","ClassName","CAROUSEL","ACTIVE","ITEM","POINTER_EVENT","Selector","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_element","_indicatorsElement","SelectorEngine","findOne","_touchSupported","documentElement","navigator","maxTouchPoints","_pointerEvent","Boolean","PointerEvent","MSPointerEvent","_addEventListeners","Data","setData","next","_slide","nextWhenVisible","hidden","prev","event","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","EventHandler","one","direction","dispose","off","removeData","_handleSwipe","absDeltax","Math","abs","on","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","find","itemImg","e","preventDefault","classList","add","target","tagName","which","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","trigger","from","_setActiveIndicatorElement","indicators","i","remove","nextIndicator","children","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","contains","slideEvent","defaultPrevented","nextElementInterval","parseInt","defaultInterval","carouselInterface","data","getData","Manipulator","getDataAttributes","action","TypeError","ride","jQueryInterface","each","dataApiClickHandler","slideIndex","getInstance","carousels","len","$","JQUERY_NO_CONFLICT","fn","Constructor","noConflict"],"mappings":"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"}