@egjs/flicking
Version:
Everyday 30 million people experience. It's reliable, flexible and extendable carousel.
1 lines • 86.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@egjs/component"),require("@egjs/axes"),require("@egjs/imready")):"function"==typeof define&&define.amd?define(["@egjs/component","@egjs/axes","@egjs/imready"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Flicking=t(e.eg.Component,e.eg.Axes,e.eg.ImReady)}(this,function(e,t,n){"use strict";var i=Object.defineProperty,r=Object.defineProperties,s=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,a=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,c=Reflect.get,d=Math.pow,u=(e,t,n)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t)=>{for(var n in t||(t={}))l.call(t,n)&&u(e,n,t[n]);if(o)for(var n of o(t))h.call(t,n)&&u(e,n,t[n]);return e},_=(e,t)=>r(e,s(t)),p=(e,t,n)=>new Promise((i,r)=>{var s=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=e=>e.done?i(e.value):Promise.resolve(e.value).then(s,o);a((n=n.apply(e,t)).next())});const m={PREV:"prev",CENTER:"center",NEXT:"next"},f={PREV:"PREV",NEXT:"NEXT",NONE:null},v={SNAP:"snap",FREE_SCROLL:"freeScroll",STRICT:"strict"},E={VIEWPORT:"flicking-viewport",CAMERA:"flicking-camera",VERTICAL:"vertical",HIDDEN:"flicking-hidden",DEFAULT_VIRTUAL:"flicking-panel"},P={LINEAR:"linear",BOUND:"bound"},x={LTR:"ltr",RTL:"rtl"},O={HORIZONTAL:"horizontal",VERTICAL:"vertical"},T=Object.freeze(Object.defineProperty({__proto__:null,ALIGN:m,CIRCULAR_FALLBACK:P,CLASS:E,DIRECTION:f,MOVE_DIRECTION:O,MOVE_TYPE:v,ORDER:x},Symbol.toStringTag,{value:"Module"})),b={READY:"ready",BEFORE_RESIZE:"beforeResize",AFTER_RESIZE:"afterResize",HOLD_START:"holdStart",HOLD_END:"holdEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",WILL_CHANGE:"willChange",CHANGED:"changed",WILL_RESTORE:"willRestore",RESTORED:"restored",SELECT:"select",NEED_PANEL:"needPanel",VISIBLE_CHANGE:"visibleChange",REACH_EDGE:"reachEdge",PANEL_CHANGE:"panelChange"},R=Object.freeze(Object.defineProperty({__proto__:null,EVENTS:b},Symbol.toStringTag,{value:"Module"}));class I{get index(){return this._index}get position(){return this._pos}get panel(){return this._panel}constructor(e){const{index:t,position:n,panel:i}=e;this._index=t,this._pos=n,this._panel=i}}const A={WRONG_TYPE:{code:0,message:(e,t)=>`${e}(${typeof e}) is not a ${t.map(e=>`"${e}"`).join(" or ")}.`},ELEMENT_NOT_FOUND:{code:1,message:e=>`Element with selector "${e}" not found.`},VAL_MUST_NOT_NULL:{code:2,message:(e,t)=>`${t} should be provided. Given: ${e}`},NOT_ATTACHED_TO_FLICKING:{code:3,message:'This module is not attached to the Flicking instance. "init()" should be called first.'},WRONG_OPTION:{code:4,message:(e,t)=>`Option "${e}" is not in correct format, given: ${t}`},INDEX_OUT_OF_RANGE:{code:5,message:(e,t,n)=>`Index "${e}" is out of range: should be between ${t} and ${n}.`},POSITION_NOT_REACHABLE:{code:6,message:e=>`Position "${e}" is not reachable.`},TRANSFORM_NOT_SUPPORTED:{code:7,message:"Browser does not support CSS transform."},STOP_CALLED_BY_USER:{code:8,message:"Event stop() is called by user."},ANIMATION_INTERRUPTED:{code:9,message:"Animation is interrupted by user input."},ANIMATION_ALREADY_PLAYING:{code:10,message:"Animation is already playing."},NOT_ALLOWED_IN_FRAMEWORK:{code:11,message:"This behavior is not allowed in the frameworks like React, Vue, or Angular."},NOT_INITIALIZED:{code:12,message:"Flicking is not initialized yet, call init() first."},NO_ACTIVE:{code:13,message:"There's no active panel that Flicking has selected. This may be due to the absence of any panels."},NOT_ALLOWED_IN_VIRTUAL:{code:14,message:"This behavior is not allowed when the virtual option is enabled"}},S=Object.keys(A).reduce((e,t)=>(e[t]=A[t].code,e),{}),N=Object.keys(A).reduce((e,t)=>(e[t]=A[t].message,e),{}),C=(e,...t)=>(t.forEach(t=>{Object.keys(t).forEach(n=>{e[n]=t[n]})}),e),z=(e,t)=>{let n=null;if(U(e)){const i=(t||document).querySelector(e);if(!i)throw new oe(N.ELEMENT_NOT_FOUND(e),S.ELEMENT_NOT_FOUND);n=i}else e&&e.nodeType===Node.ELEMENT_NODE&&(n=e);if(!n)throw new oe(N.WRONG_TYPE(e,["HTMLElement","string"]),S.WRONG_TYPE);return n},y=(e,t)=>{if(null==e)throw new oe(N.VAL_MUST_NOT_NULL(e,t),S.VAL_MUST_NOT_NULL)},w=(e,t,n)=>Math.max(Math.min(e,n),t),k=e=>{if(!e)throw new oe(N.NOT_ATTACHED_TO_FLICKING,S.NOT_ATTACHED_TO_FLICKING);return e},D=e=>[].slice.call(e),L=(e,t)=>{let n;if(U(e))switch(e){case m.PREV:n=0;break;case m.CENTER:n=.5*t;break;case m.NEXT:n=t;break;default:if(n=H(e,t),null==n)throw new oe(N.WRONG_OPTION("align",e),S.WRONG_OPTION)}else n=e;return n},M=(e,t)=>{let n;if(Array.isArray(e))n=e.map(e=>H(e,t));else{const i=H(e,t);n=[i,i]}return n.map(t=>{if(null==t)throw new oe(N.WRONG_OPTION("bounce",e),S.WRONG_OPTION);return t})},H=(e,t)=>{const n=F(e);return null==n?null:n.percentage*t+n.absolute},F=e=>{const t=/(?:(\+|-)\s*)?(\d+(?:\.\d+)?(%|px)?)/g;if("number"==typeof e)return{percentage:0,absolute:e};const n={percentage:0,absolute:0};let i=0,r=t.exec(e);for(;null!=r;){let s=r[1];const o=r[2],a=r[3],l=parseFloat(o);if(i<=0&&(s=s||"+"),!s)return null;const h="+"===s?1:-1;"%"===a?n.percentage+=h*(l/100):n.absolute+=h*l,++i,r=t.exec(e)}return 0===i?null:n},V=e=>"object"==typeof e?e.panel:e,G=(e,t)=>e===t?f.NONE:e<t?f.NEXT:f.PREV,j=e=>{Array.isArray(e)||(e=[e]);const t=[];return e.forEach(e=>{if(U(e)){const n=document.createElement("div");for(n.innerHTML=e,t.push(...D(n.children));n.firstChild;)n.removeChild(n.firstChild)}else{if(!e||e.nodeType!==Node.ELEMENT_NODE)throw new oe(N.WRONG_TYPE(e,["HTMLElement","string"]),S.WRONG_TYPE);t.push(e)}}),t},B=(e,t)=>w(e<0?e+t:e,0,t),W=(e,t)=>{for(const n of e)if(n===t)return!0;return!1},U=e=>"string"==typeof e,$=(e,t,n)=>{const i=n-t;if(e<t){e=n-(t-e)%i}else if(e>n){e=t+(e-n)%i}return e},X=(e,t)=>{for(const n of e)if(t(n))return n;return null},Y=(e,t)=>{for(let n=0;n<e.length;n++)if(t(e[n]))return n;return-1},Z=(e,t,n)=>(e-t)/(n-t),K=e=>e?window.getComputedStyle(e)||e.currentStyle:{},q=(e,{width:t,height:n})=>{e&&(null!=t&&(U(t)?e.style.width=t:e.style.width=`${t}px`),null!=n&&(U(n)?e.style.height=n:e.style.height=`${n}px`))},J=(e,t,n)=>e>=t&&e<=n,Q=(e,t)=>e>=t?e%t:e<0?B((e+1)%t-1,t):e,ee=e=>{const t=new Array(e);for(let n=0;n<e;n++)t[n]=n;return t},te=({el:e,horizontal:t,useFractionalSize:n,useOffset:i,style:r})=>{let s=0;if(n){const e=parseFloat(t?r.width:r.height)||0,n="border-box"===r.boxSizing,o=t?parseFloat(r.borderLeftWidth||"0")+parseFloat(r.borderRightWidth||"0"):parseFloat(r.borderTopWidth||"0")+parseFloat(r.borderBottomWidth||"0");if(n)s=i?e:e-o;else{const n=t?parseFloat(r.paddingLeft||"0")+parseFloat(r.paddingRight||"0"):parseFloat(r.paddingTop||"0")+parseFloat(r.paddingBottom||"0");s=i?e+n+o:e+n}}else{const n=t?"Width":"Height";s=i?e[`offset${n}`]:e[`client${n}`]}return Math.max(s,0)},ne=Object.setPrototypeOf||((e,t)=>(e.__proto__=t,e)),ie=e=>e.replace(/[\s-_]([a-z])/g,(e,t)=>t.toUpperCase()),re=(e,t)=>{const n={},i=e.attributes,r=i.length;for(let s=0;s<r;++s){const e=i[s],{name:r,value:o}=e;-1!==r.indexOf(t)&&(n[ie(r.replace(t,""))]=o)}return n},se=Object.freeze(Object.defineProperty({__proto__:null,camelize:ie,checkExistence:y,circulateIndex:Q,circulatePosition:$,clamp:w,find:X,findIndex:Y,findRight:(e,t)=>{for(let n=e.length-1;n>=0;n--){const i=e[n];if(t(i))return i}return null},getDataAttributes:re,getDirection:G,getElement:z,getElementSize:te,getFlickingAttached:k,getMinusCompensatedIndex:B,getProgress:Z,getStyle:K,includes:W,isBetween:J,isString:U,merge:C,parseAlign:L,parseArithmeticExpression:F,parseArithmeticSize:H,parseBounce:M,parseCSSSizeValue:e=>U(e)?e:`${e}px`,parseElement:j,parsePanelAlign:V,range:ee,setPrototypeOf:ne,setSize:q,toArray:D},Symbol.toStringTag,{value:"Module"}));class oe extends Error{constructor(e,t){super(e),ne(this,oe.prototype),this.name="FlickingError",this.code=t}}class ae{constructor(e){this._flicking=e}getAnchors(){return this._flicking.renderer.panels.map((e,t)=>new I({index:t,position:e.position,panel:e}))}findAnchorIncludePosition(e){return this._flicking.camera.anchorPoints.filter(t=>t.panel.includePosition(e,!0)).reduce((t,n)=>t&&Math.abs(t.position-e)<Math.abs(n.position-e)?t:n,null)}findNearestAnchor(e){const t=this._flicking.camera.anchorPoints;if(t.length<=0)return null;let n=1/0;for(let i=0;i<t.length;i++){const r=t[i],s=Math.abs(r.position-e);if(s>n)return t[i-1];n=s}return t[t.length-1]}clampToReachablePosition(e){const t=this._flicking.camera.range;return w(e,t.min,t.max)}getCircularOffset(){return 0}canReach(e){const t=this._flicking.camera.range;if(e.removed)return!1;const n=e.position;return n>=t.min&&n<=t.max}canSee(e){const t=this._flicking.camera.visibleRange;return e.isVisibleOnRange(t.min,t.max)}}class le extends ae{checkAvailability(){const e=this._flicking,t=e.renderer,n=t.getPanel(0),i=t.getPanel(t.panelCount-1);if(!n||!i)return!1;const r=e.camera.size,s=n.range.min;return r<i.range.max-s}getRange(){const e=this._flicking,t=e.renderer,n=e.camera.alignPosition,i=t.getPanel(0),r=t.getPanel(t.panelCount-1);if(!i||!r)return{min:0,max:0};const s=e.camera.size,o=i.range.min,a=r.range.max,l=o+n,h=a-s+n;if(s<a-o)return{min:l,max:h};{const t=e.camera.align,n="object"==typeof t?t.camera:t,i=l+L(n,h-l);return{min:i,max:i}}}getAnchors(){const e=this._flicking,t=e.camera,n=e.renderer.panels;if(n.length<=0)return[];const i=e.camera.range,r=n.filter(e=>t.canReach(e));if(r.length>0){const e=r[0].position!==i.min,t=r[r.length-1].position!==i.max,s=e?1:0,o=r.map((e,t)=>new I({index:t+s,position:e.position,panel:e}));return e&&o.splice(0,0,new I({index:0,position:i.min,panel:n[r[0].index-1]})),t&&o.push(new I({index:o.length,position:i.max,panel:n[r[r.length-1].index+1]})),o}if(i.min!==i.max){const e=this._findNearestPanel(i.min,n),t=e.index===n.length-1?e.prev():e,r=t.next();return[new I({index:0,position:i.min,panel:t}),new I({index:1,position:i.max,panel:r})]}return[new I({index:0,position:i.min,panel:this._findNearestPanel(i.min,n)})]}findAnchorIncludePosition(e){const t=this._flicking.camera,n=t.range,i=t.anchorPoints;return i.length<=0?null:e<=n.min?i[0]:e>=n.max?i[i.length-1]:super.findAnchorIncludePosition(e)}_findNearestPanel(e,t){let n=1/0;for(let i=0;i<t.length;i++){const r=t[i],s=Math.abs(r.position-e);if(s>n)return t[i-1];n=s}return t[t.length-1]}}class he extends ae{checkAvailability(){const e=this._flicking,t=e.renderer.panels;if(t.length<=0)return!1;const n=t[0],i=t[t.length-1],r=n.range.min-n.margin.prev,s=i.range.max+i.margin.next,o=e.camera.size,a=s-r;return t.every(e=>a-e.size>=o)}getRange(){const e=this._flicking.renderer.panels;if(e.length<=0)return{min:0,max:0};const t=e[0],n=e[e.length-1];return{min:t.range.min-t.margin.prev,max:n.range.max+n.margin.next}}getAnchors(){return this._flicking.renderer.panels.map((e,t)=>new I({index:t,position:e.position,panel:e}))}findNearestAnchor(e){const t=this._flicking.camera,n=t.anchorPoints;if(n.length<=0)return null;const i=t.range;let r=1/0,s=-1;for(let o=0;o<n.length;o++){const t=n[o],a=Math.min(Math.abs(t.position-e),Math.abs(t.position-i.min+i.max-e),Math.abs(e-i.min+i.max-t.position));a<r&&(r=a,s=o)}return n[s]}findAnchorIncludePosition(e){const t=this._flicking.camera,n=t.range,i=t.anchorPoints,r=t.rangeDiff,s=i.length,o=$(e,n.min,n.max);let a=super.findAnchorIncludePosition(o);if(s>0&&(e===n.min||e===n.max)){const t=[a,new I({index:0,position:i[0].position+r,panel:i[0].panel}),new I({index:s-1,position:i[s-1].position-r,panel:i[s-1].panel})].filter(e=>!!e);a=t.reduce((t,n)=>t&&Math.abs(t.position-e)<Math.abs(n.position-e)?t:n,null)}if(!a)return null;if(e<n.min){const t=-Math.floor((n.min-e)/r)-1;return new I({index:a.index,position:a.position+r*t,panel:a.panel})}if(e>n.max){const t=Math.floor((e-n.max)/r)+1;return new I({index:a.index,position:a.position+r*t,panel:a.panel})}return a}getCircularOffset(){const e=this._flicking;if(!e.camera.circularEnabled)return 0;const t=e.panels.filter(e=>e.toggled),n=t.filter(e=>e.toggleDirection===f.PREV),i=t.filter(e=>e.toggleDirection===f.NEXT);return this._calcPanelAreaSum(n)-this._calcPanelAreaSum(i)}clampToReachablePosition(e){return e}canReach(e){return!e.removed}canSee(e){const t=this._flicking.camera,n=t.range,i=t.rangeDiff,r=t.visibleRange,s=super.canSee(e);return r.min<n.min?s||e.isVisibleOnRange(r.min+i,r.max+i):r.max>n.max?s||e.isVisibleOnRange(r.min-i,r.max-i):s}_calcPanelAreaSum(e){return e.reduce((e,t)=>e+t.sizeIncludingMargin,0)}}class ce extends ae{checkAvailability(){return!0}getRange(){var e,t;const n=this._flicking.renderer,i=n.getPanel(0),r=n.getPanel(n.panelCount-1);return{min:null!=(e=null==i?void 0:i.position)?e:0,max:null!=(t=null==r?void 0:r.position)?t:0}}}let de=class{constructor(e,{align:t=m.CENTER}={}){this._lookedOffset=0,this._checkTranslateSupport=()=>{const e=["webkitTransform","msTransform","MozTransform","OTransform","transform"],t=document.documentElement.style;let n="";for(const i of e)i in t&&(n=i);if(!n)throw new oe(N.TRANSFORM_NOT_SUPPORTED,S.TRANSFORM_NOT_SUPPORTED);this._transform=n},this._flicking=e,this._resetInternalValues(),this._align=t}get element(){return this._el}get children(){return D(this._el.children)}get position(){return this._position}get alignPosition(){return this._alignPos}get offset(){return this._offset-this._circularOffset}get circularEnabled(){return this._circularEnabled}get mode(){return this._mode}get range(){return this._range}get rangeDiff(){return this._range.max-this._range.min}get visiblePanels(){return this._visiblePanels}get visibleRange(){return{min:this._position-this._alignPos,max:this._position-this._alignPos+this.size}}get anchorPoints(){return this._anchors}get controlParams(){return{range:this._range,position:this._position,circular:this._circularEnabled}}get atEdge(){return this._position<=this._range.min||this._position>=this._range.max}get size(){const e=this._flicking;return e?e.horizontal?e.viewport.width:e.viewport.height:0}get progress(){const e=this._flicking,t=this._position+this._offset,n=this.findNearestAnchor(this._position);if(!e||!n)return NaN;const i=n.panel,r=i.position+i.offset,s=e.control.controller.bounce,{min:o,max:a}=this.range,l=this.rangeDiff;if(t===r)return i.index;if(t<r){const e=i.prev();let n=e?e.position+e.offset:o-s[0];return n>r&&(n-=l),i.index-1+Z(t,n,r)}{const e=i.next();let n=e?e.position+e.offset:a+s[1];return n<r&&(n+=l),i.index+Z(t,r,n)}}get panelOrder(){return this._panelOrder}get align(){return this._align}set align(e){this._align=e}init(){const e=this._flicking.viewport.element;return y(e.firstElementChild,"First element child of the viewport element"),this._el=e.firstElementChild,this._checkTranslateSupport(),this._updateMode(),this.updatePanelOrder(),this}destroy(){return this._resetInternalValues(),this}lookAt(e){const t=this._offset,n=this._lookedOffset!==t,i=k(this._flicking),r=this._position;this._position=e;const s=this._togglePanels(r,e);this._refreshVisiblePanels(),this._checkNeedPanel(),this._checkReachEnd(r,e),s?i.renderer.render().then(()=>{this.updateOffset(),this._lookedOffset=this._offset}):n?(this.updateOffset(),this._lookedOffset=this._offset):this.applyTransform()}getPrevAnchor(e){if(this._circularEnabled&&0===e.index){const e=this._anchors,t=this.rangeDiff,n=e[e.length-1];return new I({index:n.index,position:n.position-t,panel:n.panel})}return this._anchors[e.index-1]||null}getNextAnchor(e){const t=this._anchors;if(this._circularEnabled&&e.index===t.length-1){const e=this.rangeDiff,n=t[0];return new I({index:n.index,position:n.position+e,panel:n.panel})}return t[e.index+1]||null}getProgressInPanel(e){const t=e.range;return(this._position-t.min)/(t.max-t.min)}findAnchorIncludePosition(e){return this._mode.findAnchorIncludePosition(e)}findNearestAnchor(e){return this._mode.findNearestAnchor(e)}findActiveAnchor(){var e;const t=k(this._flicking).control.activePanel;return t?null!=(e=X(this._anchors,e=>e.panel.index===t.index))?e:this.findNearestAnchor(t.position):null}clampToReachablePosition(e){return this._mode.clampToReachablePosition(e)}canReach(e){return this._mode.canReach(e)}canSee(e){return this._mode.canSee(e)}updateRange(){const e=k(this._flicking).renderer.panels;return this._updateMode(),this._range=this._mode.getRange(),e.forEach(e=>e.updateCircularToggleDirection()),this}updateAlignPos(){const e=this._align,t="object"==typeof e?e.camera:e;return this._alignPos=L(t,this.size),this}updateAnchors(){return this._anchors=this._mode.getAnchors(),this}updateAdaptiveHeight(){const e=k(this._flicking),t=e.control.activePanel,n=[...e.visiblePanels];if(t&&n.push(t),!e.horizontal||!e.adaptive||!n.length)return;const i=Math.max(...n.map(e=>e.height));e.viewport.setSize({height:i})}updateOffset(){const e=k(this._flicking),t=this._position,n=e.panels.filter(e=>!e.rendered);return this._offset=n.filter(e=>e.position+e.offset<t).reduce((e,t)=>e+t.sizeIncludingMargin,0),this._circularOffset=this._mode.getCircularOffset(),this.applyTransform(),this}updatePanelOrder(){const e=k(this._flicking);if(!e.horizontal)return this;const t=this._el,n=K(t).direction;return n!==this._panelOrder&&(this._panelOrder=n===x.RTL?x.RTL:x.LTR,e.initialized&&e.control.controller.updateDirection()),this}resetNeedPanelHistory(){return this._needPanelTriggered={prev:!1,next:!1},this}applyTransform(){const e=this._el,t=k(this._flicking);if(t.renderer.rendering||!t.initialized)return this;const n=this._position-this._alignPos-this._offset+this._circularOffset;return e.style[this._transform]=t.horizontal?`translate(${this._panelOrder===x.RTL?n:-n}px)`:`translate(0, ${-n}px)`,this}_resetInternalValues(){this._position=0,this._lookedOffset=0,this._alignPos=0,this._offset=0,this._circularOffset=0,this._circularEnabled=!1,this._range={min:0,max:0},this._visiblePanels=[],this._anchors=[],this._needPanelTriggered={prev:!1,next:!1}}_refreshVisiblePanels(){const t=k(this._flicking),n=t.renderer.panels.filter(e=>this.canSee(e)),i=this._visiblePanels;this._visiblePanels=n;const r=n.filter(e=>!W(i,e)),s=i.filter(e=>!W(n,e));(r.length>0||s.length>0)&&t.renderer.render().then(()=>{t.trigger(new e.ComponentEvent(b.VISIBLE_CHANGE,{added:r,removed:s,visiblePanels:n}))})}_checkNeedPanel(){const t=this._needPanelTriggered;if(t.prev&&t.next)return;const n=k(this._flicking),i=n.renderer.panels;if(i.length<=0)return t.prev||(n.trigger(new e.ComponentEvent(b.NEED_PANEL,{direction:f.PREV})),t.prev=!0),void(t.next||(n.trigger(new e.ComponentEvent(b.NEED_PANEL,{direction:f.NEXT})),t.next=!0));const r=this._position,s=this.size,o=this._range,a=n.needPanelThreshold,l=r-this._alignPos,h=l+s,c=i[0],d=i[i.length-1];if(!t.prev){(l<=c.range.min+a||r<=o.min+a)&&(n.trigger(new e.ComponentEvent(b.NEED_PANEL,{direction:f.PREV})),t.prev=!0)}if(!t.next){(h>=d.range.max-a||r>=o.max-a)&&(n.trigger(new e.ComponentEvent(b.NEED_PANEL,{direction:f.NEXT})),t.next=!0)}}_checkReachEnd(t,n){const i=k(this._flicking),r=this._range,s=t>r.min&&t<r.max,o=n>r.min&&n<r.max;if(!s||o)return;const a=n<=r.min?f.PREV:f.NEXT;i.trigger(new e.ComponentEvent(b.REACH_EDGE,{direction:a}))}_updateMode(){const e=k(this._flicking);if(e.circular){const t=new he(e),n=t.checkAvailability();if(n)this._mode=t;else{const t=e.circularFallback;this._mode=t===P.BOUND?new le(e):new ce(e)}this._circularEnabled=n}else this._mode=e.bound?new le(e):new ce(e),this._circularEnabled=!1}_togglePanels(e,t){if(t===e)return!1;return k(this._flicking).renderer.panels.map(n=>n.toggle(e,t)).some(e=>e)}};const ue=Object.freeze(Object.defineProperty({__proto__:null,BoundCameraMode:le,Camera:de,CircularCameraMode:he,LinearCameraMode:ce},Symbol.toStringTag,{value:"Module"})),ge={HOLD:"hold",CHANGE:"change",RELEASE:"release",ANIMATION_END:"animationEnd",FINISH:"finish"},_e="flick";var pe=(e=>(e[e.IDLE=0]="IDLE",e[e.HOLDING=1]="HOLDING",e[e.DRAGGING=2]="DRAGGING",e[e.ANIMATING=3]="ANIMATING",e[e.DISABLED=4]="DISABLED",e))(pe||{});class me{constructor(){this._delta=0,this._targetPanel=null}get delta(){return this._delta}get targetPanel(){return this._targetPanel}set targetPanel(e){this._targetPanel=e}onEnter(e){this._delta=e._delta,this._targetPanel=e._targetPanel}onHold(e){}onChange(e){}onRelease(e){}onAnimationEnd(e){}onFinish(e){}_moveToChangedPosition(t){const{flicking:n,axesEvent:i,transitTo:r}=t,s=i.delta[_e];if(!s)return;this._delta+=s;const o=n.camera,a=o.position,l=i.pos[_e],h=n.circularEnabled?$(l,o.range.min,o.range.max):l;o.lookAt(h);const c=new e.ComponentEvent(b.MOVE,{isTrusted:i.isTrusted,holding:this.holding,direction:G(0,i.delta[_e]),axesEvent:i});n.trigger(c),c.isCanceled()&&(o.lookAt(a),r(4))}}class fe extends me{constructor(){super(...arguments),this.holding=!1,this.animating=!0}onHold(t){const{flicking:n,axesEvent:i,transitTo:r}=t,s=this._targetPanel,o=n.control;this._delta=0,n.control.updateInput(),n.changeOnHold&&s&&o.setActive(s,o.activePanel,i.isTrusted);const a=new e.ComponentEvent(b.HOLD_START,{axesEvent:i});n.trigger(a),a.isCanceled()?r(pe.DISABLED):r(pe.DRAGGING)}onChange(e){this._moveToChangedPosition(e)}onFinish(t){const{flicking:n,axesEvent:i,transitTo:r}=t,s=n.control,o=s.controller.animatingContext;r(pe.IDLE),n.trigger(new e.ComponentEvent(b.MOVE_END,{isTrusted:i.isTrusted,direction:G(o.start,o.end),axesEvent:i}));const a=this._targetPanel;a&&s.setActive(a,s.activePanel,i.isTrusted)}}class ve extends me{constructor(){super(...arguments),this.holding=!1,this.animating=!0}onAnimationEnd(e){const{transitTo:t}=e;t(pe.IDLE)}onChange(e){const{axesEvent:t,transitTo:n}=e;t.stop(),n(pe.IDLE)}onRelease(e){const{axesEvent:t,transitTo:n}=e;0===t.delta.flick&&n(pe.IDLE)}}class Ee extends me{constructor(){super(...arguments),this.holding=!0,this.animating=!0}onChange(e){this._moveToChangedPosition(e)}onRelease(t){const{flicking:n,axesEvent:i,transitTo:r}=t;if(n.trigger(new e.ComponentEvent(b.HOLD_END,{axesEvent:i})),n.renderer.panelCount<=0)return void r(pe.IDLE);r(pe.ANIMATING);const s=n.control,o=i.destPos[_e],a=Math.max(i.duration,n.duration);try{s.moveToPosition(o,a,i)}catch(l){r(pe.IDLE),i.setTo({[_e]:n.camera.position},0)}}}class Pe extends me{constructor(){super(...arguments),this.holding=!0,this.animating=!1,this._releaseEvent=null}onChange(t){const{flicking:n,axesEvent:i,transitTo:r}=t,s=i.inputEvent;if(!s)return;const o=n.horizontal?s.offsetX:s.offsetY,a=new e.ComponentEvent(b.MOVE_START,{isTrusted:i.isTrusted,holding:this.holding,direction:G(0,-o),axesEvent:i});n.trigger(a),a.isCanceled()?r(pe.DISABLED):r(pe.DRAGGING).onChange(t)}onRelease(t){const{flicking:n,axesEvent:i,transitTo:r}=t;if(n.trigger(new e.ComponentEvent(b.HOLD_END,{axesEvent:i})),0!==i.delta.flick)return i.setTo({flick:n.camera.position},0),void r(pe.IDLE);this._releaseEvent=i}onFinish(t){const{flicking:n,transitTo:i}=t;if(i(pe.IDLE),!this._releaseEvent)return;const r=this._releaseEvent.inputEvent.srcEvent;let s;if("touchend"===r.type){const e=r.changedTouches[0];s=document.elementFromPoint(e.clientX,e.clientY)}else s=r.target;const o=n.renderer.panels;let a=null;for(const e of o)if(e.contains(s)){a=e;break}if(a){const t=n.camera.position,i=a.position;n.trigger(new e.ComponentEvent(b.SELECT,{index:a.index,panel:a,direction:G(t,i)}))}}}class xe extends me{constructor(){super(...arguments),this.holding=!1,this.animating=!1}onEnter(){this._delta=0,this._targetPanel=null}onHold(t){const{flicking:n,axesEvent:i,transitTo:r}=t;if(n.renderer.panelCount<=0)return void r(pe.DISABLED);const s=new e.ComponentEvent(b.HOLD_START,{axesEvent:i});n.trigger(s),s.isCanceled()?r(pe.DISABLED):r(pe.HOLDING)}onChange(t){const{flicking:n,axesEvent:i,transitTo:r}=t,s=n.control.controller.animatingContext,o=new e.ComponentEvent(b.MOVE_START,{isTrusted:i.isTrusted,holding:this.holding,direction:G(s.start,s.end),axesEvent:i});n.trigger(o),o.isCanceled()?r(pe.DISABLED):r(pe.ANIMATING).onChange(t)}}class Oe{constructor(){this.transitTo=e=>{let t;switch(e){case pe.IDLE:t=new xe;break;case pe.HOLDING:t=new Pe;break;case pe.DRAGGING:t=new Ee;break;case pe.ANIMATING:t=new fe;break;case pe.DISABLED:t=new ve}return t.onEnter(this._state),this._state=t,this._state},this._state=new xe}get state(){return this._state}fire(e,t){const n=this._state,i=_(g({},t),{transitTo:this.transitTo});switch(e){case ge.HOLD:n.onHold(i);break;case ge.CHANGE:n.onChange(i);break;case ge.RELEASE:n.onRelease(i);break;case ge.ANIMATION_END:n.onAnimationEnd(i);break;case ge.FINISH:n.onFinish(i)}}}class Te{constructor(){this._onAxesHold=()=>{this._dragged=!1},this._onAxesChange=()=>{var e;this._dragged=!!(null==(e=this._panInput)?void 0:e.isEnabled())},this._preventClickWhenDragged=e=>{this._dragged&&(e.preventDefault(),e.stopPropagation()),this._dragged=!1},this._resetInternalValues(),this._stateMachine=new Oe}get axes(){return this._axes}get panInput(){return this._panInput}get stateMachine(){return this._stateMachine}get state(){return this._stateMachine.state}get animatingContext(){return this._animatingContext}get controlParams(){const e=this._axes;if(!e)return{range:{min:0,max:0},position:0,circular:!1};const t=e.axis[_e];return{range:{min:t.range[0],max:t.range[1]},circular:t.circular[0],position:this.position}}get enabled(){var e,t;return null!=(t=null==(e=this._panInput)?void 0:e.isEnabled())&&t}get position(){var e,t;return null!=(t=null==(e=this._axes)?void 0:e.get([_e])[_e])?t:0}get range(){var e,t;return null!=(t=null==(e=this._axes)?void 0:e.axis[_e].range)?t:[0,0]}get bounce(){var e;return null==(e=this._axes)?void 0:e.axis[_e].bounce}init(e){this._flicking=e,this._axes=new t({[_e]:{range:[0,0],circular:!1,bounce:[0,0]}},{deceleration:e.deceleration,interruptable:e.interruptable,nested:e.nested,easing:e.easing}),this._panInput=new t.PanInput(e.viewport.element,{inputType:e.inputType,threshold:e.dragThreshold,iOSEdgeSwipeThreshold:e.iOSEdgeSwipeThreshold,preventDefaultOnDrag:e.preventDefaultOnDrag,scale:e.horizontal?[e.camera.panelOrder===x.RTL?1:-1,0]:[0,-1],releaseOnScroll:!0});const n=this._axes;n.connect(e.horizontal?[_e,""]:["",_e],this._panInput);for(const t in ge){const i=ge[t];n.on(i,t=>{this._stateMachine.fire(i,{flicking:e,axesEvent:t})})}return this}destroy(){var e;this._axes&&(this.removePreventClickHandler(),this._axes.destroy()),null==(e=this._panInput)||e.destroy(),this._resetInternalValues()}enable(){var e;return null==(e=this._panInput)||e.enable(),this}disable(){var e;return null==(e=this._panInput)||e.disable(),this}release(){var e;return null==(e=this._panInput)||e.release(),this}updateAnimation(e,t){var n;return this._animatingContext=_(g({},this._animatingContext),{end:e}),null==(n=this._axes)||n.updateAnimation({destPos:{[_e]:e},duration:t}),this}stopAnimation(){var e;return null==(e=this._axes)||e.stopAnimation(),this}update(e){const t=k(this._flicking),n=t.camera,i=this._axes,r=i.axis[_e];return r.circular=[e.circular,e.circular],r.range=[e.range.min,e.range.max],r.bounce=M(t.bounce,n.size),i.axisManager.set({[_e]:e.position}),this}addPreventClickHandler(){const e=k(this._flicking),t=this._axes,n=e.camera.element;return t.on(ge.HOLD,this._onAxesHold),t.on(ge.CHANGE,this._onAxesChange),n.addEventListener("click",this._preventClickWhenDragged,!0),this}removePreventClickHandler(){const e=k(this._flicking),t=this._axes,n=e.camera.element;return t.off(ge.HOLD,this._onAxesHold),t.off(ge.CHANGE,this._onAxesChange),n.removeEventListener("click",this._preventClickWhenDragged,!0),this}animateTo(e,t,n){var i;const r=this._axes,s=this._stateMachine.state;if(!r)return Promise.reject(new oe(N.NOT_ATTACHED_TO_FLICKING,S.NOT_ATTACHED_TO_FLICKING));const o=this.getCurrentPosition();if(o===e){const t=k(this._flicking);return t.camera.lookAt(e),s.targetPanel&&t.control.setActive(s.targetPanel,t.control.activePanel,null!=(i=null==n?void 0:n.isTrusted)&&i),Promise.resolve()}this._animatingContext={start:o,end:e,offset:0};const a=()=>{r.once(ge.FINISH,()=>{this._animatingContext={start:0,end:0,offset:0}}),n?n.setTo({[_e]:e},t):r.setTo({[_e]:e},t)};return new Promise((e,t)=>{const n=()=>{r.off(ge.HOLD,i),e()},i=()=>{r.off(ge.FINISH,n),t(new oe(N.ANIMATION_INTERRUPTED,S.ANIMATION_INTERRUPTED))};r.once(ge.FINISH,n),r.once(ge.HOLD,i),a()})}getCurrentPosition(){var e,t;return null!=(t=null==(e=this._axes)?void 0:e.get([_e])[_e])?t:0}updateDirection(){const e=k(this._flicking),t=this._axes,n=this._panInput;t.disconnect(n),t.connect(e.horizontal?[_e,""]:["",_e],n),n.options.scale=e.horizontal?[e.camera.panelOrder===x.RTL?1:-1,0]:[0,-1]}_resetInternalValues(){this._flicking=null,this._axes=null,this._panInput=null,this._animatingContext={start:0,end:0,offset:0},this._dragged=!1}}let be=class{get controller(){return this._controller}get activeIndex(){var e,t;return null!=(t=null==(e=this._activePanel)?void 0:e.index)?t:-1}get activePanel(){return this._activePanel}get animating(){return this._controller.state.animating}get holding(){return this._controller.state.holding}constructor(){this._flicking=null,this._controller=new Te,this._activePanel=null}init(e){return this._flicking=e,this._controller.init(e),this}destroy(){this._controller.destroy(),this._flicking=null,this._activePanel=null}enable(){return this._controller.enable(),this}disable(){return this._controller.disable(),this}release(){return this._controller.release(),this}updateAnimation(e,t,n){const i=this._controller.state,r=this._getPosition(e,null!=n?n:f.NONE);return i.targetPanel=e,this._controller.updateAnimation(r,t),this}stopAnimation(){return this._controller.state.targetPanel=null,this._controller.stopAnimation(),this}updatePosition(e){const t=k(this._flicking).camera,n=this._activePanel;n&&t.lookAt(t.clampToReachablePosition(n.position))}updateInput(){const e=k(this._flicking).camera;return this._controller.update(e.controlParams),this}resetActive(){return this._activePanel=null,this}moveToPanel(e,t){return p(this,arguments,function*(e,{duration:t,direction:n=f.NONE,axesEvent:i}){const r=this._getPosition(e,n);return this._triggerIndexChangeEvent(e,e.position,i,n),this._animateToPosition({position:r,duration:t,newActivePanel:e,axesEvent:i})})}setActive(t,n,i){var r;const s=k(this._flicking);this._activePanel=t,this._nextPanel=null,s.camera.updateAdaptiveHeight(),t!==n?s.trigger(new e.ComponentEvent(b.CHANGED,{index:t.index,panel:t,prevIndex:null!=(r=null==n?void 0:n.index)?r:-1,prevPanel:n,isTrusted:i,direction:n?G(n.position,t.position):f.NONE})):s.trigger(new e.ComponentEvent(b.RESTORED,{isTrusted:i}))}copy(e){this._flicking=e._flicking,this._activePanel=e._activePanel,this._controller=e._controller}_triggerIndexChangeEvent(t,n,i,r){var s;const o=k(this._flicking),a=t!==this._activePanel?b.WILL_CHANGE:b.WILL_RESTORE,l=o.camera,h=this._activePanel,c=new e.ComponentEvent(a,{index:t.index,panel:t,isTrusted:(null==i?void 0:i.isTrusted)||!1,direction:null!=r?r:G(null!=(s=null==h?void 0:h.position)?s:l.position,n)});if(this._nextPanel=t,o.trigger(c),c.isCanceled())throw new oe(N.STOP_CALLED_BY_USER,S.STOP_CALLED_BY_USER)}_animateToPosition(e){return p(this,arguments,function*({position:e,duration:t,newActivePanel:n,axesEvent:i}){const r=k(this._flicking);let s=t;Math.abs(s-e)<r.animationThreshold&&(s=0);const o=()=>this._controller.animateTo(e,s,i);return this._controller.state.targetPanel=n,s<=0?o():o().then(()=>p(this,null,function*(){r.initialized&&(yield r.renderer.render())})).catch(e=>{if(!(i&&e instanceof oe&&e.code===S.ANIMATION_INTERRUPTED))throw e})})}_getPosition(e,t=f.NONE){const n=k(this._flicking),i=n.camera;let r=e.position;const s=i.findNearestAnchor(r);if(e.removed||!s)throw new oe(N.POSITION_NOT_REACHABLE(e.position),S.POSITION_NOT_REACHABLE);if(i.canReach(e)){if(n.circularEnabled){const e=this._controller.position,n=i.rangeDiff,s=[r,r+n,r-n].filter(n=>t===f.NONE||(t===f.PREV?n<=e:n>=e));r=s.reduce((t,n)=>Math.abs(e-n)<Math.abs(e-t)?n:t,1/0)}}else r=s.position,e=s.panel;return r}};class Re extends be{get stopAtEdge(){return this._stopAtEdge}set stopAtEdge(e){this._stopAtEdge=e}constructor(e={}){super();const{stopAtEdge:t=!0}=e;this._stopAtEdge=t}updatePosition(e){const t=k(this._flicking).camera,n=this._activePanel;if(n){const i=n.range,r=i.min+(i.max-i.min)*e;t.lookAt(t.clampToReachablePosition(r))}}moveToPosition(e,t,n){const i=k(this._flicking).camera,r=i.clampToReachablePosition(e),s=i.findAnchorIncludePosition(r);if(!s)return Promise.reject(new oe(N.POSITION_NOT_REACHABLE(e),S.POSITION_NOT_REACHABLE));const o=s.panel;return o!==this._activePanel&&this._triggerIndexChangeEvent(o,e,n),this._animateToPosition({position:this._stopAtEdge?r:e,duration:t,newActivePanel:o,axesEvent:n})}}class Ie extends be{get count(){return this._count}set count(e){this._count=e}constructor(e={}){super();const{count:t=1/0}=e;this._count=t}moveToPosition(e,t,n){const i=k(this._flicking),r=i.camera,s=r.findActiveAnchor(),o=r.findNearestAnchor(r.position),a=this._controller.state;if(!s||!o)return Promise.reject(new oe(N.POSITION_NOT_REACHABLE(e),S.POSITION_NOT_REACHABLE));const l=this._calcSnapThreshold(i.threshold,e,s),h=i.animating?a.delta:e-r.position,c=Math.abs(h),d=n&&0!==n.delta[_e]?Math.abs(n.delta[_e]):c;let u;if(d>=l&&d>0)u=this._findSnappedAnchor(e,o);else{if(!(c>=i.threshold&&c>0))return this.moveToPanel(o.panel,{duration:t,axesEvent:n});u=this._findAdjacentAnchor(e,h,o)}return this._triggerIndexChangeEvent(u.panel,e,n),this._animateToPosition({position:r.clampToReachablePosition(u.position),duration:t,newActivePanel:u.panel,axesEvent:n})}_findSnappedAnchor(e,t){const n=k(this._flicking),i=n.camera,r=this._count,s=i.position,o=i.clampToReachablePosition(e),a=i.findAnchorIncludePosition(o);if(!t||!a)throw new oe(N.POSITION_NOT_REACHABLE(e),S.POSITION_NOT_REACHABLE);if(!Number.isFinite(r))return a;const l=n.panelCount,h=i.anchorPoints;let c=Math.sign(e-s)*Math.floor(Math.abs(e-s)/i.rangeDiff);e>s&&a.index<t.index||a.position>t.position&&a.index===t.index?c+=1:(e<s&&a.index>t.index||a.position<t.position&&a.index===t.index)&&(c-=1);const d=c*l,u=a.index+d;if(Math.abs(u-t.index)<=r){const e=h[a.index];return new I({index:e.index,position:e.position+c*i.rangeDiff,panel:e.panel})}if(n.circularEnabled){const n=h[Q(t.index+Math.sign(e-s)*r,l)];let o=Math.floor(r/l);return e>s&&n.index<t.index?o+=1:e<s&&n.index>t.index&&(o-=1),new I({index:n.index,position:n.position+o*i.rangeDiff,panel:n.panel})}return h[w(t.index+Math.sign(e-s)*r,0,h.length-1)]}_findAdjacentAnchor(e,t,n){var i;const r=k(this._flicking).camera;if(r.circularEnabled){const t=r.findAnchorIncludePosition(e);if(t&&t.position!==n.position)return t}return null!=(i=t>0?r.getNextAnchor(n):r.getPrevAnchor(n))?i:n}_calcSnapThreshold(e,t,n){const i=t>n.position,r=n.panel,s=r.size,o=r.alignPosition;return Math.max(e,i?s-o+r.margin.next:o+r.margin.prev)}}class Ae extends be{constructor(e={}){super(),this.setActive=(e,t,n)=>{super.setActive(e,t,n),this.updateInput()};const{count:t=1}=e;this._count=t,this._resetIndexRange()}get count(){return this._count}set count(e){this._count=e}destroy(){super.destroy(),this._resetIndexRange()}updateInput(){var e;const t=k(this._flicking),n=t.camera,i=t.renderer,r=this._controller,s=n.controlParams,o=this._count,a=r.state.animating?null==(e=n.findNearestAnchor(n.position))?void 0:e.panel:this._activePanel;if(!a)return r.update(s),this._resetIndexRange(),this;const l=s.range,h=a.position,c=a.index,d=i.panelCount;let u=c-o,g=c+o;u<0&&(u=t.circularEnabled?B((u+1)%d-1,d):w(u,0,d-1)),g>=d&&(g=t.circularEnabled?g%d:w(g,0,d-1));const _=i.panels[u],p=i.panels[g];let m=Math.max(_.position,l.min),f=Math.min(p.position,l.max);return m>h&&(m-=n.rangeDiff),f<h&&(f+=n.rangeDiff),s.range={min:m,max:f},s.circular&&(s.position<m&&(s.position+=n.rangeDiff),s.position>f&&(s.position-=n.rangeDiff)),s.circular=!1,r.update(s),this._indexRange={min:_.index,max:p.index},this}moveToPanel(e,t){return p(this,null,function*(){const n=k(this._flicking).camera;return this._controller.update(n.controlParams),(i=Ae.prototype,r=this,s="moveToPanel",c(a(i),s,r)).call(this,e,t);var i,r,s})}moveToPosition(e,t,n){var i;const r=k(this._flicking),s=r.camera,o=null!=(i=this._nextPanel)?i:this._activePanel,a=this._controller.range,l=this._indexRange,h=s.range,c=this._controller.state,d=w(s.clampToReachablePosition(e),a[0],a[1]),u=s.findAnchorIncludePosition(d);if(!u||!o)return Promise.reject(new oe(N.POSITION_NOT_REACHABLE(e),S.POSITION_NOT_REACHABLE));const g=o.position,_=r.animating?c.delta:e-s.position,p=Math.abs(_)>=r.threshold,m=e>g?s.getNextAnchor(u):s.getPrevAnchor(u);let f,v;const E=s.anchorPoints,P=E[0],x=E[E.length-1],O=e<h.min&&J(P.panel.index,l.min,l.max),T=e>h.max&&J(x.panel.index,l.min,l.max),b=m&&(l.min<=l.max?J(m.index,l.min,l.max):m.index>=l.min||m.index<=l.max);if(O||T){const t=e<h.min?P:x;v=t.panel,f=t.position}else if(p&&u.position!==o.position)v=u.panel,f=u.position;else{if(!p||!b){const i=s.findNearestAnchor(s.position);return i?this.moveToPanel(i.panel,{duration:t,axesEvent:n}):Promise.reject(new oe(N.POSITION_NOT_REACHABLE(e),S.POSITION_NOT_REACHABLE))}v=m.panel,f=m.position}return this._triggerIndexChangeEvent(v,e,n),this._animateToPosition({position:f,duration:t,newActivePanel:v,axesEvent:n})}_resetIndexRange(){this._indexRange={min:0,max:0}}}const Se=Object.freeze(Object.defineProperty({__proto__:null,AnimatingState:fe,AxesController:Te,Control:be,DisabledState:ve,DraggingState:Ee,FreeControl:Re,HoldingState:Pe,IdleState:xe,SnapControl:Ie,State:me,StateMachine:Oe,StrictControl:Ae},Symbol.toStringTag,{value:"Module"}));class Ne{constructor(e){this._onResizeWrapper=()=>{this._onResize([])},this._onResize=e=>{const t=this._flicking,n=t.resizeDebounce,i=t.maxResizeDebounce,r=t.element;if(e.find(e=>e.target===t.element)&&1===e.length){const e={width:t.viewport.width,height:t.viewport.height},n={width:te({el:r,horizontal:!0,useFractionalSize:this._flicking.useFractionalSize,useOffset:!1,style:K(r)}),height:te({el:r,horizontal:!1,useFractionalSize:this._flicking.useFractionalSize,useOffset:!1,style:K(r)})};if(e.height===n.height&&e.width===n.width)return}n<=0?t.resize():(this._maxResizeDebounceTimer<=0&&i>0&&i>=n&&(this._maxResizeDebounceTimer=window.setTimeout(this._doScheduledResize,i)),this._resizeTimer>0&&(clearTimeout(this._resizeTimer),this._resizeTimer=0),this._resizeTimer=window.setTimeout(this._doScheduledResize,n))},this._doScheduledResize=()=>{clearTimeout(this._resizeTimer),clearTimeout(this._maxResizeDebounceTimer),this._maxResizeDebounceTimer=-1,this._resizeTimer=-1,this._flicking.resize()},this._skipFirstResize=(()=>{let e=!0;return t=>{e?e=!1:this._onResize(t)}})(),this._flicking=e,this._enabled=!1,this._resizeObserver=null,this._resizeTimer=-1,this._maxResizeDebounceTimer=-1}get enabled(){return this._enabled}enable(){const e=this._flicking,t=e.viewport;if(this._enabled&&this.disable(),e.useResizeObserver&&window.ResizeObserver){const n=0!==t.width||0!==t.height?new ResizeObserver(this._skipFirstResize):new ResizeObserver(this._onResize);this._resizeObserver=n,this.observe(e.viewport.element),e.observePanelResize&&this.observePanels()}else window.addEventListener("resize",this._onResizeWrapper);return this._enabled=!0,this}observePanels(){return this._flicking.panels.forEach(e=>{this.observe(e.element)}),this}unobservePanels(){return this._flicking.panels.forEach(e=>{this.unobserve(e.element)}),this}observe(e){const t=this._resizeObserver;return t?(t.observe(e),this):this}unobserve(e){const t=this._resizeObserver;return t?(t.unobserve(e),this._flicking.observePanelResize&&this.unobservePanels(),this):this}disable(){if(!this._enabled)return this;const e=this._resizeObserver;return e?(e.disconnect(),this._resizeObserver=null):window.removeEventListener("resize",this._onResizeWrapper),this._enabled=!1,this}}class Ce{get element(){return this._element}get rendered(){return this._rendered}constructor(e){this._element=e,this._rendered=!0}show(e){const t=this.element,n=e.camera.element;t.parentElement!==n&&(n.appendChild(t),this._rendered=!0)}hide(e){const t=this.element,n=e.camera.element;t.parentElement===n&&(n.removeChild(t),this._rendered=!1)}}class ze{get element(){return this._virtualElement.nativeElement}get rendered(){return this._virtualElement.visible}get _virtualElement(){const e=this._flicking,t=this._panel.elementIndex;return e.virtual.elements[t]}constructor(e){this._flicking=e}init(e){this._panel=e}show(){}hide(){}}class ye{get element(){return this._el}get width(){return this._width-this._padding.left-this._padding.right}get height(){return this._height-this._padding.top-this._padding.bottom}get padding(){return this._padding}constructor(e,t){this._flicking=e,this._el=t,this._width=0,this._height=0,this._padding={left:0,right:0,top:0,bottom:0},this._isBorderBoxSizing=!1}setSize(e){const{width:t,height:n}=e,i=this._el,r=this._padding,s=this._isBorderBoxSizing;if(null!=t)if(U(t))i.style.width=t;else{const e=s?t+r.left+r.right:t;i.style.width=`${e}px`}if(null!=n)if(U(n))i.style.height=n;else{const e=s?n+r.top+r.bottom:n;i.style.height=`${e}px`}this.resize()}resize(){const e=this._el,t=K(e),{useFractionalSize:n}=this._flicking;this._width=te({el:e,horizontal:!0,useFractionalSize:n,useOffset:!1,style:t}),this._height=te({el:e,horizontal:!1,useFractionalSize:n,useOffset:!1,style:t}),this._padding={left:t.paddingLeft?parseFloat(t.paddingLeft):0,right:t.paddingRight?parseFloat(t.paddingRight):0,top:t.paddingTop?parseFloat(t.paddingTop):0,bottom:t.paddingBottom?parseFloat(t.paddingBottom):0},this._isBorderBoxSizing="border-box"===t.boxSizing}}class we{get elements(){return this._elements}get renderPanel(){return this._renderPanel}get initialPanelCount(){return this._initialPanelCount}get cache(){return this._cache}get panelClass(){return this._panelClass}set renderPanel(e){this._renderPanel=e,this._flicking.renderer.panels.forEach(e=>e.uncacheRenderResult())}set cache(e){this._cache=e}set panelClass(e){this._panelClass=e}constructor(e,t){var n,i,r,s;this._flicking=e,this._renderPanel=null!=(n=null==t?void 0:t.renderPanel)?n:()=>"",this._initialPanelCount=null!=(i=null==t?void 0:t.initialPanelCount)?i:-1,this._cache=null!=(r=null==t?void 0:t.cache)&&r,this._panelClass=null!=(s=null==t?void 0:t.panelClass)?s:E.DEFAULT_VIRTUAL,this._elements=[]}init(){const e=this._flicking;if(!e.virtualEnabled)return;e.externalRenderer||e.renderExternal||this._initVirtualElements();const t=e.camera.children;this._elements=t.map(e=>({nativeElement:e,visible:!0}))}show(e){const t=this._elements[e],n=t.nativeElement;t.visible=!0,n.style.display&&(n.style.display="")}hide(e){const t=this._elements[e],n=t.nativeElement;t.visible=!1,n.style.display="none"}append(e=1){const t=this._flicking;return this.insert(t.panels.length,e)}prepend(e=1){return this.insert(0,e)}insert(e,t=1){if(t<=0)return[];return this._flicking.renderer.batchInsert({index:e,elements:ee(t),hasDOMInElements:!1})}remove(e,t){if(t<=0)return[];return this._flicking.renderer.batchRemove({index:e,deleteCount:t,hasDOMInElements:!1})}_initVirtualElements(){const e=this._flicking,t=e.camera.element,n=e.panelsPerView,i=document.createDocumentFragment();ee(n+1).map(e=>{const t=document.createElement("div");return t.className=this._panelClass,t.dataset.elementIndex=e.toString(),t}).forEach(e=>{i.appendChild(e)}),t.appendChild(i)}}let ke=class{get panels(){return this._panels}get rendering(){return this._rendering}get panelCount(){return this._panels.length}get strategy(){return this._strategy}get align(){return this._align}set align(e){this._align=e;const t=V(e);this._panels.forEach(e=>{e.align=t})}constructor(e){const{align:t=m.CENTER,strategy:n}=e;this._flicking=null,this._panels=[],this._rendering=!1,this._align=t,this._strategy=n}init(e){return this._flicking=e,this._collectPanels(),this}destroy(){this._flicking=null,this._panels=[]}getPanel(e){return this._panels[e]||null}forceRenderAllPanels(){return this._panels.forEach(e=>e.markForShow()),Promise.resolve()}getRenderedPanels(){return k(this._flicking).renderer.panels.filter(e=>e.rendered)}updatePanelSize(){const e=k(this._flicking),t=this._panels;if(t.length<=0)return this;if(e.panelsPerView>0){const e=t[0];e.resize(),this._updatePanelSizeByGrid(e,t)}else e.panels.forEach(e=>e.resize());return this}batchInsert(...e){const t=this.batchInsertDefer(...e);return t.length<=0?[]:(this.updateAfterPanelChange(t,[]),t)}batchInsertDefer(...e){const t=this._panels,n=k(this._flicking),i=t[0],r=V(this._align);return e.reduce((e,s)=>{var o;const a=B(s.index,t.length),l=t.slice(a),h=s.elements.map((e,t)=>this._createPanel(e,{index:a+t,align:r,flicking:n}));if(t.splice(a,0,...h),s.hasDOMInElements&&this._insertPanelElements(h,null!=(o=l[0])?o:null),n.panelsPerView>0){const e=i||h[0].resize();this._updatePanelSizeByGrid(e,h)}else h.forEach(e=>e.resize());return l.forEach(e=>{e.increaseIndex(h.length),e.updatePosition()}),[...e,...h]},[])}batchRemove(...e){const t=this.batchRemoveDefer(...e);return t.length<=0?[]:(this.updateAfterPanelChange([],t),t)}batchRemoveDefer(...e){const t=this._panels,n=k(this._flicking),{control:i}=n,r=i.activePanel;return e.reduce((e,n)=>{const{index:s,deleteCount:o}=n,a=B(s,t.length),l=t.slice(a+o),h=t.splice(a,o);return h.length<=0?[]:(l.forEach(e=>{e.decreaseIndex(h.length),e.updatePosition()}),n.hasDOMInElements&&this._removePanelElements(h),h.forEach(e=>e.destroy()),W(h,r)&&i.resetActive(),[...e,...h])},[])}updateAfterPanelChange(t,n){var i;const r=k(this._flicking),{camera:s,control:o}=r,a=this._panels,l=o.activePanel;if(this._updateCameraAndControl(),r.autoResize&&r.useResizeObserver&&(t.forEach(e=>{e.element&&r.autoResizer.observe(e.element)}),n.forEach(e=>{e.element&&r.autoResizer.unobserve(e.element)})),this.render(),!r.animating)if(!l||l.removed)if(a.length<=0)s.lookAt(0);else{let e=null!=(i=null==l?void 0:l.index)?i:0;e>a.length-1&&(e=a.length-1),o.moveToPanel(a[e],{duration:0}).catch(()=>{})}else o.moveToPanel(l,{duration:0}).catch(()=>{});r.camera.updateOffset(),(t.length>0||n.length>0)&&(r.trigger(new e.ComponentEvent(b.PANEL_CHANGE,{added:t,removed:n})),this.checkPanelContentsReady([...t,...n]))}checkPanelContentsReady(e){const t=k(this._flicking),i=t.resizeOnContentsReady,r=this._panels;if(!i||t.virtualEnabled)return;if((e=e.filter(e=>(e=>e.element&&!!e.element.querySelector("img, video"))(e))).length<=0)return;const s=new n;e.forEach(e=>{e.loading=!0}),s.on("readyElement",n=>{if(!this._flicking)return void s.destroy();const i=e[n.index],o=t.camera,a=t.control,l=a.activePanel?o.getProgressInPanel(a.activePanel):0;i.loading=!1,i.resize(),r.slice(i.index+1).forEach(e=>e.updatePosition()),t.initialized&&(o.updateRange(),o.updateOffset(),o.updateAnchors(),a.animating||(a.updatePosition(l),a.updateInput()))}),s.on("preReady",e=>{this._flicking&&this.render(),e.readyCount===e.totalCount&&s.destroy()}),s.on("ready",()=>{this._flicking&&this.render(),s.destroy()}),s.check(e.map(e=>e.element))}_updateCameraAndControl(){const e=k(this._flicking),{camera:t,control:n}=e;t.updateRange(),t.updateOffset(),t.updateAnchors(),t.resetNeedPanelHistory(),n.updateInput()}_showOnlyVisiblePanels(e){const t=e.renderer.panels,n=e.camera.visiblePanels.reduce((e,t)=>(e[t.index]=!0,e),{});t.forEach(t=>{t.index in n||t.loading?t.markForShow():e.holding||t.markForHide()})}_updatePanelSizeByGrid(e,t){const n=k(this._flicking),i=n.panelsPerView;if(i<=0)throw new oe(N.WRONG_OPTION("panelsPerView",i),S.WRONG_OPTION);if(t.length<=0)return;const r=(n.camera.size-(e.margin.prev+e.margin.next)*(i-1))/i,s=n.horizontal?{width:r}:{height:r},o=g({size:r,margin:e.margin},!n.horizontal&&{height:e.height});n.noPanelStyleOverride||this._strategy.updatePanelSizes(n,s),n.panels.forEach(e=>e.resize(o))}_removeAllChildsFromCamera(){const e=k(this._flicking).camera.element;for(;e.firstChild;)e.removeChild(e.firstChild)}_insertPanelElements(e,t=null){const n=k(this._flicking).camera.element,i=(null==t?void 0:t.element)||null,r=document.createDocumentFragment();e.forEach(e=>r.appendChild(e.element));const s=i&&i.parentNode===n?i:null;n.insertBefore(r,s)}_removePanelElements(e){const t=k(this._flicking).camera.element;e.forEach(e=>{e.element.parentNode===t&&t.removeChild(e.element)})}_afterRender(){const e=k(this._flicking);if(e.camera.applyTransform(),e.useCSSOrder){const t=e.renderer.panels.filter(e=>e.rendered);this._strategy.getRenderingIndexesByOrder(e).forEach((e,n)=>{t[e].element&&(t[e].element.style.order=`${n}`)})}}};class De extends ke{render(){return p(this,null,function*(){const e=k(this._flicking),t=this._strategy;t.updateRenderingPanels(e),t.renderPanels(e),this._resetPanelElementOrder(),this._afterRender()})}_collectPanels(){const e=k(this._flicking),t=e.camera;this._removeAllTextNodes(),this._panels=this._strategy.collectPanels(e,t.children)}_createPanel(e,t){return this._strategy.createPanel(e,t)}_resetPanelElementOrder(){const e=k(this._flicking),t=e.camera.element;let n=[];n=e.useCSSOrder?this.getRenderedPanels().map(e=>e.element).reverse():this._strategy.getRenderingElementsByOrder(e).reverse(),n.forEach((e,i)=>{const r=n[i-1]?n[i-1]:null;e.nextElementSibling!==r&&t.insertBefore(e,r)})}_removeAllTextNodes(){const e=k(this._flicking).camera.element;D(e.childNodes).forEach(t=>{t.nodeType===Node.TEXT_NODE&&e.removeChild(t)})}}class Le{get element(){return this._elProvider.element}get elementProvider(){return this._elProvider}get index(){return this._index}get position(){return this._pos+this._alignPos}get size(){return this._size}get sizeIncludingMargin(){return this._size+this._margin.prev+this._margin.next}get height(){return this._height}get margin(){return this._margin}get alignPosition(){return this._alignPos}get removed(){return this._removed}get rendered(){return this._rendered}get loading(){return this._loading}get range(){return{min:this._pos,max:this._pos+this._size}}get toggled(){return this._toggled}get toggleDirection(){return this._toggleDirection}get offset(){const e=this._toggleDirection,t=this._flicking.camera.rangeDiff;return e!==f.NONE&&this._toggled?e===f.PREV?-t:t:0}get progress(){const e=this._flicking;return this.index-e.camera.progress}get outsetProgre