{"version":3,"sources":["swipe.js"],"names":["EventHandler","Config","execute","NAME","EVENT_KEY","EVENT_TOUCHSTART","concat","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default","endCallback","leftCallback","rightCallback","DefaultType","Swipe","element","config","_this","_classCallCheck","this","_callSuper","_element","isSupported","_config","_getConfig","_deltaX","_supportPointerEvents","Boolean","window","PointerEvent","_initEvents","_possibleConstructorReturn","_inherits","_createClass","key","value","off","event","_eventIsPointerPenTouch","clientX","touches","_handleSwipe","length","absDeltaX","Math","abs","direction","_this2","on","_start","_end","classList","add","_move","pointerType","get","document","documentElement","navigator","maxTouchPoints"],"mappings":"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","file":"swipe.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n"]}