@egjs/flicking-plugins 4.7.1 → 4.8.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.esm.js","sources":["../src/Parallax.ts","../src/Fade.ts","../src/AutoPlay.ts","../src/event.ts","../src/const.ts","../src/utils.ts","../src/Arrow.ts","../src/Sync.ts","../src/Perspective.ts","../src/pagination/renderer/Renderer.ts","../src/pagination/renderer/BulletRenderer.ts","../src/pagination/renderer/FractionRenderer.ts","../src/pagination/renderer/ScrollBulletRenderer.ts","../src/pagination/Pagination.ts","../src/index.ts"],"sourcesContent":["import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\n/**\n * You can apply parallax effect while panel is moving.\n * @ko 패널들을 움직이면서 parallax 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Parallax implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: string;\n private _scale: number;\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n\n /**\n * @param {string} selector Selector of the element to apply parallax effect<ko> Parallax 효과를 적용할 엘리먼트의 선택자 </ko>\n * @param {number} scale Effect amplication scale<ko>효과 증폭도</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Parallax(\"img\", 1));\n * ```\n */\n public constructor(selector = \"\", scale = 1) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n\n if (!flicking) return;\n\n const panels = flicking.visiblePanels;\n\n panels.forEach(panel => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = this._selector ? el.querySelector<HTMLElement>(this._selector)! : el;\n const parentTarget = target.parentNode as Element;\n const rect = target.getBoundingClientRect();\n const parentRect = parentTarget.getBoundingClientRect();\n const position = (parentRect.width - rect.width) / 2 * progress * this._scale;\n const transform = `translate(-50%) translate(${position}px)`;\n const style = target.style;\n\n style.cssText += `transform: ${transform};-webkit-transform: ${transform};-ms-transform:${transform}`;\n });\n };\n}\nexport default Parallax;\n","import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\n/**\n * You can apply fade in / out effect while panel is moving.\n * @ko 패널들을 움직이면서 fade in / out 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Fade implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: string;\n private _scale: number;\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n\n /**\n * @param - The selector of the element to which the fade effect is to be applied. If the selector is blank, it applies to panel element. <ko>Fade 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>\n * @param - Effect amplication scale<ko>효과 증폭도</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Fade(\"p\", 1));\n * ```\n */\n public constructor(selector = \"\", scale = 1) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n const selector = this._selector;\n const scale = this._scale;\n\n if (!flicking) return;\n\n const panels = flicking.visiblePanels;\n\n panels.forEach(panel => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = selector ? el.querySelector<HTMLElement>(selector)! : el;\n\n if (target) {\n const opacity = Math.min( 1, Math.max(0, 1 - Math.abs(progress * scale)));\n target.style.opacity = `${opacity}`;\n }\n });\n };\n}\n\nexport default Fade;\n","import Flicking, { EVENTS, Plugin, DIRECTION, MOVE_TYPE } from \"@egjs/flicking\";\n\ninterface AutoPlayOptions {\n duration: number;\n animationDuration: number | undefined;\n direction: typeof DIRECTION[\"NEXT\"] | typeof DIRECTION[\"PREV\"];\n stopOnHover: boolean;\n delayAfterHover: number;\n}\n\n/**\n * Plugin that allow you to automatically move to the next/previous panel, on a specific time basis\n * @ko 일정 시간마다, 자동으로 다음/이전 패널로 넘어가도록 할 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\nclass AutoPlay implements Plugin {\n /* Options */\n private _duration: AutoPlayOptions[\"duration\"];\n private _animationDuration: AutoPlayOptions[\"animationDuration\"];\n private _direction: AutoPlayOptions[\"direction\"];\n private _stopOnHover: AutoPlayOptions[\"stopOnHover\"];\n private _delayAfterHover: AutoPlayOptions[\"delayAfterHover\"];\n\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _timerId = 0;\n private _mouseEntered = false;\n private _playing = false;\n\n public get duration() { return this._duration; }\n public get animationDuration() { return this._animationDuration; }\n public get direction() { return this._direction; }\n public get stopOnHover() { return this._stopOnHover; }\n public get delayAfterHover() { return this._delayAfterHover; }\n public get playing() { return this._playing; }\n\n public set duration(val: number) { this._duration = val; }\n public set animationDuration(val: number | undefined) { this._animationDuration = val; }\n public set direction(val: AutoPlayOptions[\"direction\"]) { this._direction = val; }\n public set stopOnHover(val: boolean) { this._stopOnHover = val; }\n public set delayAfterHover(val: number) { this._delayAfterHover = val; }\n\n /**\n * @param {AutoPlayOptions} options Options for the AutoPlay instance.<ko>AutoPlay 옵션</ko>\n * @param {number} options.duration Time to wait before moving on to the next panel.<ko>다음 패널로 움직이기까지 대기 시간</ko>\n * @param {number | undefined} options.animationDuration Duration of animation of moving to the next panel. If undefined, duration option of the Flicking instance is used instead.<ko>패널이 움직이는 애니메이션의 지속 시간, undefined라면 Flicking 인스턴스의 duration 값을 사용한다</ko>\n * @param {\"PREV\" | \"NEXT\"} options.direction The direction in which the panel moves.<ko>패널이 움직이는 방향</ko>\n * @param {boolean} options.stopOnHover Whether to stop when mouse hover upon the element.<ko>엘리먼트에 마우스를 올렸을 때 AutoPlay를 정지할지 여부</ko>\n * @param {number} options.delayAfterHover If stopOnHover is true, the amount of time to wait before moving on to the next panel when mouse leaves the element.<ko>stopOnHover를 사용한다면 마우스가 엘리먼트로부터 나간 뒤 다음 패널로 움직이기까지 대기 시간</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new AutoPlay({ duration: 2000, direction: \"NEXT\" }));\n * ```\n */\n public constructor({\n duration = 2000,\n animationDuration = undefined,\n direction = DIRECTION.NEXT,\n stopOnHover = false,\n delayAfterHover\n }: Partial<AutoPlayOptions> = {}) {\n this._duration = duration;\n this._animationDuration = animationDuration;\n this._direction = direction;\n this._stopOnHover = stopOnHover;\n this._delayAfterHover = delayAfterHover ?? duration;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n flicking.on({\n [EVENTS.MOVE_START]: this.stop,\n [EVENTS.HOLD_START]: this.stop,\n [EVENTS.MOVE_END]: this.play,\n [EVENTS.SELECT]: this.play\n });\n\n this._flicking = flicking;\n if (this._stopOnHover) {\n const targetEl = this._flicking.element;\n targetEl.addEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.addEventListener(\"mouseleave\", this._onMouseLeave, false);\n }\n\n this.play();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n this._mouseEntered = false;\n this.stop();\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE_START, this.stop);\n flicking.off(EVENTS.HOLD_START, this.stop);\n flicking.off(EVENTS.MOVE_END, this.play);\n flicking.off(EVENTS.SELECT, this.play);\n\n const targetEl = flicking.element;\n targetEl.removeEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.removeEventListener(\"mouseleave\", this._onMouseLeave, false);\n\n this._flicking = null;\n }\n\n public update(): void {\n // DO-NOTHING\n }\n\n public play = () => {\n this._movePanel(this._duration);\n };\n\n public stop = () => {\n this._playing = false;\n clearTimeout(this._timerId);\n };\n\n private _movePanel(duration: number): void {\n const flicking = this._flicking;\n const direction = this._direction;\n\n if (!flicking) {\n return;\n }\n\n this.stop();\n\n if (this._mouseEntered || flicking.animating) {\n return;\n }\n\n this._playing = true;\n this._timerId = window.setTimeout(() => {\n let animationDuration = this._animationDuration || flicking.duration;\n const moveType = flicking.moveType;\n // for freeScroll\n if (moveType === MOVE_TYPE.FREE_SCROLL || moveType?.[0] === MOVE_TYPE.FREE_SCROLL) {\n const range = flicking.camera.range;\n const cameraPosition = flicking.camera.position;\n const currentPanel = flicking.currentPanel;\n const prevPanel = currentPanel.prev();\n const nextPanel = currentPanel.next();\n const currentPosition = currentPanel.position;\n let nextPosition = nextPanel?.position ?? range.max;\n let prevPosition = prevPanel?.position ?? range.min;\n\n // circular: prev (last) > cur (0) => prev(-1) < cur(0)\n if (prevPosition > currentPosition) {\n prevPosition = range.min - (range.max - prevPosition);\n }\n // current (last) > next (0)\n if (nextPosition < currentPosition) {\n nextPosition += range.max;\n }\n if (direction === DIRECTION.NEXT) {\n // prev - cur - camera - next\n const size = nextPosition - currentPosition;\n let restSize = nextPosition - cameraPosition;\n\n if (cameraPosition < currentPosition) {\n // prev - camera - cur - next\n restSize = nextPosition - cameraPosition;\n }\n\n animationDuration *= restSize / size;\n } else {\n // prev - caemra - cur - next\n const size = currentPosition - prevPosition;\n let restSize = cameraPosition - prevPosition;\n\n if (cameraPosition > currentPosition) {\n // prev - cur - camera - next\n restSize = cameraPosition - prevPosition;\n }\n animationDuration *= restSize / size;\n }\n }\n\n if (direction === DIRECTION.NEXT) {\n flicking.next(animationDuration).catch(() => void 0);\n } else {\n flicking.prev(animationDuration).catch(() => void 0);\n }\n\n this.play();\n }, duration);\n }\n\n private _onMouseEnter = () => {\n this._mouseEntered = true;\n this.stop();\n };\n\n private _onMouseLeave = () => {\n this._mouseEntered = false;\n this._movePanel(this._delayAfterHover);\n };\n}\n\nexport default AutoPlay;\n","export const BROWSER = {\n CLICK: \"click\",\n MOUSE_DOWN: \"mousedown\",\n TOUCH_START: \"touchstart\"\n};\n","export const ARROW = {\n PREV_SELECTOR: \".flicking-arrow-prev\",\n NEXT_SELECTOR: \".flicking-arrow-next\",\n DISABLED_CLASS: \"flicking-arrow-disabled\"\n} as const;\n\nexport const PAGINATION = {\n SELECTOR: \".flicking-pagination\",\n PREFIX: \"flicking-pagination\",\n BULLET_WRAPPER_SUFFIX: \"bullets\",\n BULLET_SUFFIX: \"bullet\",\n BULLET_ACTIVE_SUFFIX: \"bullet-active\",\n FRACTION_WRAPPER_SUFFIX: \"fraction\",\n FRACTION_CURRENT_SUFFIX: \"fraction-current\",\n FRACTION_TOTAL_SUFFIX: \"fraction-total\",\n SCROLL_UNINIT_SUFFIX: \"uninitialized\",\n SCROLL_WRAPPER_SUFFIX: \"scroll\",\n SCROLL_SLIDER_SUFFIX: \"slider\",\n SCROLL_PREV_SUFFIX: \"bullet-prev\",\n SCROLL_NEXT_SUFFIX: \"bullet-next\",\n TYPE: {\n BULLET: \"bullet\",\n FRACTION: \"fraction\",\n SCROLL: \"scroll\"\n }\n} as const;\n\nexport const SYNC = {\n TYPE: {\n CAMERA: \"camera\",\n INDEX: \"index\"\n }\n} as const;\n","export const addClass = (el: HTMLElement, className: string) => {\n if (!el) return;\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n const classes = el.className.split(\" \");\n\n if (classes.indexOf(className) < 0) {\n el.className = `${el.className} ${className}`;\n }\n }\n};\n\nexport const removeClass = (el: HTMLElement, className: string) => {\n if (!el) return;\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n const classRegex = new RegExp(`( |^)${className}( |$)`, \"g\");\n el.className.replace(classRegex, \" \");\n }\n};\n\nexport const getElement = (selector: string, parent: HTMLElement, pluginName: string) => {\n const el = parent.querySelector(selector);\n\n if (!el) {\n throw new Error(`[Flicking-${pluginName}] Couldn't find element with the given selector: ${selector}`);\n }\n\n return el as HTMLElement;\n};\n","import Flicking, { EVENTS, FlickingError, Plugin } from \"@egjs/flicking\";\n\nimport { BROWSER } from \"./event\";\nimport { ARROW } from \"./const\";\nimport { addClass, getElement, removeClass } from \"./utils\";\n\ninterface ArrowOptions {\n parentEl: HTMLElement | null;\n prevElSelector: string;\n nextElSelector: string;\n disabledClass: string;\n moveCount: number;\n moveByViewportSize: boolean;\n}\n\n/**\n * A plugin to easily create prev/right arrow button of Flicking\n * @ko 이전/다음 버튼을 쉽게 만들 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\nclass Arrow implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _prevEl: HTMLElement;\n private _nextEl: HTMLElement;\n\n /* Options */\n private _parentEl: ArrowOptions[\"parentEl\"];\n private _prevElSelector: ArrowOptions[\"prevElSelector\"];\n private _nextElSelector: ArrowOptions[\"nextElSelector\"];\n private _disabledClass: ArrowOptions[\"disabledClass\"];\n private _moveCount: ArrowOptions[\"moveCount\"];\n private _moveByViewportSize: ArrowOptions[\"moveByViewportSize\"];\n\n public get prevEl() { return this._prevEl; }\n public get nextEl() { return this._nextEl; }\n\n public get parentEl() { return this._parentEl; }\n public get prevElSelector() { return this._prevElSelector; }\n public get nextElSelector() { return this._nextElSelector; }\n public get disabledClass() { return this._disabledClass; }\n public get moveCount() { return this._moveCount; }\n public get moveByViewportSize() { return this._moveByViewportSize; }\n\n public set parentEl(val: ArrowOptions[\"parentEl\"]) { this._parentEl = val; }\n public set prevElSelector(val: ArrowOptions[\"prevElSelector\"]) { this._prevElSelector = val; }\n public set nextElSelector(val: ArrowOptions[\"nextElSelector\"]) { this._nextElSelector = val; }\n public set disabledClass(val: ArrowOptions[\"disabledClass\"]) { this._disabledClass = val; }\n public set moveCount(val: ArrowOptions[\"moveCount\"]) { this._moveCount = val; }\n public set moveByViewportSize(val: ArrowOptions[\"moveByViewportSize\"]) { this._moveByViewportSize = val; }\n\n public constructor({\n parentEl = null,\n prevElSelector = ARROW.PREV_SELECTOR,\n nextElSelector = ARROW.NEXT_SELECTOR,\n disabledClass = ARROW.DISABLED_CLASS,\n moveCount = 1,\n moveByViewportSize = false\n }: Partial<ArrowOptions> = {}) {\n this._parentEl = parentEl;\n this._prevElSelector = prevElSelector;\n this._nextElSelector = nextElSelector;\n this._disabledClass = disabledClass;\n this._moveCount = moveCount;\n this._moveByViewportSize = moveByViewportSize;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onAnimation);\n\n const parentEl = this._parentEl ? this._parentEl : flicking.element;\n const prevEl = getElement(this._prevElSelector, parentEl, \"Arrow\");\n const nextEl = getElement(this._nextElSelector, parentEl, \"Arrow\");\n\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(evt => {\n prevEl.addEventListener(evt, this._preventInputPropagation, { passive: true });\n nextEl.addEventListener(evt, this._preventInputPropagation, { passive: true });\n });\n\n prevEl.addEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.addEventListener(BROWSER.CLICK, this._onNextClick);\n\n this._prevEl = prevEl;\n this._nextEl = nextEl;\n\n this.update();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE, this._onAnimation);\n\n const prevEl = this._prevEl;\n const nextEl = this._nextEl;\n\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(evt => {\n prevEl.removeEventListener(evt, this._preventInputPropagation);\n nextEl.removeEventListener(evt, this._preventInputPropagation);\n });\n\n prevEl.removeEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.removeEventListener(BROWSER.CLICK, this._onNextClick);\n this._flicking = null;\n }\n\n public update(): void {\n this._updateClass(this._flicking!.camera.position);\n }\n\n private _preventInputPropagation = (e: Event) => {\n e.stopPropagation();\n };\n\n private _onPrevClick = () => {\n const flicking = this._flicking!;\n const camera = flicking.camera;\n const anchorPoints = camera.anchorPoints;\n\n if (flicking.animating || anchorPoints.length <= 0) return;\n\n const firstAnchor = anchorPoints[0];\n const moveCount = this._moveCount;\n\n if (this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position - camera.size, flicking.duration)\n .catch(this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n let targetPanel = flicking.currentPanel;\n\n for (let i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.prev()!;\n }\n\n targetPanel.focus().catch(this._onCatch);\n } else if (flicking.index > firstAnchor.panel.index) {\n flicking.moveTo(Math.max(flicking.index - moveCount, firstAnchor.panel.index))\n .catch(this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(flicking.index)\n .catch(this._onCatch);\n }\n }\n };\n\n private _onNextClick = () => {\n const flicking = this._flicking!;\n\n const camera = flicking.camera;\n const anchorPoints = camera.anchorPoints;\n\n if (flicking.animating || anchorPoints.length <= 0) return;\n\n const lastAnchor = anchorPoints[anchorPoints.length - 1];\n const moveCount = this._moveCount;\n\n if (this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position + camera.size, flicking.duration)\n .catch(this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n let targetPanel = flicking.currentPanel;\n\n for (let i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.next()!;\n }\n\n targetPanel.focus().catch(this._onCatch);\n } else if (flicking.index < lastAnchor.panel.index) {\n flicking.moveTo(Math.min(flicking.index + moveCount, lastAnchor.panel.index))\n .catch(this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(flicking.index)\n .catch(this._onCatch);\n }\n }\n };\n\n private _onAnimation = () => {\n const flicking = this._flicking!;\n const camera = flicking.camera;\n const controller = flicking.control.controller;\n\n if (flicking.holding) {\n this._updateClass(camera.position);\n } else {\n this._updateClass(controller.animatingContext.end);\n }\n };\n\n private _updateClass(pos: number) {\n const flicking = this._flicking!;\n const disabledClass = this._disabledClass;\n const prevEl = this._prevEl;\n const nextEl = this._nextEl;\n const cameraRange = flicking.camera.range;\n\n const stopAtPrevEdge = flicking.circularEnabled\n ? false\n : pos <= cameraRange.min;\n const stopAtNextEdge = flicking.circularEnabled\n ? false\n : pos >= cameraRange.max;\n\n if (stopAtPrevEdge) {\n addClass(prevEl, disabledClass);\n } else {\n removeClass(prevEl, disabledClass);\n }\n\n if (stopAtNextEdge) {\n addClass(nextEl, disabledClass);\n } else {\n removeClass(nextEl, disabledClass);\n }\n }\n\n private _onCatch = (err: Error) => {\n if (err instanceof FlickingError) return;\n throw err;\n };\n}\n\nexport default Arrow;\n","import Flicking, { clamp, EVENTS } from \"@egjs/flicking\";\nimport type { MoveEndEvent, MoveEvent, MoveStartEvent, Plugin, WillChangeEvent, SelectEvent } from \"@egjs/flicking\";\n\nimport { SYNC } from \"./const\";\nimport { addClass, removeClass } from \"./utils\";\n\n/**\n * @property {string} [type=\"camera\"] Types of methods to synchronize between Flickings. \"camera\" will sync by camera position, and \"index\" will sync by panel index\n * @property {SychronizableFlickingOptions} [synchronizedFlickingOptions=[]]\tDetailed options for syncing Flickings.\n */\nexport interface SyncOptions {\n type: typeof SYNC.TYPE.CAMERA | typeof SYNC.TYPE.INDEX;\n synchronizedFlickingOptions: SychronizableFlickingOptions[];\n}\n\n/**\n * @property {Flicking} flicking An instance of Flicking to sync\n * @property {boolean} [isClickable=false] By enabling this option, clicking the given Flicking's panel will change the given & other Flicking's index\n * @property {boolean} [isSlidable=false] By enabling this option, the given Flicking's scroll with mouse/touch input will change other Flicking's index. Only available for the index type\n * @property {string | undefined} [activeClass=undefined] An extra class for the panels when selected\n */\nexport interface SychronizableFlickingOptions {\n flicking: Flicking;\n isClickable?: boolean;\n isSlidable?: boolean;\n activeClass?: string;\n}\n\n/**\n * Plugin for synchronizing multiple flickings\n * @ko 다양한 형태로 Flicking들이 같이 움직이게 할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Sync implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n\n /* Options */\n private _type: SyncOptions[\"type\"];\n private _synchronizedFlickingOptions: SyncOptions[\"synchronizedFlickingOptions\"];\n\n public get type() { return this._type; }\n public get synchronizedFlickingOptions() { return this._synchronizedFlickingOptions; }\n\n public set type(val: SyncOptions[\"type\"]) {\n this._type = val;\n }\n\n public set synchronizedFlickingOptions(val: SyncOptions[\"synchronizedFlickingOptions\"]) {\n this._synchronizedFlickingOptions = val;\n }\n\n /** */\n public constructor({\n type = SYNC.TYPE.CAMERA,\n synchronizedFlickingOptions = []\n }: Partial<SyncOptions> = {}) {\n this._type = type;\n this._synchronizedFlickingOptions = synchronizedFlickingOptions;\n }\n\n public init(flicking: Flicking): void {\n const synced = this._synchronizedFlickingOptions;\n\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n this._addEvents();\n\n synced.forEach(options => {\n const { flicking: syncedFlicking } = options;\n\n this._updateClass(options, syncedFlicking.defaultIndex);\n });\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n this._removeEvents();\n\n this._flicking = null;\n }\n\n public update(): void {\n this._synchronizedFlickingOptions.forEach(options => {\n this._updateClass(options, options.flicking.index);\n });\n }\n\n private _preventEvent(fn: () => void) {\n this._removeEvents();\n fn();\n this._addEvents();\n }\n\n private _addEvents = (): void => {\n const type = this._type;\n const synced = this._synchronizedFlickingOptions;\n\n synced.forEach(({ flicking, isSlidable, isClickable }) => {\n if (type === SYNC.TYPE.CAMERA) {\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.MOVE_START, this._onMoveStart);\n flicking.on(EVENTS.MOVE_END, this._onMoveEnd);\n }\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.on(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, this._onIndexChange);\n }\n if (isClickable) {\n flicking.on(EVENTS.SELECT, this._onSelect);\n }\n });\n };\n\n private _removeEvents = (): void => {\n const type = this._type;\n const synced = this._synchronizedFlickingOptions;\n\n synced.forEach(({ flicking, isSlidable, isClickable }) => {\n if (type === SYNC.TYPE.CAMERA) {\n flicking.off(EVENTS.MOVE, this._onMove);\n flicking.off(EVENTS.MOVE_START, this._onMoveStart);\n flicking.off(EVENTS.MOVE_END, this._onMoveEnd);\n }\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.off(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, this._onIndexChange);\n }\n if (isClickable) {\n flicking.off(EVENTS.SELECT, this._onSelect);\n }\n });\n };\n\n private _onIndexChange = (e: WillChangeEvent): void => {\n const flicking = e.currentTarget;\n\n if (!flicking.initialized) {\n return;\n }\n\n this._synchronizeByIndex(flicking, e.index);\n };\n\n private _onMove = (e: MoveEvent): void => {\n const camera = e.currentTarget.camera;\n const progress = (camera.position - camera.range.min) / camera.rangeDiff;\n\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking === e.currentTarget) return;\n\n let targetPosition = 0;\n\n if (camera.position < camera.range.min) {\n targetPosition = camera.position;\n } else if (camera.position > camera.range.max) {\n targetPosition = flicking.camera.range.max + camera.position - camera.range.max;\n } else {\n targetPosition = flicking.camera.range.min + flicking.camera.rangeDiff * progress;\n }\n\n void flicking.camera.lookAt(targetPosition);\n });\n };\n\n private _onMoveStart = (e: MoveStartEvent): void => {\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking !== e.currentTarget) {\n flicking.disableInput();\n }\n });\n };\n\n private _onMoveEnd = (e: MoveEndEvent): void => {\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking !== e.currentTarget) {\n flicking.enableInput();\n flicking.control.updateInput();\n }\n });\n };\n\n private _onSelect = (e: SelectEvent): void => {\n void e.currentTarget.moveTo(e.index).catch(() => void 0);\n\n this._synchronizeByIndex(e.currentTarget, e.index);\n };\n\n private _synchronizeByIndex = (activeFlicking: Flicking, index: number): void => {\n const synchronizedFlickingOptions = this._synchronizedFlickingOptions;\n\n this._preventEvent(() => {\n synchronizedFlickingOptions.forEach(options => {\n // Active class should be applied same to the Flicking which triggered event\n this._updateClass(options, index);\n\n const { flicking } = options;\n if (flicking === activeFlicking) return;\n\n const targetIndex = clamp(index, 0, flicking.panels.length);\n\n if (flicking.animating) {\n // Reserve moveTo once previous animation is finished\n flicking.once(EVENTS.MOVE_END, () => {\n void flicking.moveTo(targetIndex).catch(() => void 0);\n });\n } else {\n void flicking.moveTo(targetIndex);\n }\n });\n });\n };\n\n private _updateClass = ({ flicking, activeClass }: SychronizableFlickingOptions, index: number): void => {\n if (!activeClass) return;\n\n flicking.panels.forEach(panel => {\n if (panel.index === index) {\n addClass(panel.element, activeClass);\n } else {\n removeClass(panel.element, activeClass);\n }\n });\n };\n}\n\nexport default Sync;\n","/* eslint-disable no-underscore-dangle */\nimport Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\ninterface PerspectiveOptions {\n selector: string;\n scale: number;\n rotate: number;\n perspective: number;\n}\n\n/**\n * You can apply perspective effect while panel is moving.\n * @ko 패널들을 움직이면서 입체감을 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Perspective implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: PerspectiveOptions[\"selector\"];\n private _scale: PerspectiveOptions[\"scale\"];\n private _rotate: PerspectiveOptions[\"rotate\"];\n private _perspective: PerspectiveOptions[\"perspective\"];\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n public get rotate() { return this._rotate; }\n public get perspective() { return this._perspective; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n public set rotate(val: number) { this._rotate = val; }\n public set perspective(val: number) { this._perspective = val; }\n\n /**\n * @param - The selector of the element to which the perspective effect is to be applied. If the selector is blank, it applies to panel element. <ko>입체 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>\n * @param - Effect amplication scale.<ko>효과 증폭도</ko>\n * @param - Effect amplication rotate.<ko>회전 증폭도</ko>\n * @param - The value of perspective CSS property. <ko>css perspective 속성 값</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Perspective({ selector: \"p\", scale: 1, rotate: 1, perspective = 1000 }));\n * ```\n */\n public constructor({ selector = \"\", scale = 1, rotate = 1, perspective = 1000 }: Partial<PerspectiveOptions> = {}) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n this._rotate = rotate;\n this._perspective = perspective;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n const selector = this._selector;\n const scale = this._scale;\n const rotate = this._rotate;\n const perspective = this._perspective;\n\n if (!flicking) return;\n\n const horizontal = flicking.horizontal;\n const panels = flicking.visiblePanels;\n\n panels.forEach((panel) => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = selector ? el.querySelector<HTMLElement>(selector)! : el;\n const panelScale = 1 / (Math.abs(progress * scale) + 1);\n const rotateDegree = progress > 0 ? Math.min(90, progress * 100 * rotate) : Math.max(-90, progress * 100 * rotate);\n const [rotateX, rotateY] = horizontal ? [0, rotateDegree] : [rotateDegree, 0];\n\n target.style.transform = `perspective(${perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${panelScale})`;\n });\n };\n}\n\nexport default Perspective;\n","import Flicking, { FlickingError } from \"@egjs/flicking\";\n\nimport { BROWSER } from \"../../event\";\nimport Pagination from \"../Pagination\";\n\nexport interface RendererOptions {\n flicking: Flicking;\n pagination: Pagination;\n wrapper: HTMLElement;\n}\n\nabstract class Renderer {\n protected _flicking: Flicking;\n protected _pagination: Pagination;\n protected _wrapper: HTMLElement;\n\n public constructor({\n flicking,\n pagination,\n wrapper\n }: RendererOptions) {\n this._flicking = flicking;\n this._pagination = pagination;\n this._wrapper = wrapper;\n }\n\n public abstract destroy(): void;\n public abstract render(): void;\n public abstract update(index: number): void;\n\n protected _createBulletFromString(html: string, index: number) {\n const range = document.createRange();\n const frag = range.createContextualFragment(html);\n const bullet = frag.firstChild as HTMLElement;\n\n this._addBulletEvents(bullet, index);\n\n return bullet;\n }\n\n protected _addBulletEvents(bullet: HTMLElement, index: number) {\n const anchorPoints = this._flicking.camera.anchorPoints;\n const panelIndex = anchorPoints[index].panel.index;\n\n bullet.addEventListener(BROWSER.MOUSE_DOWN, e => {\n e.stopPropagation();\n });\n\n bullet.addEventListener(BROWSER.TOUCH_START, e => {\n e.stopPropagation();\n }, { passive: true });\n\n bullet.addEventListener(BROWSER.CLICK, () => {\n this._flicking.moveTo(panelIndex)\n .catch(err => {\n if (err instanceof FlickingError) return;\n throw err;\n });\n });\n }\n}\n\nexport default Renderer;\n","import { PAGINATION } from \"../../const\";\nimport { addClass, removeClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass BulletRenderer extends Renderer {\n private _bullets: HTMLElement[] = [];\n private _prevIndex: number = -1;\n\n private get _bulletClass() {\n const pagination = this._pagination;\n return `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n }\n\n private get _activeClass() {\n const pagination = this._pagination;\n return `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;\n }\n\n public destroy() {\n this._bullets = [];\n this._prevIndex = -1;\n }\n\n public render() {\n const flicking = this._flicking;\n const pagination = this._pagination;\n const wrapper = this._wrapper;\n const bulletClass = this._bulletClass;\n const activeClass = this._activeClass;\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n const bulletWrapperClass = `${pagination.classPrefix}-${PAGINATION.BULLET_WRAPPER_SUFFIX}`;\n const anchorPoints = flicking.camera.anchorPoints;\n\n addClass(wrapper, bulletWrapperClass);\n\n wrapper.innerHTML = anchorPoints\n .map((anchorPoint, index) => {\n if (renderActiveBullet && anchorPoint.panel.index === flicking.index) {\n return renderActiveBullet(bulletClass, index);\n } else {\n return renderBullet(bulletClass, index);\n }\n })\n .join(\"\\n\");\n\n const bullets = [].slice.call(wrapper.children) as HTMLElement[];\n\n bullets.forEach((bullet, index) => {\n const anchorPoint = anchorPoints[index];\n\n if (anchorPoint.panel.index === flicking.index) {\n addClass(bullet, activeClass);\n this._prevIndex = index;\n }\n\n this._addBulletEvents(bullet, index);\n });\n\n this._bullets = bullets;\n }\n\n public update(index: number) {\n const flicking = this._flicking;\n const pagination = this._pagination;\n const wrapper = this._wrapper;\n const bullets = this._bullets;\n const bulletClass = this._bulletClass;\n const activeClass = this._activeClass;\n const prevIndex = this._prevIndex;\n const anchorPoints = flicking.camera.anchorPoints;\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n\n if (anchorPoints.length <= 0) return;\n\n const anchorOffset = anchorPoints[0].panel.index;\n const activeBulletIndex = index - anchorOffset;\n\n if (prevIndex === activeBulletIndex) return;\n\n if (renderActiveBullet) {\n const prevBullet = bullets[prevIndex];\n if (prevBullet) {\n const newBullet = this._createBulletFromString(\n renderBullet(bulletClass, prevIndex),\n prevIndex\n );\n prevBullet.parentElement!.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n const activeBullet = bullets[activeBulletIndex];\n const newActiveBullet = this._createBulletFromString(\n renderActiveBullet(`${bulletClass} ${activeClass}`, activeBulletIndex),\n activeBulletIndex\n );\n\n wrapper.replaceChild(newActiveBullet, activeBullet);\n bullets[activeBulletIndex] = newActiveBullet;\n } else {\n const activeBullet = bullets[activeBulletIndex];\n const prevBullet = bullets[prevIndex];\n\n if (prevBullet) {\n removeClass(prevBullet, activeClass);\n }\n\n addClass(activeBullet, activeClass);\n }\n\n this._prevIndex = activeBulletIndex;\n }\n}\n\nexport default BulletRenderer;\n","import { PAGINATION } from \"../../const\";\nimport { addClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass FractionRenderer extends Renderer {\n private _prevIndex: number = -1;\n private _prevTotal: number = -1;\n\n public destroy(): void {\n this._prevIndex = -1;\n this._prevTotal = -1;\n }\n\n public render() {\n const flicking = this._flicking;\n const wrapper = this._wrapper;\n const pagination = this._pagination;\n const fractionWrapperClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_WRAPPER_SUFFIX}`;\n const fractionCurrentClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;\n const fractionTotalClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;\n\n addClass(wrapper, fractionWrapperClass);\n\n wrapper.innerHTML = pagination.renderFraction(fractionCurrentClass, fractionTotalClass);\n\n this.update(flicking.index);\n }\n\n public update(index: number) {\n const flicking = this._flicking;\n const wrapper = this._wrapper;\n const pagination = this._pagination;\n\n const anchorPoints = flicking.camera.anchorPoints;\n const currentIndex = anchorPoints.length > 0\n ? index - anchorPoints[0].panel.index + 1\n : 0;\n const anchorCount = anchorPoints.length;\n\n if (currentIndex === this._prevIndex && anchorCount === this._prevTotal) return;\n\n const fractionCurrentSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;\n const fractionTotalSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;\n\n const currentWrapper = wrapper.querySelector(fractionCurrentSelector) as HTMLElement;\n const totalWrapper = wrapper.querySelector(fractionTotalSelector) as HTMLElement;\n\n currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);\n totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);\n\n this._prevIndex = currentIndex;\n this._prevTotal = anchorCount;\n }\n}\n\nexport default FractionRenderer;\n","import { DIRECTION } from \"@egjs/flicking\";\n\nimport { PAGINATION } from \"../../const\";\nimport { addClass, removeClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass ScrollBulletRenderer extends Renderer {\n private _bullets: HTMLElement[] = [];\n private _bulletSize: number = 0;\n private _previousIndex: number = -1;\n private _sliderIndex: number = -1;\n\n public destroy(): void {\n this._bullets = [];\n this._bulletSize = 0;\n this._previousIndex = -1;\n this._sliderIndex = -1;\n }\n\n public render() {\n const wrapper = this._wrapper;\n const flicking = this._flicking;\n const pagination = this._pagination;\n const renderBullet = pagination.renderBullet;\n const anchorPoints = flicking.camera.anchorPoints;\n\n const dynamicWrapperClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_WRAPPER_SUFFIX}`;\n const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n const sliderClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_SLIDER_SUFFIX}`;\n const uninitClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_UNINIT_SUFFIX}`;\n\n const sliderEl = document.createElement(\"div\");\n\n addClass(sliderEl, sliderClass);\n addClass(wrapper, uninitClass);\n addClass(wrapper, dynamicWrapperClass);\n wrapper.appendChild(sliderEl);\n\n sliderEl.innerHTML = anchorPoints\n .map((_, index) => renderBullet(bulletClass, index))\n .join(\"\\n\");\n\n const bullets = [].slice.call(sliderEl.children) as HTMLElement[];\n\n bullets.forEach((bullet, index) => {\n this._addBulletEvents(bullet, index);\n });\n\n if (bullets.length <= 0) return;\n\n const bulletStyle = getComputedStyle(bullets[0]);\n const bulletSize = bullets[0].clientWidth + parseFloat(bulletStyle.marginLeft) + parseFloat(bulletStyle.marginRight);\n\n wrapper.style.width = `${bulletSize * pagination.bulletCount}px`;\n\n this._bullets = bullets;\n this._bulletSize = bulletSize;\n this._previousIndex = -1;\n\n this.update(this._flicking.index);\n\n window.requestAnimationFrame(() => {\n removeClass(wrapper, uninitClass);\n });\n }\n\n public update(index: number) {\n const pagination = this._pagination;\n const flicking = this._flicking;\n const bullets = this._bullets;\n const prevIndex = this._previousIndex;\n\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n\n const anchorPoints = flicking.camera.anchorPoints;\n const anchorOffset = anchorPoints[0].panel.index;\n const activeIndex = index - anchorOffset;\n\n if (anchorPoints.length <= 0) return;\n\n const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n const bulletActiveClass = `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;\n const prevClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_PREV_SUFFIX}`;\n const nextClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_NEXT_SUFFIX}`;\n const bulletPrevClass = (offset: number) => `${prevClassPrefix}${offset > 1 ? offset : \"\"}`;\n const bulletNextClass = (offset: number) => `${nextClassPrefix}${offset > 1 ? offset : \"\"}`;\n\n const prevClassRegex = new RegExp(`^${prevClassPrefix}`);\n const nextClassRegex = new RegExp(`^${nextClassPrefix}`);\n\n if (renderActiveBullet) {\n const prevBullet = bullets[prevIndex];\n if (prevBullet) {\n const newBullet = this._createBulletFromString(\n renderBullet(bulletClass, prevIndex),\n prevIndex\n );\n prevBullet.parentElement!.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n const activeBullet = bullets[activeIndex];\n if (activeBullet) {\n const newActiveBullet = this._createBulletFromString(\n renderActiveBullet(bulletClass, activeIndex),\n activeIndex\n );\n\n activeBullet.parentElement!.replaceChild(newActiveBullet, activeBullet);\n bullets[activeIndex] = newActiveBullet;\n }\n }\n\n bullets.forEach((bullet, idx) => {\n const indexOffset = idx - activeIndex;\n const classList = bullet.className.split(\" \");\n\n for (const className of classList) {\n if (className === bulletActiveClass || prevClassRegex.test(className) || nextClassRegex.test(className)) {\n removeClass(bullet, className);\n }\n }\n\n if (indexOffset === 0) {\n addClass(bullet, bulletActiveClass);\n } else if (indexOffset > 0) {\n addClass(bullet, bulletNextClass(Math.abs(indexOffset)));\n } else {\n addClass(bullet, bulletPrevClass(Math.abs(indexOffset)));\n }\n });\n\n pagination.scrollOnChange(activeIndex, {\n total: bullets.length,\n prevIndex,\n sliderIndex: this._sliderIndex,\n direction: activeIndex > prevIndex ? DIRECTION.NEXT : DIRECTION.PREV,\n bullets: [...bullets],\n moveTo: this.moveTo\n });\n\n this._previousIndex = activeIndex;\n }\n\n public moveTo = (index: number): void => {\n const pagination = this._pagination;\n const sliderEl = this._wrapper.firstElementChild as HTMLElement;\n const bulletSize = this._bulletSize;\n const wrapperSize = bulletSize * pagination.bulletCount;\n\n sliderEl.style.transform = `translate(${wrapperSize / 2 - (index + 0.5) * bulletSize}px)`;\n this._sliderIndex = index;\n };\n}\n\nexport default ScrollBulletRenderer;\n","import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\nimport { PAGINATION } from \"../const\";\nimport ScrollContext from \"../type\";\n\nimport Renderer from \"./renderer/Renderer\";\nimport BulletRenderer from \"./renderer/BulletRenderer\";\nimport FractionRenderer from \"./renderer/FractionRenderer\";\nimport ScrollBulletRenderer from \"./renderer/ScrollBulletRenderer\";\n\nexport interface PaginationOptions {\n parentEl: HTMLElement | null;\n selector: string;\n type: \"bullet\" | \"fraction\" | \"scroll\";\n classPrefix: string;\n bulletCount: number;\n renderBullet: (className: string, index: number) => string;\n renderFraction: (currentClass: string, totalClass: string) => string;\n renderActiveBullet: ((className: string, index: number) => string) | null;\n fractionCurrentFormat: (index: number) => string;\n fractionTotalFormat: (total: number) => string;\n scrollOnChange: (index: number, ctx: ScrollContext) => any;\n}\n\n/**\n * @memberof Flicking.Plugins\n */\nclass Pagination implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _renderer: Renderer;\n private _wrapper: HTMLElement;\n\n /* Options */\n private _parentEl: PaginationOptions[\"parentEl\"];\n private _selector: PaginationOptions[\"selector\"];\n private _type: PaginationOptions[\"type\"];\n private _classPrefix: PaginationOptions[\"classPrefix\"];\n private _bulletCount: PaginationOptions[\"bulletCount\"];\n private _renderBullet: PaginationOptions[\"renderBullet\"];\n private _renderActiveBullet: PaginationOptions[\"renderActiveBullet\"];\n private _renderFraction: PaginationOptions[\"renderFraction\"];\n private _fractionCurrentFormat: PaginationOptions[\"fractionCurrentFormat\"];\n private _fractionTotalFormat: PaginationOptions[\"fractionTotalFormat\"];\n private _scrollOnChange: PaginationOptions[\"scrollOnChange\"];\n\n public get parentEl() { return this._parentEl; }\n public get selector() { return this._selector; }\n public get type() { return this._type; }\n public get classPrefix() { return this._classPrefix; }\n public get bulletCount() { return this._bulletCount; }\n public get renderBullet() { return this._renderBullet; }\n public get renderActiveBullet() { return this._renderActiveBullet; }\n public get renderFraction() { return this._renderFraction; }\n public get fractionCurrentFormat() { return this._fractionCurrentFormat; }\n public get fractionTotalFormat() { return this._fractionTotalFormat; }\n public get scrollOnChange() { return this._scrollOnChange; }\n\n public set parentEl(val: PaginationOptions[\"parentEl\"]) { this._parentEl = val; }\n public set selector(val: PaginationOptions[\"selector\"]) { this._selector = val; }\n public set type(val: PaginationOptions[\"type\"]) { this._type = val; }\n public set bulletWrapperclassPrefixClass(val: PaginationOptions[\"classPrefix\"]) { this._classPrefix = val; }\n public set bulletCount(val: PaginationOptions[\"bulletCount\"]) { this._bulletCount = val; }\n public set renderBullet(val: PaginationOptions[\"renderBullet\"]) { this._renderBullet = val; }\n public set renderActiveBullet(val: PaginationOptions[\"renderActiveBullet\"]) { this._renderActiveBullet = val; }\n public set renderFraction(val: PaginationOptions[\"renderFraction\"]) { this._renderFraction = val; }\n public set fractionCurrentFormat(val: PaginationOptions[\"fractionCurrentFormat\"]) { this._fractionCurrentFormat = val; }\n public set fractionTotalFormat(val: PaginationOptions[\"fractionTotalFormat\"]) { this._fractionTotalFormat = val; }\n public set scrollOnChange(val: PaginationOptions[\"scrollOnChange\"]) { this._scrollOnChange = val; }\n\n public constructor({\n parentEl = null,\n selector = PAGINATION.SELECTOR,\n type = PAGINATION.TYPE.BULLET,\n classPrefix = PAGINATION.PREFIX,\n bulletCount = 5,\n renderBullet = (className: string) => `<span class=\"${className}\"></span>`,\n renderActiveBullet = null,\n renderFraction = (currentClass: string, totalClass: string) => `<span class=\"${currentClass}\"></span>/<span class=\"${totalClass}\"></span>`,\n fractionCurrentFormat = (index: number) => index.toString(),\n fractionTotalFormat = (index: number) => index.toString(),\n scrollOnChange = (index: number, ctx: ScrollContext) => ctx.moveTo(index)\n }: Partial<PaginationOptions> = {}) {\n this._parentEl = parentEl;\n this._selector = selector;\n this._type = type;\n this._classPrefix = classPrefix;\n this._bulletCount = bulletCount;\n this._renderBullet = renderBullet;\n this._renderActiveBullet = renderActiveBullet;\n this._renderFraction = renderFraction;\n this._fractionCurrentFormat = fractionCurrentFormat;\n this._fractionTotalFormat = fractionTotalFormat;\n this._scrollOnChange = scrollOnChange;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n const type = this._type;\n const selector = this._selector;\n const parentEl = this._parentEl ? this._parentEl : flicking.element;\n const wrapper = parentEl.querySelector(selector);\n\n if (!wrapper) {\n throw new Error(`[Flicking-Pagination] Couldn't find element with the given selector: ${selector}`);\n }\n\n this._wrapper = wrapper as HTMLElement;\n this._renderer = this._createRenderer(type);\n\n flicking.on(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.on(EVENTS.PANEL_CHANGE, this.update);\n\n this.update();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.off(EVENTS.PANEL_CHANGE, this.update);\n\n this._renderer.destroy();\n this._removeAllChilds();\n this._flicking = null;\n }\n\n public update = (): void => {\n this._removeAllChilds();\n this._renderer.render();\n };\n\n private _createRenderer(type: PaginationOptions[\"type\"]) {\n const options = {\n flicking: this._flicking!,\n pagination: this,\n wrapper: this._wrapper\n };\n\n switch (type) {\n case PAGINATION.TYPE.BULLET:\n return new BulletRenderer(options);\n case PAGINATION.TYPE.FRACTION:\n return new FractionRenderer(options);\n case PAGINATION.TYPE.SCROLL:\n return new ScrollBulletRenderer(options);\n default:\n throw new Error(`[Flicking-Pagination] type \"${type}\" is not supported.`);\n }\n }\n\n private _onIndexChange = (evt: { index: number }) => {\n this._renderer.update(evt.index);\n };\n\n private _removeAllChilds() {\n const wrapper = this._wrapper;\n\n while (wrapper.firstChild) {\n wrapper.removeChild(wrapper.firstChild);\n }\n }\n}\n\nexport default Pagination;\n","/**\n * @namespace Flicking\n */\n/**\n * @namespace Flicking.Plugins\n */\nimport Parallax from \"./Parallax\";\nimport Fade from \"./Fade\";\nimport AutoPlay from \"./AutoPlay\";\nimport Arrow from \"./Arrow\";\nimport Sync, { SyncOptions, SychronizableFlickingOptions } from \"./Sync\";\nimport Perspective from \"./Perspective\";\n\nexport * from \"./pagination\";\n\nexport {\n Parallax,\n Fade,\n AutoPlay,\n Arrow,\n Sync,\n Perspective\n};\n\nexport type {\n SyncOptions,\n SychronizableFlickingOptions\n};\n\nexport * from \"./const\";\n"],"names":["selector","scale","_this","_onMove","flicking","_flicking","panels","visiblePanels","forEach","panel","progress","outsetProgress","el","element","target","_selector","querySelector","parentTarget","parentNode","rect","getBoundingClientRect","parentRect","position","width","_scale","transform","style","cssText","Object","val","destroy","on","EVENTS","MOVE","AFTER_RESIZE","update","off","opacity","Math","min","max","abs","_a","_b","_c","duration","_d","animationDuration","undefined","_e","direction","DIRECTION","NEXT","_f","stopOnHover","delayAfterHover","_movePanel","_duration","_playing","clearTimeout","_timerId","_mouseEntered","stop","_delayAfterHover","_animationDuration","_direction","_stopOnHover","MOVE_START","HOLD_START","MOVE_END","play","SELECT","targetEl","addEventListener","_onMouseEnter","_onMouseLeave","removeEventListener","animating","window","setTimeout","moveType","MOVE_TYPE","FREE_SCROLL","range","camera","cameraPosition","currentPanel","prevPanel","prev","nextPanel","next","currentPosition","nextPosition","prevPosition","size","restSize","catch","BROWSER","CLICK","MOUSE_DOWN","TOUCH_START","ARROW","PREV_SELECTOR","NEXT_SELECTOR","DISABLED_CLASS","PAGINATION","SELECTOR","PREFIX","BULLET_WRAPPER_SUFFIX","BULLET_SUFFIX","BULLET_ACTIVE_SUFFIX","FRACTION_WRAPPER_SUFFIX","FRACTION_CURRENT_SUFFIX","FRACTION_TOTAL_SUFFIX","SCROLL_UNINIT_SUFFIX","SCROLL_WRAPPER_SUFFIX","SCROLL_SLIDER_SUFFIX","SCROLL_PREV_SUFFIX","SCROLL_NEXT_SUFFIX","TYPE","BULLET","FRACTION","SCROLL","SYNC","CAMERA","INDEX","addClass","className","classList","add","classes","split","indexOf","removeClass","remove","classRegex","RegExp","replace","getElement","parent","pluginName","Error","parentEl","prevElSelector","nextElSelector","disabledClass","_g","moveCount","_h","moveByViewportSize","e","stopPropagation","anchorPoints","length","firstAnchor","_moveCount","_moveByViewportSize","control","moveToPosition","_onCatch","circularEnabled","targetPanel","i","focus","index","moveTo","lastAnchor","controller","holding","_updateClass","animatingContext","end","err","FlickingError","_parentEl","_prevElSelector","_nextElSelector","_disabledClass","_prevEl","_nextEl","_onAnimation","prevEl","nextEl","evt","_preventInputPropagation","passive","_onPrevClick","_onNextClick","pos","cameraRange","stopAtPrevEdge","stopAtNextEdge","type","synchronizedFlickingOptions","_type","synced","_synchronizedFlickingOptions","isSlidable","isClickable","_onMoveStart","_onMoveEnd","WILL_CHANGE","_onIndexChange","WILL_RESTORE","_onSelect","currentTarget","initialized","_synchronizeByIndex","rangeDiff","targetPosition","lookAt","disableInput","enableInput","updateInput","activeFlicking","_preventEvent","options","targetIndex","clamp","once","activeClass","_addEvents","syncedFlicking","defaultIndex","_removeEvents","fn","rotate","perspective","_rotate","_perspective","horizontal","panelScale","rotateDegree","rotateX","rotateY","pagination","wrapper","_pagination","_wrapper","html","document","createRange","frag","createContextualFragment","bullet","firstChild","_addBulletEvents","panelIndex","__extends","classPrefix","_bullets","_prevIndex","bulletClass","_bulletClass","_activeClass","renderBullet","renderActiveBullet","bulletWrapperClass","innerHTML","map","anchorPoint","join","bullets","slice","call","children","prevIndex","anchorOffset","activeBulletIndex","prevBullet","newBullet","_createBulletFromString","parentElement","replaceChild","activeBullet","newActiveBullet","Renderer","_prevTotal","fractionWrapperClass","fractionCurrentClass","fractionTotalClass","renderFraction","currentIndex","anchorCount","fractionCurrentSelector","fractionTotalSelector","currentWrapper","totalWrapper","fractionCurrentFormat","fractionTotalFormat","sliderEl","firstElementChild","bulletSize","_bulletSize","wrapperSize","bulletCount","_sliderIndex","_previousIndex","dynamicWrapperClass","sliderClass","uninitClass","createElement","appendChild","_","bulletStyle","getComputedStyle","clientWidth","parseFloat","marginLeft","marginRight","requestAnimationFrame","activeIndex","bulletActiveClass","prevClassPrefix","nextClassPrefix","bulletPrevClass","offset","bulletNextClass","prevClassRegex","nextClassRegex","idx","indexOffset","classList_1","_i","test","scrollOnChange","total","sliderIndex","PREV","_j","_k","currentClass","totalClass","_l","toString","_m","_o","ctx","_removeAllChilds","_renderer","render","_classPrefix","_bulletCount","_renderBullet","_renderActiveBullet","_renderFraction","_fractionCurrentFormat","_fractionTotalFormat","_scrollOnChange","_createRenderer","PANEL_CHANGE","BulletRenderer","FractionRenderer","ScrollBulletRenderer","removeChild"],"mappings":";;;;;;;;;;AAEA;;;;;;AAKA;;;;;;;;;;;mBAqBE,CAAmBA,QAAnB,EAAkCC,KAAlC;oBAAA;;2BAAmB,EAAA;MAAAD,aAAA;;;wBAAe,EAAA;MAAAC,SAAA;;;eA0B3B,GAAS;MACdC,KAAI,CAACC,OAAL;KADK;;gBAIC,GAAU;UACVC,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UAEI,CAACD,QAAL,EAAe;UAETE,MAAM,GAAGF,QAAQ,CAACG,aAAxB;MAEAD,MAAM,CAACE,OAAP,CAAe,UAAAC,KAAA;YACPC,QAAQ,GAAGD,KAAK,CAACE,cAAvB;YACMC,EAAE,GAAGH,KAAK,CAACI,OAAjB;YACMC,MAAM,GAAGZ,KAAI,CAACa,SAAL,GAAiBH,EAAE,CAACI,aAAH,CAA8Bd,KAAI,CAACa,SAAnC,CAAjB,GAAkEH,EAAjF;YACMK,YAAY,GAAGH,MAAM,CAACI,UAA5B;YACMC,IAAI,GAAGL,MAAM,CAACM,qBAAP,EAAb;YACMC,UAAU,GAAGJ,YAAY,CAACG,qBAAb,EAAnB;YACME,QAAQ,GAAG,CAACD,UAAU,CAACE,KAAX,GAAmBJ,IAAI,CAACI,KAAzB,IAAkC,CAAlC,GAAsCb,QAAtC,GAAiDR,KAAI,CAACsB,MAAvE;YACMC,SAAS,GAAG,+BAA6BH,QAA7B,QAAlB;YACMI,KAAK,GAAGZ,MAAM,CAACY,KAArB;QAEAA,KAAK,CAACC,OAAN,IAAiB,gBAAcF,SAAd,yBAAA,GAA8CA,SAA9C,oBAAA,GAAyEA,SAA1F;OAXF;KAPM;;SA7BDpB,SAAL,GAAiB,IAAjB;SACKU,SAAL,GAAiBf,QAAjB;SACKwB,MAAL,GAAcvB,KAAd;;;;EAjBF2B,qBAAA,oBAAA;SAAA;aAA+B,KAAKb,SAAZ;;SAGxB,UAAoBc,GAApB;WAAwCd,SAAL,GAAiBc,GAAjB;;;;GAHnC;EACAD,qBAAA,iBAAA;SAAA;aAA4B,KAAKJ,MAAZ;;SAGrB,UAAiBK,GAAjB;WAAqCL,MAAL,GAAcK,GAAd;;;;GAHhC;;cAmBO,GAAP,UAAYzB,QAAZ;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;IAEAA,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACC,IAAnB,EAAyB,KAAK9B,OAA9B;IACAC,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACE,YAAnB,EAAiC,KAAKC,MAAtC;;SACKhC,OAAL;GATK;;iBAYA,GAAP;QACM,CAAC,KAAKE,SAAV,EAAqB;;SAEhBA,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACC,IAA1B,EAAgC,KAAK9B,OAArC;;SACKE,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACE,YAA1B,EAAwC,KAAKC,MAA7C;;SACK9B,SAAL,GAAiB,IAAjB;GALK;;iBAiCT;GAxEA;;ACLA;;;;;;AAKA;;;;;;;;;;;eAqBE,CAAmBL,QAAnB,EAAkCC,KAAlC;oBAAA;;2BAAmB,EAAA;MAAAD,aAAA;;;wBAAe,EAAA;MAAAC,SAAA;;;eA0B3B,GAAS;MACdC,KAAI,CAACC,OAAL;KADK;;gBAIC,GAAU;UACVC,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UACML,QAAQ,GAAGE,KAAI,CAACa,SAAtB;UACMd,KAAK,GAAGC,KAAI,CAACsB,MAAnB;UAEI,CAACpB,QAAL,EAAe;UAETE,MAAM,GAAGF,QAAQ,CAACG,aAAxB;MAEAD,MAAM,CAACE,OAAP,CAAe,UAAAC,KAAA;YACPC,QAAQ,GAAGD,KAAK,CAACE,cAAvB;YACMC,EAAE,GAAGH,KAAK,CAACI,OAAjB;YACMC,MAAM,GAAGd,QAAQ,GAAGY,EAAE,CAACI,aAAH,CAA8BhB,QAA9B,CAAH,GAA8CY,EAArE;;YAEIE,MAAJ,EAAY;cACJuB,OAAO,GAAGC,IAAI,CAACC,GAAL,CAAU,CAAV,EAAaD,IAAI,CAACE,GAAL,CAAS,CAAT,EAAY,IAAIF,IAAI,CAACG,GAAL,CAAS/B,QAAQ,GAAGT,KAApB,CAAhB,CAAb,CAAhB;UACAa,MAAM,CAACY,KAAP,CAAaW,OAAb,GAAuB,KAAGA,OAA1B;;OAPJ;KATM;;SA7BDhC,SAAL,GAAiB,IAAjB;SACKU,SAAL,GAAiBf,QAAjB;SACKwB,MAAL,GAAcvB,KAAd;;;;EAjBF2B,qBAAA,oBAAA;SAAA;aAA+B,KAAKb,SAAZ;;SAGxB,UAAoBc,GAApB;WAAwCd,SAAL,GAAiBc,GAAjB;;;;GAHnC;EACAD,qBAAA,iBAAA;SAAA;aAA4B,KAAKJ,MAAZ;;SAGrB,UAAiBK,GAAjB;WAAqCL,MAAL,GAAcK,GAAd;;;;GAHhC;;cAmBO,GAAP,UAAYzB,QAAZ;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;IAEAA,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACC,IAAnB,EAAyB,KAAK9B,OAA9B;IACAC,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACE,YAAnB,EAAiC,KAAKC,MAAtC;;SACKhC,OAAL;GATK;;iBAYA,GAAP;QACM,CAAC,KAAKE,SAAV,EAAqB;;SAEhBA,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACC,IAA1B,EAAgC,KAAK9B,OAArC;;SACKE,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACE,YAA1B,EAAwC,KAAKC,MAA7C;;SACK9B,SAAL,GAAiB,IAAjB;GALK;;aAgCT;GAvEA;;ACGA;;;;;;AAKA;;;;;;;;;;;;;;;mBAuCE,CAAmBqC,EAAnB;oBAAA;;QAAmBC,qBAMW;QAL5BC;QAAAC,QAAQ,mBAAG;QACXC;QAAAC,iBAAiB,mBAAGC;QACpBC;QAAAC,SAAS,mBAAGC,SAAS,CAACC;QACtBC;QAAAC,WAAW,mBAAG;QACdC,eAAe;;;;kBAnCT,GAA6B,IAA7B;iBACA,GAAW,CAAX;sBACA,GAAgB,KAAhB;iBACA,GAAW,KAAX;;aAyFD,GAAO;MACZrD,KAAI,CAACsD,UAAL,CAAgBtD,KAAI,CAACuD,SAArB;KADK;;aAIA,GAAO;MACZvD,KAAI,CAACwD,QAAL,GAAgB,KAAhB;MACAC,YAAY,CAACzD,KAAI,CAAC0D,QAAN,CAAZ;KAFK;;sBA4EC,GAAgB;MACtB1D,KAAI,CAAC2D,aAAL,GAAqB,IAArB;;MACA3D,KAAI,CAAC4D,IAAL;KAFM;;sBAKA,GAAgB;MACtB5D,KAAI,CAAC2D,aAAL,GAAqB,KAArB;;MACA3D,KAAI,CAACsD,UAAL,CAAgBtD,KAAI,CAAC6D,gBAArB;KAFM;;SA5IDN,SAAL,GAAiBZ,QAAjB;SACKmB,kBAAL,GAA0BjB,iBAA1B;SACKkB,UAAL,GAAkBf,SAAlB;SACKgB,YAAL,GAAoBZ,WAApB;SACKS,gBAAL,GAAwBR,eAAe,SAAf,IAAAA,eAAe,WAAf,GAAAA,eAAA,GAAmBV,QAA3C;;;;EApCFjB,qBAAA,oBAAA;SAAA;aAA+B,KAAK6B,SAAZ;;SAOxB,UAAoB5B,GAApB;WAAwC4B,SAAL,GAAiB5B,GAAjB;;;;GAPnC;EACAD,qBAAA,6BAAA;SAAA;aAAwC,KAAKoC,kBAAZ;;SAOjC,UAA6BnC,GAA7B;WAA6DmC,kBAAL,GAA0BnC,GAA1B;;;;GAPxD;EACAD,qBAAA,qBAAA;SAAA;aAAgC,KAAKqC,UAAZ;;SAOzB,UAAqBpC,GAArB;WAA+DoC,UAAL,GAAkBpC,GAAlB;;;;GAP1D;EACAD,qBAAA,uBAAA;SAAA;aAAkC,KAAKsC,YAAZ;;SAO3B,UAAuBrC,GAAvB;WAA4CqC,YAAL,GAAoBrC,GAApB;;;;GAPvC;EACAD,qBAAA,2BAAA;SAAA;aAAsC,KAAKmC,gBAAZ;;SAO/B,UAA2BlC,GAA3B;WAA+CkC,gBAAL,GAAwBlC,GAAxB;;;;GAP1C;EACAD,qBAAA,mBAAA;SAAA;aAA8B,KAAK8B,QAAZ;;;;GAAvB;;cAkCO,GAAP,UAAYtD,QAAZ;;;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;IAGF1B,QAAQ,CAAC2B,EAAT,WACEW,GAACV,MAAM,CAACmC,WAAR,GAAqB,KAAKL,MAC1BpB,GAACV,MAAM,CAACoC,WAAR,GAAqB,KAAKN,MAC1BpB,GAACV,MAAM,CAACqC,SAAR,GAAmB,KAAKC,MACxB5B,GAACV,MAAM,CAACuC,OAAR,GAAiB,KAAKD,QAJxB;SAOKjE,SAAL,GAAiBD,QAAjB;;QACI,KAAK8D,YAAT,EAAuB;UACfM,QAAQ,GAAG,KAAKnE,SAAL,CAAeQ,OAAhC;MACA2D,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,EAAwC,KAAKC,aAA7C,EAA4D,KAA5D;MACAF,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,EAAwC,KAAKE,aAA7C,EAA4D,KAA5D;;;SAGGL,IAAL;GAnBK;;iBAsBA,GAAP;QACQlE,QAAQ,GAAG,KAAKC,SAAtB;SAEKwD,aAAL,GAAqB,KAArB;SACKC,IAAL;;QAEI,CAAC1D,QAAL,EAAe;;;;IAIfA,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACmC,UAApB,EAAgC,KAAKL,IAArC;IACA1D,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACoC,UAApB,EAAgC,KAAKN,IAArC;IACA1D,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACqC,QAApB,EAA8B,KAAKC,IAAnC;IACAlE,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACuC,MAApB,EAA4B,KAAKD,IAAjC;QAEME,QAAQ,GAAGpE,QAAQ,CAACS,OAA1B;IACA2D,QAAQ,CAACI,mBAAT,CAA6B,YAA7B,EAA2C,KAAKF,aAAhD,EAA+D,KAA/D;IACAF,QAAQ,CAACI,mBAAT,CAA6B,YAA7B,EAA2C,KAAKD,aAAhD,EAA+D,KAA/D;SAEKtE,SAAL,GAAiB,IAAjB;GAnBK;;gBAsBA,GAAP;GAAO;;oBAaC,GAAR,UAAmBwC,QAAnB;oBAAA;;QACQzC,QAAQ,GAAG,KAAKC,SAAtB;QACM6C,SAAS,GAAG,KAAKe,UAAvB;;QAEI,CAAC7D,QAAL,EAAe;;;;SAIV0D,IAAL;;QAEI,KAAKD,aAAL,IAAsBzD,QAAQ,CAACyE,SAAnC,EAA8C;;;;SAIzCnB,QAAL,GAAgB,IAAhB;SACKE,QAAL,GAAgBkB,MAAM,CAACC,UAAP,CAAkB;;;UAC5BhC,iBAAiB,GAAG7C,KAAI,CAAC8D,kBAAL,IAA2B5D,QAAQ,CAACyC,QAA5D;UACMmC,QAAQ,GAAG5E,QAAQ,CAAC4E,QAA1B;;UAEIA,QAAQ,KAAKC,SAAS,CAACC,WAAvB,IAAsC,CAAAF,QAAQ,SAAR,IAAAA,QAAQ,WAAR,SAAA,GAAAA,QAAQ,CAAG,CAAH,CAAR,MAAkBC,SAAS,CAACC,WAAtE,EAAmF;YAC3EC,KAAK,GAAG/E,QAAQ,CAACgF,MAAT,CAAgBD,KAA9B;YACME,cAAc,GAAGjF,QAAQ,CAACgF,MAAT,CAAgB9D,QAAvC;YACMgE,YAAY,GAAGlF,QAAQ,CAACkF,YAA9B;YACMC,SAAS,GAAGD,YAAY,CAACE,IAAb,EAAlB;YACMC,SAAS,GAAGH,YAAY,CAACI,IAAb,EAAlB;YACMC,eAAe,GAAGL,YAAY,CAAChE,QAArC;YACIsE,YAAY,GAAG,MAAAH,SAAS,SAAT,IAAAA,SAAS,WAAT,SAAA,GAAAA,SAAS,CAAEnE,QAAX,UAAA,iBAAA,KAAA,GAAuB6D,KAAK,CAAC3C,GAAhD;YACIqD,YAAY,GAAG,MAAAN,SAAS,SAAT,IAAAA,SAAS,WAAT,SAAA,GAAAA,SAAS,CAAEjE,QAAX,UAAA,iBAAA,KAAA,GAAuB6D,KAAK,CAAC5C,GAAhD,CARiF;;YAW7EsD,YAAY,GAAGF,eAAnB,EAAoC;UAClCE,YAAY,GAAGV,KAAK,CAAC5C,GAAN,IAAa4C,KAAK,CAAC3C,GAAN,GAAYqD,YAAzB,CAAf;SAZ+E;;;YAe7ED,YAAY,GAAGD,eAAnB,EAAoC;UAClCC,YAAY,IAAIT,KAAK,CAAC3C,GAAtB;;;YAEEU,SAAS,KAAKC,SAAS,CAACC,IAA5B,EAAkC;;cAE1B0C,IAAI,GAAGF,YAAY,GAAGD,eAA5B;cACII,QAAQ,GAAGH,YAAY,GAAGP,cAA9B;;cAEIA,cAAc,GAAGM,eAArB,EAAsC;;YAEpCI,QAAQ,GAAGH,YAAY,GAAGP,cAA1B;;;UAGFtC,iBAAiB,IAAIgD,QAAQ,GAAGD,IAAhC;SAVF,MAWO;;cAECA,IAAI,GAAGH,eAAe,GAAGE,YAA/B;cACIE,QAAQ,GAAGV,cAAc,GAAGQ,YAAhC;;cAEIR,cAAc,GAAGM,eAArB,EAAsC;;YAEpCI,QAAQ,GAAGV,cAAc,GAAGQ,YAA5B;;;UAEF9C,iBAAiB,IAAIgD,QAAQ,GAAGD,IAAhC;;;;UAIA5C,SAAS,KAAKC,SAAS,CAACC,IAA5B,EAAkC;QAChChD,QAAQ,CAACsF,IAAT,CAAc3C,iBAAd,EAAiCiD,KAAjC,CAAuC;iBAAM,KAAK,CAAL;SAA7C;OADF,MAEO;QACL5F,QAAQ,CAACoF,IAAT,CAAczC,iBAAd,EAAiCiD,KAAjC,CAAuC;iBAAM,KAAK,CAAL;SAA7C;;;MAGF9F,KAAI,CAACoE,IAAL;KApDc,EAqDbzB,QArDa,CAAhB;GAfM;;iBAgFV;GA9LA;;ACfO,IAAMoD,OAAO,GAAG;EACrBC,KAAK,EAAE,OADc;EAErBC,UAAU,EAAE,WAFS;EAGrBC,WAAW,EAAE;CAHR;;ICAMC,KAAK,GAAG;EACnBC,aAAa,EAAE,sBADI;EAEnBC,aAAa,EAAE,sBAFI;EAGnBC,cAAc,EAAE;CAHX;AAMP,IAAaC,UAAU,GAAG;EACxBC,QAAQ,EAAE,sBADc;EAExBC,MAAM,EAAE,qBAFgB;EAGxBC,qBAAqB,EAAE,SAHC;EAIxBC,aAAa,EAAE,QAJS;EAKxBC,oBAAoB,EAAE,eALE;EAMxBC,uBAAuB,EAAE,UAND;EAOxBC,uBAAuB,EAAE,kBAPD;EAQxBC,qBAAqB,EAAE,gBARC;EASxBC,oBAAoB,EAAE,eATE;EAUxBC,qBAAqB,EAAE,QAVC;EAWxBC,oBAAoB,EAAE,QAXE;EAYxBC,kBAAkB,EAAE,aAZI;EAaxBC,kBAAkB,EAAE,aAbI;EAcxBC,IAAI,EAAE;IACJC,MAAM,EAAE,QADJ;IAEJC,QAAQ,EAAE,UAFN;IAGJC,MAAM,EAAE;;CAjBL;AAqBP,IAAaC,IAAI,GAAG;EAClBJ,IAAI,EAAE;IACJK,MAAM,EAAE,QADJ;IAEJC,KAAK,EAAE;;CAHJ;;AC3BA,IAAMC,QAAQ,GAAG,UAAClH,EAAD,EAAkBmH,SAAlB;MAClB,CAACnH,EAAL,EAAS;;MAELA,EAAE,CAACoH,SAAP,EAAkB;IAChBpH,EAAE,CAACoH,SAAH,CAAaC,GAAb,CAAiBF,SAAjB;GADF,MAEO;QACCG,OAAO,GAAGtH,EAAE,CAACmH,SAAH,CAAaI,KAAb,CAAmB,GAAnB,CAAhB;;QAEID,OAAO,CAACE,OAAR,CAAgBL,SAAhB,IAA6B,CAAjC,EAAoC;MAClCnH,EAAE,CAACmH,SAAH,GAAkBnH,EAAE,CAACmH,SAAH,MAAA,GAAgBA,SAAlC;;;CATC;AAcP,AAAO,IAAMM,WAAW,GAAG,UAACzH,EAAD,EAAkBmH,SAAlB;MACrB,CAACnH,EAAL,EAAS;;MAELA,EAAE,CAACoH,SAAP,EAAkB;IAChBpH,EAAE,CAACoH,SAAH,CAAaM,MAAb,CAAoBP,SAApB;GADF,MAEO;QACCQ,UAAU,GAAG,IAAIC,MAAJ,CAAW,UAAQT,SAAR,UAAX,EAAqC,GAArC,CAAnB;IACAnH,EAAE,CAACmH,SAAH,CAAaU,OAAb,CAAqBF,UAArB,EAAiC,GAAjC;;CAPG;AAWP,AAAO,IAAMG,UAAU,GAAG,UAAC1I,QAAD,EAAmB2I,MAAnB,EAAwCC,UAAxC;MAClBhI,EAAE,GAAG+H,MAAM,CAAC3H,aAAP,CAAqBhB,QAArB,CAAX;;MAEI,CAACY,EAAL,EAAS;UACD,IAAIiI,KAAJ,CAAU,eAAaD,UAAb,sDAAA,GAA2E5I,QAArF,CAAN;;;SAGKY,EAAP;CAPK;;ACVP;;;;;;AAKA;;;gBA+BE,CAAmB8B,EAAnB;oBAAA;;QAAmBC,qBAOQ;QANzBC;QAAAkG,QAAQ,mBAAG;QACXhG;QAAAiG,cAAc,mBAAG1C,KAAK,CAACC;QACvBrD;QAAA+F,cAAc,mBAAG3C,KAAK,CAACE;QACvBlD;QAAA4F,aAAa,mBAAG5C,KAAK,CAACG;QACtB0C;QAAAC,SAAS,mBAAG;QACZC;QAAAC,kBAAkB,mBAAG;;;;kBAnCf,GAA6B,IAA7B;;iCAkGA,GAA2B,UAACC,CAAD;MACjCA,CAAC,CAACC,eAAF;KADM;;qBAIA,GAAe;UACfnJ,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UACM+E,MAAM,GAAGhF,QAAQ,CAACgF,MAAxB;UACMoE,YAAY,GAAGpE,MAAM,CAACoE,YAA5B;UAEIpJ,QAAQ,CAACyE,SAAT,IAAsB2E,YAAY,CAACC,MAAb,IAAuB,CAAjD,EAAoD;UAE9CC,WAAW,GAAGF,YAAY,CAAC,CAAD,CAAhC;UACML,SAAS,GAAGjJ,KAAI,CAACyJ,UAAvB;;UAEIzJ,KAAI,CAAC0J,mBAAT,EAA8B;QAC5BxJ,QAAQ,CAACyJ,OAAT,CAAiBC,cAAjB,CAAgC1E,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACU,IAAzD,EAA+D1F,QAAQ,CAACyC,QAAxE,EACGmD,KADH,CACS9F,KAAI,CAAC6J,QADd;OADF,MAGO;YACD3J,QAAQ,CAAC4J,eAAb,EAA8B;cACxBC,WAAW,GAAG7J,QAAQ,CAACkF,YAA3B;;eAEK,IAAI4E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,SAApB,EAA+Be,CAAC,EAAhC,EAAoC;YAClCD,WAAW,GAAGA,WAAW,CAACzE,IAAZ,EAAd;;;UAGFyE,WAAW,CAACE,KAAZ,GAAoBnE,KAApB,CAA0B9F,KAAI,CAAC6J,QAA/B;SAPF,MAQO,IAAI3J,QAAQ,CAACgK,KAAT,GAAiBV,WAAW,CAACjJ,KAAZ,CAAkB2J,KAAvC,EAA8C;UACnDhK,QAAQ,CAACiK,MAAT,CAAgB/H,IAAI,CAACE,GAAL,CAASpC,QAAQ,CAACgK,KAAT,GAAiBjB,SAA1B,EAAqCO,WAAW,CAACjJ,KAAZ,CAAkB2J,KAAvD,CAAhB,EACGpE,KADH,CACS9F,KAAI,CAAC6J,QADd;SADK,MAGA,IAAI3E,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACD,KAAP,CAAa5C,GAAnC,EAAwC;UAC7CnC,QAAQ,CAACiK,MAAT,CAAgBjK,QAAQ,CAACgK,KAAzB,EACGpE,KADH,CACS9F,KAAI,CAAC6J,QADd;;;KA1BE;;qBAgCA,GAAe;UACf3J,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UAEM+E,MAAM,GAAGhF,QAAQ,CAACgF,MAAxB;UACMoE,YAAY,GAAGpE,MAAM,CAACoE,YAA5B;UAEIpJ,QAAQ,CAACyE,SAAT,IAAsB2E,YAAY,CAACC,MAAb,IAAuB,CAAjD,EAAoD;UAE9Ca,UAAU,GAAGd,YAAY,CAACA,YAAY,CAACC,MAAb,GAAsB,CAAvB,CAA/B;UACMN,SAAS,GAAGjJ,KAAI,CAACyJ,UAAvB;;UAEIzJ,KAAI,CAAC0J,mBAAT,EAA8B;QAC5BxJ,QAAQ,CAACyJ,OAAT,CAAiBC,cAAjB,CAAgC1E,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACU,IAAzD,EAA+D1F,QAAQ,CAACyC,QAAxE,EACGmD,KADH,CACS9F,KAAI,CAAC6J,QADd;OADF,MAGO;YACD3J,QAAQ,CAAC4J,eAAb,EAA8B;cACxBC,WAAW,GAAG7J,QAAQ,CAACkF,YAA3B;;eAEK,IAAI4E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,SAApB,EAA+Be,CAAC,EAAhC,EAAoC;YAClCD,WAAW,GAAGA,WAAW,CAACvE,IAAZ,EAAd;;;UAGFuE,WAAW,CAACE,KAAZ,GAAoBnE,KAApB,CAA0B9F,KAAI,CAAC6J,QAA/B;SAPF,MAQO,IAAI3J,QAAQ,CAACgK,KAAT,GAAiBE,UAAU,CAAC7J,KAAX,CAAiB2J,KAAtC,EAA6C;UAClDhK,QAAQ,CAACiK,MAAT,CAAgB/H,IAAI,CAACC,GAAL,CAASnC,QAAQ,CAACgK,KAAT,GAAiBjB,SAA1B,EAAqCmB,UAAU,CAAC7J,KAAX,CAAiB2J,KAAtD,CAAhB,EACGpE,KADH,CACS9F,KAAI,CAAC6J,QADd;SADK,MAGA,IAAI3E,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACD,KAAP,CAAa5C,GAAnC,EAAwC;UAC7CnC,QAAQ,CAACiK,MAAT,CAAgBjK,QAAQ,CAACgK,KAAzB,EACGpE,KADH,CACS9F,KAAI,CAAC6J,QADd;;;KA3BE;;qBAiCA,GAAe;UACf3J,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UACM+E,MAAM,GAAGhF,QAAQ,CAACgF,MAAxB;UACMmF,UAAU,GAAGnK,QAAQ,CAACyJ,OAAT,CAAiBU,UAApC;;UAEInK,QAAQ,CAACoK,OAAb,EAAsB;QACpBtK,KAAI,CAACuK,YAAL,CAAkBrF,MAAM,CAAC9D,QAAzB;OADF,MAEO;QACLpB,KAAI,CAACuK,YAAL,CAAkBF,UAAU,CAACG,gBAAX,CAA4BC,GAA9C;;KARI;;iBAuCA,GAAW,UAACC,GAAD;UACbA,GAAG,YAAYC,aAAnB,EAAkC;YAC5BD,GAAN;KAFM;;SAzKDE,SAAL,GAAiBhC,QAAjB;SACKiC,eAAL,GAAuBhC,cAAvB;SACKiC,eAAL,GAAuBhC,cAAvB;SACKiC,cAAL,GAAsBhC,aAAtB;SACKU,UAAL,GAAkBR,SAAlB;SACKS,mBAAL,GAA2BP,kBAA3B;;;;EA9BFzH,qBAAA,kBAAA;SAAA;aAA6B,KAAKsJ,OAAZ;;;;GAAtB;EACAtJ,qBAAA,kBAAA;SAAA;aAA6B,KAAKuJ,OAAZ;;;;GAAtB;EAEAvJ,qBAAA,oBAAA;SAAA;aAA+B,KAAKkJ,SAAZ;;SAOxB,UAAoBjJ,GAApB;WAA0DiJ,SAAL,GAAiBjJ,GAAjB;;;;GAPrD;EACAD,qBAAA,0BAAA;SAAA;aAAqC,KAAKmJ,eAAZ;;SAO9B,UAA0BlJ,GAA1B;WAAsEkJ,eAAL,GAAuBlJ,GAAvB;;;;GAPjE;EACAD,qBAAA,0BAAA;SAAA;aAAqC,KAAKoJ,eAAZ;;SAO9B,UAA0BnJ,GAA1B;WAAsEmJ,eAAL,GAAuBnJ,GAAvB;;;;GAPjE;EACAD,qBAAA,yBAAA;SAAA;aAAoC,KAAKqJ,cAAZ;;SAO7B,UAAyBpJ,GAAzB;WAAoEoJ,cAAL,GAAsBpJ,GAAtB;;;;GAP/D;EACAD,qBAAA,qBAAA;SAAA;aAAgC,KAAK+H,UAAZ;;SAOzB,UAAqB9H,GAArB;WAA4D8H,UAAL,GAAkB9H,GAAlB;;;;GAPvD;EACAD,qBAAA,8BAAA;SAAA;aAAyC,KAAKgI,mBAAZ;;SAOlC,UAA8B/H,GAA9B;WAA8E+H,mBAAL,GAA2B/H,GAA3B;;;;GAPzE;;cAyBO,GAAP,UAAYzB,QAAZ;oBAAA;;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;IAEAA,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACC,IAAnB,EAAyB,KAAKmJ,YAA9B;QAEMtC,QAAQ,GAAG,KAAKgC,SAAL,GAAiB,KAAKA,SAAtB,GAAkC1K,QAAQ,CAACS,OAA5D;QACMwK,MAAM,GAAG3C,UAAU,CAAC,KAAKqC,eAAN,EAAuBjC,QAAvB,EAAiC,OAAjC,CAAzB;QACMwC,MAAM,GAAG5C,UAAU,CAAC,KAAKsC,eAAN,EAAuBlC,QAAvB,EAAiC,OAAjC,CAAzB;KAEC7C,OAAO,CAACE,UAAT,EAAqBF,OAAO,CAACG,WAA7B,EAA0C5F,OAA1C,CAAkD,UAAA+K,GAAA;MAChDF,MAAM,CAAC5G,gBAAP,CAAwB8G,GAAxB,EAA6BrL,KAAI,CAACsL,wBAAlC,EAA4D;QAAEC,OAAO,EAAE;OAAvE;MACAH,MAAM,CAAC7G,gBAAP,CAAwB8G,GAAxB,EAA6BrL,KAAI,CAACsL,wBAAlC,EAA4D;QAAEC,OAAO,EAAE;OAAvE;KAFF;IAKAJ,MAAM,CAAC5G,gBAAP,CAAwBwB,OAAO,CAACC,KAAhC,EAAuC,KAAKwF,YAA5C;IACAJ,MAAM,CAAC7G,gBAAP,CAAwBwB,OAAO,CAACC,KAAhC,EAAuC,KAAKyF,YAA5C;SAEKT,OAAL,GAAeG,MAAf;SACKF,OAAL,GAAeG,MAAf;SAEKnJ,MAAL;GAxBK;;iBA2BA,GAAP;oBAAA;;QACQ/B,QAAQ,GAAG,KAAKC,SAAtB;;QAEI,CAACD,QAAL,EAAe;;;;IAIfA,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACC,IAApB,EAA0B,KAAKmJ,YAA/B;QAEMC,MAAM,GAAG,KAAKH,OAApB;QACMI,MAAM,GAAG,KAAKH,OAApB;KAEClF,OAAO,CAACE,UAAT,EAAqBF,OAAO,CAACG,WAA7B,EAA0C5F,OAA1C,CAAkD,UAAA+K,GAAA;MAChDF,MAAM,CAACzG,mBAAP,CAA2B2G,GAA3B,EAAgCrL,KAAI,CAACsL,wBAArC;MACAF,MAAM,CAAC1G,mBAAP,CAA2B2G,GAA3B,EAAgCrL,KAAI,CAACsL,wBAArC;KAFF;IAKAH,MAAM,CAACzG,mBAAP,CAA2BqB,OAAO,CAACC,KAAnC,EAA0C,KAAKwF,YAA/C;IACAJ,MAAM,CAAC1G,mBAAP,CAA2BqB,OAAO,CAACC,KAAnC,EAA0C,KAAKyF,YAA/C;SACKtL,SAAL,GAAiB,IAAjB;GAnBK;;gBAsBA,GAAP;SACOoK,YAAL,CAAkB,KAAKpK,SAAL,CAAgB+E,MAAhB,CAAuB9D,QAAzC;GADK;;sBAqFC,GAAR,UAAqBsK,GAArB;QACQxL,QAAQ,GAAG,KAAKC,SAAtB;QACM4I,aAAa,GAAG,KAAKgC,cAA3B;QACMI,MAAM,GAAG,KAAKH,OAApB;QACMI,MAAM,GAAG,KAAKH,OAApB;QACMU,WAAW,GAAGzL,QAAQ,CAACgF,MAAT,CAAgBD,KAApC;QAEM2G,cAAc,GAAG1L,QAAQ,CAAC4J,eAAT,GACnB,KADmB,GAEnB4B,GAAG,IAAIC,WAAW,CAACtJ,GAFvB;QAGMwJ,cAAc,GAAG3L,QAAQ,CAAC4J,eAAT,GACnB,KADmB,GAEnB4B,GAAG,IAAIC,WAAW,CAACrJ,GAFvB;;QAIIsJ,cAAJ,EAAoB;MAClBhE,QAAQ,CAACuD,MAAD,EAASpC,aAAT,CAAR;KADF,MAEO;MACLZ,WAAW,CAACgD,MAAD,EAASpC,aAAT,CAAX;;;QAGE8C,cAAJ,EAAoB;MAClBjE,QAAQ,CAACwD,MAAD,EAASrC,aAAT,CAAR;KADF,MAEO;MACLZ,WAAW,CAACiD,MAAD,EAASrC,aAAT,CAAX;;GAvBI;;cA+BV;GApNA;;ACQA;;;;;;AAKA;;;;eAoBE,CAAmBvG,EAAnB;oBAAA;;QAAmBC,qBAGO;QAFxBC;QAAAoJ,IAAI,mBAAGrE,IAAI,CAACJ,IAAL,CAAUK;QACjB9E;QAAAmJ,2BAA2B,mBAAG;;;;kBApBxB,GAA6B,IAA7B;;mBAoEA,GAAa;UACbD,IAAI,GAAG9L,KAAI,CAACgM,KAAlB;UACMC,MAAM,GAAGjM,KAAI,CAACkM,4BAApB;MAEAD,MAAM,CAAC3L,OAAP,CAAe,UAACkC,EAAD;YAAGtC,QAAQ;YAAEiM,UAAU;YAAEC,WAAW;;YAC7CN,IAAI,KAAKrE,IAAI,CAACJ,IAAL,CAAUK,MAAvB,EAA+B;UAC7BxH,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACC,IAAnB,EAAyB/B,KAAI,CAACC,OAA9B;UACAC,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACmC,UAAnB,EAA+BjE,KAAI,CAACqM,YAApC;UACAnM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACqC,QAAnB,EAA6BnE,KAAI,CAACsM,UAAlC;;;YAEER,IAAI,KAAKrE,IAAI,CAACJ,IAAL,CAAUM,KAAnB,IAA4BwE,UAAhC,EAA4C;UAC1CjM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACyK,WAAnB,EAAgCvM,KAAI,CAACwM,cAArC;UACAtM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAAC2K,YAAnB,EAAiCzM,KAAI,CAACwM,cAAtC;;;YAEEJ,WAAJ,EAAiB;UACflM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACuC,MAAnB,EAA2BrE,KAAI,CAAC0M,SAAhC;;OAXJ;KAJM;;sBAoBA,GAAgB;UAChBZ,IAAI,GAAG9L,KAAI,CAACgM,KAAlB;UACMC,MAAM,GAAGjM,KAAI,CAACkM,4BAApB;MAEAD,MAAM,CAAC3L,OAAP,CAAe,UAACkC,EAAD;YAAGtC,QAAQ;YAAEiM,UAAU;YAAEC,WAAW;;YAC7CN,IAAI,KAAKrE,IAAI,CAACJ,IAAL,CAAUK,MAAvB,EAA+B;UAC7BxH,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACC,IAApB,EAA0B/B,KAAI,CAACC,OAA/B;UACAC,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACmC,UAApB,EAAgCjE,KAAI,CAACqM,YAArC;UACAnM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACqC,QAApB,EAA8BnE,KAAI,CAACsM,UAAnC;;;YAEER,IAAI,KAAKrE,IAAI,CAACJ,IAAL,CAAUM,KAAnB,IAA4BwE,UAAhC,EAA4C;UAC1CjM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACyK,WAApB,EAAiCvM,KAAI,CAACwM,cAAtC;UACAtM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAAC2K,YAApB,EAAkCzM,KAAI,CAACwM,cAAvC;;;YAEEJ,WAAJ,EAAiB;UACflM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACuC,MAApB,EAA4BrE,KAAI,CAAC0M,SAAjC;;OAXJ;KAJM;;uBAoBA,GAAiB,UAACtD,CAAD;UACjBlJ,QAAQ,GAAGkJ,CAAC,CAACuD,aAAnB;;UAEI,CAACzM,QAAQ,CAAC0M,WAAd,EAA2B;;;;MAI3B5M,KAAI,CAAC6M,mBAAL,CAAyB3M,QAAzB,EAAmCkJ,CAAC,CAACc,KAArC;KAPM;;gBAUA,GAAU,UAACd,CAAD;UACVlE,MAAM,GAAGkE,CAAC,CAACuD,aAAF,CAAgBzH,MAA/B;UACM1E,QAAQ,GAAG,CAAC0E,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACD,KAAP,CAAa5C,GAAhC,IAAuC6C,MAAM,CAAC4H,SAA/D;;MAEA9M,KAAI,CAACkM,4BAAL,CAAkC5L,OAAlC,CAA0C,UAACkC,EAAD;YAAGtC,QAAQ;YAC/CA,QAAQ,KAAKkJ,CAAC,CAACuD,aAAnB,EAAkC;YAE9BI,cAAc,GAAG,CAArB;;YAEI7H,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACD,KAAP,CAAa5C,GAAnC,EAAwC;UACtC0K,cAAc,GAAG7H,MAAM,CAAC9D,QAAxB;SADF,MAEO,IAAI8D,MAAM,CAAC9D,QAAP,GAAkB8D,MAAM,CAACD,KAAP,CAAa3C,GAAnC,EAAwC;UAC7CyK,cAAc,GAAG7M,QAAQ,CAACgF,MAAT,CAAgBD,KAAhB,CAAsB3C,GAAtB,GAA4B4C,MAAM,CAAC9D,QAAnC,GAA8C8D,MAAM,CAACD,KAAP,CAAa3C,GAA5E;SADK,MAEA;UACLyK,cAAc,GAAG7M,QAAQ,CAACgF,MAAT,CAAgBD,KAAhB,CAAsB5C,GAAtB,GAA4BnC,QAAQ,CAACgF,MAAT,CAAgB4H,SAAhB,GAA4BtM,QAAzE;;;aAGGN,QAAQ,CAACgF,MAAT,CAAgB8H,MAAhB,CAAuBD,cAAvB,CAAL;OAbF;KAJM;;qBAqBA,GAAe,UAAC3D,CAAD;MACrBpJ,KAAI,CAACkM,4BAAL,CAAkC5L,OAAlC,CAA0C,UAACkC,EAAD;YAAGtC,QAAQ;;YAC/CA,QAAQ,KAAKkJ,CAAC,CAACuD,aAAnB,EAAkC;UAChCzM,QAAQ,CAAC+M,YAAT;;OAFJ;KADM;;mBAQA,GAAa,UAAC7D,CAAD;MACnBpJ,KAAI,CAACkM,4BAAL,CAAkC5L,OAAlC,CAA0C,UAACkC,EAAD;YAAGtC,QAAQ;;YAC/CA,QAAQ,KAAKkJ,CAAC,CAACuD,aAAnB,EAAkC;UAChCzM,QAAQ,CAACgN,WAAT;UACAhN,QAAQ,CAACyJ,OAAT,CAAiBwD,WAAjB;;OAHJ;KADM;;kBASA,GAAY,UAAC/D,CAAD;WACbA,CAAC,CAACuD,aAAF,CAAgBxC,MAAhB,CAAuBf,CAAC,CAACc,KAAzB,EAAgCpE,KAAhC,CAAsC;eAAM,KAAK,CAAL;OAA5C,CAAL;;MAEA9F,KAAI,CAAC6M,mBAAL,CAAyBzD,CAAC,CAACuD,aAA3B,EAA0CvD,CAAC,CAACc,KAA5C;KAHM;;4BAMA,GAAsB,UAACkD,cAAD,EAA2BlD,KAA3B;UACtB6B,2BAA2B,GAAG/L,KAAI,CAACkM,4BAAzC;;MAEAlM,KAAI,CAACqN,aAAL,CAAmB;QACjBtB,2BAA2B,CAACzL,OAA5B,CAAoC,UAAAgN,OAAA;;UAElCtN,KAAI,CAACuK,YAAL,CAAkB+C,OAAlB,EAA2BpD,KAA3B;;cAEQhK,QAAQ,GAAKoN,OAAO,SAApB;cACJpN,QAAQ,KAAKkN,cAAjB,EAAiC;cAE3BG,WAAW,GAAGC,KAAK,CAACtD,KAAD,EAAQ,CAAR,EAAWhK,QAAQ,CAACE,MAAT,CAAgBmJ,MAA3B,CAAzB;;cAEIrJ,QAAQ,CAACyE,SAAb,EAAwB;;YAEtBzE,QAAQ,CAACuN,IAAT,CAAc3L,MAAM,CAACqC,QAArB,EAA+B;mBACxBjE,QAAQ,CAACiK,MAAT,CAAgBoD,WAAhB,EAA6BzH,KAA7B,CAAmC;uBAAM,KAAK,CAAL;eAAzC,CAAL;aADF;WAFF,MAKO;iBACA5F,QAAQ,CAACiK,MAAT,CAAgBoD,WAAhB,CAAL;;SAfJ;OADF;KAHM;;qBAyBA,GAAe,UAAC/K,EAAD,EAA0D0H,KAA1D;UAAGhK,QAAQ;UAAEwN,WAAW;UACzC,CAACA,WAAL,EAAkB;MAElBxN,QAAQ,CAACE,MAAT,CAAgBE,OAAhB,CAAwB,UAAAC,KAAA;YAClBA,KAAK,CAAC2J,KAAN,KAAgBA,KAApB,EAA4B;UAC1BtC,QAAQ,CAACrH,KAAK,CAACI,OAAP,EAAgB+M,WAAhB,CAAR;SADF,MAEO;UACLvF,WAAW,CAAC5H,KAAK,CAACI,OAAP,EAAgB+M,WAAhB,CAAX;;OAJJ;KAHM;;SArKD1B,KAAL,GAAaF,IAAb;SACKI,4BAAL,GAAoCH,2BAApC;;;;EAjBFrK,qBAAA,gBAAA;SAAA;aAA2B,KAAKsK,KAAZ;;SAGpB,UAAgBrK,GAAhB;WACOqK,KAAL,GAAarK,GAAb;;;;GAJF;EACAD,qBAAA,uCAAA;SAAA;aAAkD,KAAKwK,4BAAZ;;SAM3C,UAAuCvK,GAAvC;WACOuK,4BAAL,GAAoCvK,GAApC;;;;GAPF;;cAmBO,GAAP,UAAYzB,QAAZ;oBAAA;;QACQ+L,MAAM,GAAG,KAAKC,4BAApB;;QAEI,KAAK/L,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;;SAEKyN,UAAL;;IAEA1B,MAAM,CAAC3L,OAAP,CAAe,UAAAgN,OAAA;UACKM,cAAc,GAAKN,OAAO,SAApC;;MAERtN,KAAI,CAACuK,YAAL,CAAkB+C,OAAlB,EAA2BM,cAAc,CAACC,YAA1C;KAHF;GAXK;;iBAkBA,GAAP;QACQ3N,QAAQ,GAAG,KAAKC,SAAtB;;QAEI,CAACD,QAAL,EAAe;;;;SAIV4N,aAAL;;SAEK3N,SAAL,GAAiB,IAAjB;GATK;;gBAYA,GAAP;oBAAA;;SACO+L,4BAAL,CAAkC5L,OAAlC,CAA0C,UAAAgN,OAAA;MACxCtN,KAAI,CAACuK,YAAL,CAAkB+C,OAAlB,EAA2BA,OAAO,CAACpN,QAAR,CAAiBgK,KAA5C;KADF;GADK;;uBAMC,GAAR,UAAsB6D,EAAtB;SACOD,aAAL;;IACAC,EAAE;;SACGJ,UAAL;GAHM;;aAwIV;GAxMA;;ACjCA;AACA,AASA;;;;;;AAKA;;;;;;;;;;;;;sBA6BE,CAAmBnL,EAAnB;oBAAA;;QAAmBC,qBAA4F;QAA1FC;QAAA5C,QAAQ,mBAAG;QAAI8C;QAAA7C,KAAK,mBAAG;QAAGgD;QAAAiL,MAAM,mBAAG;QAAG7K;QAAA8K,WAAW,mBAAG;;eA4BlE,GAAS;MACdjO,KAAI,CAACC,OAAL;KADK;;gBAIC,GAAU;UACVC,QAAQ,GAAGF,KAAI,CAACG,SAAtB;UACML,QAAQ,GAAGE,KAAI,CAACa,SAAtB;UACMd,KAAK,GAAGC,KAAI,CAACsB,MAAnB;UACM0M,MAAM,GAAIhO,KAAI,CAACkO,OAArB;UACMD,WAAW,GAAGjO,KAAI,CAACmO,YAAzB;UAEI,CAACjO,QAAL,EAAe;UAETkO,UAAU,GAAGlO,QAAQ,CAACkO,UAA5B;UACMhO,MAAM,GAAGF,QAAQ,CAACG,aAAxB;MAEAD,MAAM,CAACE,OAAP,CAAe,UAACC,KAAD;YACPC,QAAQ,GAAGD,KAAK,CAACE,cAAvB;YACMC,EAAE,GAAGH,KAAK,CAACI,OAAjB;YACMC,MAAM,GAAGd,QAAQ,GAAGY,EAAE,CAACI,aAAH,CAA8BhB,QAA9B,CAAH,GAA8CY,EAArE;YACM2N,UAAU,GAAG,KAAKjM,IAAI,CAACG,GAAL,CAAS/B,QAAQ,GAAGT,KAApB,IAA6B,CAAlC,CAAnB;YACMuO,YAAY,GAAG9N,QAAQ,GAAG,CAAX,GAAe4B,IAAI,CAACC,GAAL,CAAS,EAAT,EAAa7B,QAAQ,GAAG,GAAX,GAAiBwN,MAA9B,CAAf,GAAuD5L,IAAI,CAACE,GAAL,CAAS,CAAC,EAAV,EAAc9B,QAAQ,GAAG,GAAX,GAAiBwN,MAA/B,CAA5E;;YACMxL,KAAqB4L,UAAU,GAAG,CAAC,CAAD,EAAIE,YAAJ,CAAH,GAAuB,CAACA,YAAD,EAAe,CAAf,CAAtD;YAACC,OAAO,QAAR;YAAUC,OAAO,QAAjB;;QAEN5N,MAAM,CAACY,KAAP,CAAaD,SAAb,GAAyB,iBAAe0M,WAAf,iBAAA,GAAyCM,OAAzC,kBAAA,GAAgEC,OAAhE,gBAAA,GAAqFH,UAArF,MAAzB;OARF;KAZM;;SA/BDlO,SAAL,GAAiB,IAAjB;SACKU,SAAL,GAAiBf,QAAjB;SACKwB,MAAL,GAAcvB,KAAd;SACKmO,OAAL,GAAeF,MAAf;SACKG,YAAL,GAAoBF,WAApB;;;;EAzBFvM,qBAAA,oBAAA;SAAA;aAA+B,KAAKb,SAAZ;;SAKxB,UAAoBc,GAApB;WAAwCd,SAAL,GAAiBc,GAAjB;;;;GALnC;EACAD,qBAAA,iBAAA;SAAA;aAA4B,KAAKJ,MAAZ;;SAKrB,UAAiBK,GAAjB;WAAqCL,MAAL,GAAcK,GAAd;;;;GALhC;EACAD,qBAAA,kBAAA;SAAA;aAA6B,KAAKwM,OAAZ;;SAKtB,UAAkBvM,GAAlB;WAAsCuM,OAAL,GAAevM,GAAf;;;;GALjC;EACAD,qBAAA,uBAAA;SAAA;aAAkC,KAAKyM,YAAZ;;SAK3B,UAAuBxM,GAAvB;WAA2CwM,YAAL,GAAoBxM,GAApB;;;;GALtC;;cAyBO,GAAP,UAAYzB,QAAZ;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;IAEAA,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACC,IAAnB,EAAyB,KAAK9B,OAA9B;IACAC,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACE,YAAnB,EAAiC,KAAKC,MAAtC;;SACKhC,OAAL;GATK;;iBAYA,GAAP;QACM,CAAC,KAAKE,SAAV,EAAqB;;SAEhBA,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACC,IAA1B,EAAgC,KAAK9B,OAArC;;SACKE,SAAL,CAAe+B,GAAf,CAAmBJ,MAAM,CAACE,YAA1B,EAAwC,KAAKC,MAA7C;;SACK9B,SAAL,GAAiB,IAAjB;GALK;;oBAmCT;GApFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;;;mBAKE,CAAmBqC,EAAnB;QACEtC,QAAQ;QACRuO,UAAU;QACVC,OAAO;SAEFvO,SAAL,GAAiBD,QAAjB;SACKyO,WAAL,GAAmBF,UAAnB;SACKG,QAAL,GAAgBF,OAAhB;;;;;iCAOQ,GAAV,UAAkCG,IAAlC,EAAgD3E,KAAhD;QACQjF,KAAK,GAAG6J,QAAQ,CAACC,WAAT,EAAd;QACMC,IAAI,GAAG/J,KAAK,CAACgK,wBAAN,CAA+BJ,IAA/B,CAAb;QACMK,MAAM,GAAGF,IAAI,CAACG,UAApB;;SAEKC,gBAAL,CAAsBF,MAAtB,EAA8BhF,KAA9B;;WAEOgF,MAAP;GAPQ;;0BAUA,GAAV,UAA2BA,MAA3B,EAAgDhF,KAAhD;oBAAA;;QACQZ,YAAY,GAAG,KAAKnJ,SAAL,CAAe+E,MAAf,CAAsBoE,YAA3C;QACM+F,UAAU,GAAG/F,YAAY,CAACY,KAAD,CAAZ,CAAoB3J,KAApB,CAA0B2J,KAA7C;IAEAgF,MAAM,CAAC3K,gBAAP,CAAwBwB,OAAO,CAACE,UAAhC,EAA4C,UAAAmD,CAAA;MAC1CA,CAAC,CAACC,eAAF;KADF;IAIA6F,MAAM,CAAC3K,gBAAP,CAAwBwB,OAAO,CAACG,WAAhC,EAA6C,UAAAkD,CAAA;MAC3CA,CAAC,CAACC,eAAF;KADF,EAEG;MAAEkC,OAAO,EAAE;KAFd;IAIA2D,MAAM,CAAC3K,gBAAP,CAAwBwB,OAAO,CAACC,KAAhC,EAAuC;MACrChG,KAAI,CAACG,SAAL,CAAegK,MAAf,CAAsBkF,UAAtB,EACGvJ,KADH,CACS,UAAA4E,GAAA;YACDA,GAAG,YAAYC,aAAnB,EAAkC;cAC5BD,GAAN;OAHJ;KADF;GAZQ;;iBAoBZ;GAjDA;;ACNA;;;EAA6B4E,iCAAA;;yBAA7B;wEAAA;;IACUtP,cAAA,GAA0B,EAA1B;IACAA,gBAAA,GAAqB,CAAC,CAAtB;;;;;EAER0B,qBAAA,wBAAA;SAAA;UACQ+M,UAAU,GAAG,KAAKE,WAAxB;aACUF,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACI,aAA/C;;;;GAFF;EAKAjF,qBAAA,wBAAA;SAAA;UACQ+M,UAAU,GAAG,KAAKE,WAAxB;aACUF,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACK,oBAA/C;;;;GAFF;;iBAKO,GAAP;SACO4I,QAAL,GAAgB,EAAhB;SACKC,UAAL,GAAkB,CAAC,CAAnB;GAFK;;gBAKA,GAAP;oBAAA;;QACQvP,QAAQ,GAAG,KAAKC,SAAtB;QACMsO,UAAU,GAAG,KAAKE,WAAxB;QACMD,OAAO,GAAG,KAAKE,QAArB;QACMc,WAAW,GAAG,KAAKC,YAAzB;QACMjC,WAAW,GAAG,KAAKkC,YAAzB;QACMC,YAAY,GAAGpB,UAAU,CAACoB,YAAhC;QACMC,kBAAkB,GAAGrB,UAAU,CAACqB,kBAAtC;QACMC,kBAAkB,GAAMtB,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACG,qBAAnE;QACM4C,YAAY,GAAGpJ,QAAQ,CAACgF,MAAT,CAAgBoE,YAArC;IAEA1B,QAAQ,CAAC8G,OAAD,EAAUqB,kBAAV,CAAR;IAEArB,OAAO,CAACsB,SAAR,GAAoB1G,YAAY,CAC7B2G,GADiB,CACb,UAACC,WAAD,EAAchG,KAAd;UACC4F,kBAAkB,IAAII,WAAW,CAAC3P,KAAZ,CAAkB2J,KAAlB,KAA4BhK,QAAQ,CAACgK,KAA/D,EAAsE;eAC7D4F,kBAAkB,CAACJ,WAAD,EAAcxF,KAAd,CAAzB;OADF,MAEO;eACE2F,YAAY,CAACH,WAAD,EAAcxF,KAAd,CAAnB;;KALc,EAQjBiG,IARiB,CAQZ,IARY,CAApB;QAUMC,OAAO,GAAG,GAAGC,KAAH,CAASC,IAAT,CAAc5B,OAAO,CAAC6B,QAAtB,CAAhB;IAEAH,OAAO,CAAC9P,OAAR,CAAgB,UAAC4O,MAAD,EAAShF,KAAT;UACRgG,WAAW,GAAG5G,YAAY,CAACY,KAAD,CAAhC;;UAEIgG,WAAW,CAAC3P,KAAZ,CAAkB2J,KAAlB,KAA4BhK,QAAQ,CAACgK,KAAzC,EAAgD;QAC9CtC,QAAQ,CAACsH,MAAD,EAASxB,WAAT,CAAR;QACA1N,KAAI,CAACyP,UAAL,GAAkBvF,KAAlB;;;MAGFlK,KAAI,CAACoP,gBAAL,CAAsBF,MAAtB,EAA8BhF,KAA9B;KARF;SAWKsF,QAAL,GAAgBY,OAAhB;GApCK;;gBAuCA,GAAP,UAAclG,KAAd;QACQhK,QAAQ,GAAG,KAAKC,SAAtB;QACMsO,UAAU,GAAG,KAAKE,WAAxB;QACMD,OAAO,GAAG,KAAKE,QAArB;QACMwB,OAAO,GAAG,KAAKZ,QAArB;QACME,WAAW,GAAG,KAAKC,YAAzB;QACMjC,WAAW,GAAG,KAAKkC,YAAzB;QACMY,SAAS,GAAG,KAAKf,UAAvB;QACMnG,YAAY,GAAGpJ,QAAQ,CAACgF,MAAT,CAAgBoE,YAArC;QACMuG,YAAY,GAAGpB,UAAU,CAACoB,YAAhC;QACMC,kBAAkB,GAAGrB,UAAU,CAACqB,kBAAtC;QAEIxG,YAAY,CAACC,MAAb,IAAuB,CAA3B,EAA8B;QAExBkH,YAAY,GAAGnH,YAAY,CAAC,CAAD,CAAZ,CAAgB/I,KAAhB,CAAsB2J,KAA3C;QACMwG,iBAAiB,GAAGxG,KAAK,GAAGuG,YAAlC;QAEID,SAAS,KAAKE,iBAAlB,EAAqC;;QAEjCZ,kBAAJ,EAAwB;UAChBa,UAAU,GAAGP,OAAO,CAACI,SAAD,CAA1B;;UACIG,UAAJ,EAAgB;YACRC,SAAS,GAAG,KAAKC,uBAAL,CAChBhB,YAAY,CAACH,WAAD,EAAcc,SAAd,CADI,EAEhBA,SAFgB,CAAlB;;QAIAG,UAAU,CAACG,aAAX,CAA0BC,YAA1B,CAAuCH,SAAvC,EAAkDD,UAAlD;QACAP,OAAO,CAACI,SAAD,CAAP,GAAqBI,SAArB;;;UAGII,YAAY,GAAGZ,OAAO,CAACM,iBAAD,CAA5B;;UACMO,eAAe,GAAG,KAAKJ,uBAAL,CACtBf,kBAAkB,CAAIJ,WAAW,MAAX,GAAehC,WAAnB,EAAkCgD,iBAAlC,CADI,EAEtBA,iBAFsB,CAAxB;;MAKAhC,OAAO,CAACqC,YAAR,CAAqBE,eAArB,EAAsCD,YAAtC;MACAZ,OAAO,CAACM,iBAAD,CAAP,GAA6BO,eAA7B;KAlBF,MAmBO;UACCD,YAAY,GAAGZ,OAAO,CAACM,iBAAD,CAA5B;UACMC,UAAU,GAAGP,OAAO,CAACI,SAAD,CAA1B;;UAEIG,UAAJ,EAAgB;QACdxI,WAAW,CAACwI,UAAD,EAAajD,WAAb,CAAX;;;MAGF9F,QAAQ,CAACoJ,YAAD,EAAetD,WAAf,CAAR;;;SAGG+B,UAAL,GAAkBiB,iBAAlB;GAjDK;;uBAmDT;EA7G6BQ,SAA7B;;ACAA;;;EAA+B5B,mCAAA;;2BAA/B;wEAAA;;IACUtP,gBAAA,GAAqB,CAAC,CAAtB;IACAA,gBAAA,GAAqB,CAAC,CAAtB;;;;;;iBAED,GAAP;SACOyP,UAAL,GAAkB,CAAC,CAAnB;SACK0B,UAAL,GAAkB,CAAC,CAAnB;GAFK;;gBAKA,GAAP;QACQjR,QAAQ,GAAG,KAAKC,SAAtB;QACMuO,OAAO,GAAG,KAAKE,QAArB;QACMH,UAAU,GAAG,KAAKE,WAAxB;QACMyC,oBAAoB,GAAM3C,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACM,uBAArE;QACMwK,oBAAoB,GAAM5C,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACO,uBAArE;QACMwK,kBAAkB,GAAM7C,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACQ,qBAAnE;IAEAa,QAAQ,CAAC8G,OAAD,EAAU0C,oBAAV,CAAR;IAEA1C,OAAO,CAACsB,SAAR,GAAoBvB,UAAU,CAAC8C,cAAX,CAA0BF,oBAA1B,EAAgDC,kBAAhD,CAApB;SAEKrP,MAAL,CAAY/B,QAAQ,CAACgK,KAArB;GAZK;;gBAeA,GAAP,UAAcA,KAAd;QACQhK,QAAQ,GAAG,KAAKC,SAAtB;QACMuO,OAAO,GAAG,KAAKE,QAArB;QACMH,UAAU,GAAG,KAAKE,WAAxB;QAEMrF,YAAY,GAAGpJ,QAAQ,CAACgF,MAAT,CAAgBoE,YAArC;QACMkI,YAAY,GAAGlI,YAAY,CAACC,MAAb,GAAsB,CAAtB,GACjBW,KAAK,GAAGZ,YAAY,CAAC,CAAD,CAAZ,CAAgB/I,KAAhB,CAAsB2J,KAA9B,GAAsC,CADrB,GAEjB,CAFJ;QAGMuH,WAAW,GAAGnI,YAAY,CAACC,MAAjC;QAEIiI,YAAY,KAAK,KAAK/B,UAAtB,IAAoCgC,WAAW,KAAK,KAAKN,UAA7D,EAAyE;QAEnEO,uBAAuB,GAAG,MAAIjD,UAAU,CAACc,WAAf,MAAA,GAA8BhJ,UAAU,CAACO,uBAAzE;QACM6K,qBAAqB,GAAG,MAAIlD,UAAU,CAACc,WAAf,MAAA,GAA8BhJ,UAAU,CAACQ,qBAAvE;QAEM6K,cAAc,GAAGlD,OAAO,CAAC5N,aAAR,CAAsB4Q,uBAAtB,CAAvB;QACMG,YAAY,GAAGnD,OAAO,CAAC5N,aAAR,CAAsB6Q,qBAAtB,CAArB;IAEAC,cAAc,CAAC5B,SAAf,GAA2BvB,UAAU,CAACqD,qBAAX,CAAiCN,YAAjC,CAA3B;IACAK,YAAY,CAAC7B,SAAb,GAAyBvB,UAAU,CAACsD,mBAAX,CAA+BN,WAA/B,CAAzB;SAEKhC,UAAL,GAAkB+B,YAAlB;SACKL,UAAL,GAAkBM,WAAlB;GAvBK;;yBAyBT;EAjD+BP,SAA/B;;ACEA;;;EAAmC5B,uCAAA;;+BAAnC;wEAAA;;IACUtP,cAAA,GAA0B,EAA1B;IACAA,iBAAA,GAAsB,CAAtB;IACAA,oBAAA,GAAyB,CAAC,CAA1B;IACAA,kBAAA,GAAuB,CAAC,CAAxB;;IAuIDA,YAAA,GAAS,UAACkK,KAAD;UACRuE,UAAU,GAAGzO,KAAI,CAAC2O,WAAxB;UACMqD,QAAQ,GAAGhS,KAAI,CAAC4O,QAAL,CAAcqD,iBAA/B;UACMC,UAAU,GAAGlS,KAAI,CAACmS,WAAxB;UACMC,WAAW,GAAGF,UAAU,GAAGzD,UAAU,CAAC4D,WAA5C;MAEAL,QAAQ,CAACxQ,KAAT,CAAeD,SAAf,GAA2B,gBAAa6Q,WAAW,GAAG,CAAd,GAAkB,CAAClI,KAAK,GAAG,GAAT,IAAgBgI,UAA/C,SAA3B;MACAlS,KAAI,CAACsS,YAAL,GAAoBpI,KAApB;KAPK;;;;;;;iBArIA,GAAP;SACOsF,QAAL,GAAgB,EAAhB;SACK2C,WAAL,GAAmB,CAAnB;SACKI,cAAL,GAAsB,CAAC,CAAvB;SACKD,YAAL,GAAoB,CAAC,CAArB;GAJK;;gBAOA,GAAP;oBAAA;;QACQ5D,OAAO,GAAG,KAAKE,QAArB;QACM1O,QAAQ,GAAG,KAAKC,SAAtB;QACMsO,UAAU,GAAG,KAAKE,WAAxB;QACMkB,YAAY,GAAGpB,UAAU,CAACoB,YAAhC;QACMvG,YAAY,GAAGpJ,QAAQ,CAACgF,MAAT,CAAgBoE,YAArC;QAEMkJ,mBAAmB,GAAM/D,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACU,qBAApE;QACMyI,WAAW,GAAMjB,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACI,aAA5D;QACM8L,WAAW,GAAMhE,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACW,oBAA5D;QACMwL,WAAW,GAAMjE,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACS,oBAA5D;QAEMgL,QAAQ,GAAGlD,QAAQ,CAAC6D,aAAT,CAAuB,KAAvB,CAAjB;IAEA/K,QAAQ,CAACoK,QAAD,EAAWS,WAAX,CAAR;IACA7K,QAAQ,CAAC8G,OAAD,EAAUgE,WAAV,CAAR;IACA9K,QAAQ,CAAC8G,OAAD,EAAU8D,mBAAV,CAAR;IACA9D,OAAO,CAACkE,WAAR,CAAoBZ,QAApB;IAEAA,QAAQ,CAAChC,SAAT,GAAqB1G,YAAY,CAC9B2G,GADkB,CACd,UAAC4C,CAAD,EAAI3I,KAAJ;aAAc2F,YAAY,CAACH,WAAD,EAAcxF,KAAd,CAAZ;KADA,EAElBiG,IAFkB,CAEb,IAFa,CAArB;QAIMC,OAAO,GAAG,GAAGC,KAAH,CAASC,IAAT,CAAc0B,QAAQ,CAACzB,QAAvB,CAAhB;IAEAH,OAAO,CAAC9P,OAAR,CAAgB,UAAC4O,MAAD,EAAShF,KAAT;MACdlK,KAAI,CAACoP,gBAAL,CAAsBF,MAAtB,EAA8BhF,KAA9B;KADF;QAIIkG,OAAO,CAAC7G,MAAR,IAAkB,CAAtB,EAAyB;QAEnBuJ,WAAW,GAAGC,gBAAgB,CAAC3C,OAAO,CAAC,CAAD,CAAR,CAApC;QACM8B,UAAU,GAAG9B,OAAO,CAAC,CAAD,CAAP,CAAW4C,WAAX,GAAyBC,UAAU,CAACH,WAAW,CAACI,UAAb,CAAnC,GAA8DD,UAAU,CAACH,WAAW,CAACK,WAAb,CAA3F;IAEAzE,OAAO,CAAClN,KAAR,CAAcH,KAAd,GAAyB6Q,UAAU,GAAGzD,UAAU,CAAC4D,WAAxB,OAAzB;SAEK7C,QAAL,GAAgBY,OAAhB;SACK+B,WAAL,GAAmBD,UAAnB;SACKK,cAAL,GAAsB,CAAC,CAAvB;SAEKtQ,MAAL,CAAY,KAAK9B,SAAL,CAAe+J,KAA3B;IAEAtF,MAAM,CAACwO,qBAAP,CAA6B;MAC3BjL,WAAW,CAACuG,OAAD,EAAUgE,WAAV,CAAX;KADF;GA1CK;;gBA+CA,GAAP,UAAcxI,KAAd;QACQuE,UAAU,GAAG,KAAKE,WAAxB;QACMzO,QAAQ,GAAG,KAAKC,SAAtB;QACMiQ,OAAO,GAAG,KAAKZ,QAArB;QACMgB,SAAS,GAAG,KAAK+B,cAAvB;QAEM1C,YAAY,GAAGpB,UAAU,CAACoB,YAAhC;QACMC,kBAAkB,GAAGrB,UAAU,CAACqB,kBAAtC;QAEMxG,YAAY,GAAGpJ,QAAQ,CAACgF,MAAT,CAAgBoE,YAArC;QACMmH,YAAY,GAAGnH,YAAY,CAAC,CAAD,CAAZ,CAAgB/I,KAAhB,CAAsB2J,KAA3C;QACMmJ,WAAW,GAAGnJ,KAAK,GAAGuG,YAA5B;QAEInH,YAAY,CAACC,MAAb,IAAuB,CAA3B,EAA8B;QAExBmG,WAAW,GAAMjB,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACI,aAA5D;QACM2M,iBAAiB,GAAM7E,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACK,oBAAlE;QACM2M,eAAe,GAAM9E,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACY,kBAAhE;QACMqM,eAAe,GAAM/E,UAAU,CAACc,WAAX,MAAA,GAA0BhJ,UAAU,CAACa,kBAAhE;;QACMqM,eAAe,GAAG,UAACC,MAAD;aAAoB,KAAGH,eAAH,IAAqBG,MAAM,GAAG,CAAT,GAAaA,MAAb,GAAsB,EAA3C,CAAA;KAA5C;;QACMC,eAAe,GAAG,UAACD,MAAD;aAAoB,KAAGF,eAAH,IAAqBE,MAAM,GAAG,CAAT,GAAaA,MAAb,GAAsB,EAA3C,CAAA;KAA5C;;QAEME,cAAc,GAAG,IAAItL,MAAJ,CAAW,MAAIiL,eAAf,CAAvB;QACMM,cAAc,GAAG,IAAIvL,MAAJ,CAAW,MAAIkL,eAAf,CAAvB;;QAEI1D,kBAAJ,EAAwB;UAChBa,UAAU,GAAGP,OAAO,CAACI,SAAD,CAA1B;;UACIG,UAAJ,EAAgB;YACRC,SAAS,GAAG,KAAKC,uBAAL,CAChBhB,YAAY,CAACH,WAAD,EAAcc,SAAd,CADI,EAEhBA,SAFgB,CAAlB;;QAIAG,UAAU,CAACG,aAAX,CAA0BC,YAA1B,CAAuCH,SAAvC,EAAkDD,UAAlD;QACAP,OAAO,CAACI,SAAD,CAAP,GAAqBI,SAArB;;;UAGII,YAAY,GAAGZ,OAAO,CAACiD,WAAD,CAA5B;;UACIrC,YAAJ,EAAkB;YACVC,eAAe,GAAG,KAAKJ,uBAAL,CACtBf,kBAAkB,CAACJ,WAAD,EAAc2D,WAAd,CADI,EAEtBA,WAFsB,CAAxB;;QAKArC,YAAY,CAACF,aAAb,CAA4BC,YAA5B,CAAyCE,eAAzC,EAA0DD,YAA1D;QACAZ,OAAO,CAACiD,WAAD,CAAP,GAAuBpC,eAAvB;;;;IAIJb,OAAO,CAAC9P,OAAR,CAAgB,UAAC4O,MAAD,EAAS4E,GAAT;UACRC,WAAW,GAAGD,GAAG,GAAGT,WAA1B;UACMvL,SAAS,GAAGoH,MAAM,CAACrH,SAAP,CAAiBI,KAAjB,CAAuB,GAAvB,CAAlB;;WAEwB,UAAA,EAAA+L,uBAAxB,EAAwBC,uBAAxB,EAAwBA,IAAxB,EAAmC;YAAxBpM,SAAS,kBAAf;;YACCA,SAAS,KAAKyL,iBAAd,IAAmCM,cAAc,CAACM,IAAf,CAAoBrM,SAApB,CAAnC,IAAqEgM,cAAc,CAACK,IAAf,CAAoBrM,SAApB,CAAzE,EAAyG;UACvGM,WAAW,CAAC+G,MAAD,EAASrH,SAAT,CAAX;;;;UAIAkM,WAAW,KAAK,CAApB,EAAuB;QACrBnM,QAAQ,CAACsH,MAAD,EAASoE,iBAAT,CAAR;OADF,MAEO,IAAIS,WAAW,GAAG,CAAlB,EAAqB;QAC1BnM,QAAQ,CAACsH,MAAD,EAASyE,eAAe,CAACvR,IAAI,CAACG,GAAL,CAASwR,WAAT,CAAD,CAAxB,CAAR;OADK,MAEA;QACLnM,QAAQ,CAACsH,MAAD,EAASuE,eAAe,CAACrR,IAAI,CAACG,GAAL,CAASwR,WAAT,CAAD,CAAxB,CAAR;;KAfJ;IAmBAtF,UAAU,CAAC0F,cAAX,CAA0Bd,WAA1B,EAAuC;MACrCe,KAAK,EAAEhE,OAAO,CAAC7G,MADsB;MAErCiH,SAAS,WAF4B;MAGrC6D,WAAW,EAAE,KAAK/B,YAHmB;MAIrCtP,SAAS,EAAEqQ,WAAW,GAAG7C,SAAd,GAA0BvN,SAAS,CAACC,IAApC,GAA2CD,SAAS,CAACqR,IAJ3B;MAKrClE,OAAO,oBAAMA,QALwB;MAMrCjG,MAAM,EAAE,KAAKA;KANf;SASKoI,cAAL,GAAsBc,WAAtB;GA5EK;;6BAwFT;EApJmCnC,SAAnC;;ACiBA;;;;AAGA;;;qBA2CE,CAAmB1O,EAAnB;oBAAA;;QAAmBC,qBAYa;QAX9BC;QAAAkG,QAAQ,mBAAG;QACXhG;QAAA9C,QAAQ,mBAAGyG,UAAU,CAACC;QACtBzD;QAAA+I,IAAI,mBAAGvF,UAAU,CAACc,IAAX,CAAgBC;QACvBnE;QAAAoM,WAAW,mBAAGhJ,UAAU,CAACE;QACzBuC;QAAAqJ,WAAW,mBAAG;QACdnJ;QAAA2G,YAAY,mBAAG,UAAChI,SAAD;aAAuB,mBAAgBA,SAAhB,eAAA;;QACtC0M;QAAAzE,kBAAkB,mBAAG;QACrB0E;QAAAjD,cAAc,mBAAG,UAACkD,YAAD,EAAuBC,UAAvB;aAA8C,mBAAgBD,YAAhB,8BAAA,GAAsDC,UAAtD,eAAA;;QAC/DC;QAAA7C,qBAAqB,mBAAG,UAAC5H,KAAD;aAAmBA,KAAK,CAAC0K,QAAN,EAAA;;QAC3CC;QAAA9C,mBAAmB,mBAAG,UAAC7H,KAAD;aAAmBA,KAAK,CAAC0K,QAAN,EAAA;;QACzCE;QAAAX,cAAc,mBAAG,UAACjK,KAAD,EAAgB6K,GAAhB;aAAuCA,GAAG,CAAC5K,MAAJ,CAAWD,KAAX,CAAA;;;;;kBApDlD,GAA6B,IAA7B;;eA6GD,GAAS;MACdlK,KAAI,CAACgV,gBAAL;;MACAhV,KAAI,CAACiV,SAAL,CAAeC,MAAf;KAFK;;uBAwBC,GAAiB,UAAC7J,GAAD;MACvBrL,KAAI,CAACiV,SAAL,CAAehT,MAAf,CAAsBoJ,GAAG,CAACnB,KAA1B;KADM;;SA/EDU,SAAL,GAAiBhC,QAAjB;SACK/H,SAAL,GAAiBf,QAAjB;SACKkM,KAAL,GAAaF,IAAb;SACKqJ,YAAL,GAAoB5F,WAApB;SACK6F,YAAL,GAAoB/C,WAApB;SACKgD,aAAL,GAAqBxF,YAArB;SACKyF,mBAAL,GAA2BxF,kBAA3B;SACKyF,eAAL,GAAuBhE,cAAvB;SACKiE,sBAAL,GAA8B1D,qBAA9B;SACK2D,oBAAL,GAA4B1D,mBAA5B;SACK2D,eAAL,GAAuBvB,cAAvB;;;;EA/CFzS,qBAAA,oBAAA;SAAA;aAA+B,KAAKkJ,SAAZ;;SAYxB,UAAoBjJ,GAApB;WAA+DiJ,SAAL,GAAiBjJ,GAAjB;;;;GAZ1D;EACAD,qBAAA,oBAAA;SAAA;aAA+B,KAAKb,SAAZ;;SAYxB,UAAoBc,GAApB;WAA+Dd,SAAL,GAAiBc,GAAjB;;;;GAZ1D;EACAD,qBAAA,gBAAA;SAAA;aAA2B,KAAKsK,KAAZ;;SAYpB,UAAgBrK,GAAhB;WAAuDqK,KAAL,GAAarK,GAAb;;;;GAZlD;EACAD,qBAAA,uBAAA;SAAA;aAAkC,KAAKyT,YAAZ;;;;GAA3B;EACAzT,qBAAA,uBAAA;SAAA;aAAkC,KAAK0T,YAAZ;;SAY3B,UAAuBzT,GAAvB;WAAqEyT,YAAL,GAAoBzT,GAApB;;;;GAZhE;EACAD,qBAAA,wBAAA;SAAA;aAAmC,KAAK2T,aAAZ;;SAY5B,UAAwB1T,GAAxB;WAAuE0T,aAAL,GAAqB1T,GAArB;;;;GAZlE;EACAD,qBAAA,8BAAA;SAAA;aAAyC,KAAK4T,mBAAZ;;SAYlC,UAA8B3T,GAA9B;WAAmF2T,mBAAL,GAA2B3T,GAA3B;;;;GAZ9E;EACAD,qBAAA,0BAAA;SAAA;aAAqC,KAAK6T,eAAZ;;SAY9B,UAA0B5T,GAA1B;WAA2E4T,eAAL,GAAuB5T,GAAvB;;;;GAZtE;EACAD,qBAAA,iCAAA;SAAA;aAA4C,KAAK8T,sBAAZ;;SAYrC,UAAiC7T,GAAjC;WAAyF6T,sBAAL,GAA8B7T,GAA9B;;;;GAZpF;EACAD,qBAAA,+BAAA;SAAA;aAA0C,KAAK+T,oBAAZ;;SAYnC,UAA+B9T,GAA/B;WAAqF8T,oBAAL,GAA4B9T,GAA5B;;;;GAZhF;EACAD,qBAAA,0BAAA;SAAA;aAAqC,KAAKgU,eAAZ;;SAY9B,UAA0B/T,GAA1B;WAA2E+T,eAAL,GAAuB/T,GAAvB;;;;GAZtE;EAKAD,qBAAA,yCAAA;SAAA,UAAyCC,GAAzC;WAAuFwT,YAAL,GAAoBxT,GAApB;;;;GAAlF;;cAmCO,GAAP,UAAYzB,QAAZ;QACM,KAAKC,SAAT,EAAoB;WACbyB,OAAL;;;SAGGzB,SAAL,GAAiBD,QAAjB;QAEM4L,IAAI,GAAG,KAAKE,KAAlB;QACMlM,QAAQ,GAAG,KAAKe,SAAtB;QACM+H,QAAQ,GAAG,KAAKgC,SAAL,GAAiB,KAAKA,SAAtB,GAAkC1K,QAAQ,CAACS,OAA5D;QACM+N,OAAO,GAAG9F,QAAQ,CAAC9H,aAAT,CAAuBhB,QAAvB,CAAhB;;QAEI,CAAC4O,OAAL,EAAc;YACN,IAAI/F,KAAJ,CAAU,0EAAwE7I,QAAlF,CAAN;;;SAGG8O,QAAL,GAAgBF,OAAhB;SACKuG,SAAL,GAAiB,KAAKU,eAAL,CAAqB7J,IAArB,CAAjB;IAEA5L,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAACyK,WAAnB,EAAgC,KAAKC,cAArC;IACAtM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAAC2K,YAAnB,EAAiC,KAAKD,cAAtC;IACAtM,QAAQ,CAAC2B,EAAT,CAAYC,MAAM,CAAC8T,YAAnB,EAAiC,KAAK3T,MAAtC;SAEKA,MAAL;GAvBK;;iBA0BA,GAAP;QACQ/B,QAAQ,GAAG,KAAKC,SAAtB;;QAEI,CAACD,QAAL,EAAe;;;;IAIfA,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAACyK,WAApB,EAAiC,KAAKC,cAAtC;IACAtM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAAC2K,YAApB,EAAkC,KAAKD,cAAvC;IACAtM,QAAQ,CAACgC,GAAT,CAAaJ,MAAM,CAAC8T,YAApB,EAAkC,KAAK3T,MAAvC;;SAEKgT,SAAL,CAAerT,OAAf;;SACKoT,gBAAL;;SACK7U,SAAL,GAAiB,IAAjB;GAbK;;yBAqBC,GAAR,UAAwB2L,IAAxB;QACQwB,OAAO,GAAG;MACdpN,QAAQ,EAAE,KAAKC,SADD;MAEdsO,UAAU,EAAE,IAFE;MAGdC,OAAO,EAAE,KAAKE;KAHhB;;YAMQ9C,IAAR;WACOvF,UAAU,CAACc,IAAX,CAAgBC,MAArB;eACS,IAAIuO,cAAJ,CAAmBvI,OAAnB,CAAP;;WACG/G,UAAU,CAACc,IAAX,CAAgBE,QAArB;eACS,IAAIuO,gBAAJ,CAAqBxI,OAArB,CAAP;;WACG/G,UAAU,CAACc,IAAX,CAAgBG,MAArB;eACS,IAAIuO,oBAAJ,CAAyBzI,OAAzB,CAAP;;;cAEM,IAAI3E,KAAJ,CAAU,kCAA+BmD,IAA/B,yBAAV,CAAN;;GAfE;;0BAuBA,GAAR;QACQ4C,OAAO,GAAG,KAAKE,QAArB;;WAEOF,OAAO,CAACS,UAAf,EAA2B;MACzBT,OAAO,CAACsH,WAAR,CAAoBtH,OAAO,CAACS,UAA5B;;GAJI;;mBAOV;GAlJA;;AC3BA;;;;;;"}
1
+ {"version":3,"file":"plugins.esm.js","sources":["../src/Parallax.ts","../src/Fade.ts","../src/AutoPlay.ts","../src/event.ts","../src/const.ts","../src/utils.ts","../src/Arrow.ts","../src/Sync.ts","../src/Perspective.ts","../src/pagination/renderer/Renderer.ts","../src/pagination/renderer/BulletRenderer.ts","../src/pagination/renderer/FractionRenderer.ts","../src/pagination/renderer/ScrollBulletRenderer.ts","../src/pagination/Pagination.ts","../src/index.ts"],"sourcesContent":["import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\n/**\n * You can apply parallax effect while panel is moving.\n * @ko 패널들을 움직이면서 parallax 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Parallax implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: string;\n private _scale: number;\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n\n /**\n * @param {string} selector Selector of the element to apply parallax effect<ko> Parallax 효과를 적용할 엘리먼트의 선택자 </ko>\n * @param {number} scale Effect amplication scale<ko>효과 증폭도</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Parallax(\"img\", 1));\n * ```\n */\n public constructor(selector = \"\", scale = 1) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n\n if (!flicking) return;\n\n const panels = flicking.visiblePanels;\n\n panels.forEach(panel => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = this._selector ? el.querySelector<HTMLElement>(this._selector)! : el;\n const parentTarget = target.parentNode as Element;\n const rect = target.getBoundingClientRect();\n const parentRect = parentTarget.getBoundingClientRect();\n const position = (parentRect.width - rect.width) / 2 * progress * this._scale;\n const transform = `translate(-50%) translate(${position}px)`;\n const style = target.style;\n\n style.cssText += `transform: ${transform};-webkit-transform: ${transform};-ms-transform:${transform}`;\n });\n };\n}\nexport default Parallax;\n","import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\n/**\n * You can apply fade in / out effect while panel is moving.\n * @ko 패널들을 움직이면서 fade in / out 효과를 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Fade implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: string;\n private _scale: number;\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n\n /**\n * @param - The selector of the element to which the fade effect is to be applied. If the selector is blank, it applies to panel element. <ko>Fade 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>\n * @param - Effect amplication scale<ko>효과 증폭도</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Fade(\"p\", 1));\n * ```\n */\n public constructor(selector = \"\", scale = 1) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n const selector = this._selector;\n const scale = this._scale;\n\n if (!flicking) return;\n\n const panels = flicking.visiblePanels;\n\n panels.forEach(panel => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = selector ? el.querySelector<HTMLElement>(selector)! : el;\n\n if (target) {\n const opacity = Math.min( 1, Math.max(0, 1 - Math.abs(progress * scale)));\n target.style.opacity = `${opacity}`;\n }\n });\n };\n}\n\nexport default Fade;\n","import Flicking, { EVENTS, Plugin, DIRECTION, MOVE_TYPE } from \"@egjs/flicking\";\n\ninterface AutoPlayOptions {\n duration: number;\n animationDuration: number | undefined;\n direction: typeof DIRECTION[\"NEXT\"] | typeof DIRECTION[\"PREV\"];\n stopOnHover: boolean;\n delayAfterHover: number;\n}\n\n/**\n * Plugin that allow you to automatically move to the next/previous panel, on a specific time basis\n * @ko 일정 시간마다, 자동으로 다음/이전 패널로 넘어가도록 할 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\nclass AutoPlay implements Plugin {\n /* Options */\n private _duration: AutoPlayOptions[\"duration\"];\n private _animationDuration: AutoPlayOptions[\"animationDuration\"];\n private _direction: AutoPlayOptions[\"direction\"];\n private _stopOnHover: AutoPlayOptions[\"stopOnHover\"];\n private _delayAfterHover: AutoPlayOptions[\"delayAfterHover\"];\n\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _timerId = 0;\n private _mouseEntered = false;\n private _playing = false;\n\n public get duration() { return this._duration; }\n public get animationDuration() { return this._animationDuration; }\n public get direction() { return this._direction; }\n public get stopOnHover() { return this._stopOnHover; }\n public get delayAfterHover() { return this._delayAfterHover; }\n public get playing() { return this._playing; }\n\n public set duration(val: number) { this._duration = val; }\n public set animationDuration(val: number | undefined) { this._animationDuration = val; }\n public set direction(val: AutoPlayOptions[\"direction\"]) { this._direction = val; }\n public set stopOnHover(val: boolean) { this._stopOnHover = val; }\n public set delayAfterHover(val: number) { this._delayAfterHover = val; }\n\n /**\n * @param {AutoPlayOptions} options Options for the AutoPlay instance.<ko>AutoPlay 옵션</ko>\n * @param {number} options.duration Time to wait before moving on to the next panel.<ko>다음 패널로 움직이기까지 대기 시간</ko>\n * @param {number | undefined} options.animationDuration Duration of animation of moving to the next panel. If undefined, duration option of the Flicking instance is used instead.<ko>패널이 움직이는 애니메이션의 지속 시간, undefined라면 Flicking 인스턴스의 duration 값을 사용한다</ko>\n * @param {\"PREV\" | \"NEXT\"} options.direction The direction in which the panel moves.<ko>패널이 움직이는 방향</ko>\n * @param {boolean} options.stopOnHover Whether to stop when mouse hover upon the element.<ko>엘리먼트에 마우스를 올렸을 때 AutoPlay를 정지할지 여부</ko>\n * @param {number} options.delayAfterHover If stopOnHover is true, the amount of time to wait before moving on to the next panel when mouse leaves the element.<ko>stopOnHover를 사용한다면 마우스가 엘리먼트로부터 나간 뒤 다음 패널로 움직이기까지 대기 시간</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new AutoPlay({ duration: 2000, direction: \"NEXT\" }));\n * ```\n */\n public constructor({\n duration = 2000,\n animationDuration = undefined,\n direction = DIRECTION.NEXT,\n stopOnHover = false,\n delayAfterHover\n }: Partial<AutoPlayOptions> = {}) {\n this._duration = duration;\n this._animationDuration = animationDuration;\n this._direction = direction;\n this._stopOnHover = stopOnHover;\n this._delayAfterHover = delayAfterHover ?? duration;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n flicking.on({\n [EVENTS.MOVE_START]: this.stop,\n [EVENTS.HOLD_START]: this.stop,\n [EVENTS.MOVE_END]: this.play,\n [EVENTS.SELECT]: this.play\n });\n\n this._flicking = flicking;\n if (this._stopOnHover) {\n const targetEl = this._flicking.element;\n targetEl.addEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.addEventListener(\"mouseleave\", this._onMouseLeave, false);\n }\n\n this.play();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n this._mouseEntered = false;\n this.stop();\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE_START, this.stop);\n flicking.off(EVENTS.HOLD_START, this.stop);\n flicking.off(EVENTS.MOVE_END, this.play);\n flicking.off(EVENTS.SELECT, this.play);\n\n const targetEl = flicking.element;\n targetEl.removeEventListener(\"mouseenter\", this._onMouseEnter, false);\n targetEl.removeEventListener(\"mouseleave\", this._onMouseLeave, false);\n\n this._flicking = null;\n }\n\n public update(): void {\n // DO-NOTHING\n }\n\n public play = () => {\n this._movePanel(this._duration);\n };\n\n public stop = () => {\n this._playing = false;\n clearTimeout(this._timerId);\n };\n\n private _movePanel(duration: number): void {\n const flicking = this._flicking;\n const direction = this._direction;\n\n if (!flicking) {\n return;\n }\n\n this.stop();\n\n if (this._mouseEntered || flicking.animating) {\n return;\n }\n\n this._playing = true;\n this._timerId = window.setTimeout(() => {\n let animationDuration = this._animationDuration || flicking.duration;\n const moveType = flicking.moveType;\n // for freeScroll\n if (moveType === MOVE_TYPE.FREE_SCROLL || moveType?.[0] === MOVE_TYPE.FREE_SCROLL) {\n const range = flicking.camera.range;\n const cameraPosition = flicking.camera.position;\n const currentPanel = flicking.currentPanel;\n const prevPanel = currentPanel.prev();\n const nextPanel = currentPanel.next();\n const currentPosition = currentPanel.position;\n let nextPosition = nextPanel?.position ?? range.max;\n let prevPosition = prevPanel?.position ?? range.min;\n\n // circular: prev (last) > cur (0) => prev(-1) < cur(0)\n if (prevPosition > currentPosition) {\n prevPosition = range.min - (range.max - prevPosition);\n }\n // current (last) > next (0)\n if (nextPosition < currentPosition) {\n nextPosition += range.max;\n }\n if (direction === DIRECTION.NEXT) {\n // prev - cur - camera - next\n const size = nextPosition - currentPosition;\n let restSize = nextPosition - cameraPosition;\n\n if (cameraPosition < currentPosition) {\n // prev - camera - cur - next\n restSize = nextPosition - cameraPosition;\n }\n\n animationDuration *= restSize / size;\n } else {\n // prev - caemra - cur - next\n const size = currentPosition - prevPosition;\n let restSize = cameraPosition - prevPosition;\n\n if (cameraPosition > currentPosition) {\n // prev - cur - camera - next\n restSize = cameraPosition - prevPosition;\n }\n animationDuration *= restSize / size;\n }\n }\n\n if (direction === DIRECTION.NEXT) {\n flicking.next(animationDuration).catch(() => void 0);\n } else {\n flicking.prev(animationDuration).catch(() => void 0);\n }\n\n this.play();\n }, duration);\n }\n\n private _onMouseEnter = () => {\n this._mouseEntered = true;\n this.stop();\n };\n\n private _onMouseLeave = () => {\n this._mouseEntered = false;\n this._movePanel(this._delayAfterHover);\n };\n}\n\nexport default AutoPlay;\n","export const BROWSER = {\n CLICK: \"click\",\n MOUSE_DOWN: \"mousedown\",\n TOUCH_START: \"touchstart\"\n};\n","export const ARROW = {\n PREV_SELECTOR: \".flicking-arrow-prev\",\n NEXT_SELECTOR: \".flicking-arrow-next\",\n DISABLED_CLASS: \"flicking-arrow-disabled\"\n} as const;\n\nexport const PAGINATION = {\n SELECTOR: \".flicking-pagination\",\n PREFIX: \"flicking-pagination\",\n BULLET_WRAPPER_SUFFIX: \"bullets\",\n BULLET_SUFFIX: \"bullet\",\n BULLET_ACTIVE_SUFFIX: \"bullet-active\",\n FRACTION_WRAPPER_SUFFIX: \"fraction\",\n FRACTION_CURRENT_SUFFIX: \"fraction-current\",\n FRACTION_TOTAL_SUFFIX: \"fraction-total\",\n SCROLL_UNINIT_SUFFIX: \"uninitialized\",\n SCROLL_WRAPPER_SUFFIX: \"scroll\",\n SCROLL_SLIDER_SUFFIX: \"slider\",\n SCROLL_PREV_SUFFIX: \"bullet-prev\",\n SCROLL_NEXT_SUFFIX: \"bullet-next\",\n TYPE: {\n BULLET: \"bullet\",\n FRACTION: \"fraction\",\n SCROLL: \"scroll\"\n }\n} as const;\n\nexport const SYNC = {\n TYPE: {\n CAMERA: \"camera\",\n INDEX: \"index\"\n }\n} as const;\n","export const addClass = (el: HTMLElement, className: string) => {\n if (!el) return;\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n const classes = el.className.split(\" \");\n\n if (classes.indexOf(className) < 0) {\n el.className = `${el.className} ${className}`;\n }\n }\n};\n\nexport const removeClass = (el: HTMLElement, className: string) => {\n if (!el) return;\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n const classRegex = new RegExp(`( |^)${className}( |$)`, \"g\");\n el.className.replace(classRegex, \" \");\n }\n};\n\nexport const getElement = (selector: string, parent: HTMLElement, pluginName: string) => {\n const el = parent.querySelector(selector);\n\n if (!el) {\n throw new Error(`[Flicking-${pluginName}] Couldn't find element with the given selector: ${selector}`);\n }\n\n return el as HTMLElement;\n};\n","import Flicking, { EVENTS, FlickingError, Plugin, WillChangeEvent } from \"@egjs/flicking\";\n\nimport { BROWSER } from \"./event\";\nimport { ARROW } from \"./const\";\nimport { addClass, getElement, removeClass } from \"./utils\";\n\ninterface ArrowOptions {\n parentEl: HTMLElement | null;\n prevElSelector: string;\n nextElSelector: string;\n disabledClass: string;\n moveCount: number;\n moveByViewportSize: boolean;\n interruptable: boolean;\n}\n\n/**\n * A plugin to easily create prev/right arrow button of Flicking\n * @ko 이전/다음 버튼을 쉽게 만들 수 있는 플러그인\n * @memberof Flicking.Plugins\n */\nclass Arrow implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _prevEl: HTMLElement;\n private _nextEl: HTMLElement;\n private _nextIndex: number;\n\n /* Options */\n private _parentEl: ArrowOptions[\"parentEl\"];\n private _prevElSelector: ArrowOptions[\"prevElSelector\"];\n private _nextElSelector: ArrowOptions[\"nextElSelector\"];\n private _disabledClass: ArrowOptions[\"disabledClass\"];\n private _moveCount: ArrowOptions[\"moveCount\"];\n private _moveByViewportSize: ArrowOptions[\"moveByViewportSize\"];\n private _interruptable: ArrowOptions[\"interruptable\"];\n\n public get prevEl() { return this._prevEl; }\n public get nextEl() { return this._nextEl; }\n\n public get parentEl() { return this._parentEl; }\n public get prevElSelector() { return this._prevElSelector; }\n public get nextElSelector() { return this._nextElSelector; }\n public get disabledClass() { return this._disabledClass; }\n public get moveCount() { return this._moveCount; }\n public get moveByViewportSize() { return this._moveByViewportSize; }\n public get interruptable() { return this._interruptable; }\n\n public set parentEl(val: ArrowOptions[\"parentEl\"]) { this._parentEl = val; }\n public set prevElSelector(val: ArrowOptions[\"prevElSelector\"]) { this._prevElSelector = val; }\n public set nextElSelector(val: ArrowOptions[\"nextElSelector\"]) { this._nextElSelector = val; }\n public set disabledClass(val: ArrowOptions[\"disabledClass\"]) { this._disabledClass = val; }\n public set moveCount(val: ArrowOptions[\"moveCount\"]) { this._moveCount = val; }\n public set moveByViewportSize(val: ArrowOptions[\"moveByViewportSize\"]) { this._moveByViewportSize = val; }\n public set interruptable(val: ArrowOptions[\"interruptable\"]) { this._interruptable = val; }\n\n public constructor({\n parentEl = null,\n prevElSelector = ARROW.PREV_SELECTOR,\n nextElSelector = ARROW.NEXT_SELECTOR,\n disabledClass = ARROW.DISABLED_CLASS,\n moveCount = 1,\n moveByViewportSize = false,\n interruptable = false\n }: Partial<ArrowOptions> = {}) {\n this._parentEl = parentEl;\n this._prevElSelector = prevElSelector;\n this._nextElSelector = nextElSelector;\n this._disabledClass = disabledClass;\n this._moveCount = moveCount;\n this._moveByViewportSize = moveByViewportSize;\n this._interruptable = interruptable;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onAnimation);\n flicking.on(EVENTS.WILL_CHANGE, this._onWillChange);\n\n const parentEl = this._parentEl ? this._parentEl : flicking.element;\n const prevEl = getElement(this._prevElSelector, parentEl, \"Arrow\");\n const nextEl = getElement(this._nextElSelector, parentEl, \"Arrow\");\n\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(evt => {\n prevEl.addEventListener(evt, this._preventInputPropagation, { passive: true });\n nextEl.addEventListener(evt, this._preventInputPropagation, { passive: true });\n });\n\n prevEl.addEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.addEventListener(BROWSER.CLICK, this._onNextClick);\n\n this._prevEl = prevEl;\n this._nextEl = nextEl;\n\n this.update();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.MOVE, this._onAnimation);\n flicking.off(EVENTS.WILL_CHANGE, this._onWillChange);\n\n const prevEl = this._prevEl;\n const nextEl = this._nextEl;\n\n [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(evt => {\n prevEl.removeEventListener(evt, this._preventInputPropagation);\n nextEl.removeEventListener(evt, this._preventInputPropagation);\n });\n\n prevEl.removeEventListener(BROWSER.CLICK, this._onPrevClick);\n nextEl.removeEventListener(BROWSER.CLICK, this._onNextClick);\n this._flicking = null;\n }\n\n public update(): void {\n this._updateClass(this._flicking!.camera.position);\n }\n\n private _preventInputPropagation = (e: Event) => {\n e.stopPropagation();\n };\n\n private _onPrevClick = () => {\n const flicking = this._flicking!;\n const index = flicking.animating ? this._nextIndex : flicking.index;\n const currentPanel = flicking.animating ? flicking.panels[this._nextIndex] : flicking.currentPanel;\n const camera = flicking.camera;\n const anchorPoints = camera.anchorPoints;\n\n if ((flicking.animating && !this.interruptable) || anchorPoints.length <= 0) return;\n\n if (flicking.animating) {\n flicking.stopAnimation();\n }\n\n const firstAnchor = anchorPoints[0];\n const moveCount = this._moveCount;\n\n if (this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position - camera.size, flicking.duration)\n .catch(this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n let targetPanel = currentPanel;\n\n for (let i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.prev()!;\n }\n\n targetPanel.focus().catch(this._onCatch);\n } else if (index > firstAnchor.panel.index) {\n flicking.moveTo(Math.max(index - moveCount, firstAnchor.panel.index))\n .catch(this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(index)\n .catch(this._onCatch);\n }\n }\n };\n\n private _onNextClick = () => {\n const flicking = this._flicking!;\n const index = flicking.animating ? this._nextIndex : flicking.index;\n const currentPanel = flicking.animating ? flicking.panels[this._nextIndex] : flicking.currentPanel;\n const camera = flicking.camera;\n const anchorPoints = camera.anchorPoints;\n\n if ((flicking.animating && !this.interruptable) || anchorPoints.length <= 0) return;\n\n if (flicking.animating) {\n flicking.stopAnimation();\n }\n\n const lastAnchor = anchorPoints[anchorPoints.length - 1];\n const moveCount = this._moveCount;\n\n if (this._moveByViewportSize) {\n flicking.control.moveToPosition(camera.position + camera.size, flicking.duration)\n .catch(this._onCatch);\n } else {\n if (flicking.circularEnabled) {\n let targetPanel = currentPanel;\n\n for (let i = 0; i < moveCount; i++) {\n targetPanel = targetPanel.next()!;\n }\n\n targetPanel.focus().catch(this._onCatch);\n } else if (index < lastAnchor.panel.index) {\n flicking.moveTo(Math.min(index + moveCount, lastAnchor.panel.index))\n .catch(this._onCatch);\n } else if (camera.position > camera.range.min) {\n flicking.moveTo(index)\n .catch(this._onCatch);\n }\n }\n };\n\n private _onAnimation = () => {\n const flicking = this._flicking!;\n const camera = flicking.camera;\n const controller = flicking.control.controller;\n\n if (flicking.holding) {\n this._updateClass(camera.position);\n } else {\n this._updateClass(controller.animatingContext.end);\n }\n };\n\n private _onWillChange = (e: WillChangeEvent) => {\n this._nextIndex = e.index;\n };\n\n private _updateClass(pos: number) {\n const flicking = this._flicking!;\n const disabledClass = this._disabledClass;\n const prevEl = this._prevEl;\n const nextEl = this._nextEl;\n const cameraRange = flicking.camera.range;\n\n const stopAtPrevEdge = flicking.circularEnabled\n ? false\n : pos <= cameraRange.min;\n const stopAtNextEdge = flicking.circularEnabled\n ? false\n : pos >= cameraRange.max;\n\n if (stopAtPrevEdge) {\n addClass(prevEl, disabledClass);\n } else {\n removeClass(prevEl, disabledClass);\n }\n\n if (stopAtNextEdge) {\n addClass(nextEl, disabledClass);\n } else {\n removeClass(nextEl, disabledClass);\n }\n }\n\n private _onCatch = (err: Error) => {\n if (err instanceof FlickingError) return;\n throw err;\n };\n}\n\nexport default Arrow;\n","import Flicking, { clamp, EVENTS } from \"@egjs/flicking\";\nimport type { MoveEndEvent, MoveEvent, MoveStartEvent, Plugin, WillChangeEvent, SelectEvent } from \"@egjs/flicking\";\n\nimport { SYNC } from \"./const\";\nimport { addClass, removeClass } from \"./utils\";\n\n/**\n * @property {string} [type=\"camera\"] Types of methods to synchronize between Flickings. \"camera\" will sync by camera position, and \"index\" will sync by panel index\n * @property {SychronizableFlickingOptions} [synchronizedFlickingOptions=[]]\tDetailed options for syncing Flickings.\n */\nexport interface SyncOptions {\n type: typeof SYNC.TYPE.CAMERA | typeof SYNC.TYPE.INDEX;\n synchronizedFlickingOptions: SychronizableFlickingOptions[];\n}\n\n/**\n * @property {Flicking} flicking An instance of Flicking to sync\n * @property {boolean} [isClickable=false] By enabling this option, clicking the given Flicking's panel will change the given & other Flicking's index\n * @property {boolean} [isSlidable=false] By enabling this option, the given Flicking's scroll with mouse/touch input will change other Flicking's index. Only available for the index type\n * @property {string | undefined} [activeClass=undefined] An extra class for the panels when selected\n */\nexport interface SychronizableFlickingOptions {\n flicking: Flicking;\n isClickable?: boolean;\n isSlidable?: boolean;\n activeClass?: string;\n}\n\n/**\n * Plugin for synchronizing multiple flickings\n * @ko 다양한 형태로 Flicking들이 같이 움직이게 할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Sync implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n\n /* Options */\n private _type: SyncOptions[\"type\"];\n private _synchronizedFlickingOptions: SyncOptions[\"synchronizedFlickingOptions\"];\n\n public get type() { return this._type; }\n public get synchronizedFlickingOptions() { return this._synchronizedFlickingOptions; }\n\n public set type(val: SyncOptions[\"type\"]) {\n this._type = val;\n }\n\n public set synchronizedFlickingOptions(val: SyncOptions[\"synchronizedFlickingOptions\"]) {\n this._synchronizedFlickingOptions = val;\n }\n\n /** */\n public constructor({\n type = SYNC.TYPE.CAMERA,\n synchronizedFlickingOptions = []\n }: Partial<SyncOptions> = {}) {\n this._type = type;\n this._synchronizedFlickingOptions = synchronizedFlickingOptions;\n }\n\n public init(flicking: Flicking): void {\n const synced = this._synchronizedFlickingOptions;\n\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n this._addEvents();\n\n synced.forEach(options => {\n const { flicking: syncedFlicking } = options;\n\n this._updateClass(options, syncedFlicking.defaultIndex);\n });\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n this._removeEvents();\n\n this._flicking = null;\n }\n\n public update(): void {\n this._synchronizedFlickingOptions.forEach(options => {\n this._updateClass(options, options.flicking.index);\n });\n }\n\n private _preventEvent(fn: () => void) {\n this._removeEvents();\n fn();\n this._addEvents();\n }\n\n private _addEvents = (): void => {\n const type = this._type;\n const synced = this._synchronizedFlickingOptions;\n\n synced.forEach(({ flicking, isSlidable, isClickable }) => {\n if (type === SYNC.TYPE.CAMERA) {\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.MOVE_START, this._onMoveStart);\n flicking.on(EVENTS.MOVE_END, this._onMoveEnd);\n }\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.on(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, this._onIndexChange);\n }\n if (isClickable) {\n flicking.on(EVENTS.SELECT, this._onSelect);\n }\n });\n };\n\n private _removeEvents = (): void => {\n const type = this._type;\n const synced = this._synchronizedFlickingOptions;\n\n synced.forEach(({ flicking, isSlidable, isClickable }) => {\n if (type === SYNC.TYPE.CAMERA) {\n flicking.off(EVENTS.MOVE, this._onMove);\n flicking.off(EVENTS.MOVE_START, this._onMoveStart);\n flicking.off(EVENTS.MOVE_END, this._onMoveEnd);\n }\n if (type === SYNC.TYPE.INDEX && isSlidable) {\n flicking.off(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, this._onIndexChange);\n }\n if (isClickable) {\n flicking.off(EVENTS.SELECT, this._onSelect);\n }\n });\n };\n\n private _onIndexChange = (e: WillChangeEvent): void => {\n const flicking = e.currentTarget;\n\n if (!flicking.initialized) {\n return;\n }\n\n this._synchronizeByIndex(flicking, e.index);\n };\n\n private _onMove = (e: MoveEvent): void => {\n const camera = e.currentTarget.camera;\n const progress = (camera.position - camera.range.min) / camera.rangeDiff;\n\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking === e.currentTarget) return;\n\n let targetPosition = 0;\n\n if (camera.position < camera.range.min) {\n targetPosition = camera.position;\n } else if (camera.position > camera.range.max) {\n targetPosition = flicking.camera.range.max + camera.position - camera.range.max;\n } else {\n targetPosition = flicking.camera.range.min + flicking.camera.rangeDiff * progress;\n }\n\n void flicking.camera.lookAt(targetPosition);\n });\n };\n\n private _onMoveStart = (e: MoveStartEvent): void => {\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking !== e.currentTarget) {\n flicking.disableInput();\n }\n });\n };\n\n private _onMoveEnd = (e: MoveEndEvent): void => {\n this._synchronizedFlickingOptions.forEach(({ flicking }) => {\n if (flicking !== e.currentTarget) {\n flicking.enableInput();\n flicking.control.updateInput();\n }\n });\n };\n\n private _onSelect = (e: SelectEvent): void => {\n void e.currentTarget.moveTo(e.index).catch(() => void 0);\n\n this._synchronizeByIndex(e.currentTarget, e.index);\n };\n\n private _synchronizeByIndex = (activeFlicking: Flicking, index: number): void => {\n const synchronizedFlickingOptions = this._synchronizedFlickingOptions;\n\n this._preventEvent(() => {\n synchronizedFlickingOptions.forEach(options => {\n // Active class should be applied same to the Flicking which triggered event\n this._updateClass(options, index);\n\n const { flicking } = options;\n if (flicking === activeFlicking) return;\n\n const targetIndex = clamp(index, 0, flicking.panels.length);\n\n if (flicking.animating) {\n // Reserve moveTo once previous animation is finished\n flicking.once(EVENTS.MOVE_END, () => {\n void flicking.moveTo(targetIndex).catch(() => void 0);\n });\n } else {\n void flicking.moveTo(targetIndex);\n }\n });\n });\n };\n\n private _updateClass = ({ flicking, activeClass }: SychronizableFlickingOptions, index: number): void => {\n if (!activeClass) return;\n\n flicking.panels.forEach(panel => {\n if (panel.index === index) {\n addClass(panel.element, activeClass);\n } else {\n removeClass(panel.element, activeClass);\n }\n });\n };\n}\n\nexport default Sync;\n","/* eslint-disable no-underscore-dangle */\nimport Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\ninterface PerspectiveOptions {\n selector: string;\n scale: number;\n rotate: number;\n perspective: number;\n}\n\n/**\n * You can apply perspective effect while panel is moving.\n * @ko 패널들을 움직이면서 입체감을 부여할 수 있습니다.\n * @memberof Flicking.Plugins\n */\nclass Perspective implements Plugin {\n private _flicking: Flicking | null;\n\n /* Options */\n private _selector: PerspectiveOptions[\"selector\"];\n private _scale: PerspectiveOptions[\"scale\"];\n private _rotate: PerspectiveOptions[\"rotate\"];\n private _perspective: PerspectiveOptions[\"perspective\"];\n\n public get selector() { return this._selector; }\n public get scale() { return this._scale; }\n public get rotate() { return this._rotate; }\n public get perspective() { return this._perspective; }\n\n public set selector(val: string) { this._selector = val; }\n public set scale(val: number) { this._scale = val; }\n public set rotate(val: number) { this._rotate = val; }\n public set perspective(val: number) { this._perspective = val; }\n\n /**\n * @param - The selector of the element to which the perspective effect is to be applied. If the selector is blank, it applies to panel element. <ko>입체 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>\n * @param - Effect amplication scale.<ko>효과 증폭도</ko>\n * @param - Effect amplication rotate.<ko>회전 증폭도</ko>\n * @param - The value of perspective CSS property. <ko>css perspective 속성 값</ko>\n * @example\n * ```ts\n * flicking.addPlugins(new Perspective({ selector: \"p\", scale: 1, rotate: 1, perspective = 1000 }));\n * ```\n */\n public constructor({ selector = \"\", scale = 1, rotate = 1, perspective = 1000 }: Partial<PerspectiveOptions> = {}) {\n this._flicking = null;\n this._selector = selector;\n this._scale = scale;\n this._rotate = rotate;\n this._perspective = perspective;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n flicking.on(EVENTS.MOVE, this._onMove);\n flicking.on(EVENTS.AFTER_RESIZE, this.update);\n this._onMove();\n }\n\n public destroy(): void {\n if (!this._flicking) return;\n\n this._flicking.off(EVENTS.MOVE, this._onMove);\n this._flicking.off(EVENTS.AFTER_RESIZE, this.update);\n this._flicking = null;\n }\n\n public update = (): void => {\n this._onMove();\n };\n\n private _onMove = (): void => {\n const flicking = this._flicking;\n const selector = this._selector;\n const scale = this._scale;\n const rotate = this._rotate;\n const perspective = this._perspective;\n\n if (!flicking) return;\n\n const horizontal = flicking.horizontal;\n const panels = flicking.visiblePanels;\n\n panels.forEach((panel) => {\n const progress = panel.outsetProgress;\n const el = panel.element;\n const target = selector ? el.querySelector<HTMLElement>(selector)! : el;\n const panelScale = 1 / (Math.abs(progress * scale) + 1);\n const rotateDegree = progress > 0 ? Math.min(90, progress * 100 * rotate) : Math.max(-90, progress * 100 * rotate);\n const [rotateX, rotateY] = horizontal ? [0, rotateDegree] : [rotateDegree, 0];\n\n target.style.transform = `perspective(${perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${panelScale})`;\n });\n };\n}\n\nexport default Perspective;\n","import Flicking, { FlickingError } from \"@egjs/flicking\";\n\nimport { BROWSER } from \"../../event\";\nimport Pagination from \"../Pagination\";\n\nexport interface RendererOptions {\n flicking: Flicking;\n pagination: Pagination;\n wrapper: HTMLElement;\n}\n\nabstract class Renderer {\n protected _flicking: Flicking;\n protected _pagination: Pagination;\n protected _wrapper: HTMLElement;\n\n public constructor({\n flicking,\n pagination,\n wrapper\n }: RendererOptions) {\n this._flicking = flicking;\n this._pagination = pagination;\n this._wrapper = wrapper;\n }\n\n public abstract destroy(): void;\n public abstract render(): void;\n public abstract update(index: number): void;\n\n protected _createBulletFromString(html: string, index: number) {\n const range = document.createRange();\n const frag = range.createContextualFragment(html);\n const bullet = frag.firstChild as HTMLElement;\n\n this._addBulletEvents(bullet, index);\n\n return bullet;\n }\n\n protected _addBulletEvents(bullet: HTMLElement, index: number) {\n const anchorPoints = this._flicking.camera.anchorPoints;\n const panelIndex = anchorPoints[index].panel.index;\n\n bullet.addEventListener(BROWSER.MOUSE_DOWN, e => {\n e.stopPropagation();\n });\n\n bullet.addEventListener(BROWSER.TOUCH_START, e => {\n e.stopPropagation();\n }, { passive: true });\n\n bullet.addEventListener(BROWSER.CLICK, () => {\n this._flicking.moveTo(panelIndex)\n .catch(err => {\n if (err instanceof FlickingError) return;\n throw err;\n });\n });\n }\n}\n\nexport default Renderer;\n","import { PAGINATION } from \"../../const\";\nimport { addClass, removeClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass BulletRenderer extends Renderer {\n private _bullets: HTMLElement[] = [];\n private _prevIndex: number = -1;\n\n private get _bulletClass() {\n const pagination = this._pagination;\n return `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n }\n\n private get _activeClass() {\n const pagination = this._pagination;\n return `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;\n }\n\n public destroy() {\n this._bullets = [];\n this._prevIndex = -1;\n }\n\n public render() {\n const flicking = this._flicking;\n const pagination = this._pagination;\n const wrapper = this._wrapper;\n const bulletClass = this._bulletClass;\n const activeClass = this._activeClass;\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n const bulletWrapperClass = `${pagination.classPrefix}-${PAGINATION.BULLET_WRAPPER_SUFFIX}`;\n const anchorPoints = flicking.camera.anchorPoints;\n\n addClass(wrapper, bulletWrapperClass);\n\n wrapper.innerHTML = anchorPoints\n .map((anchorPoint, index) => {\n if (renderActiveBullet && anchorPoint.panel.index === flicking.index) {\n return renderActiveBullet(bulletClass, index);\n } else {\n return renderBullet(bulletClass, index);\n }\n })\n .join(\"\\n\");\n\n const bullets = [].slice.call(wrapper.children) as HTMLElement[];\n\n bullets.forEach((bullet, index) => {\n const anchorPoint = anchorPoints[index];\n\n if (anchorPoint.panel.index === flicking.index) {\n addClass(bullet, activeClass);\n this._prevIndex = index;\n }\n\n this._addBulletEvents(bullet, index);\n });\n\n this._bullets = bullets;\n }\n\n public update(index: number) {\n const flicking = this._flicking;\n const pagination = this._pagination;\n const wrapper = this._wrapper;\n const bullets = this._bullets;\n const bulletClass = this._bulletClass;\n const activeClass = this._activeClass;\n const prevIndex = this._prevIndex;\n const anchorPoints = flicking.camera.anchorPoints;\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n\n if (anchorPoints.length <= 0) return;\n\n const anchorOffset = anchorPoints[0].panel.index;\n const activeBulletIndex = index - anchorOffset;\n\n if (prevIndex === activeBulletIndex) return;\n\n if (renderActiveBullet) {\n const prevBullet = bullets[prevIndex];\n if (prevBullet) {\n const newBullet = this._createBulletFromString(\n renderBullet(bulletClass, prevIndex),\n prevIndex\n );\n prevBullet.parentElement!.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n const activeBullet = bullets[activeBulletIndex];\n const newActiveBullet = this._createBulletFromString(\n renderActiveBullet(`${bulletClass} ${activeClass}`, activeBulletIndex),\n activeBulletIndex\n );\n\n wrapper.replaceChild(newActiveBullet, activeBullet);\n bullets[activeBulletIndex] = newActiveBullet;\n } else {\n const activeBullet = bullets[activeBulletIndex];\n const prevBullet = bullets[prevIndex];\n\n if (prevBullet) {\n removeClass(prevBullet, activeClass);\n }\n\n addClass(activeBullet, activeClass);\n }\n\n this._prevIndex = activeBulletIndex;\n }\n}\n\nexport default BulletRenderer;\n","import { PAGINATION } from \"../../const\";\nimport { addClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass FractionRenderer extends Renderer {\n private _prevIndex: number = -1;\n private _prevTotal: number = -1;\n\n public destroy(): void {\n this._prevIndex = -1;\n this._prevTotal = -1;\n }\n\n public render() {\n const flicking = this._flicking;\n const wrapper = this._wrapper;\n const pagination = this._pagination;\n const fractionWrapperClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_WRAPPER_SUFFIX}`;\n const fractionCurrentClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;\n const fractionTotalClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;\n\n addClass(wrapper, fractionWrapperClass);\n\n wrapper.innerHTML = pagination.renderFraction(fractionCurrentClass, fractionTotalClass);\n\n this.update(flicking.index);\n }\n\n public update(index: number) {\n const flicking = this._flicking;\n const wrapper = this._wrapper;\n const pagination = this._pagination;\n\n const anchorPoints = flicking.camera.anchorPoints;\n const currentIndex = anchorPoints.length > 0\n ? index - anchorPoints[0].panel.index + 1\n : 0;\n const anchorCount = anchorPoints.length;\n\n if (currentIndex === this._prevIndex && anchorCount === this._prevTotal) return;\n\n const fractionCurrentSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;\n const fractionTotalSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;\n\n const currentWrapper = wrapper.querySelector(fractionCurrentSelector) as HTMLElement;\n const totalWrapper = wrapper.querySelector(fractionTotalSelector) as HTMLElement;\n\n currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);\n totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);\n\n this._prevIndex = currentIndex;\n this._prevTotal = anchorCount;\n }\n}\n\nexport default FractionRenderer;\n","import { DIRECTION } from \"@egjs/flicking\";\n\nimport { PAGINATION } from \"../../const\";\nimport { addClass, removeClass } from \"../../utils\";\n\nimport Renderer from \"./Renderer\";\n\nclass ScrollBulletRenderer extends Renderer {\n private _bullets: HTMLElement[] = [];\n private _bulletSize: number = 0;\n private _previousIndex: number = -1;\n private _sliderIndex: number = -1;\n\n public destroy(): void {\n this._bullets = [];\n this._bulletSize = 0;\n this._previousIndex = -1;\n this._sliderIndex = -1;\n }\n\n public render() {\n const wrapper = this._wrapper;\n const flicking = this._flicking;\n const pagination = this._pagination;\n const renderBullet = pagination.renderBullet;\n const anchorPoints = flicking.camera.anchorPoints;\n\n const dynamicWrapperClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_WRAPPER_SUFFIX}`;\n const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n const sliderClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_SLIDER_SUFFIX}`;\n const uninitClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_UNINIT_SUFFIX}`;\n\n const sliderEl = document.createElement(\"div\");\n\n addClass(sliderEl, sliderClass);\n addClass(wrapper, uninitClass);\n addClass(wrapper, dynamicWrapperClass);\n wrapper.appendChild(sliderEl);\n\n sliderEl.innerHTML = anchorPoints\n .map((_, index) => renderBullet(bulletClass, index))\n .join(\"\\n\");\n\n const bullets = [].slice.call(sliderEl.children) as HTMLElement[];\n\n bullets.forEach((bullet, index) => {\n this._addBulletEvents(bullet, index);\n });\n\n if (bullets.length <= 0) return;\n\n const bulletStyle = getComputedStyle(bullets[0]);\n const bulletSize = bullets[0].clientWidth + parseFloat(bulletStyle.marginLeft) + parseFloat(bulletStyle.marginRight);\n\n wrapper.style.width = `${bulletSize * pagination.bulletCount}px`;\n\n this._bullets = bullets;\n this._bulletSize = bulletSize;\n this._previousIndex = -1;\n\n this.update(this._flicking.index);\n\n window.requestAnimationFrame(() => {\n removeClass(wrapper, uninitClass);\n });\n }\n\n public update(index: number) {\n const pagination = this._pagination;\n const flicking = this._flicking;\n const bullets = this._bullets;\n const prevIndex = this._previousIndex;\n\n const renderBullet = pagination.renderBullet;\n const renderActiveBullet = pagination.renderActiveBullet;\n\n const anchorPoints = flicking.camera.anchorPoints;\n const anchorOffset = anchorPoints[0].panel.index;\n const activeIndex = index - anchorOffset;\n\n if (anchorPoints.length <= 0) return;\n\n const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;\n const bulletActiveClass = `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;\n const prevClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_PREV_SUFFIX}`;\n const nextClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_NEXT_SUFFIX}`;\n const bulletPrevClass = (offset: number) => `${prevClassPrefix}${offset > 1 ? offset : \"\"}`;\n const bulletNextClass = (offset: number) => `${nextClassPrefix}${offset > 1 ? offset : \"\"}`;\n\n const prevClassRegex = new RegExp(`^${prevClassPrefix}`);\n const nextClassRegex = new RegExp(`^${nextClassPrefix}`);\n\n if (renderActiveBullet) {\n const prevBullet = bullets[prevIndex];\n if (prevBullet) {\n const newBullet = this._createBulletFromString(\n renderBullet(bulletClass, prevIndex),\n prevIndex\n );\n prevBullet.parentElement!.replaceChild(newBullet, prevBullet);\n bullets[prevIndex] = newBullet;\n }\n\n const activeBullet = bullets[activeIndex];\n if (activeBullet) {\n const newActiveBullet = this._createBulletFromString(\n renderActiveBullet(bulletClass, activeIndex),\n activeIndex\n );\n\n activeBullet.parentElement!.replaceChild(newActiveBullet, activeBullet);\n bullets[activeIndex] = newActiveBullet;\n }\n }\n\n bullets.forEach((bullet, idx) => {\n const indexOffset = idx - activeIndex;\n const classList = bullet.className.split(\" \");\n\n for (const className of classList) {\n if (className === bulletActiveClass || prevClassRegex.test(className) || nextClassRegex.test(className)) {\n removeClass(bullet, className);\n }\n }\n\n if (indexOffset === 0) {\n addClass(bullet, bulletActiveClass);\n } else if (indexOffset > 0) {\n addClass(bullet, bulletNextClass(Math.abs(indexOffset)));\n } else {\n addClass(bullet, bulletPrevClass(Math.abs(indexOffset)));\n }\n });\n\n pagination.scrollOnChange(activeIndex, {\n total: bullets.length,\n prevIndex,\n sliderIndex: this._sliderIndex,\n direction: activeIndex > prevIndex ? DIRECTION.NEXT : DIRECTION.PREV,\n bullets: [...bullets],\n moveTo: this.moveTo\n });\n\n this._previousIndex = activeIndex;\n }\n\n public moveTo = (index: number): void => {\n const pagination = this._pagination;\n const sliderEl = this._wrapper.firstElementChild as HTMLElement;\n const bulletSize = this._bulletSize;\n const wrapperSize = bulletSize * pagination.bulletCount;\n\n sliderEl.style.transform = `translate(${wrapperSize / 2 - (index + 0.5) * bulletSize}px)`;\n this._sliderIndex = index;\n };\n}\n\nexport default ScrollBulletRenderer;\n","import Flicking, { EVENTS, Plugin } from \"@egjs/flicking\";\n\nimport { PAGINATION } from \"../const\";\nimport ScrollContext from \"../type\";\n\nimport Renderer from \"./renderer/Renderer\";\nimport BulletRenderer from \"./renderer/BulletRenderer\";\nimport FractionRenderer from \"./renderer/FractionRenderer\";\nimport ScrollBulletRenderer from \"./renderer/ScrollBulletRenderer\";\n\nexport interface PaginationOptions {\n parentEl: HTMLElement | null;\n selector: string;\n type: \"bullet\" | \"fraction\" | \"scroll\";\n classPrefix: string;\n bulletCount: number;\n renderBullet: (className: string, index: number) => string;\n renderFraction: (currentClass: string, totalClass: string) => string;\n renderActiveBullet: ((className: string, index: number) => string) | null;\n fractionCurrentFormat: (index: number) => string;\n fractionTotalFormat: (total: number) => string;\n scrollOnChange: (index: number, ctx: ScrollContext) => any;\n}\n\n/**\n * @memberof Flicking.Plugins\n */\nclass Pagination implements Plugin {\n /* Internal Values */\n private _flicking: Flicking | null = null;\n private _renderer: Renderer;\n private _wrapper: HTMLElement;\n\n /* Options */\n private _parentEl: PaginationOptions[\"parentEl\"];\n private _selector: PaginationOptions[\"selector\"];\n private _type: PaginationOptions[\"type\"];\n private _classPrefix: PaginationOptions[\"classPrefix\"];\n private _bulletCount: PaginationOptions[\"bulletCount\"];\n private _renderBullet: PaginationOptions[\"renderBullet\"];\n private _renderActiveBullet: PaginationOptions[\"renderActiveBullet\"];\n private _renderFraction: PaginationOptions[\"renderFraction\"];\n private _fractionCurrentFormat: PaginationOptions[\"fractionCurrentFormat\"];\n private _fractionTotalFormat: PaginationOptions[\"fractionTotalFormat\"];\n private _scrollOnChange: PaginationOptions[\"scrollOnChange\"];\n\n public get parentEl() { return this._parentEl; }\n public get selector() { return this._selector; }\n public get type() { return this._type; }\n public get classPrefix() { return this._classPrefix; }\n public get bulletCount() { return this._bulletCount; }\n public get renderBullet() { return this._renderBullet; }\n public get renderActiveBullet() { return this._renderActiveBullet; }\n public get renderFraction() { return this._renderFraction; }\n public get fractionCurrentFormat() { return this._fractionCurrentFormat; }\n public get fractionTotalFormat() { return this._fractionTotalFormat; }\n public get scrollOnChange() { return this._scrollOnChange; }\n\n public set parentEl(val: PaginationOptions[\"parentEl\"]) { this._parentEl = val; }\n public set selector(val: PaginationOptions[\"selector\"]) { this._selector = val; }\n public set type(val: PaginationOptions[\"type\"]) { this._type = val; }\n public set bulletWrapperclassPrefixClass(val: PaginationOptions[\"classPrefix\"]) { this._classPrefix = val; }\n public set bulletCount(val: PaginationOptions[\"bulletCount\"]) { this._bulletCount = val; }\n public set renderBullet(val: PaginationOptions[\"renderBullet\"]) { this._renderBullet = val; }\n public set renderActiveBullet(val: PaginationOptions[\"renderActiveBullet\"]) { this._renderActiveBullet = val; }\n public set renderFraction(val: PaginationOptions[\"renderFraction\"]) { this._renderFraction = val; }\n public set fractionCurrentFormat(val: PaginationOptions[\"fractionCurrentFormat\"]) { this._fractionCurrentFormat = val; }\n public set fractionTotalFormat(val: PaginationOptions[\"fractionTotalFormat\"]) { this._fractionTotalFormat = val; }\n public set scrollOnChange(val: PaginationOptions[\"scrollOnChange\"]) { this._scrollOnChange = val; }\n\n public constructor({\n parentEl = null,\n selector = PAGINATION.SELECTOR,\n type = PAGINATION.TYPE.BULLET,\n classPrefix = PAGINATION.PREFIX,\n bulletCount = 5,\n renderBullet = (className: string) => `<span class=\"${className}\"></span>`,\n renderActiveBullet = null,\n renderFraction = (currentClass: string, totalClass: string) => `<span class=\"${currentClass}\"></span>/<span class=\"${totalClass}\"></span>`,\n fractionCurrentFormat = (index: number) => index.toString(),\n fractionTotalFormat = (index: number) => index.toString(),\n scrollOnChange = (index: number, ctx: ScrollContext) => ctx.moveTo(index)\n }: Partial<PaginationOptions> = {}) {\n this._parentEl = parentEl;\n this._selector = selector;\n this._type = type;\n this._classPrefix = classPrefix;\n this._bulletCount = bulletCount;\n this._renderBullet = renderBullet;\n this._renderActiveBullet = renderActiveBullet;\n this._renderFraction = renderFraction;\n this._fractionCurrentFormat = fractionCurrentFormat;\n this._fractionTotalFormat = fractionTotalFormat;\n this._scrollOnChange = scrollOnChange;\n }\n\n public init(flicking: Flicking): void {\n if (this._flicking) {\n this.destroy();\n }\n\n this._flicking = flicking;\n\n const type = this._type;\n const selector = this._selector;\n const parentEl = this._parentEl ? this._parentEl : flicking.element;\n const wrapper = parentEl.querySelector(selector);\n\n if (!wrapper) {\n throw new Error(`[Flicking-Pagination] Couldn't find element with the given selector: ${selector}`);\n }\n\n this._wrapper = wrapper as HTMLElement;\n this._renderer = this._createRenderer(type);\n\n flicking.on(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.on(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.on(EVENTS.PANEL_CHANGE, this.update);\n\n this.update();\n }\n\n public destroy(): void {\n const flicking = this._flicking;\n\n if (!flicking) {\n return;\n }\n\n flicking.off(EVENTS.WILL_CHANGE, this._onIndexChange);\n flicking.off(EVENTS.WILL_RESTORE, this._onIndexChange);\n flicking.off(EVENTS.PANEL_CHANGE, this.update);\n\n this._renderer.destroy();\n this._removeAllChilds();\n this._flicking = null;\n }\n\n public update = (): void => {\n this._removeAllChilds();\n this._renderer.render();\n };\n\n private _createRenderer(type: PaginationOptions[\"type\"]) {\n const options = {\n flicking: this._flicking!,\n pagination: this,\n wrapper: this._wrapper\n };\n\n switch (type) {\n case PAGINATION.TYPE.BULLET:\n return new BulletRenderer(options);\n case PAGINATION.TYPE.FRACTION:\n return new FractionRenderer(options);\n case PAGINATION.TYPE.SCROLL:\n return new ScrollBulletRenderer(options);\n default:\n throw new Error(`[Flicking-Pagination] type \"${type}\" is not supported.`);\n }\n }\n\n private _onIndexChange = (evt: { index: number }) => {\n this._renderer.update(evt.index);\n };\n\n private _removeAllChilds() {\n const wrapper = this._wrapper;\n\n while (wrapper.firstChild) {\n wrapper.removeChild(wrapper.firstChild);\n }\n }\n}\n\nexport default Pagination;\n","/**\n * @namespace Flicking\n */\n/**\n * @namespace Flicking.Plugins\n */\nimport Parallax from \"./Parallax\";\nimport Fade from \"./Fade\";\nimport AutoPlay from \"./AutoPlay\";\nimport Arrow from \"./Arrow\";\nimport Sync, { SyncOptions, SychronizableFlickingOptions } from \"./Sync\";\nimport Perspective from \"./Perspective\";\n\nexport * from \"./pagination\";\n\nexport {\n Parallax,\n Fade,\n AutoPlay,\n Arrow,\n Sync,\n Perspective\n};\n\nexport type {\n SyncOptions,\n SychronizableFlickingOptions\n};\n\nexport * from \"./const\";\n"],"names":["selector","scale","_this","_onMove","flicking","_flicking","panels","visiblePanels","forEach","panel","progress","outsetProgress","el","element","target","_selector","querySelector","parentTarget","parentNode","rect","getBoundingClientRect","parentRect","position","width","_scale","transform","style","cssText","Object","val","destroy","on","EVENTS","MOVE","AFTER_RESIZE","update","off","opacity","Math","min","max","abs","_a","_b","_c","duration","_d","animationDuration","undefined","_e","direction","DIRECTION","NEXT","_f","stopOnHover","delayAfterHover","_movePanel","_duration","_playing","clearTimeout","_timerId","_mouseEntered","stop","_delayAfterHover","_animationDuration","_direction","_stopOnHover","MOVE_START","HOLD_START","MOVE_END","play","SELECT","targetEl","addEventListener","_onMouseEnter","_onMouseLeave","removeEventListener","animating","window","setTimeout","moveType","MOVE_TYPE","FREE_SCROLL","range","camera","cameraPosition","currentPanel","prevPanel","prev","nextPanel","next","currentPosition","nextPosition","prevPosition","size","restSize","catch","BROWSER","CLICK","MOUSE_DOWN","TOUCH_START","ARROW","PREV_SELECTOR","NEXT_SELECTOR","DISABLED_CLASS","PAGINATION","SELECTOR","PREFIX","BULLET_WRAPPER_SUFFIX","BULLET_SUFFIX","BULLET_ACTIVE_SUFFIX","FRACTION_WRAPPER_SUFFIX","FRACTION_CURRENT_SUFFIX","FRACTION_TOTAL_SUFFIX","SCROLL_UNINIT_SUFFIX","SCROLL_WRAPPER_SUFFIX","SCROLL_SLIDER_SUFFIX","SCROLL_PREV_SUFFIX","SCROLL_NEXT_SUFFIX","TYPE","BULLET","FRACTION","SCROLL","SYNC","CAMERA","INDEX","addClass","className","classList","add","classes","split","indexOf","removeClass","remove","classRegex","RegExp","replace","getElement","parent","pluginName","Error","parentEl","prevElSelector","nextElSelector","disabledClass","_g","moveCount","_h","moveByViewportSize","_j","interruptable","e","stopPropagation","index","_nextIndex","anchorPoints","length","stopAnimation","firstAnchor","_moveCount","_moveByViewportSize","control","moveToPosition","_onCatch","circularEnabled","targetPanel","i","focus","moveTo","lastAnchor","controller","holding","_updateClass","animatingContext","end","err","FlickingError","_parentEl","_prevElSelector","_nextElSelector","_disabledClass","_interruptable","_prevEl","_nextEl","_onAnimation","WILL_CHANGE","_onWillChange","prevEl","nextEl","evt","_preventInputPropagation","passive","_onPrevClick","_onNextClick","pos","cameraRange","stopAtPrevEdge","stopAtNextEdge","type","synchronizedFlickingOptions","_type","synced","_synchronizedFlickingOptions","isSlidable","isClickable","_onMoveStart","_onMoveEnd","_onIndexChange","WILL_RESTORE","_onSelect","currentTarget","initialized","_synchronizeByIndex","rangeDiff","targetPosition","lookAt","disableInput","enableInput","updateInput","activeFlicking","_preventEvent","options","targetIndex","clamp","once","activeClass","_addEvents","syncedFlicking","defaultIndex","_removeEvents","fn","rotate","perspective","_rotate","_perspective","horizontal","panelScale","rotateDegree","rotateX","rotateY","pagination","wrapper","_pagination","_wrapper","html","document","createRange","frag","createContextualFragment","bullet","firstChild","_addBulletEvents","panelIndex","__extends","classPrefix","_bullets","_prevIndex","bulletClass","_bulletClass","_activeClass","renderBullet","renderActiveBullet","bulletWrapperClass","innerHTML","map","anchorPoint","join","bullets","slice","call","children","prevIndex","anchorOffset","activeBulletIndex","prevBullet","newBullet","_createBulletFromString","parentElement","replaceChild","activeBullet","newActiveBullet","Renderer","_prevTotal","fractionWrapperClass","fractionCurrentClass","fractionTotalClass","renderFraction","currentIndex","anchorCount","fractionCurrentSelector","fractionTotalSelector","currentWrapper","totalWrapper","fractionCurrentFormat","fractionTotalFormat","sliderEl","firstElementChild","bulletSize","_bulletSize","wrapperSize","bulletCount","_sliderIndex","_previousIndex","dynamicWrapperClass","sliderClass","uninitClass","createElement","appendChild","_","bulletStyle","getComputedStyle","clientWidth","parseFloat","marginLeft","marginRight","requestAnimationFrame","activeIndex","bulletActiveClass","prevClassPrefix","nextClassPrefix","bulletPrevClass","offset","bulletNextClass","prevClassRegex","nextClassRegex","idx","indexOffset","classList_1","_i","test","scrollOnChange","total","sliderIndex","PREV","_k","currentClass","totalClass","_l","toString","_m","_o","ctx","_removeAllChilds","_renderer","render","_classPrefix","_bulletCount","_renderBullet","_renderActiveBullet","_renderFraction","_fractionCurrentFormat","_fractionTotalFormat","_scrollOnChange","_createRenderer","PANEL_CHANGE","BulletRenderer","FractionRenderer","ScrollBulletRenderer","removeChild"],"mappings":"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"}