0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-12 00:08:59 +01:00
Bootstrap/js/dist/carousel.js.map
Mark Otto f6244654a6 dist
2018-09-18 21:35:40 -07:00

1 line
31 KiB
Plaintext

{"version":3,"file":"carousel.js","sources":["../src/carousel.js"],"sourcesContent":["import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const 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 TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const 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 }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\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\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n\n this._addEventListeners()\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 &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\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 (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.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.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 = this._element.querySelector(Selector.ACTIVE_ITEM)\n\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 $(this._element).one(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 $(this._element).off(EVENT_KEY)\n $.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 Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\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 $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\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 ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\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] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\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).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\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 const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(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 = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\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(this, _config)\n $(this).data(DATA_KEY, data)\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 data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\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 return Carousel\n})($)\n\nexport default Carousel\n"],"names":["Carousel","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","interval","keyboard","slide","pause","wrap","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","Event","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","CLICK_DATA_API","ClassName","CAROUSEL","ACTIVE","ITEM","Selector","ACTIVE_ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","element","config","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_element","_indicatorsElement","querySelector","_addEventListeners","next","_slide","nextWhenVisible","document","hidden","is","css","prev","event","Util","triggerTransitionEnd","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","one","direction","dispose","off","removeData","typeCheckConfig","on","_keydown","documentElement","clearTimeout","setTimeout","test","target","tagName","which","preventDefault","parentNode","slice","call","querySelectorAll","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","trigger","_setActiveIndicatorElement","indicators","removeClass","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","Boolean","directionalClassName","orderClassName","hasClass","isDefaultPrevented","slidEvent","reflow","nextElementInterval","parseInt","getAttribute","defaultInterval","transitionDuration","getTransitionDurationFromElement","TRANSITION_END","emulateTransitionEnd","_jQueryInterface","each","data","action","TypeError","_dataApiClickHandler","selector","getSelectorFromElement","slideIndex","window","carousels","i","len","$carousel","Constructor","noConflict"],"mappings":"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"}