1import"./libs-vue.Cm6uuXgL.js";import{script as ie}from"./libs-vue-resize.CFEZ46Y5.js";import{ObserveVisibility as se}from"./libs-vue-observe-visibility.goQycOOW.js";import{mitt as re}from"./libs-mitt.Jq6f0YYe.js";import{markRaw as le,shallowReactive as ne}from"./libs-@vue/reactivity.CL8OCaPf.js";import{h as oe,resolveComponent as X,resolveDirective as ae,withDirectives as ce,openBlock as w,createElementBlock as O,renderSlot as b,createCommentVNode as q,createBlock as x,withCtx as T,Fragment as de,renderList as he,resolveDynamicComponent as K,mergeProps as J,toHandlers as ue,createVNode as fe,guardReactiveProps as me}from"./libs-@vue/runtime-core.DuueAziv.js";import{normalizeStyle as pe,normalizeClass as j,normalizeProps as ve}from"./libs-@vue/shared.DLWOYkA7.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7262ae06-ed4f-42cc-95d5-1b1fecb75a37",e._sentryDebugIdIdentifier="sentry-dbid-7262ae06-ed4f-42cc-95d5-1b1fecb75a37")}catch{}})();{var I=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};I._sentryModuleMetadata=I._sentryModuleMetadata||{},I._sentryModuleMetadata[new I.Error().stack]=Object.assign({},I._sentryModuleMetadata[new I.Error().stack],{dsn:"https://[email protected]/6688884"})}var Q={itemsLimit:1e3},ye=/(auto|scroll)/;function Z(e,t){return e.parentNode===null?t:Z(e.parentNode,t.concat([e]))}var F=function(t,i){return getComputedStyle(t,null).getPropertyValue(i)},ze=function(t){return F(t,"overflow")+F(t,"overflow-y")+F(t,"overflow-x")},ge=function(t){return ye.test(ze(t))};function Y(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=Z(e.parentNode,[]),i=0;i<t.length;i+=1)if(ge(t[i]))return t[i];return document.scrollingElement||document.documentElement}}function L(e){"@babel/helpers - typeof";return L=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},L(e)}var G={items:{type:Array,required:!0},keyField:{type:String,default:"id"},direction:{type:String,default:"vertical",validator:function(t){return["vertical","horizontal"].includes(t)}},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"}};function ee(){return this.items.length&&L(this.items[0])!=="object"}var B=!1;if(typeof window<"u"){B=!1;try{var Se=Object.defineProperty({},"passive",{get:function(){B=!0}});window.addEventListener("test",null,Se)}catch{}}let $e=0;var R={name:"RecycleScroller",components:{ResizeObserver:ie},directives:{ObserveVisibility:se},props:{...G,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:"size"},typeField:{type:String,default:"type"},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},updateInterval:{type:Number,default:0},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"},listClass:{type:[String,Object,Array],default:""},itemClass:{type:[String,Object,Array],default:""}},emits:["resize","visible","hidden","update","scroll-start","scroll-end"],data(){return{pool:[],totalSize:0,ready:!1,hoverKey:null}},computed:{sizes(){if(this.itemSize===null){const e={"-1":{accumulator:0}},t=this.items,i=this.sizeField,s=this.minItemSize;let r=1e4,c=0,l;for(let a=0,d=t.length;a<d;a++)l=t[a][i]||s,l<r&&(r=l),c+=l,e[a]={accumulator:c,size:l};return this.$_computedMinItemSize=r,e}return[]},simpleArray:ee,itemIndexByKey(){const{keyField:e,items:t}=this,i={};for(let s=0,r=t.length;s<r;s++)i[t[s][e]]=s;return i}},watch:{items(){this.updateVisibleItems(!0)},pageMode(){this.applyPageMode(),this.updateVisibleItems(!1)},sizes:{handler(){this.updateVisibleItems(!1)},deep:!0},gridItems(){this.updateVisibleItems(!0)},itemSecondarySize(){this.updateVisibleItems(!0)}},created(){this.$_startIndex=0,this.$_endIndex=0,this.$_views=new Map,this.$_unusedViews=new Map,this.$_scrollDirty=!1,this.$_lastUpdateScrollPosition=0,this.prerender&&(this.$_prerender=!0,this.updateVisibleItems(!1)),this.gridItems&&!this.itemSize&&console.error("[vue-recycle-scroller] You must provide an itemSize when using gridItems")},mounted(){this.applyPageMode(),this.$nextTick(()=>{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const e=this.$_lastUpdateScrollPosition;typeof e=="number"&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,i,s,r){const c=le({id:$e++,index:t,used:!0,key:s,type:r}),l=ne({item:i,position:0,nr:c});return e.push(l),l},unuseView(e,t=!1){const i=this.$_unusedViews,s=e.nr.type;let r=i.get(s);r||(r=[],i.set(s,r)),r.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const t=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:i}=this.updateVisibleItems(!1,!0);i||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});t(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&t()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const i=this.itemSize,s=this.gridItems||1,r=this.itemSecondarySize||i,c=this.$_computedMinItemSize,l=this.typeField,a=this.simpleArray?null:this.keyField,d=this.items,h=d.length,S=this.sizes,A=this.$_views,E=this.$_unusedViews,k=this.pool,te=this.itemIndexByKey;let p,u,D,z,g;if(!h)p=u=z=g=D=0;else if(this.$_prerender)p=z=0,u=g=Math.min(this.prerender,d.length),D=null;else{const n=this.getScroll();if(t){let m=n.start-this.$_lastUpdateScrollPosition;if(m<0&&(m=-m),i===null&&m<c||m<i)return{continuous:!0}}this.$_lastUpdateScrollPosition=n.start;const v=this.buffer;n.start-=v,n.end+=v;let f=0;if(this.$refs.before&&(f=this.$refs.before.scrollHeight,n.start-=f),this.$refs.after){const m=this.$refs.after.scrollHeight;n.end+=m}if(i===null){let m,V=0,H=h-1,y=~~(h/2),W;do W=y,m=S[y].accumulator,m<n.start?V=y:y<h-1&&S[y+1].accumulator>n.start&&(H=y),y=~~((V+H)/2);while(y!==W);for(y<0&&(y=0),p=y,D=S[h-1].accumulator,u=y;u<h&&S[u].accumulator<n.end;u++);for(u===-1?u=d.length-1:(u++,u>h&&(u=h)),z=p;z<h&&f+S[z].accumulator<n.start;z++);for(g=z;g<h&&f+S[g].accumulator<n.end;g++);}else{p=~~(n.start/i*s);const m=p%s;p-=m,u=Math.ceil(n.end/i*s),z=Math.max(0,Math.floor((n.start-f)/i*s)),g=Math.floor((n.end-f)/i*s),p<0&&(p=0),u>h&&(u=h),z<0&&(z=0),g>h&&(g=h),D=Math.ceil(h/s)*i}}u-p>Q.itemsLimit&&this.itemsLimitError(),this.totalSize=D;let o;const P=p<=this.$_endIndex&&u>=this.$_startIndex;if(P)for(let n=0,v=k.length;n<v;n++)o=k[n],o.nr.used&&(e&&(o.nr.index=te[o.item[a]]),(o.nr.index==null||o.nr.index<p||o.nr.index>=u)&&this.unuseView(o));const N=P?null:new Map;let _,$,M;for(let n=p;n<u;n++){_=d[n];const v=a?_[a]:_;if(v==null)throw new Error(`Key is ${v} on item (keyField is '${a}')`);if(o=A.get(v),!i&&!S[n].size){o&&this.unuseView(o);continue}$=_[l];let f=E.get($),m=!1;if(!o)P?f&&f.length?o=f.pop():o=this.addView(k,n,_,v,$):(M=N.get($)||0,(!f||M>=f.length)&&(o=this.addView(k,n,_,v,$),this.unuseView(o,!0),f=E.get($)),o=f[M],N.set($,M+1)),A.delete(o.nr.key),o.nr.used=!0,o.nr.index=n,o.nr.key=v,o.nr.type=$,A.set(v,o),m=!0;else if(!o.nr.used&&(o.nr.used=!0,m=!0,f)){const V=f.indexOf(o);V!==-1&&f.splice(V,1)}o.item=_,m&&(n===d.length-1&&this.$emit("scroll-end"),n===0&&this.$emit("scroll-start")),i===null?(o.position=S[n-1].accumulator,o.offset=0):(o.position=Math.floor(n/s)*i,o.offset=n%s*r)}return this.$_startIndex=p,this.$_endIndex=u,this.emitUpdate&&this.$emit("update",p,u,z,g),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:P}},getListenerTarget(){let e=Y(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){const{$el:e,direction:t}=this,i=t==="vertical";let s;if(this.pageMode){const r=e.getBoundingClientRect(),c=i?r.height:r.width;let l=-(i?r.top:r.left),a=i?window.innerHeight:window.innerWidth;l<0&&(a+=l,l=0),l+a>c&&(a=c-l),s={start:l,end:l+a}}else i?s={start:e.scrollTop,end:e.scrollTop+e.clientHeight}:s={start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return s},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,B?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const i=this.gridItems||1;this.itemSize===null?t=e>0?this.sizes[e-1].accumulator:0:t=Math.floor(e/i)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let i,s,r;if(this.pageMode){const c=Y(this.$el),l=c.tagName==="HTML"?0:c[t.scroll],a=c.getBoundingClientRect(),h=this.$el.getBoundingClientRect()[t.start]-a[t.start];i=c,s=t.scroll,r=e+l+h}else i=this.$el,s=t.scroll,r=e;i[s]=r},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((e,t)=>
1e.nr.index-t.nr.index)}}};const be={key:0,ref:"before",class:"vue-recycle-scroller__slot"},_e={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function we(e,t,i,s,r,c){const l=X("ResizeObserver"),a=ae("observe-visibility");return ce((w(),O("div",{class:j(["vue-recycle-scroller",{ready:r.ready,"page-mode":i.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...d)=>c.handleScroll&&c.handleScroll(...d))},[e.$slots.before?(w(),O("div",be,[b(e.$slots,"before")],512)):q("v-if",!0),(w(),x(K(i.listTag),{ref:"wrapper",style:pe({[e.direction==="vertical"?"minHeight":"minWidth"]:r.totalSize+"px"}),class:j(["vue-recycle-scroller__item-wrapper",i.listClass])},{default:T(()=>[(w(!0),O(de,null,he(r.pool,d=>(w(),x(K(i.itemTag),J({key:d.nr.id,style:r.ready?{transform:`translate${e.direction==="vertical"?"Y":"X"}(${d.position}px) translate${e.direction==="vertical"?"X":"Y"}(${d.offset}px)`,width:i.gridItems?`${e.direction==="vertical"&&i.itemSecondarySize||i.itemSize}px`:void 0,height:i.gridItems?`${e.direction==="horizontal"&&i.itemSecondarySize||i.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[i.itemClass,{hover:!i.skipHover&&r.hoverKey===d.nr.key}]]},ue(i.skipHover?{}:{mouseenter:()=>{r.hoverKey=d.nr.key},mouseleave:()=>{r.hoverKey=null}})),{default:T(()=>[b(e.$slots,"default",{item:d.item,index:d.nr.index,active:d.nr.used})]),_:2},1040,["style","class"]))),128)),b(e.$slots,"empty")]),_:3},8,["style","class"])),e.$slots.after?(w(),O("div",_e,[b(e.$slots,"after")],512)):q("v-if",!0),fe(l,{onNotify:c.handleResize},null,8,["onNotify"])],34)),[[a,c.handleVisibilityChange]])}R.render=we;R.__file="src/components/RecycleScroller.vue";var U={name:"DynamicScroller",components:{RecycleScroller:R},provide(){return typeof ResizeObserver<"u"&&(this.$_resizeObserver=new ResizeObserver(e=>{requestAnimationFrame(()=>{if(Array.isArray(e)){for(const t of e)if(t.target&&t.target.$_vs_onResize){let i,s;if(t.borderBoxSize){const r=t.borderBoxSize[0];i=r.inlineSize,s=r.blockSize}else i=t.contentRect.width,s=t.contentRect.height;t.target.$_vs_onResize(t.target.$_vs_id,i,s)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...G,minItemSize:{type:[Number,String],required:!0}},emits:["resize","visible"],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:ee,itemsWithSize(){const e=[],{items:t,keyField:i,simpleArray:s}=this,r=this.vscrollData.sizes,c=t.length;for(let l=0;l<c;l++){const a=t[l],d=s?l:a[i];let h=r[d];typeof h>"u"&&!this.$_undefinedMap[d]&&(h=0),e.push({item:a,id:d,size:h})}return e}},watch:{items(){this.forceUpdate()},simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},direction(e){this.forceUpdate(!0)},itemsWithSize(e,t){const i=this.$el.scrollTop;let s=0,r=0;const c=Math.min(e.length,t.length);for(let a=0;a<c&&!(s>=i);a++)s+=t[a].size||this.minItemSize,r+=e[a].size||this.minItemSize;const l=r-s;l!==0&&(this.$el.scrollTop+=l)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={},this.$_events=re()},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},unmounted(){this.$_events.all.clear()},methods:{onScrollerResize(){this.$refs.scroller&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$_events.emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(e=!1){(e||this.simpleArray)&&(this.vscrollData.sizes={}),this.$_events.emit("vscroll:update",{force:!0})},scrollToItem(e){const t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t=void 0){const i=this.simpleArray?t??this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[i]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const e=this.$el;this.$nextTick(()=>{e.scrollTop=e.scrollHeight+5e3;const t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame(()=>{e.scrollTop=e.scrollHeight+5e3,this.$_undefinedSizes===0?this.$_scrollingToBottom=!1:requestAnimationFrame(t)})};requestAnimationFrame(t)})}}};function Ie(e,t,i,s,r,c){const l=X("RecycleScroller");return w(),x(l,J({ref:"scroller",items:c.itemsWithSize,"min-item-size":i.minItemSize,direction:e.direction,"key-field":"id","list-tag":e.listTag,"item-tag":e.itemTag},e.$attrs,{onResize:c.onScrollerResize,onVisible:c.onScrollerVisible}),{default:T(({item:a,index:d,active:h})=>[b(e.$slots,"default",ve(me({item:a.item,index:d,active:h,itemWithSize:a})))]),before:T(()=>[b(e.$slots,"before")]),after:T(()=>[b(e.$slots,"after")]),empty:T(()=>[b(e.$slots,"empty")]),_:3},16,["items","min-item-size","direction","list-tag","item-tag","onResize","onVisible"])}U.render=Ie;U.__file="src/components/DynamicScroller.vue";var C={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["resize"],computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(e,t){if(this.$el.$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){const i=this.vscrollData.sizes[t],s=this.vscrollData.sizes[e];i!=null&&i!==s&&this.applySize(i)}},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const e in this.sizeDependencies)this.$watch(()=>this.sizeDependencies[e],this.onDataUpdate);this.vscrollParent.$_events.on("vscroll:update",this.onVscrollUpdate)}},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.vscrollParent.$_events.off("vscroll:update",this.onVscrollUpdate),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id
1)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",()=>{this.onDataUpdate()},{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),(this.$_forceNextVScrollUpdate===this.id||e||!this.size)&&this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick(()=>{if(this.id===e){const t=this.$el.offsetWidth,i=this.$el.offsetHeight;this.applyWidthHeight(t,i)}this.$_pendingSizeUpdate=null})},applyWidthHeight(e,t){const i=~~(this.vscrollParent.direction==="vertical"?t:e);i&&this.size!==i&&this.applySize(i)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e,this.emitResize&&this.$emit("resize",this.id)},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(this.$el),this.$el.$_vs_id=this.id,this.$el.$_vs_onResize=this.onResize,this.$_sizeObserved=!0))},unobserveSize(){this.vscrollResizeObserver&&this.$_sizeObserved&&(this.vscrollResizeObserver.unobserve(this.$el),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(e,t,i){this.id===e&&this.applyWidthHeight(t,i)}},render(){return oe(this.tag,this.$slots.default())}};C.__file="src/components/DynamicScrollerItem.vue";function Te(e,t){e.component("".concat(t,"recycle-scroller"),R),e.component("".concat(t,"RecycleScroller"),R),e.component("".concat(t,"dynamic-scroller"),U),e.component("".concat(t,"DynamicScroller"),U),e.component("".concat(t,"dynamic-scroller-item"),C),e.component("".concat(t,"DynamicScrollerItem"),C)}var Ue={version:"2.0.0-beta.8",install:function(t,i){var s=Object.assign({},{installComponents:!0,componentsPrefix:""},i);for(var r in s)typeof s[r]<"u"&&(Q[r]=s[r]);s.installComponents&&Te(t,s.componentsPrefix)}};export{Ue as plugin,C as script,U as script$1,R as script$2}; 2//# sourceMappingURL=libs-vue-virtual-scroller.BSkk2McW.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.