{"version":3,"file":"tinyswiper.js","sources":["../src/core/render/dom.ts","../src/core/render/layout.ts","../src/core/options.ts","../src/core/eventHub.ts","../src/core/state/trace.ts","../src/core/state/index.ts","../src/core/render/nextTick.ts","../src/core/render/animation.ts","../src/core/sensor/actions.ts","../src/core/sensor/index.ts","../src/core/env/measure.ts","../src/core/env/limitation.ts","../src/core/env/index.ts","../src/core/render/index.ts","../src/core/state/operations.ts","../src/core/env/element.ts","../src/core/index.ts"],"sourcesContent":["export function addClass (\n el: HTMLElement,\n list: Array | string = []\n): void {\n if (!Array.isArray(list)) list = [list]\n\n list.forEach(clz => (!el.classList.contains(clz) && el.classList.add(clz)))\n}\n\nexport function removeClass (\n el: HTMLElement,\n list: Array | string = []\n): void {\n if (!Array.isArray(list)) list = [list]\n\n list.forEach(clz => (el.classList.contains(clz) && el.classList.remove(clz)))\n}\n\nexport function attachListener (\n el: HTMLElement | Document | Window,\n evtName: string,\n handler: EventListenerOrEventListenerObject,\n opts?: boolean | AddEventListenerOptions\n): void {\n el.addEventListener(evtName, handler, opts)\n}\n\nexport function detachListener (\n el: HTMLElement | Document | Window,\n evtName: string,\n handler: EventListenerOrEventListenerObject\n): void {\n el.removeEventListener(evtName, handler)\n}\n\nexport function removeAttr (\n el: HTMLElement,\n attr: string\n): void {\n el.removeAttribute(attr)\n}\n\nexport function setAttr (\n el: HTMLElement,\n attr: string,\n value = ''\n): HTMLElement {\n el.setAttribute(attr, value)\n return el\n}\n\nexport function setStyle (\n el: HTMLElement,\n style: {[key: string]: string},\n forceRender?: boolean\n): HTMLElement {\n Object.keys(style).forEach(prop => {\n // TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'.\n el.style[prop as any] = style[prop]\n })\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n forceRender && getComputedStyle(el)\n\n return el\n}\n\nexport function getTranslate (\n el: HTMLElement,\n isHorizontal: boolean\n): number {\n const matrix = getComputedStyle(el).transform.replace(/[a-z]|\\(|\\)|\\s/g, '').split(',').map(parseFloat)\n let arr: Array = []\n\n if (matrix.length === 16) {\n arr = matrix.slice(12, 14)\n } else if (matrix.length === 6) {\n arr = matrix.slice(4, 6)\n }\n return (>arr)[isHorizontal ? 0 : 1] || 0\n}\n\nexport function stringToElement (\n string: string\n): HTMLElement {\n const wrapper = document.createElement('div')\n wrapper.innerHTML = string\n return wrapper.firstChild as HTMLElement\n}\n","import { State } from '../state/index'\nimport { Env } from '../env/index'\nimport { setStyle } from './dom'\nimport { Options } from '../options'\n\nexport function translate (\n state: State,\n env: Env,\n options: Options,\n duration: number\n): void {\n const {\n $wrapper\n } = env.element\n const wrapperStyle = {\n transition: state.isStart\n ? 'none'\n : `transform ease ${duration}ms`,\n transform: options.isHorizontal\n ? `translate3d(${state.transforms}px, 0, 0)`\n : `translate3d(0, ${state.transforms}px, 0)`\n }\n\n setStyle($wrapper, wrapperStyle)\n}\n","import { SwiperPlugin } from './index'\nimport { translate } from './render/layout'\nimport { State } from './state/index'\nimport { Env } from './env/index'\nimport { SwiperPluginLazyloadPartialOptions } from '../modules/lazyload'\nimport { SwiperPluginPaginationPartialOptions } from '../modules/pagination'\nimport { SwiperPluginKeyboardControlPartialOptions } from '../modules/keyboardControl'\nimport { SwiperPluginNavigationPartialOptions } from '../modules/navigation'\nimport { SwiperPluginMousewheelPartialOptions } from '../modules/mousewheel'\nimport { SwiperPluginAutoPlayPartialOptions } from '../modules/autoPlay'\n\nexport type Direction = 'horizontal' | 'vertical'\nexport type Injections = {\n translate: (\n state: State,\n env: Env,\n options: Options,\n duration: number\n ) => void\n}\n\nexport type Options = {\n direction: Direction\n touchRatio: number\n touchAngle: number\n longSwipesRatio: number\n initialSlide: number\n loop: boolean\n freeMode: boolean\n passiveListeners: boolean\n resistance: boolean\n resistanceRatio: number\n speed: number\n longSwipesMs: number\n spaceBetween: number\n slidesPerView: number\n centeredSlides: boolean\n slidePrevClass: string\n slideNextClass: string\n slideActiveClass: string\n slideClass: string\n wrapperClass: string\n touchStartPreventDefault: boolean\n touchStartForcePreventDefault: boolean\n touchMoveStopPropagation: boolean\n excludeElements: Array\n isHorizontal: boolean\n plugins?: Array\n injections: Injections\n\n // Plugins\n lazyload?: SwiperPluginLazyloadPartialOptions\n mousewheel?: SwiperPluginMousewheelPartialOptions\n keyboard?: SwiperPluginKeyboardControlPartialOptions\n navigation?: SwiperPluginNavigationPartialOptions\n pagination?: SwiperPluginPaginationPartialOptions\n autoplay?: SwiperPluginAutoPlayPartialOptions\n}\n\nexport type UserOptions = Partial\n\nexport const defaultOptions: UserOptions = {\n // `isHorizontal` is computed value\n direction: 'horizontal',\n touchRatio: 1,\n touchAngle: 45,\n longSwipesRatio: 0.5,\n initialSlide: 0,\n loop: false,\n freeMode: false,\n passiveListeners: true,\n resistance: true,\n resistanceRatio: 0.85,\n speed: 300,\n longSwipesMs: 300,\n spaceBetween: 0,\n slidesPerView: 1,\n centeredSlides: false,\n slidePrevClass: 'swiper-slide-prev',\n slideNextClass: 'swiper-slide-next',\n slideActiveClass: 'swiper-slide-active',\n slideClass: 'swiper-slide',\n wrapperClass: 'swiper-wrapper',\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchMoveStopPropagation: false,\n excludeElements: [],\n injections: {\n translate\n }\n}\n\nexport function optionFormatter (userOptions?: UserOptions): Options {\n const options = {\n ...defaultOptions,\n ...userOptions\n }\n\n return {\n ...options,\n isHorizontal: options.direction === 'horizontal'\n }\n}\n","export type EventHub = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n on (evtName: string, cb: Function): void\n off (evtName: string, cb: Function): void\n emit (evtName: string, ...data: Array): void\n clear (): void\n}\n\nexport const LIFE_CYCLES = {\n BEFORE_INIT: 'before-init',\n AFTER_INIT: 'after-init',\n BEFORE_SLIDE: 'before-slide',\n SCROLL: 'scroll',\n AFTER_SLIDE: 'after-slide',\n BEFORE_DESTROY: 'before-destroy',\n AFTER_DESTROY: 'after-destroy'\n}\n\nexport function EventHub (): EventHub {\n let hub: {\n [key: string]: Array\n } = {}\n\n function on (evtName: string, cb: Function): void {\n if (!hub[evtName]) {\n hub[evtName] = [cb]\n } else {\n hub[evtName].push(cb)\n }\n }\n\n function off (evtName: string, cb: Function): void {\n if (hub[evtName]) {\n const index = hub[evtName].indexOf(cb)\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n index > -1 && hub[evtName].splice(index, 1)\n }\n }\n\n function emit (evtName: string, ...data: Array): void {\n if (hub[evtName]) {\n hub[evtName].forEach(cb => cb(...data))\n }\n }\n\n function clear (): void {\n hub = {}\n }\n\n return {\n on,\n off,\n emit,\n clear\n }\n}\n","const delta = 180 / Math.PI\n\nexport type TraceLogs = Array\n\nexport type Offset = {\n /**\n * offset x\n */\n x: number\n\n /**\n * offset y\n */\n y: number\n}\n\nexport type Position = {\n /**\n * postion in the x-axis\n */\n x: number\n\n /**\n * postion in the y-axis\n */\n y: number\n}\n\nexport type Trace = {\n /**\n * timestamp of current postion\n */\n time: number\n} & Position\n\nexport type Tracker = {\n push (postion: Position): void\n vector (): Vector\n clear (): void\n getLogs (): TraceLogs\n getDuration (): number\n getOffset (): Offset\n}\n\nexport type Vector = {\n /**\n * offset in the x-axis\n */\n x: number\n\n /**\n * offset in the y-axis\n */\n y: number\n\n /**\n * velocity in the x-axis\n */\n velocityX: number\n\n /**\n * velocity in the y-axis\n */\n velocityY: number\n\n /**\n * direction angle\n */\n angle: number\n}\n\nexport function Vector (\n logs: TraceLogs,\n index: number\n): Vector {\n const trace = logs[index]\n const formerTrace = logs[index - 1] || trace // In case click action, there will be only one log data\n const diff = {\n x: trace.x - formerTrace.x,\n y: trace.y - formerTrace.y\n }\n const duration = trace.time - formerTrace.time\n const velocityX = diff.x / duration || 0\n const velocityY = diff.y / duration || 0\n const angle = Math.atan2(Math.abs(diff.y), Math.abs(diff.x)) * delta\n\n return {\n ...diff,\n angle,\n velocityX,\n velocityY\n }\n}\n\nexport function Tracker (): Tracker {\n let logs: TraceLogs = []\n\n function push (position: Position): void {\n logs.push({\n time: Date.now(),\n ...position\n })\n }\n\n function vector (): Vector {\n return Vector(logs, logs.length - 1)\n }\n\n function clear () {\n logs = []\n }\n\n function getLogs () {\n return logs\n }\n\n function getDuration (): number {\n const first = logs[0]\n const last = logs[logs.length - 1]\n\n return first ? last.time - first.time : 0\n }\n\n function getOffset (): Offset {\n const first = logs[0]\n const last = logs[logs.length - 1]\n\n return first ? {\n x: last.x - first.x,\n y: last.y - first.y\n } : {\n x: 0,\n y: 0\n }\n }\n\n return {\n getDuration,\n getOffset,\n getLogs,\n vector,\n clear,\n push\n }\n}\n","import { Tracker } from './trace'\n\nexport interface State {\n tracker: Tracker\n index: number\n startTransform: number\n isStart: boolean\n isScrolling: boolean\n isTouching: boolean\n transforms: number\n progress: number\n}\n\nexport function State (): State {\n const state: State = {\n tracker: Tracker(),\n index: 0,\n startTransform: 0,\n isStart: false,\n isScrolling: false,\n isTouching: false,\n transforms: 0,\n progress: 0\n }\n\n return state\n}\n","function now () {\n return performance ? performance.now() : Date.now()\n}\n\nexport type Tick = {\n run (cb: (interval: DOMHighResTimeStamp) => void): void\n stop (): void\n}\n\nexport function Tick (): Tick {\n const nextFrame = requestAnimationFrame || webkitRequestAnimationFrame || setTimeout\n const cancelNextFrame = cancelAnimationFrame || webkitCancelAnimationFrame || clearTimeout\n\n let startTime: number | undefined\n let id: number\n\n function run (cb: (interval: DOMHighResTimeStamp) => void): void {\n // eslint-disable-next-line no-void\n startTime = startTime === void 0\n ? now()\n : startTime\n\n // Why do not use callback argument:\n // https://stackoverflow.com/questions/50895206/exact-time-of-display-requestanimationframe-usage-and-timeline\n id = nextFrame(() => {\n const timeStamp = now()\n const interval = timeStamp - startTime\n\n startTime = timeStamp\n cb(interval)\n })\n }\n\n function stop (): void {\n startTime = undefined\n cancelNextFrame(id)\n }\n\n return {\n run,\n stop\n }\n}\n","import { Tick } from './nextTick'\n\nexport type Animation = {\n run (task: (interval: DOMHighResTimeStamp) => void): void\n stop (): void\n}\n\nexport function Animation (): Animation {\n const tick = Tick()\n\n function run (task: (interval: DOMHighResTimeStamp) => void): void {\n tick.run((interval: DOMHighResTimeStamp) => {\n run(task)\n task(interval)\n })\n }\n\n function stop (): void {\n tick.stop()\n }\n\n return {\n run,\n stop\n }\n}\n","import { Position } from '../state/trace'\nimport { Options } from '../options'\nimport { Env } from '../env/index'\nimport { State } from '../state/index'\nimport { Operations } from '../state/operations'\nimport { Animation } from '../render/animation'\n\nexport type Actions = {\n preheat (\n originPosition: Position,\n originTransform: number\n ): void\n move (position: Position): void\n stop (): void\n}\n\nfunction resetState (\n state: State,\n operations: Operations\n): void {\n const {\n tracker\n } = state\n const {\n initStatus\n } = operations\n\n tracker.clear()\n initStatus()\n}\n\nexport function Actions (\n options: Options,\n env: Env,\n state: State,\n operations: Operations\n) {\n const {\n initLayout,\n initStatus,\n render,\n scrollPixel,\n slideTo,\n getOffsetSteps\n } = operations\n const animation = Animation()\n\n function preheat (\n originPosition: Position,\n originTransform: number\n ): void {\n const { tracker } = state\n\n animation.stop()\n tracker.clear()\n tracker.push(originPosition)\n initLayout(originTransform)\n initStatus(originTransform)\n state.isStart = true\n\n render()\n }\n\n function move (position: Position): void {\n const {\n tracker\n } = state\n const {\n touchRatio,\n touchAngle,\n isHorizontal\n } = options\n\n if (!state.isStart || state.isScrolling) return\n\n tracker.push(position)\n\n const vector = tracker.vector()\n const displacement = tracker.getOffset()\n\n // Ignore this move action if there is no displacement of screen touch point.\n // In case of minimal mouse move event. (Moving mouse extreme slowly will get the zero offset.)\n if (!displacement.x && !displacement.y) return\n\n if ((isHorizontal && (vector.angle < touchAngle))\n || (!isHorizontal && (90 - vector.angle) < touchAngle)\n || state.isTouching\n ) {\n const offset = vector[isHorizontal ? 'x' : 'y'] * touchRatio\n\n state.isTouching = true\n scrollPixel(offset)\n render()\n } else {\n state.isScrolling = true\n tracker.clear()\n }\n }\n\n function stop (): void {\n const {\n index,\n tracker\n } = state\n const {\n measure\n } = env\n\n if (!state.isStart) return\n\n state.isStart = false\n\n if (!options.freeMode) {\n const duration = tracker.getDuration()\n const trans = tracker.getOffset()[options.isHorizontal ? 'x' : 'y']\n const jump = Math.ceil(Math.abs(trans) / measure.boxSize)\n const longSwipeIndex = getOffsetSteps(trans)\n\n if (duration > options.longSwipesMs) {\n // long swipe action\n slideTo(index + longSwipeIndex * (trans > 0 ? -1 : 1))\n } else {\n // short swipe action\n slideTo(trans > 0 ? index - jump : index + jump)\n }\n\n resetState(state, operations)\n } else {\n const vector = tracker.vector()\n\n let velocity = vector[options.isHorizontal ? 'velocityX' : 'velocityY']\n\n animation.run((duration: number) => {\n const offset = velocity * duration\n\n velocity *= 0.98\n\n if (Math.abs(offset) < 0.01) {\n animation.stop()\n resetState(state, operations)\n } else {\n scrollPixel(offset)\n render(0)\n }\n })\n }\n }\n\n return {\n preheat,\n move,\n stop\n }\n}\n","import { State } from '../state/index'\nimport { Env } from '../env/index'\nimport { attachListener, detachListener, getTranslate } from '../render/dom'\nimport { Options } from '../options'\nimport { Position } from '../state/trace'\nimport { Actions } from './actions'\nimport { Operations } from '../state/operations'\n\nexport type Sensor = {\n attach: () => void\n detach: () => void\n}\n\n// Only support single finger touch event.\nexport function Sensor (\n env: Env,\n state: State,\n options: Options,\n operations: Operations\n): Sensor {\n const {\n touchable\n } = env\n const formEls = [\n 'INPUT',\n 'SELECT',\n 'OPTION',\n 'TEXTAREA',\n 'BUTTON',\n 'VIDEO'\n ]\n const actions = Actions(options, env, state, operations)\n const {\n preheat,\n move,\n stop\n } = actions\n\n function getPosition (e: Event): Position {\n const touch = touchable ? (e).changedTouches[0] : e\n\n return {\n x: touch.pageX,\n y: touch.pageY\n }\n }\n\n function onTouchStart (e: Event): void {\n for (let i = 0; i < options.excludeElements.length; i++) {\n if (options.excludeElements[i].contains(e.target as Node)) return\n }\n\n const {\n $wrapper\n } = env.element\n const shouldPreventDefault = (options.touchStartPreventDefault && formEls.indexOf((e.target).nodeName) === -1)\n || options.touchStartForcePreventDefault\n\n // `preventDefault` can not be called with `passiveListeners`\n // See: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n // And: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n if (!touchable && shouldPreventDefault) e.preventDefault()\n\n preheat(\n getPosition(e),\n getTranslate($wrapper, options.isHorizontal)\n )\n }\n\n function onTouchMove (e: Event): void {\n if (options.touchMoveStopPropagation) e.stopPropagation()\n\n move(getPosition(e))\n\n if (state.isTouching && e.cancelable !== false) e.preventDefault()\n }\n\n function onTouchEnd (): void {\n stop()\n }\n\n function attach (): void {\n const {\n $el\n } = env.element\n\n if (touchable) {\n attachListener($el, 'touchstart', onTouchStart, {\n passive: options.passiveListeners,\n capture: false\n })\n attachListener($el, 'touchmove', onTouchMove)\n attachListener($el, 'touchend', onTouchEnd)\n attachListener($el, 'touchcancel', onTouchEnd)\n } else {\n attachListener($el, 'mousedown', onTouchStart)\n attachListener(document, 'mousemove', onTouchMove)\n attachListener(document, 'mouseup', onTouchEnd)\n }\n }\n\n function detach (): void {\n const {\n $el\n } = env.element\n\n detachListener($el, 'touchstart', onTouchStart)\n detachListener($el, 'touchmove', onTouchMove)\n detachListener($el, 'touchend', onTouchEnd)\n detachListener($el, 'touchcancel', onTouchEnd)\n detachListener($el, 'mousedown', onTouchStart)\n detachListener(document, 'mousemove', onTouchMove)\n detachListener(document, 'mouseup', onTouchEnd)\n }\n\n return {\n attach,\n detach\n }\n}\n","import { Options } from '../options'\nimport { Element } from './element'\n\nexport type Measure = {\n boxSize: number\n viewSize: number\n slideSize: number\n}\n\nexport function Measure (\n options: Options,\n element: Element\n): Measure {\n const {\n $el\n } = element\n const viewSize = options.isHorizontal ? $el.offsetWidth : $el.offsetHeight\n const slideSize = (viewSize - (Math.ceil(options.slidesPerView - 1)) * options.spaceBetween) / options.slidesPerView\n const boxSize = slideSize + options.spaceBetween\n\n return {\n boxSize,\n viewSize,\n slideSize\n }\n}\n","import { Options } from '../options'\nimport { Element } from './element'\nimport { Measure } from './measure'\n\nexport type Limitation = {\n min: number\n max: number\n base: number\n expand: number\n buffer: number\n minIndex: number\n maxIndex: number\n}\n\nexport function getExpand (\n options: Options\n): number {\n if (options.loop) {\n // return options.slidesPerView >= element.$list.length\n // ? options.slidesPerView - element.$list.length + 1\n // : 1\n return Math.ceil(options.slidesPerView)\n }\n return 0\n}\n\nexport function Limitation (\n element: Element,\n measure: Measure,\n options: Options\n): Limitation {\n const {\n $list\n } = element\n const {\n viewSize,\n slideSize,\n boxSize\n } = measure\n const expand = getExpand(options)\n const buffer = expand * boxSize\n const base = -buffer + (options.centeredSlides\n ? (viewSize - slideSize) / 2\n : 0)\n // [min, max] usually equal to [-x, 0]\n const max = base\n const min = options.spaceBetween + (options.loop ? slideSize : viewSize) + base - boxSize * $list.length\n const minIndex = 0\n const maxIndex = $list.length - ((options.centeredSlides || options.loop)\n ? 1\n : Math.ceil(options.slidesPerView))\n\n const limitation = {\n max,\n min,\n base,\n expand,\n buffer,\n minIndex,\n maxIndex\n }\n\n return limitation\n}\n","import { Options } from '../options'\nimport { Element } from './element'\nimport { Measure } from './measure'\nimport { Limitation } from './limitation'\n\ndeclare global {\n interface Window {\n DocumentTouch: any\n }\n const DocumentTouch: any\n}\n\nexport type Env = {\n touchable: boolean\n element: Element\n measure: Measure\n limitation: Limitation\n update (element: Element): void\n}\n\nexport function Env (\n elem: Element,\n options: Options\n): Env {\n const env = {}\n\n function update (element: Element): void {\n const measure = Measure(\n options,\n element\n )\n const limitation = Limitation(\n element,\n measure,\n options\n )\n const touchable = Boolean(\n 'ontouchstart' in window\n || navigator.maxTouchPoints > 0\n || navigator.msMaxTouchPoints > 0\n || window.DocumentTouch && document instanceof DocumentTouch\n )\n\n Object.assign(env, {\n touchable,\n element,\n measure,\n limitation\n })\n }\n\n env.update = update\n\n update(elem)\n\n return env\n}\n","import { Options } from '../options'\nimport {\n removeClass, addClass, setStyle, setAttr, attachListener, detachListener\n} from './dom'\nimport { State } from '../state/index'\nimport { Env } from '../env/index'\n\nconst shallowTag = 'data-shallow-slider'\nconst sliderTag = 'data-slider'\n\nexport type Renderer = {\n init (): void\n render (\n state: State,\n duration?: number,\n cb?: Function,\n force?: boolean\n ): void\n destroy (): void\n updateSize (): void\n}\n\nexport function Renderer (\n env: Env,\n options: Options\n): Renderer {\n function updateItem (state: State): void {\n const {\n $wrapper\n } = env.element\n const {\n index\n } = state\n\n $wrapper.querySelectorAll(`[${sliderTag}]`).forEach($slide => {\n // eslint-disable-next-line no-bitwise\n const tagNumber = ~~$slide.getAttribute(sliderTag)\n\n removeClass($slide, [\n options.slidePrevClass,\n options.slideNextClass,\n options.slideActiveClass\n ])\n\n if (tagNumber === index) {\n addClass($slide, options.slideActiveClass)\n }\n if (tagNumber === index - 1) {\n addClass($slide, options.slidePrevClass)\n }\n if (tagNumber === index + 1) {\n addClass($slide, options.slideNextClass)\n }\n })\n }\n\n function render (\n state: State,\n duration?: number,\n cb?: Function,\n force?: false\n ) {\n const {\n $wrapper\n } = env.element\n const timing = duration === undefined ? options.speed : duration\n\n options.injections.translate(state, env, options, timing)\n\n // Update slide style only if scroll action is end.\n if (!state.isStart) updateItem(state)\n\n force && getComputedStyle($wrapper).transform\n cb && setTimeout(cb, timing)\n }\n\n function appendExpandList (): void {\n if (!options.loop) return\n\n const {\n element,\n limitation\n } = env\n const {\n $list,\n $wrapper\n } = element\n const {\n expand\n } = limitation\n const $leftExpandList = $list.slice(-expand)\n .map($slide => $slide.cloneNode(true))\n const $rightExpandList = $list.slice(0, expand)\n .map($slide => $slide.cloneNode(true))\n\n $leftExpandList.forEach(($shadowSlide, index) => {\n $wrapper.appendChild(setAttr($rightExpandList[index], shallowTag))\n $wrapper.insertBefore(setAttr($leftExpandList[index], shallowTag), $list[0])\n })\n }\n\n function destroyExpandList (): void {\n env.element.$wrapper\n .querySelectorAll(`[${shallowTag}]`)\n .forEach(item => env.element.$wrapper.removeChild(item))\n }\n\n function updateDom (): void {\n env.element.$list.forEach((el, index) => setAttr(el, sliderTag, index))\n\n destroyExpandList()\n appendExpandList()\n }\n\n function updateSize (): void {\n const {\n element,\n measure\n } = env\n const {\n $wrapper\n } = element\n const wrapperStyle = {\n display: 'flex',\n willChange: 'transform',\n flexDirection: options.isHorizontal ? 'row' : 'column'\n }\n const itemStyle = {\n [options.isHorizontal ? 'width' : 'height']: `${measure.slideSize}px`,\n [options.isHorizontal ? 'margin-right' : 'margin-bottom']: `${options.spaceBetween}px`\n }\n\n setStyle($wrapper, wrapperStyle)\n $wrapper.querySelectorAll(`[${sliderTag}]`)\n .forEach($slide => setStyle($slide, itemStyle))\n }\n\n function init (): void {\n updateDom()\n updateSize()\n }\n\n function destroy (): void {\n const {\n $list,\n $wrapper\n } = env.element\n const arr = ['display', 'will-change', 'flex-direction']\n const itemProp = options.isHorizontal ? 'margin-right' : 'margin-bottom'\n\n arr.forEach((propertyName: string) => {\n $wrapper.style.removeProperty(propertyName)\n })\n $list.forEach($slide => $slide.style.removeProperty(itemProp))\n destroyExpandList()\n }\n\n return {\n init,\n render,\n destroy,\n updateSize\n }\n}\n","import { State } from './index'\nimport { Limitation } from '../env/limitation'\nimport { EventHub, LIFE_CYCLES } from '../eventHub'\nimport { Renderer } from '../render/index'\nimport { Options } from '../options'\nimport { Env } from '../env/index'\n\nexport interface Operations {\n update (): void\n render (duration?: number): void\n transform (trans: number): void\n slideTo (\n targetIndex: number,\n duration?: number\n ): void\n scrollPixel (px: number): void\n initStatus (startTransform?: number): void\n initLayout (originTransform: number): void\n getOffsetSteps (offset: number): number\n}\n\n/**\n * Detect whether slides is rush out boundary.\n * @param velocity - Velocity larger than zero means that slides move to the right direction\n * @param transform\n * @param limitation\n */\nexport function isExceedingLimits (\n velocity: number,\n transform: number,\n limitation: Limitation\n): boolean {\n return velocity > 0 && transform > (limitation.max)\n || velocity < 0 && transform < (limitation.min)\n}\n\n/**\n * Return the shortest way to target Index.\n * Negative number indicate the left direction, Index's value is decreasing.\n * Positive number means index should increase.\n * @param currentIndex\n * @param targetIndex\n * @param limitation\n * @param defaultWay\n */\nexport function getShortestWay (\n currentIndex: number,\n targetIndex: number,\n limitation: Limitation,\n defaultWay: number\n): number {\n const {\n maxIndex,\n minIndex\n } = limitation\n\n // Source expression show below:\n // const shortcut = defaultWay > 0\n // ? minIndex - currentIndex + (targetIndex - maxIndex) - 1\n // : maxIndex - currentIndex + (targetIndex - minIndex) + 1\n\n const shortcut = (defaultWay > 0 ? 1 : -1) * (minIndex - maxIndex - 1)\n + targetIndex - currentIndex\n\n return Math.abs(defaultWay) > Math.abs(shortcut)\n ? shortcut\n : defaultWay\n}\n\n/**\n * Get transform exceed value\n * Return zero if is not reached border.\n *\n * @param transform\n * @param limitation\n */\nexport function getExcess (\n transform: number,\n limitation: Limitation\n): number {\n const exceedLeft = transform - limitation.max\n const exceedRight = transform - limitation.min\n\n return exceedLeft > 0\n ? exceedLeft\n : exceedRight < 0\n ? exceedRight\n : 0\n}\n\n/**\n * The Set of state operations.\n * Every external Render/Sensor/DomHandler are called by this Internal state machine.\n * That gives us the possibility to run Tiny-Swiper in different platform.\n *\n * @param env\n * @param state\n * @param options\n * @param renderer\n * @param eventHub\n * @constructor\n */\nexport function Operations (\n env: Env,\n state: State,\n options: Options,\n renderer: Renderer,\n eventHub: EventHub\n): Operations {\n\n /**\n * Calculate the steps amount (boxSize) of offset.\n * eg: offset = 100, boxSize: 50, steps may equal to 2.\n * @param offset\n */\n function getOffsetSteps (offset: number): number {\n const {\n measure\n } = env\n return Math.ceil(Math.abs(offset) / measure.boxSize - options.longSwipesRatio)\n }\n\n /**\n * Call renderer's render function with default params.\n * @param duration\n * @param cb\n * @param force\n */\n function render (\n duration?: number,\n cb?: Function,\n force?: boolean\n ): void {\n renderer.render(\n state,\n duration,\n cb,\n force\n )\n }\n\n /**\n * Update Swiper transform attr.\n * @param trans\n */\n function transform (trans: number): void {\n const {\n min,\n max\n } = env.limitation\n const transRange = max - min + (options.loop ? env.measure.boxSize : 0)\n const len = transRange + 1\n\n let progress\n\n state.transforms = trans\n\n if (options.loop) {\n progress = (max - trans) % len / transRange\n\n state.progress = progress < 0\n ? 1 + progress\n : progress > 1\n ? progress - 1\n : progress\n } else {\n progress = (max - trans) / transRange\n\n state.progress = progress < 0\n ? 0\n : progress > 1\n ? 1\n : progress\n }\n\n eventHub.emit(LIFE_CYCLES.SCROLL, {\n ...state\n })\n }\n\n /**\n * Update Swiper transform state with certain Index.\n * @param targetIndex\n * @param duration\n */\n function slideTo (\n targetIndex: number,\n duration?: number\n ): void {\n const {\n measure,\n limitation\n } = env\n const len = limitation.maxIndex - limitation.minIndex + 1\n const computedIndex = options.loop\n ? (targetIndex % len + len) % len\n : targetIndex > limitation.maxIndex\n ? limitation.maxIndex\n : targetIndex < limitation.minIndex\n ? limitation.minIndex\n : targetIndex\n const newTransform = -computedIndex * measure.boxSize + limitation.base\n\n // Slide to wrapper's boundary while touch end.\n // Math.abs(excess) ≥ 0\n // Old condition: state.index === computedIndex\n if (getOffsetSteps(newTransform - state.transforms) !== 0\n && options.loop\n ) {\n const excess = getExcess(state.transforms, limitation)\n const defaultWay = computedIndex - state.index\n const shortcut = getShortestWay(\n state.index,\n computedIndex,\n limitation,\n defaultWay\n )\n\n if (shortcut !== defaultWay && !excess) {\n transform(shortcut < 0\n ? limitation.min - measure.boxSize\n : limitation.max + measure.boxSize)\n } else if (state.index === computedIndex) {\n transform(excess > 0\n ? limitation.min - measure.boxSize + excess\n : limitation.max + measure.boxSize + excess)\n }\n // Set initial offset for rebounding animation.\n render(0, undefined, true)\n }\n\n eventHub.emit(LIFE_CYCLES.BEFORE_SLIDE,\n state.index,\n state,\n computedIndex)\n state.index = computedIndex\n transform(newTransform)\n render(duration, () => {\n eventHub.emit(LIFE_CYCLES.AFTER_SLIDE,\n computedIndex,\n state)\n })\n }\n\n /**\n * Scroll pixel by pixel while user dragging.\n * @param px\n */\n function scrollPixel (px: number): void {\n const {\n transforms\n } = state\n const {\n measure,\n limitation\n } = env\n const ratio = Number(px.toExponential().split('e')[1])\n const expand = ratio <= 0 ? Math.pow(10, -(ratio - 1)) : 1\n\n let newTransform = transforms\n\n // For optimizing, do not calculate `px` if options.loop === true\n if (options.resistance && !options.loop) {\n if (px > 0 && transforms >= limitation.max) {\n px -= (px * expand) ** options.resistanceRatio / expand\n } else if (px < 0 && transforms <= limitation.min) {\n px += ((-px * expand) ** options.resistanceRatio) / expand\n }\n }\n\n newTransform += px\n\n if (options.loop) {\n const vector = state.tracker.vector()\n const velocity = options.isHorizontal ? vector.velocityX : vector.velocityY\n const excess = getExcess(transforms, limitation)\n\n if (excess && isExceedingLimits(\n velocity,\n transforms,\n limitation\n )) {\n newTransform = excess > 0\n ? limitation.min - measure.boxSize + excess\n : limitation.max + measure.boxSize + excess\n }\n }\n\n transform(newTransform)\n }\n\n function initStatus (startTransform = 0): void {\n state.startTransform = startTransform\n state.isStart = false\n state.isScrolling = false\n state.isTouching = false\n }\n\n function initLayout (originTransform: number): void {\n transform(originTransform)\n }\n\n function update (): void {\n slideTo(state.index, 0)\n renderer.updateSize()\n }\n\n return {\n update,\n render,\n transform,\n slideTo,\n scrollPixel,\n initStatus,\n initLayout,\n getOffsetSteps\n }\n}\n","import { Options } from '../options'\n\nexport type Element = {\n $el: HTMLElement\n $list: Array\n $wrapper: HTMLElement\n}\n\nexport function Element (\n el: HTMLElement | string,\n options: Options\n): Element {\n const $el = (typeof el === 'string' ? document.body.querySelector(el) : el)\n const $wrapper = $el!.querySelector(`.${options.wrapperClass}`)\n const $list = [].slice.call($el!.getElementsByClassName(options.slideClass))\n\n return {\n $el,\n $wrapper,\n $list\n }\n}\n","import { UserOptions, optionFormatter, Options } from './options'\nimport { EventHub, LIFE_CYCLES } from './eventHub'\nimport { State } from './state/index'\nimport { Sensor } from './sensor/index'\nimport { Env } from './env/index'\nimport { Renderer } from './render/index'\nimport { Operations } from './state/operations'\nimport { Element } from './env/element'\n\nexport type SwiperInstance = {\n on: (evtName: string, cb: Function) => void\n off: (evtName: string, cb: Function) => void\n update: () => void\n destroy: () => void\n slideTo: (index: number, duration?: number) => void\n options: Options\n env: Env\n state: State\n updateSize: () => void\n\n // mount plugin instance\n [key: string]: any\n}\n\nexport type SwiperPlugin = (instance: SwiperInstance, options: Options) => void\n\nexport type Swiper = {\n (el: HTMLElement | string, userOptions?: UserOptions): SwiperInstance\n new (el: HTMLElement | string, userOptions?: UserOptions): SwiperInstance\n use: (plugins: Array) => void\n plugins: Array\n}\n\nconst Swiper: Swiper = function (\n el: HTMLElement | string,\n userOptions: UserOptions\n): SwiperInstance {\n const options = optionFormatter(userOptions)\n const eventHub = EventHub()\n const element = Element(\n el,\n options\n )\n const env = Env(element, options)\n const state = State()\n const {\n on,\n off,\n emit\n } = eventHub\n const instance = {\n on,\n off,\n env,\n state,\n options\n } as SwiperInstance\n\n (options.plugins || Swiper.plugins || [])\n .forEach((plugin: SwiperPlugin) => plugin(\n instance,\n options\n ))\n\n emit(LIFE_CYCLES.BEFORE_INIT, instance)\n\n // Initialize internal module\n const renderer = Renderer(\n env,\n options\n )\n const operations = Operations(\n env,\n state,\n options,\n renderer,\n eventHub\n )\n const sensor = Sensor(\n env,\n state,\n options,\n operations\n )\n\n function destroy (): void {\n emit(LIFE_CYCLES.BEFORE_DESTROY, instance)\n sensor.detach()\n renderer.destroy()\n emit(LIFE_CYCLES.AFTER_DESTROY, instance)\n eventHub.clear()\n }\n\n function updateSize (): void {\n env.update(Element(\n el,\n options\n ))\n operations.update()\n }\n\n function update (): void {\n renderer.destroy()\n env.update(Element(\n el,\n options\n ))\n renderer.init()\n operations.update()\n }\n\n const {\n slideTo\n } = operations\n\n Object.assign(instance, {\n update,\n destroy,\n slideTo,\n updateSize\n })\n\n renderer.init()\n sensor.attach()\n slideTo(\n options.initialSlide,\n 0\n )\n emit(LIFE_CYCLES.AFTER_INIT, instance)\n\n return instance\n}\n\nSwiper.use = (plugins: Array): void => {\n Swiper.plugins = plugins\n}\n\nexport default Swiper\n"],"names":["addClass","el","list","Array","isArray","forEach","clz","classList","contains","add","removeClass","remove","attachListener","evtName","handler","opts","addEventListener","detachListener","removeEventListener","setAttr","attr","value","setAttribute","setStyle","style","forceRender","Object","keys","prop","getComputedStyle","getTranslate","isHorizontal","matrix","transform","replace","split","map","parseFloat","arr","length","slice","translate","state","env","options","duration","$wrapper","element","wrapperStyle","transition","isStart","transforms","defaultOptions","direction","touchRatio","touchAngle","longSwipesRatio","initialSlide","loop","freeMode","passiveListeners","resistance","resistanceRatio","speed","longSwipesMs","spaceBetween","slidesPerView","centeredSlides","slidePrevClass","slideNextClass","slideActiveClass","slideClass","wrapperClass","touchStartPreventDefault","touchStartForcePreventDefault","touchMoveStopPropagation","excludeElements","injections","optionFormatter","userOptions","LIFE_CYCLES","BEFORE_INIT","AFTER_INIT","BEFORE_SLIDE","SCROLL","AFTER_SLIDE","BEFORE_DESTROY","AFTER_DESTROY","EventHub","hub","on","cb","push","off","index","indexOf","splice","emit","data","clear","delta","Math","PI","Vector","logs","trace","formerTrace","diff","x","y","time","velocityX","velocityY","angle","atan2","abs","Tracker","position","Date","now","vector","getLogs","getDuration","first","last","getOffset","State","tracker","startTransform","isScrolling","isTouching","progress","performance","Tick","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","setTimeout","cancelNextFrame","cancelAnimationFrame","webkitCancelAnimationFrame","clearTimeout","startTime","id","run","timeStamp","interval","stop","undefined","Animation","tick","task","resetState","operations","initStatus","Actions","initLayout","render","scrollPixel","slideTo","getOffsetSteps","animation","preheat","originPosition","originTransform","move","displacement","offset","measure","trans","jump","ceil","boxSize","longSwipeIndex","velocity","Sensor","touchable","formEls","actions","getPosition","e","touch","changedTouches","pageX","pageY","onTouchStart","i","target","shouldPreventDefault","nodeName","preventDefault","onTouchMove","stopPropagation","cancelable","onTouchEnd","attach","$el","passive","capture","document","detach","Measure","viewSize","offsetWidth","offsetHeight","slideSize","getExpand","Limitation","$list","expand","buffer","base","max","min","minIndex","maxIndex","limitation","Env","elem","update","Boolean","window","navigator","maxTouchPoints","msMaxTouchPoints","DocumentTouch","assign","shallowTag","sliderTag","Renderer","updateItem","querySelectorAll","$slide","tagNumber","getAttribute","force","timing","appendExpandList","$leftExpandList","cloneNode","$rightExpandList","$shadowSlide","appendChild","insertBefore","destroyExpandList","item","removeChild","updateDom","updateSize","display","willChange","flexDirection","itemStyle","init","destroy","itemProp","propertyName","removeProperty","isExceedingLimits","getShortestWay","currentIndex","targetIndex","defaultWay","shortcut","getExcess","exceedLeft","exceedRight","Operations","renderer","eventHub","transRange","len","computedIndex","newTransform","excess","px","ratio","Number","toExponential","pow","Element","body","querySelector","call","getElementsByClassName","Swiper","instance","plugins","plugin","sensor","use"],"mappings":"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"}