\n * \t\t
\n * \t\t
\n * \t\t
\n * \t
\n *
\n * ```\n * @example\n * An example where only one panel is defined and created with a circular.\n * 패널을 하나만 정의하고 순환으로 생성하는 예.\n * ```html\n *
\n * ```\n * ```javascript\n * // If the number of defined panels is less than the minimum number required for the circulation operation, the necessary number of panel elements are generated.\n * // 정의된 패널의 수가 순환동작에 필요한 최소 개수보다 적으면 필요한 수만큼의 패널 요소가 생성된다.\n * new eg.Flicking(\"#flick\", {\n * \tcircular: true\n * })\n * ```\n * @example\n * For error occurrence example. There is no panel element.\n * 오류 발생 예. 패널 요소가 하나도 없는 경우.\n * ```html\n *
\n * ```\n * ```javascript\n * try{\n * \tnew eg.Flicking(\"#flick\");\n * } catch(e) {\n * \t// An error occurs because there are no child elements in the reference element.\n *\t// 기준 요소안에 자식 요소가 하나도 없으므로 에러가 발생한다.\n * }\n * ```\n */\nexport default class Flicking extends Mixin(Component).with(eventHandler) {\n\t/**\n\t * Constructor\n\t * @param {HTMLElement|String} element A base element for the eg.Flicking module. When specifying a value as a `String` type, you must specify a css selector string to select the element.
eg.Flicking 모듈을 사용할 기준 요소. `String`타입으로 값 지정시 요소를 선택하기 위한 css 선택자 문자열을 지정해야 한다.\n\t * @param {Object} [options] The option object of the eg.Flicking module
eg.Flicking 모듈의 옵션 객체\n\t * @param {Boolean} [options.hwAccelerable=true] Force hardware compositing.
하드웨어 가속 사용 여부.\n\t * @param {String} [options.prefix=\"eg-flick\"] A prefix for class names of the panel elements.
패널 요소의 클래스 이름 접두사.\n\t * @param {Number} [options.deceleration=0.0006] Deceleration of the animation where acceleration is manually enabled by user. A higher value indicates shorter running time.
사용자의 동작으로 가속도가 적용된 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아진다.\n\t * @param {Boolean} [options.horizontal=true] Direction of the panel movement. (true: horizontal, false: vertical)
패널 이동 방향. (true 가로방향, false 세로방향)\n\t * @param {Boolean} [options.circular=false] Whether to let the first panel flick right to the end panel (let the left panel flick from the end panel to move to the first panel). (The term 'circulation')
첫 패널에서 우 액션 입력하여 끝 패널로 이동하게 할지와 끝 패널에서 우 액션 입력하여 첫 패널로 이동할하게 할지 여부. (통칭 '순환')\n\t * @param {Number|String|Array} [options.previewPadding=[0,0]] The preview size value(if no unit is given, defaults to `px`) for the previous or next panel.
- If the direction is set to \"horizontal\", the preview section will be displayed on the left and right of the panel.
- If the direction is set to \"vertical\", it will be displayed on the top and bottom of the panel.
이전 패널과 다음 패널을 미리 보는 영역의 크기 값(단위가 지정되지 않는 경우, `px`로 지정).
패널 이동 방향이 가로 방향이면 패널 좌우에, 세로 방향이면 패널 상하에 미리 보는 영역이 나타난다.\n\t * @param {Number|Array} [options.bounce=[10,10]] The size value(unit: pixel) of the bounce area. If `circular=false`, the panel can be moved by this value when inputting a right gesture in the first panel or inputting a left gesture in the end panel. When the input is completed while moving, it returns to its original position.
바운스 영역의 크기값(단위: 픽셀). `circular=false`인 경우, 첫 패널에서 우 액션 입력시, 끝 패널에서 좌 액션 입력시 이 값 만큼만 패널이 이동할 수 있고 이동한 상태에서 입력을 마치면 원래 자리로 돌아온다.\n\t * @param {Number} [options.threshold=40] Movement threshold to destination panel(unit: pixel). A panel element must be dragged beyond the threshold to move to the destination panel.
목적 패널로의 이동 임계값 (단위: 픽셀). 패널 요소를 임계값 이상으로 끌어다 놓아야만이 목적 패널로 이동한다.\n\t * @param {Number} [options.duration=100] Duration of the panel movement. (unit: ms)
패널 이동 애니메이션 진행 시간.(단위: ms)\n\t * @param {Function} [options.panelEffect=x => 1 - Math.pow(1 - x, 3)] The easing function to apply to a panel moving animation. The default function is easeOutCubic.
패널 이동 애니메이션에 적용할 `easing`함수. 기본값은 `easeOutCubic`이다.\n\t * @param {Number} [options.defaultIndex=0] The panel index number to specify when initializing the module. A zero-based integer.
모듈 초기화시 지정할 패널 인덱스 번호. 0부터 시작하는 정수.\n\t * @param {Array} [options.inputType=[\"touch,\"mouse\"]] Types of input devices. ({@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.PanInput.html|eg.Axes.PanInput Reference})
- \"touch\": A touch input device.
- \"mouse\": A mouse.
입력 장치 종류. ({@link https://naver.github.io/egjs-axes/release/latest/doc/eg.Axes.PanInput.html|eg.Axes.PanInput 참고})
- \"touch\": 터치 입력 장치.
- \"mouse\": 마우스.\n\t * @param {Number} [options.thresholdAngle=45] The threshold value that determines whether user input is horizontal or vertical. (0 ~ 90)
사용자의 입력이 가로 방향인지 세로 방향인지 판단하는 기준 각도 (0 ~ 90)\n\t * @param {Boolean} [options.adaptiveHeight=false] Whether the height of the container element reflects the height value of the panel after completing the movement.
(Note: on Android 4.1.x stock browser, has rendering bug which not correctly render height value on panel with single node. To avoid just append another empty node at the end.)
목적 패널로 이동한 후 그 패널의 높이값을 컨테이너 요소의 높이값에 반영할지 여부.
(참고: Android 4.1.x 스톡 브라우저에서 단일 노드로 구성된 패널의 높이값 변경이 제대로 렌더링 되지 않는 버그가 있음. 비어있는 노드를 추가하면 해결이 가능하다.)\n\t * @param {Number} [options.zIndex=2000] z-index value for container element
컨테이너 요소의 z-index 값\n\t * @param {Boolean} [options.useTranslate=true] Use css translate method on panel moves. When set to 'false', it'll use top/left instead.
패널 이동시 CSS translate 사용 여부. 'false'로 설정 시, top/left 속성을 사용\n\t*/\n\tconstructor(element, options, _prefix) {\n\t\tsuper();\n\n\t\tthis.$wrapper = utils.$(element);\n\t\tthis.plugins = [];\n\n\t\tconst $children = this.$wrapper && this.$wrapper.children;\n\n\t\tif (!this.$wrapper || !$children || !$children.length) {\n\t\t\t// eslint-disable validateLineBreaks, maximumLineLength\n\t\t\tthrow new Error(\"Given base element doesn't exist or it hasn't proper DOM structure to be initialized.\");\n\n\t\t\t// eslint-enable validateLineBreaks, maximumLineLength\n\t\t}\n\n\t\tthis._setOptions(options);\n\t\tthis._setConfig($children, _prefix);\n\n\t\t!utils.hasClickBug() && (this._setPointerEvents = () => {});\n\n\t\tthis._build();\n\t\tthis._bindEvents(true);\n\n\t\tthis._applyPanelsCss();\n\t\tthis._arrangePanels();\n\n\t\tthis.options.hwAccelerable && SUPPORT_WILLCHANGE && this._setHint();\n\t\tthis.options.adaptiveHeight && this._setAdaptiveHeight();\n\n\t\tthis._adjustContainerCss(\"end\");\n\t}\n\n\t/**\n\t * Set options values\n\t * @private\n\t * @param {Object} options\n\t */\n\t_setOptions(options) {\n\t\t// default value of previewPadding and bounce\n\t\tconst arrVal = {\n\t\t\tpreviewPadding: [0, 0],\n\t\t\tbounce: [10, 10]\n\t\t};\n\n\t\tthis.options = utils.extend(utils.extend({}, OPTIONS), arrVal, options);\n\n\t\tfor (const key in arrVal) {\n\t\t\tlet val = this.options[key];\n\n\t\t\tif (/(number|string)/.test(typeof val)) {\n\t\t\t\tval = [val, val];\n\t\t\t} else if (!utils.isArray(val)) {\n\t\t\t\tval = arrVal[key];\n\t\t\t}\n\n\t\t\tthis.options[key] = val;\n\t\t}\n\n\t\t// block use of translate for Android2 environment\n\t\tif (IS_ANDROID2) {\n\t\t\tthis.options.useTranslate = false;\n\t\t}\n\t}\n\n\t/**\n\t * Set config values\n\t * @private\n\t * @param {HTMLCollection} $children wrappers' children elements\n\t * @param {String} _prefix event prefix\n\t * @return {HTMLElement}\n\t */\n\t_setConfig($children, _prefix) {\n\t\tconst options = this.options;\n\t\tconst padding = options.previewPadding;\n\t\tlet $nodes = $children;\n\n\t\tif (utils.classList($nodes[0], `${options.prefix}-container`)) {\n\t\t\t$nodes = $nodes[0];\n\t\t\tthis.$container = $nodes;\n\t\t\t$nodes = $nodes.children;\n\t\t}\n\n\t\t// convert to array\n\t\t$nodes = utils.toArray($nodes);\n\n\t\t// config value\n\t\tconst conf = this._conf = utils.extend(utils.extend({}, CONFIG), {\n\t\t\tpanel: {\n\t\t\t\t$list: $nodes,\n\t\t\t\tminCount: padding[0] + padding[1] > 0 ? 5 : 3 // minimum panel count\n\t\t\t},\n\t\t\t// remember original class and inline style in case of restoration on destroy()\n\t\t\torigPanelStyle: {\n\t\t\t\twrapper: {\n\t\t\t\t\tclassName: this.$wrapper.getAttribute(\"class\") || null,\n\t\t\t\t\tstyle: this.$wrapper.getAttribute(\"style\") || null\n\t\t\t\t},\n\t\t\t\tcontainer: {\n\t\t\t\t\tclassName: (this.$container && this.$container.getAttribute(\"class\")) || null,\n\t\t\t\t\tstyle: (this.$container && this.$container.getAttribute(\"style\")) || null\n\t\t\t\t},\n\t\t\t\tlist: $nodes.map(v => ({\n\t\t\t\t\tclassName: v.getAttribute(\"class\") || null,\n\t\t\t\t\tstyle: v.getAttribute(\"style\") || null\n\t\t\t\t}))\n\t\t\t},\n\t\t\tuseLayerHack: options.hwAccelerable && !SUPPORT_WILLCHANGE,\n\t\t\teventPrefix: _prefix || \"\"\n\t\t});\n\n\t\t[[\"LEFT\", \"RIGHT\"], [\"UP\", \"DOWN\"]][+!options.horizontal]\n\t\t\t.forEach(v => conf.dirData.push(Axes[`DIRECTION_${v}`]));\n\t}\n\n\t/**\n\t * Build and set panel nodes to make flicking structure\n\t * @private\n\t */\n\t_build() {\n\t\tconst panel = this._conf.panel;\n\t\tconst options = this.options;\n\t\tconst $children = panel.$list;\n\t\tconst padding = options.previewPadding.concat();\n\t\tconst prefix = options.prefix;\n\t\tconst horizontal = options.horizontal;\n\t\tlet panelCount = panel.count = panel.origCount = $children.length;\n\t\tconst bounce = options.bounce;\n\n\t\tthis._setPadding(padding, true);\n\n\t\t// container element style\n\t\tconst cssValue = {\n\t\t\tposition: \"relative\",\n\t\t\tzIndex: options.zIndex || 2000,\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\"\n\t\t};\n\n\t\thorizontal && (cssValue.top = \"0px\");\n\n\t\tif (this.$container) {\n\t\t\tutils.css(this.$container, cssValue);\n\t\t} else {\n\t\t\tconst $parent = $children[0].parentNode;\n\t\t\tconst $container = document.createElement(\"div\");\n\n\t\t\t$container.className = `${prefix}-container`;\n\t\t\tutils.css($container, cssValue);\n\n\t\t\t$children.forEach(v => $container.appendChild(v));\n\n\t\t\t$parent.appendChild($container);\n\t\t\tthis.$container = $container;\n\t\t}\n\n\t\t// panels' css values\n\t\tthis._initOriginalPanelStyle($children);\n\n\t\tif (this._addClonePanels()) {\n\t\t\tpanelCount = panel.count = (\n\t\t\t\tpanel.$list = utils.toArray(this.$container.children)\n\t\t\t).length;\n\t\t}\n\n\t\t// create Axes instance\n\t\tthis._axesInst = new Axes({\n\t\t\tflick: {\n\t\t\t\trange: [0, panel.size * (panelCount - 1)],\n\t\t\t\tbounce\n\t\t\t}\n\t\t}, {\n\t\t\teasing: options.panelEffect,\n\t\t\tdeceleration: options.deceleration,\n\t\t\tinterruptable: false\n\t\t});\n\n\t\tthis._setDefaultPanel(options.defaultIndex);\n\t}\n\n\t_initOriginalPanelStyle(panels) {\n\t\tconst panel = this._conf.panel;\n\t\tconst sizeValue = this._getDataByDirection([panel.size, \"100%\"]);\n\n\t\tpanels.forEach(v => {\n\t\t\tutils.classList(v, `${this.options.prefix}-panel`, true);\n\n\t\t\tutils.css(v, {\n\t\t\t\tposition: \"absolute\",\n\t\t\t\twidth: utils.getUnitValue(sizeValue[0]),\n\t\t\t\theight: utils.getUnitValue(sizeValue[1]),\n\t\t\t\tboxSizing: \"border-box\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Set preview padding value\n\t * @private\n\t * @param {Array} padding\n\t * @param {Boolean} build\n\t */\n\t_setPadding(padding, build) {\n\t\tconst $wrapper = this.$wrapper;\n\t\tconst horizontal = this.options.horizontal;\n\t\tconst panel = this._conf.panel;\n\t\tconst paddingSum = padding.reduce((a, c) => parseFloat(a) + parseFloat(c));\n\t\tconst cssValue = {};\n\n\t\tif (paddingSum || !build) {\n\t\t\thorizontal && padding.reverse();\n\n\t\t\tcssValue.padding = `${horizontal ? \"0 \" : \"\"}${\n\t\t\t\t// add 'px' unit if not present\n\t\t\t\tpadding.map(v => (isNaN(v) ? v : `${v}px`))\n\t\t\t\t\t.join(\" 0 \")\n\t\t\t}`;\n\t\t}\n\n\t\tif (build) {\n\t\t\tcssValue.overflow = \"hidden\";\n\t\t\tcssValue.boxSizing = \"border-box\";\n\t\t}\n\n\t\tObject.keys(cssValue).length && utils.css($wrapper, cssValue);\n\n\t\tconst paddingType = horizontal ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"];\n\t\tconst wrapperSize = Math.max(\n\t\t\t$wrapper[`offset${horizontal ? \"Width\" : \"Height\"}`],\n\t\t\tutils.css($wrapper, horizontal ? \"width\" : \"height\", true)\n\t\t);\n\n\t\tpanel.size = wrapperSize - (\n\t\t\tutils.css($wrapper, `padding${paddingType[0]}`, true) +\n\t\t\tutils.css($wrapper, `padding${paddingType[1]}`, true)\n\t\t);\n\t}\n\n\t_clonePanel(v) {\n\t\tconst clone = v.cloneNode(true);\n\n\t\tutils.classList(clone, `${this.options.prefix}-clone`, true);\n\t\treturn clone;\n\t}\n\n\t/**\n\t * To fulfill minimum panel count cloning original node when circular or previewPadding option are set\n\t * @private\n\t * @return {Boolean} true : added clone node, false : not added\n\t */\n\t_addClonePanels() {\n\t\tconst panel = this._conf.panel;\n\t\tconst panelCount = panel.origCount;\n\t\tconst cloneCount = panel.minCount - panelCount;\n\t\tconst list = panel.$list;\n\t\tlet cloneNodes;\n\n\t\t// if panels are given less than required when circular option is set, then clone node to apply circular mode\n\t\tif (this.options.circular && panelCount < panel.minCount) {\n\t\t\tcloneNodes = list.map(v => this._clonePanel(v));\n\n\t\t\twhile (cloneNodes.length < cloneCount) {\n\t\t\t\tcloneNodes = cloneNodes.concat(\n\t\t\t\t\tlist.map(v => this._clonePanel(v))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcloneNodes.forEach(v => this.$container.appendChild(v));\n\n\t\t\treturn !!cloneNodes.length;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Move panel's position within array\n\t * @private\n\t * @param {Number} count element counts to move\n\t * @param {Boolean} append where the list to be appended(moved) (true: to the end, false: to the beginning)\n\t */\n\t_movePanelPosition(count, append) {\n\t\tconst panel = this._conf.panel;\n\t\tconst list = panel.$list;\n\t\tconst listToMove = list.splice(append ? 0 : panel.count - count, count);\n\n\t\tpanel.$list = append ?\n\t\t\tlist.concat(listToMove) :\n\t\t\tlistToMove.concat(list);\n\t}\n\n\t/**\n\t * Set default panel to show\n\t * @private\n\t * @param {Number} index\n\t */\n\t_setDefaultPanel(index) {\n\t\tconst panel = this._conf.panel;\n\t\tconst lastIndex = panel.count - 1;\n\t\tlet coords;\n\t\tlet baseIndex;\n\n\t\tif (this.options.circular) {\n\t\t\t// if default index is given, then move correspond panel to the first position\n\t\t\tif (index > 0 && index <= lastIndex) {\n\t\t\t\tthis._movePanelPosition(index, true);\n\t\t\t}\n\n\t\t\t// set first panel's position according physical node length\n\t\t\tbaseIndex = this._getBasePositionIndex();\n\t\t\tthis._movePanelPosition(baseIndex, false);\n\n\t\t\tthis._setPanelNo({\n\t\t\t\tno: index,\n\t\t\t\tcurrNo: index\n\t\t\t});\n\t\t\t// if defaultIndex option is given, then move to that index panel\n\t\t} else if (index > 0 && index <= lastIndex) {\n\t\t\tthis._setPanelNo({\n\t\t\t\tindex,\n\t\t\t\tno: index,\n\t\t\t\tcurrIndex: index,\n\t\t\t\tcurrNo: index\n\t\t\t});\n\n\t\t\tcoords = [-(panel.size * index), 0];\n\n\t\t\tthis._setTranslate(coords);\n\t\t\tthis._setAxes(\"setTo\", Math.abs(coords[0]), 0);\n\t\t}\n\t}\n\n\t/**\n\t * Arrange panels' position\n\t * @private\n\t * @param {Boolean} sort Need to sort panel's position\n\t * @param {Number} indexToMove Number to move from current position (negative: left, positive: right)\n\t */\n\t_arrangePanels(sort, indexToMove) {\n\t\tconst conf = this._conf;\n\t\tconst panel = conf.panel;\n\t\tconst touch = conf.touch;\n\t\tconst dirData = conf.dirData;\n\t\tlet baseIndex;\n\n\t\tif (this.options.circular) {\n\t\t\t// when arranging panels, set flag to not trigger flick custom event\n\t\t\tconf.customEvent.flick = false;\n\n\t\t\t// move elements according direction\n\t\t\tif (sort) {\n\t\t\t\tindexToMove && (touch.direction = dirData[+!(indexToMove > 0)]);\n\t\t\t\tthis._arrangePanelPosition(touch.direction, indexToMove);\n\t\t\t}\n\n\t\t\t// set index for base element's position\n\t\t\tbaseIndex = this._getBasePositionIndex();\n\n\t\t\tthis._setPanelNo({\n\t\t\t\tindex: baseIndex,\n\t\t\t\tcurrIndex: baseIndex\n\t\t\t});\n\n\t\t\t// arrange Axes' coord position\n\t\t\tconf.customEvent.flick = !!this._setAxes(\"setTo\", panel.size * panel.index, 0);\n\t\t}\n\n\t\tthis._applyPanelsPos();\n\t}\n\n\t/**\n\t * Set each panel's position in DOM\n\t * @private\n\t */\n\t_applyPanelsPos() {\n\t\tthis._conf.panel.$list.forEach(this._applyPanelsCss.bind(this));\n\t}\n\n\t/**\n\t * Set CSS style values to move elements\n\t *\n\t * Initialize setting up checking if browser support transform css property.\n\t * If browser doesn't support transform, then use left/top properties instead.\n\t * @private\n\t * @param {HTMLElement} $el\n\t * @param {Array} coordsValue\n\t */\n\t_setMoveStyle($el, coordsValue) {\n\t\tconst transform = TRANSFORM;\n\t\tconst useLayerHack = this._conf.useLayerHack;\n\n\t\tthis._setMoveStyle = transform.support ?\n\t\t\t($element, coords) => {\n\t\t\t\tutils.css($element, {\n\t\t\t\t\t[transform.name]: utils.translate(coords[0], coords[1], useLayerHack)\n\t\t\t\t});\n\t\t\t} : ($element, coords) => {\n\t\t\t\tutils.css($element, {left: coords[0], top: coords[1]});\n\t\t\t};\n\n\t\tthis._setMoveStyle($el, coordsValue);\n\t}\n\n\t/**\n\t * Callback function for applying CSS values to each panels\n\t * Need to be initialized before use, to set up for Android 2.x browsers or others.\n\t * @private\n\t */\n\t_applyPanelsCss() {\n\t\tconst conf = this._conf;\n\t\tconst dummyAnchorClassName = \"__dummy_anchor\";\n\t\tconst useTranslate = this.options.useTranslate;\n\n\t\tif (!useTranslate) {\n\t\t\tif (IS_ANDROID2) {\n\t\t\t\tconf.$dummyAnchor = utils.$(`.${dummyAnchorClassName}`);\n\n\t\t\t\t!conf.$dummyAnchor && this.$wrapper.appendChild(\n\t\t\t\t\tconf.$dummyAnchor = utils.$(`
`)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis._applyPanelsCss = function(v, i) {\n\t\t\t\tconst coords = this._getDataByDirection(\n\t\t\t\t\t[`${this._conf.panel.size * i}px`, 0]\n\t\t\t\t);\n\n\t\t\t\tutils.css(v, {\n\t\t\t\t\tleft: coords[0],\n\t\t\t\t\ttop: coords[1]\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis._applyPanelsCss = function(v, i) {\n\t\t\t\tconst coords = this._getDataByDirection([\n\t\t\t\t\tTRANSFORM.support ?\n\t\t\t\t\t\t`${100 * i}%` :\n\t\t\t\t\t\t`${this._conf.panel.size * i}px`, 0\n\t\t\t\t]);\n\n\t\t\t\tthis._setMoveStyle(v, coords);\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Adjust container's css value to handle Android 2.x link highlighting bug\n\t * @private\n\t * @param {String} phase\n\t * start - set left/top value to 0\n\t * end - set translate value to 0\n\t * @param {Array} toValue coordinate value\n\t */\n\t_adjustContainerCss(phase, toValue) {\n\t\tconst conf = this._conf;\n\t\tconst panel = conf.panel;\n\t\tconst options = this.options;\n\t\tconst useTranslate = options.useTranslate;\n\t\tconst horizontal = options.horizontal;\n\t\tconst paddingTop = options.previewPadding[0];\n\t\tlet container = this.$container;\n\t\tlet to = toValue;\n\t\tlet value;\n\n\t\tif (!useTranslate) {\n\t\t\tif (!to) {\n\t\t\t\tto = -panel.size * panel.index;\n\t\t\t}\n\n\t\t\tif (phase === \"start\") {\n\t\t\t\tcontainer = container.style;\n\t\t\t\tvalue = parseFloat(container[horizontal ? \"left\" : \"top\"]);\n\n\t\t\t\tif (horizontal) {\n\t\t\t\t\tvalue && (container.left = \"0px\");\n\t\t\t\t} else {\n\t\t\t\t\tvalue !== paddingTop && (container.top = \"0px\");\n\t\t\t\t}\n\n\t\t\t\tthis._setTranslate([-to, 0]);\n\t\t\t} else if (phase === \"end\") {\n\t\t\t\tto = this._getCoordsValue([to, 0]);\n\n\t\t\t\tutils.css(container, {\n\t\t\t\t\tleft: to.x,\n\t\t\t\t\ttop: to.y,\n\t\t\t\t\t[TRANSFORM.name]: utils.translate(0, 0, conf.useLayerHack)\n\t\t\t\t});\n\n\t\t\t\tconf.$dummyAnchor && conf.$dummyAnchor.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Set Axes coord value\n\t * @private\n\t * @param {String} method\n\t * @param {Number} flick destination value\n\t * @param {Number} duration\n\t * @return {eg.Axes} Axes instance\n\t */\n\t_setAxes(method, flick, duration) {\n\t\treturn this._axesInst[method]({flick}, duration);\n\t}\n\n\t/**\n\t * Set hint for browser to decide efficient way of doing transform changes(or animation)\n\t * https://dev.opera.com/articles/css-will-change-property/\n\t * @private\n\t */\n\t_setHint() {\n\t\tconst style = {willChange: \"transform\"};\n\n\t\tutils.css(this.$container, style);\n\t\tutils.css(this._conf.panel.$list, style);\n\t}\n\n\t/**\n\t * Get data according options.horizontal value\n\t * @private\n\t * @param {Array} value primary data to handle\n\t * @return {Array}\n\t */\n\t_getDataByDirection(value) {\n\t\tconst data = value.concat();\n\n\t\t!this.options.horizontal && data.reverse();\n\t\treturn data;\n\t}\n\n\t/**\n\t * Move nodes\n\t * @private\n\t * @param {Boolean} direction\n\t * @param {Number} indexToMove\n\t */\n\t_arrangePanelPosition(direction, indexToMove) {\n\t\tconst next = direction === this._conf.dirData[0];\n\n\t\tthis._movePanelPosition(Math.abs(indexToMove || 1), next);\n\t}\n\n\t/**\n\t * Get the base position index of the panel\n\t * @private\n\t */\n\t_getBasePositionIndex() {\n\t\treturn Math.floor(this._conf.panel.count / 2 - 0.1);\n\t}\n\n\t/**\n\t * Bind events\n\t * @private\n\t * @param {Boolean} bind\n\t */\n\t_bindEvents(bind) {\n\t\tconst options = this.options;\n\t\tconst $wrapper = this.$wrapper;\n\t\tconst axesInst = this._axesInst;\n\n\t\tif (bind) {\n\t\t\tthis._panInput = new PanInput($wrapper, {\n\t\t\t\tinputType: options.inputType,\n\t\t\t\tthresholdAngle: options.thresholdAngle,\n\t\t\t\tscale: this._getDataByDirection([-1, 0])\n\t\t\t});\n\n\t\t\taxesInst.on({\n\t\t\t\thold: this._holdHandler.bind(this),\n\t\t\t\tchange: this._changeHandler.bind(this),\n\t\t\t\trelease: this._releaseHandler.bind(this),\n\t\t\t\tanimationStart: this._animationStartHandler.bind(this),\n\t\t\t\tanimationEnd: this._animationEndHandler.bind(this)\n\t\t\t}).connect(this._getDataByDirection([\"flick\", \"\"]), this._panInput);\n\t\t} else {\n\t\t\tthis.disableInput();\n\t\t\taxesInst.off();\n\t\t}\n\t}\n\n\t/**\n\t * Set container's height value according to children's height\n\t * @private\n\t * @param {Number} direction\n\t */\n\t_setAdaptiveHeight(direction) {\n\t\tconst conf = this._conf;\n\t\tconst indexToMove = conf.indexToMove;\n\t\tlet $children;\n\t\tlet height;\n\n\t\tconst $panel = indexToMove === 0 ?\n\n\t\t\t// panel moved by 1\n\t\t\tthis[`get${\n\t\t\t\t(direction === Axes.DIRECTION_LEFT && \"Next\") ||\n\t\t\t\t(direction === Axes.DIRECTION_RIGHT && \"Prev\") || \"\"\n\t\t\t}Element`]() :\n\n\t\t\t// panel moved by .moveTo()\n\t\t\tconf.panel.$list[\n\t\t\t\tconf.panel.currIndex + indexToMove\n\t\t\t];\n\n\t\tconst $first = $panel.querySelector(\":first-child\");\n\n\t\tif ($first) {\n\t\t\theight = $first.getAttribute(DATA_HEIGHT);\n\n\t\t\tif (!height) {\n\t\t\t\t$children = $panel.children;\n\n\t\t\t\theight = utils.outerHeight(\n\t\t\t\t\t$children.length > 1 ? ($panel.style.height = \"auto\", $panel) : $first\n\t\t\t\t);\n\n\t\t\t\theight > 0 && $first.setAttribute(DATA_HEIGHT, height);\n\t\t\t}\n\n\t\t\theight > 0 && (this.$wrapper.style.height = `${height}px`);\n\t\t}\n\t}\n\n\t/**\n\t * Trigger beforeRestore event\n\t * @private\n\t * @param {Object} e event object\n\t */\n\t_triggerBeforeRestore(e) {\n\t\tconst conf = this._conf;\n\t\tconst touch = conf.touch;\n\n\t\t// reverse direction value when restore\n\t\ttouch.direction = +conf.dirData.join(\"\").replace(touch.direction, \"\");\n\n\t\t/**\n\t\t * This event occurs before the current panel starts to return to its original position. Followes [flick]{@link eg.Flicking#event:flick} and [restore]{@link eg.Flicking#event:restore} events. The conditions of occurrence are as follows.
1. The user has finished input but does not exceed the panel movement threshold.
2. Call the [restore()]{@link eg.Flicking#restore} method. (Prevent the default behavior of the [beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart} event.)\n\t\t * @ko 현재 패널이 원래 위치로 되돌아가기 시작전에 발생하는 이벤트이다. 뒤이어 [flick]{@link eg.Flicking#event:flick}과 [restore]{@link eg.Flicking#event:restore}이벤트가 발생한다. 발생조건은 아래와 같다.
1. 사용자 입력이 끝났는데 패널 이동 임계점을 넘지 않은 경우.
2. [restore()]{@link eg.Flicking#restore} 메서드 호출.([beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart} 이벤트의 기본동작 방지 전제)\n\t\t * @name eg.Flicking#beforeRestore\n\t\t * @event\n\t\t * @property {String} eventType The name of the event 이벤트 명\n\t\t * @property {Boolean} isTrusted `true` when the event was generated by a user action(\"mouse\" or \"touch\") otherwise `false`.사용자 액션(\"mouse\" 또는 \"touch\")에 의해 이벤트가 생성된 경우 `true`. 그 외는 `false`.\n\t\t * @property {Number} no Index number of the current panel element. See the [getIndex()]{@link eg.Flicking#getIndex} method.현재 패널 요소의 인덱스 번호. [getIndex()]{@link eg.Flicking#getIndex}메서드 참조.\n\t\t * @property {Number} direction of the panel movement. If `horizontal=true` is {@link eg.Flicking.DIRECTION_LEFT} or {@link eg.Flicking.DIRECTION_RIGHT}. If `horizontal=false` is {@link eg.Flicking.DIRECTION_UP} or {@link eg.Flicking.DIRECTION_DOWN}.패널 이동 방향. `horizontal=true` 이면 {@link eg.Flicking.DIRECTION_LEFT} 혹은 {@link eg.Flicking.DIRECTION_RIGHT}. `horizontal=false` 이면 {@link eg.Flicking.DIRECTION_UP} 혹은 {@link eg.Flicking.DIRECTION_DOWN}.\n\t\t * @property {Number} depaPos Starting coordinate. 출발점 좌표.\n\t\t * @property {Number} destPos Destination coordinate. 도착점 좌표.\n\t\t * @see eg.Flicking#event:flick\n\t\t * @see eg.Flicking#event:restore\n\t\t * @see eg.Flicking#restore\n\t\t * @example\n\t\t * // The order of event occurrence.\n\t\t * // 이벤트 발생 순서\n\t\t * beforeRestore (once) > flick (many times) > restore (once)\n\t\t */\n\t\tconf.customEvent.restore = this._triggerEvent(EVENTS.beforeRestore, {\n\t\t\tdepaPos: e.depaPos.flick,\n\t\t\tdestPos: e.destPos.flick\n\t\t});\n\n\t\tif (!conf.customEvent.restore) {\n\t\t\t\"stop\" in e && e.stop();\n\t\t\tconf.panel.animating = false;\n\t\t}\n\t}\n\n\t/**\n\t * Trigger restore event\n\t * @private\n\t */\n\t_triggerRestore() {\n\t\tconst customEvent = this._conf.customEvent;\n\n\t\t/**\n\t\t * The event that occurs after completing the move by [restore()]{@link eg.Flicking#restore} method.\n\t\t * @ko [restore()]{@link eg.Flicking#restore} 메서드에 의해 패널이 원래 위치로 이동을 완료한 다음 발생하는 이벤트.\n\t\t * @name eg.Flicking#restore\n\t\t * @event\n\t\t * @property {String} eventType The name of the event 이벤트 명\n\t\t * @property {Boolean} isTrusted `true` when the event was generated by a user action(\"mouse\" or \"touch\") otherwise `false`.사용자 액션(\"mouse\" 또는 \"touch\")에 의해 이벤트가 생성된 경우 `true`. 그 외는 `false`.\n\t\t * @property {Number} no Index number of the current panel element. See the [getIndex()]{@link eg.Flicking#getIndex} method.현재 패널 요소의 인덱스 번호. [getIndex()]{@link eg.Flicking#getIndex}메서드 참조.\n\t\t * @property {Number} direction of the panel movement. If `horizontal=true` is {@link eg.Flicking.DIRECTION_LEFT} or {@link eg.Flicking.DIRECTION_RIGHT}. If `horizontal=false` is {@link eg.Flicking.DIRECTION_UP} or {@link eg.Flicking.DIRECTION_DOWN}.패널 이동 방향. `horizontal=true` 이면 {@link eg.Flicking.DIRECTION_LEFT} 혹은 {@link eg.Flicking.DIRECTION_RIGHT}. `horizontal=false` 이면 {@link eg.Flicking.DIRECTION_UP} 혹은 {@link eg.Flicking.DIRECTION_DOWN}.\n\t\t * @see eg.Flicking#event:beforeRestore\n\t\t * @see eg.Flicking#event:flick\n\t\t * @see eg.Flicking#restore\n\t\t * @example\n\t\t * // The order of event occurrence.\n\t\t * // 이벤트 발생 순서\n\t\t * beforeRestore (once) > flick (many times) > restore (once)\n\t\t */\n\t\tcustomEvent.restore && this._triggerEvent(EVENTS.restore);\n\t\tcustomEvent.restore = customEvent.restoreCall = false;\n\t}\n\n\t/**\n\t * Set value when panel changes\n\t * @private\n\t * @param {String} phase - [start|end]\n\t * @param {Object} pos\n\t */\n\t_setPhaseValue(phase, pos) {\n\t\tconst conf = this._conf;\n\t\tconst options = this.options;\n\t\tconst panel = conf.panel;\n\t\tconst useTranslate = options.useTranslate;\n\n\t\tif (phase === \"start\" && (panel.changed = this._isMovable())) {\n\t\t\t/**\n\t\t\t * An event that occurs before a user action or [moveTo()]{@link eg.Flicking#moveTo}, [prev()]{@link eg.Flicking#prev}, [next()]{@link eg.Flicking#next} method initiates a move to the destination panel. If you do not prevent the default behavior, then many [flick]{@link eg.Flicking#event:flick} events and one [flickEnd]{@link eg.Flicking#event:flickEnd} event will occur.\n\t\t\t * @ko 사용자 액션 혹은 [moveTo()]{@link eg.Flicking#moveTo}, [prev()]{@link eg.Flicking#prev}, [next()]{@link eg.Flicking#next} 메서드에 의해 목적 패널로의 이동 시작전 발생하는 이벤트. 기본동작을 막지 않는다면 뒤이어 다수의 [flick]{@link eg.Flicking#event:flick}이벤트와 그 뒤 한 번의 [flickEnd]{@link eg.Flicking#event:flickEnd}이벤트가 발생한다.\n\t\t\t * @name eg.Flicking#beforeFlickStart\n\t\t\t * @event\n\t\t\t * @property {String} eventType The name of the event 이벤트 명\n\t\t\t * @property {Boolean} isTrusted `true` when the event was generated by a user action(\"mouse\" or \"touch\") otherwise `false`.사용자 액션(\"mouse\" 또는 \"touch\")에 의해 이벤트가 생성된 경우 `true`. 그 외는 `false`\n\t\t\t * @property {Number} no Index number of the current panel element. See the [getIndex()]{@link eg.Flicking#getIndex} method.현재 패널 요소의 인덱스 번호. [getIndex()]{@link eg.Flicking#getIndex}메서드 참조.\n\t\t\t * @property {Number} direction of the panel movement. If `horizontal=true` is {@link eg.Flicking.DIRECTION_LEFT} or {@link eg.Flicking.DIRECTION_RIGHT}. If `horizontal=false` is {@link eg.Flicking.DIRECTION_UP} or {@link eg.Flicking.DIRECTION_DOWN}.패널 이동 방향. `horizontal=true` 이면 {@link eg.Flicking.DIRECTION_LEFT} 혹은 {@link eg.Flicking.DIRECTION_RIGHT}. `horizontal=false` 이면 {@link eg.Flicking.DIRECTION_UP} 혹은 {@link eg.Flicking.DIRECTION_DOWN}.\n\t\t\t * @property {Number} depaPos Starting coordinate. 출발점 좌표.\n\t\t\t * @property {Number} destPos Destination coordinate. 도착점 좌표.\n\t\t\t * @property {Function} stop Cancels the default action. (Default action: Move to destination panel.) The panel element stays at the position of the call to `stop()`. To return to the original position, you must call the [restore()]{@link eg.Flicking#restore} method.기본동작을 취소한다. (기본동작: 목적 패널로의 이동.) 패널 요소가 `stop()`호출시점의 위치에 머물러 있는다. 원래 자리로 되돌리려면 [restore()]{@link eg.Flicking#restore} 메서드를 호출해야 한다.\n\t\t\t * @see eg.Flicking#event:flick\n\t\t\t * @see eg.Flicking#event:flickEnd\n\t\t\t * @see eg.Flicking#moveTo\n\t\t\t * @see eg.Flicking#prev\n\t\t\t * @see eg.Flicking#next\n\t\t\t * @example\n\t\t\t * // The order of event occurrence.\n\t\t\t * // 이벤트 발생 순서\n\t\t\t * beforeFlickStart (once) > flick (many times) > flickEnd (once)\n\t\t\t * @example\n\t\t\t * // An example to prevent the default behavior.\n\t\t\t * // 기본동작을 막는 예.\n\t\t\t * new eg.Flicking(\"#flick\").on(\"beforeFlickStart\", e => {\n\t\t\t * \te.stop();\n\t\t\t * });\n\t\t\t */\n\t\t\tif (!this._triggerEvent(EVENTS.beforeFlickStart, pos)) {\n\t\t\t\tpanel.changed = panel.animating = false;\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\toptions.adaptiveHeight && this._setAdaptiveHeight(conf.touch.direction);\n\t\t\t}\n\n\t\t\tconf.indexToMove === 0 && this._setPanelNo();\n\t\t} else if (phase === \"end\") {\n\t\t\tif (options.circular && panel.changed) {\n\t\t\t\tthis._arrangePanels(true, conf.indexToMove);\n\t\t\t}\n\n\t\t\tuseTranslate && this._setTranslate([-panel.size * panel.index, 0]);\n\t\t\tconf.touch.distance = conf.indexToMove = 0;\n\n\t\t\t/**\n\t\t\t * The event that occurs after completing the move to the destination panel. It occurs in the following cases.
- After completing the movement to the destination panel by user's move input.
- `moveTo()`, `prev()`, `next()` method call. (It does not occur if you have disabled the default behavior of the [beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart} event.)\n\t\t\t * @ko 목적 패널로의 이동을 완료한 다음 발생하는 이벤트. 아래의 경우에 발생한다.
- 사용자의 이동(move) 액션 입력에 의한 목적 패널로의 이동완료 후.
- `moveTo()`, `prev()`, `next()` 메서드 호출.([beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart}이벤트의 기본동작을 막았다면 발생하지 않는다.)\n\t\t\t * @name eg.Flicking#flickEnd\n\t\t\t * @event\n\t\t\t * @property {String} eventType The name of the event.이벤트 명\n\t\t\t * @property {Boolean} isTrusted `true` when the event was generated by a user action(\"mouse\" or \"touch\") otherwise `false`.사용자 액션(\"mouse\" 또는 \"touch\")에 의해 이벤트가 생성된 경우 `true`. 그 외는 `false`.\n\t\t\t * @property {Number} no Index number of the current panel element. See the [getIndex()]{@link eg.Flicking#getIndex} method.현재 패널 요소의 인덱스 번호. [getIndex()]{@link eg.Flicking#getIndex}메서드 참조.\n\t\t\t * @property {Number} direction of the panel movement. If `horizontal=true` is {@link eg.Flicking.DIRECTION_LEFT} or {@link eg.Flicking.DIRECTION_RIGHT}. If `horizontal=false` is {@link eg.Flicking.DIRECTION_UP} or {@link eg.Flicking.DIRECTION_DOWN}.패널 이동 방향. `horizontal=true` 이면 {@link eg.Flicking.DIRECTION_LEFT} 혹은 {@link eg.Flicking.DIRECTION_RIGHT}. `horizontal=false` 이면 {@link eg.Flicking.DIRECTION_UP} 혹은 {@link eg.Flicking.DIRECTION_DOWN}.\n\t\t\t * @see eg.Flicking#event:beforeFlickStart\n\t\t\t * @see eg.Flicking#event:flick\n\t\t\t * @see eg.Flicking#moveTo\n\t\t\t * @see eg.Flicking#prev\n\t\t\t * @see eg.Flicking#next\n\t\t\t * @example\n\t\t\t * // The order of event occurrence.\n\t\t\t * // 이벤트 발생 순서\n\t\t\t * beforeFlickStart (once) > flick (many times) > flickEnd (once)\n\t\t\t */\n\t\t\tpanel.changed && this._triggerEvent(EVENTS.flickEnd);\n\t\t}\n\n\t\tthis._adjustContainerCss(phase);\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get positive or negative according direction\n\t * @private\n\t */\n\t_getNumByDirection() {\n\t\tconst conf = this._conf;\n\n\t\treturn conf.touch.direction === conf.dirData[0] ? 1 : -1;\n\t}\n\n\t/**\n\t * Revert panel number\n\t * @private\n\t */\n\t_revertPanelNo() {\n\t\tconst panel = this._conf.panel;\n\t\tconst num = this._getNumByDirection();\n\n\t\tconst index = panel.currIndex >= 0 ? panel.currIndex : panel.index - num;\n\t\tconst no = panel.currNo >= 0 ? panel.currNo : panel.no - num;\n\n\t\tthis._setPanelNo({\n\t\t\tindex,\n\t\t\tno\n\t\t});\n\t}\n\n\t/**\n\t * Set the panel number\n\t * @private\n\t * @param {Object} obj number object\n\t */\n\t_setPanelNo(obj) {\n\t\tconst panel = this._conf.panel;\n\t\tconst count = panel.origCount - 1;\n\t\tconst num = this._getNumByDirection();\n\n\t\tif (utils.isObject(obj)) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tpanel[key] = obj[key];\n\t\t\t}\n\t\t} else {\n\t\t\t// remember current value\n\t\t\tpanel.currIndex = panel.index;\n\t\t\tpanel.currNo = panel.no;\n\n\t\t\tpanel.index += num;\n\t\t\tpanel.no += num;\n\t\t}\n\n\t\tif (panel.no > count) {\n\t\t\tpanel.no = 0;\n\t\t} else if (panel.no < 0) {\n\t\t\tpanel.no = count;\n\t\t}\n\t}\n\n\t/**\n\t * Set pointerEvents css property on container element due to the iOS click bug\n\t * @private\n\t * @param {Event} e\n\t */\n\t_setPointerEvents(e) {\n\t\tconst $container = this.$container;\n\t\tconst pointer = utils.css($container, \"pointerEvents\");\n\t\tlet pointerEvents;\n\n\t\tif (e && e.holding &&\n\t\t\te.inputEvent && e.inputEvent.preventSystemEvent &&\n\t\t\tpointer !== \"none\"\n\t\t) {\n\t\t\tpointerEvents = \"none\";\n\t\t} else if (!e && pointer !== \"auto\") {\n\t\t\tpointerEvents = \"auto\";\n\t\t}\n\n\t\tpointerEvents && utils.css($container, {pointerEvents});\n\t}\n\n\t/**\n\t * Get coordinate value with unit\n\t * @private\n\t * @param coordsValue {Array} x,y numeric value\n\t * @return {Object} x,y coordinate value with unit\n\t */\n\t_getCoordsValue(coordsValue) {\n\t\t// the param comes as [ val, 0 ], whatever the direction. So reorder the value depend the direction.\n\t\tconst coords = this._getDataByDirection(coordsValue);\n\n\t\treturn {\n\t\t\tx: utils.getUnitValue(coords[0]),\n\t\t\ty: utils.getUnitValue(coords[1])\n\t\t};\n\t}\n\n\t/**\n\t * Set translate property value\n\t * @private\n\t * @param {Array} coordsValue coordinate x,y value\n\t */\n\t_setTranslate(coordsValue) {\n\t\tconst coords = this._getCoordsValue(coordsValue);\n\n\t\tthis._setMoveStyle(this.$container, [coords.x, coords.y]);\n\t}\n\n\t/**\n\t * Check if panel passed through threshold pixel\n\t * @private\n\t */\n\t_isMovable() {\n\t\tconst options = this.options;\n\t\tconst axesInst = this._axesInst;\n\t\tconst isMovable = Math.abs(this._conf.touch.distance) >= options.threshold;\n\t\tlet max;\n\t\tlet currPos;\n\n\t\tif (!options.circular && isMovable) {\n\t\t\tmax = axesInst.axis.flick.range[1];\n\t\t\tcurrPos = axesInst.get().flick;\n\n\t\t\t// if current position out of range\n\t\t\tif (currPos < 0 || currPos > max) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn isMovable;\n\t}\n\n\t/**\n\t * Trigger custom events\n\t * @private\n\t * @param {String} name - event name\n\t * @param {Object} param - additional event value\n\t * @return {Boolean}\n\t */\n\t_triggerEvent(name, param) {\n\t\tconst conf = this._conf;\n\t\tconst panel = conf.panel;\n\n\t\t// pass changed panel no only on 'flickEnd' event\n\t\tif (name === EVENTS.flickEnd) {\n\t\t\tpanel.currNo = panel.no;\n\t\t\tpanel.currIndex = panel.index;\n\t\t}\n\n\t\treturn this.trigger(conf.eventPrefix + name, utils.extend({\n\t\t\teventType: name,\n\t\t\tno: panel.currNo,\n\t\t\tdirection: conf.touch.direction,\n\t\t\tisTrusted: conf.touch.isTrusted\n\t\t}, param));\n\t}\n\n\t/**\n\t * Get next/prev panel element/index.\n\t * @private\n\t * @param {Boolean} direction\n\t * @param {Boolean} element - true:to get element, false:to get index\n\t * @param {Number} physical - true : physical, false : logical (@deprecated since 2.2.0)\n\t * @return {HTMLElement|Number}\n\t */\n\t_getElement(direction, element, physical) {\n\t\tconst panel = this._conf.panel;\n\t\tconst circular = this.options.circular;\n\t\tconst pos = panel.currIndex;\n\t\tconst next = direction === this._conf.dirData[0];\n\t\tlet result = null;\n\t\tlet total;\n\t\tlet index;\n\n\t\tif (physical) {\n\t\t\ttotal = panel.count;\n\t\t\tindex = pos;\n\t\t} else {\n\t\t\ttotal = panel.origCount;\n\t\t\tindex = panel.currNo;\n\t\t}\n\n\t\tconst currentIndex = index;\n\n\t\tif (next) {\n\t\t\tif (index < total - 1) {\n\t\t\t\tindex++;\n\t\t\t} else if (circular) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (index > 0) {\n\t\t\t\tindex--;\n\t\t\t} else if (circular) {\n\t\t\t\tindex = total - 1;\n\t\t\t}\n\t\t}\n\n\t\tif (currentIndex !== index) {\n\t\t\tresult = element ? panel.$list[next ? pos + 1 : pos - 1] : index;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Set value to force move panels when duration is 0\n\t * @private\n\t * @param {Boolean} next\n\t */\n\t_setValueToMove(next) {\n\t\tconst conf = this._conf;\n\n\t\tconf.touch.distance = this.options.threshold + 1;\n\t\tconf.touch.direction = conf.dirData[+!next];\n\t}\n\n\t/**\n\t * Returns the index number of the current panel element.\n\t * @ko 현재 패널 요소의 인덱스 번호를 반환한다.\n\t * @method eg.Flicking#getIndex\n\t * @param {Boolean} [physical=false] @deprecated since 2.2.0
Types of index numbers.
- true (Physical): Math.floor({Total number of panels} / 2 - 0.1) value. (Increase by 1 for every two panels.) If the circular option is false, it equals physical=false.
- false (Logical): The value of how the content(innerHTML) of the current panel element is in the defined order of the panel elements.@deprecated since 2.2.0
인덱스 번호의 종류.
- true (물리적): `Math.floor({패널 총 개수} / 2 - 0.1)` 값. (패널이 2개 늘어날 때마다 1씩 증가) `circular`옵션이 `false`이면 `physical=false`와 동일한 값.
- false (논리적): 현재 패널 요소의 컨텐트(innerHTML)가 '패널 요소들의 정의된 순서'에서 몇 번째인지에 대한 값.\n\t * @return {Number} Index number of the current panel element. A zero-based integer.현재 패널의 인덱스 번호. 0부터 시작하는 정수.\n\t * @see eg.Flicking#getPrevIndex\n\t * @see eg.Flicking#getNextIndex\n\t * @example\n\t * ```html\n\t * \n\t * \t
\n\t * \t
\n\t * \t
\n\t * \t
\n\t *
\n\t * ```\n\t * ```javascript\n\t * // circular off and left flicking.\n\t * // 순환을 끄고 좌 플리킹.\n\t * new eg.Flicking(\"#flick\").on(\"flickEnd\", {currentTarget} => {\n\t * \tconsole.log(currentTarget.getIndex()); // 1 > 2 > 3\n\t * \tconsole.log(currentTarget.getIndex(true)); // 1 > 2 > 3\n\t * };\n\t *\n\t * // circular on and left flicking.\n\t * // 순환을 켜고 좌 플리킹.\n\t * new eg.Flicking(\"#flick\", {circular: true}).on(\"flickEnd\", {currentTarget} => {\n\t * \tconsole.log(currentTarget.getIndex()); // 1 > 2 > 3 > 0 > 1 > 2 > 3 > 0 ...\n\t * \tconsole.log(currentTarget.getIndex(true)); // 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 ...\n\t * };\n\t * ```\n\t * @example\n\t * ```html\n\t * \n\t * \n\t * \n\t * ```\n\t * ```javascript\n\t * // (In the case of circulation) If the number of defined panel elements is less than the minimum number required, the number of panels is created.\n\t * // Therefore, it is described as 'the number of panel definitions of the contents of the panel.'\n\t * // (순환인 경우) 정의된 패널 요소의 개수가 필요 최소개수보다 적으면 그 수만큼의 패널을 생성한다.\n\t * // 그렇기 때문에 '패널이 담고 있는 컨텐트의 패널 정의 순성상의 번호'라고 설명한다.\n\t * const flick = new eg.Flicking(\"flick2\", {\n\t * \tcircular: true\n\t * });\n\t *\n\t * // The content of the current panel is the first in the panel definition order.\n\t * // 현재 패널이 담고 있는 컨텐트는 패널 정의 순서상 첫 번째이다.\n\t * flick.getIndex(); // 0\n\t *\n\t * // The content of the next panel is the second in the panel definition order.\n\t * // 다음 패널이 담고 있는 컨텐트는 패널 정의 순서상 두 번째이다.\n\t * flick.getNextIndex(); // 1\n\t *\n\t * // The content of the previous panel is the second in the panel definition order.\n\t * // 이전 패널이 담고 있는 컨텐트는 패널 정의 순서상 두 번째이다.\n\t * flick.getPrevIndex(); // 1\n\t * ```\n\t */\n\tgetIndex(physical) {\n\t\treturn this._conf.panel[physical ? \"currIndex\" : \"currNo\"];\n\t}\n\n\t/**\n\t * Returns the reference of the current panel element.\n\t * @ko 현재 패널 요소의 레퍼런스를 반환한다.\n\t * @method eg.Flicking#getElement\n\t * @return {HTMLElement} Current panel element.현재 패널 요소.\n\t * @see eg.Flicking#getPrevElement\n\t * @see eg.Flicking#getNextElement\n\t */\n\tgetElement() {\n\t\tconst panel = this._conf.panel;\n\n\t\treturn panel.$list[panel.currIndex];\n\t}\n\n\t/**\n\t * Returns the reference of the next panel element.\n\t * @ko 다음 패널 요소의 레퍼런스를 반환한다.\n\t * @method eg.Flicking#getNextElement\n\t * @return {HTMLElement|null} Next panel element or `null` if it does not exist.다음 패널 요소. 패널이 없으면 `null`을 반환한다.\n\t * @see eg.Flicking#getElement\n\t * @see eg.Flicking#getPrevElement\n\t */\n\tgetNextElement() {\n\t\treturn this._getElement(this._conf.dirData[0], true);\n\t}\n\n\t/**\n\t * Returns the index number of the next panel element.\n\t * @ko 다음 패널 요소의 인덱스 번호를 반환한다.\n\t * @method eg.Flicking#getNextIndex\n\t * @param {Boolean} [physical=false] @deprecated since 2.2.0
Types of index numbers
- true (Physical): Plus one of [getIndex()]{@link eg.Flicking#getIndex} return value.
- false (Logical): The value of how the content(innerHTML) of the next panel element is in the defined order of the panel elements.@deprecated since 2.2.0
인덱스 번호의 종류.
- true (물리적): [getIndex()]{@link eg.Flicking#getIndex} 반환값에 1을 더한 값.
- false (논리적): 다음 패널 요소의 컨텐트(innerHTML)가 '패널 요소들의 정의된 순서'에서 몇 번째인지에 대한 값.\n\t * @return {Number|null} Index number of the next panel element or null if it does not exist. A zero-based integer.다음 패널 요소의 인덱스 번호. 0부터 시작하는 정수. 패널이 없으면 `null`을 반환한다.\n\t * @see eg.Flicking#getIndex\n\t * @see eg.Flicking#getPrevIndex\n\t */\n\tgetNextIndex(physical) {\n\t\treturn this._getElement(this._conf.dirData[0], false, physical);\n\t}\n\n\t/**\n\t * Returns a reference to all panel elements.\n\t * @ko 모든 패널 요소의 레퍼런스를 반환한다.\n\t * @method eg.Flicking#getAllElements\n\t * @return {HTMLElement[]} Whole panel elements.모든 패널 요소.\n\t */\n\tgetAllElements() {\n\t\treturn this._conf.panel.$list;\n\t}\n\n\t/**\n\t * Returns the reference of the previous panel element.\n\t * @ko 이전 패널 요소의 레퍼런스를 반환한다.\n\t * @method eg.Flicking#getPrevElement\n\t * @return {HTMLElement|null} Previous panel element or `null` if it does not exist.이전 패널 요소. 패널이 없으면 `null`을 반환한다.\n\t * @see eg.Flicking#getElement\n\t * @see eg.Flicking#getNextElement\n\t */\n\tgetPrevElement() {\n\t\treturn this._getElement(this._conf.dirData[1], true);\n\t}\n\n\t/**\n\t * Returns the index number of the previous panel element.\n\t * @ko 이전 패널 요소의 인덱스 번호를 반환한다.\n\t * @method eg.Flicking#getPrevIndex\n\t * @param {Boolean} [physical=false] @deprecated since 2.2.0
Types of index numbers
- true (Physical): Minus one of [getIndex()]{@link eg.Flicking#getIndex} return value.
- false (Logical): The value of how the content(innerHTML) of the current panel element is in the defined order of the panel elements.@deprecated since 2.2.0
인덱스 번호의 종류
- true (물리적): [getIndex()]{@link eg.Flicking#getIndex} 반환값에 1을 뺀 값.
- false (논리적): 이전 패널 요소의 컨텐트(innerHTML)가 '패널 요소들의 정의된 순서'에서 몇 번째인지에 대한 값.\n\t * @return {Number|null} Previous element index value or null if no more element exist. A zero-based integer.이전 패널 요소의 인덱스 번호. 0부터 시작하는 정수. 패널이 없는 경우는 `null`.\n\t * @see eg.Flicking#getIndex\n\t * @see eg.Flicking#getNextIndex\n\t */\n\tgetPrevIndex(physical) {\n\t\treturn this._getElement(this._conf.dirData[1], false, physical);\n\t}\n\n\t/**\n\t * Checks whether the animated panel is playing.\n\t * @ko 패널 이동 애니메이션이 진행 중인지 확인한다.\n\t * @method eg.Flicking#isPlaying\n\t * @return {Boolean} Indicates whether the animated panel is playing 패널 이동 애니메이션 진행 중 여부\n\t */\n\tisPlaying() {\n\t\treturn this._conf.panel.animating;\n\t}\n\n\t/**\n\t * Move panel applying start/end phase value\n\t * @private\n\t * @param {String} method Axes' method name\n\t * @param {Number} to destination value\n\t * @param {Number} durationValue duration value\n\t */\n\t_movePanelByPhase(method, to, durationValue) {\n\t\tconst duration = utils.getNumValue(durationValue, this.options.duration);\n\n\t\tif (this._setPhaseValue(\"start\") !== false) {\n\t\t\tthis._setAxes(method, to, duration);\n\t\t\t!duration && this._setPhaseValue(\"end\");\n\t\t}\n\t}\n\n\t/**\n\t * Moves an element to the next panel. If `horizontal=true`is right panel. If `horizontal=false`is lower panel.\n\t * @ko 다음 패널로 이동한다. `horizontal=true`이면 우측 패널. `horizontal=false`이면 하측 패널.\n\t * @method eg.Flicking#next\n\t * @param {Number} [duration=options.duration] Duration of the panel movement (unit: ms) 패널 이동 애니메이션 진행 시간(단위: ms)\n\t * @return {eg.Flicking} An instance of a module itself 모듈 자신의 인스턴스\n\t * @fires eg.Flicking#beforeFlickStart\n\t * @fires eg.Flicking#flick\n\t * @fires eg.Flicking#flickEnd\n\t * @see eg.Flicking#moveTo\n\t * @see eg.Flicking#prev\n\t */\n\tnext(duration) {\n\t\tconst index = this.getNextIndex();\n\n\t\tif (typeof index !== \"number\") {\n\t\t\treturn this;\n\t\t}\n\t\treturn this._moveTo(index, duration, Axes.DIRECTION_RIGHT);\n\t}\n\n\t/**\n\t * Moves an element to the previous panel. If `horizontal=true`is left panel. If `horizontal=false`is upper panel.\n\t * @ko 이전 패널로 이동한다. `horizontal=true`이면 좌측 패널. `horizontal=false`이면 상측 패널.\n\t * @method eg.Flicking#prev\n\t * @param {Number} [duration=options.duration] Duration of the panel movement (unit: ms) 패널 이동 애니메이션 진행 시간(단위: ms)\n\t * @return {eg.Flicking} An instance of a module itself모듈 자신의 인스턴스\n\t * @fires eg.Flicking#beforeFlickStart\n\t * @fires eg.Flicking#flick\n\t * @fires eg.Flicking#flickEnd\n\t * @see eg.Flicking#moveTo\n\t * @see eg.Flicking#next\n\t */\n\tprev(duration) {\n\t\tconst index = this.getPrevIndex();\n\n\t\tif (typeof index !== \"number\") {\n\t\t\treturn this;\n\t\t}\n\t\treturn this._moveTo(index, duration, Axes.DIRECTION_LEFT);\n\t}\n\n\t/**\n\t * Moves to the panel in the order specified in `noValue`. If noValue is equal to the current logical index numbering, no action is taken. [beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart}, [flick]{@link eg.Flicking#event:flick}, [flickEnd]{@link eg.Flicking#event:flickEnd} events occur one after the other.\n\t * @ko `noValue`에 지정한 순서의 패널로 이동한다. `noValue`값이 현재의 논리적 인덱스 번호와 같다면 아무동작 하지 않는다. [beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart}, [flick]{@link eg.Flicking#event:flick}, [flickEnd]{@link eg.Flicking#event:flickEnd} 이벤트가 차례로 발생한다.\n\t * @method eg.Flicking#moveTo\n\t * @param {Number} noValue The logical index number of the panel element to be moved. (Based on the defined order of the panel elements.)이동할 패널 요소의 논리적 인덱스 번호. ([getIndex()]{@link eg.Flicking#getIndex}메서드 참조.)\n\t * @param {Number} [duration=options.duration] Duration of the panel movement (unit: ms) 패널 이동 애니메이션 진행 시간(단위: ms)\n\t * @return {eg.Flicking} An instance of a module itself모듈 자신의 인스턴스\n\t * @fires eg.Flicking#beforeFlickStart\n\t * @fires eg.Flicking#flick\n\t * @fires eg.Flicking#flickEnd\n\t * @see eg.Flicking#prev\n\t * @see eg.Flicking#next\n\t */\n\tmoveTo(noValue, duration) {\n\t\treturn this._moveTo(noValue, duration);\n\t}\n\t_moveTo(noValue, duration, direction) {\n\t\tconst conf = this._conf;\n\t\tconst panel = conf.panel;\n\t\tconst circular = this.options.circular;\n\t\tconst currentIndex = panel.index;\n\t\tlet indexToMove;\n\t\tlet isPositive;\n\t\tlet no = noValue;\n\n\t\tno = utils.getNumValue(no, -1);\n\n\t\tif (no < 0 || no >= panel.origCount || no === panel.no ||\n\t\t\tpanel.animating || conf.touch.holding) {\n\t\t\treturn this;\n\t\t}\n\n\t\tindexToMove = no - (circular ? panel.no : currentIndex);\n\t\tif (direction === Axes.DIRECTION_RIGHT && indexToMove < 0) {\n\t\t\tindexToMove += panel.origCount;\n\t\t} else if (direction === Axes.DIRECTION_LEFT && indexToMove > 0) {\n\t\t\tindexToMove -= panel.origCount;\n\t\t}\n\t\tisPositive = indexToMove > 0;\n\n\t\t// check for real panel count which can be moved on each sides in circular mode\n\t\tif (circular &&\n\t\t\tMath.abs(indexToMove) >\n\t\t\t(isPositive ? panel.count - (currentIndex + 1) : currentIndex)) {\n\t\t\tindexToMove += (isPositive ? -1 : 1) * panel.count;\n\t\t\tisPositive = indexToMove > 0;\n\t\t}\n\n\t\tthis._setPanelNo(circular ? {no} : {no, index: no});\n\t\tthis._conf.indexToMove = indexToMove;\n\t\tthis._setValueToMove(isPositive);\n\n\t\tthis._movePanelByPhase(\n\t\t\tcircular ? \"setBy\" : \"setTo\",\n\t\t\tpanel.size * (circular ? indexToMove : no),\n\t\t\tduration\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The horizontal or vertical length of the panel is updated according to the base element. If `horizontal=true` is horizontal. If `horizontal=false` is vertical.\n\t * @ko 패널의 가로 혹은 세로 길이를 기준요소에 맞춰 갱신한다. `horizontal=true`이면 가로, `horizontal=false`이면 세로.\n\t * @method eg.Flicking#resize\n\t * @return {eg.Flicking} An instance of a module itself모듈 자신의 인스턴스\n\t * @example\n\t * const flick = new eg.Flicking(\"#flick\", {\n\t * \tpreviewPadding: [10, 10]\n\t * });\n\t *\n\t * // When device orientaion changes.\n\t * // 단말기를 회전했을 때.\n\t * flick.resize();\n\t *\n\t * // Or when changes previewPadding option from its original value.\n\t * // 또는 previewPadding옵션값을 변경했을 때.\n\t * flick.options.previewPadding = [20, 30];\n\t * flick.resize();\n\t */\n\tresize() {\n\t\tconst conf = this._conf;\n\t\tconst options = this.options;\n\t\tconst panel = conf.panel;\n\t\tconst horizontal = options.horizontal;\n\t\tconst useTranslate = options.useTranslate;\n\t\tlet panelSize;\n\n\t\tif (!this.isPlaying()) {\n\t\t\tif (utils.isArray(options.previewPadding) && typeof(+options.previewPadding.join(\"\")) === \"number\") {\n\t\t\t\tthis._setPadding(options.previewPadding.concat());\n\t\t\t\tpanelSize = panel.size;\n\t\t\t} else if (horizontal) {\n\t\t\t\tpanelSize = panel.size = utils.css(this.$wrapper, \"width\", true);\n\t\t\t}\n\n\t\t\t// resize panel elements\n\t\t\tutils.css(panel.$list, {\n\t\t\t\t[horizontal ? \"width\" : \"height\"]: utils.getUnitValue(panelSize)\n\t\t\t});\n\n\t\t\t// remove data-height attribute and re-evaluate panel's height\n\t\t\tif (options.adaptiveHeight) {\n\t\t\t\tconst $panel = this.$container.querySelectorAll(`[${DATA_HEIGHT}]`);\n\n\t\t\t\tif ($panel.length) {\n\t\t\t\t\tutils.toArray($panel)\n\t\t\t\t\t\t.forEach(v => v.removeAttribute(DATA_HEIGHT));\n\n\t\t\t\t\tthis._setAdaptiveHeight();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._axesInst.axis.flick.range = [0, panelSize * (panel.count - 1)];\n\t\t\tthis._setAxes(\"setTo\", panelSize * panel.index, 0);\n\n\t\t\tif (!useTranslate) {\n\t\t\t\tthis._applyPanelsPos();\n\t\t\t\tthis._adjustContainerCss(\"end\");\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Return the panel to its original position. (It only works when the default behavior of the [beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart} event is canceled.) [beforeRestore]{@link eg.Flicking#event:beforeRestore}, [flick]{@link eg.Flicking#event:flick}, [restore]{@link eg.Flicking#event:restore} events are occur in order.\n\t * @ko 패널의 위치를 원래 자리로 되돌린다. ([beforeFlickStart]{@link eg.Flicking#event:beforeFlickStart} 이벤트의 기본동작을 취소한 경우에만 동작함.) [beforeRestore]{@link eg.Flicking#event:beforeRestore}, [flick]{@link eg.Flicking#event:flick}, [restore]{@link eg.Flicking#event:restore} 이벤트가 차례로 발생한다.\n\t * @method eg.Flicking#restore\n\t * @param {Number} [durationValue=options.duration] Duration of the panel movement (unit: ms)패널 이동 애니메이션 진행 시간(단위: ms)\n\t * @return {eg.Flicking} An instance of a module itself모듈 자신의 인스턴스\n\t * @fires eg.Flicking#event:beforeRestore\n\t * @fires eg.Flicking#event:flick\n\t * @fires eg.Flicking#event:restore\n\t * @example\n\t * new eg.Flicking(\"#flick\").on(\"beforeFlickStart\", e => {\n\t * \tif (e.no === 2) {\n\t * \t\t// Cancels the default behavior of the 'beforeFlickStart' event.\n\t * \t\t// 'beforeFlickStart' 이벤트 기본동작 취소.\n\t * \t\te.stop();\n\t *\n\t * \t\t// Return to original position.\n\t * \t\t// 원래 자리로 되돌림.\n\t * \t\tthis.restore(100);\n\t * \t}\n\t * });\n\t */\n\trestore(durationValue) {\n\t\tconst conf = this._conf;\n\t\tconst panel = conf.panel;\n\t\tconst currPos = this._axesInst.get().flick;\n\t\tlet duration = durationValue;\n\t\tlet destPos;\n\n\t\t// check if the panel isn't in right position\n\t\tif (currPos !== panel.currIndex * panel.size) {\n\t\t\tconf.customEvent.restoreCall = true;\n\t\t\tduration = utils.getNumValue(duration, this.options.duration);\n\n\t\t\tthis._revertPanelNo();\n\t\t\tdestPos = panel.size * panel.index;\n\n\t\t\tthis._triggerBeforeRestore({depaPos: currPos, destPos});\n\t\t\tthis._setAxes(\"setTo\", destPos, duration);\n\n\t\t\tif (!duration) {\n\t\t\t\tthis._adjustContainerCss(\"end\");\n\t\t\t\tthis._triggerRestore();\n\t\t\t}\n\n\t\t\t// to handle on api call\n\t\t} else if (panel.changed) {\n\t\t\tthis._revertPanelNo();\n\t\t\tconf.touch.distance = conf.indexToMove = 0;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The input from the input device is not blocked so that the panel can be moved by the input device.\n\t * @ko 막았던 입력 장치로부터의 입력을 푼다.\n\t * @method eg.Flicking#enableInput\n\t * @return {eg.Flicking} An instance of a module itself 모듈 자신의 인스턴스\n\t * @see eg.Flicking#disableInput\n\t */\n\tenableInput() {\n\t\tthis._panInput.enable();\n\t\treturn this;\n\t}\n\n\t/**\n\t * The input from the input device is blocked so that the panel is not moved by the input device.\n\t * @ko 패널이 입력 장치에 의해 움직이지 않도록 입력 장치로부터의 입력을 막는다.\n\t * @method eg.Flicking#disableInput\n\t * @return {eg.Flicking} An instance of a module itself 모듈 자신의 인스턴스\n\t * @see eg.Flicking#enableInput\n\t */\n\tdisableInput() {\n\t\tthis._panInput.disable();\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get current flicking status. If the returned value is specified as a [setStatus()]{@link eg.Flicking#setStatus} method argument, it can be returned to its value state.\n\t * @ko 현재 상태 값을 반환한다. 반환받은 값을 [setStatus()]{@link eg.Flicking#setStatus} 메서드 인자로 지정하면 그 값 상태로 되돌릴 수 있다.\n\t * @method eg.Flicking#getStatus\n\t * @param {Boolean} [stringify] Set true if want get stringified status value.true 지정시 json문자열 형태로 반환한다.\n\t * @return {Status|String} An object with current state value information.현재 상태값 정보를 가진 객체.\n\t * @see eg.Flicking#setStatus\n\t * @example\n\t * const flick = new eg.Flicking(\"#flick\");\n\t * const status = flick.getStatus();\n\t * const jsonStaus = flick.getStatus(true);\n\t *\n\t * console.log(status); // {panel: {...}, $list: Array(7)}\n\t * console.log(jsonStatus); // \"{\\\"panel\\\":{\\\"index\\\":3,\\\"no\\\":6,\\\"currIndex\\\":3,\\\"currNo\\\":6},\\\"$list\\\":[{\\\"style\\\":\\\"background-color: rgb(155, 49, 137); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 3</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(51, 172, 91); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 4</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(116, 38, 241); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 5</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(141, 139, 24); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 6</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(204, 102, 204); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 0</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(54, 53, 156); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 1</p>\\n\\t\\t\\t\\t\\t\\t\\\"},{\\\"style\\\":\\\"background-color: rgb(196, 218, 72); position: absolute; height: 100%;\\\",\\\"className\\\":\\\"eg-flick-panel\\\",\\\"html\\\":\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>panel 2</p>\\n\\t\\t\\t\\t\\t\\t\\\"}]}\"\n\t */\n\t/**\n\t * The return value specification of the getStatus () method.\n\t * @ko getStatus() 메서드의 반환값 명세.\n\t * @typedef {Object} Status\n\t * @property {Object} panel current panel position현재 패널 위치\n\t * @property {Number} panel.index Physical index number.물리적 인덱스 번호.\n\t * @property {Number} panel.currIndex Current physical index number.현재 물리적 인덱스 번호.\n\t * @property {Number} panel.no Logical index number.논리적 인덱스 번호.\n\t * @property {Number} panel.currNo Current logical index number.현재 논리적 인덱스 번호.\n\t * @property {Array.<{style: String, className: String, html: String}>} $list panel's html패널 정보\n\t * @property {Object} $list.obj For convenience, the element is denoted by obj.편의상 원소를 obj로 표기함\n\t * @property {String} $list.obj.style The value of the style attribute of the panel element. ('transform', 'left', 'top', 'will-change', 'box-sizing', 'width' style has been deleted.)패널 요소의 style 속성 값. ('transform', 'left', 'top', 'will-change', 'box-sizing', 'width' style은 삭제됨)\n\t * @property {String} $list.obj.className The class name of the panel element.패널 요소의 class 이름.\n\t * @property {String} $list.obj.html The innerHTML value of the panel element.패널 요소의 innerHTML 값.\n\t * @see eg.Flicking#getIndex\n\t */\n\tgetStatus(stringify) {\n\t\tconst panel = this._conf.panel;\n\t\tconst rxStyle = /((?:-webkit-)?transform|left|top|will-change|box-sizing|width):[^;]*;/g;\n\t\tconst status = {\n\t\t\t// current panel position\n\t\t\tpanel: {\n\t\t\t\tindex: panel.index,\n\t\t\t\tno: panel.no,\n\t\t\t\tcurrIndex: panel.currIndex,\n\t\t\t\tcurrNo: panel.currNo\n\t\t\t},\n\n\t\t\t// panel's html\n\t\t\t$list: panel.$list.map(v => ({\n\t\t\t\tstyle: v.style.cssText.replace(rxStyle, \"\").trim(),\n\t\t\t\tclassName: v.className,\n\t\t\t\thtml: v.innerHTML\n\t\t\t}))\n\t\t};\n\n\t\treturn stringify ?\n\t\t\tJSON.stringify(status) : status;\n\t}\n\n\t/**\n\t * Restore to the state of the `statusValue`.\n\t * @ko `statusValue`의 상태로 복원한다.\n\t * @method eg.Flicking#setStatus\n\t * @param {Status|String} statusValue Status value to be restored. You can specify the return value of the [getStatus()]{@link eg.Flicking#getStatus} method.복원할 상태 값. [getStatus()]{@link eg.Flicking#getStatus}메서드 반환값을 지정하면 된다.\n\t * @see eg.Flicking#getStatus\n\t * @example\n\t * const flick = new eg.Flicking(\"#flick\");\n\t * const status = flick.getStatus();\n\t *\n\t * // Move to arbitrary panel.\n\t * // 임의 패널로 이동\n\t * flick.moveTo(2);\n\t *\n\t * // Restore to status.\n\t * // status 상태로 복원\n\t * flick.setStatus(status);\n\t */\n\tsetStatus(statusValue) {\n\t\tconst panel = this._conf.panel;\n\t\tconst isAdaptiveHeight = this.options.adaptiveHeight;\n\t\tconst status = typeof statusValue === \"string\" ?\n\t\t\tJSON.parse(statusValue) : statusValue;\n\n\t\tif (status) {\n\t\t\tfor (const x in status.panel) {\n\t\t\t\tx in panel && (panel[x] = status.panel[x]);\n\t\t\t}\n\n\t\t\tpanel.$list.forEach((v, i) => {\n\t\t\t\tconst data = status.$list[i];\n\t\t\t\tconst style = data.style;\n\t\t\t\tconst className = data.className;\n\t\t\t\tconst html = data.html;\n\n\t\t\t\tstyle && (v.style.cssText += style);\n\t\t\t\tclassName && (v.className = className);\n\t\t\t\thtml && (v.innerHTML = html);\n\t\t\t});\n\n\t\t\tisAdaptiveHeight && this._setAdaptiveHeight();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the reference element and its children to the state they were in before the instance was created. Remove all attached event handlers. Specify `null` for all attributes of the instance (including inherited attributes).
If plugin isn't empty, also reset all plugins registered.\n\t * @ko 기준 요소와 그 하위 요소를 인스턴스 생성전의 상태로 되돌린다. 부착된 모든 이벤트 핸들러를 탈거한다. 인스턴스의 모든 속성(상속받은 속성포함)에 `null`을 지정한다.
플러그인이 비어있지 않다면, 플러그인도 모두 리셋한다.\n\t * @method eg.Flicking#destroy\n\t * @example\n\t * const flick = new eg.Flicking(\"#flick\");\n\t * flick.destroy();\n\t * console.log(flick.moveTo); // null\n\t */\n\tdestroy() {\n\t\tconst conf = this._conf;\n\t\tconst origPanelStyle = conf.origPanelStyle;\n\t\tconst wrapper = origPanelStyle.wrapper;\n\t\tconst container = origPanelStyle.container;\n\t\tconst list = origPanelStyle.list;\n\n\t\t// unbind events\n\t\tthis._bindEvents(false);\n\t\tthis.off();\n\n\t\t// destroy eg.Axes instance\n\t\tthis._axesInst.destroy();\n\t\tthis._panInput.destroy();\n\n\t\t// unwrap container element and restore original inline style\n\t\t// restore wrapper style\n\t\tconst $wrapper = this.$wrapper;\n\n\t\t$wrapper.setAttribute(\"class\", wrapper.className);\n\t\t$wrapper[wrapper.style ? \"setAttribute\" : \"removeAttribute\"](\"style\", wrapper.style);\n\n\t\t// restore container style\n\t\tconst $container = this.$container;\n\t\tconst $children = []\n\t\t\t.slice.call($container.children);\n\n\t\tif (origPanelStyle.container.className) {\n\t\t\t$container.setAttribute(\"class\", container.className);\n\t\t\t$container[container.style ? \"setAttribute\" : \"removeAttribute\"](\"style\", container.style);\n\t\t} else {\n\t\t\t$children.forEach(v => $wrapper.appendChild(v));\n\t\t\t$container.parentNode.removeChild($container);\n\t\t}\n\n\t\tfor (let i = 0, $el; ($el = $children[i]); i++) {\n\t\t\tif (i > list.length - 1) {\n\t\t\t\t$el.parentNode.removeChild($el);\n\t\t\t} else {\n\t\t\t\tconst className = list[i].className;\n\t\t\t\tconst style = list[i].style;\n\n\t\t\t\t$el[className ? \"setAttribute\" : \"removeAttribute\"](\"class\", className);\n\t\t\t\t$el[style ? \"setAttribute\" : \"removeAttribute\"](\"style\", style);\n\t\t\t}\n\t\t}\n\n\t\t// release plugin resources\n\t\tthis.plugins.forEach(v => {\n\t\t\tthis.plugins[v].$componentWillUnmount();\n\t\t});\n\n\t\t// release resources\n\t\tfor (const x in this) {\n\t\t\tthis[x] = null;\n\t\t}\n\t}\n\n\t/**\n\t * Register plugin to be used.\n\t * @ko 사용될 플러그인을 등록한다.\n\t * @method eg.Flicking#plugin\n\t * @example\n\t * new eg.Flicking(\"#flick\").plugin([\n\t * new eg.Flicking.plugin.OpacityEffect(\"span\"),\n\t * ...\n\t * ]);\n\t * @return {eg.Flicking} An instance of a module itself 모듈 자신의 인스턴스\n\t */\n\tplugin(list) {\n\t\tlist.forEach(p => {\n\t\t\t/**\n\t\t\t * A list of plugins used.\n\t\t\t * @ko 사용된 플러그인 목록\n\t\t\t * @property {Array} plugins An array of plugin instances 플러그인 인스턴스 배열\n\t\t\t * @name plugins\n\t\t\t * @type {Array}\n\t\t\t * @instance\n\t\t\t * @example\n\t\t\t * const flick = new eg.Flicking( ... ).plugin([ ... ]);\n\t\t\t *\n\t\t\t * flick.plugins; // [ ... ] - array of plugins\n\t\t\t * @memberof eg.Flicking\n\t\t\t */\n\t\t\tif (this.plugins.filter(v => v.constructor === p.constructor).length === 0) {\n\t\t\t\tthis.plugins.push(p.$componentWillMount(this));\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Rebuild/Initialize panels by current DOM of panels.\n\t * @ko 현재 패널 DOM 을 기준으로 패널을 재구성/초기화한다.\n\t * @method eg.Flicking#rebuild\n\t * @example\n\t * \t\tflicking.rebuild();\n\t *\n\t * @return {eg.Flicking} An instance of a module itself 모듈 자신의 인스턴스\n\t */\n\trebuild(param = {defaultIndex: this.options.defaultIndex}) {\n\t\tconst container = this.$container;\n\t\tconst panel = this._conf.panel;\n\t\tconst options = this.options;\n\t\tconst prefix = options.prefix;\n\n\t\t// filter original panel (remove clones)\n\t\tutils.toArray(container.querySelectorAll(`.${prefix}-clone`)).forEach(el => {\n\t\t\tcontainer.removeChild(el);\n\t\t});\n\t\tpanel.$list = utils.toArray(container.children);\n\n\t\t// panels' css values\n\t\tthis._initOriginalPanelStyle(panel.$list);\n\n\t\t// Add clones\n\t\tif (this._addClonePanels()) {\n\t\t\tpanel.$list = utils.toArray(container.children);\n\t\t}\n\n\t\tthis._setDefaultPanel(param.defaultIndex);\n\t\tthis._arrangePanels();\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Collection of utilities used internally\n\t * @ko 내부에서 사용되는 유틸리티 모음\n\t * @name utils\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @private\n\t * @type {Object}\n\t */\n\tstatic utils = utils;\n\t/**\n\t * Version info string\n\t * @ko 버전정보 문자열\n\t * @name VERSION\n\t * @static\n\t * @type {String}\n\t * @example\n\t * eg.Flicking.VERSION; // ex) 2.2.0\n\t * @memberof eg.Flicking\n\t */\n\tstatic VERSION = \"#__VERSION__#\";\n\t/**\n\t * Constant value used internally\n\t * @ko 내부에서 사용되는 상수 값\n\t * @name consts\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @private\n\t * @type {Object}\n\t */\n\tstatic consts = {\n\t\tEVENTS,\n\t\tTRANSFORM,\n\t\tSUPPORT_WILLCHANGE,\n\t\tIS_ANDROID2\n\t};\n\n\t/**\n\t * Constant value for none direction.\n\t * @ko none 방향에 대한 상수 값.\n\t * @name DIRECTION_NONE\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 1\n\t */\n\tstatic DIRECTION_NONE = Axes.DIRECTION_NONE;\n\n\t/**\n\t * Constant value for left direction.\n\t * @ko left 방향에 대한 상수 값.\n\t * @name DIRECTION_LEFT\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 2\n\t */\n\tstatic DIRECTION_LEFT = Axes.DIRECTION_LEFT;\n\n\t/**\n\t * Constant value for right direction.\n\t * @ko right 방향에 대한 상수 값.\n\t * @name DIRECTION_RIGHT\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 4\n\t */\n\tstatic DIRECTION_RIGHT = Axes.DIRECTION_RIGHT;\n\n\t/**\n\t * Constant value for up direction.\n\t * @ko up 방향에 대한 상수 값.\n\t * @name DIRECTION_UP\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 8\n\t */\n\tstatic DIRECTION_UP = Axes.DIRECTION_UP;\n\n\t/**\n\t * Constant value for down direction.\n\t * @ko down 방향에 대한 상수 값.\n\t * @name DIRECTION_DOWN\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 16\n\t */\n\tstatic DIRECTION_DOWN = Axes.DIRECTION_DOWN;\n\n\t/**\n\t * Constant value for horizontal direction.\n\t * @ko horizontal 방향에 대한 상수 값.\n\t * @name DIRECTION_HORIZONTAL\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 6\n\t */\n\tstatic DIRECTION_HORIZONTAL = Axes.DIRECTION_HORIZONTAL;\n\n\t/**\n\t * Constant value for vertical direction.\n\t * @ko vertical 방향에 대한 상수 값.\n\t * @name DIRECTION_VERTICAL\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 24\n\t */\n\tstatic DIRECTION_VERTICAL = Axes.DIRECTION_VERTICAL;\n\n\t/**\n\t * Constant value for all direction.\n\t * @ko all 방향에 대한 상수 값.\n\t * @name DIRECTION_ALL\n\t * @memberof eg.Flicking\n\t * @static\n\t * @constant\n\t * @type {Number}\n\t * @default 30\n\t */\n\tstatic DIRECTION_ALL = Axes.DIRECTION_ALL;\n}\n"],"names":["Component","trigger","eventName","customEvent","handlerList","hasHandlerList","isCanceled","arg","i","restParam","once","handlerToAttach","isUndefined","eventHash","self","hasOn","on","off","handlerToDetach","k","handlerFunction","VERSION","Object","assign","target","output","index","arguments","source","win","window","document","navigator","userAgent","utils","$","param","el","match","createElement","length","split","forEach","v","attr","setAttribute","trim","replace","querySelectorAll","nodeName","nodeType","toArray","slice","call","isArray","arr","constructor","Array","isObject","obj","extend","objectN","shift","keys","key","value","concat","css","style","getAsNumber","test","getComputedStyle","getNumValue","applyStyle","classList","className","add","isAddParam","res","indexOf","RegExp","val","defVal","num","isNaN","parseFloat","getUnitValue","rx","String","getOuter","type","paddingMargin","dir","toLocaleLowerCase","outerWidth","outerHeight","translate","x","y","isHA","hasClickBug","ua","result","MixinBuilder","superclass","mixins","reduce","c","m","Mixin","EVENTS","beforeFlickStart","beforeRestore","flick","flickEnd","restore","TRANSFORM","name","support","doc","documentElement","SUPPORT_WILLCHANGE","global","CSS","supports","IS_ANDROID2","DATA_HEIGHT","CONFIG","panel","$list","no","currIndex","currNo","size","count","origCount","changed","animating","minCount","touch","holdPos","destPos","distance","direction","lastPos","holding","isTrusted","restoreCall","dirData","indexToMove","$dummyAnchor","OPTIONS","hwAccelerable","prefix","deceleration","horizontal","circular","previewPadding","bounce","threshold","duration","panelEffect","Math","pow","defaultIndex","inputType","thresholdAngle","adaptiveHeight","zIndex","useTranslate","_holdHandler","e","conf","_conf","pos","_adjustContainerCss","_changeHandler","eventRes","movedPx","_setPointerEvents","inputEvent","options","abs","_triggerEvent","_setTranslate","stop","_setPhaseValue","_releaseHandler","panelSize","isPlusMove","depaPos","moveTo","_isMovable","_triggerBeforeRestore","setTo","_animationStartHandler","isFromInput","_animationEndHandler","_triggerRestore","Flicking","element","_prefix","$wrapper","plugins","$children","children","Error","_setOptions","_setConfig","_build","_bindEvents","_applyPanelsCss","_arrangePanels","_setHint","_setAdaptiveHeight","arrVal","padding","$nodes","$container","origPanelStyle","wrapper","getAttribute","container","list","map","useLayerHack","eventPrefix","push","Axes","panelCount","_setPadding","cssValue","position","width","height","top","$parent","parentNode","appendChild","_initOriginalPanelStyle","_addClonePanels","_axesInst","range","easing","interruptable","_setDefaultPanel","panels","sizeValue","_getDataByDirection","boxSizing","left","build","paddingSum","a","reverse","join","overflow","paddingType","wrapperSize","max","_clonePanel","clone","cloneNode","cloneCount","cloneNodes","_movePanelPosition","append","listToMove","splice","lastIndex","coords","baseIndex","_getBasePositionIndex","_setPanelNo","_setAxes","sort","_arrangePanelPosition","_applyPanelsPos","bind","_setMoveStyle","$el","coordsValue","transform","$element","dummyAnchorClassName","phase","toValue","paddingTop","to","_getCoordsValue","focus","method","willChange","data","next","floor","axesInst","_panInput","PanInput","scale","hold","change","release","animationStart","animationEnd","connect","disableInput","$panel","DIRECTION_LEFT","DIRECTION_RIGHT","$first","querySelector","_getNumByDirection","_revertPanelNo","pointer","pointerEvents","preventSystemEvent","isMovable","currPos","axis","get","eventType","_getElement","physical","total","currentIndex","_setValueToMove","getIndex","getElement","getNextElement","getNextIndex","getAllElements","getPrevElement","getPrevIndex","isPlaying","_movePanelByPhase","durationValue","_moveTo","prev","noValue","isPositive","resize","removeAttribute","enableInput","enable","disable","getStatus","stringify","rxStyle","status","cssText","html","innerHTML","JSON","setStatus","statusValue","isAdaptiveHeight","parse","destroy","removeChild","$componentWillUnmount","plugin","p","filter","$componentWillMount","rebuild","eventHandler","consts","DIRECTION_NONE","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EChCA;;;EAEA,IAAAM,KAAA;;EAEA,IAAI,OAAA,MAAA,KAAJ,WAAA,EAAmC;;EAElCA,EAAAA,KAAG,GAAHA,EAAAA;EAFD,CAAA,MAGO;EACNA,EAAAA,KAAG,GAAHA,MAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}