{"version":3,"file":"pagination.js","sources":["../../src/core/render/dom.ts","../../src/modules/pagination.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 {\n addClass,\n removeClass,\n stringToElement\n} from '../core/render/dom'\nimport { SwiperInstance, SwiperPlugin } from '../core/index'\nimport { Options } from '../core/options'\n\nexport type SwiperPluginPaginationOptions = {\n el: string\n clickable: boolean\n clickableClass: 'swiper-pagination-clickable'\n bulletClass: string | 'swiper-pagination-bullet'\n bulletActiveClass: string | 'swiper-pagination-bullet-active'\n renderBullet: Function\n}\n\nexport type SwiperPluginPaginationPartialOptions = Partial\n\nexport type SwiperPluginPaginationInstance = {\n $pageList: HTMLElement[]\n $pagination: HTMLElement | null\n}\n\nexport default function SwiperPluginPagination (\n instance: SwiperInstance & {\n pagination?: SwiperPluginPaginationInstance\n },\n options: Options & {\n pagination?: SwiperPluginPaginationPartialOptions\n }\n) {\n const isEnable = Boolean(options.pagination)\n const paginationOptions = Object.assign({\n clickable: false,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n clickableClass: 'swiper-pagination-clickable'\n }, options.pagination)\n const paginationInstance = {\n $pageList: [],\n $pagination: null\n } as unknown as SwiperPluginPaginationInstance\n\n if (!isEnable) return\n\n instance.on('after-init', () => {\n const {\n bulletClass,\n bulletActiveClass,\n clickableClass,\n renderBullet\n } = paginationOptions\n const {\n element\n } = instance.env\n const {\n $list\n } = element\n\n const $pagination = (typeof paginationOptions.el === 'string'\n ? document.body.querySelector(paginationOptions.el)\n : paginationOptions.el) as HTMLElement\n const $pageList: Array = []\n const $group = document.createDocumentFragment()\n const dotCount = $list.length - Math.ceil(options.slidesPerView) + 1\n\n options.excludeElements.push($pagination as HTMLElement)\n\n paginationInstance.$pagination = $pagination\n paginationInstance.$pageList = $pageList\n \n for (let index = 0; index < dotCount; index++) { \n const $page = renderBullet ? stringToElement(renderBullet(index, bulletClass)) : document.createElement('div')\n\n addClass(\n $page,\n index === instance.state.index ? [bulletClass, bulletActiveClass] : bulletClass\n )\n $pageList.push($page)\n $group.appendChild($page)\n }\n\n $pagination.appendChild($group)\n\n if (paginationOptions.clickable) {\n addClass($pagination, clickableClass)\n\n $pagination.addEventListener('click', (e: Event) => {\n const target = e.target as HTMLElement\n if (!target) return\n e.preventDefault()\n const bulletElement = target.closest(`.${bulletClass}`)\n instance.slideTo($pageList.indexOf(bulletElement as HTMLElement))\n e.stopPropagation()\n })\n }\n })\n\n instance.on('after-destroy', () => {\n if (!isEnable) return\n\n paginationInstance.$pagination!.innerHTML = ''\n paginationInstance.$pageList = []\n paginationInstance.$pagination = null\n })\n\n instance.on('after-slide', (\n currentIndex: number\n ) => {\n const { bulletActiveClass } = paginationOptions\n\n paginationInstance.$pageList && paginationInstance.$pageList.forEach(($page, index) => {\n if (index === currentIndex) {\n addClass($page, bulletActiveClass)\n } else {\n removeClass($page, bulletActiveClass)\n }\n })\n })\n}\n"],"names":["addClass","el","list","Array","isArray","forEach","clz","classList","contains","add","removeClass","remove","stringToElement","string","wrapper","document","createElement","innerHTML","firstChild","SwiperPluginPagination","instance","options","isEnable","Boolean","pagination","paginationOptions","Object","assign","clickable","bulletClass","bulletActiveClass","clickableClass","paginationInstance","$pageList","$pagination","on","renderBullet","element","env","$list","body","querySelector","$group","createDocumentFragment","dotCount","length","Math","ceil","slidesPerView","excludeElements","push","index","$page","state","appendChild","addEventListener","e","target","preventDefault","bulletElement","closest","slideTo","indexOf","stopPropagation","currentIndex"],"mappings":"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"}