UNPKG

57.4 kBJavaScriptView Raw
1/*
2Copyright (c) 2015-present NAVER Corp.
3name: @egjs/flicking
4license: MIT
5author: NAVER Corp.
6repository: https://github.com/naver/egjs-flicking
7version: 3.7.1
8*/
9!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@egjs/component"),require("@egjs/imready"),require("@egjs/axes")):"function"==typeof define&&define.amd?define(["@egjs/component","@egjs/imready","@egjs/axes"],t):((e=e||self).eg=e.eg||{},e.eg.Flicking=t(e.eg.Component,e.ImReady,e.eg.Axes))}(this,function(e,i,r){"use strict";var a=function(e,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function o(e,t){function n(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function m(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var i=Array(e),r=0,t=0;t<n;t++)for(var a=arguments[t],o=0,s=a.length;o<s;o++,r++)i[r]=a[o];return i}var c={SNAP:"snap",FREE_SCROLL:"freeScroll"},s={snap:{type:"snap",count:1},freeScroll:{type:"freeScroll"}},l="undefined"!=typeof document,v={classPrefix:"eg-flick",deceleration:.0075,horizontal:!0,circular:!1,infinite:!1,infiniteThreshold:0,lastIndex:1/0,threshold:40,duration:100,panelEffect:function(e){return 1-Math.pow(1-e,3)},defaultIndex:0,inputType:["touch","mouse"],thresholdAngle:45,bounce:10,autoResize:!1,adaptive:!1,zIndex:2e3,bound:!1,overflow:!1,hanger:"50%",anchor:"50%",gap:0,moveType:s.snap,useOffset:!1,isEqualSize:!1,isConstantSize:!1,renderOnlyVisible:!1,renderExternal:!1,resizeOnContentsReady:!1,iOSEdgeSwipeThreshold:30,collectStatistics:!0},h={position:"relative",zIndex:v.zIndex,overflow:"hidden"},u={width:"100%",height:"100%",willChange:"transform"},g={position:"absolute"},A={HOLD_START:"holdStart",HOLD_END:"holdEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",CHANGE:"change",RESTORE:"restore",SELECT:"select",NEED_PANEL:"needPanel",VISIBLE_CHANGE:"visibleChange",CONTENT_ERROR:"contentError"},f={HOLD:"hold",CHANGE:"change",RELEASE:"release",ANIMATION_END:"animationEnd",FINISH:"finish"},w=0,d=1,p=2,M=3,z=4,T={PREV:"PREV",NEXT:"NEXT"},t={prev:!0,next:!0,moveTo:!0,getIndex:!0,getAllPanels:!0,getCurrentPanel:!0,getElement:!0,getSize:!0,getPanel:!0,getPanelCount:!0,getStatus:!0,getVisiblePanels:!0,enableInput:!0,disableInput:!0,destroy:!0,resize:!0,setStatus:!0,isPlaying:!0},P=function(){var e={webkitTransform:"-webkit-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",OTransform:"-o-transform",transform:"transform"};if(!l)return{name:e.transform,has3d:!0};var t=document.documentElement.style,n="";for(var i in e)i in t&&(n=i);if(!n)throw new Error("Browser doesn't support CSS3 2D Transforms.");var r=document.createElement("div");document.documentElement.insertBefore(r,null),r.style[n]="translate3d(1px, 1px, 1px)";var a=window.getComputedStyle(r).getPropertyValue(e[n]);r.parentElement.removeChild(r);var o={name:n,has3d:0<a.length&&"none"!==a};return P=function(){return o},o},x=P();function E(i){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return e.forEach(function(n){Object.keys(n).forEach(function(e){var t=n[e];i[e]=t})}),i}function C(e){Array.isArray(e)||(e=[e]);var n=[];return e.forEach(function(e){if(S(e)){var t=document.createElement("div");for(t.innerHTML=e,n.push.apply(n,N(t.children));t.firstChild;)t.removeChild(t.firstChild)}else n.push(e)}),n}function S(e){return"string"==typeof e}function b(e,t){return e.classList?e.classList.contains(t):0<=e.className.split(" ").indexOf(t)}function y(t,n){Object.keys(n).forEach(function(e){t.style[e]=n[e]})}function I(e,t,n){return Math.max(Math.min(e,n),t)}function R(e,t,n){return t<=e&&e<=n}function N(e){return[].slice.call(e)}function O(e,t,n){var i=null!=n?n:t/2,r=/(?:(\+|\-)\s*)?(\d+(?:\.\d+)?(%|px)?)/g;if("number"==typeof e)return I(e,0,t);for(var a=0,o=0,s=r.exec(e);null!=s;){var l=s[1],h=s[2],c=s[3],u=parseFloat(h);if(a<=0&&(l=l||"+"),!l)return i;"%"===c&&(u=u/100*t),o+="+"===l?u:-u,++a,s=r.exec(e)}return 0===a?i:I(o,0,t)}function k(e,t){var n=t[0],i=t[1],r=t[2];return i<e&&r-i?(e-i)/(r-i):e<i&&i-n?(e-i)/(i-n):e!==i&&r-n?(e-n)/(r-n):0}function B(e,t){for(var n=0;n<e.length;n+=1){var i=e[n];if(i&&t(i))return n}return-1}function V(e){for(var t=[],n=0;n<e;n+=1)t[n]=n;return t}function H(e,t,n,i){var r=i?n-t+1:n-t;return e<t?e=n-(i?(t-e-1)%r:(t-e)%r):n<e&&(e=t+(i?(e-n-1)%r:(e-n)%r)),e}function L(e,t){t.className?e.setAttribute("class",t.className):e.removeAttribute("class"),t.style?e.setAttribute("style",t.style):e.removeAttribute("style")}function D(e,t){var n;return t?{x:0,y:0,width:e.offsetWidth,height:e.offsetHeight}:{x:(n=e.getBoundingClientRect()).left,y:n.top,width:n.width,height:n.height}}var _=function(){function l(e,t,n){this.viewport=n,this.prevSibling=null,this.nextSibling=null,this.clonedPanels=[],this.state={index:t,position:0,relativeAnchorPosition:0,size:0,isClone:!1,isVirtual:!1,cloneIndex:-1,originalStyle:{className:"",style:""},cachedBbox:null},this.setElement(e)}var e=l.prototype;return e.resize=function(e){var n=this.state,t=this.viewport.options,i=e||this.getBbox();this.state.cachedBbox=i;var r=n.size;n.size=t.horizontal?i.width:i.height,r!==n.size&&(n.relativeAnchorPosition=O(t.anchor,n.size)),n.isClone||this.clonedPanels.forEach(function(e){var t=e.state;t.size=n.size,t.cachedBbox=n.cachedBbox,t.relativeAnchorPosition=n.relativeAnchorPosition})},e.unCacheBbox=function(){this.state.cachedBbox=null},e.getProgress=function(){var e=this.viewport,t=e.options,n=e.panelManager.getPanelCount(),i=e.getScrollAreaSize();return(t.circular?Math.floor(this.getPosition()/i)*n:0)+this.getIndex()-e.getCurrentProgress()},e.getOutsetProgress=function(){var e=this.viewport,t=[-this.getSize(),e.getRelativeHangerPosition()-this.getRelativeAnchorPosition(),e.getSize()];return k(this.getPosition()-e.getCameraPosition(),t)},e.getVisibleRatio=function(){var e=this.viewport,t=this.getSize(),n=this.getPosition()-e.getCameraPosition(),i=n+t,r=Math.min(e.getSize(),i)-Math.max(n,0);return 0<=r?r/t:0},e.focus=function(e){var t,n=this.viewport,i=n.getCurrentPanel();n.getHangerPosition()!==this.getAnchorPosition()&&i&&(t=i.getPosition()===this.getPosition()?"":A.CHANGE,n.moveTo(this,n.findEstimatedPosition(this),t,null,e))},e.update=function(t,e){void 0===t&&(t=null),void 0===e&&(e=!0);var n=this.getIdenticalPanels();t&&n.forEach(function(e){t(e.getElement())}),e&&(n.forEach(function(e){e.unCacheBbox()}),this.viewport.addVisiblePanel(this),this.viewport.resize())},e.prev=function(){var e=this.viewport.options,t=this.prevSibling;if(!t)return null;var n=this.getIndex(),i=this.getPosition(),r=t.getIndex(),a=t.getPosition(),o=t.getSize(),s=1<n-r,l=e.infinite&&0<n&&n<r;if(s||l)return null;var h=i-o-e.gap,c=t;return a!==h&&(c=t.clone(t.getCloneIndex(),!0)).setPosition(h),c},e.next=function(){var e=this.viewport,t=e.options,n=this.nextSibling,i=e.panelManager.getLastIndex();if(!n)return null;var r=this.getIndex(),a=this.getPosition(),o=n.getIndex(),s=n.getPosition(),l=1<o-r,h=t.infinite&&r<i&&o<r;if(l||h)return null;var c=a+this.getSize()+t.gap,u=n;return s!==c&&(u=n.clone(n.getCloneIndex(),!0)).setPosition(c),u},e.insertBefore=function(e){var t=this.viewport,n=C(e),i=t.panelManager.firstPanel(),r=this.prevSibling,a=r&&i.getIndex()!==this.getIndex()?Math.max(r.getIndex()+1,this.getIndex()-n.length):Math.max(this.getIndex()-n.length,0);return t.insert(a,n)},e.insertAfter=function(e){return this.viewport.insert(this.getIndex()+1,e)},e.remove=function(){return this.viewport.remove(this.getIndex()),this},e.destroy=function(e){var t;for(var n in e.preserveUI||(t=this.state.originalStyle,L(this.element,t)),this)this[n]=null},e.getElement=function(){return this.element},e.getAnchorPosition=function(){return this.state.position+this.state.relativeAnchorPosition},e.getRelativeAnchorPosition=function(){return this.state.relativeAnchorPosition},e.getIndex=function(){return this.state.index},e.getPosition=function(){return this.state.position},e.getSize=function(){return this.state.size},e.getBbox=function(){var e,t,n=this.state,i=this.viewport,r=this.element,a=i.options;return r?n.cachedBbox||(e=Boolean(r.parentNode),t=i.getCameraElement(),e||(t.appendChild(r),i.addVisiblePanel(this)),n.cachedBbox=D(r,a.useOffset),!e&&i.options.renderExternal&&t.removeChild(r)):n.cachedBbox={x:0,y:0,width:0,height:0},n.cachedBbox},e.isClone=function(){return this.state.isClone},e.getOverlappedClass=function(e){for(var t=this.element,n=0,i=e;n<i.length;n++){var r=i[n];if(b(t,r))return r}},e.getCloneIndex=function(){return this.state.cloneIndex},e.getClonedPanels=function(){return this.state.isClone?this.original.getClonedPanels():this.clonedPanels},e.getIdenticalPanels=function(){return this.state.isClone?this.original.getIdenticalPanels():m([this],this.clonedPanels)},e.getOriginalPanel=function(){return this.state.isClone?this.original:this},e.setIndex=function(t){this.state.index=t,this.clonedPanels.forEach(function(e){return e.state.index=t})},e.setPosition=function(e){return this.state.position=e,this},e.setPositionCSS=function(e){var t,n,i,r,a,o;void 0===e&&(e=0),this.element&&(n=(t=this.state).position,i=this.viewport.options,r=this.element.style,a=i.horizontal?r.left:r.top,o=n-e+"px",t.isVirtual||a===o||(i.horizontal?r.left=o:r.top=o))},e.clone=function(e,t,n){void 0===t&&(t=!1);var i=this.state,r=this.viewport,a=n;!a&&this.element&&(a=t?this.element:this.element.cloneNode(!0));var o=new l(a,i.index,r),s=o.state;return o.original=i.isClone?this.original:this,s.isClone=!0,s.isVirtual=t,s.cloneIndex=e,s.size=i.size,s.relativeAnchorPosition=i.relativeAnchorPosition,s.originalStyle=i.originalStyle,s.cachedBbox=i.cachedBbox,t?(o.prevSibling=this.prevSibling,o.nextSibling=this.nextSibling):this.clonedPanels.push(o),o},e.removeElement=function(){var e;this.viewport.options.renderExternal||(e=this.element).parentNode&&e.parentNode.removeChild(e),this.state.isClone||this.removeClonedPanelsAfter(0)},e.removeClonedPanelsAfter=function(e){var t=this.viewport.options,n=this.clonedPanels.splice(e);t.renderExternal||n.forEach(function(e){e.removeElement()})},e.setElement=function(e){var t,n,i,r,a;!e||e!==(t=this.element)&&(n=this.viewport.options,t?n.horizontal?e.style.left=t.style.left:e.style.top=t.style.top:((i=this.state.originalStyle).className=e.getAttribute("class"),i.style=e.getAttribute("style")),this.element=e,n.classPrefix&&(r=e,a=n.classPrefix+"-panel",r.classList?r.classList.add(a):b(r,a)||(r.className=(r.className+" "+a).replace(/\s{2,}/g," "))),y(this.element,g))},l}(),F=function(){function e(e,t){this.cameraElement=e,this.panels=[],this.clones=[],this.range={min:-1,max:-1},this.length=0,this.cloneCount=0,this.options=t,this.lastIndex=t.lastIndex}var t=e.prototype;return t.firstPanel=function(){return this.panels[this.range.min]},t.lastPanel=function(){return this.panels[this.range.max]},t.allPanels=function(){return m(this.panels,this.clones.reduce(function(e,t){return m(e,t)},[]))},t.originalPanels=function(){return this.panels},t.clonedPanels=function(){return this.clones},t.replacePanels=function(e,t){this.panels=e,this.clones=t,this.range={min:B(e,function(e){return Boolean(e)}),max:e.length-1},this.length=e.filter(function(e){return Boolean(e)}).length},t.has=function(e){return!!this.panels[e]},t.get=function(e){return this.panels[e]},t.getPanelCount=function(){return this.length},t.getLastIndex=function(){return this.lastIndex},t.getRange=function(){return this.range},t.getCloneCount=function(){return this.cloneCount},t.setLastIndex=function(e){this.lastIndex=e;var t,n,i,r=this.firstPanel(),a=this.lastPanel();r&&a&&(t=this.range,a.getIndex()>e&&(n=this.panels.splice(e+1),this.length-=n.length,(i=n.filter(function(e){return!!e})[0].prevSibling)?t.max=i.getIndex():(t.min=-1,t.max=-1),this.shouldRender()&&n.forEach(function(e){return e.removeElement()})))},t.setCloneCount=function(e){this.cloneCount=e},t.insert=function(n,e){var i=this.panels,t=this.range,r=this.options.circular,a=this.lastIndex,o=this.findFirstPanelFrom(n),s=this.firstPanel(),l=o?o.getElement():r&&s?s.getClonedPanels()[0].getElement():null;this.insertNewPanels(e,l);var h,c,u,g,f,d,p=e.length;return n>t.max?e.forEach(function(e,t){i[n+t]=e}):((c=B(h=i.slice(n,n+e.length),function(e){return e}))<0&&(c=h.length),p=e.length-c,i.splice.apply(i,m([n,c],e)),i.length>a+1&&(u=i.splice(a+1).filter(function(e){return Boolean(e)}),this.length-=u.length,g=a-B(this.panels.concat().reverse(),function(e){return e}),this.panels.splice(1+g),this.range.max=g,this.shouldRender()&&u.forEach(function(e){return e.removeElement()}))),0<p&&i.slice(n+e.length).forEach(function(e){e.setIndex(e.getIndex()+p)}),this.length+=e.length,this.updateIndex(n),r&&(this.addNewClones(n,e,e.length-p,o),f=this.clones,d=this.panels.length,f[0]&&f[0].length>a+1&&f.forEach(function(e){e.splice(d)})),p},t.replace=function(e,t){var n=this.panels,i=this.range,r=this.options.circular,a=this.findFirstPanelFrom(e+t.length),o=this.firstPanel(),s=a?a.getElement():r&&o?o.getClonedPanels()[0].getElement():null;this.insertNewPanels(t,s),e>i.max&&(n[e]=null);var l=n.splice.apply(n,m([e,t.length],t)),h=l.filter(function(e){return Boolean(e)}).length;return this.length+=t.length-h,this.updateIndex(e),r&&this.addNewClones(e,t,t.length,a),this.shouldRender()&&l.forEach(function(e){return e&&e.removeElement()}),l},t.remove=function(t,n){void 0===n&&(n=1);var e=this.options.circular,i=this.panels,r=this.clones;n=Math.max(n,0);var a=i.splice(t,n).filter(function(e){return!!e});this.shouldRender()&&a.forEach(function(e){return e.removeElement()}),e&&r.forEach(function(e){e.splice(t,n)}),i.slice(t).forEach(function(e){e.setIndex(e.getIndex()-n)});var o,s=i.length-1;return i[s]||(o=B(i.concat().reverse(),function(e){return e}),s=o<0?-1:s-o,i.splice(s+1),e&&r.forEach(function(e){e.splice(s+1)})),this.range={min:B(i,function(e){return e}),max:s},this.length-=a.length,this.length<=0&&(this.clones=[],this.cloneCount=0),a},t.chainAllPanels=function(){var e,t,r=this.allPanels().filter(function(e){return!!e}),n=r.length;n<=1||(r.slice(1,r.length-1).forEach(function(e,t){var n=r[t],i=r[t+2];e.prevSibling=n,e.nextSibling=i}),e=r[0],t=r[n-1],e.prevSibling=null,e.nextSibling=r[1],t.prevSibling=r[n-2],t.nextSibling=null,this.options.circular&&((e.prevSibling=t).nextSibling=e))},t.insertClones=function(e,n,t,i){void 0===i&&(i=0);var r,a,o=this.clones,s=this.lastIndex;o[e]?(r=o[e],n>=r.length?t.forEach(function(e,t){r[n+t]=e}):(r.splice.apply(r,m([n,i],t)),t.length>s+1&&t.splice(s+1))):(a=[],t.forEach(function(e,t){a[n+t]=e}),o[e]=a)},t.removeClonesAfter=function(t){this.panels.forEach(function(e){e.removeClonedPanelsAfter(t)}),this.clones.splice(t)},t.findPanelOf=function(e){for(var t=0,n=this.allPanels();t<n.length;t++){var i=n[t];if(i)if(i.getElement().contains(e))return i}},t.findFirstPanelFrom=function(e){for(var t=0,n=this.panels.slice(e);t<n.length;t++){var i=n[t];if(i&&i.getIndex()>=e&&i.getElement().parentNode)return i}},t.addNewClones=function(a,o,s,e){for(var l=this,h=this.cameraElement,t=this.getCloneCount(),n=this.lastPanel(),c=n?n.getClonedPanels():[],u=e?e.getClonedPanels():[],g=this,i=0,r=V(t);i<r.length;i++){!function(n){var e=u[n],t=c[n],i=e?e.getElement():t?t.getElement().nextElementSibling:null,r=o.map(function(e){var t=e.clone(n);return l.shouldRender()&&h.insertBefore(t.getElement(),i),t});g.insertClones(n,a,r,s)}(r[i])}},t.updateIndex=function(e){var t=this.panels,n=this.range,i=t.length-1;i>n.max&&(n.max=i),(e<n.min||n.min<0)&&(n.min=e)},t.insertNewPanels=function(e,t){var n;this.shouldRender()&&(n=document.createDocumentFragment(),e.forEach(function(e){return n.appendChild(e.getElement())}),this.cameraElement.insertBefore(n,t))},t.shouldRender=function(){var e=this.options;return!e.renderExternal&&!e.renderOnlyVisible},e}(),n=function(){function e(){this.delta=0,this.direction=null,this.targetPanel=null,this.lastPosition=0}var t=e.prototype;return t.onEnter=function(e){this.delta=e.delta,this.direction=e.direction,this.targetPanel=e.targetPanel,this.lastPosition=e.lastPosition},t.onExit=function(e){},t.onHold=function(e,t){},t.onChange=function(e,t){},t.onRelease=function(e,t){},t.onAnimationEnd=function(e,t){},t.onFinish=function(e,t){},e}(),G=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=w,e.holding=!1,e.playing=!1,e}o(e,t);var n=e.prototype;return n.onEnter=function(){this.direction=null,this.targetPanel=null,this.delta=0,this.lastPosition=0},n.onHold=function(e,t){var n=t.flicking,i=t.viewport,r=t.triggerEvent,a=t.transitTo;if(n.getPanelCount()<=0)return i.options.infinite&&i.moveCamera(i.getCameraPosition(),e),void a(z);this.lastPosition=i.getCameraPosition(),r(A.HOLD_START,e,!0).onSuccess(function(){a(d)}).onStopped(function(){a(z)})},n.onChange=function(e,t){var n=t.triggerEvent,i=t.transitTo;n(A.MOVE_START,e,!1).onSuccess(function(){i(M).onChange(e,t)}).onStopped(function(){i(z)})},e}(n),X=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=d,e.holding=!0,e.playing=!0,e.releaseEvent=null,e}o(e,t);var n=e.prototype;return n.onChange=function(e,t){var n=t.flicking,i=t.triggerEvent,r=t.transitTo,a=n.options.horizontal?e.inputEvent.offsetX:e.inputEvent.offsetY;this.direction=a<0?T.NEXT:T.PREV,i(A.MOVE_START,e,!0).onSuccess(function(){r(p).onChange(e,t)}).onStopped(function(){r(z)})},n.onRelease=function(e,t){var n=t.viewport,i=t.triggerEvent,r=t.transitTo;if(i(A.HOLD_END,e,!0),0!==e.delta.flick)return e.setTo({flick:n.getCameraPosition()},0),void r(w);this.releaseEvent=e},n.onFinish=function(e,t){var n,i,r,a,o,s,l=t.viewport,h=t.triggerEvent;(0,t.transitTo)(w),this.releaseEvent&&(r="touchend"===(n=this.releaseEvent.inputEvent.srcEvent).type?(i=n.changedTouches[0],document.elementFromPoint(i.clientX,i.clientY)):n.target,a=l.panelManager.findPanelOf(r),o=l.getCameraPosition(),a&&(s=a.getPosition(),h(A.SELECT,null,!0,{direction:o<s?T.NEXT:s<o?T.PREV:null,index:a.getIndex(),panel:a})))},e}(n),j=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=p,e.holding=!0,e.playing=!0,e}o(e,t);var n=e.prototype;return n.onChange=function(e,t){var n=t.moveCamera,i=t.transitTo;e.delta.flick&&n(e).onStopped(function(){i(z)})},n.onRelease=function(e,t){var n=t.flicking,i=t.viewport,r=t.triggerEvent,a=t.transitTo,o=t.stopCamera,s=this.delta,l=Math.abs(s),h=n.options,c=h.horizontal,u=i.moveType,g=e.inputEvent,f=c?g.velocityX:g.velocityY,d=c?g.deltaX:g.deltaY,p=1<Math.abs(f)?f<0:0<l?0<s:d<0,v=i.options.bound?Math.max(l,Math.abs(d)):l,P=g.deltaX?Math.abs(180*Math.atan(g.deltaY/g.deltaX)/Math.PI):90,m=c?P<=h.thresholdAngle:P>h.thresholdAngle,x=v>=h.threshold&&m,E={viewport:i,axesEvent:e,state:this,swipeDistance:v,isNextDirection:p};r(A.HOLD_END,e,!0);var C=this.targetPanel;if(!x&&C){var S=u.findPanelWhenInterrupted(E);return i.moveTo(S.panel,S.destPos,S.eventType,e,S.duration),void a(M)}var b=i.getCurrentPanel(),y=i.getNearestPanel();if(!b||!y)return e.stop(),void a(w);var I=x?u.findTargetPanel(E):u.findRestorePanel(E);i.moveTo(I.panel,I.destPos,I.eventType,e,I.duration).onSuccess(function(){a(M)}).onStopped(function(){a(z),o(e)})},e}(n),q=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=M,e.holding=!1,e.playing=!0,e}o(e,t);var n=e.prototype;return n.onHold=function(e,t){var n,i,r,a,o,s=t.viewport,l=t.triggerEvent,h=t.transitTo,c=s.options,u=s.getScrollArea(),g=s.getScrollAreaSize(),f=Math.floor((this.lastPosition+this.delta-u.prev)/g),d=this.targetPanel;c.circular&&0!==f&&d&&(n=s.panelManager.getCloneCount(),i=d.getPosition(),r=H(d.getCloneIndex()-f,-1,n-1,!0),a=i-f*g,(o=d.getIdenticalPanels()[r+1].clone(r,!0)).setPosition(a),this.targetPanel=o),this.delta=0,this.lastPosition=s.getCameraPosition(),s.setCurrentPanel(s.getNearestPanel()),l(A.HOLD_START,e,!0).onSuccess(function(){h(p)}).onStopped(function(){h(z)})},n.onChange=function(e,t){var n=t.moveCamera,i=t.transitTo;e.delta.flick&&n(e).onStopped(function(){i(z)})},n.onFinish=function(e,t){var n=t.flicking,i=t.viewport,r=t.triggerEvent,a=t.transitTo,o=e&&e.isTrusted;i.options.bound?i.setCurrentPanel(this.targetPanel):i.setCurrentPanel(i.getNearestPanel()),n.options.adaptive&&i.updateAdaptiveSize(),a(w),i.updateCameraPosition(),r(A.MOVE_END,e,o,{direction:this.direction})},e}(n),Y=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=z,e.holding=!1,e.playing=!0,e}o(e,t);var n=e.prototype;return n.onAnimationEnd=function(e,t){(0,t.transitTo)(w)},n.onChange=function(e,t){var n=t.viewport,i=t.transitTo;e.stop(),n.updateAxesPosition(n.getCameraPosition()),i(w)},n.onRelease=function(e,t){var n=t.transitTo;0===e.delta.flick&&n(w)},e}(n),U=function(){function e(){var i=this;this.state=new G,this.transitTo=function(e){var t=i.state;if(t.type!==e){var n=void 0;switch(e){case w:n=new G;break;case d:n=new X;break;case p:n=new j;break;case M:n=new q;break;case z:n=new Y}t.onExit(n),n.onEnter(t),i.state=n}return i.state}}var t=e.prototype;return t.fire=function(e,t,n){var i=this.state;switch(e){case f.HOLD:i.onHold(t,n);break;case f.CHANGE:i.onChange(t,n);break;case f.RELEASE:i.onRelease(t,n);break;case f.ANIMATION_END:i.onAnimationEnd(t,n);break;case f.FINISH:i.onFinish(t,n)}},t.getState=function(){return this.state},e}(),W=function(n){function e(e){var t=n.call(this)||this;return t.type=c.SNAP,t.count=e,t}o(e,n);var t=e.prototype;return t.findTargetPanel=function(e){var t=e.viewport,n=e.axesEvent,i=e.swipeDistance,r=this.count,a=Math.abs(n.delta.flick),o=t.getCurrentPanel(),s=t.getNearestPanel(),l=this.calcBrinkOfChange(e),h=s.getIndex()===o.getIndex(),c=t.canSetBoundMode()&&h,u=!t.isOutOfBound()&&(i<=l||c);return 1<r&&l<a?this.findSnappedPanel(e):u?this.findAdjacentPanel(e):{panel:s,duration:t.options.duration,destPos:t.findEstimatedPosition(s),eventType:i<=l||t.isOutOfBound()&&h?A.RESTORE:A.CHANGE}},t.findSnappedPanel=function(e){for(var t=e.axesEvent,n=e.viewport,i=e.state,r=e.isNextDirection,a=Math.abs(t.delta.flick),o=this.calcBrinkOfChange(e),s=this.count,l=n.options,h=n.getScrollAreaSize(),c=l.gap/2,u=t.destPos.flick+n.getRelativeHangerPosition(),g=n.getNearestPanel(),f=g.getCloneIndex()+1,d=0;d<s;){var p=g.getOriginalPanel(),v=p.getPosition()+f*h,P=p.getSize();if(r&&u<v+P+c||!r&&v-c<u)break;var m=r?g.nextSibling:g.prevSibling;if(!m)break;var x=g.getIndex(),E=m.getIndex();(r&&E<=x||!r&&x<=E)&&(f=r?f+1:f-1),g=m,d+=1}var C=g.getOriginalPanel().getPosition();0!==f&&(g=g.clone(g.getCloneIndex(),!0)).setPosition(C+f*h);var S=n.options.duration,b=I(t.duration,S,S*d);return{panel:g,destPos:n.findEstimatedPosition(g),duration:b,eventType:Math.max(a,i.delta)>o?A.CHANGE:A.RESTORE}},t.findAdjacentPanel=function(e){var t=e.viewport,n=e.isNextDirection,i=t.options,r=t.getCurrentIndex(),a=t.panelManager.get(r),o=t.getHangerPosition(),s=t.getScrollArea(),l=a.getIdenticalPanels()[1],h=i.circular&&Math.abs(a.getAnchorPosition()-o)>Math.abs(l.getAnchorPosition()-o)?l:a,c=h.getPosition(),u=n?h.nextSibling:h.prevSibling,g=u?A.CHANGE:A.RESTORE,f=u||h,d=f.getRelativeAnchorPosition(),p=(i.circular?n?c+h.getSize()+d+i.gap:c-(f.getSize()-d)-i.gap:f.getAnchorPosition())-t.getRelativeHangerPosition();return{panel:f,destPos:t.canSetBoundMode()?I(p,s.prev,s.next):p,duration:i.duration,eventType:g}},e}(function(){function e(){}var t=e.prototype;return t.is=function(e){return e===this.type},t.findRestorePanel=function(e){var t=e.viewport,n=t.options,i=n.circular?this.findRestorePanelInCircularMode(e):t.getCurrentPanel();return{panel:i,destPos:t.findEstimatedPosition(i),duration:n.duration,eventType:A.RESTORE}},t.findPanelWhenInterrupted=function(e){var t=e.state,n=e.viewport,i=t.targetPanel;return{panel:i,destPos:n.findEstimatedPosition(i),duration:n.options.duration,eventType:""}},t.calcBrinkOfChange=function(e){var t=e.viewport,n=e.isNextDirection,i=t.options,r=t.getCurrentPanel(),a=i.gap/2,o=r.getRelativeAnchorPosition(),s=n?r.getSize()-o+a:o+a;return s=Math.max(s,i.threshold)},t.findRestorePanelInCircularMode=function(e){var t=e.viewport,n=t.getCurrentPanel().getOriginalPanel(),i=t.getHangerPosition(),r=n.getIdenticalPanels()[1],a=Math.abs(n.getAnchorPosition()-i)>Math.abs(r.getAnchorPosition()-i);return!e.isNextDirection&&a?r:n},e}()),J=function(u){function e(){var e=u.call(this,1/0)||this;return e.type=c.FREE_SCROLL,e}o(e,u);var t=e.prototype;return t.findTargetPanel=function(e){var t=e.axesEvent,n=e.state,i=e.viewport,r=t.destPos.flick,a=this.calcBrinkOfChange(e),o=i.getScrollArea(),s=i.getCurrentPanel(),l=i.options;if(a<Math.abs(t.delta.flick+n.delta)){var h=u.prototype.findSnappedPanel.call(this,e);return h.duration=t.duration,h.destPos=r,h.eventType=l.circular||h.panel!==s?A.CHANGE:"",h}var c=I(c=l.circular?H(r,o.prev,o.next,!1):r,o.prev,o.next);return c+=i.getRelativeHangerPosition(),{panel:i.findNearestPanelAt(c),destPos:r,duration:t.duration,eventType:""}},t.findRestorePanel=function(e){return this.findTargetPanel(e)},t.findPanelWhenInterrupted=function(e){var t=e.viewport;return{panel:t.getNearestPanel(),destPos:t.getCameraPosition(),duration:0,eventType:""}},t.calcBrinkOfChange=function(e){var t=e.viewport,n=e.isNextDirection,i=t.options,r=t.getCurrentPanel(),a=i.gap/2,o=t.stateMachine.getState().lastPosition,s=r.getPosition(),l=o+t.getRelativeHangerPosition(),h=t.getScrollAreaSize(),c=n?s+r.getSize()-l+a:l-s+a,c=Math.abs(c%h);return Math.min(c,h-c)},e}(W),K=function(){function e(e,t,n){var i=this;this.plugins=[],this.stopCamera=function(e){e&&e.setTo&&e.setTo({flick:i.state.position},0),i.stateMachine.transitTo(w)},this.flicking=e,this.triggerEvent=n,this.state={size:0,position:0,panelMaintainRatio:0,relativeHangerPosition:0,positionOffset:0,scrollArea:{prev:0,next:0},translate:x,infiniteThreshold:0,checkedIndexes:[],isAdaptiveCached:!1,isViewportGiven:!1,isCameraGiven:!1,originalViewportStyle:{className:null,style:null},originalCameraStyle:{className:null,style:null},cachedBbox:null},this.options=t,this.stateMachine=new U,this.visiblePanels=[],this.panelBboxes={},this.build()}var t=e.prototype;return t.moveTo=function(e,t,n,i,r){var a=this;void 0===r&&(r=this.options.duration);var o=this.state,s=this.stateMachine.getState(),l=o.position,h=!!i&&i.isTrusted,c=t===l?null:l<t?T.NEXT:T.PREV,u=n===A.CHANGE?this.triggerEvent(A.CHANGE,i,h,{index:e.getIndex(),panel:e,direction:c}):n===A.RESTORE?this.triggerEvent(A.RESTORE,i,h):{onSuccess:function(e){return e(),this},onStopped:function(){return this}};return u.onSuccess(function(){s.delta=0,s.lastPosition=a.getCameraPosition(),s.targetPanel=e,s.direction=t===l?null:l<t?T.NEXT:T.PREV,t===l&&(a.nearestPanel=e,a.currentPanel=e),i&&i.setTo?i.setTo({flick:t},r):a.axes.setTo({flick:t},r)}),u},t.moveCamera=function(e,t){var n=this.state,i=this.options,r=n.translate.name,a=n.scrollArea;i.circular&&!R(e,a.prev,a.next)&&(e=H(e,a.prev,a.next,!1)),n.position=e,this.nearestPanel=this.findNearestPanel();var o,s,l,h,c=this.nearestPanel,u=c?c.getPosition():0;c?(o=this.getHangerPosition(),s=c.getPosition(),l=c.getSize(),h=i.gap/2,n.panelMaintainRatio=(o-s+h)/(l+2*h)):n.panelMaintainRatio=0,this.checkNeedPanel(t),e+=(c?c.getPosition():0)-u,n.position=e,this.updateVisiblePanels();var g=i.renderOnlyVisible?n.positionOffset:0,f=(i.horizontal?[-(e-g),0]:[0,-(e-g)]).map(function(e){return Math.round(e)+"px"}).join(", ");this.cameraElement.style[r]=n.translate.has3d?"translate3d("+f+", 0px)":"translate("+f+")"},t.unCacheBbox=function(){var e=this.state,t=this.options;e.cachedBbox=null,this.visiblePanels=[];var n=this.viewportElement;t.horizontal?n.style.height="":n.style.width="",e.isAdaptiveCached=!1,this.panelBboxes={}},t.resize=function(){this.updateSize(),this.updateOriginalPanelPositions(),this.updateAdaptiveSize(),this.updateScrollArea(),this.updateClonePanels(),this.updateVisiblePanelPositions(),this.updateCameraPosition(),this.updatePlugins()},t.findNearestPanel=function(){var e=this.state,t=this.panelManager,n=this.getHangerPosition();return this.isOutOfBound()?e.position<=e.scrollArea.prev?t.firstPanel():t.lastPanel():this.findNearestPanelAt(n)},t.findNearestPanelAt=function(e){for(var t,n=1/0,i=0,r=this.panelManager.allPanels();i<r.length;i++){var a=r[i];if(a){var o=a.getPosition(),s=o+a.getSize(),l=R(e,o,s)?0:Math.min(Math.abs(o-e),Math.abs(s-e));if(n<l)break;if(l===n&&Math.abs(e-t.getAnchorPosition())<Math.abs(e-a.getAnchorPosition()))break;n=l,t=a}}return t},t.findNearestIdenticalPanel=function(e){var i=e,r=1/0,a=this.getHangerPosition();return e.getIdenticalPanels().forEach(function(e){var t=e.getAnchorPosition(),n=Math.abs(t-a);n<r&&(i=e,r=n)}),i},t.findShortestPositionToPanel=function(e){var t=this.state,n=this.options,i=e.getAnchorPosition(),r=this.getHangerPosition(),a=Math.abs(r-i),o=t.scrollArea.next-t.scrollArea.prev;if(n.circular)return a<=o-a?i-t.relativeHangerPosition:r<i?i-t.relativeHangerPosition-o:i-t.relativeHangerPosition+o;var s=i-t.relativeHangerPosition;return this.canSetBoundMode()?I(s,t.scrollArea.prev,t.scrollArea.next):s},t.findEstimatedPosition=function(e){var t=this.getScrollArea(),n=e.getAnchorPosition()-this.getRelativeHangerPosition();return n=this.canSetBoundMode()?I(n,t.prev,t.next):n},t.addVisiblePanel=function(e){this.getVisibleIndexOf(e)<0&&this.visiblePanels.push(e)},t.enable=function(){this.panInput||this.createPanInput()},t.disable=function(){this.panInput&&(this.panInput.destroy(),this.panInput=null,this.stateMachine.transitTo(w))},t.insert=function(r,e){var n=this,t=this.panelManager.getLastIndex();if(r<0||t<r)return[];var a=this.state,i=this.options,o=C(e).map(function(e,t){return new _(e,r+t,n)}).slice(0,t-r+1);if(o.length<=0)return[];var s,l,h=this.panelManager.insert(r,o);return this.resizePanels(o),this.currentPanel||(this.currentPanel=o[0],this.nearestPanel=o[0],s=o[0],l=this.findEstimatedPosition(s),a.position=l,this.updateAxesPosition(l),a.panelMaintainRatio=(s.getRelativeAnchorPosition()+i.gap/2)/(s.getSize()+i.gap)),this.updateCheckedIndexes({min:r,max:r}),a.checkedIndexes.forEach(function(e,t){var n=e[0],i=e[1];r<n&&a.checkedIndexes.splice(t,1,[n+h,i+h])}),this.resize(),o},t.replace=function(n,e){var i=this,t=this.state,r=this.options,a=this.panelManager,o=a.getLastIndex();if(n<0||o<n)return[];var s=C(e).map(function(e,t){return new _(e,n+t,i)}).slice(0,o-n+1);if(s.length<=0)return[];a.replace(n,s).forEach(function(e){var t=i.getVisibleIndexOf(e);-1<t&&i.visiblePanels.splice(t,1)}),this.resizePanels(s);var l,h,c=this.currentPanel;return!c?(this.currentPanel=s[0],this.nearestPanel=s[0],l=s[0],h=this.findEstimatedPosition(l),t.position=h,this.updateAxesPosition(h),t.panelMaintainRatio=(l.getRelativeAnchorPosition()+r.gap/2)/(l.getSize()+r.gap)):R(c.getIndex(),n,n+s.length-1)&&(this.currentPanel=a.get(c.getIndex())),this.updateCheckedIndexes({min:n,max:n+s.length-1}),this.resize(),s},t.remove=function(e,t){void 0===t&&(t=1);var n=this.state;e=Math.max(e,0);var i,r=this.panelManager,a=this.getCurrentIndex(),o=r.remove(e,t);R(a,e,e+t-1)&&(i=Math.max(e-1,r.getRange().min),this.currentPanel=r.get(i)),0<t&&(this.updateCheckedIndexes({min:e-1,max:e+t}),this.visiblePanels=[]),r.getPanelCount()<=0&&(this.currentPanel=void 0,this.nearestPanel=void 0),this.resize();var s,l=n.scrollArea;return(n.position<l.prev||n.position>l.next)&&(s=H(n.position,l.prev,l.next,!1),this.moveCamera(s),this.updateAxesPosition(s)),o},t.updateAdaptiveSize=function(){var e,t,n,i,r,a,o=this.state,s=this.options,l=s.horizontal,h=this.getCurrentPanel();h&&(e=s.adaptive||!o.isAdaptiveCached,t=this.viewportElement.style,e&&(i=void 0,i=s.adaptive?(n=h.getBbox(),l?n.height:n.width):this.panelManager.originalPanels().reduce(function(e,t){var n=t.getBbox();return Math.max(e,l?n.height:n.width)},0),o.isAdaptiveCached||(r=this.updateBbox(),i=Math.max(i,l?r.height:r.width),o.isAdaptiveCached=!0),a=i+"px",l?(t.height=a,o.cachedBbox.height=i):(t.width=a,o.cachedBbox.width=i)))},t.updateCameraPosition=function(){var e,t,n,i=this.state,r=this.getCurrentPanel(),a=this.getCameraPosition(),o=this.stateMachine.getState(),s=this.moveType.is(c.FREE_SCROLL),l=this.getRelativeHangerPosition(),h=this.options.gap/2;o.holding||o.playing?this.updateVisiblePanels():(n=s?(e=this.canSetBoundMode()&&(a===i.scrollArea.prev||a===i.scrollArea.next),t=this.getNearestPanel(),e||!t?a:t.getPosition()-h+(t.getSize()+2*h)*i.panelMaintainRatio-l):r?r.getAnchorPosition()-l:a,this.canSetBoundMode()&&(n=I(n,i.scrollArea.prev,i.scrollArea.next)),this.updateAxesPosition(n),this.moveCamera(n))},t.updateBbox=function(){var e=this.state,t=this.options,n=this.viewportElement;return e.cachedBbox||(e.cachedBbox=D(n,t.useOffset)),e.cachedBbox},t.updatePlugins=function(){var t=this;this.plugins.forEach(function(e){e.update&&e.update(t.flicking)})},t.destroy=function(t){var e,n,i,r=this.state,a=this.flicking.getElement(),o=this.viewportElement,s=this.cameraElement,l=this.panelManager.originalPanels();for(var h in this.removePlugins(this.plugins),t.preserveUI||(L(o,r.originalViewportStyle),L(s,r.originalCameraStyle),r.isCameraGiven||this.options.renderExternal||(n=r.isViewportGiven?o:a,i=r.isViewportGiven?s:o,l.forEach(function(e){n.appendChild(e.getElement())}),n.removeChild(i))),this.axes.destroy(),null!==(e=this.panInput)&&void 0!==e&&e.destroy(),l.forEach(function(e){e.destroy(t)}),this)this[h]=null},t.restore=function(e){var t=e.panels,n=this.options.defaultIndex,i=this.cameraElement,r=this.panelManager;i.innerHTML=t.map(function(e){return e.html}).join(""),this.refreshPanels();var a=r.originalPanels(),o=[];t.forEach(function(e,t){var n=a[t];n.setIndex(e.index),o[e.index]=n}),r.replacePanels(o,[]),r.setCloneCount(0),0<r.getPanelCount()?(this.currentPanel=r.get(e.index)||r.get(n)||r.firstPanel(),this.nearestPanel=this.currentPanel):(this.currentPanel=void 0,this.nearestPanel=void 0),this.visiblePanels=o.filter(function(e){return Boolean(e)}),this.resize(),this.axes.setTo({flick:e.position},0),this.moveCamera(e.position)},t.calcVisiblePanels=function(){var e=this.panelManager.allPanels();if(this.options.renderOnlyVisible){var t=this.getCameraPosition(),n=this.getSize(),i=this.nearestPanel,r=function(e,t,n){for(var i=[],r=e;;){var a=t(r);if(!a||n(a))break;i.push(a),r=a}return i},a=this.panelManager.getPanelCount(),o=function(e){return e.getIndex()+(e.getCloneIndex()+1)*a};return m([i],r(i,function(e){var t=e.nextSibling;return t&&t.getPosition()>=e.getPosition()?t:null},function(e){return e.getPosition()>=t+n}),r(i,function(e){var t=e.prevSibling;return t&&t.getPosition()<=e.getPosition()?t:null},function(e){return e.getPosition()+e.getSize()<=t})).sort(function(e,t){return o(e)-o(t)})}return e.filter(function(e){var t=e.getOutsetProgress();return-1<t&&t<1})},t.getCurrentPanel=function(){return this.currentPanel},t.getCurrentIndex=function(){var e=this.currentPanel;return e?e.getIndex():-1},t.getNearestPanel=function(){return this.nearestPanel},t.getCurrentProgress=function(){var e=this.stateMachine.getState(),t=e.playing||e.holding?this.nearestPanel:this.currentPanel,n=this.panelManager;if(!t)return NaN;var i=this.getScrollArea(),r=i.prev,a=i.next,o=this.getCameraPosition(),s=this.isOutOfBound(),l=t.prevSibling,h=t.nextSibling,c=this.getHangerPosition(),u=t.getAnchorPosition();s&&l&&h&&o<a&&c-l.getAnchorPosition()<u-c&&(h=(t=l).nextSibling,l=t.prevSibling,u=t.getAnchorPosition());var g,f=t.getIndex()+(t.getCloneIndex()+1)*n.getPanelCount(),d=t.getSize();s&&(a+(g=this.getRelativeHangerPosition())<u?c=u+c-g-a:u<r+g&&(c=u+c-g-r));var p=u<=c,v=this.options.gap,P=u,m=u;p?m=h?h.getAnchorPosition():u+d+v:P=l?l.getAnchorPosition():u-d-v;var x=(c-P)/(m-P);return(p?f:l?l.getIndex():f-1)+x},t.updateAxesPosition=function(e){var t=this.axes;t.off(),t.setTo({flick:e},0),t.on(this.axesHandlers)},t.getSize=function(){return this.state.size},t.getScrollArea=function(){return this.state.scrollArea},t.isOutOfBound=function(){var e=this.state,t=this.options,n=e.scrollArea;return!t.circular&&t.bound&&(e.position<=n.prev||e.position>=n.next)},t.canSetBoundMode=function(){var e=this.options;return e.bound&&!e.circular},t.getViewportElement=function(){return this.viewportElement},t.getCameraElement=function(){return this.cameraElement},t.getScrollAreaSize=function(){var e=this.state.scrollArea;return e.next-e.prev},t.getRelativeHangerPosition=function(){return this.state.relativeHangerPosition},t.getHangerPosition=function(){return this.state.position+this.state.relativeHangerPosition},t.getCameraPosition=function(){return this.state.position},t.getPositionOffset=function(){return this.state.positionOffset},t.getCheckedIndexes=function(){return this.state.checkedIndexes},t.getVisiblePanels=function(){return this.visiblePanels},t.setCurrentPanel=function(e){this.currentPanel=e},t.setLastIndex=function(e){var t=this.currentPanel,n=this.panelManager;n.setLastIndex(e),t&&t.getIndex()>e&&(this.currentPanel=n.lastPanel()),this.resize()},t.setVisiblePanels=function(e){this.visiblePanels=e},t.connectAxesHandler=function(e){var t=this.axes;this.axesHandlers=e,t.on(e)},t.addPlugins=function(e){var t=this,n=[].concat(e);return n.forEach(function(e){e.init(t.flicking)}),this.plugins=this.plugins.concat(n),this},t.removePlugins=function(e){var n=this,i=this.plugins;return[].concat(e).forEach(function(e){var t=i.indexOf(e);-1<t&&i.splice(t,1),e.destroy(n.flicking)}),this},t.updateCheckedIndexes=function(r){var a=this.state,o=0;a.checkedIndexes.concat().forEach(function(e,t){var n=e[0],i=e[1];r.min<=i&&r.max>=n&&(a.checkedIndexes.splice(t-o,1),o++)})},t.appendUncachedPanelElements=function(e){var t,n,i,r=this,a=this.options,o=document.createDocumentFragment();a.isEqualSize?(t=this.visiblePanels,n=a.isEqualSize,i={},this.visiblePanels=[],Object.keys(this.panelBboxes).forEach(function(e){i[e]=!0}),e.forEach(function(e){var t=e.getOverlappedClass(n);t&&!i[t]?(a.renderExternal||o.appendChild(e.getElement()),r.visiblePanels.push(e),i[t]=!0):t||(a.renderExternal||o.appendChild(e.getElement()),r.visiblePanels.push(e))}),t.forEach(function(e){r.addVisiblePanel(e)})):(a.renderExternal||e.forEach(function(e){return o.appendChild(e.getElement())}),this.visiblePanels=e.filter(function(e){return Boolean(e)})),a.renderExternal||this.cameraElement.appendChild(o)},t.updateClonePanels=function(){var e=this.panelManager;this.options.circular&&0<e.getPanelCount()&&(this.clonePanels(),this.updateClonedPanelPositions()),e.chainAllPanels()},t.getVisibleIndexOf=function(t){return B(this.visiblePanels,function(e){return e===t})},t.build=function(){this.setElements(),this.applyCSSValue(),this.setMoveType(),this.setAxesInstance(),this.refreshPanels(),this.setDefaultPanel(),this.resize(),this.moveToDefaultPanel()},t.setElements=function(){var e=this.state,t=this.options,n=this.flicking.getElement(),i=t.classPrefix,r=n.children[0],a=r&&b(r,i+"-viewport"),o=a?r:document.createElement("div"),s=a?o.children[0]:n.children[0],l=s&&b(s,i+"-camera"),h=l?s:document.createElement("div");l?e.originalCameraStyle={className:h.getAttribute("class"),style:h.getAttribute("style")}:(h.className=i+"-camera",N(a?o.children:n.children).forEach(function(e){h.appendChild(e)})),a?e.originalViewportStyle={className:o.getAttribute("class"),style:o.getAttribute("style")}:(o.className=i+"-viewport",n.appendChild(o)),l&&a||o.appendChild(h),this.viewportElement=o,this.cameraElement=h,e.isViewportGiven=a,e.isCameraGiven=l},t.applyCSSValue=function(){var e=this.options,t=this.viewportElement,n=this.cameraElement,i=this.viewportElement.style;y(t,h),y(n,u),t.style.zIndex=""+e.zIndex,e.horizontal?(i.minHeight="100%",i.width="100%"):(i.minWidth="100%",i.height="100%"),e.overflow&&(i.overflow="visible"),this.panelManager=new F(this.cameraElement,e)},t.setMoveType=function(){var e=this.options.moveType;switch(e.type){case c.SNAP:this.moveType=new W(e.count);break;case c.FREE_SCROLL:this.moveType=new J;break;default:throw new Error("moveType is not correct!")}},t.setAxesInstance=function(){var e=this.state,t=this.options,n=e.scrollArea;this.axes=new r({flick:{range:[n.prev,n.next],circular:t.circular,bounce:[0,0]}},{easing:t.panelEffect,deceleration:t.deceleration,interruptable:!0}),this.createPanInput()},t.refreshPanels=function(){var n=this,e=this.panelManager,t=N(this.cameraElement.children).map(function(e,t){return new _(e,t,n)});e.replacePanels(t,[]),this.visiblePanels=t.filter(function(e){return Boolean(e)})},t.setDefaultPanel=function(){var e=this.options,t=this.panelManager,n=this.panelManager.getRange(),i=I(e.defaultIndex,n.min,n.max);this.currentPanel=t.get(i)},t.clonePanels=function(){var e=this.state,t=this.options,r=this.panelManager,n=t.gap,i=e.size,a=r.firstPanel(),o=r.lastPanel();if(a){for(var s,l=r.originalPanels(),h=l.concat().reverse(),c=o.getPosition()+o.getSize()-a.getPosition()+n,u=a.getRelativeAnchorPosition(),g=this.getRelativeHangerPosition(),f=(g-u)%c,d=0,p=0,v=h;p<v.length;p++){if((m=v[p])&&f<=(d+=m.getSize()+n)){s=m;break}}for(var P,m,x=(i-g+u)%c,d=0,E=0,C=l;E<C.length;E++){if((m=C[E])&&x<=(d+=m.getSize()+n)){P=m;break}}var S=0!==s.getIndex()&&s.getIndex()<=P.getIndex(),b=Math.ceil((g+a.getSize()-u)/c)+Math.ceil((i-g+u)/c)-1+(S?1:0),y=r.getCloneCount();if(r.setCloneCount(b),!t.renderExternal)if(y<b)for(var I=this,A=y;A<b;A++)!function(t){var e,n=l.map(function(e){return e.clone(t)}),i=document.createDocumentFragment();n.forEach(function(e){return i.appendChild(e.getElement())}),I.cameraElement.appendChild(i),(e=I.visiblePanels).push.apply(e,n.filter(function(e){return Boolean(e)})),r.insertClones(t,0,n)}(A);else b<y&&r.removeClonesAfter(b)}},t.moveToDefaultPanel=function(){var e=this.state,t=this.panelManager,n=this.options,i=this.panelManager.getRange(),r=I(n.defaultIndex,i.min,i.max),a=t.get(r),o=0;a&&(o=a.getAnchorPosition()-e.relativeHangerPosition,o=this.canSetBoundMode()?I(o,e.scrollArea.prev,e.scrollArea.next):o),this.moveCamera(o),this.axes.setTo({flick:o},0)},t.updateSize=function(){var e=this.state,t=this.options,n=this.panelManager.originalPanels().filter(function(e){return Boolean(e)}),i=this.updateBbox(),r=e.size;e.size=t.horizontal?i.width:i.height,r!==e.size&&(e.relativeHangerPosition=O(t.hanger,e.size),e.infiniteThreshold=O(t.infiniteThreshold,e.size)),n.length<=0||this.resizePanels(n)},t.updateOriginalPanelPositions=function(){var e,t,n,i,r,a,o,s=this.options.gap,l=this.panelManager,h=l.firstPanel(),c=l.originalPanels();h&&(e=this.currentPanel,t=this.nearestPanel,n=this.stateMachine.getState(),i=this.state.scrollArea,o=h.getPosition(),r=h,t?r=!R(n.lastPosition+n.delta,i.prev,i.next)?e:t:0<h.getIndex()&&(r=e),a=c.slice(0,r.getIndex()+(r.getCloneIndex()+1)*c.length).reduce(function(e,t){return e+t.getSize()+s},0),o=r.getPosition()-a,c.forEach(function(e){var t=o,n=e.getSize();e.setPosition(t),o+=n+s}),this.options.renderOnlyVisible||c.forEach(function(e){return e.setPositionCSS()}))},t.updateClonedPanelPositions=function(){var e=this.state,t=this.options,n=this.panelManager,i=n.clonedPanels().reduce(function(e,t){return m(e,t)},[]).filter(function(e){return Boolean(e)}),r=e.scrollArea,a=n.firstPanel(),o=n.lastPanel();if(a){for(var s=o.getPosition()+o.getSize()-a.getPosition()+t.gap,l=0,h=i;l<h.length;l++){var c=(p=h[l]).getOriginalPanel(),u=s*(p.getCloneIndex()+1)+c.getPosition();p.setPosition(u)}for(var g=a.getPosition(),f=0,d=i.concat().reverse();f<d.length;f++){var p,v=(p=d[f]).getSize(),P=g-v-t.gap;if(P+v<=r.prev)break;p.setPosition(P),g=P}this.options.renderOnlyVisible||i.forEach(function(e){e.setPositionCSS()})}},t.updateVisiblePanelPositions=function(){var t=this;this.options.renderOnlyVisible&&this.visiblePanels.forEach(function(e){e.setPositionCSS(t.state.positionOffset)})},t.updateScrollArea=function(){var e,t,n,i=this.state,r=this.panelManager,a=this.options,o=this.axes,s=r.firstPanel(),l=r.lastPanel(),h=i.relativeHangerPosition;s?this.canSetBoundMode()?(n=l.getPosition()+l.getSize()-s.getPosition())>=i.size?i.scrollArea={prev:s.getPosition(),next:l.getPosition()+l.getSize()-i.size}:(e=O(a.anchor,n),t=s.getPosition()+I(e,n-(i.size-h),h),i.scrollArea={prev:t-h,next:t-h}):a.circular?(n=l.getPosition()+l.getSize()-s.getPosition()+a.gap,i.scrollArea={prev:s.getAnchorPosition()-h,next:n+s.getAnchorPosition()-h}):i.scrollArea={prev:s.getAnchorPosition()-h,next:l.getAnchorPosition()-h}:i.scrollArea={prev:0,next:0};var c,u,g,f=i.size,d=a.bounce;u=(g=d)&&g.constructor===Array?d.map(function(e){return O(e,f,v.bounce)}):[c=O(d,f,v.bounce),c];var p=o.axis.flick;p.range=[i.scrollArea.prev,i.scrollArea.next],p.bounce=u},t.checkNeedPanel=function(e){var t=this.state,n=this.options,i=this.panelManager,r=this.currentPanel,a=this.nearestPanel,o=this.stateMachine.getState();if(n.infinite){var s=n.gap,l=t.infiniteThreshold,h=i.getLastIndex();if(!(h<0))if(r&&a){for(var c=a.getPosition(),u=o.holding||o.playing?a:r;u;){var g,f=u.getIndex(),d=u.nextSibling,p=!(f===(E=i.lastPanel()).getIndex())&&d?d.getIndex():h+1,v=a.getPosition(),P=u.getPosition()+u.getSize()-(v-c)+s-l<=t.position+t.size;1<p-f&&P&&this.triggerNeedPanel({axesEvent:e,siblingPanel:u,direction:T.NEXT,indexRange:{min:f+1,max:p-1,length:p-f-1}}),n.circular&&f===h&&P&&(0<(g=(x=i.firstPanel())?x.getIndex():-1)&&this.triggerNeedPanel({axesEvent:e,siblingPanel:u,direction:T.NEXT,indexRange:{min:0,max:g-1,length:g}}));var m=i.lastPanel();if(m&&f===m.getIndex()||!P)break;u=u.nextSibling}for(u=a;u;){var x,E,C,S=t.position,b=u.getIndex(),y=u.prevSibling,I=!(b===(x=i.firstPanel()).getIndex())&&y?y.getIndex():-1,v=a.getPosition(),P=S<=u.getPosition()-(v-c)-s+l;1<b-I&&P&&this.triggerNeedPanel({axesEvent:e,siblingPanel:u,direction:T.PREV,indexRange:{min:I+1,max:b-1,length:b-I-1}}),n.circular&&0===b&&P&&(E=i.lastPanel())&&E.getIndex()<h&&(C=E.getIndex(),this.triggerNeedPanel({axesEvent:e,siblingPanel:u,direction:T.PREV,indexRange:{min:C+1,max:h,length:h-C}}));var A=i.firstPanel();if(A&&b===A.getIndex()||!P)break;u=u.prevSibling}}else this.triggerNeedPanel({axesEvent:e,siblingPanel:null,direction:null,indexRange:{min:0,max:h,length:h+1}})}},t.triggerNeedPanel=function(e){var r,t,a=this,n=e.axesEvent,o=e.siblingPanel,s=e.direction,l=e.indexRange,h=this.options,i=this.state.checkedIndexes,c=i.some(function(e){var t=e[0],n=e[1];return t===l.min||n===l.max}),u=this.flicking.hasOn(A.NEED_PANEL);!c&&u&&(i.push([l.min,l.max]),r=o?o.getIndex():0,t=!!n&&n.isTrusted,this.triggerEvent(A.NEED_PANEL,n,t,{index:r,panel:o,direction:s,range:l,fill:function(e){var t=a.panelManager;if(!o)return a.insert(t.getRange().max+1,e);var n=C(e),i=s===T.NEXT?n.slice(0,l.length):n.slice(-l.length);return s===T.NEXT?h.circular&&r===t.getLastIndex()?a.insert(0,i):o.insertAfter(i):s===T.PREV?h.circular&&0===r?a.insert(l.max-i.length+1,i):o.insertBefore(i):a.insert(0,i)}}))},t.updateVisiblePanels=function(){var t=this.state,e=this.options,n=this.panelManager,i=this.stateMachine.getState(),r=this.cameraElement,a=e.renderExternal;if(e.renderOnlyVisible)if(this.nearestPanel){var o,s,l,h,c,u,g=this.visiblePanels,f=this.calcVisiblePanels(),d=this.checkVisiblePanelChange(g,f),p=d.addedPanels,v=d.removedPanels;p.length<=0&&v.length<=0||(i.holding?f.push.apply(f,v):(o=f[0].getPosition(),t.positionOffset=o),f.forEach(function(e){e.setPositionCSS(t.positionOffset)}),a||(i.holding||v.forEach(function(e){var t=e.getElement();t.parentNode&&r.removeChild(t)}),s=document.createDocumentFragment(),p.forEach(function(e){s.appendChild(e.getElement())}),r.appendChild(s)),l=f[0],h=f[f.length-1],u={min:(c=function(e){return e.getIndex()+(e.getCloneIndex()+1)*n.getPanelCount()})(l),max:c(h)},this.visiblePanels=f,this.flicking.trigger(A.VISIBLE_CHANGE,{type:A.VISIBLE_CHANGE,range:u}))}else for(this.visiblePanels=[];r.firstChild;)r.removeChild(r.firstChild)},t.checkVisiblePanelChange=function(i,r){var a=i.map(function(){return 0}),o=r.map(function(){return 0});return i.forEach(function(n,i){r.forEach(function(e,t){n===e&&(a[i]++,o[t]++)})}),{removedPanels:a.reduce(function(e,t,n){return 0===t?m(e,[i[n]]):e},[]),addedPanels:o.reduce(function(e,t,n){return 0===t?m(e,[r[n]]):e},[])}},t.resizePanels=function(e){var n,t,i,r=this.options,a=this.panelBboxes;!0!==r.isEqualSize?r.isEqualSize?(n=r.isEqualSize,e.forEach(function(e){var t=e.getOverlappedClass(n);t?(e.resize(a[t]),a[t]=e.getBbox()):e.resize()})):e.forEach(function(e){e.resize()}):(a.default||(t=e[0],a.default=t.getBbox()),i=a.default,e.forEach(function(e){e.resize(i)}))},t.createPanInput=function(){var e=this.options;this.panInput=new r.PanInput(this.viewportElement,{inputType:e.inputType,thresholdAngle:e.thresholdAngle,iOSEdgeSwipeThreshold:e.iOSEdgeSwipeThreshold,scale:e.horizontal?[-1,0]:[0,-1]}),this.axes.connect(e.horizontal?["flick",""]:["","flick"],this.panInput)},e}(),Q=function(g){function e(e,t){void 0===t&&(t={});var n,u=g.call(this)||this;if(u.contentsReadyChecker=null,u.isPanelChangedAtBeforeSync=!1,u.resize=function(){var e=u.viewport,t=u.options,n=u.getElement(),i=e.panelManager.allPanels();t.isConstantSize||i.forEach(function(e){return e.unCacheBbox()});var r=t.renderOnlyVisible&&!t.isConstantSize&&!0!==t.isEqualSize,a=n.parentElement,o=a.style.height;return a.style.height=a.offsetHeight+"px",e.unCacheBbox(),e.updateBbox(),r&&e.appendUncachedPanelElements(i),e.resize(),a.style.height=o,u},u.triggerEvent=function(e,t,n,i){void 0===i&&(i={});var r,a,o,s,l,h=u.viewport,c=!0;return h&&(r=h.stateMachine.getState(),o=(a=h.getScrollArea()).prev,s=a.next,l=k(h.getCameraPosition(),[o,o,s]),u.options.circular&&(l%=1),c=!g.prototype.trigger.call(u,e,E({type:e,index:u.getIndex(),panel:u.getCurrentPanel(),direction:r.direction,holding:r.holding,progress:l,axesEvent:t,isTrusted:n},i))),{onSuccess:function(e){return c||e(),this},onStopped:function(e){return c&&e(),this}}},u.moveCamera=function(e){var t,n,i,r,a=u.viewport,o=a.stateMachine.getState(),s=u.options,l=e.pos.flick,h=a.getCameraPosition();return e.isTrusted&&o.holding&&(t=s.horizontal?e.inputEvent.offsetX:e.inputEvent.offsetY,i=l-h,n=t<0==l<h,s.circular&&n&&(i=(0<i?-1:1)*(a.getScrollAreaSize()-Math.abs(i))),r=0===i?o.direction:0<i?T.NEXT:T.PREV,o.direction=r),o.delta+=e.delta.flick,a.moveCamera(l,e),u.triggerEvent(A.MOVE,e,e.isTrusted).onStopped(function(){a.moveCamera(h,e)})},S(e)){if(!(n=document.querySelector(e)))throw new Error("Base element doesn't exist.")}else{if(!e.nodeName||1!==e.nodeType)throw new Error("Element should be provided in string or HTMLElement.");n=e}u.wrapper=n,u.options=E({},v,t);var i=u.options,r=i.moveType;return r in s&&(i.moveType=s[r]),u.viewport=new K(u,u.options,u.triggerEvent),u.listenInput(),u.listenResize(),u}o(e,g);var t=e.prototype;return t.prev=function(e){var t,n=this.getCurrentPanel(),i=this.viewport.stateMachine.getState();return!n||i.type!==w||(t=n.prev())&&t.focus(e),this},t.next=function(e){var t,n=this.getCurrentPanel(),i=this.viewport.stateMachine.getState();return!n||i.type!==w||(t=n.next())&&t.focus(e),this},t.moveTo=function(e,t){var n=this.viewport,i=n.panelManager.get(e),r=n.stateMachine.getState();if(!i||r.type!==w)return this;var a,o,s,l,h=i.getAnchorPosition(),c=n.getHangerPosition(),u=i;this.options.circular&&(o=[h-(a=n.getScrollAreaSize()),h,h+a].reduce(function(e,t){return Math.abs(t-c)<Math.abs(e-c)?t:e},1/0)-i.getRelativeAnchorPosition(),s=i.getIdenticalPanels(),0<(l=o-h)?u=s[1]:l<0&&(u=s[s.length-1]),(u=u.clone(u.getCloneIndex(),!0)).setPosition(o));var g=this.getIndex();if(c===u.getAnchorPosition()&&g===e)return this;var f=i.getIndex()===n.getCurrentIndex()?"":A.CHANGE;return n.moveTo(u,n.findEstimatedPosition(u),f,null,t),this},t.getIndex=function(){return this.viewport.getCurrentIndex()},t.getElement=function(){return this.wrapper},t.getSize=function(){return this.viewport.getSize()},t.getCurrentPanel=function(){var e=this.viewport.getCurrentPanel();return e||null},t.getPanel=function(e){var t=this.viewport.panelManager.get(e);return t||null},t.getAllPanels=function(e){var t=this.viewport.panelManager;return(e?t.allPanels():t.originalPanels()).filter(function(e){return!!e})},t.getVisiblePanels=function(){return this.viewport.calcVisiblePanels()},t.getPanelCount=function(){return this.viewport.panelManager.getPanelCount()},t.getCloneCount=function(){return this.viewport.panelManager.getCloneCount()},t.getLastIndex=function(){return this.viewport.panelManager.getLastIndex()},t.setLastIndex=function(e){return this.viewport.setLastIndex(e),this},t.isPlaying=function(){return this.viewport.stateMachine.getState().playing},t.enableInput=function(){return this.viewport.enable(),this},t.disableInput=function(){return this.viewport.disable(),this},t.getStatus=function(){var e=this.viewport,t=e.panelManager.originalPanels().filter(function(e){return!!e}).map(function(e){return{html:e.getElement().outerHTML,index:e.getIndex()}});return{index:e.getCurrentIndex(),panels:t,position:e.getCameraPosition()}},t.setStatus=function(e){this.viewport.restore(e)},t.addPlugins=function(e){return this.viewport.addPlugins(e),this},t.removePlugins=function(e){return this.viewport.removePlugins(e),this},t.destroy=function(e){var t;for(var n in void 0===e&&(e={}),this.off(),this.options.autoResize&&window.removeEventListener("resize",this.resize),this.viewport.destroy(e),null!==(t=this.contentsReadyChecker)&&void 0!==t&&t.destroy(),this)this[n]=null},t.prepend=function(e){var t=this.viewport,n=C(e),i=Math.max(t.panelManager.getRange().min-n.length,0),r=t.insert(i,n);return this.checkContentsReady(r),r},t.append=function(e){var t=this.viewport,n=t.insert(t.panelManager.getRange().max+1,e);return this.checkContentsReady(n),n},t.replace=function(e,t){var n=this.viewport.replace(e,t);return this.checkContentsReady(n),n},t.remove=function(e,t){return void 0===t&&(t=1),this.viewport.remove(e,t)},t.getRenderingIndexes=function(e){var t=this.viewport,n=t.getVisiblePanels(),i=e.maintained.reduce(function(e,t){var n=t[0];return e[t[1]]=n,e},{}),r=e.list.length,a=e.added,o=m(n.map(function(e){return(t=e).getIndex()+(t.getCloneIndex()+1)*r;var t}).filter(function(e){return null!=i[e%r]}),a),s=t.panelManager.allPanels();return t.setVisiblePanels(o.map(function(e){return s[e]})),o},t.beforeSync=function(e){var t=this,n=e.maintained,o=e.added,i=e.changed,a=e.removed,r=this.viewport,s=r.panelManager,l=this.options.circular,h=s.getCloneCount(),c=s.clonedPanels(),u=r.getVisiblePanels().filter(function(t){return B(a,function(e){return e===t.getIndex()})<0});if(r.setVisiblePanels(u),o.length<=0&&a.length<=0&&i.length<=0&&h===c.length)return this;var g=s.originalPanels(),f=[],d=V(h).map(function(){return[]});n.forEach(function(e){var t=e[0],n=e[1];f[n]=g[t],f[n].setIndex(n)}),o.forEach(function(e){f[e]=new _(null,e,t.viewport)}),l&&V(h).forEach(function(i){var r=c[i],a=d[i];n.forEach(function(e){var t=e[0],n=e[1];a[n]=r?r[t]:f[n].clone(i,!1),a[n].setIndex(n)}),o.forEach(function(e){var t=f[e];a[e]=t.clone(i,!1)})}),o.forEach(function(e){r.updateCheckedIndexes({min:e,max:e})}),a.forEach(function(e){r.updateCheckedIndexes({min:e-1,max:e+1})});var p=r.getCheckedIndexes();p.forEach(function(e,t){var n=e[0],i=e[1],r=o.filter(function(e){return e<n&&s.has(e)}).length-a.filter(function(e){return e<n}).length;p.splice(t,1,[n+r,i+r])}),0<i.length&&n.forEach(function(e){var t=e[1];r.updateCheckedIndexes({min:t,max:t})}),s.replacePanels(f,d),this.isPanelChangedAtBeforeSync=!0},t.sync=function(e){var i=e.list,t=e.maintained,n=e.added,r=e.changed,a=e.removed;if(n.length<=0&&a.length<=0&&r.length<=0)return this;var o,s,l,h,c,u,g=this.viewport,f=this.options,d=f.renderOnlyVisible,p=f.circular,v=g.panelManager;d||(o=v.getRange(),u=e,p&&(s=o.max,l=i.length/(v.getCloneCount()+1)>>0,h=n.filter(function(e){return e<l}),c=a.filter(function(e){return e<=s}),u={added:h,maintained:t.filter(function(e){return e[0]<=s}),removed:c,changed:r.filter(function(e){return e[0]<=s})}),this.beforeSync(u));var P=d?g.getVisiblePanels():this.getAllPanels(!0);return n.forEach(function(e){var t=i[e],n=P[e];n.setElement(t),n.unCacheBbox()}),this.isPanelChangedAtBeforeSync&&(g.setVisiblePanels([]),this.isPanelChangedAtBeforeSync=!1),g.resize(),this},t.listenInput=function(){var n=this,e=n.viewport,i=e.stateMachine;n.eventContext={flicking:n,viewport:n.viewport,transitTo:i.transitTo,triggerEvent:n.triggerEvent,moveCamera:n.moveCamera,stopCamera:e.stopCamera};var r={};for(var t in f)!function(e){var t=f[e];r[t]=function(e){return i.fire(t,e,n.eventContext)}}(t);n.viewport.connectAxesHandler(r)},t.listenResize=function(){var e,t=this,n=this.options;n.autoResize&&window.addEventListener("resize",this.resize),n.resizeOnContentsReady&&((e=new i).on("preReady",function(){t.resize()}),e.on("readyElement",function(e){e.hasLoading&&e.isPreReadyOver&&t.resize()}),e.on("error",function(e){t.trigger(A.CONTENT_ERROR,{type:A.CONTENT_ERROR,element:e.element})}),e.check([this.wrapper]),this.contentsReadyChecker=e)},t.checkContentsReady=function(e){var t;null!==(t=this.contentsReadyChecker)&&void 0!==t&&t.check(e.map(function(e){return e.getElement()}))},e.VERSION="3.7.1",e.DIRECTION=T,e.EVENTS=A,e}(e);return Q.withFlickingMethods=function(e,a){Object.keys(t).forEach(function(r){e[r]||(e[r]=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var i=(e=this[a])[r].apply(e,t);return i===this[a]?this:i})})},Q.DEFAULT_OPTIONS=v,Q.MOVE_TYPE=c,Q});
10//# sourceMappingURL=flicking.min.js.map